src/HOL/SMT/Examples/cert/z3_fol_02.proof
author boehmes
Tue, 20 Oct 2009 10:11:30 +0200
changeset 33010 39f73a59e855
permissions -rw-r--r--
added proof reconstructon for Z3, added certificates for simpler re-checking of proofs (no need to invoke external solvers), added examples and certificates for all examples, removed Unsynchronized.ref (in smt_normalize.ML)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
33010
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     1
#2 := false
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     2
decl up_1 :: (-> T1 T2 bool)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     3
#5 := (:var 0 T2)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     4
decl uf_3 :: T1
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     5
#11 := uf_3
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     6
#12 := (up_1 uf_3 #5)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     7
#560 := (pattern #12)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     8
#57 := (not #12)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     9
#561 := (forall (vars (?x3 T2)) (:pat #560) #57)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    10
decl uf_4 :: T2
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    11
#14 := uf_4
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    12
#15 := (up_1 uf_3 uf_4)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    13
decl uf_2 :: T1
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    14
#7 := uf_2
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    15
#136 := (= uf_2 uf_3)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    16
#543 := (iff #15 #136)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    17
#4 := (:var 1 T1)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    18
#6 := (up_1 #4 #5)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    19
#553 := (pattern #6)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    20
#8 := (= #4 uf_2)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    21
#9 := (iff #6 #8)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    22
#554 := (forall (vars (?x1 T1) (?x2 T2)) (:pat #553) #9)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    23
#10 := (forall (vars (?x1 T1) (?x2 T2)) #9)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    24
#557 := (iff #10 #554)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    25
#555 := (iff #9 #9)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    26
#556 := [refl]: #555
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    27
#558 := [quant-intro #556]: #557
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    28
#47 := (~ #10 #10)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    29
#45 := (~ #9 #9)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    30
#46 := [refl]: #45
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    31
#48 := [nnf-pos #46]: #47
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    32
#33 := [asserted]: #10
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    33
#49 := [mp~ #33 #48]: #10
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    34
#559 := [mp #49 #558]: #554
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    35
#227 := (not #554)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    36
#185 := (or #227 #543)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    37
#135 := (= uf_3 uf_2)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    38
#205 := (iff #15 #135)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    39
#528 := (or #227 #205)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    40
#190 := (iff #528 #185)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    41
#192 := (iff #185 #185)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    42
#530 := [rewrite]: #192
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    43
#201 := (iff #205 #543)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    44
#223 := (iff #135 #136)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    45
#137 := [rewrite]: #223
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    46
#544 := [monotonicity #137]: #201
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    47
#191 := [monotonicity #544]: #190
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    48
#531 := [trans #191 #530]: #190
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    49
#189 := [quant-inst]: #528
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    50
#532 := [mp #189 #531]: #185
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    51
#539 := [unit-resolution #532 #559]: #543
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    52
decl ?x3!0 :: T2
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    53
#50 := ?x3!0
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    54
#51 := (up_1 uf_3 ?x3!0)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    55
#224 := (iff #51 #136)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    56
#155 := (or #227 #224)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    57
#222 := (iff #51 #135)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    58
#228 := (or #227 #222)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    59
#229 := (iff #228 #155)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    60
#545 := (iff #155 #155)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    61
#547 := [rewrite]: #545
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    62
#215 := (iff #222 #224)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    63
#226 := [monotonicity #137]: #215
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    64
#208 := [monotonicity #226]: #229
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    65
#202 := [trans #208 #547]: #229
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    66
#225 := [quant-inst]: #228
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    67
#334 := [mp #225 #202]: #155
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    68
#537 := [unit-resolution #334 #559]: #224
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    69
#541 := (not #224)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    70
#527 := (or #541 #136)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    71
#63 := (not #15)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    72
#540 := [hypothesis]: #63
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    73
#68 := (or #15 #51)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    74
#60 := (forall (vars (?x3 T2)) #57)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    75
#69 := (or #63 #60)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    76
#76 := (and #68 #69)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    77
#70 := (and #69 #68)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    78
#77 := (iff #70 #76)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    79
#78 := [rewrite]: #77
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    80
#13 := (exists (vars (?x3 T2)) #12)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    81
#35 := (not #13)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    82
#36 := (iff #15 #35)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    83
#71 := (~ #36 #70)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    84
#61 := (~ #35 #60)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    85
#58 := (~ #57 #57)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    86
#59 := [refl]: #58
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    87
#62 := [nnf-neg #59]: #61
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    88
#54 := (not #35)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    89
#55 := (~ #54 #51)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    90
#42 := (~ #13 #51)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    91
#39 := [sk]: #42
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    92
#56 := [nnf-neg #39]: #55
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    93
#66 := (~ #15 #15)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    94
#67 := [refl]: #66
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    95
#64 := (~ #63 #63)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    96
#65 := [refl]: #64
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    97
#72 := [nnf-pos #65 #67 #56 #62]: #71
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    98
#16 := (iff #13 #15)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    99
#17 := (not #16)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   100
#37 := (iff #17 #36)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   101
#38 := [rewrite]: #37
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   102
#34 := [asserted]: #17
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   103
#41 := [mp #34 #38]: #36
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   104
#73 := [mp~ #41 #72]: #70
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   105
#74 := [mp #73 #78]: #76
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   106
#75 := [and-elim #74]: #68
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   107
#526 := [unit-resolution #75 #540]: #51
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   108
#549 := (not #51)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   109
#550 := (or #541 #549 #136)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   110
#551 := [def-axiom]: #550
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   111
#233 := [unit-resolution #551 #526]: #527
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   112
#249 := [unit-resolution #233 #537]: #136
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   113
#213 := (not #136)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   114
#533 := (not #543)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   115
#250 := (or #533 #213)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   116
#534 := (or #533 #15 #213)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   117
#529 := [def-axiom]: #534
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   118
#251 := [unit-resolution #529 #540]: #250
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   119
#237 := [unit-resolution #251 #249 #539]: false
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   120
#252 := [lemma #237]: #15
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   121
#566 := (or #63 #561)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   122
#567 := (iff #69 #566)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   123
#564 := (iff #60 #561)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   124
#562 := (iff #57 #57)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   125
#563 := [refl]: #562
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   126
#565 := [quant-intro #563]: #564
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   127
#568 := [monotonicity #565]: #567
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   128
#79 := [and-elim #74]: #69
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   129
#569 := [mp #79 #568]: #566
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   130
#535 := [unit-resolution #569 #252]: #561
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   131
#536 := (not #561)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   132
#538 := (or #536 #63)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   133
#176 := [quant-inst]: #538
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   134
[unit-resolution #176 #252 #535]: false
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   135
unsat