src/HOL/Tools/Quotient/quotient_tacs.ML
changeset 51717 9e7d1c139569
parent 47308 9caab698dbe4
child 52230 1105b3b5aa77
--- a/src/HOL/Tools/Quotient/quotient_tacs.ML	Tue Apr 16 17:54:14 2013 +0200
+++ b/src/HOL/Tools/Quotient/quotient_tacs.ML	Thu Apr 18 17:07:01 2013 +0200
@@ -32,8 +32,8 @@
 
 (* Since HOL_basic_ss is too "big" for us, we *)
 (* need to set up our own minimal simpset.    *)
-fun mk_minimal_ss ctxt =
-  Simplifier.context ctxt empty_ss
+fun mk_minimal_simpset ctxt =
+  empty_simpset ctxt
   |> Simplifier.set_subgoaler asm_simp_tac
   |> Simplifier.set_mksimps (mksimps [])
 
@@ -57,16 +57,14 @@
 fun equiv_tac ctxt =
   REPEAT_ALL_NEW (resolve_tac (Quotient_Info.equiv_rules ctxt))
 
-fun equiv_solver_tac ss = equiv_tac (Simplifier.the_context ss)
-val equiv_solver = mk_solver "Equivalence goal solver" equiv_solver_tac
+val equiv_solver = mk_solver "Equivalence goal solver" equiv_tac
 
 fun quotient_tac ctxt =
   (REPEAT_ALL_NEW (FIRST'
     [rtac @{thm identity_quotient3},
      resolve_tac (Quotient_Info.quotient_rules ctxt)]))
 
-fun quotient_solver_tac ss = quotient_tac (Simplifier.the_context ss)
-val quotient_solver = mk_solver "Quotient goal solver" quotient_solver_tac
+val quotient_solver = mk_solver "Quotient goal solver" quotient_tac
 
 fun solve_quotient_assm ctxt thm =
   case Seq.pull (quotient_tac ctxt 1 thm) of
@@ -113,21 +111,17 @@
         | SOME inst2 => try (Drule.instantiate_normalize inst2) thm'))
   end
 
-fun ball_bex_range_simproc ss redex =
-  let
-    val ctxt = Simplifier.the_context ss
-  in
-    case redex of
-      (Const (@{const_name "Ball"}, _) $ (Const (@{const_name "Respects"}, _) $
-        (Const (@{const_name "fun_rel"}, _) $ R1 $ R2)) $ _) =>
-          calculate_inst ctxt @{thm ball_reg_eqv_range[THEN eq_reflection]} redex R1 R2
+fun ball_bex_range_simproc ctxt redex =
+  case redex of
+    (Const (@{const_name "Ball"}, _) $ (Const (@{const_name "Respects"}, _) $
+      (Const (@{const_name "fun_rel"}, _) $ R1 $ R2)) $ _) =>
+        calculate_inst 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_inst ctxt @{thm bex_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_inst ctxt @{thm bex_reg_eqv_range[THEN eq_reflection]} redex R1 R2
 
-    | _ => NONE
-  end
+  | _ => NONE
 
 (* Regularize works as follows:
 
@@ -162,9 +156,9 @@
     val ball_pat = @{term "Ball (Respects (R1 ===> R2)) P"}
     val bex_pat = @{term "Bex (Respects (R1 ===> R2)) P"}
     val simproc =
-      Simplifier.simproc_global_i thy "" [ball_pat, bex_pat] (K (ball_bex_range_simproc))
+      Simplifier.simproc_global_i thy "" [ball_pat, bex_pat] ball_bex_range_simproc
     val simpset =
-      mk_minimal_ss ctxt
+      mk_minimal_simpset ctxt
       addsimps @{thms ball_reg_eqv bex_reg_eqv babs_reg_eqv babs_simp}
       addsimprocs [simproc]
       addSolver equiv_solver addSolver quotient_solver
@@ -531,12 +525,12 @@
     val thms =
       @{thms Quotient3_abs_rep Quotient3_rel_rep babs_prs all_prs ex_prs ex1_prs} @ ids @ prs @ defs
 
-    val ss = (mk_minimal_ss lthy) addsimps thms addSolver quotient_solver
+    val simpset = (mk_minimal_simpset lthy) addsimps thms addSolver quotient_solver
   in
     EVERY' [
       map_fun_tac lthy,
       lambda_prs_tac lthy,
-      simp_tac ss,
+      simp_tac simpset,
       TRY o rtac refl]
   end
 
@@ -638,9 +632,9 @@
 
 fun descend_procedure_tac ctxt simps =
   let
-    val ss = (mk_minimal_ss ctxt) addsimps (simps @ default_unfolds)
+    val simpset = (mk_minimal_simpset ctxt) addsimps (simps @ default_unfolds)
   in
-    full_simp_tac ss
+    full_simp_tac simpset
     THEN' Object_Logic.full_atomize_tac
     THEN' gen_frees_tac ctxt
     THEN' SUBGOAL (fn (goal, i) =>
@@ -688,9 +682,9 @@
 
 fun partiality_descend_procedure_tac ctxt simps =
   let
-    val ss = (mk_minimal_ss ctxt) addsimps (simps @ default_unfolds)
+    val simpset = (mk_minimal_simpset ctxt) addsimps (simps @ default_unfolds)
   in
-    full_simp_tac ss
+    full_simp_tac simpset
     THEN' Object_Logic.full_atomize_tac
     THEN' gen_frees_tac ctxt
     THEN' SUBGOAL (fn (goal, i) =>
@@ -723,9 +717,9 @@
 (* the tactic leaves three subgoals to be proved *)
 fun lift_procedure_tac ctxt simps rthm =
   let
-    val ss = (mk_minimal_ss ctxt) addsimps (simps @ default_unfolds)
+    val simpset = (mk_minimal_simpset ctxt) addsimps (simps @ default_unfolds)
   in
-    full_simp_tac ss
+    full_simp_tac simpset
     THEN' Object_Logic.full_atomize_tac
     THEN' gen_frees_tac ctxt
     THEN' SUBGOAL (fn (goal, i) =>
@@ -733,7 +727,7 @@
         (* full_atomize_tac contracts eta redexes,
            so we do it also in the original theorem *)
         val rthm' =
-          rthm |> full_simplify ss
+          rthm |> full_simplify simpset
                |> Drule.eta_contraction_rule
                |> Thm.forall_intr_frees
                |> atomize_thm