src/HOL/SMT_Examples/SMT_Tests.thy
changeset 48069 e9b2782c4f99
parent 47155 ade3fc826af3
child 49834 b27bbb021df1
--- a/src/HOL/SMT_Examples/SMT_Tests.thy	Sun Jun 03 15:49:55 2012 +0200
+++ b/src/HOL/SMT_Examples/SMT_Tests.thy	Mon Jun 04 09:07:23 2012 +0200
@@ -315,6 +315,7 @@
   "(3::nat) div 3 = 1"
   "(x::nat) div 3 \<le> x"
   "(x div 3 = x) = (x = 0)"
+  using [[z3_with_extensions]]
   by smt+
 
 lemma
@@ -329,11 +330,13 @@
   "(3::nat) mod 3 = 0"
   "x mod 3 < 3"
   "(x mod 3 = x) = (x < 3)"
+  using [[z3_with_extensions]]
   by smt+
 
 lemma
   "(x::nat) = x div 1 * 1 + x mod 1"
   "x = x div 3 * 3 + x mod 3"
+  using [[z3_with_extensions]]
   by smt+
 
 lemma
@@ -447,6 +450,7 @@
   "(-1::int) div -3 = 0"
   "(-3::int) div -3 = 1"
   "(-5::int) div -3 = 1"
+  using [[z3_with_extensions]]
   by smt+
 
 lemma
@@ -476,11 +480,13 @@
   "(-5::int) mod -3 = -2"
   "x mod 3 < 3"
   "(x mod 3 = x) \<longrightarrow> (x < 3)"
+  using [[z3_with_extensions]]
   by smt+
 
 lemma
   "(x::int) = x div 1 * 1 + x mod 1"
   "x = x div 3 * 3 + x mod 3"
+  using [[z3_with_extensions]]
   by smt+
 
 lemma
@@ -585,6 +591,7 @@
   "(x::real) / 1 = x"
   "x > 0 \<longrightarrow> x / 3 < x"
   "x < 0 \<longrightarrow> x / 3 > x"
+  using [[z3_with_extensions]]
   by smt+
 
 lemma
@@ -592,6 +599,7 @@
   "(x * 3) / 3 = x"
   "x > 0 \<longrightarrow> 2 * x / 3 < x"
   "x < 0 \<longrightarrow> 2 * x / 3 > x"
+  using [[z3_with_extensions]]
   by smt+
 
 lemma
@@ -793,7 +801,7 @@
   "(fst (x, y) = snd (x, y)) = (x = y)"
   "(fst p = snd p) = (p = (snd p, fst p))"
   using fst_conv snd_conv pair_collapse
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   by smt+
 
 lemma
@@ -807,14 +815,14 @@
   "hd (tl [x, y, z]) = y"
   "tl (tl [x, y, z]) = [z]"
   using hd.simps tl.simps(2)
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   by smt+
 
 lemma
   "fst (hd [(a, b)]) = a"
   "snd (hd [(a, b)]) = b"
   using fst_conv snd_conv pair_collapse hd.simps tl.simps(2)
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   by smt+
 
 
@@ -826,7 +834,7 @@
   "cx p1 \<noteq> cx p2 \<longrightarrow> p1 \<noteq> p2"
   "cy p1 \<noteq> cy p2 \<longrightarrow> p1 \<noteq> p2"
   using point.simps
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   using [[z3_options="AUTO_CONFIG=false"]]
   by smt+
 
@@ -839,7 +847,7 @@
   "p = \<lparr> cx = 3, cy = 4 \<rparr> \<longrightarrow> p \<lparr> cx := 3 \<rparr> \<lparr> cy := 4 \<rparr> = p"
   "p = \<lparr> cx = 3, cy = 4 \<rparr> \<longrightarrow> p \<lparr> cy := 4 \<rparr> \<lparr> cx := 3 \<rparr> = p"
   using point.simps
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   using [[z3_options="AUTO_CONFIG=false"]]
   by smt+
 
@@ -848,7 +856,7 @@
   "cx (p \<lparr> cy := a \<rparr>) = cx p"
   "p \<lparr> cx := 3 \<rparr> \<lparr> cy := 4 \<rparr> = p \<lparr> cy := 4 \<rparr> \<lparr> cx := 3 \<rparr>"
   using point.simps
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   using [[z3_options="AUTO_CONFIG=false"]]
   by smt+
 
@@ -860,7 +868,7 @@
   "cy p1 \<noteq> cy p2 \<longrightarrow> p1 \<noteq> p2"
   "black p1 \<noteq> black p2 \<longrightarrow> p1 \<noteq> p2"
   using point.simps bw_point.simps
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   by smt+
 
 lemma
@@ -877,7 +885,7 @@
   "p = \<lparr> cx = 3, cy = 4, black = True \<rparr> \<longrightarrow>
      p \<lparr> black := True \<rparr> \<lparr> cx := 3 \<rparr> \<lparr> cy := 4 \<rparr> = p"
   using point.simps bw_point.simps
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   using [[z3_options="AUTO_CONFIG=false"]]
   by smt+
 
@@ -891,7 +899,7 @@
   "p \<lparr> cx := 3 \<rparr> \<lparr> cy := 4 \<rparr> \<lparr> black := True \<rparr> =
      p \<lparr> black := True \<rparr> \<lparr> cy := 4 \<rparr> \<lparr> cx := 3 \<rparr>"
   using point.simps bw_point.simps
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   using [[z3_options="AUTO_CONFIG=false"]]
   by smt
 
@@ -905,7 +913,7 @@
   "nplus n1 n1 = n2"
   "nplus n1 n2 = n3"
   using n1_def n2_def n3_def nplus_def
-  using [[smt_datatypes, smt_oracle]]
+  using [[smt_datatypes, smt_oracle, z3_with_extensions]]
   using [[z3_options="AUTO_CONFIG=false"]]
   by smt+