--- 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";
-