Added some simplifications for ? x.
authornipkow
Sun, 29 Jan 1995 14:02:17 +0100
changeset 204 21c405b4039f
parent 203 d465d3be2744
child 205 ccbbe1264c0f
Added some simplifications for ? x.
simpdata.ML
--- a/simpdata.ML	Thu Jan 26 10:41:21 1995 +0100
+++ b/simpdata.ML	Sun Jan 29 14:02:17 1995 +0100
@@ -59,7 +59,7 @@
    "(P & False) = False", "(False & P) = False", "(P & P) = P",
    "(P | True) = True", "(True | P) = True", 
    "(P | False) = P", "(False | P) = P", "(P | P) = P",
-   "(!x.P) = P", "(? x.P) = P", "(? x. x=t & P) = P",
+   "(!x.P) = P", "(? x.P) = P", "? x. x=t", "(? x. x=t & P(x)) = P(t)",
    "(P|Q --> R) = ((P-->R)&(Q-->R))" ];
 
 in
@@ -124,7 +124,8 @@
         (fn prems => [REPEAT(resolve_tac prems 1)])
   in equal_intr lemma1 lemma2 end;
 
-(** '&' congruence rule: not included by default! *)
+(* '&' congruence rule: not included by default!
+   May slow rewrite proofs down by as much as 50% *)
 
 val conj_cong = impI RSN
     (2, prove_goal HOL.thy "(P=P')--> (P'--> (Q=Q'))--> ((P&Q) = (P'&Q'))"