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 #
CCS.Process: processes.CCS.Context: contexts.
Main results #
CCS.Context.complete: any process is equal to some context filled an atomic process (nil or a constant).
References #
def
Cslib.CCS.instDecidableEqAct.decEq
{Name✝ : Type u_1}
[DecidableEq Name✝]
(x✝ x✝¹ : Act Name✝)
:
Equations
- Cslib.CCS.instDecidableEqAct.decEq (Cslib.CCS.Act.name a) (Cslib.CCS.Act.name b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Cslib.CCS.instDecidableEqAct.decEq (Cslib.CCS.Act.name a) (Cslib.CCS.Act.coname a_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqAct.decEq (Cslib.CCS.Act.name a) Cslib.CCS.Act.τ = isFalse ⋯
- Cslib.CCS.instDecidableEqAct.decEq (Cslib.CCS.Act.coname a) (Cslib.CCS.Act.name a_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqAct.decEq (Cslib.CCS.Act.coname a) (Cslib.CCS.Act.coname b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Cslib.CCS.instDecidableEqAct.decEq (Cslib.CCS.Act.coname a) Cslib.CCS.Act.τ = isFalse ⋯
- Cslib.CCS.instDecidableEqAct.decEq Cslib.CCS.Act.τ (Cslib.CCS.Act.name a) = isFalse ⋯
- Cslib.CCS.instDecidableEqAct.decEq Cslib.CCS.Act.τ (Cslib.CCS.Act.coname a) = isFalse ⋯
- Cslib.CCS.instDecidableEqAct.decEq Cslib.CCS.Act.τ Cslib.CCS.Act.τ = isTrue ⋯
Instances For
@[instance_reducible]
instance
Cslib.CCS.instDecidableEqAct
{Name✝ : Type u_1}
[DecidableEq Name✝]
:
DecidableEq (Act Name✝)
Processes.
- nil
{Name : Type u}
{Constant : Type v}
: Process Name Constant
Terminated process.
- pre
{Name : Type u}
{Constant : Type v}
(μ : Act Name)
(p : Process Name Constant)
: Process Name Constant
Do
μand proceed asp. - par
{Name : Type u}
{Constant : Type v}
(p q : Process Name Constant)
: Process Name Constant
pparallelq. - choice
{Name : Type u}
{Constant : Type v}
(p q : Process Name Constant)
: Process Name Constant
Do
porq(nondeterministically). - res
{Name : Type u}
{Constant : Type v}
(a : Name)
(p : Process Name Constant)
: Process Name Constant
Restriction.
- const
{Name : Type u}
{Constant : Type v}
(c : Constant)
: Process Name Constant
Constant.
Instances For
def
Cslib.CCS.instDecidableEqProcess.decEq
{Name✝ : Type u_1}
{Constant✝ : Type u_2}
[DecidableEq Name✝]
[DecidableEq Constant✝]
(x✝ x✝¹ : Process Name✝ Constant✝)
:
Equations
- One or more equations did not get rendered due to their size.
- Cslib.CCS.instDecidableEqProcess.decEq Cslib.CCS.Process.nil Cslib.CCS.Process.nil = isTrue ⋯
- Cslib.CCS.instDecidableEqProcess.decEq Cslib.CCS.Process.nil (Cslib.CCS.Process.pre μ p) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq Cslib.CCS.Process.nil (p.par q) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq Cslib.CCS.Process.nil (p.choice q) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq Cslib.CCS.Process.nil (Cslib.CCS.Process.res a p) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq Cslib.CCS.Process.nil (Cslib.CCS.Process.const c) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.pre μ p) Cslib.CCS.Process.nil = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.pre μ p) (p_1.par q) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.pre μ p) (p_1.choice q) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.pre μ p) (Cslib.CCS.Process.res a p_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.pre μ p) (Cslib.CCS.Process.const c) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.par q) Cslib.CCS.Process.nil = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.par q) (Cslib.CCS.Process.pre μ p_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.par q) (p_1.choice q_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.par q) (Cslib.CCS.Process.res a p_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.par q) (Cslib.CCS.Process.const c) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.choice q) Cslib.CCS.Process.nil = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.choice q) (Cslib.CCS.Process.pre μ p_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.choice q) (p_1.par q_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.choice q) (Cslib.CCS.Process.res a p_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (p.choice q) (Cslib.CCS.Process.const c) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.res a p) Cslib.CCS.Process.nil = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.res a p) (Cslib.CCS.Process.pre μ p_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.res a p) (p_1.par q) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.res a p) (p_1.choice q) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.res a p) (Cslib.CCS.Process.const c) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.const c) Cslib.CCS.Process.nil = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.const c) (Cslib.CCS.Process.pre μ p) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.const c) (p.par q) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.const c) (p.choice q) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.const c) (Cslib.CCS.Process.res a p) = isFalse ⋯
- Cslib.CCS.instDecidableEqProcess.decEq (Cslib.CCS.Process.const a) (Cslib.CCS.Process.const b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
@[instance_reducible]
instance
Cslib.CCS.instDecidableEqProcess
{Name✝ : Type u_1}
{Constant✝ : Type u_2}
[DecidableEq Name✝]
[DecidableEq Constant✝]
:
DecidableEq (Process Name✝ Constant✝)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Syntactic category for processes.
Equations
Instances For
Terminated process.
Equations
- Cslib.CCS.ccsProc_ = Lean.ParserDescr.node `Cslib.CCS.ccsProc_ 1022 (Lean.ParserDescr.const `num)
Instances For
Do μ and proceed as p.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Do μ and proceed as p.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Do p or q (nondeterministically).
Equations
- Cslib.CCS.«ccsProc_+_» = Lean.ParserDescr.trailingNode `Cslib.CCS.«ccsProc_+_» 1022 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "+") (Lean.ParserDescr.cat `ccsProc 0))
Instances For
p parallel q.
Equations
- Cslib.CCS.«ccsProc_|_» = Lean.ParserDescr.trailingNode `Cslib.CCS.«ccsProc_|_» 1022 0 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "|") (Lean.ParserDescr.cat `ccsProc 0))
Instances For
Restriction.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Constant.
Equations
- Cslib.CCS.ccsProcConst_ = Lean.ParserDescr.node `Cslib.CCS.ccsProcConst_ 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "const") (Lean.ParserDescr.cat `term 0))
Instances For
Processes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Processes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Checks that an action is the coaction of another. This is the Boolean version of Act.Co.
Equations
- (Cslib.CCS.Act.name a).isCo (Cslib.CCS.Act.coname b) = decide (a = b)
- (Cslib.CCS.Act.coname a).isCo (Cslib.CCS.Act.name b) = decide (a = b)
- μ.isCo μ' = false
Instances For
@[instance_reducible]
instance
Cslib.CCS.Act.instDecidableCoOfDecidableEq
{Name : Type u_1}
[DecidableEq Name]
{μ μ' : Act Name}
:
Act.Co is decidable if Name equality is decidable.
Contexts.
- hole {Name : Type u} {Constant : Type v} : Context Name Constant
- pre {Name : Type u} {Constant : Type v} (μ : Act Name) (c : Context Name Constant) : Context Name Constant
- parL {Name : Type u} {Constant : Type v} (c : Context Name Constant) (q : Process Name Constant) : Context Name Constant
- parR {Name : Type u} {Constant : Type v} (p : Process Name Constant) (c : Context Name Constant) : Context Name Constant
- choiceL {Name : Type u} {Constant : Type v} (c : Context Name Constant) (q : Process Name Constant) : Context Name Constant
- choiceR {Name : Type u} {Constant : Type v} (p : Process Name Constant) (c : Context Name Constant) : Context Name Constant
- res {Name : Type u} {Constant : Type v} (a : Name) (c : Context Name Constant) : Context Name Constant
Instances For
@[instance_reducible]
instance
Cslib.CCS.instDecidableEqContext
{Name✝ : Type u_1}
{Constant✝ : Type u_2}
[DecidableEq Name✝]
[DecidableEq Constant✝]
:
DecidableEq (Context Name✝ Constant✝)
def
Cslib.CCS.instDecidableEqContext.decEq
{Name✝ : Type u_1}
{Constant✝ : Type u_2}
[DecidableEq Name✝]
[DecidableEq Constant✝]
(x✝ x✝¹ : Context Name✝ Constant✝)
:
Equations
- One or more equations did not get rendered due to their size.
- Cslib.CCS.instDecidableEqContext.decEq Cslib.CCS.Context.hole Cslib.CCS.Context.hole = isTrue ⋯
- Cslib.CCS.instDecidableEqContext.decEq Cslib.CCS.Context.hole (Cslib.CCS.Context.pre μ c) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq Cslib.CCS.Context.hole (c.parL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq Cslib.CCS.Context.hole (Cslib.CCS.Context.parR p c) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq Cslib.CCS.Context.hole (c.choiceL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq Cslib.CCS.Context.hole (Cslib.CCS.Context.choiceR p c) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq Cslib.CCS.Context.hole (Cslib.CCS.Context.res a c) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.pre μ c) Cslib.CCS.Context.hole = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.pre μ c) (c_1.parL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.pre μ c) (Cslib.CCS.Context.parR p c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.pre μ c) (c_1.choiceL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.pre μ c) (Cslib.CCS.Context.choiceR p c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.pre μ c) (Cslib.CCS.Context.res a c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.parL q) Cslib.CCS.Context.hole = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.parL q) (Cslib.CCS.Context.pre μ c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.parL q) (Cslib.CCS.Context.parR p c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.parL q) (c_1.choiceL q_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.parL q) (Cslib.CCS.Context.choiceR p c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.parL q) (Cslib.CCS.Context.res a c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.parR p c) Cslib.CCS.Context.hole = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.parR p c) (Cslib.CCS.Context.pre μ c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.parR p c) (c_1.parL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.parR p c) (c_1.choiceL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.parR p c) (Cslib.CCS.Context.choiceR p_1 c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.parR p c) (Cslib.CCS.Context.res a c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.choiceL q) Cslib.CCS.Context.hole = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.choiceL q) (Cslib.CCS.Context.pre μ c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.choiceL q) (c_1.parL q_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.choiceL q) (Cslib.CCS.Context.parR p c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.choiceL q) (Cslib.CCS.Context.choiceR p c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (c.choiceL q) (Cslib.CCS.Context.res a c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.choiceR p c) Cslib.CCS.Context.hole = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.choiceR p c) (Cslib.CCS.Context.pre μ c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.choiceR p c) (c_1.parL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.choiceR p c) (Cslib.CCS.Context.parR p_1 c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.choiceR p c) (c_1.choiceL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.choiceR p c) (Cslib.CCS.Context.res a c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.res a c) Cslib.CCS.Context.hole = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.res a c) (Cslib.CCS.Context.pre μ c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.res a c) (c_1.parL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.res a c) (Cslib.CCS.Context.parR p c_1) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.res a c) (c_1.choiceL q) = isFalse ⋯
- Cslib.CCS.instDecidableEqContext.decEq (Cslib.CCS.Context.res a c) (Cslib.CCS.Context.choiceR p c_1) = isFalse ⋯
Instances For
def
Cslib.CCS.Context.fill
{Name : Type u_1}
{Constant : Type u_2}
(c : Context Name Constant)
(p : Process Name Constant)
:
Process Name Constant
Replaces the hole in a Context with a Process.
Equations
- Cslib.CCS.Context.hole.fill p = p
- (Cslib.CCS.Context.pre μ c_2).fill p = Cslib.CCS.Process.pre μ (c_2.fill p)
- (c_2.parL r).fill p = (c_2.fill p).par r
- (Cslib.CCS.Context.parR r c_2).fill p = r.par (c_2.fill p)
- (c_2.choiceL r).fill p = (c_2.fill p).choice r
- (Cslib.CCS.Context.choiceR r c_2).fill p = r.choice (c_2.fill p)
- (Cslib.CCS.Context.res a c_2).fill p = Cslib.CCS.Process.res a (c_2.fill p)
Instances For
@[instance_reducible]
instance
Cslib.CCS.instHasContextProcess
{Name : Type u_1}
{Constant : Type u_2}
:
HasContext (Process Name Constant)
Equations
- Cslib.CCS.instHasContextProcess = { Context := Cslib.CCS.Context Name Constant, fill := Cslib.CCS.Context.fill }