equal
deleted
inserted
replaced
41 Goal "[| component F G; component G F |] ==> F=G"; |
41 Goal "[| component F G; component G F |] ==> F=G"; |
42 by (asm_simp_tac (simpset() addsimps [program_equalityI, equalityI, |
42 by (asm_simp_tac (simpset() addsimps [program_equalityI, equalityI, |
43 component_Acts, component_Init]) 1); |
43 component_Acts, component_Init]) 1); |
44 qed "component_anti_sym"; |
44 qed "component_anti_sym"; |
45 |
45 |
|
46 Goalw [component_def] |
|
47 "component F H = (EX G. F Join G = H & Disjoint F G)"; |
|
48 by (blast_tac (claset() addSIs [Diff_Disjoint, Join_Diff2]) 1); |
|
49 qed "component_eq"; |
46 |
50 |
47 (*** existential properties ***) |
51 (*** existential properties ***) |
48 |
52 |
49 Goalw [ex_prop_def] |
53 Goalw [ex_prop_def] |
50 "[| ex_prop X; finite GG |] ==> GG Int X ~= {} --> (JN G:GG. G) : X"; |
54 "[| ex_prop X; finite GG |] ==> GG Int X ~= {} --> (JN G:GG. G) : X"; |
99 |
103 |
100 |
104 |
101 (*** guarantees ***) |
105 (*** guarantees ***) |
102 |
106 |
103 (*This equation is more intuitive than the official definition*) |
107 (*This equation is more intuitive than the official definition*) |
104 Goalw [guarantees_def, component_def] |
108 Goal "(F : A guarantees B) = \ |
105 "(F : A guarantees B) = (ALL G. F Join G : A --> F Join G : B)"; |
109 \ (ALL G. F Join G : A & Disjoint F G --> F Join G : B)"; |
|
110 by (simp_tac (simpset() addsimps [guarantees_def, component_eq]) 1); |
106 by (Blast_tac 1); |
111 by (Blast_tac 1); |
107 qed "guarantees_eq"; |
112 qed "guarantees_eq"; |
108 |
113 |
109 Goalw [guarantees_def] "X <= Y ==> X guarantees Y = UNIV"; |
114 Goalw [guarantees_def] "X <= Y ==> X guarantees Y = UNIV"; |
110 by (Blast_tac 1); |
115 by (Blast_tac 1); |
152 Goalw [guarantees_def] |
157 Goalw [guarantees_def] |
153 "EX z:I. F : A guarantees (B z) ==> F : A guarantees (UN z:I. B z)"; |
158 "EX z:I. F : A guarantees (B z) ==> F : A guarantees (UN z:I. B z)"; |
154 by (Blast_tac 1); |
159 by (Blast_tac 1); |
155 qed "ex_guarantees"; |
160 qed "ex_guarantees"; |
156 |
161 |
157 val prems = Goalw [guarantees_def, component_def] |
162 val prems = Goal |
158 "(!!G. F Join G : A ==> F Join G : B) ==> F : A guarantees B"; |
163 "(!!G. [| F Join G : A; Disjoint F G |] ==> F Join G : B) \ |
|
164 \ ==> F : A guarantees B"; |
|
165 by (simp_tac (simpset() addsimps [guarantees_def, component_eq]) 1); |
159 by (blast_tac (claset() addIs prems) 1); |
166 by (blast_tac (claset() addIs prems) 1); |
160 qed "guaranteesI"; |
167 qed "guaranteesI"; |
161 |
168 |
162 Goal "[| F : A guarantees B; F Join G : A |] ==> F Join G : B"; |
169 Goalw [guarantees_def, component_def] |
163 by (asm_full_simp_tac (simpset() addsimps [guarantees_eq]) 1); |
170 "[| F : A guarantees B; F Join G : A |] ==> F Join G : B"; |
|
171 by (Blast_tac 1); |
164 qed "guaranteesD"; |
172 qed "guaranteesD"; |
165 |
173 |
166 |
174 |
167 (*** well-definedness ***) |
175 (*** well-definedness ***) |
168 |
176 |