equal
deleted
inserted
replaced
60 |
60 |
61 Goalw [extend_set_def] |
61 Goalw [extend_set_def] |
62 "extend_set h (A Int B) = extend_set h A Int extend_set h B"; |
62 "extend_set h (A Int B) = extend_set h A Int extend_set h B"; |
63 by Auto_tac; |
63 by Auto_tac; |
64 qed "extend_set_Int_distrib"; |
64 qed "extend_set_Int_distrib"; |
|
65 |
|
66 Goalw [extend_set_def] |
|
67 "extend_set h (INTER A B) = (INT x:A. extend_set h (B x))"; |
|
68 by (force_tac (claset() addIs [h_f_g_eq RS sym], simpset()) 1); |
|
69 qed "extend_set_INTER_distrib"; |
65 |
70 |
66 Goalw [extend_set_def] |
71 Goalw [extend_set_def] |
67 "extend_set h (A - B) = extend_set h A - extend_set h B"; |
72 "extend_set h (A - B) = extend_set h A - extend_set h B"; |
68 by Auto_tac; |
73 by Auto_tac; |
69 qed "extend_set_Diff_distrib"; |
74 qed "extend_set_Diff_distrib"; |
169 by (simp_tac (simpset() addsimps [image_Un, Acts_Join]) 2); |
174 by (simp_tac (simpset() addsimps [image_Un, Acts_Join]) 2); |
170 by (simp_tac (simpset() addsimps [extend_set_Int_distrib]) 1); |
175 by (simp_tac (simpset() addsimps [extend_set_Int_distrib]) 1); |
171 qed "extend_Join"; |
176 qed "extend_Join"; |
172 Addsimps [extend_Join]; |
177 Addsimps [extend_Join]; |
173 |
178 |
|
179 Goal "extend h (JOIN I F) = (JN i:I. extend h (F i))"; |
|
180 by (rtac program_equalityI 1); |
|
181 by (simp_tac (simpset() addsimps [image_UNION, Acts_JN]) 2); |
|
182 by (simp_tac (simpset() addsimps [extend_set_INTER_distrib]) 1); |
|
183 qed "extend_JN"; |
|
184 Addsimps [extend_JN]; |
|
185 |
174 |
186 |
175 (*** Safety: co, stable ***) |
187 (*** Safety: co, stable ***) |
176 |
188 |
177 Goal "(extend h F : (extend_set h A) co (extend_set h B)) = \ |
189 Goal "(extend h F : (extend_set h A) co (extend_set h B)) = \ |
178 \ (F : A co B)"; |
190 \ (F : A co B)"; |
220 qed "extend_Constrains"; |
232 qed "extend_Constrains"; |
221 |
233 |
222 Goal "(extend h F : Stable (extend_set h A)) = (F : Stable A)"; |
234 Goal "(extend h F : Stable (extend_set h A)) = (F : Stable A)"; |
223 by (simp_tac (simpset() addsimps [Stable_def, extend_Constrains]) 1); |
235 by (simp_tac (simpset() addsimps [Stable_def, extend_Constrains]) 1); |
224 qed "extend_Stable"; |
236 qed "extend_Stable"; |
|
237 |
|
238 Goal "(extend h F : Always (extend_set h A)) = (F : Always A)"; |
|
239 by (asm_simp_tac (simpset() addsimps [Always_def, extend_Stable]) 1); |
|
240 qed "extend_Always"; |
225 |
241 |
226 |
242 |
227 (*** Progress: transient, ensures ***) |
243 (*** Progress: transient, ensures ***) |
228 |
244 |
229 Goal "(extend h F : transient (extend_set h A)) = (F : transient A)"; |
245 Goal "(extend h F : transient (extend_set h A)) = (F : transient A)"; |
311 \ (F : A leadsTo B)"; |
327 \ (F : A leadsTo B)"; |
312 by Safe_tac; |
328 by Safe_tac; |
313 by (etac leadsTo_imp_extend_leadsTo 2); |
329 by (etac leadsTo_imp_extend_leadsTo 2); |
314 by (dtac extend_leadsTo_slice 1); |
330 by (dtac extend_leadsTo_slice 1); |
315 by (full_simp_tac (simpset() addsimps [slice_extend_set]) 1); |
331 by (full_simp_tac (simpset() addsimps [slice_extend_set]) 1); |
316 qed "extend_leadsto_eq"; |
332 qed "extend_leadsto"; |
317 |
333 |
318 Goal "(extend h F : (extend_set h A) LeadsTo (extend_set h B)) = \ |
334 Goal "(extend h F : (extend_set h A) LeadsTo (extend_set h B)) = \ |
319 \ (F : A LeadsTo B)"; |
335 \ (F : A LeadsTo B)"; |
320 by (simp_tac |
336 by (simp_tac |
321 (simpset() addsimps [LeadsTo_def, reachable_extend_eq, |
337 (simpset() addsimps [LeadsTo_def, reachable_extend_eq, |
322 extend_leadsto_eq, extend_set_Int_distrib RS sym]) 1); |
338 extend_leadsto, extend_set_Int_distrib RS sym]) 1); |
323 qed "extend_LeadsTo"; |
339 qed "extend_LeadsTo"; |
324 |
340 |
325 |
341 |
326 (*** guarantees properties ***) |
342 (*** guarantees properties ***) |
327 |
343 |