equal
deleted
inserted
replaced
230 "[| strict_ex_prop X; States F = States G |] \ |
230 "[| strict_ex_prop X; States F = States G |] \ |
231 \ ==> (ALL H. States F = States H & F Join H : X --> G Join H : X) = \ |
231 \ ==> (ALL H. States F = States H & F Join H : X --> G Join H : X) = \ |
232 \ (F:X --> G:X)"; |
232 \ (F:X --> G:X)"; |
233 by Safe_tac; |
233 by Safe_tac; |
234 by (Blast_tac 1); |
234 by (Blast_tac 1); |
235 auto(); |
235 by Auto_tac; |
236 qed "strict_ex_refine_lemma"; |
236 qed "strict_ex_refine_lemma"; |
237 |
237 |
238 Goalw [strict_ex_prop_def] |
238 Goalw [strict_ex_prop_def] |
239 "[| strict_ex_prop X; States F = States G |] \ |
239 "[| strict_ex_prop X; States F = States G |] \ |
240 \ ==> (ALL H. States F = States H & F Join H : welldef & F Join H : X \ |
240 \ ==> (ALL H. States F = States H & F Join H : welldef & F Join H : X \ |
247 |
247 |
248 Goal "[| strict_ex_prop X; States F = States G; \ |
248 Goal "[| strict_ex_prop X; States F = States G; \ |
249 \ ALL H. States F = States H & F Join H : welldef Int X \ |
249 \ ALL H. States F = States H & F Join H : welldef Int X \ |
250 \ --> G Join H : welldef |] \ |
250 \ --> G Join H : welldef |] \ |
251 \ ==> (G refines F wrt X) = (G iso_refines F wrt X)"; |
251 \ ==> (G refines F wrt X) = (G iso_refines F wrt X)"; |
252 bd sym 1; |
252 by (dtac sym 1); |
253 by (res_inst_tac [("x","SKIP (States G)")] allE 1 |
253 by (res_inst_tac [("x","SKIP (States G)")] allE 1 |
254 THEN assume_tac 1); |
254 THEN assume_tac 1); |
255 by (asm_full_simp_tac (simpset() addsimps [refines_def, iso_refines_def, |
255 by (asm_full_simp_tac (simpset() addsimps [refines_def, iso_refines_def, |
256 strict_ex_refine_lemma_v]) 1); |
256 strict_ex_refine_lemma_v]) 1); |
257 qed "ex_refinement_thm"; |
257 qed "ex_refinement_thm"; |