src/Tools/Metis/src/problems.sml
changeset 23442 028e39e5e8f3
child 23510 4521fead5609
equal deleted inserted replaced
23441:ee218296d635 23442:028e39e5e8f3
       
     1 (* ========================================================================= *)
       
     2 (* SOME SAMPLE PROBLEMS TO TEST PROOF PROCEDURES                             *)
       
     3 (* Copyright (c) 2001-2007 Joe Hurd, distributed under the GNU GPL version 2 *)
       
     4 (* ========================================================================= *)
       
     5 
       
     6 (* ========================================================================= *)
       
     7 (* A type of problems.                                                       *)
       
     8 (* ========================================================================= *)
       
     9 
       
    10 type problem =
       
    11      {name : string,
       
    12       comments : string list,
       
    13       goal : Formula.quotation};
       
    14 
       
    15 (* ========================================================================= *)
       
    16 (* Helper functions.                                                         *)
       
    17 (* ========================================================================= *)
       
    18 
       
    19 fun mkProblem description (problem : problem) : problem =
       
    20     let
       
    21       val {name,comments,goal} = problem
       
    22       val comments = if null comments then [] else "" :: comments
       
    23       val comments = "Collection: " ^ description :: comments
       
    24     in
       
    25       {name = name, comments = comments, goal = goal}
       
    26     end;
       
    27 
       
    28 fun mkProblems description problems = map (mkProblem description) problems;
       
    29 
       
    30 (* ========================================================================= *)
       
    31 (* The collection of problems.                                               *)
       
    32 (* ========================================================================= *)
       
    33 
       
    34 val problems : problem list =
       
    35 
       
    36 (* ========================================================================= *)
       
    37 (* Problems without equality.                                                *)
       
    38 (* ========================================================================= *)
       
    39 
       
    40 mkProblems "Problems without equality from various sources" [
       
    41 
       
    42 (* ------------------------------------------------------------------------- *)
       
    43 (* Trivia (some of which demonstrate ex-bugs in provers).                    *)
       
    44 (* ------------------------------------------------------------------------- *)
       
    45 
       
    46 {name = "TRUE",
       
    47  comments = [],
       
    48  goal = `
       
    49 T`},
       
    50 
       
    51 {name = "SIMPLE",
       
    52  comments = [],
       
    53  goal = `
       
    54 !x y. ?z. p x \/ p y ==> p z`},
       
    55 
       
    56 {name = "CYCLIC",
       
    57  comments = [],
       
    58  goal = `
       
    59 (!x. p (g (c x))) ==> ?z. p (g z)`},
       
    60 
       
    61 {name = "MICHAEL_NORRISH_BUG",
       
    62  comments = [],
       
    63  goal = `
       
    64 (!x. ?y. f y x x) ==> ?z. f z 0 0`},
       
    65 
       
    66 {name = "RELATION_COMPOSITION",
       
    67  comments = [],
       
    68  goal = `
       
    69 (!x. ?y. p x y) /\ (!x. ?y. q x y) /\
       
    70 (!x y z. p x y /\ q y z ==> r x z) ==> !x. ?y. r x y`},
       
    71 
       
    72 (* ------------------------------------------------------------------------- *)
       
    73 (* Propositional Logic.                                                      *)
       
    74 (* ------------------------------------------------------------------------- *)
       
    75 
       
    76 {name = "PROP_1",
       
    77  comments = [],
       
    78  goal = `
       
    79 p ==> q <=> ~q ==> ~p`},
       
    80 
       
    81 {name = "PROP_2",
       
    82  comments = [],
       
    83  goal = `
       
    84 ~~p <=> p`},
       
    85 
       
    86 {name = "PROP_3",
       
    87  comments = [],
       
    88  goal = `
       
    89 ~(p ==> q) ==> q ==> p`},
       
    90 
       
    91 {name = "PROP_4",
       
    92  comments = [],
       
    93  goal = `
       
    94 ~p ==> q <=> ~q ==> p`},
       
    95 
       
    96 {name = "PROP_5",
       
    97  comments = [],
       
    98  goal = `
       
    99 (p \/ q ==> p \/ r) ==> p \/ (q ==> r)`},
       
   100 
       
   101 {name = "PROP_6",
       
   102  comments = [],
       
   103  goal = `
       
   104 p \/ ~p`},
       
   105 
       
   106 {name = "PROP_7",
       
   107  comments = [],
       
   108  goal = `
       
   109 p \/ ~~~p`},
       
   110 
       
   111 {name = "PROP_8",
       
   112  comments = [],
       
   113  goal = `
       
   114 ((p ==> q) ==> p) ==> p`},
       
   115 
       
   116 {name = "PROP_9",
       
   117  comments = [],
       
   118  goal = `
       
   119 (p \/ q) /\ (~p \/ q) /\ (p \/ ~q) ==> ~(~q \/ ~q)`},
       
   120 
       
   121 {name = "PROP_10",
       
   122  comments = [],
       
   123  goal = `
       
   124 (q ==> r) /\ (r ==> p /\ q) /\ (p ==> q /\ r) ==> (p <=> q)`},
       
   125 
       
   126 {name = "PROP_11",
       
   127  comments = [],
       
   128  goal = `
       
   129 p <=> p`},
       
   130 
       
   131 {name = "PROP_12",
       
   132  comments = [],
       
   133  goal = `
       
   134 ((p <=> q) <=> r) <=> p <=> q <=> r`},
       
   135 
       
   136 {name = "PROP_13",
       
   137  comments = [],
       
   138  goal = `
       
   139 p \/ q /\ r <=> (p \/ q) /\ (p \/ r)`},
       
   140 
       
   141 {name = "PROP_14",
       
   142  comments = [],
       
   143  goal = `
       
   144 (p <=> q) <=> (q \/ ~p) /\ (~q \/ p)`},
       
   145 
       
   146 {name = "PROP_15",
       
   147  comments = [],
       
   148  goal = `
       
   149 p ==> q <=> ~p \/ q`},
       
   150 
       
   151 {name = "PROP_16",
       
   152  comments = [],
       
   153  goal = `
       
   154 (p ==> q) \/ (q ==> p)`},
       
   155 
       
   156 {name = "PROP_17",
       
   157  comments = [],
       
   158  goal = `
       
   159 p /\ (q ==> r) ==> s <=> (~p \/ q \/ s) /\ (~p \/ ~r \/ s)`},
       
   160 
       
   161 {name = "MATHS4_EXAMPLE",
       
   162  comments = [],
       
   163  goal = `
       
   164 (a \/ ~k ==> g) /\ (g ==> q) /\ ~q ==> k`},
       
   165 
       
   166 {name = "LOGICPROOF_1996",
       
   167  comments = [],
       
   168  goal = `
       
   169 (p ==> r) /\ (~p ==> ~q) /\ (p \/ q) ==> p /\ r`},
       
   170 
       
   171 {name = "XOR_ASSOC",
       
   172  comments = [],
       
   173  goal = `
       
   174 ~(~(p <=> q) <=> r) <=> ~(p <=> ~(q <=> r))`},
       
   175 
       
   176 {name = "ALL_3_CLAUSES",
       
   177  comments = [],
       
   178  goal = `
       
   179 (p \/ q \/ r) /\ (p \/ q \/ ~r) /\ (p \/ ~q \/ r) /\ (p \/ ~q \/ ~r) /\
       
   180 (~p \/ q \/ r) /\ (~p \/ q \/ ~r) /\ (~p \/ ~q \/ r) /\
       
   181 (~p \/ ~q \/ ~r) ==> F`},
       
   182 
       
   183 {name = "CLAUSE_SIMP",
       
   184  comments = [],
       
   185  goal = `
       
   186 (lit ==> clause) ==> (lit \/ clause <=> clause)`},
       
   187 
       
   188 (* ------------------------------------------------------------------------- *)
       
   189 (* Monadic Predicate Logic.                                                  *)
       
   190 (* ------------------------------------------------------------------------- *)
       
   191 
       
   192 {name = "P18",
       
   193  comments = ["The drinker's principle."],
       
   194  goal = `
       
   195 ?very_popular_guy. !whole_pub. drinks very_popular_guy ==> drinks whole_pub`},
       
   196 
       
   197 {name = "P19",
       
   198  comments = [],
       
   199  goal = `
       
   200 ?x. !y z. (p y ==> q z) ==> p x ==> q x`},
       
   201 
       
   202 {name = "P20",
       
   203  comments = [],
       
   204  goal = `
       
   205 (!x y. ?z. !w. p x /\ q y ==> r z /\ u w) /\ (!x y. p x /\ q y) ==> ?z. r z`},
       
   206 
       
   207 {name = "P21",
       
   208  comments = [],
       
   209  goal = `
       
   210 (?x. p ==> q x) /\ (?x. q x ==> p) ==> ?x. p <=> q x`},
       
   211 
       
   212 {name = "P22",
       
   213  comments = [],
       
   214  goal = `
       
   215 (!x. p <=> q x) ==> (p <=> !x. q x)`},
       
   216 
       
   217 {name = "P23",
       
   218  comments = [],
       
   219  goal = `
       
   220 (!x. p \/ q x) <=> p \/ !x. q x`},
       
   221 
       
   222 {name = "P24",
       
   223  comments = [],
       
   224  goal = `
       
   225 ~(?x. u x /\ q x) /\ (!x. p x ==> q x \/ r x) /\ ~(?x. p x ==> ?x. q x) /\
       
   226 (!x. q x /\ r x ==> u x) ==> ?x. p x /\ r x`},
       
   227 
       
   228 {name = "P25",
       
   229  comments = [],
       
   230  goal = `
       
   231 (?x. p x) /\ (!x. u x ==> ~g x /\ r x) /\ (!x. p x ==> g x /\ u x) /\
       
   232 ((!x. p x ==> q x) \/ ?x. q x /\ p x) ==> ?x. q x /\ p x`},
       
   233 
       
   234 {name = "P26",
       
   235  comments = [],
       
   236  goal = `
       
   237 ((?x. p x) <=> ?x. q x) /\ (!x y. p x /\ q y ==> (r x <=> u y)) ==>
       
   238 ((!x. p x ==> r x) <=> !x. q x ==> u x)`},
       
   239 
       
   240 {name = "P27",
       
   241  comments = [],
       
   242  goal = `
       
   243 (?x. p x /\ ~q x) /\ (!x. p x ==> r x) /\ (!x. u x /\ s x ==> p x) /\
       
   244 (?x. r x /\ ~q x) ==> (!x. u x ==> ~r x) ==> !x. u x ==> ~s x`},
       
   245 
       
   246 {name = "P28",
       
   247  comments = [],
       
   248  goal = `
       
   249 (!x. p x ==> !x. q x) /\ ((!x. q x \/ r x) ==> ?x. q x /\ r x) /\
       
   250 ((?x. r x) ==> !x. l x ==> m x) ==> !x. p x /\ l x ==> m x`},
       
   251 
       
   252 {name = "P29",
       
   253  comments = [],
       
   254  goal = `
       
   255 (?x. p x) /\ (?x. g x) ==>
       
   256 ((!x. p x ==> h x) /\ (!x. g x ==> j x) <=>
       
   257  !x y. p x /\ g y ==> h x /\ j y)`},
       
   258 
       
   259 {name = "P30",
       
   260  comments = [],
       
   261  goal = `
       
   262 (!x. p x \/ g x ==> ~h x) /\ (!x. (g x ==> ~u x) ==> p x /\ h x) ==>
       
   263 !x. u x`},
       
   264 
       
   265 {name = "P31",
       
   266  comments = [],
       
   267  goal = `
       
   268 ~(?x. p x /\ (g x \/ h x)) /\ (?x. q x /\ p x) /\ (!x. ~h x ==> j x) ==>
       
   269 ?x. q x /\ j x`},
       
   270 
       
   271 {name = "P32",
       
   272  comments = [],
       
   273  goal = `
       
   274 (!x. p x /\ (g x \/ h x) ==> q x) /\ (!x. q x /\ h x ==> j x) /\
       
   275 (!x. r x ==> h x) ==> !x. p x /\ r x ==> j x`},
       
   276 
       
   277 {name = "P33",
       
   278  comments = [],
       
   279  goal = `
       
   280 (!x. p a /\ (p x ==> p b) ==> p c) <=>
       
   281 (!x. p a ==> p x \/ p c) /\ (p a ==> p b ==> p c)`},
       
   282 
       
   283 {name = "P34",
       
   284  comments =
       
   285 ["This gives rise to 5184 clauses when naively converted to CNF!"],
       
   286  goal = `
       
   287 ((?x. !y. p x <=> p y) <=> (?x. q x) <=> !y. q y) <=>
       
   288 (?x. !y. q x <=> q y) <=> (?x. p x) <=> !y. p y`},
       
   289 
       
   290 {name = "P35",
       
   291  comments = [],
       
   292  goal = `
       
   293 ?x y. p x y ==> !x y. p x y`},
       
   294 
       
   295 (* ------------------------------------------------------------------------- *)
       
   296 (* Predicate logic without functions.                                        *)
       
   297 (* ------------------------------------------------------------------------- *)
       
   298 
       
   299 {name = "P36",
       
   300  comments = [],
       
   301  goal = `
       
   302 (!x. ?y. p x y) /\ (!x. ?y. g x y) /\
       
   303 (!x y. p x y \/ g x y ==> !z. p y z \/ g y z ==> h x z) ==> !x. ?y. h x y`},
       
   304 
       
   305 {name = "P37",
       
   306  comments = [],
       
   307  goal = `
       
   308 (!z. ?w. !x. ?y. (p x z ==> p y w) /\ p y z /\ (p y w ==> ?v. q v w)) /\
       
   309 (!x z. ~p x z ==> ?y. q y z) /\ ((?x y. q x y) ==> !x. r x x) ==>
       
   310 !x. ?y. r x y`},
       
   311 
       
   312 {name = "P38",
       
   313  comments = [],
       
   314  goal = `
       
   315 (!x. p a /\ (p x ==> ?y. p y /\ r x y) ==> ?z w. p z /\ r x w /\ r w z) <=>
       
   316 !x.
       
   317   (~p a \/ p x \/ ?z w. p z /\ r x w /\ r w z) /\
       
   318   (~p a \/ ~(?y. p y /\ r x y) \/ ?z w. p z /\ r x w /\ r w z)`},
       
   319 
       
   320 {name = "P39",
       
   321  comments = [],
       
   322  goal = `
       
   323 ~?x. !y. p y x <=> ~p y y`},
       
   324 
       
   325 {name = "P40",
       
   326  comments = [],
       
   327  goal = `
       
   328 (?y. !x. p x y <=> p x x) ==> ~!x. ?y. !z. p z y <=> ~p z x`},
       
   329 
       
   330 {name = "P41",
       
   331  comments = [],
       
   332  goal = `
       
   333 (!z. ?y. !x. p x y <=> p x z /\ ~p x x) ==> ~?z. !x. p x z`},
       
   334 
       
   335 {name = "P42",
       
   336  comments = [],
       
   337  goal = `
       
   338 ~?y. !x. p x y <=> ~?z. p x z /\ p z x`},
       
   339 
       
   340 {name = "P43",
       
   341  comments = [],
       
   342  goal = `
       
   343 (!x y. q x y <=> !z. p z x <=> p z y) ==> !x y. q x y <=> q y x`},
       
   344 
       
   345 {name = "P44",
       
   346  comments = [],
       
   347  goal = `
       
   348 (!x. p x ==> (?y. g y /\ h x y) /\ ?y. g y /\ ~h x y) /\
       
   349 (?x. j x /\ !y. g y ==> h x y) ==> ?x. j x /\ ~p x`},
       
   350 
       
   351 {name = "P45",
       
   352  comments = [],
       
   353  goal = `
       
   354 (!x. p x /\ (!y. g y /\ h x y ==> j x y) ==> !y. g y /\ h x y ==> r y) /\
       
   355 ~(?y. l y /\ r y) /\
       
   356 (?x. p x /\ (!y. h x y ==> l y) /\ !y. g y /\ h x y ==> j x y) ==>
       
   357 ?x. p x /\ ~?y. g y /\ h x y`},
       
   358 
       
   359 {name = "P46",
       
   360  comments = [],
       
   361  goal = `
       
   362 (!x. p x /\ (!y. p y /\ h y x ==> g y) ==> g x) /\
       
   363 ((?x. p x /\ ~g x) ==> ?x. p x /\ ~g x /\ !y. p y /\ ~g y ==> j x y) /\
       
   364 (!x y. p x /\ p y /\ h x y ==> ~j y x) ==> !x. p x ==> g x`},
       
   365 
       
   366 {name = "P50",
       
   367  comments = [],
       
   368  goal = `
       
   369 (!x. f0 a x \/ !y. f0 x y) ==> ?x. !y. f0 x y`},
       
   370 
       
   371 {name = "LOGICPROOF_L10",
       
   372  comments = [],
       
   373  goal = `
       
   374 !x. ?y. ~(P y x <=> ~P y y)`},
       
   375 
       
   376 {name = "BARBER",
       
   377  comments = ["One resolution of the barber paradox"],
       
   378  goal = `
       
   379 (!x. man x ==> (shaves barber x <=> ~shaves x x)) ==> ~man barber`},
       
   380 
       
   381 (* ------------------------------------------------------------------------- *)
       
   382 (* Full predicate logic.                                                     *)
       
   383 (* ------------------------------------------------------------------------- *)
       
   384 
       
   385 {name = "LOGICPROOF_1999",
       
   386  comments = ["A non-theorem."],
       
   387  goal = `
       
   388 (?x. p x /\ q x) ==> ?x. p (f x x) \/ !y. q y`},
       
   389 
       
   390 {name = "P55",
       
   391  comments = ["Example from Manthey and Bry, CADE-9. [JRH]"],
       
   392  goal = `
       
   393 lives agatha /\ lives butler /\ lives charles /\
       
   394 (killed agatha agatha \/ killed butler agatha \/ killed charles agatha) /\
       
   395 (!x y. killed x y ==> hates x y /\ ~richer x y) /\
       
   396 (!x. hates agatha x ==> ~hates charles x) /\
       
   397 (hates agatha agatha /\ hates agatha charles) /\
       
   398 (!x. lives x /\ ~richer x agatha ==> hates butler x) /\
       
   399 (!x. hates agatha x ==> hates butler x) /\
       
   400 (!x. ~hates x agatha \/ ~hates x butler \/ ~hates x charles) ==>
       
   401 killed agatha agatha /\ ~killed butler agatha /\ ~killed charles agatha`},
       
   402 
       
   403 {name = "P57",
       
   404  comments = [],
       
   405  goal = `
       
   406 p (f a b) (f b c) /\ p (f b c) (f a c) /\
       
   407 (!x y z. p x y /\ p y z ==> p x z) ==> p (f a b) (f a c)`},
       
   408 
       
   409 {name = "P58",
       
   410  comments = ["See info-hol 1498 [JRH]"],
       
   411  goal = `
       
   412 !x. ?v w. !y z. p x /\ q y ==> (p v \/ r w) /\ (r z ==> q v)`},
       
   413 
       
   414 {name = "P59",
       
   415  comments = [],
       
   416  goal = `
       
   417 (!x. p x <=> ~p (f x)) ==> ?x. p x /\ ~p (f x)`},
       
   418 
       
   419 {name = "P60",
       
   420  comments = [],
       
   421  goal = `
       
   422 !x. p x (f x) <=> ?y. (!z. p z y ==> p z (f x)) /\ p x y`},
       
   423 
       
   424 (* ------------------------------------------------------------------------- *)
       
   425 (* From Gilmore's classic paper.                                             *)
       
   426 (* ------------------------------------------------------------------------- *)
       
   427 
       
   428 {name = "GILMORE_1",
       
   429  comments =
       
   430 ["Amazingly, this still seems non-trivial... in HOL [MESON_TAC] it",
       
   431  "works at depth 45! [JRH]",
       
   432  "Confirmed (depth=45, inferences=263702, time=148s), though if",
       
   433  "lemmaizing is used then a lemma is discovered at depth 29 that allows",
       
   434  "a much quicker proof (depth=30, inferences=10039, time=5.5s)."],
       
   435  goal = `
       
   436 ?x. !y z.
       
   437   (f y ==> g y <=> f x) /\ (f y ==> h y <=> g x) /\
       
   438   ((f y ==> g y) ==> h y <=> h x) ==> f z /\ g z /\ h z`},
       
   439 
       
   440 {name = "GILMORE_2",
       
   441  comments =
       
   442 ["This is not valid, according to Gilmore. [JRH]",
       
   443  "Confirmed: ordered resolution quickly saturates."],
       
   444  goal = `
       
   445 ?x y. !z.
       
   446   (f x z <=> f z y) /\ (f z y <=> f z z) /\ (f x y <=> f y x) ==>
       
   447   (f x y <=> f x z)`},
       
   448 
       
   449 {name = "GILMORE_3",
       
   450  comments = [],
       
   451  goal = `
       
   452 ?x. !y z.
       
   453   ((f y z ==> g y ==> h x) ==> f x x) /\ ((f z x ==> g x) ==> h z) /\
       
   454   f x y ==> f z z`},
       
   455 
       
   456 {name = "GILMORE_4",
       
   457  comments = [],
       
   458  goal = `
       
   459 ?x y. !z. (f x y ==> f y z /\ f z z) /\ (f x y /\ g x y ==> g x z /\ g z z)`},
       
   460 
       
   461 {name = "GILMORE_5",
       
   462  comments = [],
       
   463  goal = `
       
   464 (!x. ?y. f x y \/ f y x) /\ (!x y. f y x ==> f y y) ==> ?z. f z z`},
       
   465 
       
   466 {name = "GILMORE_6",
       
   467  comments = [],
       
   468  goal = `
       
   469 !x. ?y.
       
   470   (?w. !v. f w x ==> g v w /\ g w x) ==>
       
   471   (?w. !v. f w y ==> g v w /\ g w y) \/
       
   472   !z v. ?w. g v z \/ h w y z ==> g z w`},
       
   473 
       
   474 {name = "GILMORE_7",
       
   475  comments = [],
       
   476  goal = `
       
   477 (!x. k x ==> ?y. l y /\ (f x y ==> g x y)) /\
       
   478 (?z. k z /\ !w. l w ==> f z w) ==> ?v w. k v /\ l w /\ g v w`},
       
   479 
       
   480 {name = "GILMORE_8",
       
   481  comments = [],
       
   482  goal = `
       
   483 ?x. !y z.
       
   484   ((f y z ==> g y ==> !w. ?v. h w v x) ==> f x x) /\
       
   485   ((f z x ==> g x) ==> !w. ?v. h w v z) /\ f x y ==> f z z`},
       
   486 
       
   487 {name = "GILMORE_9",
       
   488  comments =
       
   489 ["Model elimination (in HOL):",
       
   490  "- With lemmaizing: (depth=18, inferences=15632, time=21s)",
       
   491  "- Without: gave up waiting after (depth=25, inferences=2125072, ...)"],
       
   492  goal = `
       
   493 !x. ?y. !z.
       
   494   ((!w. ?v. f y w v /\ g y w /\ ~h y x) ==>
       
   495    (!w. ?v. f x w v /\ g z u /\ ~h x z) ==>
       
   496    !w. ?v. f x w v /\ g y w /\ ~h x y) /\
       
   497   ((!w. ?v. f x w v /\ g y w /\ ~h x y) ==>
       
   498    ~(!w. ?v. f x w v /\ g z w /\ ~h x z) ==>
       
   499    (!w. ?v. f y w v /\ g y w /\ ~h y x) /\
       
   500    !w. ?v. f z w v /\ g y w /\ ~h z y)`},
       
   501 
       
   502 {name = "GILMORE_9a",
       
   503  comments =
       
   504 ["Translation of Gilmore procedure using separate definitions. [JRH]"],
       
   505  goal = `
       
   506 (!x y. p x y <=> !w. ?v. f x w v /\ g y w /\ ~h x y) ==>
       
   507 !x. ?y. !z.
       
   508   (p y x ==> p x z ==> p x y) /\ (p x y ==> ~p x z ==> p y x /\ p z y)`},
       
   509 
       
   510 {name = "BAD_CONNECTIONS",
       
   511  comments =
       
   512 ["The interesting example where connections make the proof longer. [JRH]"],
       
   513  goal = `
       
   514 ~a /\ (a \/ b) /\ (c \/ d) /\ (~b \/ e \/ f) /\ (~c \/ ~e) /\ (~c \/ ~f) /\
       
   515 (~b \/ g \/ h) /\ (~d \/ ~g) /\ (~d \/ ~h) ==> F`},
       
   516 
       
   517 {name = "LOS",
       
   518  comments =
       
   519 ["The classic Los puzzle. (Clausal version MSC006-1 in the TPTP library.)",
       
   520  "Note: this is actually in the decidable AE subset, though that doesn't",
       
   521  "yield a very efficient proof. [JRH]"],
       
   522  goal = `
       
   523 (!x y z. p x y ==> p y z ==> p x z) /\
       
   524 (!x y z. q x y ==> q y z ==> q x z) /\ (!x y. q x y ==> q y x) /\
       
   525 (!x y. p x y \/ q x y) ==> (!x y. p x y) \/ !x y. q x y`},
       
   526 
       
   527 {name = "STEAM_ROLLER",
       
   528  comments = [],
       
   529  goal = `
       
   530 ((!x. p1 x ==> p0 x) /\ ?x. p1 x) /\ ((!x. p2 x ==> p0 x) /\ ?x. p2 x) /\
       
   531 ((!x. p3 x ==> p0 x) /\ ?x. p3 x) /\ ((!x. p4 x ==> p0 x) /\ ?x. p4 x) /\
       
   532 ((!x. p5 x ==> p0 x) /\ ?x. p5 x) /\ ((?x. q1 x) /\ !x. q1 x ==> q0 x) /\
       
   533 (!x.
       
   534    p0 x ==>
       
   535    (!y. q0 y ==> r x y) \/
       
   536    !y. p0 y /\ s0 y x /\ (?z. q0 z /\ r y z) ==> r x y) /\
       
   537 (!x y. p3 y /\ (p5 x \/ p4 x) ==> s0 x y) /\
       
   538 (!x y. p3 x /\ p2 y ==> s0 x y) /\ (!x y. p2 x /\ p1 y ==> s0 x y) /\
       
   539 (!x y. p1 x /\ (p2 y \/ q1 y) ==> ~r x y) /\
       
   540 (!x y. p3 x /\ p4 y ==> r x y) /\ (!x y. p3 x /\ p5 y ==> ~r x y) /\
       
   541 (!x. p4 x \/ p5 x ==> ?y. q0 y /\ r x y) ==>
       
   542 ?x y. p0 x /\ p0 y /\ ?z. q1 z /\ r y z /\ r x y`},
       
   543 
       
   544 {name = "MODEL_COMPLETENESS",
       
   545  comments =
       
   546 ["An incestuous example used to establish completeness",
       
   547  "characterization. [JRH]"],
       
   548  goal = `
       
   549 (!w x. sentence x ==> holds w x \/ holds w (not x)) /\
       
   550 (!w x. ~(holds w x /\ holds w (not x))) ==>
       
   551 ((!x.
       
   552     sentence x ==>
       
   553     (!w. models w s ==> holds w x) \/
       
   554     !w. models w s ==> holds w (not x)) <=>
       
   555  !w v.
       
   556    models w s /\ models v s ==>
       
   557    !x. sentence x ==> (holds w x <=> holds v x))`}
       
   558 
       
   559 ] @
       
   560 
       
   561 (* ========================================================================= *)
       
   562 (* Problems with equality.                                                   *)
       
   563 (* ========================================================================= *)
       
   564 
       
   565 mkProblems "Equality problems from various sources" [
       
   566 
       
   567 (* ------------------------------------------------------------------------- *)
       
   568 (* Trivia (some of which demonstrate ex-bugs in the prover).                 *)
       
   569 (* ------------------------------------------------------------------------- *)
       
   570 
       
   571 {name = "REFLEXIVITY",
       
   572  comments = [],
       
   573  goal = `
       
   574 c = c`},
       
   575 
       
   576 {name = "SYMMETRY",
       
   577  comments = [],
       
   578  goal = `
       
   579 !x y. x = y ==> y = x`},
       
   580 
       
   581 {name = "TRANSITIVITY",
       
   582  comments = [],
       
   583  goal = `
       
   584 !x y z. x = y /\ y = z ==> x = z`},
       
   585 
       
   586 {name = "TRANS_SYMM",
       
   587  comments = [],
       
   588  goal = `
       
   589 !x y z. x = y /\ y = z ==> z = x`},
       
   590 
       
   591 {name = "SUBSTITUTIVITY",
       
   592  comments = [],
       
   593  goal = `
       
   594 !x y. f x /\ x = y ==> f y`},
       
   595 
       
   596 {name = "CYCLIC_SUBSTITUTION_BUG",
       
   597  comments = [],
       
   598  goal = `
       
   599 !y. (!x. y = g (c x)) ==> ?z. y = g z`},
       
   600 
       
   601 {name = "JUDITA_1",
       
   602  comments = [],
       
   603  goal = `
       
   604 ~(a = b) /\ (!x. x = c) ==> F`},
       
   605 
       
   606 {name = "JUDITA_2",
       
   607  comments = [],
       
   608  goal = `
       
   609 ~(a = b) /\ (!x y. x = y) ==> F`},
       
   610 
       
   611 {name = "JUDITA_3",
       
   612  comments = [],
       
   613  goal = `
       
   614 p a /\ ~p b /\ (!x. x = c) ==> F`},
       
   615 
       
   616 {name = "JUDITA_4",
       
   617  comments = [],
       
   618  goal = `
       
   619 p a /\ ~p b /\ (!x y. x = y) ==> F`},
       
   620 
       
   621 {name = "JUDITA_5",
       
   622  comments = [],
       
   623  goal = `
       
   624 p a /\ p b /\ ~(a = b) /\ ~p c /\ (!x. x = a \/ x = d) ==> F`},
       
   625 
       
   626 {name = "INJECTIVITY_1",
       
   627  comments = [],
       
   628  goal = `
       
   629 (!x y. f x = f y ==> x = y) /\ f a = f b ==> a = b`},
       
   630 
       
   631 {name = "INJECTIVITY_2",
       
   632  comments = [],
       
   633  goal = `
       
   634 (!x y. g (f x) = g (f y) ==> x = y) /\ f a = f b ==> a = b`},
       
   635 
       
   636 {name = "SELF_REWRITE",
       
   637  comments = [],
       
   638  goal = `
       
   639 f (g (h c)) = h c /\ g (h c) = b /\ f b = a /\ (!x. ~(a = h x)) ==> F`},
       
   640 
       
   641 (* ------------------------------------------------------------------------- *)
       
   642 (* Simple equality problems.                                                 *)
       
   643 (* ------------------------------------------------------------------------- *)
       
   644 
       
   645 {name = "P48",
       
   646  comments = [],
       
   647  goal = `
       
   648 (a = b \/ c = d) /\ (a = c \/ b = d) ==> a = d \/ b = c`},
       
   649 
       
   650 {name = "P49",
       
   651  comments = [],
       
   652  goal = `
       
   653 (?x y. !z. z = x \/ z = y) /\ p a /\ p b /\ ~(a = b) ==> !x. p x`},
       
   654 
       
   655 {name = "P51",
       
   656  comments = [],
       
   657  goal = `
       
   658 (?z w. !x y. f0 x y <=> x = z /\ y = w) ==>
       
   659 ?z. !x. (?w. !y. f0 x y <=> y = w) <=> x = z`},
       
   660 
       
   661 {name = "P52",
       
   662  comments = [],
       
   663  goal = `
       
   664 (?z w. !x y. f0 x y <=> x = z /\ y = w) ==>
       
   665 ?w. !y. (?z. !x. f0 x y <=> x = z) <=> y = w`},
       
   666 
       
   667 {name = "UNSKOLEMIZED_MELHAM",
       
   668  comments = ["The Melham problem after an inverse skolemization step."],
       
   669  goal = `
       
   670 (!x y. g x = g y ==> f x = f y) ==> !y. ?w. !x. y = g x ==> w = f x`},
       
   671  
       
   672 {name = "CONGRUENCE_CLOSURE_EXAMPLE",
       
   673  comments = ["The example always given for congruence closure."],
       
   674  goal = `
       
   675 !x. f (f (f (f (f x)))) = x /\ f (f (f x)) = x ==> f x = x`},
       
   676 
       
   677 {name = "EWD_1",
       
   678  comments =
       
   679 ["A simple example (see EWD1266a and the application to Morley's",
       
   680  "theorem). [JRH]"],
       
   681  goal = `
       
   682 (!x. f x ==> g x) /\ (?x. f x) /\ (!x y. g x /\ g y ==> x = y) ==>
       
   683 !y. g y ==> f y`},
       
   684 
       
   685 {name = "EWD_2",
       
   686  comments = [],
       
   687  goal = `
       
   688 (!x. f (f x) = f x) /\ (!x. ?y. f y = x) ==> !x. f x = x`},
       
   689 
       
   690 {name = "JIA",
       
   691  comments = ["Needs only the K combinator"],
       
   692  goal = `
       
   693 (!x y. k . x . y = x) /\ (!v. P (v . a) a) /\ (!w. Q (w . b) b) ==>
       
   694 !z. ?x y. P (z . x . y) x /\ Q (z . x . y) y`},
       
   695 
       
   696 {name = "WISHNU",
       
   697  comments = ["Wishnu Prasetya's example. [JRH]"],
       
   698  goal = `
       
   699 (?x. x = f (g x) /\ !x'. x' = f (g x') ==> x = x') <=>
       
   700 ?y. y = g (f y) /\ !y'. y' = g (f y') ==> y = y'`},
       
   701 
       
   702 {name = "AGATHA",
       
   703  comments = ["An equality version of the Agatha puzzle. [JRH]"],
       
   704  goal = `
       
   705 (?x. lives x /\ killed x agatha) /\
       
   706 (lives agatha /\ lives butler /\ lives charles) /\
       
   707 (!x. lives x ==> x = agatha \/ x = butler \/ x = charles) /\
       
   708 (!x y. killed x y ==> hates x y) /\ (!x y. killed x y ==> ~richer x y) /\
       
   709 (!x. hates agatha x ==> ~hates charles x) /\
       
   710 (!x. ~(x = butler) ==> hates agatha x) /\
       
   711 (!x. ~richer x agatha ==> hates butler x) /\
       
   712 (!x. hates agatha x ==> hates butler x) /\ (!x. ?y. ~hates x y) /\
       
   713 ~(agatha = butler) ==>
       
   714 killed agatha agatha /\ ~killed butler agatha /\ ~killed charles agatha`},
       
   715 
       
   716 {name = "DIVIDES_9_1",
       
   717  comments = [],
       
   718  goal = `
       
   719 (!x y. x * y = y * x) /\ (!x y z. x * y * z = x * (y * z)) /\
       
   720 (!x y. divides x y <=> ?z. y = z * x) ==>
       
   721 !x y z. divides x y ==> divides x (z * y)`},
       
   722 
       
   723 {name = "DIVIDES_9_2",
       
   724  comments = [],
       
   725  goal = `
       
   726 (!x y. x * y = y * x) /\ (!x y z. x * y * z = x * (y * z)) /\
       
   727 (!x y. divides x y <=> ?z. z * x = y) ==>
       
   728 !x y z. divides x y ==> divides x (z * y)`},
       
   729 
       
   730 (* ------------------------------------------------------------------------- *)
       
   731 (* Group theory examples.                                                    *)
       
   732 (* ------------------------------------------------------------------------- *)
       
   733 
       
   734 {name = "GROUP_INVERSE_INVERSE",
       
   735  comments = [],
       
   736  goal = `
       
   737 (!x y z. x * (y * z) = x * y * z) /\ (!x. e * x = x) /\
       
   738 (!x. i x * x = e) ==> !x. i (i x) = x`},
       
   739 
       
   740 {name = "GROUP_RIGHT_INVERSE",
       
   741  comments = ["Size 18, 61814 seconds. [JRH]"],
       
   742  goal = `
       
   743 (!x y z. x * (y * z) = x * y * z) /\ (!x. e * x = x) /\
       
   744 (!x. i x * x = e) ==> !x. x * i x = e`},
       
   745 
       
   746 {name = "GROUP_RIGHT_IDENTITY",
       
   747  comments = [],
       
   748  goal = `
       
   749 (!x y z. x * (y * z) = x * y * z) /\ (!x. e * x = x) /\
       
   750 (!x. i x * x = e) ==> !x. x * e = x`},
       
   751 
       
   752 {name = "GROUP_IDENTITY_EQUIV",
       
   753  comments = [],
       
   754  goal = `
       
   755 (!x y z. x * (y * z) = x * y * z) /\ (!x. e * x = x) /\
       
   756 (!x. i x * x = e) ==> !x. x * x = x <=> x = e`},
       
   757 
       
   758 {name = "KLEIN_GROUP_COMMUTATIVE",
       
   759  comments = [],
       
   760  goal = `
       
   761 (!x y z. x * (y * z) = x * y * z) /\ (!x. e * x = x) /\ (!x. x * e = x) /\
       
   762 (!x. x * x = e) ==> !x y. x * y = y * x`},
       
   763 
       
   764 (* ------------------------------------------------------------------------- *)
       
   765 (* Ring theory examples.                                                     *)
       
   766 (* ------------------------------------------------------------------------- *)
       
   767 
       
   768 {name = "JACOBSON_2",
       
   769  comments = [],
       
   770  goal = `
       
   771 (!x. 0 + x = x) /\ (!x. x + 0 = x) /\ (!x. n x + x = 0) /\
       
   772 (!x. x + n x = 0) /\ (!x y z. x + (y + z) = x + y + z) /\
       
   773 (!x y. x + y = y + x) /\ (!x y z. x * (y * z) = x * y * z) /\
       
   774 (!x y z. x * (y + z) = x * y + x * z) /\
       
   775 (!x y z. (x + y) * z = x * z + y * z) /\ (!x. x * x = x) ==>
       
   776 !x y. x * y = y * x`},
       
   777 
       
   778 {name = "JACOBSON_3",
       
   779  comments = [],
       
   780  goal = `
       
   781 (!x. 0 + x = x) /\ (!x. x + 0 = x) /\ (!x. n x + x = 0) /\
       
   782 (!x. x + n x = 0) /\ (!x y z. x + (y + z) = x + y + z) /\
       
   783 (!x y. x + y = y + x) /\ (!x y z. x * (y * z) = x * y * z) /\
       
   784 (!x y z. x * (y + z) = x * y + x * z) /\
       
   785 (!x y z. (x + y) * z = x * z + y * z) /\ (!x. x * (x * x) = x) ==>
       
   786 !x y. x * y = y * x`}
       
   787 
       
   788 ] @
       
   789 
       
   790 (* ========================================================================= *)
       
   791 (* Some sample problems from the TPTP archive.                               *)
       
   792 (* Note: for brevity some relation/function names have been shortened.       *)
       
   793 (* ========================================================================= *)
       
   794 
       
   795 mkProblems "Sample problems from the TPTP collection"
       
   796 
       
   797 [
       
   798 
       
   799 {name = "ALG005-1",
       
   800  comments = [],
       
   801  goal = `
       
   802 (!x y. x + (y + x) = x) /\ (!x y. x + (x + y) = y + (y + x)) /\
       
   803 (!x y z. x + y + z = x + z + (y + z)) /\ (!x y. x * y = x + (x + y)) ==>
       
   804 ~(a * b * c = a * (b * c)) ==> F`},
       
   805 
       
   806 {name = "ALG006-1",
       
   807  comments = [],
       
   808  goal = `
       
   809 (!x y. x + (y + x) = x) /\ (!x y. x + (x + y) = y + (y + x)) /\
       
   810 (!x y z. x + y + z = x + z + (y + z)) ==> ~(a + c + b = a + b + c) ==> F`},
       
   811 
       
   812 {name = "BOO021-1",
       
   813  comments = [],
       
   814  goal = `
       
   815 (!x y. (x + y) * y = y) /\ (!x y z. x * (y + z) = y * x + z * x) /\
       
   816 (!x. x + i x = 1) /\ (!x y. x * y + y = y) /\
       
   817 (!x y z. x + y * z = (y + x) * (z + x)) /\ (!x. x * i x = 0) ==>
       
   818 ~(b * a = a * b) ==> F`},
       
   819 
       
   820 {name = "COL058-2",
       
   821  comments = [],
       
   822  goal = `
       
   823 (!x y. r (r 0 x) y = r x (r y y)) ==>
       
   824 ~(r (r (r 0 (r (r 0 (r 0 0)) (r 0 (r 0 0)))) (r 0 (r 0 0)))
       
   825     (r (r 0 (r (r 0 (r 0 0)) (r 0 (r 0 0)))) (r 0 (r 0 0))) =
       
   826   r (r 0 (r (r 0 (r 0 0)) (r 0 (r 0 0)))) (r 0 (r 0 0))) ==> F`},
       
   827 
       
   828 {name = "COL060-3",
       
   829  comments = [],
       
   830  goal = `
       
   831 (!x y z. b . x . y . z = x . (y . z)) /\ (!x y. t . x . y = y . x) ==>
       
   832 ~(b . (b . (t . b) . b) . t . x . y . z = y . (x . z)) ==> F`},
       
   833 
       
   834 {name = "GEO002-4",
       
   835  comments = [],
       
   836  goal = `
       
   837 (!x y z v. ~between x y z \/ ~between y v z \/ between x y v) /\
       
   838 (!x y z. ~equidistant x y z z \/ x == y) /\
       
   839 (!x y z v w.
       
   840    ~between x y z \/ ~between v z w \/
       
   841    between x (outer_pasch y x v w z) v) /\
       
   842 (!x y z v w.
       
   843    ~between x y z \/ ~between v z w \/
       
   844    between w y (outer_pasch y x v w z)) /\
       
   845 (!x y z v. between x y (extension x y z v)) /\
       
   846 (!x y z v. equidistant x (extension y x z v) z v) /\
       
   847 (!x y z v. ~(x == y) \/ ~between z v x \/ between z v y) ==>
       
   848 ~between a a b ==> F`},
       
   849 
       
   850 {name = "GEO036-2",
       
   851  comments = [],
       
   852  goal = `
       
   853 (!x y. equidistant x y y x) /\
       
   854 (!x y z x' y' z'.
       
   855    ~equidistant x y z x' \/ ~equidistant x y y' z' \/
       
   856    equidistant z x' y' z') /\ (!x y z. ~equidistant x y z z \/ x = y) /\
       
   857 (!x y z v. between x y (extension x y z v)) /\
       
   858 (!x y z v. equidistant x (extension y x z v) z v) /\
       
   859 (!x y z v w x' y' z'.
       
   860    ~equidistant x y z v \/ ~equidistant y w v x' \/
       
   861    ~equidistant x y' z z' \/ ~equidistant y y' v z' \/ ~between x y w \/
       
   862    ~between z v x' \/ x = y \/ equidistant w y' x' z') /\
       
   863 (!x y. ~between x y x \/ x = y) /\
       
   864 (!x y z v w.
       
   865    ~between x y z \/ ~between v w z \/
       
   866    between y (inner_pasch x y z w v) v) /\
       
   867 (!x y z v w.
       
   868    ~between x y z \/ ~between v w z \/
       
   869    between w (inner_pasch x y z w v) x) /\
       
   870 ~between lower_dimension_point_1 lower_dimension_point_2
       
   871    lower_dimension_point_3 /\
       
   872 ~between lower_dimension_point_2 lower_dimension_point_3
       
   873    lower_dimension_point_1 /\
       
   874 ~between lower_dimension_point_3 lower_dimension_point_1
       
   875    lower_dimension_point_2 /\
       
   876 (!x y z v w.
       
   877    ~equidistant x y x z \/ ~equidistant v y v z \/ ~equidistant w y w z \/
       
   878    between x v w \/ between v w x \/ between w x v \/ y = z) /\
       
   879 (!x y z v w.
       
   880    ~between x y z \/ ~between v y w \/ x = y \/
       
   881    between x v (euclid1 x v y w z)) /\
       
   882 (!x y z v w.
       
   883    ~between x y z \/ ~between v y w \/ x = y \/
       
   884    between x w (euclid2 x v y w z)) /\
       
   885 (!x y z v w.
       
   886    ~between x y z \/ ~between v y w \/ x = y \/
       
   887    between (euclid1 x v y w z) z (euclid2 x v y w z)) /\
       
   888 (!x y z x' y' z'.
       
   889    ~equidistant x y x z \/ ~equidistant x x' x y' \/ ~between x y x' \/
       
   890    ~between y z' x' \/ between z (continuous x y z z' x' y') y') /\
       
   891 (!x y z x' y' z'.
       
   892    ~equidistant x y x z \/ ~equidistant x x' x y' \/ ~between x y x' \/
       
   893    ~between y z' x' \/ equidistant x z' x (continuous x y z z' x' y')) /\
       
   894 (!x y z v. ~(x = y) \/ ~between x z v \/ between y z v) /\
       
   895 (!x y z v. ~(x = y) \/ ~between z x v \/ between z y v) /\
       
   896 (!x y z v. ~(x = y) \/ ~between z v x \/ between z v y) /\
       
   897 (!x y z v w. ~(x = y) \/ ~equidistant x z v w \/ equidistant y z v w) /\
       
   898 (!x y z v w. ~(x = y) \/ ~equidistant z x v w \/ equidistant z y v w) /\
       
   899 (!x y z v w. ~(x = y) \/ ~equidistant z v x w \/ equidistant z v y w) /\
       
   900 (!x y z v w. ~(x = y) \/ ~equidistant z v w x \/ equidistant z v w y) /\
       
   901 (!x y z x' y' z'.
       
   902    ~(x = y) \/ inner_pasch x z x' y' z' = inner_pasch y z x' y' z') /\
       
   903 (!x y z x' y' z'.
       
   904    ~(x = y) \/ inner_pasch z x x' y' z' = inner_pasch z y x' y' z') /\
       
   905 (!x y z x' y' z'.
       
   906    ~(x = y) \/ inner_pasch z x' x y' z' = inner_pasch z x' y y' z') /\
       
   907 (!x y z x' y' z'.
       
   908    ~(x = y) \/ inner_pasch z x' y' x z' = inner_pasch z x' y' y z') /\
       
   909 (!x y z x' y' z'.
       
   910    ~(x = y) \/ inner_pasch z x' y' z' x = inner_pasch z x' y' z' y) /\
       
   911 (!x y z x' y' z'.
       
   912    ~(x = y) \/ euclid1 x z x' y' z' = euclid1 y z x' y' z') /\
       
   913 (!x y z x' y' z'.
       
   914    ~(x = y) \/ euclid1 z x x' y' z' = euclid1 z y x' y' z') /\
       
   915 (!x y z x' y' z'.
       
   916    ~(x = y) \/ euclid1 z x' x y' z' = euclid1 z x' y y' z') /\
       
   917 (!x y z x' y' z'.
       
   918    ~(x = y) \/ euclid1 z x' y' x z' = euclid1 z x' y' y z') /\
       
   919 (!x y z x' y' z'.
       
   920    ~(x = y) \/ euclid1 z x' y' z' x = euclid1 z x' y' z' y) /\
       
   921 (!x y z x' y' z'.
       
   922    ~(x = y) \/ euclid2 x z x' y' z' = euclid2 y z x' y' z') /\
       
   923 (!x y z x' y' z'.
       
   924    ~(x = y) \/ euclid2 z x x' y' z' = euclid2 z y x' y' z') /\
       
   925 (!x y z x' y' z'.
       
   926    ~(x = y) \/ euclid2 z x' x y' z' = euclid2 z x' y y' z') /\
       
   927 (!x y z x' y' z'.
       
   928    ~(x = y) \/ euclid2 z x' y' x z' = euclid2 z x' y' y z') /\
       
   929 (!x y z x' y' z'.
       
   930    ~(x = y) \/ euclid2 z x' y' z' x = euclid2 z x' y' z' y) /\
       
   931 (!x y z v w. ~(x = y) \/ extension x z v w = extension y z v w) /\
       
   932 (!x y z v w. ~(x = y) \/ extension z x v w = extension z y v w) /\
       
   933 (!x y z v w. ~(x = y) \/ extension z v x w = extension z v y w) /\
       
   934 (!x y z v w. ~(x = y) \/ extension z v w x = extension z v w y) /\
       
   935 (!x y z v w x' y'.
       
   936    ~(x = y) \/ continuous x z v w x' y' = continuous y z v w x' y') /\
       
   937 (!x y z v w x' y'.
       
   938    ~(x = y) \/ continuous z x v w x' y' = continuous z y v w x' y') /\
       
   939 (!x y z v w x' y'.
       
   940    ~(x = y) \/ continuous z v x w x' y' = continuous z v y w x' y') /\
       
   941 (!x y z v w x' y'.
       
   942    ~(x = y) \/ continuous z v w x x' y' = continuous z v w y x' y') /\
       
   943 (!x y z v w x' y'.
       
   944    ~(x = y) \/ continuous z v w x' x y' = continuous z v w x' y y') /\
       
   945 (!x y z v w x' y'.
       
   946    ~(x = y) \/ continuous z v w x' y' x = continuous z v w x' y' y) ==>
       
   947 lower_dimension_point_1 = lower_dimension_point_2 \/
       
   948 lower_dimension_point_2 = lower_dimension_point_3 \/
       
   949 lower_dimension_point_1 = lower_dimension_point_3 ==> F`},
       
   950 
       
   951 {name = "GRP010-4",
       
   952  comments = [],
       
   953  goal = `
       
   954 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
   955 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\ (!x y. ~(x = y) \/ i x = i y) /\
       
   956 (!x y z. ~(x = y) \/ x * z = y * z) /\
       
   957 (!x y z. ~(x = y) \/ z * x = z * y) /\ (!x y z. x * y * z = x * (y * z)) /\
       
   958 (!x. 1 * x = x) /\ (!x. i x * x = 1) /\ c * b = 1 ==> ~(b * c = 1) ==> F`},
       
   959 
       
   960 {name = "GRP057-1",
       
   961  comments = [],
       
   962  goal = `
       
   963 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
   964 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\
       
   965 (!x y z v. x * i (i (i y * (i x * z)) * v * i (y * v)) = z) /\
       
   966 (!x y. ~(x = y) \/ i x = i y) /\ (!x y z. ~(x = y) \/ x * z = y * z) /\
       
   967 (!x y z. ~(x = y) \/ z * x = z * y) ==>
       
   968 ~(i a1 * a1 = i b1 * b1) \/ ~(i b2 * b2 * a2 = a2) \/
       
   969 ~(a3 * b3 * c3 = a3 * (b3 * c3)) ==> F`},
       
   970 
       
   971 {name = "GRP086-1",
       
   972  comments = ["Bug check: used to be unsolvable without sticky constraints"],
       
   973  goal = `
       
   974 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
   975 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\
       
   976 (!x y z. x * (y * z * i (x * z)) = y) /\ (!x y. ~(x = y) \/ i x = i y) /\
       
   977 (!x y z. ~(x = y) \/ x * z = y * z) /\
       
   978 (!x y z. ~(x = y) \/ z * x = z * y) ==>
       
   979 (!x y.
       
   980    ~(i a1 * a1 = i b1 * b1) \/ ~(i b2 * b2 * a2 = a2) \/
       
   981    ~(a3 * b3 * c3 = a3 * (b3 * c3)) \/ ~(x * y = y * x)) ==> F`},
       
   982 
       
   983 {name = "GRP104-1",
       
   984  comments = [],
       
   985  goal = `
       
   986 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
   987 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\
       
   988 (!x y z.
       
   989    double_divide x
       
   990      (inverse
       
   991         (double_divide
       
   992            (inverse (double_divide (double_divide x y) (inverse z))) y)) =
       
   993    z) /\ (!x y. x * y = inverse (double_divide y x)) /\
       
   994 (!x y. ~(x = y) \/ inverse x = inverse y) /\
       
   995 (!x y z. ~(x = y) \/ x * z = y * z) /\
       
   996 (!x y z. ~(x = y) \/ z * x = z * y) /\
       
   997 (!x y z. ~(x = y) \/ double_divide x z = double_divide y z) /\
       
   998 (!x y z. ~(x = y) \/ double_divide z x = double_divide z y) ==>
       
   999 (!x y.
       
  1000    ~(inverse a1 * a1 = inverse b1 * b1) \/ ~(inverse b2 * b2 * a2 = a2) \/
       
  1001    ~(a3 * b3 * c3 = a3 * (b3 * c3)) \/ ~(x * y = y * x)) ==> F`},
       
  1002 
       
  1003 {name = "GRP128-4.003",
       
  1004  comments = [],
       
  1005  goal = `
       
  1006 (!x y.
       
  1007    ~elt x \/ ~elt y \/ product e_1 x y \/ product e_2 x y \/
       
  1008    product e_3 x y) /\
       
  1009 (!x y.
       
  1010    ~elt x \/ ~elt y \/ product x e_1 y \/ product x e_2 y \/
       
  1011    product x e_3 y) /\ elt e_1 /\ elt e_2 /\ elt e_3 /\ ~(e_1 == e_2) /\
       
  1012 ~(e_1 == e_3) /\ ~(e_2 == e_1) /\ ~(e_2 == e_3) /\ ~(e_3 == e_1) /\
       
  1013 ~(e_3 == e_2) /\
       
  1014 (!x y.
       
  1015    ~elt x \/ ~elt y \/ product x y e_1 \/ product x y e_2 \/
       
  1016    product x y e_3) /\
       
  1017 (!x y z v. ~product x y z \/ ~product x y v \/ z == v) /\
       
  1018 (!x y z v. ~product x y z \/ ~product x v z \/ y == v) /\
       
  1019 (!x y z v. ~product x y z \/ ~product v y z \/ x == v) ==>
       
  1020 (!x y z v. product x y z \/ ~product x z v \/ ~product z y v) /\
       
  1021 (!x y z v. product x y z \/ ~product v x z \/ ~product v y x) /\
       
  1022 (!x y z v. ~product x y z \/ ~product z y v \/ product x z v) ==> F`},
       
  1023 
       
  1024 {name = "HEN006-3",
       
  1025  comments = [],
       
  1026  goal = `
       
  1027 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
  1028 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\
       
  1029 (!x y. ~(x <= y) \/ x / y = 0) /\ (!x y. ~(x / y = 0) \/ x <= y) /\
       
  1030 (!x y. x / y <= x) /\ (!x y z. x / y / (z / y) <= x / z / y) /\
       
  1031 (!x. 0 <= x) /\ (!x y. ~(x <= y) \/ ~(y <= x) \/ x = y) /\ (!x. x <= 1) /\
       
  1032 (!x y z. ~(x = y) \/ x / z = y / z) /\
       
  1033 (!x y z. ~(x = y) \/ z / x = z / y) /\
       
  1034 (!x y z. ~(x = y) \/ ~(x <= z) \/ y <= z) /\
       
  1035 (!x y z. ~(x = y) \/ ~(z <= x) \/ z <= y) /\ a / b <= d ==>
       
  1036 ~(a / d <= b) ==> F`},
       
  1037 
       
  1038 {name = "LAT005-3",
       
  1039  comments = ["SAM's lemma"],
       
  1040  goal = `
       
  1041 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
  1042 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\ (!x. meet x x = x) /\
       
  1043 (!x. join x x = x) /\ (!x y. meet x (join x y) = x) /\
       
  1044 (!x y. join x (meet x y) = x) /\ (!x y. meet x y = meet y x) /\
       
  1045 (!x y. join x y = join y x) /\
       
  1046 (!x y z. meet (meet x y) z = meet x (meet y z)) /\
       
  1047 (!x y z. join (join x y) z = join x (join y z)) /\
       
  1048 (!x y z. ~(x = y) \/ join x z = join y z) /\
       
  1049 (!x y z. ~(x = y) \/ join z x = join z y) /\
       
  1050 (!x y z. ~(x = y) \/ meet x z = meet y z) /\
       
  1051 (!x y z. ~(x = y) \/ meet z x = meet z y) /\ (!x. meet x 0 = 0) /\
       
  1052 (!x. join x 0 = x) /\ (!x. meet x 1 = x) /\ (!x. join x 1 = 1) /\
       
  1053 (!x y z. ~(meet x y = x) \/ meet y (join x z) = join x (meet z y)) /\
       
  1054 (!x y. ~complement x y \/ meet x y = 0) /\
       
  1055 (!x y. ~complement x y \/ join x y = 1) /\
       
  1056 (!x y. ~(meet x y = 0) \/ ~(join x y = 1) \/ complement x y) /\
       
  1057 (!x y z. ~(x = y) \/ ~complement x z \/ complement y z) /\
       
  1058 (!x y z. ~(x = y) \/ ~complement z x \/ complement z y) /\
       
  1059 complement r1 (join a b) /\ complement r2 (meet a b) ==>
       
  1060 ~(r1 = meet (join r1 (meet r2 b)) (join r1 (meet r2 a))) ==> F`},
       
  1061 
       
  1062 {name = "LCL009-1",
       
  1063  comments = [],
       
  1064  goal = `
       
  1065 (!x y. ~p (x - y) \/ ~p x \/ p y) /\
       
  1066 (!x y z. p (x - y - (z - y - (x - z)))) ==>
       
  1067 ~p (a - b - c - (a - (b - c))) ==> F`},
       
  1068 
       
  1069 {name = "LCL087-1",
       
  1070  comments =
       
  1071 ["Solved quickly by resolution when NOT tracking term-ordering constraints."],
       
  1072  goal = `
       
  1073 (!x y. ~p (implies x y) \/ ~p x \/ p y) /\
       
  1074 (!x y z v w.
       
  1075    p
       
  1076      (implies (implies (implies x y) (implies z v))
       
  1077         (implies w (implies (implies v x) (implies z x))))) ==>
       
  1078 ~p (implies a (implies b a)) ==> F`},
       
  1079 
       
  1080 {name = "LCL107-1",
       
  1081  comments = ["A very small problem that's tricky to prove."],
       
  1082  goal = `
       
  1083 (!x y. ~p (x - y) \/ ~p x \/ p y) /\
       
  1084 (!x y z v w x' y'.
       
  1085    p
       
  1086      (x - y - z - (v - w - (x' - w - (x' - v) - y')) -
       
  1087       (z - (y - x - y')))) ==> ~p (a - b - c - (e - b - (a - e - c))) ==> F`},
       
  1088 
       
  1089 {name = "LCL187-1",
       
  1090  comments = [],
       
  1091  goal = `
       
  1092 (!x. axiom (or (not (or x x)) x)) /\ (!x y. axiom (or (not x) (or y x))) /\
       
  1093 (!x y. axiom (or (not (or x y)) (or y x))) /\
       
  1094 (!x y z. axiom (or (not (or x (or y z))) (or y (or x z)))) /\
       
  1095 (!x y z. axiom (or (not (or (not x) y)) (or (not (or z x)) (or z y)))) /\
       
  1096 (!x. theorem x \/ ~axiom x) /\
       
  1097 (!x y. theorem x \/ ~axiom (or (not y) x) \/ ~theorem y) /\
       
  1098 (!x y z.
       
  1099    theorem (or (not x) y) \/ ~axiom (or (not x) z) \/
       
  1100    ~theorem (or (not z) y)) ==>
       
  1101 ~theorem (or (not p) (or (not (not p)) q)) ==> F`},
       
  1102 
       
  1103 {name = "LDA007-3",
       
  1104  comments = [],
       
  1105  goal = `
       
  1106 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
  1107 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\
       
  1108 (!x y z. f x (f y z) = f (f x y) (f x z)) /\
       
  1109 (!x y z. ~(x = y) \/ f x z = f y z) /\
       
  1110 (!x y z. ~(x = y) \/ f z x = f z y) /\ tt = f t t /\ ts = f t s /\
       
  1111 tt_ts = f tt ts /\ tk = f t k /\ tsk = f ts k ==>
       
  1112 ~(f t tsk = f tt_ts tk) ==> F`},
       
  1113 
       
  1114 {name = "NUM001-1",
       
  1115  comments = [],
       
  1116  goal = `
       
  1117 (!x. x == x) /\ (!x y z. ~(x == y) \/ ~(y == z) \/ x == z) /\
       
  1118 (!x y. x + y == y + x) /\ (!x y z. x + (y + z) == x + y + z) /\
       
  1119 (!x y. x + y - y == x) /\ (!x y. x == x + y - y) /\
       
  1120 (!x y z. x - y + z == x + z - y) /\ (!x y z. x + y - z == x - z + y) /\
       
  1121 (!x y z v. ~(x == y) \/ ~(z == x + v) \/ z == y + v) /\
       
  1122 (!x y z v. ~(x == y) \/ ~(z == v + x) \/ z == v + y) /\
       
  1123 (!x y z v. ~(x == y) \/ ~(z == x - v) \/ z == y - v) /\
       
  1124 (!x y z v. ~(x == y) \/ ~(z == v - x) \/ z == v - y) ==>
       
  1125 ~(a + b + c == a + (b + c)) ==> F`},
       
  1126 
       
  1127 {name = "NUM014-1",
       
  1128  comments = [],
       
  1129  goal = `
       
  1130 (!x. product x x (square x)) /\
       
  1131 (!x y z. ~product x y z \/ product y x z) /\
       
  1132 (!x y z. ~product x y z \/ divides x z) /\
       
  1133 (!x y z v.
       
  1134    ~prime x \/ ~product y z v \/ ~divides x v \/ divides x y \/
       
  1135    divides x z) /\ prime a /\ product a (square c) (square b) ==>
       
  1136 ~divides a b ==> F`},
       
  1137 
       
  1138 {name = "PUZ001-1",
       
  1139  comments = [],
       
  1140  goal = `
       
  1141 lives agatha /\ lives butler /\ lives charles /\
       
  1142 (!x y. ~killed x y \/ ~richer x y) /\
       
  1143 (!x. ~hates agatha x \/ ~hates charles x) /\
       
  1144 (!x. ~hates x agatha \/ ~hates x butler \/ ~hates x charles) /\
       
  1145 hates agatha agatha /\ hates agatha charles /\
       
  1146 (!x y. ~killed x y \/ hates x y) /\
       
  1147 (!x. ~hates agatha x \/ hates butler x) /\
       
  1148 (!x. ~lives x \/ richer x agatha \/ hates butler x) ==>
       
  1149 killed butler agatha \/ killed charles agatha ==> F`},
       
  1150 
       
  1151 {name = "PUZ011-1",
       
  1152  comments =
       
  1153 ["Curiosity: solved trivially by meson without cache cutting, but not with."],
       
  1154  goal = `
       
  1155 ocean atlantic /\ ocean indian /\ borders atlantic brazil /\
       
  1156 borders atlantic uruguay /\ borders atlantic venesuela /\
       
  1157 borders atlantic zaire /\ borders atlantic nigeria /\
       
  1158 borders atlantic angola /\ borders indian india /\
       
  1159 borders indian pakistan /\ borders indian iran /\ borders indian somalia /\
       
  1160 borders indian kenya /\ borders indian tanzania /\ south_american brazil /\
       
  1161 south_american uruguay /\ south_american venesuela /\ african zaire /\
       
  1162 african nigeria /\ african angola /\ african somalia /\ african kenya /\
       
  1163 african tanzania /\ asian india /\ asian pakistan /\ asian iran ==>
       
  1164 (!x y z.
       
  1165    ~ocean x \/ ~borders x y \/ ~african y \/ ~borders x z \/ ~asian z) ==>
       
  1166 F`},
       
  1167 
       
  1168 {name = "PUZ020-1",
       
  1169  comments = [],
       
  1170  goal = `
       
  1171 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
  1172 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\
       
  1173 (!x y. ~(x = y) \/ statement_by x = statement_by y) /\
       
  1174 (!x. ~person x \/ knight x \/ knave x) /\
       
  1175 (!x. ~person x \/ ~knight x \/ ~knave x) /\
       
  1176 (!x y. ~says x y \/ a_truth y \/ ~a_truth y) /\
       
  1177 (!x y. ~says x y \/ ~(x = y)) /\ (!x y. ~says x y \/ y = statement_by x) /\
       
  1178 (!x y. ~person x \/ ~(x = statement_by y)) /\
       
  1179 (!x. ~person x \/ ~a_truth (statement_by x) \/ knight x) /\
       
  1180 (!x. ~person x \/ a_truth (statement_by x) \/ knave x) /\
       
  1181 (!x y. ~(x = y) \/ ~knight x \/ knight y) /\
       
  1182 (!x y. ~(x = y) \/ ~knave x \/ knave y) /\
       
  1183 (!x y. ~(x = y) \/ ~person x \/ person y) /\
       
  1184 (!x y z. ~(x = y) \/ ~says x z \/ says y z) /\
       
  1185 (!x y z. ~(x = y) \/ ~says z x \/ says z y) /\
       
  1186 (!x y. ~(x = y) \/ ~a_truth x \/ a_truth y) /\
       
  1187 (!x y. ~knight x \/ ~says x y \/ a_truth y) /\
       
  1188 (!x y. ~knave x \/ ~says x y \/ ~a_truth y) /\ person husband /\
       
  1189 person wife /\ ~(husband = wife) /\ says husband (statement_by husband) /\
       
  1190 (~a_truth (statement_by husband) \/ ~knight husband \/ knight wife) /\
       
  1191 (a_truth (statement_by husband) \/ ~knight husband) /\
       
  1192 (a_truth (statement_by husband) \/ knight wife) /\
       
  1193 (~knight wife \/ a_truth (statement_by husband)) ==> ~knight husband ==> F`},
       
  1194 
       
  1195 {name = "ROB002-1",
       
  1196  comments = [],
       
  1197  goal = `
       
  1198 (!x. x = x) /\ (!x y. ~(x = y) \/ y = x) /\
       
  1199 (!x y z. ~(x = y) \/ ~(y = z) \/ x = z) /\ (!x y. x + y = y + x) /\
       
  1200 (!x y z. x + y + z = x + (y + z)) /\
       
  1201 (!x y. negate (negate (x + y) + negate (x + negate y)) = x) /\
       
  1202 (!x y z. ~(x = y) \/ x + z = y + z) /\
       
  1203 (!x y z. ~(x = y) \/ z + x = z + y) /\
       
  1204 (!x y. ~(x = y) \/ negate x = negate y) /\ (!x. negate (negate x) = x) ==>
       
  1205 ~(negate (a + negate b) + negate (negate a + negate b) = b) ==> F`}
       
  1206 
       
  1207 ] @
       
  1208 
       
  1209 (* ========================================================================= *)
       
  1210 (* Some problems from HOL.                                                   *)
       
  1211 (* ========================================================================= *)
       
  1212 
       
  1213 mkProblems "HOL subgoals sent to MESON_TAC" [
       
  1214 
       
  1215 {name = "Coder_4_0",
       
  1216  comments = [],
       
  1217  goal = `
       
  1218 (!x y.
       
  1219    x = y \/ ~{x . (EXT_POINT . x . y)} \/ ~{y . (EXT_POINT . x . y)}) /\
       
  1220 (!x y. x = y \/ {x . (EXT_POINT . x . y)} \/ {y . (EXT_POINT . x . y)}) /\
       
  1221 (!x y. x = y \/ ~(x . (EXT_POINT . x . y) = y . (EXT_POINT . x . y))) /\
       
  1222 (!x y. ~{x} \/ ~(x = y) \/ {y}) /\ ~{existential . (K . falsity)} /\
       
  1223 {existential . (K . truth)} /\ ~{universal . (K . falsity)} /\
       
  1224 {universal . (K . truth)} /\ ~{falsity} /\ {truth} /\
       
  1225 (!x y z. ~(APPEND . x . y = APPEND . z . y) \/ x = z) /\
       
  1226 (!x y z. ~(APPEND . x . y = APPEND . x . z) \/ y = z) ==>
       
  1227 {wf_encoder . p . e} /\ (!x. e . x = f . x \/ ~{p . x}) /\
       
  1228 {wf_encoder . p . f} /\ {p . q} /\ {p . q'} /\
       
  1229 APPEND . (f . q) . r = APPEND . (f . q') . r' /\ q = q' /\ ~(r' = r) ==> F`},
       
  1230 
       
  1231 {name = "DeepSyntax_47",
       
  1232  comments = [],
       
  1233  goal = `
       
  1234 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_add x z = int_add y v) /\
       
  1235 (!x y. ~(x = y) \/ int_neg x = int_neg y) /\
       
  1236 (!x y. ~(x = y) \/ int_of_num x = int_of_num y) /\
       
  1237 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_lt y v \/ ~int_lt x z) /\
       
  1238 (!x y z v. ~(x = y) \/ ~(z = v) \/ eval_form y v \/ ~eval_form x z) /\
       
  1239 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1240 (!x y z v.
       
  1241    int_lt (int_add x y) (int_add z v) \/ ~int_lt x z \/ ~int_lt y v) /\
       
  1242 (!x. int_add x (int_of_num 0) = x) /\
       
  1243 (!x. int_add x (int_neg x) = int_of_num 0) /\
       
  1244 (!x y z. int_add x (int_add y z) = int_add (int_add x y) z) ==>
       
  1245 int_lt (int_neg d) (int_of_num 0) /\ eval_form g x /\
       
  1246 int_lt (int_add x d) i /\ ~int_lt x i ==> F`},
       
  1247 
       
  1248 {name = "divides_9",
       
  1249  comments = [],
       
  1250  goal = `
       
  1251 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1252 (!x y z v. ~(x = y) \/ ~(z = v) \/ divides y v \/ ~divides x z) /\
       
  1253 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1254 (!x y z. x * (y * z) = x * y * z) /\ (!x y. x * y = y * x) /\
       
  1255 (!x y. ~divides x y \/ y = gv1556 x y * x) /\
       
  1256 (!x y z. divides x y \/ ~(y = z * x)) ==>
       
  1257 divides gv1546 gv1547 /\ ~divides gv1546 (gv1547 * gv1548) ==> F`},
       
  1258 
       
  1259 {name = "Encode_28",
       
  1260  comments = [],
       
  1261  goal = `
       
  1262 (!x y z v. ~(x = y) \/ ~(z = v) \/ MOD x z = MOD y v) /\
       
  1263 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1264 (!x y z v. ~(x = y) \/ ~(z = v) \/ x + z = y + v) /\
       
  1265 (!x y. ~(x = y) \/ NUMERAL x = NUMERAL y) /\
       
  1266 (!x y. ~(x = y) \/ BIT2 x = BIT2 y) /\
       
  1267 (!x y z v. ~(x = y) \/ ~(z = v) \/ EXP x z = EXP y v) /\
       
  1268 (!x y z v. ~(x = y) \/ ~(z = v) \/ DIV x z = DIV y v) /\
       
  1269 (!x y. ~(x = y) \/ BIT1 x = BIT1 y) /\
       
  1270 (!x y z v. ~(x = y) \/ ~(z = v) \/ y < v \/ ~(x < z)) /\
       
  1271 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1272 (!x y. x * y = y * x) /\
       
  1273 (!x y z. MOD (MOD x (y * z)) y = MOD x y \/ ~(0 < y) \/ ~(0 < z)) ==>
       
  1274 (!x.
       
  1275    MOD x (NUMERAL (BIT2 ZERO)) = 0 \/
       
  1276    MOD x (NUMERAL (BIT2 ZERO)) = NUMERAL (BIT1 ZERO)) /\
       
  1277 MOD
       
  1278   (DIV x (NUMERAL (BIT2 ZERO)) * NUMERAL (BIT2 ZERO) +
       
  1279    MOD x (NUMERAL (BIT2 ZERO)))
       
  1280   (NUMERAL (BIT2 ZERO) * EXP (NUMERAL (BIT2 ZERO)) m) =
       
  1281 MOD
       
  1282   (DIV y (NUMERAL (BIT2 ZERO)) * NUMERAL (BIT2 ZERO) +
       
  1283    MOD y (NUMERAL (BIT2 ZERO)))
       
  1284   (NUMERAL (BIT2 ZERO) * EXP (NUMERAL (BIT2 ZERO)) m) /\
       
  1285 0 < EXP (NUMERAL (BIT2 ZERO)) m /\ 0 < NUMERAL (BIT2 ZERO) /\
       
  1286 (!x y.
       
  1287    ~(MOD (x * NUMERAL (BIT2 ZERO) + MOD (x) (NUMERAL (BIT2 ZERO)))
       
  1288        (NUMERAL (BIT2 ZERO)) =
       
  1289      MOD (y * NUMERAL (BIT2 ZERO) + MOD (y) (NUMERAL (BIT2 ZERO)))
       
  1290        (NUMERAL (BIT2 ZERO)))) ==> F`},
       
  1291 
       
  1292 {name = "euclid_4",
       
  1293  comments = [],
       
  1294  goal = `
       
  1295 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1296 (!x y z v. ~(x = y) \/ ~(z = v) \/ divides y v \/ ~divides x z) /\
       
  1297 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1298 (!x y z. x * (y * z) = x * y * z) /\
       
  1299 (!x y. ~divides x y \/ y = x * gv5371 x y) /\
       
  1300 (!x y z. divides x y \/ ~(y = x * z)) ==>
       
  1301 divides gv5316 gv5317 /\ divides gv5315 gv5316 /\
       
  1302 ~divides gv5315 gv5317 ==> F`},
       
  1303 
       
  1304 {name = "euclid_8",
       
  1305  comments = [],
       
  1306  goal = `
       
  1307 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1308 (!x y z v. ~(x = y) \/ ~(z = v) \/ divides y v \/ ~divides x z) /\
       
  1309 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1310 (!x y. x * y = y * x) /\ (!x y z. x * (y * z) = x * y * z) /\
       
  1311 (!x y. ~divides x y \/ y = x * gv7050 x y) /\
       
  1312 (!x y z. divides x y \/ ~(y = x * z)) ==>
       
  1313 divides gv7000 gv7001 /\ ~divides gv7000 (gv7002 * gv7001) ==> F`},
       
  1314 
       
  1315 {name = "extra_arith_6",
       
  1316  comments = [],
       
  1317  goal = `
       
  1318 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1319 (!x y. ~(x = y) \/ SUC x = SUC y) /\
       
  1320 (!x y z v. ~(x = y) \/ ~(z = v) \/ y < v \/ ~(x < z)) /\
       
  1321 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1322 (!x y z. ~(SUC x * y = SUC x * z) \/ y = z) /\
       
  1323 (!x y z. SUC x * y = SUC x * z \/ ~(y = z)) /\
       
  1324 (!x y z. x * (y * z) = x * y * z) /\ (!x y. x * y = y * x) ==>
       
  1325 SUC n * b = q * (SUC n * a) /\ 0 < SUC n /\ ~(b = q * a) ==> F`},
       
  1326 
       
  1327 {name = "extra_real_5",
       
  1328  comments = [],
       
  1329  goal = `
       
  1330 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1331 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1332 {truth} ==>
       
  1333 (!x y z v.
       
  1334    {real_lt . x . (sup . P)} \/ ~{P . y} \/ ~{real_lt . x . y} \/
       
  1335    ~{P . z} \/ ~{real_lte . (gv6327 . v) . v}) /\
       
  1336 (!x y z.
       
  1337    ~{real_lt . x . (sup . P)} \/ {P . (gv6327 . x)} \/ ~{P . y} \/
       
  1338    ~{real_lte . (gv6327 . z) . z}) /\
       
  1339 (!x y z.
       
  1340    ~{real_lt . x . (sup . P)} \/ {real_lt . x . (gv6327 . x)} \/
       
  1341    ~{P . y} \/ ~{real_lte . (gv6327 . z) . z}) /\
       
  1342 (!x y z.
       
  1343    ~{real_lt . x . (sup . P)} \/ {real_lt . x . (gv6327 . x)} \/
       
  1344    ~{P . y} \/ {P . (gv6327 . z)}) /\
       
  1345 (!x y z.
       
  1346    ~{real_lt . x . (sup . P)} \/ {P . (gv6327 . x)} \/ ~{P . y} \/
       
  1347    {P . (gv6327 . z)}) /\
       
  1348 (!x y z v.
       
  1349    {real_lt . x . (sup . P)} \/ ~{P . y} \/ ~{real_lt . x . y} \/
       
  1350    ~{P . z} \/ {P . (gv6327 . v)}) /\ {P . x} /\
       
  1351 (!x. {real_lte . x . z} \/ ~{P . x}) /\
       
  1352 (!x.
       
  1353    {real_lt . (gv6328 . x) . (gv6329 . x)} \/
       
  1354    {real_lt . (gv6328 . x) . x}) /\
       
  1355 (!x. {P . (gv6329 . x)} \/ {real_lt . (gv6328 . x) . x}) /\
       
  1356 (!x y.
       
  1357    ~{real_lt . (gv6328 . x) . y} \/ ~{P . y} \/
       
  1358    ~{real_lt . (gv6328 . x) . x}) ==> F`},
       
  1359 
       
  1360 {name = "gcd_19",
       
  1361  comments = [],
       
  1362  goal = `
       
  1363 (!x y z v. ~(x = y) \/ ~(z = v) \/ x + z = y + v) /\
       
  1364 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1365 (!x y. ~(x = y) \/ NUMERAL x = NUMERAL y) /\
       
  1366 (!x y. ~(x = y) \/ BIT1 x = BIT1 y) /\ (!x y. ~(x = y) \/ SUC x = SUC y) /\
       
  1367 (!x y z v. ~(x = y) \/ ~(z = v) \/ y <= v \/ ~(x <= z)) /\
       
  1368 (!x y z v. ~(x = y) \/ ~(z = v) \/ divides y v \/ ~divides x z) /\
       
  1369 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1370 (!x y z. x * (y + z) = x * y + x * z) /\ (!x y. x + SUC y = SUC (x + y)) /\
       
  1371 (!x y. SUC x + y = SUC (x + y)) /\ (!x. x + 0 = x) /\ (!x. 0 + x = x) /\
       
  1372 (!x y. x * SUC y = x + x * y) /\ (!x y. SUC x * y = x * y + y) /\
       
  1373 (!x. x * NUMERAL (BIT1 ZERO) = x) /\ (!x. NUMERAL (BIT1 ZERO) * x = x) /\
       
  1374 (!x. x * 0 = 0) /\ (!x. 0 * x = 0) /\ (!x y z. x + (y + z) = x + y + z) /\
       
  1375 (!x y z. divides x y \/ ~divides x z \/ ~divides x (z + y)) ==>
       
  1376 ~(x + z <= x) /\ divides c (d * SUC x) /\ divides c (d * SUC (x + z)) /\
       
  1377 ~divides c (d * z) ==> F`},
       
  1378  
       
  1379 {name = "gcd_20",
       
  1380  comments = [],
       
  1381  goal = `
       
  1382 (!x y z v. ~(x = y) \/ ~(z = v) \/ x + z = y + v) /\
       
  1383 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1384 (!x y. ~(x = y) \/ NUMERAL x = NUMERAL y) /\
       
  1385 (!x y. ~(x = y) \/ BIT1 x = BIT1 y) /\ (!x y. ~(x = y) \/ SUC x = SUC y) /\
       
  1386 (!x y z v. ~(x = y) \/ ~(z = v) \/ y <= v \/ ~(x <= z)) /\
       
  1387 (!x y z v. ~(x = y) \/ ~(z = v) \/ divides y v \/ ~divides x z) /\
       
  1388 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1389 (!x y z. x * (y + z) = x * y + x * z) /\ (!x y. x + SUC y = SUC (x + y)) /\
       
  1390 (!x y. SUC x + y = SUC (x + y)) /\ (!x. x + 0 = x) /\ (!x. 0 + x = x) /\
       
  1391 (!x y. x * SUC y = x + x * y) /\ (!x y. SUC x * y = x * y + y) /\
       
  1392 (!x. x * NUMERAL (BIT1 ZERO) = x) /\ (!x. NUMERAL (BIT1 ZERO) * x = x) /\
       
  1393 (!x. x * 0 = 0) /\ (!x. 0 * x = 0) /\ (!x y z. x + (y + z) = x + y + z) /\
       
  1394 (!x y z. divides x y \/ ~divides x z \/ ~divides x (z + y)) ==>
       
  1395 y <= y + z /\ divides c (d * SUC (y + z)) /\ divides c (d * SUC y) /\
       
  1396 ~divides c (d * z) ==> F`},
       
  1397 
       
  1398 {name = "gcd_21",
       
  1399  comments = [],
       
  1400  goal = `
       
  1401 (!x y z v. ~(x = y) \/ ~(z = v) \/ x + z = y + v) /\
       
  1402 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1403 (!x y. ~(x = y) \/ NUMERAL x = NUMERAL y) /\
       
  1404 (!x y. ~(x = y) \/ BIT1 x = BIT1 y) /\ (!x y. ~(x = y) \/ SUC x = SUC y) /\
       
  1405 (!x y z v. ~(x = y) \/ ~(z = v) \/ divides y v \/ ~divides x z) /\
       
  1406 (!x y z v. ~(x = y) \/ ~(z = v) \/ y <= v \/ ~(x <= z)) /\
       
  1407 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1408 (!x y z. x * (y + z) = x * y + x * z) /\ (!x y. x + SUC y = SUC (x + y)) /\
       
  1409 (!x y. SUC x + y = SUC (x + y)) /\ (!x. x + 0 = x) /\ (!x. 0 + x = x) /\
       
  1410 (!x y. x * SUC y = x + x * y) /\ (!x y. SUC x * y = x * y + y) /\
       
  1411 (!x. x * NUMERAL (BIT1 ZERO) = x) /\ (!x. NUMERAL (BIT1 ZERO) * x = x) /\
       
  1412 (!x. x * 0 = 0) /\ (!x. 0 * x = 0) /\ (!x y z. x + (y + z) = x + y + z) /\
       
  1413 (!x y z. divides x y \/ ~divides x z \/ ~divides x (z + y)) ==>
       
  1414 divides c (d * SUC y) /\ y <= y + z /\ divides c (d * SUC (y + z)) /\
       
  1415 ~divides c (d * z) ==> F`},
       
  1416 
       
  1417 {name = "int_arith_6",
       
  1418  comments = [],
       
  1419  goal = `
       
  1420 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_mul x z = int_mul y v) /\
       
  1421 (!x y. ~(x = y) \/ int_of_num x = int_of_num y) /\
       
  1422 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_lt y v \/ ~int_lt x z) /\
       
  1423 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1424 (!x y. int_mul x y = int_mul y x) /\ (!x. ~int_lt x x) /\
       
  1425 (!x y z. ~(int_mul x y = int_mul z y) \/ y = int_of_num 0 \/ x = z) /\
       
  1426 (!x y z. int_mul x y = int_mul z y \/ ~(y = int_of_num 0)) /\
       
  1427 (!x y z. int_mul x y = int_mul z y \/ ~(x = z)) ==>
       
  1428 int_lt (int_of_num 0) gv1085 /\
       
  1429 int_mul gv1085 gv1086 = int_mul gv1085 gv1087 /\ ~(gv1086 = gv1087) ==> F`},
       
  1430 
       
  1431 {name = "int_arith_139",
       
  1432  comments = [],
       
  1433  goal = `
       
  1434 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_add x z = int_add y v) /\
       
  1435 (!x y. ~(x = y) \/ int_of_num x = int_of_num y) /\
       
  1436 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_le y v \/ ~int_le x z) /\
       
  1437 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1438 (!x. int_add (int_of_num 0) x = x) /\
       
  1439 (!x y z v.
       
  1440    int_le (int_add x y) (int_add z v) \/ ~int_le x z \/ ~int_le y v) /\
       
  1441 (!x y z. int_add x (int_add y z) = int_add (int_add x y) z) /\
       
  1442 (!x y. int_add x y = int_add y x) /\
       
  1443 (!x y z. ~int_le (int_add x y) (int_add x z) \/ int_le y z) /\
       
  1444 (!x y z. int_le (int_add x y) (int_add x z) \/ ~int_le y z) ==>
       
  1445 int_le x y /\ int_le (int_of_num 0) (int_add c x) /\
       
  1446 ~int_le (int_of_num 0) (int_add c y) ==> F`},
       
  1447 
       
  1448 {name = "llist_69",
       
  1449  comments = [],
       
  1450  goal = `
       
  1451 (!x y. ~(x = y) \/ LTL x = LTL y) /\ (!x y. ~(x = y) \/ SOME x = SOME y) /\
       
  1452 (!x y. ~(x = y) \/ LHD x = LHD y) /\
       
  1453 (!x y z v. ~(x = y) \/ ~(z = v) \/ LCONS x z = LCONS y v) /\
       
  1454 (!x y. ~(x = y) \/ g x = g y) /\ (!x y. ~(x = y) \/ THE x = THE y) /\
       
  1455 (!x y z v. ~(x = y) \/ ~(z = v) \/ LNTH z x = LNTH v y) /\
       
  1456 (!x y z v. ~(x = y) \/ ~(z = v) \/ LDROP z x = LDROP v y) /\
       
  1457 (!x y. ~(x = y) \/ SUC x = SUC y) /\
       
  1458 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1459 (!x y z. ~(x = LCONS y z) \/ LTL x = SOME z) /\
       
  1460 (!x y z. ~(x = LCONS y z) \/ LHD x = SOME y) /\
       
  1461 (!x y z. x = LCONS y z \/ ~(LHD x = SOME y) \/ ~(LTL x = SOME z)) ==>
       
  1462 LTL (g (LCONS LNIL t)) =
       
  1463 SOME (g (LCONS (THE (LTL (THE (LNTH n t)))) (THE (LDROP (SUC n) t)))) /\
       
  1464 LHD (g (LCONS LNIL t)) = SOME (THE (LHD (THE (LNTH n t)))) /\
       
  1465 LHD (g t) = SOME (THE (LHD (THE (LNTH n t)))) /\
       
  1466 LTL (g t) =
       
  1467 SOME (g (LCONS (THE (LTL (THE (LNTH n t)))) (THE (LDROP (SUC n) t)))) /\
       
  1468 ~(g (LCONS LNIL t) = g t) ==> F`},
       
  1469 
       
  1470 {name = "MachineTransition_0",
       
  1471  comments = [],
       
  1472  goal = `
       
  1473 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1474 (!x y.
       
  1475    x = y \/ ~{x . (EXT_POINT . x . y)} \/ ~{y . (EXT_POINT . x . y)}) /\
       
  1476 (!x y. x = y \/ {x . (EXT_POINT . x . y)} \/ {y . (EXT_POINT . x . y)}) /\
       
  1477 (!x y. x = y \/ ~(x . (EXT_POINT . x . y) = y . (EXT_POINT . x . y))) /\
       
  1478 (!x y. ~{x} \/ ~(x = y) \/ {y}) /\
       
  1479 (!x y z v. ~(x = y) \/ ~(z = v) \/ x . z = y . v) /\
       
  1480 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1481 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1482 {truth} /\ Eq = equality /\
       
  1483 (!x y z. ~{Next . x . y . z} \/ {x . (pair . (gv940 . x . y . z) . z)}) /\
       
  1484 (!x y z. ~{Next . x . y . z} \/ {y . (gv940 . x . y . z)}) /\
       
  1485 (!x y z v. {Next . x . y . z} \/ ~{y . v} \/ ~{x . (pair . v . z)}) /\
       
  1486 (!x y z. ~{Prev . x . y . z} \/ {y . (gv935 . x . y . z)}) /\
       
  1487 (!x y z. ~{Prev . x . y . z} \/ {x . (pair . z . (gv935 . x . y . z))}) /\
       
  1488 (!x y z v. {Prev . x . y . z} \/ ~{x . (pair . z . v)} \/ ~{y . v}) ==>
       
  1489 {Next . gv914 . (Eq . gv915) . gv916} /\
       
  1490 ~{Prev . gv914 . (Eq . gv916) . gv915} ==> F`},
       
  1491 
       
  1492 {name = "MachineTransition_2_1",
       
  1493  comments = [],
       
  1494  goal = `
       
  1495 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1496 (!x y.
       
  1497    x = y \/ ~{x . (EXT_POINT . x . y)} \/ ~{y . (EXT_POINT . x . y)}) /\
       
  1498 (!x y. x = y \/ {x . (EXT_POINT . x . y)} \/ {y . (EXT_POINT . x . y)}) /\
       
  1499 (!x y. x = y \/ ~(x . (EXT_POINT . x . y) = y . (EXT_POINT . x . y))) /\
       
  1500 (!x y. ~{x} \/ ~(x = y) \/ {y}) /\
       
  1501 (!x y z v. ~(x = y) \/ ~(z = v) \/ x . z = y . v) /\
       
  1502 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1503 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1504 {truth} /\
       
  1505 (!x y z. ReachIn . x . (Next . x . y) . z = ReachIn . x . y . (SUC . z)) /\
       
  1506 (!x y z. ~{Next . x . y . z} \/ {x . (pair . (gv5488 . x . y . z) . z)}) /\
       
  1507 (!x y z. ~{Next . x . y . z} \/ {y . (gv5488 . x . y . z)}) /\
       
  1508 (!x y z v. {Next . x . y . z} \/ ~{y . v} \/ ~{x . (pair . v . z)}) /\
       
  1509 (!x y z. ReachIn . x . y . (SUC . z) = Next . x . (ReachIn . x . y . z)) /\
       
  1510 (!x y. ReachIn . x . y . 0 = y) ==>
       
  1511 {ReachIn . R . (Next . R . B) . gv5278 . state} /\
       
  1512 (!x. ~{ReachIn . R . B . gv5278 . x} \/ ~{R . (pair . x . state)}) ==> F`},
       
  1513 
       
  1514 {name = "MachineTransition_52",
       
  1515  comments = [],
       
  1516  goal = `
       
  1517 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1518 (!x y.
       
  1519    x = y \/ ~{x . (EXT_POINT . x . y)} \/ ~{y . (EXT_POINT . x . y)}) /\
       
  1520 (!x y. x = y \/ {x . (EXT_POINT . x . y)} \/ {y . (EXT_POINT . x . y)}) /\
       
  1521 (!x y. x = y \/ ~(x . (EXT_POINT . x . y) = y . (EXT_POINT . x . y))) /\
       
  1522 (!x y. ~{x} \/ ~(x = y) \/ {y}) /\
       
  1523 (!x y z v. ~(x = y) \/ ~(z = v) \/ x . z = y . v) /\
       
  1524 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1525 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1526 {truth} /\
       
  1527 (!x y z.
       
  1528    {(<=) . (gv7028 . x . y . z) . (add . x . (NUMERAL . (BIT1 . ZERO)))} \/
       
  1529    z . (add . x . (NUMERAL . (BIT1 . ZERO))) =
       
  1530    y . (add . x . (NUMERAL . (BIT1 . ZERO)))) /\
       
  1531 (!x y z.
       
  1532    ~(x . (gv7028 . y . z . x) = z . (gv7028 . y . z . x)) \/
       
  1533    x . (add . y . (NUMERAL . (BIT1 . ZERO))) =
       
  1534    z . (add . y . (NUMERAL . (BIT1 . ZERO)))) /\
       
  1535 (!x y z v.
       
  1536    ~(x . (gv7028 . y . z . x) = z . (gv7028 . y . z . x)) \/
       
  1537    x . v = z . v \/ ~{(<=) . v . y}) /\
       
  1538 (!x y z v.
       
  1539    {(<=) . (gv7028 . x . y . z) . (add . x . (NUMERAL . (BIT1 . ZERO)))} \/
       
  1540    z . v = y . v \/ ~{(<=) . v . x}) /\
       
  1541 (!x y z v.
       
  1542    ~{(<=) . x . (add . y . (NUMERAL . (BIT1 . ZERO)))} \/ z . x = v . x \/
       
  1543    ~(z . (gv7027 . y . v . z) = v . (gv7027 . y . v . z)) \/
       
  1544    ~(z . (add . y . (NUMERAL . (BIT1 . ZERO))) =
       
  1545      v . (add . y . (NUMERAL . (BIT1 . ZERO))))) /\
       
  1546 (!x y z v.
       
  1547    ~{(<=) . x . (add . y . (NUMERAL . (BIT1 . ZERO)))} \/ z . x = v . x \/
       
  1548    {(<=) . (gv7027 . y . v . z) . y} \/
       
  1549    ~(z . (add . y . (NUMERAL . (BIT1 . ZERO))) =
       
  1550      v . (add . y . (NUMERAL . (BIT1 . ZERO))))) ==>
       
  1551 ({FinPath . (pair . R . s) . f2 . n} \/
       
  1552  ~{FinPath . (pair . R . s) . f1 . n} \/ ~(f1 . gv7034 = f2 . gv7034)) /\
       
  1553 (~{FinPath . (pair . R . s) . f2 . n} \/
       
  1554  {FinPath . (pair . R . s) . f1 . n} \/ ~(f1 . gv7034 = f2 . gv7034)) /\
       
  1555 (~{FinPath . (pair . R . s) . f2 . n} \/
       
  1556  {FinPath . (pair . R . s) . f1 . n} \/ {(<=) . gv7034 . n}) /\
       
  1557 ({FinPath . (pair . R . s) . f2 . n} \/
       
  1558  ~{FinPath . (pair . R . s) . f1 . n} \/ {(<=) . gv7034 . n}) /\
       
  1559 (!x.
       
  1560    f1 . x = f2 . x \/
       
  1561    ~{(<=) . x . (add . n . (NUMERAL . (BIT1 . ZERO)))}) /\
       
  1562 {FinPath . (pair . R . s) . f2 . n} /\
       
  1563 {R . (pair . (f2 . n) . (f2 . (add . n . (NUMERAL . (BIT1 . ZERO)))))} /\
       
  1564 ~{FinPath . (pair . R . s) . f1 . n} ==> F`},
       
  1565 
       
  1566 {name = "measure_138",
       
  1567  comments = [],
       
  1568  goal = `
       
  1569 (!x y z. ~SUBSET x y \/ IN z y \/ ~IN z x) /\
       
  1570 (!x y. SUBSET x y \/ IN (gv122874 x y) x) /\
       
  1571 (!x y. SUBSET x y \/ ~IN (gv122874 x y) y) /\
       
  1572 (!x. sigma_algebra (sigma x)) /\ (!x y z. ~IN x (INTER y z) \/ IN x z) /\
       
  1573 (!x y z. ~IN x (INTER y z) \/ IN x y) /\
       
  1574 (!x y z. IN x (INTER y z) \/ ~IN x y \/ ~IN x z) /\
       
  1575 (!x y.
       
  1576    ~sigma_algebra x \/ IN (BIGUNION y) x \/ ~countable y \/ ~SUBSET y x) /\
       
  1577 (!x y. ~sigma_algebra x \/ IN (COMPL y) x \/ ~IN y x) /\
       
  1578 (!x. ~sigma_algebra x \/ IN EMPTY x) /\
       
  1579 (!x.
       
  1580    sigma_algebra x \/ ~IN EMPTY x \/ ~IN (COMPL (gv122851 x)) x \/
       
  1581    SUBSET (gv122852 x) x) /\
       
  1582 (!x.
       
  1583    sigma_algebra x \/ ~IN EMPTY x \/ IN (gv122851 x) x \/
       
  1584    SUBSET (gv122852 x) x) /\
       
  1585 (!x.
       
  1586    sigma_algebra x \/ ~IN EMPTY x \/ IN (gv122851 x) x \/
       
  1587    countable (gv122852 x)) /\
       
  1588 (!x.
       
  1589    sigma_algebra x \/ ~IN EMPTY x \/ ~IN (COMPL (gv122851 x)) x \/
       
  1590    countable (gv122852 x)) /\
       
  1591 (!x.
       
  1592    sigma_algebra x \/ ~IN EMPTY x \/ IN (gv122851 x) x \/
       
  1593    ~IN (BIGUNION (gv122852 x)) x) /\
       
  1594 (!x.
       
  1595    sigma_algebra x \/ ~IN EMPTY x \/ ~IN (COMPL (gv122851 x)) x \/
       
  1596    ~IN (BIGUNION (gv122852 x)) x) ==>
       
  1597 SUBSET c (INTER p (sigma a)) /\
       
  1598 (!x. IN (BIGUNION x) p \/ ~countable x \/ ~SUBSET x (INTER p (sigma a))) /\
       
  1599 SUBSET a p /\ IN EMPTY p /\
       
  1600 (!x. IN (COMPL x) p \/ ~IN x (INTER p (sigma a))) /\ countable c /\
       
  1601 ~IN (BIGUNION c) (sigma a) ==> F`},
       
  1602 
       
  1603 {name = "Omega_13",
       
  1604  comments = [],
       
  1605  goal = `
       
  1606 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_mul x z = int_mul y v) /\
       
  1607 (!x y. ~(x = y) \/ int_of_num x = int_of_num y) /\
       
  1608 (!x y z v. ~(x = y) \/ ~(z = v) \/ evalupper y v \/ ~evalupper x z) /\
       
  1609 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_lt y v \/ ~int_lt x z) /\
       
  1610 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_le y v \/ ~int_le x z) /\
       
  1611 (!x y z v. ~(x = y) \/ ~(z = v) \/ y < v \/ ~(x < z)) /\
       
  1612 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1613 (!x y. ~int_le x y \/ int_lt x y \/ x = y) /\
       
  1614 (!x y. int_le x y \/ ~int_lt x y) /\ (!x y. int_le x y \/ ~(x = y)) /\
       
  1615 (!x y z.
       
  1616    int_lt x y \/
       
  1617    ~int_lt (int_mul (int_of_num z) x) (int_mul (int_of_num z) y) \/
       
  1618    ~(0 < z)) /\
       
  1619 (!x y z.
       
  1620    ~int_lt x y \/
       
  1621    int_lt (int_mul (int_of_num z) x) (int_mul (int_of_num z) y) \/
       
  1622    ~(0 < z)) /\ (!x y z. int_lt x y \/ ~int_le x z \/ ~int_lt z y) ==>
       
  1623 (!x y. evalupper x uppers \/ ~evalupper y uppers \/ ~int_lt x y) /\
       
  1624 int_le (int_mul (int_of_num p_1) x) p_2 /\ evalupper x uppers /\
       
  1625 int_lt y x /\ 0 < p_1 /\ ~int_le (int_mul (int_of_num p_1) y) p_2 ==> F`},
       
  1626 
       
  1627 {name = "Omega_71",
       
  1628  comments = [],
       
  1629  goal = `
       
  1630 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_mul x z = int_mul y v) /\
       
  1631 (!x y. ~(x = y) \/ int_of_num x = int_of_num y) /\
       
  1632 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1633 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_add x z = int_add y v) /\
       
  1634 (!x y. ~(x = y) \/ NUMERAL x = NUMERAL y) /\
       
  1635 (!x y. ~(x = y) \/ BIT1 x = BIT1 y) /\
       
  1636 (!x y z v. ~(x = y) \/ ~(z = v) \/ (x, z) = (y, v)) /\
       
  1637 (!x y z v. ~(x = y) \/ ~(z = v) \/ evallower y v \/ ~evallower x z) /\
       
  1638 (!x y z v. ~(x = y) \/ ~(z = v) \/ y < v \/ ~(x < z)) /\
       
  1639 (!x y z v. ~(x = y) \/ ~(z = v) \/ rshadow_row v y \/ ~rshadow_row z x) /\
       
  1640 (!x y z v.
       
  1641    ~(x = y) \/ ~(z = v) \/ dark_shadow_cond_row v y \/
       
  1642    ~dark_shadow_cond_row z x) /\
       
  1643 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_le y v \/ ~int_le x z) /\
       
  1644 (!x y z v. ~(x = y) \/ ~(z = v) \/ EVERY y v \/ ~EVERY x z) /\
       
  1645 (!x y z v. ~(x = y) \/ ~(z = v) \/ int_lt y v \/ ~int_lt x z) /\
       
  1646 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1647 (!x y. int_mul x y = int_mul y x) /\
       
  1648 (!x y z. int_mul x (int_mul y z) = int_mul (int_mul x y) z) /\
       
  1649 (!x y z.
       
  1650    int_le x y \/
       
  1651    ~int_le (int_mul (int_of_num z) x) (int_mul (int_of_num z) y) \/
       
  1652    ~(0 < z)) /\
       
  1653 (!x y z.
       
  1654    ~int_le x y \/
       
  1655    int_le (int_mul (int_of_num z) x) (int_mul (int_of_num z) y) \/
       
  1656    ~(0 < z)) ==>
       
  1657 (!x y z.
       
  1658    evallower (gv6249 x y z) lowers \/ ~(0 < y) \/ ~evallower x lowers \/
       
  1659    ~rshadow_row (y, z) lowers \/ ~dark_shadow_cond_row (y, z) lowers) /\
       
  1660 (!x y z.
       
  1661    int_le (int_mul (int_of_num x) (gv6249 y x z)) z \/ ~(0 < x) \/
       
  1662    ~evallower y lowers \/ ~rshadow_row (x, z) lowers \/
       
  1663    ~dark_shadow_cond_row (x, z) lowers) /\ 0 < c /\
       
  1664 int_le R (int_mul (int_of_num d) x) /\ evallower x lowers /\ 0 < d /\
       
  1665 EVERY fst_nzero lowers /\
       
  1666 int_le (int_mul (int_of_num c) R) (int_mul (int_of_num d) L) /\
       
  1667 rshadow_row (c, L) lowers /\ dark_shadow_cond_row (c, L) lowers /\
       
  1668 (!x.
       
  1669    ~int_lt (int_mul (int_of_num d) L)
       
  1670       (int_mul (int_of_num (c * d))
       
  1671          (int_add x (int_of_num (NUMERAL (BIT1 ZERO))))) \/
       
  1672    ~int_lt (int_mul (int_of_num (c * d)) x) (int_mul (int_of_num c) R)) /\
       
  1673 int_le (int_mul (int_of_num c) y) L /\ evallower y lowers /\
       
  1674 int_le (int_mul (int_of_num (c * d)) y) (int_mul (int_of_num d) L) /\
       
  1675 int_le (int_mul (int_of_num c) R) (int_mul (int_of_num (c * d)) x) /\
       
  1676 int_lt (int_mul (int_of_num (c * d)) y) (int_mul (int_of_num c) R) /\
       
  1677 0 < c * d /\
       
  1678 int_le (int_mul (int_of_num c) R) (int_mul (int_of_num (c * d)) j) /\
       
  1679 int_le (int_mul (int_of_num (c * d)) j) (int_mul (int_of_num d) L) /\
       
  1680 int_le (int_mul (int_mul (int_of_num c) (int_of_num d)) j)
       
  1681   (int_mul (int_of_num d) L) /\ ~int_le (int_mul (int_of_num c) j) L ==> F`},
       
  1682 
       
  1683 {name = "pred_set_1",
       
  1684  comments = ["Small problem that's hard for ordered resolution"],
       
  1685  goal = `
       
  1686 (!x y z. ~(x <= y) \/ p z y \/ ~p z x) /\ (!x y. x <= y \/ ~p (a x y) y) /\
       
  1687 (!x y. x <= y \/ p (a x y) x) /\ (!x y z. ~p x (y * z) \/ p x z) /\
       
  1688 (!x y z. ~p x (y * z) \/ p x y) /\
       
  1689 (!x y z. p x (y * z) \/ ~p x y \/ ~p x z) ==>
       
  1690 b <= c /\ b <= d /\ ~(b <= c * d) ==> F`},
       
  1691 
       
  1692 {name = "pred_set_54_1",
       
  1693  comments = [],
       
  1694  goal = `
       
  1695 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1696 (!x y.
       
  1697    x = y \/ ~{x . (EXT_POINT . x . y)} \/ ~{y . (EXT_POINT . x . y)}) /\
       
  1698 (!x y. x = y \/ {x . (EXT_POINT . x . y)} \/ {y . (EXT_POINT . x . y)}) /\
       
  1699 (!x y. x = y \/ ~(x . (EXT_POINT . x . y) = y . (EXT_POINT . x . y))) /\
       
  1700 (!x y. ~{x} \/ ~(x = y) \/ {y}) /\
       
  1701 (!x y z v. ~(x = y) \/ ~(z = v) \/ x . z = y . v) /\
       
  1702 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1703 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1704 {truth} /\
       
  1705 (!x y z. ~{IN . x . (INSERT . y . z)} \/ x = y \/ {IN . x . z}) /\
       
  1706 (!x y z. {IN . x . (INSERT . y . z)} \/ ~(x = y)) /\
       
  1707 (!x y z. {IN . x . (INSERT . y . z)} \/ ~{IN . x . z}) ==>
       
  1708 (!x y z. f . x . (f . y . z) = f . y . (f . x . z)) /\
       
  1709 (!x y z.
       
  1710    ITSET . f . (INSERT . x . y) . z =
       
  1711    ITSET . f . (DELETE . y . x) . (f . x . z) \/
       
  1712    ~{less_than . (CARD . y) . v} \/ ~{FINITE . y}) /\ v = CARD . s /\
       
  1713 {FINITE . s} /\ REST . (INSERT . x . s) = t /\
       
  1714 CHOICE . (INSERT . x . s) = y /\ ~{IN . y . t} /\ ~{IN . x . s} /\
       
  1715 INSERT . x . s = INSERT . y . t /\ ~(x = y) /\ ~{IN . x . t} ==> F`},
       
  1716 
       
  1717 {name = "prob_44",
       
  1718  comments = [],
       
  1719  goal = `
       
  1720 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1721 (!x y.
       
  1722    x = y \/ ~{x . (EXT_POINT . x . y)} \/ ~{y . (EXT_POINT . x . y)}) /\
       
  1723 (!x y. x = y \/ {x . (EXT_POINT . x . y)} \/ {y . (EXT_POINT . x . y)}) /\
       
  1724 (!x y. x = y \/ ~(x . (EXT_POINT . x . y) = y . (EXT_POINT . x . y))) /\
       
  1725 (!x y. ~{x} \/ ~(x = y) \/ {y}) /\
       
  1726 (!x y z v. ~(x = y) \/ ~(z = v) \/ x . z = y . v) /\
       
  1727 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1728 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1729 {truth} ==>
       
  1730 (!x y z.
       
  1731    ~{IN . x . (prefix_set . x')} \/ ~{IN . x . (prefix_set . (x))} \/
       
  1732    ~{IN . y . c} \/ ~{IN . (gv24939 . y) . (prefix_set . (x))} \/
       
  1733    ~{IN . (gv24939 . y) . (prefix_set . y)} \/
       
  1734    ~{IN . (gv24940 . z) . (prefix_set . z)} \/
       
  1735    ~{IN . (gv24940 . z) . (prefix_set . x')} \/ ~{IN . z . c}) /\
       
  1736 (!x y z.
       
  1737    ~{IN . x . (prefix_set . x')} \/ ~{IN . x . (prefix_set . (x))} \/
       
  1738    ~{IN . y . c} \/ {IN . (gv24939 . y) . (prefix_set . (x))} \/
       
  1739    {IN . (gv24939 . y) . (prefix_set . y)} \/
       
  1740    ~{IN . (gv24940 . z) . (prefix_set . z)} \/
       
  1741    ~{IN . (gv24940 . z) . (prefix_set . x')} \/ ~{IN . z . c}) /\
       
  1742 (!x y z.
       
  1743    ~{IN . x . (prefix_set . x')} \/ ~{IN . x . (prefix_set . (x))} \/
       
  1744    ~{IN . y . c} \/ {IN . (gv24939 . y) . (prefix_set . (x))} \/
       
  1745    {IN . (gv24939 . y) . (prefix_set . y)} \/
       
  1746    {IN . (gv24940 . z) . (prefix_set . z)} \/
       
  1747    {IN . (gv24940 . z) . (prefix_set . x')} \/ ~{IN . z . c}) /\
       
  1748 (!x y z.
       
  1749    ~{IN . x . (prefix_set . x')} \/ ~{IN . x . (prefix_set . (x))} \/
       
  1750    ~{IN . y . c} \/ ~{IN . (gv24939 . y) . (prefix_set . (x))} \/
       
  1751    ~{IN . (gv24939 . y) . (prefix_set . y)} \/
       
  1752    {IN . (gv24940 . z) . (prefix_set . z)} \/
       
  1753    {IN . (gv24940 . z) . (prefix_set . x')} \/ ~{IN . z . c}) /\
       
  1754 {IN . x' . c} /\
       
  1755 {IN . (PREIMAGE . ((o) . SND . f) . s) . (events . bern)} /\
       
  1756 (!x y.
       
  1757    f . x =
       
  1758    pair . (FST . (f . (prefix_seq . y))) . (sdrop . (LENGTH . y) . x) \/
       
  1759    ~{IN . y . c} \/ ~{IN . x . (prefix_set . y)}) /\
       
  1760 {IN . ((o) . SND . f) .
       
  1761  (measurable . (events . bern) . (events . bern))} /\
       
  1762 {countable . (range . ((o) . FST . f))} /\
       
  1763 {IN . ((o) . FST . f) . (measurable . (events . bern) . UNIV)} /\
       
  1764 {prefix_cover . c} /\ {IN . s . (events . bern)} /\ {IN . x . c} /\
       
  1765 ({IN . x'' . (prefix_set . x)} \/ {IN . x'' . (prefix_set . x')}) /\
       
  1766 (~{IN . x'' . (prefix_set . x)} \/ ~{IN . x'' . (prefix_set . x')}) /\
       
  1767 {IN . x''' . (prefix_set . x)} /\ {IN . x''' . (prefix_set . x')} ==> F`},
       
  1768 
       
  1769 {name = "prob_53",
       
  1770  comments = [],
       
  1771  goal = `
       
  1772 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1773 (!x y.
       
  1774    x = y \/ ~{x . (EXT_POINT . x . y)} \/ ~{y . (EXT_POINT . x . y)}) /\
       
  1775 (!x y. x = y \/ {x . (EXT_POINT . x . y)} \/ {y . (EXT_POINT . x . y)}) /\
       
  1776 (!x y. x = y \/ ~(x . (EXT_POINT . x . y) = y . (EXT_POINT . x . y))) /\
       
  1777 (!x y. ~{x} \/ ~(x = y) \/ {y}) /\
       
  1778 (!x y z v. ~(x = y) \/ ~(z = v) \/ x . z = y . v) /\
       
  1779 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1780 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1781 {truth} ==>
       
  1782 (!x y z.
       
  1783    ~{IN . x . (prefix_set . x''')} \/ ~{IN . x . (prefix_set . x'')} \/
       
  1784    ~{IN . y . c} \/ ~{IN . (gv39280 . y) . (prefix_set . x'')} \/
       
  1785    ~{IN . (gv39280 . y) . (prefix_set . y)} \/
       
  1786    ~{IN . (gv39280 . z) . (prefix_set . z)} \/
       
  1787    ~{IN . (gv39280 . z) . (prefix_set . x''')} \/ ~{IN . z . c}) /\
       
  1788 (!x y z.
       
  1789    ~{IN . x . (prefix_set . x''')} \/ ~{IN . x . (prefix_set . x'')} \/
       
  1790    ~{IN . y . c} \/ {IN . (gv39280 . y) . (prefix_set . x'')} \/
       
  1791    {IN . (gv39280 . y) . (prefix_set . y)} \/
       
  1792    ~{IN . (gv39280 . z) . (prefix_set . z)} \/
       
  1793    ~{IN . (gv39280 . z) . (prefix_set . x''')} \/ ~{IN . z . c}) /\
       
  1794 (!x y z.
       
  1795    ~{IN . x . (prefix_set . x''')} \/ ~{IN . x . (prefix_set . x'')} \/
       
  1796    ~{IN . y . c} \/ {IN . (gv39280 . y) . (prefix_set . x'')} \/
       
  1797    {IN . (gv39280 . y) . (prefix_set . y)} \/
       
  1798    {IN . (gv39280 . z) . (prefix_set . z)} \/
       
  1799    {IN . (gv39280 . z) . (prefix_set . x''')} \/ ~{IN . z . c}) /\
       
  1800 (!x y z.
       
  1801    ~{IN . x . (prefix_set . x''')} \/ ~{IN . x . (prefix_set . x'')} \/
       
  1802    ~{IN . y . c} \/ ~{IN . (gv39280 . y) . (prefix_set . x'')} \/
       
  1803    ~{IN . (gv39280 . y) . (prefix_set . y)} \/
       
  1804    {IN . (gv39280 . z) . (prefix_set . z)} \/
       
  1805    {IN . (gv39280 . z) . (prefix_set . x''')} \/ ~{IN . z . c}) /\
       
  1806 {IN . x''' . c} /\
       
  1807 {IN . (PREIMAGE . ((o) . SND . f) . x') . (events . bern)} /\
       
  1808 {IN . x' . (events . bern)} /\ {prefix_cover . c} /\
       
  1809 {IN . ((o) . FST . f) . (measurable . (events . bern) . UNIV)} /\
       
  1810 {countable . (range . ((o) . FST . f))} /\
       
  1811 {IN . ((o) . SND . f) .
       
  1812  (measurable . (events . bern) . (events . bern))} /\
       
  1813 (!x y.
       
  1814    f . x =
       
  1815    pair . (FST . (f . (prefix_seq . y))) . (sdrop . (LENGTH . y) . x) \/
       
  1816    ~{IN . y . c} \/ ~{IN . x . (prefix_set . y)}) /\
       
  1817 {IN . (PREIMAGE . ((o) . FST . f) . x) . (events . bern)} /\
       
  1818 {IN . x'' . c} /\
       
  1819 ({IN . x'''' . (prefix_set . x'')} \/
       
  1820  {IN . x'''' . (prefix_set . x''')}) /\
       
  1821 (~{IN . x'''' . (prefix_set . x'')} \/
       
  1822  ~{IN . x'''' . (prefix_set . x''')}) /\
       
  1823 {IN . x''''' . (prefix_set . x'')} /\
       
  1824 {IN . x''''' . (prefix_set . x''')} ==> F`},
       
  1825 
       
  1826 {name = "prob_extra_22",
       
  1827  comments = [],
       
  1828  goal = `
       
  1829 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1830 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1831 {truth} ==>
       
  1832 {P . x} /\ (!x. {real_lte . x . z} \/ ~{P . x}) /\
       
  1833 (!x y z v.
       
  1834    {real_lt . x . (sup . P)} \/ ~{P . y} \/ ~{real_lt . x . y} \/
       
  1835    ~{P . z} \/ ~{real_lte . (gv13960 . v) . v}) /\
       
  1836 (!x y z.
       
  1837    ~{real_lt . x . (sup . P)} \/ {P . (gv13960 . x)} \/ ~{P . y} \/
       
  1838    ~{real_lte . (gv13960 . z) . z}) /\
       
  1839 (!x y z.
       
  1840    ~{real_lt . x . (sup . P)} \/ {real_lt . x . (gv13960 . x)} \/
       
  1841    ~{P . y} \/ ~{real_lte . (gv13960 . z) . z}) /\
       
  1842 (!x y z.
       
  1843    ~{real_lt . x . (sup . P)} \/ {real_lt . x . (gv13960 . x)} \/
       
  1844    ~{P . y} \/ {P . (gv13960 . z)}) /\
       
  1845 (!x y z.
       
  1846    ~{real_lt . x . (sup . P)} \/ {P . (gv13960 . x)} \/ ~{P . y} \/
       
  1847    {P . (gv13960 . z)}) /\
       
  1848 (!x y z v.
       
  1849    {real_lt . x . (sup . P)} \/ ~{P . y} \/ ~{real_lt . x . y} \/
       
  1850    ~{P . z} \/ {P . (gv13960 . v)}) /\
       
  1851 (!x.
       
  1852    {real_lt . (gv13925 . x) . (gv13926 . x)} \/
       
  1853    {real_lt . (gv13925 . x) . x}) /\
       
  1854 (!x. {P . (gv13926 . x)} \/ {real_lt . (gv13925 . x) . x}) /\
       
  1855 (!x y.
       
  1856    ~{real_lt . (gv13925 . x) . y} \/ ~{P . y} \/
       
  1857    ~{real_lt . (gv13925 . x) . x}) ==> F`},
       
  1858 
       
  1859 {name = "root2_2",
       
  1860  comments = [],
       
  1861  goal = `
       
  1862 (!x y z v. ~(x = y) \/ ~(z = v) \/ x * z = y * v) /\
       
  1863 (!x y. ~(x = y) \/ NUMERAL x = NUMERAL y) /\
       
  1864 (!x y. ~(x = y) \/ BIT2 x = BIT2 y) /\
       
  1865 (!x y z v. ~(x = y) \/ ~(z = v) \/ EXP x z = EXP y v) /\
       
  1866 (!x y z v. ~(x = y) \/ ~(z = v) \/ y < v \/ ~(x < z)) /\
       
  1867 (!x y. ~(x = y) \/ EVEN y \/ ~EVEN x) /\
       
  1868 (!x y z. ~(x = y) \/ ~(x = z) \/ y = z) /\ (!x. x = x) /\
       
  1869 (!x y.
       
  1870    ~(EXP (NUMERAL (BIT2 ZERO) * x) (NUMERAL (BIT2 ZERO)) =
       
  1871      NUMERAL (BIT2 ZERO) * EXP y (NUMERAL (BIT2 ZERO))) \/
       
  1872    NUMERAL (BIT2 ZERO) * EXP x (NUMERAL (BIT2 ZERO)) =
       
  1873    EXP y (NUMERAL (BIT2 ZERO))) /\
       
  1874 (!x y.
       
  1875    EXP (NUMERAL (BIT2 ZERO) * x) (NUMERAL (BIT2 ZERO)) =
       
  1876    NUMERAL (BIT2 ZERO) * EXP y (NUMERAL (BIT2 ZERO)) \/
       
  1877    ~(NUMERAL (BIT2 ZERO) * EXP x (NUMERAL (BIT2 ZERO)) =
       
  1878      EXP y (NUMERAL (BIT2 ZERO)))) /\
       
  1879 (!x. ~EVEN x \/ x = NUMERAL (BIT2 ZERO) * gv4671 x) /\
       
  1880 (!x y. EVEN x \/ ~(x = NUMERAL (BIT2 ZERO) * y)) /\
       
  1881 (!x y. ~EVEN (x * y) \/ EVEN x \/ EVEN y) /\
       
  1882 (!x y. EVEN (x * y) \/ ~EVEN x) /\ (!x y. EVEN (x * y) \/ ~EVEN y) /\
       
  1883 (!x. EXP x (NUMERAL (BIT2 ZERO)) = x * x) /\
       
  1884 (!x. EVEN (NUMERAL (BIT2 ZERO) * x)) ==>
       
  1885 EXP (NUMERAL (BIT2 ZERO) * k) (NUMERAL (BIT2 ZERO)) =
       
  1886 NUMERAL (BIT2 ZERO) * EXP n (NUMERAL (BIT2 ZERO)) /\
       
  1887 (!x y.
       
  1888    ~(EXP x (NUMERAL (BIT2 ZERO)) =
       
  1889      NUMERAL (BIT2 ZERO) * EXP y (NUMERAL (BIT2 ZERO))) \/ x = 0 \/
       
  1890    ~(x < NUMERAL (BIT2 ZERO) * k)) /\
       
  1891 (!x y.
       
  1892    ~(EXP x (NUMERAL (BIT2 ZERO)) =
       
  1893      NUMERAL (BIT2 ZERO) * EXP y (NUMERAL (BIT2 ZERO))) \/ y = 0 \/
       
  1894    ~(x < NUMERAL (BIT2 ZERO) * k)) /\
       
  1895 (!x. ~(n = NUMERAL (BIT2 ZERO) * x)) ==> F`},
       
  1896 
       
  1897 {name = "TermRewriting_13",
       
  1898  comments = [],
       
  1899  goal = `
       
  1900 ~{existential . (K . falsity)} /\ {existential . (K . truth)} /\
       
  1901 ~{universal . (K . falsity)} /\ {universal . (K . truth)} /\ ~{falsity} /\
       
  1902 {truth} /\
       
  1903 (!x y z v.
       
  1904    ~{RTC . x . y . z} \/ {RTC . x . v . z} \/ ~{RTC . x . v . y}) ==>
       
  1905 {WCR . R} /\ {SN . R} /\
       
  1906 (!x y z.
       
  1907    ~{RTC . R . x . y} \/ ~{RTC . R . x . z} \/
       
  1908    {RTC . R . y . (gv1300 . x . z . y)} \/ ~{TC . R . (x) . x}) /\
       
  1909 (!x y z.
       
  1910    ~{RTC . R . x . y} \/ ~{RTC . R . x . z} \/
       
  1911    {RTC . R . z . (gv1300 . x . z . y)} \/ ~{TC . R . (x) . x}) /\
       
  1912 {RTC . R . x . y} /\ {RTC . R . x . z} /\ {R . x . y1} /\
       
  1913 {RTC . R . y1 . y} /\ {R . x . z1} /\ {RTC . R . z1 . z} /\
       
  1914 {RTC . R . y1 . x0} /\ {RTC . R . z1 . x0} /\ {TC . R . x . y1} /\
       
  1915 {TC . R . x . z1} /\ {RTC . R . y . y2} /\ {RTC . R . x0 . y2} /\
       
  1916 {RTC . R . z . z2} /\ {RTC . R . x0 . z2} /\ {TC . R . x . x0} /\
       
  1917 (!x. ~{RTC . R . y . x} \/ ~{RTC . R . z . x}) ==> F`}
       
  1918 
       
  1919 ];