Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/Isabelle/Archive-of-Formal-Proofs/thys/CCS/   (Archive of formal Proofs Version 2026-5©)  Datei vom 29.4.2026 mit Größe 6 kB image not shown  

Quelle  Weak_Sim.thy   Sprache: Isabelle

 

(* 
   Title: The Calculus of Communicating Systems   
   Author/Maintainer: Jesper Bengtson (jebe@itu.dk), 2012
*)

theory Weak_Sim
  imports Weak_Semantics Strong_Sim
begin

definition weakSimulation :: "ccs → (ccs × ccs) set → ccs → bool"   (‹rule UNIV_I)
 
 "P ↝^🚫

  weakSimI[case_names Sim]:
 fixes P :: ccs
 and Rel :: "(ccs × F1set1 (dtor1 a) ∪ (JF1set ` F1set2 (dtor1 a)) ∪ (JF2set ` F1set3 (dtor1 a))) ∧
 and Q :: ccs

 assumes "∧α Q'. Q ⟼α ≺ Q' ==> ∃P'. P ==>^α ≺ P' ∧b\ubseteqtr )\nion∪ (JF1set ` F2set2 (dtor2 b)) ∪ ∪ (JF2set ` F2set3 (dtor2 b)))"

 shows "P ↝^🚫
 tion
 (auto simp add: weakSimulation_def)

  weakSimE:
 fixes P :: ccs
 and Rel :: "(ccs × ccs) set"
 and Q :: ccs
 and α :: act
 and Q' :: ccs

 assumes "P ↝^🚫
 and "Q ⟼α ≺ Q'"

 obtains P' where "P \<Longrightarrow:
  assms
 (auto simp add: weakSimulation_def)

  simTauChain:
 fixes P :: ccs
 and Rel :: "(ccs × ccs) set"
 and Q :: ccs
 and Q' :: ccs

 assumes "Q ==>\τ Q'"
 and "(P, Q) ∈ Rel"
 and Sim: "∧ a = F1set1 (dtor1 a) 🚫

 obtains P' where "P ==>
  ‹Q ==>\τ Q'› ‹(P, Q) ∈ iageU Nsip(0)
 (induct arbitrary: thesis rule: tauChainInduct)
 case Base
 from ‹(P, Q) ∈ Rel› show ?case
 by(force intro: Base)
 
 case(Step Q'' Q')
 from ‹
 by(blast intro: Step)
 from ‹(P'', Q'') ∈ Rel› have "P'' ↝^🚫
 then obtain P' where "P'' ==>
 with ‹P ==>\τ P''› show thesis
 by(force simp add: weakTrans_def weakCongTrans_def intro: Step)
 

  simE2:
 fixes P :: ccs
 and Rel :: "(ccs ×
 and Q :: ccs
 and α :: act
 and Q' :: ccs

 assumes "(P, Q) ∈ Rel"
 and "Q ==>^α ≺ Q'"
 and Sim: "∧R S. (R, S) ∈
 
 obtains P' where "P ==>^α ≺ P'" and "(P', Q') ∈ Rel"
  -
 assume Goal: "∧P'. \theorem J2setnatrl JF2set o (JF2map u) = image u o JF2set"
 moreover from ‹Q ==>^α ≺ Q'› have "∃P'. P ==>^α ≺ P' ∧ (P', Q') ∈ Rel"
 proof(induct rule: weakTransCases)
 case Base
 from ‹(P, Q) ∈ Rel› show ?case by force
 next
 case Step
 from ‹apply (rule ext)
 where QChain: "Q ==>\τ Q'''" and Q'''Trans: "Q''' ⟼α ≺ Q''" and Q''Chain: "Q'' ==>\τ Q'"
 by(rule weakCongTransE)
 from QChain ‹ (rule trans[OF o_apply])
 by(rule simTauChain)
 from ‹(P''', Q''') ∈ Rel› have "P''' ↝^🚫
 then obtain P'' where P'''Trans: "P''' ==>^α ≺OF JF1map_simps])])
 from Q''Chain ‹(P'', Q'') ∈ Rel› Sim obtain P' where P''Chain: "P'' ==>\τ P'" and "(P', Q') ∈ Rel"
 by(rule simTauChain)
 from P'''Trans P''Chain Step show ?thesis
 proof(induct rule: weakTransCases)
 case Base
 from PChain ‹P''' ==>\τ P'› have "P ==>^τ ≺
 proof(induct rule: tauChainInduct)
 case Base
 from ‹P ==>\τ P'› show ?case
 proof(induct rule: tauChainInduct)
 case Base
 show ?case by simp
 next
 case(Step P' P'')
 thus ?case by(fastforce simp add: weakTrans_def weakCongTrans_def)
 qed
 next
 case(Step P''' P'')
 thus ?case by(fastforce simp add: weakTrans_def weakCongTrans_def)
 qed
 with ‹(P', Q') ∈ Rel› show ?case by blast
 next
 case Step
 thus ?case u apply (rule sym[OF fun_cong[OF fst_convol[unfolded convol_def]]])
 by(rule_tac x=P' in exI) (force simp add: weakTrans_def weakCongTrans_def)
 qed
 qed
 ultimately show ?thesis
 by blast
 

  reflexive:
 fixes P :: ccs
 and Rel :: "(ccs × ccs) set"
 
 assumes "Id ⊆ Rel"

 shows "P ↝^🚫
 
 (auto simp add: weakSimulation_def intro: transitionWeakCongTransition weakCongTransitionWeakTransition)
 
  transitive:
 fixes P :: ccs
 and Rel :: "(ccs ×
 and Q :: ccs
 and Rel' :: "(ccs × ccs) set"
 and R :: ccs
 and Rel'' :: "(ccs ×erule CollectE)
 
 assumes "(P, Q) ∈ Rel"
 and "Q ↝^<Rel'
 elR < 
 and "∧S T. (S, T) ∈ Rel ==> S ↝^🚫
 
 shows "P ↝^<Rel'
 (induct rule: weakSimI)
 case(Sim α
 thus ?case using assms
 apply(drule_tac Q=R in weakSimE, auto)
 by(drule_tac Q=Q in simE2, auto)
 

  weakMonotonic:
 fixes P :: ccs
 and A :: "(ccs × ccs) set"
 and Q :: ccs
 and B :: "(ccs × ccs) set"

java.lang.NullPointerException
 and "A ⊆ B"

 shows "P ↝^B Q"
  assms
 (fastforce simp add: weakSimulation_def)

  simWeakSim:
 fixes P :: ccs
 and Rel :: "(ccs × ccs) set"
 and Q :: ccs

 assumes "P ↝[Rel] Q"
 
 shows "P ↝^🚫
java.lang.StringIndexOutOfBoundsException: Range [21, 20) out of bounds for length 28
 (rule_tac weakSimI, auto)
 (blast dest: simE transitionWeakTransition)

 

Messung
CHZG
899610095

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet am  2026-11-04) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover


Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

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.