added test cases with quantifier occurring in first-order term positions
authorboehmes
Mon, 21 Feb 2011 09:19:44 +0100
changeset 41786 a5899d0ce1a1
parent 41785 77dcc197df9a
child 41787 5acde4abb07b
added test cases with quantifier occurring in first-order term positions
src/HOL/SMT_Examples/SMT_Examples.certs
src/HOL/SMT_Examples/SMT_Examples.thy
--- a/src/HOL/SMT_Examples/SMT_Examples.certs	Mon Feb 21 09:14:48 2011 +0100
+++ b/src/HOL/SMT_Examples/SMT_Examples.certs	Mon Feb 21 09:19:44 2011 +0100
@@ -14908,3 +14908,113 @@
 #624 := [quant-inst #118]: #623
 [unit-resolution #624 #959 #430]: false
 unsat
+c2e9404480cb814492148c359fbbbb3b0e606571 54 0
+#2 := false
+#1 := true
+decl f1 :: S1
+#4 := f1
+decl f3 :: (-> S1 S1)
+decl f2 :: S1
+#5 := f2
+decl f4 :: (-> S2 S1)
+#8 := (:var 0 S2)
+#9 := (f4 #8)
+#10 := (= #9 f1)
+#11 := (exists (vars (?v0 S2)) #10)
+#12 := (ite #11 f1 f2)
+#13 := (f3 #12)
+#14 := (= #13 f1)
+#15 := (implies #14 true)
+#16 := (not #15)
+#69 := (iff #16 false)
+#64 := (not true)
+#67 := (iff #64 false)
+#68 := [rewrite]: #67
+#65 := (iff #16 #64)
+#62 := (iff #15 true)
+#37 := (= f1 #9)
+#40 := (exists (vars (?v0 S2)) #37)
+#43 := (ite #40 f1 f2)
+#46 := (f3 #43)
+#52 := (= f1 #46)
+#57 := (implies #52 true)
+#60 := (iff #57 true)
+#61 := [rewrite]: #60
+#58 := (iff #15 #57)
+#55 := (iff #14 #52)
+#49 := (= #46 f1)
+#53 := (iff #49 #52)
+#54 := [rewrite]: #53
+#50 := (iff #14 #49)
+#47 := (= #13 #46)
+#44 := (= #12 #43)
+#41 := (iff #11 #40)
+#38 := (iff #10 #37)
+#39 := [rewrite]: #38
+#42 := [quant-intro #39]: #41
+#45 := [monotonicity #42]: #44
+#48 := [monotonicity #45]: #47
+#51 := [monotonicity #48]: #50
+#56 := [trans #51 #54]: #55
+#59 := [monotonicity #56]: #58
+#63 := [trans #59 #61]: #62
+#66 := [monotonicity #63]: #65
+#70 := [trans #66 #68]: #69
+#36 := [asserted]: #16
+[mp #36 #70]: false
+unsat
+343488aeda93da0c02f8ac1558cbc54ab37a2bb9 54 0
+#2 := false
+#1 := true
+decl f1 :: S1
+#4 := f1
+decl f3 :: (-> S1 S1)
+decl f2 :: S1
+#5 := f2
+decl f4 :: (-> S2 S1)
+#8 := (:var 0 S2)
+#9 := (f4 #8)
+#10 := (= #9 f1)
+#11 := (forall (vars (?v0 S2)) #10)
+#12 := (ite #11 f1 f2)
+#13 := (f3 #12)
+#14 := (= #13 f1)
+#15 := (implies #14 true)
+#16 := (not #15)
+#69 := (iff #16 false)
+#64 := (not true)
+#67 := (iff #64 false)
+#68 := [rewrite]: #67
+#65 := (iff #16 #64)
+#62 := (iff #15 true)
+#37 := (= f1 #9)
+#40 := (forall (vars (?v0 S2)) #37)
+#43 := (ite #40 f1 f2)
+#46 := (f3 #43)
+#52 := (= f1 #46)
+#57 := (implies #52 true)
+#60 := (iff #57 true)
+#61 := [rewrite]: #60
+#58 := (iff #15 #57)
+#55 := (iff #14 #52)
+#49 := (= #46 f1)
+#53 := (iff #49 #52)
+#54 := [rewrite]: #53
+#50 := (iff #14 #49)
+#47 := (= #13 #46)
+#44 := (= #12 #43)
+#41 := (iff #11 #40)
+#38 := (iff #10 #37)
+#39 := [rewrite]: #38
+#42 := [quant-intro #39]: #41
+#45 := [monotonicity #42]: #44
+#48 := [monotonicity #45]: #47
+#51 := [monotonicity #48]: #50
+#56 := [trans #51 #54]: #55
+#59 := [monotonicity #56]: #58
+#63 := [trans #59 #61]: #62
+#66 := [monotonicity #63]: #65
+#70 := [trans #66 #68]: #69
+#36 := [asserted]: #16
+[mp #36 #70]: false
+unsat
--- a/src/HOL/SMT_Examples/SMT_Examples.thy	Mon Feb 21 09:14:48 2011 +0100
+++ b/src/HOL/SMT_Examples/SMT_Examples.thy	Mon Feb 21 09:19:44 2011 +0100
@@ -463,6 +463,10 @@
   using fun_upd_same fun_upd_apply
   by smt
 
+lemma
+  "f (\<exists>x. g x) \<Longrightarrow> True"
+  "f (\<forall>x. g x) \<Longrightarrow> True"
+  by smt+
 
 
 lemma "map (\<lambda>i::nat. i + 1) [0, 1] = [1, 2]" by (smt map.simps)