Documentation

Strata.Languages.Core.Logic.TraceInterpUsingDenoteProps

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.