Documentation

Cslib.ConcurrencyTheory.CCS.Basic

Calculus of Communicating Systems (CCS) #

CCS [Mil80], as presented in [San]. In the semantics (see CCS.lts), we adopt the option of constant definitions (K = P).

Main definitions #

Main results #

References #

inductive CCS.Act (Name : Type u) :

Actions.

  • name {Name : Type u} (a : Name) : Act Name
  • coname {Name : Type u} (a : Name) : Act Name
  • τ {Name : Type u} : Act Name
Instances For
    inductive CCS.Process (Name : Type u) (Constant : Type v) :
    Type (max u v)

    Processes.

    Instances For
      instance CCS.instDecidableEqProcess {Name✝ : Type u_1} {Constant✝ : Type u_2} [DecidableEq Name✝] [DecidableEq Constant✝] :
      DecidableEq (Process Name✝ Constant✝)
      Equations
      def CCS.Act.co (Name : Type u) (μ : Act Name) :
      Act Name

      Co action.

      Equations
      Instances For
        theorem CCS.Act.co.involution (Name : Type u) (μ : Act Name) :
        co Name (co Name μ) = μ

        Act.co is an involution.

        inductive CCS.Context (Name : Type u) (Constant : Type v) :
        Type (max u v)

        Contexts.

        Instances For
          instance CCS.instDecidableEqContext {Name✝ : Type u_1} {Constant✝ : Type u_2} [DecidableEq Name✝] [DecidableEq Constant✝] :
          DecidableEq (Context Name✝ Constant✝)
          Equations
          def CCS.Context.fill {Name : Type u} {Constant : Type v} (c : Context Name Constant) (p : Process Name Constant) :
          Process Name Constant

          Replaces the hole in a Context with a Process.

          Equations
          Instances For
            theorem CCS.Context.complete (Name : Type u) (Constant : Type v) (p : Process Name Constant) :
            (c : Context Name Constant), p = c.fill Process.nil (k : Constant), p = c.fill (Process.const k)

            Any Process can be obtained by filling a Context with an atom. This proves that Context is a complete formalisation of syntactic contexts for CCS.