Quotient Package: handle Bound variables in rep_abs_rsp_tac not only at top-level of the goal
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Wed, 20 Jul 2011 16:14:49 +0200
changeset 43934 2108763f298d
parent 43931 c92df8144681
child 43935 aa04d1e1e2cc
Quotient Package: handle Bound variables in rep_abs_rsp_tac not only at top-level of the goal
src/HOL/Tools/Quotient/quotient_tacs.ML
--- a/src/HOL/Tools/Quotient/quotient_tacs.ML	Wed Jul 20 13:29:54 2011 +0200
+++ b/src/HOL/Tools/Quotient/quotient_tacs.ML	Wed Jul 20 16:14:49 2011 +0200
@@ -286,9 +286,8 @@
 fun rep_abs_rsp_tac ctxt =
   SUBGOAL (fn (goal, i) =>
     (case try bare_concl goal of
-      SOME (rel $ _ $ (rep $ (Bound _ $ _))) => no_tac
-    | SOME (rel $ _ $ (rep $ (abs $ _))) =>
-        let
+      SOME (rel $ _ $ (rep $ (abs $ _))) =>
+        (let
           val thy = Proof_Context.theory_of ctxt;
           val (ty_a, ty_b) = dest_funT (fastype_of abs);
           val ty_inst = map (SOME o (ctyp_of thy)) [ty_a, ty_b];
@@ -300,10 +299,10 @@
               | NONE => no_tac)
           | NONE => no_tac
         end
+        handle TERM _ => no_tac)
     | _ => no_tac))
 
 
-
 (* Injection means to prove that the regularized theorem implies
    the abs/rep injected one.