src/HOL/UNITY/WFair.ML
changeset 5340 d75c03cf77b5
parent 5277 e4297d03e5d2
child 5456 d2ab1264afd4
--- a/src/HOL/UNITY/WFair.ML	Wed Aug 19 10:29:01 1998 +0200
+++ b/src/HOL/UNITY/WFair.ML	Wed Aug 19 10:34:31 1998 +0200
@@ -9,6 +9,14 @@
 *)
 
 
+(*Map its type, [('a * 'a)set set] => ('a set * 'a set) set, to just 'a*)
+Blast.overloaded ("WFair.leadsto", 
+		  #1 o HOLogic.dest_prodT o 
+		  HOLogic.dest_setT o HOLogic.dest_setT o domain_type);
+
+overload_2nd_set "WFair.transient";
+overload_2nd_set "WFair.ensures";
+
 (*** transient ***)
 
 Goalw [stable_def, constrains_def, transient_def]
@@ -52,8 +60,7 @@
 
 Goalw [ensures_def, constrains_def, transient_def]
     "acts ~= {} ==> ensures acts A UNIV";
-by (Asm_simp_tac 1);  (*omitting this causes PROOF FAILED, even with Safe_tac*)
-by (Blast_tac 1);
+by Auto_tac;
 qed "ensures_UNIV";
 
 Goalw [ensures_def]
@@ -165,9 +172,9 @@
 
 Goal "[| leadsTo acts A A'; id: acts; B<=A; A'<=B' |] \
 \   ==> leadsTo acts B B'";
-(*PROOF FAILED: why?*)
-by (blast_tac (claset() addIs [leadsTo_Trans, leadsTo_weaken_R,
-			       leadsTo_weaken_L]) 1);
+(*PROOF FAILED unless leadsTo_Trans is last*)
+by (blast_tac (claset() addIs [leadsTo_weaken_R, leadsTo_weaken_L,
+			       leadsTo_Trans]) 1);
 qed "leadsTo_weaken";
 
 
@@ -468,7 +475,7 @@
 (*** Completion: Binary and General Finite versions ***)
 
 Goal "[| leadsTo acts A A';  stable acts A';   \
-\      leadsTo acts B B';  stable acts B';  id: acts |] \
+\        leadsTo acts B B';  stable acts B';  id: acts |] \
 \   ==> leadsTo acts (A Int B) (A' Int B')";
 by (subgoal_tac "stable acts (wlt acts B')" 1);
 by (asm_full_simp_tac (simpset() addsimps [stable_def]) 2);
@@ -483,8 +490,8 @@
 by (subgoal_tac "leadsTo acts (A Int B) (A Int wlt acts B')" 1);
 by (blast_tac (claset() addIs [leadsTo_subset RS subsetD, 
 			       subset_imp_leadsTo]) 2);
-(*Blast_tac gives PROOF FAILED*)
-by (best_tac (claset() addIs [leadsTo_Trans]) 1);
+(*addIs looks safer, but loops with PROOF FAILED*)
+by (blast_tac (claset() addSIs [leadsTo_Trans]) 1);
 qed "stable_completion";