Finite prefixes and infinite runs of dynamic concurrent processes #
This file extends finite executions in the two directions needed for semantic reasoning about ongoing concurrent behavior.
ProcessOver.Prefixis the right notion of a finite initial segment of an execution. UnlikeProcessOver.Trace, it may stop at any residual process state, not only at a quiescent one.ProcessOver.Runis an infinite execution, represented by the residual process state at each time index together with the complete transcript chosen for the corresponding process step.
The closed-world Process API is recovered as a specialization of these
generic definitions.
Prefix process p n is a finite prefix of length n of an execution starting
from the residual process state p.
Unlike ProcessOver.Trace, a Prefix may stop at any residual state. This
makes it the correct finite prefix object for later infinite-run semantics.
Each step constructor records one complete sequential transcript of the
current process step and then continues with a shorter prefix of the induced
residual state.
- nil
{Γ : Spec.Node.Context}
{process : ProcessOver Γ}
{p : process.Proc}
: process.Prefix p 0
The empty execution prefix.
- step
{Γ : Spec.Node.Context}
{process : ProcessOver Γ}
{p : process.Proc}
{n : ℕ}
(tr : (process.step p).spec.Transcript)
: process.Prefix ((process.step p).next tr) n → process.Prefix p n.succ
Extend a finite prefix by one complete process step transcript.
Instances For
The sequence of current controlling parties exposed by a finite prefix after
projecting the generic context into StepContext.
Instances For
The sequence of full controller paths exposed by a finite prefix after
projecting the generic context into StepContext.
Instances For
The stable event labels attached to the executed steps of a finite prefix.
Instances For
The stable tickets attached to the executed steps of a finite prefix.
Instances For
Forget the quiescence proof of a finite Trace and keep only its executed
prefix.
Instances For
Run process is an infinite execution of the dynamic process process.
It is represented by:
state n, the residual process state afterncomplete process steps;transcript n, the concrete transcript chosen for stepn;next_state, which states that the residual state stream follows the process continuation exactly.
This is a continuation-based infinite semantics: the run does not introduce a new operational state space of its own. It simply records how the residual process state evolves when one complete process step is chosen at each time.
- transcript (n : ℕ) : (process.step (self.state n)).spec.Transcript
Instances For
The initial residual process state of a run.
Instances For
The first complete process-step transcript of the run.
Instances For
The tail of a run after its first process step.
Instances For
The initial state of run.tail is exactly the residual state obtained by
executing run.head.
take run n is the length-n finite execution prefix of the infinite run
run.
Instances For
The current controlling party of step n of a run, if any, after projecting
the generic context into StepContext.
Instances For
The current controlling parties exposed along the first n executed steps
of the run run.
Instances For
The full controller path recorded by step n of a run after projecting the
generic context into StepContext.
Instances For
The full controller paths exposed along the first n executed steps of the
run run.
Instances For
The stable event label attached to step n of a run.
Instances For
The stable event labels attached to the first n executed steps of the run
run.
Instances For
The stable ticket attached to step n of a run.
Instances For
The stable tickets attached to the first n executed steps of the run
run.
Instances For
RelUpTo rel left right n states that the first n executed steps of the
runs left and right match step-by-step according to rel.
Instances For
Rel rel left right states that every finite prefix of the runs left and
right matches according to rel.
Instances For
Pointwise step matching implies prefix matching of the first n steps.
Pointwise step matching implies full run matching.
The closed-world specialization of ProcessOver.Prefix.
Instances For
Forget the quiescence proof of a finite closed-world trace and keep only its executed prefix.
Instances For
The closed-world specialization of ProcessOver.Run.
Instances For
The first complete process-step transcript of a closed-world run.