rhs of eqn is only eta- but not beta-eta-contracted; hence the latter is performed explicitly if needed
authornipkow
Fri, 13 Mar 2015 16:09:55 +0100
changeset 59690 46b635624feb
parent 59689 7968c57ea240
child 59691 f6ff19188842
rhs of eqn is only eta- but not beta-eta-contracted; hence the latter is performed explicitly if needed
src/Pure/raw_simplifier.ML
--- a/src/Pure/raw_simplifier.ML	Fri Mar 13 12:58:49 2015 +0100
+++ b/src/Pure/raw_simplifier.ML	Fri Mar 13 16:09:55 2015 +0100
@@ -845,8 +845,15 @@
 fun check_conv ctxt msg thm thm' =
   let
     val thm'' = Thm.transitive thm thm' handle THM _ =>
-     Thm.transitive thm (Thm.transitive
-       (Thm.symmetric (Drule.beta_eta_conversion (Thm.lhs_of thm'))) thm')
+      let
+        val nthm' =
+          Thm.transitive (Thm.symmetric (Drule.beta_eta_conversion (Thm.lhs_of thm'))) thm'
+      in Thm.transitive thm nthm' handle THM _ =>
+           let
+             val nthm =
+               Thm.transitive thm (Drule.beta_eta_conversion (Thm.rhs_of thm))
+           in Thm.transitive nthm nthm' end
+      end
     val _ =
       if msg then cond_tracing ctxt (fn () => print_thm ctxt "SUCCEEDED" ("", thm'))
       else ();