equal
deleted
inserted
replaced
54 |
54 |
55 Goal "G<=F ==> F Join G = F"; |
55 Goal "G<=F ==> F Join G = F"; |
56 by (auto_tac (claset(), simpset() addsimps Join_ac@[component_def])); |
56 by (auto_tac (claset(), simpset() addsimps Join_ac@[component_def])); |
57 qed "Join_absorb2"; |
57 qed "Join_absorb2"; |
58 |
58 |
|
59 Goal "((JOIN I F) <= H) = (ALL i: I. F i <= H)"; |
|
60 by (simp_tac (simpset() addsimps [component_eq_subset]) 1); |
|
61 by (Blast_tac 1); |
|
62 qed "JN_component_iff"; |
|
63 |
59 Goalw [component_def] "i : I ==> (F i) <= (JN i:I. (F i))"; |
64 Goalw [component_def] "i : I ==> (F i) <= (JN i:I. (F i))"; |
60 by (blast_tac (claset() addIs [JN_absorb]) 1); |
65 by (blast_tac (claset() addIs [JN_absorb]) 1); |
61 qed "component_JN"; |
66 qed "component_JN"; |
62 |
67 |
63 Goalw [component_def] "[| F <= G; G <= H |] ==> F <= (H :: 'a program)"; |
68 Goalw [component_def] "[| F <= G; G <= H |] ==> F <= (H :: 'a program)"; |
82 Goal "[| F <= G; G : A co B |] ==> F : A co B"; |
87 Goal "[| F <= G; G : A co B |] ==> F : A co B"; |
83 by (auto_tac (claset(), |
88 by (auto_tac (claset(), |
84 simpset() addsimps [constrains_def, component_eq_subset])); |
89 simpset() addsimps [constrains_def, component_eq_subset])); |
85 qed "component_constrains"; |
90 qed "component_constrains"; |
86 |
91 |
|
92 (*Used in Guar.thy to show that programs are partially ordered*) |
87 bind_thm ("program_less_le", strict_component_def RS meta_eq_to_obj_eq); |
93 bind_thm ("program_less_le", strict_component_def RS meta_eq_to_obj_eq); |
|
94 |
|
95 Goal "F' <= F ==> Diff C G (Acts F) <= Diff C G (Acts F')"; |
|
96 by (auto_tac (claset(), simpset() addsimps [Diff_def, component_eq_subset])); |
|
97 qed "Diff_anti_mono"; |
|
98 |
|
99 (*The LocalTo analogue fails unless |
|
100 reachable (F Join G) <= reachable (F' Join G), |
|
101 e.g. if the initial condition of F is stronger than that of F'*) |
|
102 Goalw [LOCALTO_def, stable_def] |
|
103 "[| G : v localTo[C] F'; F' <= F |] ==> G : v localTo[C] F"; |
|
104 by (auto_tac (claset() addIs [Diff_anti_mono RS component_constrains], |
|
105 simpset())); |
|
106 qed "localTo_component"; |
|
107 |