lemma Filter_ex2_UU: "Filter_ex2 sig ⋅ UU = UU" by (simp add: Filter_ex2_def)
lemma Filter_ex2_nil: "Filter_ex2 sig ⋅ nil = nil" by (simp add: Filter_ex2_def)
lemma Filter_ex2_cons: "Filter_ex2 sig ⋅ (at ↝ xs) = (if fst at ∈ actions sig then at ↝ (Filter_ex2 sig ⋅ xs) else Filter_ex2 sig ⋅ xs)" by (simp add: Filter_ex2_def)
subsection‹‹stutter2››
lemma stutter2_unfold: "stutter2 sig = (LAM ex. (λs. case ex of nil → TT | x ## xs → (flift1 (λp. (If Def (fst p ∉ actions sig) then Def (s= snd p) else TT) andalso (stutter2 sig⋅xs) (snd p)) ⋅ x)))" apply (rule trans) apply (rule fix_eq2) apply (simp only: stutter2_def) apply (rule beta_cfun) apply (simp add: flift1_def) done
lemma stutter2_UU: "(stutter2 sig ⋅ UU) s = UU" apply (subst stutter2_unfold) apply simp done
lemma stutter2_nil: "(stutter2 sig ⋅ nil) s = TT" apply (subst stutter2_unfold) apply simp done
lemma stutter2_cons: "(stutter2 sig ⋅ (at ↝ xs)) s = ((if fst at ∉ actions sig then Def (s = snd at) else TT) andalso (stutter2 sig ⋅ xs) (snd at))" apply (rule trans) apply (subst stutter2_unfold) apply (simp add: Consq_def flift1_def If_and_if) apply simp done
lemma lemma_1_1a: ―‹‹is_ex_fr› propagates from ‹A ∥ B› to projections ‹A› and ‹B›› "∀s. is_exec_frag (A ∥ B) (s, xs) ⟶ is_exec_frag A (fst s, Filter_ex2 (asig_of A) ⋅ (ProjA2 ⋅ xs)) ∧ is_exec_frag B (snd s, Filter_ex2 (asig_of B) ⋅ (ProjB2 ⋅ xs))" apply (pair_induct xs simp: is_exec_frag_def) text‹main case› apply (auto simp add: trans_of_defs2) done
lemma lemma_1_1b: ―‹‹is_ex_fr (A ∥ B)› implies stuttering on projections› "∀s. is_exec_frag (A ∥ B) (s, xs) ⟶ stutter (asig_of A) (fst s, ProjA2 ⋅ xs) ∧ stutter (asig_of B) (snd s, ProjB2 ⋅ xs)" apply (pair_induct xs simp: stutter_def is_exec_frag_def) text‹main case› apply (auto simp add: trans_of_defs2) done
lemma lemma_1_1c: ―‹Executions of ‹A ∥ B› have only ‹A›- or ‹B›-actions› "∀s. is_exec_frag (A ∥ B) (s, xs) ⟶ Forall (λx. fst x ∈ act (A ∥ B)) xs" apply (pair_induct xs simp: Forall_def sforall_def is_exec_frag_def) text‹main case› apply auto apply (simp add: trans_of_defs2 actions_asig_comp asig_of_par) done
lemma lemma_1_2: ―‹‹ex A›, ‹exB›, stuttering and forall ‹a ∈ A ∥ B› implies ‹ex (A ∥ B)›› "∀s. is_exec_frag A (fst s, Filter_ex2 (asig_of A) ⋅ (ProjA2 ⋅ xs)) ∧ is_exec_frag B (snd s, Filter_ex2 (asig_of B) ⋅ (ProjB2 ⋅ xs)) ∧ stutter (asig_of A) (fst s, ProjA2 ⋅ xs) ∧ stutter (asig_of B) (snd s, ProjB2 ⋅ xs) ∧ Forall (λx. fst x ∈ act (A ∥ B)) xs ⟶ is_exec_frag (A ∥ B) (s, xs)" apply (pair_induct xs simp: Forall_def sforall_def is_exec_frag_def stutter_def) apply (auto simp add: trans_of_defs1 actions_asig_comp asig_of_par) done
theorem compositionality_ex: "ex ∈ executions (A ∥ B) ⟷ Filter_ex (asig_of A) (ProjA ex) ∈ executions A ∧ Filter_ex (asig_of B) (ProjB ex) ∈ executions B ∧ stutter (asig_of A) (ProjA ex) ∧ stutter (asig_of B) (ProjB ex) ∧ Forall (λx. fst x ∈ act (A ∥ B)) (snd ex)" apply (simp add: executions_def ProjB_def Filter_ex_def ProjA_def starts_of_par) apply (pair ex) apply (rule iffI) text‹‹==>›› apply (erule conjE)+ apply (simp add: lemma_1_1a lemma_1_1b lemma_1_1c) text‹‹<==›› apply (erule conjE)+ apply (simp add: lemma_1_2) done
theorem compositionality_ex_modules: "Execs (A ∥ B) = par_execs (Execs A) (Execs B)" apply (unfold Execs_def par_execs_def) apply (simp add: asig_of_par) apply (rule set_eqI) apply (simp add: compositionality_ex actions_of_par) done
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.5Bemerkung:
¤
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.