A contextual effects system generalizes standard type
and effect systems: where a standard effects system computes the
effect of an expression e, a contextual effects system
additionally computes the prior and future effect of
e, which characterize the behavior of computation prior to, and
following, respectively, the evaluation of e. This paper
describes the formalization and proof of soundness of contextual
effects, which we mechanized using the Coq proof assistant.
Contextual effect soundness is an unusual property because the prior
and future effect of a term e depends not on e itself (or its
evaluation), but rather on the evaluation of the context in which
e appears. Therefore, to state and prove soundness we must
``match up'' a subterm in the original typing derivation with the
possibly-many evaluations of that subterm during the evaluation of
the program, in a way that is robust under substitution. We do this
using a novel typed operational semantics. We conjecture that our
approach could prove useful for approaching other properties of
derivations that rely on the context in which that derivation
appears.