src/HOL/SMT/Examples/cert/z3_arith_quant_13.proof
author boehmes
Thu, 03 Dec 2009 15:56:06 +0100
changeset 34010 ac78f5cdc430
parent 33010 39f73a59e855
permissions -rw-r--r--
faster preprocessing: before applying a step, test if it is applicable (normalization of binders, unfolding of abs/min/max definitions, lambda lifting, explicit application, monomorphization), custom-made (top-down) atomize_conv, store predicate and function symbols in a table instead of a list for faster lookup, updated certificates
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
#4 := 0::int
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     3
#5 := (:var 0 int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     4
#48 := (<= #5 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     5
#49 := (not #48)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     6
#45 := (>= #5 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     7
#44 := (not #45)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     8
#52 := (or #44 #49)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
     9
#55 := (forall (vars (?x1 int)) #52)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    10
#86 := (not #55)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    11
#604 := (<= 0::int 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    12
#264 := (not #604)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    13
#269 := (>= 0::int 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    14
#605 := (not #269)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    15
#265 := (or #605 #264)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    16
#588 := (or #86 #265)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    17
#584 := (iff #588 #86)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    18
#311 := (or #86 false)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    19
#314 := (iff #311 #86)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    20
#208 := [rewrite]: #314
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    21
#312 := (iff #588 #311)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    22
#599 := (iff #265 false)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    23
#598 := (or false false)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    24
#241 := (iff #598 false)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    25
#601 := [rewrite]: #241
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    26
#600 := (iff #265 #598)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    27
#597 := (iff #264 false)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    28
#1 := true
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    29
#590 := (not true)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    30
#255 := (iff #590 false)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    31
#256 := [rewrite]: #255
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    32
#596 := (iff #264 #590)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    33
#594 := (iff #604 true)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    34
#595 := [rewrite]: #594
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    35
#591 := [monotonicity #595]: #596
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    36
#235 := [trans #591 #256]: #597
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    37
#592 := (iff #605 false)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    38
#253 := (iff #605 #590)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    39
#606 := (iff #269 true)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    40
#249 := [rewrite]: #606
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    41
#254 := [monotonicity #249]: #253
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    42
#593 := [trans #254 #256]: #592
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    43
#240 := [monotonicity #593 #235]: #600
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    44
#602 := [trans #240 #601]: #599
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    45
#313 := [monotonicity #602]: #312
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    46
#585 := [trans #313 #208]: #584
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    47
#589 := [quant-inst]: #588
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    48
#307 := [mp #589 #585]: #86
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    49
decl z3name!0 :: bool
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    50
#83 := z3name!0
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    51
#12 := 3::int
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    52
#32 := -1::int
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    53
#92 := (ite z3name!0 -1::int 3::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    54
#290 := (= #92 3::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    55
#610 := (not #290)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    56
#607 := (>= #92 3::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    57
#609 := (not #607)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    58
#95 := (<= #92 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    59
#58 := (ite #55 -1::int 3::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    60
#64 := (<= #58 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    61
#96 := (~ #64 #95)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    62
#93 := (= #58 #92)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    63
#90 := (~ #55 z3name!0)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    64
#87 := (or z3name!0 #86)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    65
#84 := (not z3name!0)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    66
#85 := (or #84 #55)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    67
#88 := (and #85 #87)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    68
#89 := [intro-def]: #88
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    69
#91 := [apply-def #89]: #90
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    70
#94 := [monotonicity #91]: #93
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    71
#97 := [monotonicity #94]: #96
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    72
#10 := 1::int
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    73
#11 := (- 1::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    74
#7 := (< 0::int #5)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    75
#6 := (< #5 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    76
#8 := (or #6 #7)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    77
#9 := (forall (vars (?x1 int)) #8)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    78
#13 := (ite #9 #11 3::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    79
#14 := (< 0::int #13)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    80
#15 := (not #14)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    81
#77 := (iff #15 #64)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    82
#35 := (ite #9 -1::int 3::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    83
#38 := (< 0::int #35)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    84
#41 := (not #38)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    85
#75 := (iff #41 #64)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    86
#65 := (not #64)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    87
#70 := (not #65)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    88
#73 := (iff #70 #64)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    89
#74 := [rewrite]: #73
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    90
#71 := (iff #41 #70)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    91
#68 := (iff #38 #65)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    92
#61 := (< 0::int #58)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    93
#66 := (iff #61 #65)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    94
#67 := [rewrite]: #66
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    95
#62 := (iff #38 #61)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    96
#59 := (= #35 #58)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    97
#56 := (iff #9 #55)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    98
#53 := (iff #8 #52)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
    99
#50 := (iff #7 #49)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   100
#51 := [rewrite]: #50
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   101
#46 := (iff #6 #44)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   102
#47 := [rewrite]: #46
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   103
#54 := [monotonicity #47 #51]: #53
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   104
#57 := [quant-intro #54]: #56
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   105
#60 := [monotonicity #57]: #59
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   106
#63 := [monotonicity #60]: #62
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   107
#69 := [trans #63 #67]: #68
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   108
#72 := [monotonicity #69]: #71
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   109
#76 := [trans #72 #74]: #75
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   110
#42 := (iff #15 #41)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   111
#39 := (iff #14 #38)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   112
#36 := (= #13 #35)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   113
#33 := (= #11 -1::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   114
#34 := [rewrite]: #33
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   115
#37 := [monotonicity #34]: #36
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   116
#40 := [monotonicity #37]: #39
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   117
#43 := [monotonicity #40]: #42
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   118
#78 := [trans #43 #76]: #77
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   119
#31 := [asserted]: #15
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   120
#79 := [mp #31 #78]: #64
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   121
#126 := [mp~ #79 #97]: #95
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   122
#266 := (not #95)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   123
#396 := (or #609 #266)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   124
#603 := [th-lemma]: #396
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   125
#277 := [unit-resolution #603 #126]: #609
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   126
#278 := [hypothesis]: #290
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   127
#611 := (or #610 #607)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   128
#612 := [th-lemma]: #611
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   129
#613 := [unit-resolution #612 #278 #277]: false
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   130
#608 := [lemma #613]: #610
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   131
#289 := (or z3name!0 #290)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   132
#293 := [def-axiom]: #289
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   133
#308 := [unit-resolution #293 #608]: z3name!0
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   134
#129 := (or #55 #84)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   135
decl ?x1!1 :: int
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   136
#108 := ?x1!1
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   137
#111 := (>= ?x1!1 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   138
#112 := (not #111)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   139
#109 := (<= ?x1!1 0::int)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   140
#110 := (not #109)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   141
#132 := (or #110 #112)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   142
#135 := (not #132)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   143
#138 := (or z3name!0 #135)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   144
#141 := (and #129 #138)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   145
#113 := (or #112 #110)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   146
#114 := (not #113)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   147
#119 := (or z3name!0 #114)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   148
#122 := (and #85 #119)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   149
#142 := (iff #122 #141)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   150
#139 := (iff #119 #138)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   151
#136 := (iff #114 #135)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   152
#133 := (iff #113 #132)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   153
#134 := [rewrite]: #133
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   154
#137 := [monotonicity #134]: #136
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   155
#140 := [monotonicity #137]: #139
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   156
#130 := (iff #85 #129)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   157
#131 := [rewrite]: #130
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   158
#143 := [monotonicity #131 #140]: #142
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   159
#123 := (~ #88 #122)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   160
#120 := (~ #87 #119)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   161
#115 := (~ #86 #114)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   162
#116 := [sk]: #115
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   163
#106 := (~ z3name!0 z3name!0)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   164
#107 := [refl]: #106
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   165
#121 := [monotonicity #107 #116]: #120
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   166
#104 := (~ #85 #85)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   167
#102 := (~ #55 #55)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   168
#100 := (~ #52 #52)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   169
#101 := [refl]: #100
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   170
#103 := [nnf-pos #101]: #102
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   171
#98 := (~ #84 #84)
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   172
#99 := [refl]: #98
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   173
#105 := [monotonicity #99 #103]: #104
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   174
#124 := [monotonicity #105 #121]: #123
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   175
#125 := [mp~ #89 #124]: #122
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   176
#127 := [mp #125 #143]: #141
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   177
#128 := [and-elim #127]: #129
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   178
#582 := [unit-resolution #128 #308]: #55
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   179
[unit-resolution #582 #307]: false
39f73a59e855 added proof reconstructon for Z3,
boehmes
parents:
diff changeset
   180
unsat