lemma prefixCases[consumes 1, case_names cInput cOutput cTau]: fixes Ψ :: 'b and α :: "'a prefix" and P :: "('a, 'b, 'c) psi" and β :: "'a action" and P' :: "('a, 'b, 'c) psi"
assumes"Ψ ⊳ α⋅P ⟼β ≺ P'" and rInput: "∧M xvec N K Tvec. [Ψ ⊨ M ↔ K; set xvec ⊆ supp N; length xvec = length Tvec; distinct xvec]==> Prop (pInput M xvec N) (K(N[xvec::=Tvec])) (P[xvec::=Tvec])" and rOutput: "∧M N K. Ψ ⊨ M ↔ K ==> Prop (pOutput M N) (K⟨N⟩) P" and rTau: "Ψ ⊳ P ∼ P' ==> Prop (pTau) (τ) P'"
lemma tauLaw4SimRight: fixes Ψ :: 'b and P :: "('a, 'b, 'c) psi" and Q :: "('a, 'b, 'c) psi" and α :: "'a prefix"
assumes C1: "∧Ψ P Q. Ψ ⊳ P ∼ Q ==> (Ψ, P, Q) ∈ Rel" and"∧Ψ P. (Ψ, P, P) ∈ Rel"
shows"Ψ ⊳ α⋅(τ.(P) ⊕ Q) ↝<Rel> α⋅P ⊕ α⋅(τ.(P) ⊕ Q)" proof(induct rule: weakSimI2) case(cAct Ψ' β PQ) from‹Ψ ⊳ α⋅P ⊕ α⋅(τ.(P) ⊕ Q) ⟼β ≺ PQ›show ?case proof(induct rule: sumCases) case cSum1 from‹Ψ ⊳ α⋅P ⟼β ≺ PQ›‹β ≠ τ›show ?case proof(induct rule: prefixCases) case(cInput M xvec N K Tvec) have"Ψ ⊳ M(λ*xvec N).(τ.(P) ⊕ Q) ==>^\<tau> M(λ*xvec N).(τ.(P) ⊕ Q)"by auto moreoverhave"insertAssertion (extractFrame((M(λ*xvec N).P) ⊕ M(λ*xvec N).(τ.(P) ⊕ Q))) Ψ↪F insertAssertion (extractFrame(M(λ*xvec N).(τ.(P) ⊕ Q))) Ψ" by auto moreoverfrom‹Ψ ⊨ M ↔ K›‹distinct xvec›‹set xvec ⊆ supp N›‹length xvec = length Tvec› have"Ψ ⊳ M(λ*xvec N).(τ.(P) ⊕ Q) ⟼K((N[xvec::=Tvec]))≺ (τ.(P) ⊕ Q)[xvec::=Tvec]"by(rule Input) ultimatelyhave"Ψ : ((M(λ*xvec N).P) ⊕ M(λ*xvec N).(τ.(P) ⊕ Q)) ⊳ M(λ*xvec N).(τ.(P) ⊕ Q) ==>K((N[xvec::=Tvec]))≺ (τ.(P) ⊕ Q)[xvec::=Tvec]" by(rule_tac weakTransitionI) auto with‹length xvec = length Tvec›‹distinct xvec› have"Ψ : ((M(λ*xvec N).P) ⊕ M(λ*xvec N).(τ.(P) ⊕ Q)) ⊳ M(λ*xvec N).(τ.(P) ⊕ Q) ==>K((N[xvec::=Tvec]))≺ (τ.(P[xvec::=Tvec]) ⊕ Q[xvec::=Tvec])" by auto moreoverobtain P' where PTrans: "Ψ ⊗ Ψ' ⊳ τ.(P[xvec::=Tvec]) ⟼τ ≺ P'"and"Ψ ⊗ Ψ' ⊳ P[xvec::=Tvec] ∼ P'"using tauActionI by auto have"guarded(τ.(P[xvec::=Tvec]))"by(rule guardedTau) with PTrans have"Ψ ⊗ Ψ' ⊳ (τ.(P[xvec::=Tvec])) ⊕ (Q[xvec::=Tvec]) ⟼τ ≺ P'"by(rule Sum1) hence"Ψ ⊗ Ψ' ⊳ (τ.(P[xvec::=Tvec])) ⊕ (Q[xvec::=Tvec]) ==>^\<tau> P'"by(rule tauActTauChain) moreoverfrom‹Ψ ⊗ Ψ' ⊳ P[xvec::=Tvec] ∼ P'›have"(Ψ ⊗ Ψ', P', P[xvec::=Tvec]) ∈ Rel"by(metis bisimE C1) ultimatelyshow ?caseby fastforce next case(cOutput M N K) have"Ψ ⊳ M⟨N⟩.(τ.(P) ⊕ Q) ==>^\<tau> M⟨N⟩.(τ.(P) ⊕ Q)"by auto moreoverhave"insertAssertion (extractFrame(M⟨N⟩.P ⊕ M⟨N⟩.(τ.(P) ⊕ Q))) Ψ ↪F insertAssertion (extractFrame(M⟨N⟩.(τ.(P) ⊕ Q))) Ψ" by auto moreoverfrom‹Ψ ⊨ M ↔ K›have"Ψ ⊳ M⟨N⟩.(τ.(P) ⊕ Q) ⟼K⟨N⟩≺ (τ.(P) ⊕ Q)"by(rule Output) ultimatelyhave"Ψ : (M⟨N⟩.P ⊕ M⟨N⟩.(τ.(P) ⊕ Q)) ⊳ M⟨N⟩.(τ.(P) ⊕ Q) ==>K⟨N⟩≺ (τ.(P) ⊕ Q)" by(rule_tac weakTransitionI) auto moreoverobtain P' where PTrans: "Ψ ⊗ Ψ' ⊳ τ.(P) ⟼τ ≺ P'"and"Ψ ⊗ Ψ' ⊳ P ∼ P'"using tauActionI by auto have"guarded(τ.(P))"by(rule guardedTau) with PTrans have"Ψ ⊗ Ψ' ⊳ (τ.(P)) ⊕ Q ⟼τ ≺ P'"by(rule Sum1) hence"Ψ ⊗ Ψ' ⊳ (τ.(P)) ⊕ Q ==>^\<tau> P'"by(rule tauActTauChain) moreoverfrom‹Ψ ⊗ Ψ' ⊳ P ∼ P'›have"(Ψ ⊗ Ψ', P', P) ∈ Rel"by(metis bisimE C1) ultimatelyshow ?caseby fastforce next case cTau from‹τ ≠ τ›show ?caseby simp qed next case cSum2 from‹Ψ ⊳ α⋅(τ.(P) ⊕ Q) ⟼β ≺ PQ›‹β ≠ τ›show ?case proof(induct rule: prefixCases) case(cInput M xvec N K Tvec) have"Ψ ⊳ M(λ*xvec N).(τ.(P) ⊕ Q) ==>^\<tau> M(λ*xvec N).(τ.(P) ⊕ Q)"by auto moreoverhave"insertAssertion (extractFrame((M(λ*xvec N).P) ⊕ M(λ*xvec N).(τ.(P) ⊕ Q))) Ψ↪F insertAssertion (extractFrame(M(λ*xvec N).(τ.(P) ⊕ Q))) Ψ" by auto moreoverfrom‹Ψ ⊨ M ↔ K›‹distinct xvec›‹set xvec ⊆ supp N›‹length xvec = length Tvec› have"Ψ ⊳ M(λ*xvec N).(τ.(P) ⊕ Q) ⟼K((N[xvec::=Tvec]))≺ (τ.(P) ⊕ Q)[xvec::=Tvec]" by(rule Input) with‹length xvec = length Tvec›‹distinct xvec› have"Ψ ⊳ M(λ*xvec N).(τ.(P) ⊕ Q) ⟼K((N[xvec::=Tvec]))≺ (τ.(P[xvec::=Tvec]) ⊕ Q[xvec::=Tvec])" by simp ultimatelyhave"Ψ : ((M(λ*xvec N).P) ⊕ M(λ*xvec N).(τ.(P) ⊕ Q)) ⊳ M(λ*xvec N).(τ.(P) ⊕ Q) ==>K((N[xvec::=Tvec]))≺ (τ.(P[xvec::=Tvec]) ⊕ Q[xvec::=Tvec])" by(rule_tac weakTransitionI) auto moreoverhave"Ψ ⊗ Ψ' ⊳ τ.(P[xvec::=Tvec]) ⊕ (Q[xvec::=Tvec]) ==>^\<tau> τ.(P[xvec::=Tvec]) ⊕ (Q[xvec::=Tvec])"by auto ultimatelyshow ?caseusing‹(Ψ ⊗ Ψ', τ.(P[xvec::=Tvec]) ⊕ (Q[xvec::=Tvec]), τ.(P[xvec::=Tvec]) ⊕ (Q[xvec::=Tvec])) ∈ Rel›‹length xvec = length Tvec›‹distinct xvec› by fastforce next case(cOutput M N K) have"Ψ ⊳ M⟨N⟩.(τ.(P) ⊕ Q) ==>^\<tau> M⟨N⟩.(τ.(P) ⊕ Q)"by auto moreoverhave"insertAssertion (extractFrame(M⟨N⟩.P ⊕ M⟨N⟩.(τ.(P) ⊕ Q))) Ψ ↪F insertAssertion (extractFrame(M⟨N⟩.(τ.(P) ⊕ Q))) Ψ" by auto moreoverfrom‹Ψ ⊨ M ↔ K›have"Ψ ⊳ M⟨N⟩.(τ.(P) ⊕ Q) ⟼K⟨N⟩≺ (τ.(P) ⊕ Q)" by(rule Output) ultimatelyhave"Ψ : (M⟨N⟩.P ⊕ M⟨N⟩.(τ.(P) ⊕ Q)) ⊳ M⟨N⟩.(τ.(P) ⊕ Q) ==>K⟨N⟩≺ (τ.(P) ⊕ Q)" by(rule_tac weakTransitionI) auto moreoverhave"Ψ ⊗ Ψ' ⊳ τ.(P) ⊕ Q ==>^\<tau> τ.(P) ⊕ Q"by auto ultimatelyshow ?caseusing‹(Ψ ⊗ Ψ', τ.(P) ⊕ Q, τ.(P) ⊕ Q) ∈ Rel›by fastforce next case cTau from‹τ ≠ τ›show ?caseby simp qed qed next case(cTau PQ) from‹Ψ ⊳ α⋅P ⊕ α⋅(τ.(P) ⊕ Q) ⟼τ ≺ PQ›show ?case proof(induct rule: sumCases) case cSum1 from‹Ψ ⊳ α⋅P ⟼ τ ≺ PQ›show ?case proof(induct rule: prefixTauCases) case cTau obtain P' where PTrans: "Ψ ⊳ τ.((τ.(P)) ⊕ Q) ⟼τ ≺ P'"and"Ψ ⊳ (τ.(P)) ⊕ Q ∼ P'"using tauActionI by auto obtain P'' where P'Trans: "Ψ ⊳ τ.(P) ⟼τ ≺ P''"and"Ψ ⊳ P ∼ P''"using tauActionI by auto from P'Trans have"Ψ ⊳ τ.(P) ⊕ Q⟼τ ≺ P''"by(rule_tac Sum1) (auto intro: guardedTau) with‹Ψ ⊳ (τ.(P)) ⊕ Q ∼ P'›obtain P''' where P''Trans: "Ψ ⊳ P' ⟼τ ≺ P'''"and"Ψ ⊳ P'' ∼ P'''" apply(drule_tac bisimE(4)) apply(drule_tac bisimE(2)) apply(drule_tac simE) by(auto dest: bisimE) from PTrans P''Trans have"Ψ ⊳ τ.((τ.(P)) ⊕ Q) ==>^\<tau> P'''"by(fastforce dest: tauActTauChain) moreoverfrom‹Ψ ⊳ P ∼ PQ›‹Ψ ⊳ P'' ∼ P'''›‹Ψ ⊳ P ∼ P''›have"Ψ ⊳ P''' ∼ PQ" by(metis bisimSymmetric bisimTransitive) hence"(Ψ, P''', PQ) ∈ Rel"by(rule C1) ultimatelyshow ?caseby fastforce qed next case cSum2 from‹Ψ ⊳ α⋅((τ.(P)) ⊕ Q) ⟼τ ≺ PQ›show ?case proof(induct rule: prefixTauCases) case cTau obtain P' where PTrans: "Ψ ⊳ τ.((τ.(P)) ⊕ Q) ⟼τ ≺ P'"and"Ψ ⊳ (τ.(P)) ⊕ Q ∼ P'"using tauActionI by auto from PTrans have"Ψ ⊳ τ.((τ.(P)) ⊕ Q) ==>^\<tau> P'"by(rule tauActTauChain) moreoverfrom‹Ψ ⊳ (τ.(P)) ⊕ Q ∼ P'›‹Ψ ⊳ τ.(P) ⊕ Q ∼ PQ›have"Ψ ⊳ P' ∼ PQ" by(metis bisimSymmetric bisimTransitive) hence"(Ψ, P', PQ) ∈ Rel"by(rule C1) ultimatelyshow ?caseby fastforce qed qed qed
lemma tauLaw4CongSimRight: fixes Ψ :: 'b and P :: "('a, 'b, 'c) psi" and Q :: "('a, 'b, 'c) psi" and α :: "'a prefix"
assumes C1: "∧Ψ P Q. Ψ ⊳ P ∼ Q ==> (Ψ, P, Q) ∈ Rel"
shows"Ψ ⊳ α⋅(τ.(P) ⊕ Q) ↝«Rel¬ α⋅P ⊕ α⋅(τ.(P) ⊕ Q)" proof(induct rule: weakCongSimI) case(cTau PQ) from‹Ψ ⊳ α⋅P ⊕ α⋅(τ.(P) ⊕ Q) ⟼τ ≺ PQ›show ?case proof(induct rule: sumCases) case cSum1 from‹Ψ ⊳ α⋅P ⟼ τ ≺ PQ›show ?case proof(induct rule: prefixTauCases) case cTau obtain P' where PTrans: "Ψ ⊳ τ.((τ.(P)) ⊕ Q) ⟼τ ≺ P'"and"Ψ ⊳ (τ.(P)) ⊕ Q ∼ P'"using tauActionI by auto obtain P'' where P'Trans: "Ψ ⊳ τ.(P) ⟼τ ≺ P''"and"Ψ ⊳ P ∼ P''"using tauActionI by auto from P'Trans have"Ψ ⊳ τ.(P) ⊕ Q⟼τ ≺ P''"by(rule_tac Sum1) (auto intro: guardedTau) with‹Ψ ⊳ (τ.(P)) ⊕ Q ∼ P'›obtain P''' where P''Trans: "Ψ ⊳ P' ⟼τ ≺ P'''"and"Ψ ⊳ P'' ∼ P'''" apply(drule_tac bisimE(4)) apply(drule_tac bisimE(2)) apply(drule_tac simE) by(auto dest: bisimE) from PTrans P''Trans have"Ψ ⊳ τ.((τ.(P)) ⊕ Q) ==>\<tau> P'''"by(fastforce dest: tauActTauStepChain) moreoverfrom‹Ψ ⊳ P ∼ PQ›‹Ψ ⊳ P'' ∼ P'''›‹Ψ ⊳ P ∼ P''›have"Ψ ⊳ P''' ∼ PQ" by(metis bisimSymmetric bisimTransitive) hence"(Ψ, P''', PQ) ∈ Rel"by(rule C1) ultimatelyshow ?caseby fastforce qed next case cSum2 from‹Ψ ⊳ α⋅((τ.(P)) ⊕ Q) ⟼τ ≺ PQ›show ?case proof(induct rule: prefixTauCases) case cTau obtain P' where PTrans: "Ψ ⊳ τ.((τ.(P)) ⊕ Q) ⟼τ ≺ P'"and"Ψ ⊳ (τ.(P)) ⊕ Q ∼ P'"using tauActionI by auto from PTrans have"Ψ ⊳ τ.((τ.(P)) ⊕ Q) ==>\<tau> P'"by(rule tauActTauStepChain) moreoverfrom‹Ψ ⊳ (τ.(P)) ⊕ Q ∼ P'›‹Ψ ⊳ τ.(P) ⊕ Q ∼ PQ›have"Ψ ⊳ P' ∼ PQ" by(metis bisimSymmetric bisimTransitive) hence"(Ψ, P', PQ) ∈ Rel"by(rule C1) ultimatelyshow ?caseby fastforce qed qed qed
end
end
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.27Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.