used eq_reflection not with OF, but directly in @{thm ...}
authorChristian Urban <urbanc@in.tum.de>
Mon, 21 Dec 2009 23:13:40 +0100
changeset 770 2d21fd8114af
parent 769 d89851ebac9b
child 771 b2231990b059
used eq_reflection not with OF, but directly in @{thm ...}
Quot/quotient_tacs.ML
--- a/Quot/quotient_tacs.ML	Mon Dec 21 23:01:58 2009 +0100
+++ b/Quot/quotient_tacs.ML	Mon Dec 21 23:13:40 2009 +0100
@@ -80,7 +80,7 @@
   val eqv_goal = HOLogic.mk_Trueprop 
                      (Const (@{const_name "equivp"}, eqv_ty) $ R2)  
   val eqv_prem = Goal.prove ctxt [] [] eqv_goal (fn _ => equiv_tac ctxt 1)
-  val thm = (@{thm eq_reflection} OF [ball_bex_thm OF [eqv_prem]])
+  val thm = ball_bex_thm OF [eqv_prem]
   val thmi = Drule.instantiate' [] [SOME (cterm_of thy R1)] thm
   val inst = matching_prs thy (term_of (Thm.lhs_of thmi)) redex
   val thm2 = Drule.instantiate inst thmi
@@ -98,11 +98,11 @@
  case redex of
     (Const (@{const_name "Ball"}, _) $ (Const (@{const_name "Respects"}, _) $ 
       (Const (@{const_name "fun_rel"}, _) $ R1 $ R2)) $ _) =>
-        calculate_instance ctxt @{thm ball_reg_eqv_range} redex R1 R2
+        calculate_instance ctxt @{thm ball_reg_eqv_range[THEN eq_reflection]} redex R1 R2
 
   | (Const (@{const_name "Bex"}, _) $ (Const (@{const_name "Respects"}, _) $ 
       (Const (@{const_name "fun_rel"}, _) $ R1 $ R2)) $ _) =>  
-        calculate_instance ctxt @{thm bex_reg_eqv_range} redex R1 R2
+        calculate_instance ctxt @{thm bex_reg_eqv_range[THEN eq_reflection]} redex R1 R2
   | _ => NONE
 end
 
@@ -456,8 +456,8 @@
        val (ty_c, ty_d) = dest_fun_type (fastype_of a2)
        val tyinst = map (SOME o (ctyp_of thy)) [ty_a, ty_b, ty_c, ty_d]
        val tinst = [NONE, NONE, SOME (cterm_of thy r1), NONE, SOME (cterm_of thy a2)]
-       val lpi = Drule.instantiate' tyinst tinst @{thm lambda_prs}
-       val te = @{thm eq_reflection} OF [solve_quotient_assm ctxt (solve_quotient_assm ctxt lpi)]
+       val lpi = Drule.instantiate' tyinst tinst @{thm lambda_prs[THEN eq_reflection]}
+       val te = solve_quotient_assm ctxt (solve_quotient_assm ctxt lpi)
        val ts = MetaSimplifier.rewrite_rule (id_simps_get ctxt) te
        val make_inst = if ty_c = ty_d then make_inst_id else make_inst
        val (insp, inst) = make_inst (term_of (Thm.lhs_of ts)) (term_of ctrm)