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 448052108763f298d
parent 44802 c92df8144681
child 44806 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
     1.1 --- a/src/HOL/Tools/Quotient/quotient_tacs.ML	Wed Jul 20 13:29:54 2011 +0200
     1.2 +++ b/src/HOL/Tools/Quotient/quotient_tacs.ML	Wed Jul 20 16:14:49 2011 +0200
     1.3 @@ -286,9 +286,8 @@
     1.4  fun rep_abs_rsp_tac ctxt =
     1.5    SUBGOAL (fn (goal, i) =>
     1.6      (case try bare_concl goal of
     1.7 -      SOME (rel $ _ $ (rep $ (Bound _ $ _))) => no_tac
     1.8 -    | SOME (rel $ _ $ (rep $ (abs $ _))) =>
     1.9 -        let
    1.10 +      SOME (rel $ _ $ (rep $ (abs $ _))) =>
    1.11 +        (let
    1.12            val thy = Proof_Context.theory_of ctxt;
    1.13            val (ty_a, ty_b) = dest_funT (fastype_of abs);
    1.14            val ty_inst = map (SOME o (ctyp_of thy)) [ty_a, ty_b];
    1.15 @@ -300,10 +299,10 @@
    1.16                | NONE => no_tac)
    1.17            | NONE => no_tac
    1.18          end
    1.19 +        handle TERM _ => no_tac)
    1.20      | _ => no_tac))
    1.21  
    1.22  
    1.23 -
    1.24  (* Injection means to prove that the regularized theorem implies
    1.25     the abs/rep injected one.
    1.26