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 #
instance
Cslib.CCS.instDecidableEqAct
{Name✝ : Type u_1}
[DecidableEq Name✝]
:
DecidableEq (Act Name✝)
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
Processes.
- nil {Name : Type u} {Constant : Type v} : Process Name Constant
- pre {Name : Type u} {Constant : Type v} (μ : Act Name) (p : Process Name Constant) : Process Name Constant
- par {Name : Type u} {Constant : Type v} (p q : Process Name Constant) : Process Name Constant
- choice {Name : Type u} {Constant : Type v} (p q : Process Name Constant) : Process Name Constant
- res {Name : Type u} {Constant : Type v} (a : Name) (p : Process Name Constant) : Process Name Constant
- const {Name : Type u} {Constant : Type v} (c : Constant) : Process Name Constant
Instances For
instance
Cslib.CCS.instDecidableEqProcess
{Name✝ : Type u_1}
{Constant✝ : Type u_2}
[DecidableEq Name✝]
[DecidableEq Constant✝]
:
DecidableEq (Process Name✝ Constant✝)
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
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
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
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
instance
Cslib.CCS.instDecidableEqContext
{Name✝ : Type u_1}
{Constant✝ : Type u_2}
[DecidableEq Name✝]
[DecidableEq Constant✝]
:
DecidableEq (Context Name✝ Constant✝)
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)