New miniscoping rules ball_triv and bex_triv
authorpaulson
Fri, 06 Jun 1997 10:20:38 +0200
changeset 3420 02dc9c5b035f
parent 3419 9092b79d86d5
child 3421 be777156c7e9
New miniscoping rules ball_triv and bex_triv
src/HOL/Set.ML
--- a/src/HOL/Set.ML	Fri Jun 06 10:19:53 1997 +0200
+++ b/src/HOL/Set.ML	Fri Jun 06 10:20:38 1997 +0200
@@ -80,17 +80,17 @@
 AddIs  [bexI];
 AddSEs [bexE];
 
-(*Trival rewrite rule;   (! x:A.P)=P holds only if A is nonempty!*)
-goalw Set.thy [Ball_def] "(! x:A. True) = True";
-by (Simp_tac 1);
-qed "ball_True";
+(*Trival rewrite rule*)
+goal Set.thy "(! x:A.P) = ((? x. x:A) --> P)";
+by (simp_tac (!simpset addsimps [Ball_def]) 1);
+qed "ball_triv";
 
 (*Dual form for existentials*)
-goalw Set.thy [Bex_def] "(? x:A. False) = False";
-by (Simp_tac 1);
-qed "bex_False";
+goal Set.thy "(? x:A.P) = ((? x. x:A) & P)";
+by (simp_tac (!simpset addsimps [Bex_def]) 1);
+qed "bex_triv";
 
-Addsimps [ball_True, bex_False];
+Addsimps [ball_triv, bex_triv];
 
 (** Congruence rules **)
 
@@ -234,18 +234,6 @@
 qed "bex_empty";
 Addsimps [ball_empty, bex_empty];
 
-goalw Set.thy [Ball_def] "(!x:A.False) = (A = {})";
-by(Blast_tac 1);
-qed "ball_False";
-Addsimps [ball_False];
-
-(* The dual is probably not helpful:
-goal Set.thy "(? x:A.True) = (A ~= {})";
-by(Blast_tac 1);
-qed "bex_True";
-Addsimps [bex_True];
-*)
-
 
 section "The Powerset operator -- Pow";