src/HOL/SMT/Examples/cert/z3_nat_arith_02.proof
changeset 33010 39f73a59e855
equal deleted inserted replaced
33008:b0ff69f0a248 33010:39f73a59e855
       
     1 #2 := false
       
     2 #23 := 3::int
       
     3 decl uf_2 :: (-> T1 int)
       
     4 decl uf_3 :: T1
       
     5 #21 := uf_3
       
     6 #22 := (uf_2 uf_3)
       
     7 #137 := (>= #22 3::int)
       
     8 #135 := (not #137)
       
     9 #24 := (< #22 3::int)
       
    10 #136 := (iff #24 #135)
       
    11 #138 := [rewrite]: #136
       
    12 #132 := [asserted]: #24
       
    13 #139 := [mp #132 #138]: #135
       
    14 #9 := 0::int
       
    15 decl uf_1 :: (-> int T1)
       
    16 #25 := 2::int
       
    17 #26 := (* 2::int #22)
       
    18 #27 := (uf_1 #26)
       
    19 #28 := (uf_2 #27)
       
    20 #297 := -1::int
       
    21 #633 := (* -1::int #28)
       
    22 #635 := (+ #26 #633)
       
    23 #278 := (>= #635 0::int)
       
    24 #291 := (= #635 0::int)
       
    25 #315 := (>= #26 0::int)
       
    26 #279 := (= #28 0::int)
       
    27 #627 := (not #279)
       
    28 #624 := (<= #28 0::int)
       
    29 #281 := (not #624)
       
    30 #29 := 7::int
       
    31 #143 := (>= #28 7::int)
       
    32 #30 := (< #28 7::int)
       
    33 #31 := (not #30)
       
    34 #150 := (iff #31 #143)
       
    35 #141 := (not #143)
       
    36 #145 := (not #141)
       
    37 #148 := (iff #145 #143)
       
    38 #149 := [rewrite]: #148
       
    39 #146 := (iff #31 #145)
       
    40 #142 := (iff #30 #141)
       
    41 #144 := [rewrite]: #142
       
    42 #147 := [monotonicity #144]: #146
       
    43 #151 := [trans #147 #149]: #150
       
    44 #133 := [asserted]: #31
       
    45 #152 := [mp #133 #151]: #143
       
    46 #618 := (or #281 #141)
       
    47 #265 := [th-lemma]: #618
       
    48 #266 := [unit-resolution #265 #152]: #281
       
    49 #625 := (or #627 #624)
       
    50 #628 := [th-lemma]: #625
       
    51 #614 := [unit-resolution #628 #266]: #627
       
    52 #10 := (:var 0 int)
       
    53 #12 := (uf_1 #10)
       
    54 #649 := (pattern #12)
       
    55 #73 := (>= #10 0::int)
       
    56 #13 := (uf_2 #12)
       
    57 #18 := (= #13 0::int)
       
    58 #121 := (or #18 #73)
       
    59 #656 := (forall (vars (?x3 int)) (:pat #649) #121)
       
    60 #126 := (forall (vars (?x3 int)) #121)
       
    61 #659 := (iff #126 #656)
       
    62 #657 := (iff #121 #121)
       
    63 #658 := [refl]: #657
       
    64 #660 := [quant-intro #658]: #659
       
    65 #154 := (~ #126 #126)
       
    66 #170 := (~ #121 #121)
       
    67 #171 := [refl]: #170
       
    68 #155 := [nnf-pos #171]: #154
       
    69 #17 := (< #10 0::int)
       
    70 #19 := (implies #17 #18)
       
    71 #20 := (forall (vars (?x3 int)) #19)
       
    72 #129 := (iff #20 #126)
       
    73 #92 := (= 0::int #13)
       
    74 #98 := (not #17)
       
    75 #99 := (or #98 #92)
       
    76 #104 := (forall (vars (?x3 int)) #99)
       
    77 #127 := (iff #104 #126)
       
    78 #124 := (iff #99 #121)
       
    79 #118 := (or #73 #18)
       
    80 #122 := (iff #118 #121)
       
    81 #123 := [rewrite]: #122
       
    82 #119 := (iff #99 #118)
       
    83 #116 := (iff #92 #18)
       
    84 #117 := [rewrite]: #116
       
    85 #114 := (iff #98 #73)
       
    86 #74 := (not #73)
       
    87 #109 := (not #74)
       
    88 #112 := (iff #109 #73)
       
    89 #113 := [rewrite]: #112
       
    90 #110 := (iff #98 #109)
       
    91 #107 := (iff #17 #74)
       
    92 #108 := [rewrite]: #107
       
    93 #111 := [monotonicity #108]: #110
       
    94 #115 := [trans #111 #113]: #114
       
    95 #120 := [monotonicity #115 #117]: #119
       
    96 #125 := [trans #120 #123]: #124
       
    97 #128 := [quant-intro #125]: #127
       
    98 #105 := (iff #20 #104)
       
    99 #102 := (iff #19 #99)
       
   100 #95 := (implies #17 #92)
       
   101 #100 := (iff #95 #99)
       
   102 #101 := [rewrite]: #100
       
   103 #96 := (iff #19 #95)
       
   104 #93 := (iff #18 #92)
       
   105 #94 := [rewrite]: #93
       
   106 #97 := [monotonicity #94]: #96
       
   107 #103 := [trans #97 #101]: #102
       
   108 #106 := [quant-intro #103]: #105
       
   109 #130 := [trans #106 #128]: #129
       
   110 #91 := [asserted]: #20
       
   111 #131 := [mp #91 #130]: #126
       
   112 #172 := [mp~ #131 #155]: #126
       
   113 #661 := [mp #172 #660]: #656
       
   114 #619 := (not #656)
       
   115 #620 := (or #619 #279 #315)
       
   116 #280 := (or #279 #315)
       
   117 #621 := (or #619 #280)
       
   118 #617 := (iff #621 #620)
       
   119 #623 := [rewrite]: #617
       
   120 #622 := [quant-inst]: #621
       
   121 #260 := [mp #622 #623]: #620
       
   122 #615 := [unit-resolution #260 #661 #614]: #315
       
   123 #316 := (not #315)
       
   124 #302 := (or #291 #316)
       
   125 #55 := (= #10 #13)
       
   126 #80 := (or #55 #74)
       
   127 #650 := (forall (vars (?x2 int)) (:pat #649) #80)
       
   128 #85 := (forall (vars (?x2 int)) #80)
       
   129 #653 := (iff #85 #650)
       
   130 #651 := (iff #80 #80)
       
   131 #652 := [refl]: #651
       
   132 #654 := [quant-intro #652]: #653
       
   133 #153 := (~ #85 #85)
       
   134 #167 := (~ #80 #80)
       
   135 #168 := [refl]: #167
       
   136 #134 := [nnf-pos #168]: #153
       
   137 #14 := (= #13 #10)
       
   138 #11 := (<= 0::int #10)
       
   139 #15 := (implies #11 #14)
       
   140 #16 := (forall (vars (?x2 int)) #15)
       
   141 #88 := (iff #16 #85)
       
   142 #62 := (not #11)
       
   143 #63 := (or #62 #55)
       
   144 #68 := (forall (vars (?x2 int)) #63)
       
   145 #86 := (iff #68 #85)
       
   146 #83 := (iff #63 #80)
       
   147 #77 := (or #74 #55)
       
   148 #81 := (iff #77 #80)
       
   149 #82 := [rewrite]: #81
       
   150 #78 := (iff #63 #77)
       
   151 #75 := (iff #62 #74)
       
   152 #71 := (iff #11 #73)
       
   153 #72 := [rewrite]: #71
       
   154 #76 := [monotonicity #72]: #75
       
   155 #79 := [monotonicity #76]: #78
       
   156 #84 := [trans #79 #82]: #83
       
   157 #87 := [quant-intro #84]: #86
       
   158 #69 := (iff #16 #68)
       
   159 #66 := (iff #15 #63)
       
   160 #59 := (implies #11 #55)
       
   161 #64 := (iff #59 #63)
       
   162 #65 := [rewrite]: #64
       
   163 #60 := (iff #15 #59)
       
   164 #57 := (iff #14 #55)
       
   165 #58 := [rewrite]: #57
       
   166 #61 := [monotonicity #58]: #60
       
   167 #67 := [trans #61 #65]: #66
       
   168 #70 := [quant-intro #67]: #69
       
   169 #89 := [trans #70 #87]: #88
       
   170 #54 := [asserted]: #16
       
   171 #90 := [mp #54 #89]: #85
       
   172 #169 := [mp~ #90 #134]: #85
       
   173 #655 := [mp #169 #654]: #650
       
   174 #637 := (not #650)
       
   175 #638 := (or #637 #291 #316)
       
   176 #314 := (= #26 #28)
       
   177 #318 := (or #314 #316)
       
   178 #639 := (or #637 #318)
       
   179 #290 := (iff #639 #638)
       
   180 #640 := (or #637 #302)
       
   181 #294 := (iff #640 #638)
       
   182 #631 := [rewrite]: #294
       
   183 #630 := (iff #639 #640)
       
   184 #303 := (iff #318 #302)
       
   185 #422 := (iff #314 #291)
       
   186 #629 := [rewrite]: #422
       
   187 #636 := [monotonicity #629]: #303
       
   188 #289 := [monotonicity #636]: #630
       
   189 #632 := [trans #289 #631]: #290
       
   190 #634 := [quant-inst]: #639
       
   191 #274 := [mp #634 #632]: #638
       
   192 #322 := [unit-resolution #274 #655]: #302
       
   193 #337 := [unit-resolution #322 #615]: #291
       
   194 #338 := (not #291)
       
   195 #339 := (or #338 #278)
       
   196 #340 := [th-lemma]: #339
       
   197 #232 := [unit-resolution #340 #337]: #278
       
   198 [th-lemma #152 #232 #139]: false
       
   199 unsat