Theory Weak_Late_Bisim_SC
theory Weak_Late_Bisim_SC
imports Weak_Late_Bisim Strong_Late_Bisim_SC
begin
lemma resComm:
fixes P :: pi
shows "<νa><νb>P ≈ <νb><νa>P"
proof -
have "<νa><νb>P ∼ <νb><νa>P" by(rule Strong_Late_Bisim_SC.resComm)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma matchId:
fixes a :: name
and P :: pi
shows "[a⌢a]P ≈ P"
proof -
have "[a⌢a]P ∼ P" by(rule Strong_Late_Bisim_SC.matchId)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma mismatchId:
fixes a :: name
and b :: name
and P :: pi
assumes "a ≠ b"
shows "[a≠b]P ≈ P"
proof -
from assms have "[a≠b]P ∼ P" by(rule Strong_Late_Bisim_SC.mismatchId)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma mismatchZero:
fixes a :: name
and P :: pi
shows "[a≠a]P ≈ 𝟬"
proof -
have "[a≠a]P ∼ 𝟬" by(rule Strong_Late_Bisim_SC.mismatchNil)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma sumSym:
fixes P :: pi
and Q :: pi
shows "P ⊕ Q ≈ Q ⊕ P"
proof -
have "P ⊕ Q ∼ Q ⊕ P" by(rule Strong_Late_Bisim_SC.sumSym)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma sumAssoc:
fixes P :: pi
and Q :: pi
and R :: pi
shows "(P ⊕ Q) ⊕ R ≈ P ⊕ (Q ⊕ R)"
proof -
have "(P ⊕ Q) ⊕ R ∼ P ⊕ (Q ⊕ R)" by(rule Strong_Late_Bisim_SC.sumAssoc)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma sumZero:
fixes P :: pi
shows "P ⊕ 𝟬 ≈ P"
proof -
have "P ⊕ 𝟬 ∼ P" by(rule Strong_Late_Bisim_SC.sumZero)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma parZero:
fixes P :: pi
shows "P ∥ 𝟬 ≈ P"
proof -
have "P ∥ 𝟬 ∼ P" by(rule Strong_Late_Bisim_SC.parZero)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma parSym:
fixes P :: pi
and Q :: pi
shows "P ∥ Q ≈ Q ∥ P"
proof -
have "P ∥ Q ∼ Q ∥ P" by(rule Strong_Late_Bisim_SC.parSym)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma scopeExtPar:
fixes P :: pi
and Q :: pi
and x :: name
assumes "x ♯ P"
shows "<νx>(P ∥ Q) ≈ P ∥ <νx>Q"
proof -
from assms have "<νx>(P ∥ Q) ∼ P ∥ <νx>Q" by(rule Strong_Late_Bisim_SC.scopeExtPar)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma scopeExtPar':
fixes P :: pi
and Q :: pi
and x :: name
assumes xFreshQ: "x ♯ Q"
shows "<νx>(P ∥ Q) ≈ (<νx>P) ∥ Q"
proof -
from assms have "<νx>(P ∥ Q) ∼ (<νx>P) ∥ Q" by(rule Strong_Late_Bisim_SC.scopeExtPar')
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma parAssoc:
fixes P :: pi
and Q :: pi
and R :: pi
shows "(P ∥ Q) ∥ R ≈ P ∥ (Q ∥ R)"
proof -
have "(P ∥ Q) ∥ R ∼ P ∥ (Q ∥ R)" by(rule Strong_Late_Bisim_SC.parAssoc)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma freshRes:
fixes P :: pi
and a :: name
assumes aFreshP: "a ♯ P"
shows "<νa>P ≈ P"
proof -
from assms have "<νa>P ∼ P" by(rule Strong_Late_Bisim_SC.scopeFresh)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma scopeExtSum:
fixes P :: pi
and Q :: pi
and x :: name
assumes "x ♯ P"
shows "<νx>(P ⊕ Q) ≈ P ⊕ <νx>Q"
proof -
from assms have "<νx>(P ⊕ Q) ∼ P ⊕ <νx>Q" by(rule Strong_Late_Bisim_SC.scopeExtSum)
thus ?thesis by(rule strongBisimWeakBisim)
qed
lemma bangSC:
fixes P
shows "!P ≈ P ∥ !P"
proof -
have "!P ∼ P ∥ !P" by(rule Strong_Late_Bisim_SC.bangSC)
thus ?thesis by(rule strongBisimWeakBisim)
qed
end