Documentation

VCVio.Interaction.Concurrent.Tree

Structural-tree frontend for dynamic processes #

This file turns the structural concurrent syntax into a frontend for the dynamic Concurrent.Process core.

The present frontend keeps one important design choice from the original structural execution story: one process step corresponds to exactly one scheduled structural frontier event. The dynamic process step therefore uses a single move type Front S, but its node semantics record:

So the structural tree language remains an important source language, but the dynamic process core is now the semantic center.

structure Interaction.Concurrent.Tree.State (Party : Type u) :
Type (u + 1)

State Party is one structural concurrent residual state packaged together with its control tree and observation profile.

This is the exact structural data needed to view the current tree as one state of a dynamic Concurrent.Process.

Instances For
    def Interaction.Concurrent.Tree.State.currentStep {Party : Type u} [DecidableEq Party] (st : State Party) :
    Step Party (State Party)

    currentStep st is the one-step process view of the structural residual state st.

    Its move type is the current structural frontier Front st.spec. The controller-path contribution of each move is exactly Control.controllers st.control, and the local view of that move is exactly Current.view me st.control st.profile.

    Instances For

      eventOfTranscript st tr forgets the trivial done tail of the process step transcript and recovers the scheduled structural frontier event.

      Instances For

        transcriptOfEvent st event re-expresses a structural frontier event as the corresponding one-step process transcript.

        Instances For

          toProcess compiles the structural concurrent-tree frontend into the dynamic Concurrent.Process core.

          Each process state is one packaged structural residual state, and each process step is the current frontier interaction produced by State.currentStep.

          Instances For
            def Interaction.Concurrent.Tree.init {Party : Type u} {spec : Spec} (control : Control Party spec) (profile : Profile Party spec) :
            State Party

            Package one structural residual state as the initial state of the tree frontend process.

            Instances For
              def Interaction.Concurrent.Tree.ofLinearization {Party : Type u} [DecidableEq Party] {spec : Spec} (control : Control Party spec) (profile : Profile Party spec) :
              Trace spectoProcess.Trace (init control profile)

              ofLinearization control profile trace converts a structural frontier trace into the corresponding dynamic process execution trace of Tree.toProcess.

              Instances For