(* Title: ZF/UNITY/Comp.thy Author: Sidi O Ehmety, Computer Laboratory Copyright 1998 University of Cambridge
From Chandy and Sanders, "Reasoning About Program Composition", Technical Report 2000-003, University of Florida, 2000.
Revised by Sidi Ehmety on January 2001
Added: a strong form of the order relation over component and localize
Theory ported from HOL.
*)
section\<open>Composition\<close>
theory Comp imports Union Increasing begin
definition
component :: "[i,i]\o" (infixl \component\ 65) where "F component H \ (\G. F \ G = H)"
definition
strict_component :: "[i,i]\o" (infixl \strict'_component\ 65) where "F strict_component H \ F component H \ F\H"
definition (* A stronger form of the component relation *)
component_of :: "[i,i]\o" (infixl \component'_of\ 65) where "F component_of H \ (\G. F ok G \ F \ G = H)"
definition
strict_component_of :: "[i,i]\o" (infixl \strict'_component'_of\ 65) where "F strict_component_of H \ F component_of H \ F\H"
definition (* Preserves a state function f, in particular a variable *)
preserves :: "(i\i)\i" where "preserves(f) \ {F:program. \z. F: stable({s:state. f(s) = z})}"
definition
fun_pair :: "[i\i, i \i] \(i\i)" where "fun_pair(f, g) \ \x. "
lemma component_SKIP [simp]: "F \ program \ SKIP component F" unfolding component_def apply (rule_tac x = F in exI) apply (force intro: Join_SKIP_left) done
lemma component_refl [simp]: "F \ program \ F component F" unfolding component_def apply (rule_tac x = F in exI) apply (force intro: Join_SKIP_right) done
lemma Join_absorb1: "F component G \ F \ G = G" by (auto simp add: component_def Join_left_absorb)
lemma Join_absorb2: "G component F \ F \ G = F" by (auto simp add: Join_ac component_def)
lemma JOIN_component_iff: "H \ program\(JOIN(I,F) component H) \ (\i \ I. F(i) component H)" apply (case_tac "I=0", force) apply (simp (no_asm_simp) add: component_eq_subset) apply auto apply blast apply (rename_tac "y") apply (drule_tac c = y and A = "AllowedActs (H)"in subsetD) apply (blast elim!: not_emptyE)+ done
lemma component_JOIN: "i \ I \ F(i) component (\i \ I. (F(i)))" unfolding component_def apply (blast intro: JOIN_absorb) done
lemma component_trans: "\F component G; G component H\ \ F component H" unfolding component_def apply (blast intro: Join_assoc [symmetric]) done
lemma component_antisym: "\F \ program; G \ program\ \(F component G \ G component F) \ F = G" apply (simp (no_asm_simp) add: component_eq_subset) apply clarify apply (rule program_equalityI, auto) done
lemma Join_component_iff: "H \ program \
((F \<squnion> G) component H) \<longleftrightarrow> (F component H \<and> G component H)" apply (simp (no_asm_simp) add: component_eq_subset) apply blast done
lemma component_constrains: "\F component G; G \ A co B; F \ program\ \ F \ A co B" apply (frule constrainsD2) apply (auto simp add: constrains_def component_eq_subset) done
lemma preserves_id_subset_stable: "st_set(A) \ preserves(\x. x) \ stable(A)" apply (unfold preserves_def stable_def constrains_def, auto) apply (drule_tac x = xb in spec) apply (drule_tac x = act in bspec) apply (auto dest: ActsD) done
lemma preserves_id_imp_stable: "\F \ preserves(\x. x); st_set(A)\ \ F \ stable(A)" by (blast intro: preserves_id_subset_stable [THEN subsetD])
(** Added by Sidi **) (** component_of **)
(* component_of is stronger than component *) lemma component_of_imp_component: "F component_of H \ F component H" apply (unfold component_def component_of_def, blast) done
(* component_of satisfies many of component's properties *) lemma component_of_refl [simp]: "F \ program \ F component_of F" unfolding component_of_def apply (rule_tac x = SKIP in exI, auto) done
lemma component_of_SKIP [simp]: "F \ program \SKIP component_of F" apply (unfold component_of_def, auto) apply (rule_tac x = F in exI, auto) done
lemma component_of_trans: "\F component_of G; G component_of H\ \ F component_of H" unfolding component_of_def apply (blast intro: Join_assoc [symmetric]) done
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 ist noch experimentell.