--- a/src/HOL/Product_Type.thy Sat Nov 17 17:42:19 2012 +0100
+++ b/src/HOL/Product_Type.thy Sat Nov 17 17:55:52 2012 +0100
@@ -407,7 +407,6 @@
ML {*
(* replace parameters of product type by individual component parameters *)
- val safe_full_simp_tac = generic_simp_tac true (true, false, false);
local (* filtering with exists_paired_all is an essential optimization *)
fun exists_paired_all (Const ("all", _) $ Abs (_, T, t)) =
can HOLogic.dest_prodT T orelse exists_paired_all t
@@ -423,7 +422,7 @@
val unsafe_split_all_tac = SUBGOAL (fn (t, i) =>
if exists_paired_all t then full_simp_tac ss i else no_tac);
fun split_all th =
- if exists_paired_all (Thm.prop_of th) then full_simplify ss th else th;
+ if exists_paired_all (Thm.prop_of th) then full_simplify ss th else th;
end;
*}
--- a/src/HOL/Tools/arith_data.ML Sat Nov 17 17:42:19 2012 +0100
+++ b/src/HOL/Tools/arith_data.ML Sat Nov 17 17:55:52 2012 +0100
@@ -73,7 +73,7 @@
val mk_plus = HOLogic.mk_binop @{const_name Groups.plus};
-fun mk_minus t =
+fun mk_minus t =
let val T = Term.fastype_of t
in Const (@{const_name Groups.uminus}, T --> T) $ t end;
@@ -112,11 +112,10 @@
fun simp_all_tac rules =
let val ss0 = HOL_ss addsimps rules
- val safe_simp_tac = generic_simp_tac true (false, false, false)
in fn ss => ALLGOALS (safe_simp_tac (Simplifier.inherit_context ss ss0)) end;
fun simplify_meta_eq rules =
let val ss0 = HOL_basic_ss addsimps rules |> Simplifier.add_eqcong @{thm eq_cong2}
- in fn ss => simplify (Simplifier.inherit_context ss ss0) o mk_meta_eq end
+ in fn ss => simplify (Simplifier.inherit_context ss ss0) o mk_meta_eq end;
end;
--- a/src/HOL/Word/WordBitwise.thy Sat Nov 17 17:42:19 2012 +0100
+++ b/src/HOL/Word/WordBitwise.thy Sat Nov 17 17:55:52 2012 +0100
@@ -597,10 +597,10 @@
no_split_ss addsimps @{thms xor3_simps carry_simps if_bool_simps}
])
-val tac = let
+val tac =
+ let
val (ss, sss) = expand_word_eq_sss;
- val st = generic_simp_tac true (true, false, false);
- in foldr1 (op THEN_ALL_NEW) ((CHANGED o st ss) :: map st sss) end;
+ in foldr1 (op THEN_ALL_NEW) ((CHANGED o safe_full_simp_tac ss) :: map safe_full_simp_tac sss) end;
end
--- a/src/Provers/clasimp.ML Sat Nov 17 17:42:19 2012 +0100
+++ b/src/Provers/clasimp.ML Sat Nov 17 17:55:52 2012 +0100
@@ -44,9 +44,6 @@
(* simp as classical wrapper *)
-(*not totally safe: may instantiate unknowns that appear also in other subgoals*)
-val safe_asm_full_simp_tac = Simplifier.generic_simp_tac true (true, true, true);
-
fun clasimp f name tac ctxt =
Classical.map_claset (fn cs => f (cs, (name, CHANGED o tac (simpset_of ctxt)))) ctxt;
--- a/src/Pure/simplifier.ML Sat Nov 17 17:42:19 2012 +0100
+++ b/src/Pure/simplifier.ML Sat Nov 17 17:55:52 2012 +0100
@@ -13,13 +13,16 @@
val global_simpset_of: theory -> simpset
val Addsimprocs: simproc list -> unit
val Delsimprocs: simproc list -> unit
- val generic_simp_tac: bool -> bool * bool * bool -> simpset -> int -> tactic
- val safe_asm_full_simp_tac: simpset -> int -> tactic
val simp_tac: simpset -> int -> tactic
val asm_simp_tac: simpset -> int -> tactic
val full_simp_tac: simpset -> int -> tactic
val asm_lr_simp_tac: simpset -> int -> tactic
val asm_full_simp_tac: simpset -> int -> tactic
+ val safe_simp_tac: simpset -> int -> tactic
+ val safe_asm_simp_tac: simpset -> int -> tactic
+ val safe_full_simp_tac: simpset -> int -> tactic
+ val safe_asm_lr_simp_tac: simpset -> int -> tactic
+ val safe_asm_full_simp_tac: simpset -> int -> tactic
val simplify: simpset -> thm -> thm
val asm_simplify: simpset -> thm -> thm
val full_simplify: simpset -> thm -> thm
@@ -266,6 +269,12 @@
val full_simp_tac = generic_simp_tac false (true, false, false);
val asm_lr_simp_tac = generic_simp_tac false (true, true, false);
val asm_full_simp_tac = generic_simp_tac false (true, true, true);
+
+(*not totally safe: may instantiate unknowns that appear also in other subgoals*)
+val safe_simp_tac = generic_simp_tac true (false, false, false);
+val safe_asm_simp_tac = generic_simp_tac true (false, true, false);
+val safe_full_simp_tac = generic_simp_tac true (true, false, false);
+val safe_asm_lr_simp_tac = generic_simp_tac true (true, true, false);
val safe_asm_full_simp_tac = generic_simp_tac true (true, true, true);