  We propose a new approach to defining programming languages with effects, and
proving observational equivalence. Operational machinery is given by a
hypergraph-rewriting abstract machine inspired by Girard's Geometry of
Interaction. It interprets a graph calculus of only three intrinsic constructs:
variable binding, atom binding, and thunking. Everything else, including
features which are commonly thought of as intrinsic, such as arithmetic or
function abstraction and application, must be provided as extrinsic operations,
with associated rewrite rules. The graph representation naturally leads to two
new principles about equational reasoning, which we call \emph{locality} and
\emph{robustness}. These concepts enable a novel flexible and powerful
reasoning methodology about (type-free) languages with effects. The methodology
is additionally capable of proving a generalised notion of observational
equivalence that can be quantified over syntactically restricted contexts
instead of all contexts, and also can be quantitatively constrained in terms of
the number of reduction steps. We illustrate the methodology using the
call-by-value lambda-calculus extended with (higher-order) state.
