Documentation

VCVio.Interaction.UC.OpenProcessModel

Concrete OpenTheory model backed by OpenProcess #

This file provides the first concrete realization of UC.OpenTheory using actual open processes (OpenProcess Party Δ).

Implemented operations #

The concrete open-composition theory backed by OpenProcess.

  • Obj Δ is OpenProcess Party Δ, the boundary-indexed family of open concurrent processes.
  • map adapts boundary actions along a PortBoundary.Hom.
  • par, wire, and plug all use ProcessOver.interleave with the appropriate context morphisms.
Instances For
    theorem Interaction.UC.openTheory_par_assoc_iso (Party : Type u) {Δ₁ Δ₂ Δ₃ : PortBoundary} (W₁ : OpenProcess Party Δ₁) (W₂ : OpenProcess Party Δ₂) (W₃ : OpenProcess Party Δ₃) :
    OpenProcessIso (OpenProcess.mapBoundary (PortBoundary.Equiv.tensorAssoc Δ₁ Δ₂ Δ₃).toHom ((openTheory Party).par ((openTheory Party).par W₁ W₂) W₃)) ((openTheory Party).par W₁ ((openTheory Party).par W₂ W₃))

    Parallel composition of open processes is associative up to bisimilarity: reassociating the internal scheduler nesting does not change the observable boundary behavior.

    theorem Interaction.UC.openTheory_par_comm_iso (Party : Type u) {Δ₁ Δ₂ : PortBoundary} (W₁ : OpenProcess Party Δ₁) (W₂ : OpenProcess Party Δ₂) :

    Parallel composition of open processes is commutative up to bisimilarity.

    The unit for parallel composition is the trivial process with no boundary and PUnit state.

    Instances For

      The monoidal unit is a left identity for parallel composition up to bisimilarity.

      The monoidal unit is a right identity for parallel composition up to bisimilarity.

      The identity wire (coevaluation) on boundary Γ: relays messages bidirectionally between swap Γ and Γ.

      Instances For
        theorem Interaction.UC.openTheory_wire_idWire_iso (Party : Type u) (Γ : PortBoundary) {Δ₂ : PortBoundary} (W₂ : OpenProcess Party (Γ.swap.tensor Δ₂)) :
        OpenProcessIso ((openTheory Party).wire (openTheory_idWire Party Γ) W₂) W₂

        Left zig-zag: wiring the identity wire on the left is a no-op up to bisimilarity.

        theorem Interaction.UC.openTheory_wire_idWire_right_iso (Party : Type u) (Γ : PortBoundary) {Δ₁ : PortBoundary} (W₁ : OpenProcess Party (Δ₁.tensor Γ)) :
        OpenProcessIso ((openTheory Party).wire W₁ (openTheory_idWire Party Γ)) W₁

        Right zig-zag: wiring the identity wire on the right is a no-op up to bisimilarity.

        The monoidal unit equals the coevaluation at the trivial boundary, up to bisimilarity.