src/HOL/ex/PiSets.ML
changeset 11395 2eeaa1077b73
parent 10834 a7897aebbffc
--- a/src/HOL/ex/PiSets.ML	Tue Jul 03 15:28:24 2001 +0200
+++ b/src/HOL/ex/PiSets.ML	Tue Jul 03 15:29:17 2001 +0200
@@ -8,12 +8,11 @@
 (*** Bijection between Pi in terms of => and Pi in terms of Sigma ***)
 Goal "f: Pi A B ==> PiBij A B f <= Sigma A B";
 by (auto_tac (claset(),
-	      simpset() addsimps [PiBij_def,Pi_def,restrict_apply1]));
+	      simpset() addsimps [PiBij_def,Pi_def]));
 qed "PiBij_subset_Sigma";
 
 Goal "f: Pi A B ==> (! x: A. (?! y. (x, y): (PiBij A B f)))";
-by (auto_tac (claset(),
-	      simpset() addsimps [PiBij_def,restrict_apply1]));
+by (auto_tac (claset(), simpset() addsimps [PiBij_def]));
 qed "PiBij_unique";
 
 Goal "f: Pi A B ==> PiBij A B f : Graph A B";
@@ -31,51 +30,38 @@
 by (rtac Pi_extensionality 1);			
 by (assume_tac 1);
 by (assume_tac 1);
-by (rotate_tac 1 1);
-by (asm_full_simp_tac (simpset() addsimps [PiBij_def,restrict_apply1]) 1);
+by (asm_full_simp_tac (simpset() addsimps [PiBij_def]) 1);
 by (Blast_tac 1);
 qed "inj_PiBij";
 
 
+Goal "x \\<in> Graph A B \\<Longrightarrow> (lam a:A. SOME y. (a, y) \\<in> x) \\<in> Pi A B";
+by (rtac restrictI 1);
+by (res_inst_tac [("P", "%xa. (a, xa) : x")] ex1E 1);
+ by (force_tac (claset(), simpset() addsimps [Graph_def]) 1);
+by (full_simp_tac (simpset() addsimps [Graph_def]) 1);
+by (stac some_equality 1);
+  by (assume_tac 1);
+ by (Blast_tac 1);
+by (Blast_tac 1);
+qed "in_Graph_imp_in_Pi";
 
 Goal "PiBij A B ` (Pi A B) = Graph A B";
 by (rtac equalityI 1);
-by (force_tac (claset(), simpset() addsimps [image_def,PiBij_in_Graph]) 1);
+by (force_tac (claset(), simpset() addsimps [PiBij_in_Graph]) 1);
 by (rtac subsetI 1);
-by (asm_full_simp_tac (simpset() addsimps [image_def]) 1);
-by (res_inst_tac [("x","lam a: A. @ y. (a, y): x")] bexI 1);
- by (rtac restrictI 2);
- by (res_inst_tac [("P", "%xa. (a, xa) : x")] ex1E 2);
-  by (force_tac (claset(), simpset() addsimps [Graph_def]) 2);
- by (full_simp_tac (simpset() addsimps [Graph_def]) 2);
-  by (stac some_equality 2);
-   by (assume_tac 2);
-  by (Blast_tac 2);
- by (Blast_tac 2);
+by (rtac image_eqI 1); 
+by (etac in_Graph_imp_in_Pi 2); 
 (* x = PiBij A B (lam a:A. @ y. (a, y) : x) *)
-by (full_simp_tac (simpset() addsimps [PiBij_def,Graph_def]) 1);
-by (stac restrict_apply1 1);
- by (rtac restrictI 1);
- by (blast_tac (claset() addSDs [[some_eq_ex, ex1_implies_ex] MRS iffD2]) 1);
-(** LEVEL 17 **)
-by (rtac equalityI 1);
-by (rtac subsetI 1);
-by (split_all_tac 1);
-by (subgoal_tac "a: A" 1);
-by (Blast_tac 2);
-by (asm_full_simp_tac (simpset() addsimps [restrict_apply1]) 1);
-(*Blast_tac: PROOF FAILED for depth 5*)
-by (fast_tac (claset() addSIs [some1_equality RS sym]) 1);
-(* {(xa,y). xa : A & y = (lam a:A. @ y. (a, y) : x) xa} <= x   *)
-by (Clarify_tac 1);
-by (asm_full_simp_tac (simpset() addsimps [restrict_apply1]) 1);
+by (asm_simp_tac (simpset() addsimps [in_Graph_imp_in_Pi, PiBij_def]) 1);
+by (auto_tac (claset(), simpset() addsimps [some1_equality, Graph_def])); 
 by (fast_tac (claset() addIs [someI2]) 1);
 qed "surj_PiBij";
 
 Goal "f: Pi A B ==> \
 \     (lam y: Graph A B. (Inv (Pi A B)(PiBij A B)) y)(PiBij A B f) = f";
-by (asm_simp_tac
-    (simpset() addsimps [Inv_f_f, PiBij_func, inj_PiBij, surj_PiBij]) 1);
+by (asm_simp_tac (simpset() addsimps [Inv_f_f, PiBij_in_Graph, PiBij_func, 
+                                      inj_PiBij, surj_PiBij]) 1);
 qed "PiBij_bij1";
 
 Goal "[| f: Graph A B  |] ==> \
@@ -84,4 +70,3 @@
 by (asm_full_simp_tac (simpset() addsimps [surj_PiBij]) 1);
 by (assume_tac 1);
 qed "PiBij_bij2";
-