Binary communication in the existing π-calculus

DefinitionBinary configuration as a parallel composition#✓fully proved

Embed a binary configuration without changing either process.

def represent (r : Proc × Proc) : Proc := .par r.1 r.2
Uses 1 · Used by 4

TheoremInjectivity of the binary configuration embedding#✓fully proved

The representation does not identify distinct configurations.

theorem represent_injective : Function.Injective represent
Uses 3

InductiveCommunication step of a binary configuration#✓fully proved

Opposite head guards synchronize, in either endpoint orientation.

inductive CommStep : Proc × Proc → Proc × Proc → Prop where
  | send (a : Nat) (b : Name) (p q : Proc) :
      CommStep (.out (.const a) b p, .inp (.const a) q) (p, subst q b)
  | recv (a : Nat) (b : Name) (p q : Proc) :
      CommStep (.inp (.const a) p, .out (.const a) b q) (subst p b, q)
Uses 3 · Used by 5

TheoremSession communication steps are π-calculus reductions#✓fully proved

Every session communication is a reduction in the unchanged π semantics.

theorem represent_step {r t : Proc × Proc} (h : CommStep r t) :
    PiCalculus.Step (represent r) (represent t)
Uses 8 · Used by 1

DefinitionDual session typing of a binary configuration#✓fully proved

Locally linear threads owning opposite roles on every channel. Dual compatibility permits cyclic waits; it does not assert progress.

def BinaryTyped (Γ : Context) (r : Proc × Proc) : Prop :=
  HasType 0 Γ r.1 ∧ HasType 0 (dualContext Γ) r.2
Uses 4 · Used by 5

TheoremCommunication preserves binary session typing#✓fully proved

Communication consumes dual heads and preserves linear residual typing; payload substitution never changes the session context.

theorem CommStep.preservation {Γ : Context} {r t : Proc × Proc}
    (h : CommStep r t) (hr : BinaryTyped Γ r) :
    ∃ a s, (Γ a = .send s ∨ Γ a = .recv s) ∧
      BinaryTyped (advance Γ a s) t
Uses 14
6 fully proved

The dependency explorer needs JavaScript and its graph data.

Download the complete graph data.