325 |
325 |
326 Goalw [SKIP_def] "extend h SKIP = SKIP"; |
326 Goalw [SKIP_def] "extend h SKIP = SKIP"; |
327 by (rtac program_equalityI 1); |
327 by (rtac program_equalityI 1); |
328 by Auto_tac; |
328 by Auto_tac; |
329 qed "extend_SKIP"; |
329 qed "extend_SKIP"; |
|
330 Addsimps [export extend_SKIP]; |
330 |
331 |
331 Goal "project_set h UNIV = UNIV"; |
332 Goal "project_set h UNIV = UNIV"; |
332 by Auto_tac; |
333 by Auto_tac; |
333 qed "project_set_UNIV"; |
334 qed "project_set_UNIV"; |
334 Addsimps [project_set_UNIV]; |
335 Addsimps [project_set_UNIV]; |
454 Goal "(extend h F : Always (extend_set h A)) = (F : Always A)"; |
455 Goal "(extend h F : Always (extend_set h A)) = (F : Always A)"; |
455 by (asm_simp_tac (simpset() addsimps [Always_def, extend_Stable]) 1); |
456 by (asm_simp_tac (simpset() addsimps [Always_def, extend_Stable]) 1); |
456 qed "extend_Always"; |
457 qed "extend_Always"; |
457 |
458 |
458 |
459 |
|
460 (** Further lemmas **) |
|
461 |
|
462 Goal "A Int extend_set h ((project_set h A) Int B) = A Int extend_set h B"; |
|
463 by (auto_tac (claset(), simpset() addsimps [split_extended_all])); |
|
464 qed "Int_extend_set_lemma"; |
|
465 |
|
466 Goal "G : C co B ==> project h C G : project_set h C co project_set h B"; |
|
467 by (full_simp_tac (simpset() addsimps [constrains_def, project_def, |
|
468 project_act_def]) 1); |
|
469 by (Blast_tac 1); |
|
470 qed "project_constrains_project_set"; |
|
471 |
|
472 Goal "G : stable C ==> project h C G : stable (project_set h C)"; |
|
473 by (asm_full_simp_tac (simpset() addsimps [stable_def, |
|
474 project_constrains_project_set]) 1); |
|
475 qed "project_stable_project_set"; |
|
476 |
|
477 |
459 (*** Progress: transient, ensures ***) |
478 (*** Progress: transient, ensures ***) |
460 |
479 |
461 Goal "(extend h F : transient (extend_set h A)) = (F : transient A)"; |
480 Goal "(extend h F : transient (extend_set h A)) = (F : transient A)"; |
462 by (auto_tac (claset(), |
481 by (auto_tac (claset(), |
463 simpset() addsimps [transient_def, extend_set_subset_Compl_eq, |
482 simpset() addsimps [transient_def, extend_set_subset_Compl_eq, |
548 (simpset() addsimps [LeadsTo_def, reachable_extend_eq, |
567 (simpset() addsimps [LeadsTo_def, reachable_extend_eq, |
549 extend_leadsto, extend_set_Int_distrib RS sym]) 1); |
568 extend_leadsto, extend_set_Int_distrib RS sym]) 1); |
550 qed "extend_LeadsTo"; |
569 qed "extend_LeadsTo"; |
551 |
570 |
552 |
571 |
|
572 (*** givenBy: USEFUL??? ***) |
|
573 |
|
574 Goal "givenBy (v o f) = extend_set h `` (givenBy v)"; |
|
575 by (simp_tac (simpset() addsimps [givenBy_eq_Collect]) 1); |
|
576 by (Deepen_tac 0 1); |
|
577 qed "givenBy_o_eq_extend_set"; |
|
578 |
|
579 Goal "givenBy f = range (extend_set h)"; |
|
580 by (simp_tac (simpset() addsimps [givenBy_eq_Collect]) 1); |
|
581 by (Deepen_tac 0 1); |
|
582 qed "givenBy_eq_extend_set"; |
|
583 |
|
584 Goal "D : givenBy v ==> extend_set h D : givenBy (v o f)"; |
|
585 by (full_simp_tac (simpset() addsimps [givenBy_eq_all]) 1); |
|
586 by (Blast_tac 1); |
|
587 qed "extend_set_givenBy_I"; |
|
588 |
|
589 |
553 Close_locale "Extend"; |
590 Close_locale "Extend"; |
554 |
591 |
555 (*Close_locale should do this! |
592 (*Close_locale should do this! |
556 Delsimps [f_h_eq, extend_set_inverse, f_image_extend_set, extend_act_inverse, |
593 Delsimps [f_h_eq, extend_set_inverse, f_image_extend_set, extend_act_inverse, |
557 extend_act_Image]; |
594 extend_act_Image]; |