src/HOL/UNITY/Extend.ML
changeset 8122 b43ad07660b9
parent 8111 68cac7d9d119
child 8128 3a5864b465e2
equal deleted inserted replaced
8121:4a53041acb28 8122:b43ad07660b9
   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];