tuning
authorblanchet
Thu, 13 Mar 2014 13:18:14 +0100
changeset 56101 6d9fe46429e6
parent 56100 0dc5f68a7802
child 56102 439dda276b3f
tuning
src/HOL/SMT2.thy
src/HOL/Tools/SMT2/z3_new_interface.ML
--- a/src/HOL/SMT2.thy	Thu Mar 13 13:18:14 2014 +0100
+++ b/src/HOL/SMT2.thy	Thu Mar 13 13:18:14 2014 +0100
@@ -93,6 +93,21 @@
 definition z3mod :: "int \<Rightarrow> int \<Rightarrow> int" where
   "z3mod k l = (if 0 \<le> l then k mod l else k mod (-l))"
 
+lemma div_as_z3div:
+  "\<forall>k l. k div l = (
+    if k = 0 \<or> l = 0 then 0
+    else if (0 < k & 0 < l) \<or> (k < 0 & 0 < l) then z3div k l
+    else z3div (-k) (-l))"
+  by (simp add: z3div_def)
+
+lemma mod_as_z3mod:
+  "\<forall>k l. k mod l = (
+    if l = 0 then k
+    else if k = 0 then 0
+    else if (0 < k & 0 < l) \<or> (k < 0 & 0 < l) then z3mod k l
+    else - z3mod (-k) (-l))"
+  by (simp add: z3mod_def)
+
 
 subsection {* Setup *}
 
--- a/src/HOL/Tools/SMT2/z3_new_interface.ML	Thu Mar 13 13:18:14 2014 +0100
+++ b/src/HOL/Tools/SMT2/z3_new_interface.ML	Thu Mar 13 13:18:14 2014 +0100
@@ -42,27 +42,12 @@
     | is_div_mod @{const mod (int)} = true
     | is_div_mod _ = false
 
-  val div_as_z3div = @{lemma
-    "ALL k l. k div l = (
-      if k = 0 | l = 0 then 0
-      else if (0 < k & 0 < l) | (k < 0 & 0 < l) then z3div k l
-      else z3div (-k) (-l))"
-    by (simp add: SMT2.z3div_def)}
-
-  val mod_as_z3mod = @{lemma
-    "ALL k l. k mod l = (
-      if l = 0 then k
-      else if k = 0 then 0
-      else if (0 < k & 0 < l) | (k < 0 & 0 < l) then z3mod k l
-      else - z3mod (-k) (-l))"
-    by (simp add: z3mod_def)}
-
   val have_int_div_mod =
     exists (Term.exists_subterm is_div_mod o Thm.prop_of)
 
   fun add_div_mod _ (thms, extra_thms) =
     if have_int_div_mod thms orelse have_int_div_mod extra_thms then
-      (thms, div_as_z3div :: mod_as_z3mod :: extra_thms)
+      (thms, @{thms div_as_z3div mod_as_z3mod} @ extra_thms)
     else (thms, extra_thms)
 
   val setup_builtins =