Replaying a big-step run from a wider store #
A big-step run or reach of a statement list from a value-valued store σ is replayed from any
value-valued store σ' that agrees with σ on the identifiers of the list, for a factory
evaluating alike on value-valued stores agreeing on the free variables (EvCongr), from the
replay of a command step (cmd_widen, the evaluator interface): the replay
takes the same path, its events are observed alike (Event.obs), and its outcome agrees with
the original one on the variables the context still reads. Unlike Agree, the agreement
constrains the stores only on the agreed variables: σ' may bind variables that σ leaves
unbound, so a failure from a restriction of a store is one from the store, at an event of the
same kind (claimK_widen, fails_widen).
Key theorems: claimK_widen, fails_widen, claimK_obs.
A trace observed like (Event.obs) a trace that fails t on a feasible path at an event of
kind k with the condition c fails it on a feasible path at an event of kind k with the
condition c.
A failure, replayed from a wider store, keeps its kind. A statement list with a reach from
the value-valued store σ whose trace fails the target t on a feasible path at an event of
kind k with the condition c (ClaimK) has such a reach from every value-valued store σ'
that agrees with σ on the identifiers of the list, for a factory evaluating alike on
value-valued stores agreeing on the free variables (EvCongr); σ' may bind variables that
σ leaves unbound.
A failure, replayed from a wider store. A statement list that fails the target t with
the condition e from the value-valued store σ (Fails) fails it from every value-valued
store σ' that agrees with σ on the identifiers of the list, for a factory evaluating alike
on value-valued stores agreeing on the free variables (EvCongr); σ' may bind variables
that σ leaves unbound.