split_paired_Eps and lemmas
authorpaulson
Wed, 25 Aug 1999 10:53:19 +0200
changeset 7339 1b4d7a851b34
parent 7338 b275ae194e5a
child 7340 a22efb7a522b
split_paired_Eps and lemmas
src/HOL/Prod.ML
--- a/src/HOL/Prod.ML	Wed Aug 25 10:45:41 1999 +0200
+++ b/src/HOL/Prod.ML	Wed Aug 25 10:53:19 1999 +0200
@@ -111,11 +111,17 @@
 qed "split";
 Addsimps [split];
 
-Goal "split Pair p = p";
-by (pair_tac "p" 1);
+(*Subsumes the old split_Pair when f is the identity function*)
+Goal "split (%x y. f(x,y)) = f";
+by (rtac ext 1);
+by (pair_tac "x" 1);
 by (Simp_tac 1);
-qed "split_Pair";
-(*unused: val surjective_pairing2 = split_Pair RS sym;*)
+qed "split_Pair_apply";
+
+(*Can't be added to simpset: loops!*)
+Goal "(SOME x. P x) = (SOME (a,b). P(a,b))";
+by (simp_tac (simpset() addsimps [split_Pair_apply]) 1);
+qed "split_paired_Eps";
 
 Goal "!!s t. (s=t) = (fst(s)=fst(t) & snd(s)=snd(t))";
 by (split_all_tac 1);