Properties of the denotation-based condition interpretation #
DenoteBasedInterp F reads a condition captured under a runtime factory over F by its
evaluation to true, so on such conditions it agrees with evaluation to true
(evalInterp_holds_iff_denoteBasedInterp). A condition captured under another factory is read
by an arbitrary predicate of the world, so DenoteBasedInterp F is stable under an
event-argument relation only for conditions captured over F
(denoteBasedInterp_stableUnder), and a trace relation stated under evaluation to true
carries over to it only for traces whose events are captured over F
(weakensAssumes_denoteBasedInterp).
Key theorems: evalInterp_holds_iff_denoteBasedInterp, denoteBasedInterp_stableUnder,
weakensAssumes_denoteBasedInterp.
For a condition captured under a runtime factory over F, reading it under its own
runtime factory (Imperative.BigStep.evalInterp) agrees with DenoteBasedInterp F in
every world.
DenoteBasedInterp F is stable on conditions captured over F. For an event-argument
relation R keeping the factory, under which evaluation to true is stable: related
conditions whose source is captured under a runtime factory over F hold alike under
DenoteBasedInterp F.
Weakened assumptions under evaluation are weakened assumptions under the denotation, for
traces whose events are all captured under runtime factories over F.