src/HOL/ex/Meson_Test.thy
author wenzelm
Fri Jan 10 21:37:28 2014 +0100 (2014-01-10)
changeset 54984 da70ab8531f4
parent 54564 5df6e746ad03
child 58889 5b7a9633cfa8
permissions -rw-r--r--
more elementary management of declared hyps, below structure Assumption;
Goal.prove: insist in declared hyps;
Simplifier: declare hyps via Thm.assume_hyps;
more accurate tool context in some boundary cases;
wenzelm@24127
     1
wenzelm@24127
     2
header {* Meson test cases *}
wenzelm@24127
     3
wenzelm@24127
     4
theory Meson_Test
wenzelm@24127
     5
imports Main
wenzelm@24127
     6
begin
wenzelm@24127
     7
wenzelm@24127
     8
text {*
wenzelm@24127
     9
  WARNING: there are many potential conflicts between variables used
wenzelm@24127
    10
  below and constants declared in HOL!
wenzelm@24127
    11
*}
wenzelm@24127
    12
huffman@45204
    13
hide_const (open) implies union inter subset quotient
wenzelm@24127
    14
wenzelm@24127
    15
text {*
wenzelm@24127
    16
  Test data for the MESON proof procedure
wenzelm@24127
    17
  (Excludes the equality problems 51, 52, 56, 58)
wenzelm@24127
    18
*}
wenzelm@24127
    19
wenzelm@24127
    20
wenzelm@24127
    21
subsection {* Interactive examples *}
wenzelm@24127
    22
wenzelm@37777
    23
lemma problem_25:
wenzelm@37777
    24
  "(\<exists>x. P x) & (\<forall>x. L x --> ~ (M x & R x)) & (\<forall>x. P x --> (M x & L x)) & ((\<forall>x. P x --> Q x) | (\<exists>x. P x & R x)) --> (\<exists>x. Q x & P x)"
wenzelm@37777
    25
  apply (rule ccontr)
wenzelm@37777
    26
  ML_prf {*
wenzelm@54564
    27
    val ctxt = @{context};
wenzelm@37777
    28
    val prem25 = Thm.assume @{cprop "\<not> ?thesis"};
wenzelm@54564
    29
    val nnf25 = Meson.make_nnf ctxt prem25;
wenzelm@54564
    30
    val xsko25 = Meson.skolemize ctxt nnf25;
wenzelm@37777
    31
  *}
wenzelm@46708
    32
  apply (tactic {* cut_tac xsko25 1 THEN REPEAT (etac exE 1) *})
wenzelm@37777
    33
  ML_val {*
wenzelm@54564
    34
    val ctxt = @{context};
wenzelm@54564
    35
    val [_, sko25] = #prems (#1 (Subgoal.focus ctxt 1 (#goal @{Isar.goal})));
wenzelm@54564
    36
    val clauses25 = Meson.make_clauses ctxt [sko25];   (*7 clauses*)
wenzelm@37777
    37
    val horns25 = Meson.make_horns clauses25;     (*16 Horn clauses*)
wenzelm@37777
    38
    val go25 :: _ = Meson.gocls clauses25;
wenzelm@24127
    39
wenzelm@54984
    40
    val ctxt' = fold Thm.declare_hyps (maps (#hyps o Thm.crep_thm) (go25 :: horns25)) ctxt;
wenzelm@54564
    41
    Goal.prove ctxt' [] [] @{prop False} (fn _ =>
wenzelm@37777
    42
      rtac go25 1 THEN
wenzelm@37777
    43
      Meson.depth_prolog_tac horns25);
wenzelm@37777
    44
  *}
wenzelm@37777
    45
  oops
wenzelm@24127
    46
wenzelm@37777
    47
lemma problem_26:
wenzelm@37777
    48
  "((\<exists>x. p x) = (\<exists>x. q x)) & (\<forall>x. \<forall>y. p x & q y --> (r x = s y)) --> ((\<forall>x. p x --> r x) = (\<forall>x. q x --> s x))"
wenzelm@37777
    49
  apply (rule ccontr)
wenzelm@37777
    50
  ML_prf {*
wenzelm@54564
    51
    val ctxt = @{context};
wenzelm@37777
    52
    val prem26 = Thm.assume @{cprop "\<not> ?thesis"}
wenzelm@54564
    53
    val nnf26 = Meson.make_nnf ctxt prem26;
wenzelm@54564
    54
    val xsko26 = Meson.skolemize ctxt nnf26;
wenzelm@37777
    55
  *}
wenzelm@46708
    56
  apply (tactic {* cut_tac xsko26 1 THEN REPEAT (etac exE 1) *})
wenzelm@37777
    57
  ML_val {*
wenzelm@54564
    58
    val ctxt = @{context};
wenzelm@54564
    59
    val [_, sko26] = #prems (#1 (Subgoal.focus ctxt 1 (#goal @{Isar.goal})));
wenzelm@54564
    60
    val clauses26 = Meson.make_clauses ctxt [sko26];
wenzelm@54564
    61
    val _ = @{assert} (length clauses26 = 9);
wenzelm@54564
    62
    val horns26 = Meson.make_horns clauses26;
wenzelm@54564
    63
    val _ = @{assert} (length horns26 = 24);
wenzelm@37777
    64
    val go26 :: _ = Meson.gocls clauses26;
wenzelm@24127
    65
wenzelm@54984
    66
    val ctxt' = fold Thm.declare_hyps (maps (#hyps o Thm.crep_thm) (go26 :: horns26)) ctxt;
wenzelm@54564
    67
    Goal.prove ctxt' [] [] @{prop False} (fn _ =>
wenzelm@37777
    68
      rtac go26 1 THEN
wenzelm@37777
    69
      Meson.depth_prolog_tac horns26);  (*7 ms*)
wenzelm@37777
    70
    (*Proof is of length 107!!*)
wenzelm@37777
    71
  *}
wenzelm@37777
    72
  oops
wenzelm@24127
    73
wenzelm@37777
    74
lemma problem_43:  -- "NOW PROVED AUTOMATICALLY!!"  (*16 Horn clauses*)
wenzelm@37777
    75
  "(\<forall>x. \<forall>y. q x y = (\<forall>z. p z x = (p z y::bool))) --> (\<forall>x. (\<forall>y. q x y = (q y x::bool)))"
wenzelm@37777
    76
  apply (rule ccontr)
wenzelm@37777
    77
  ML_prf {*
wenzelm@54564
    78
    val ctxt = @{context};
wenzelm@37777
    79
    val prem43 = Thm.assume @{cprop "\<not> ?thesis"};
wenzelm@54564
    80
    val nnf43 = Meson.make_nnf ctxt prem43;
wenzelm@54564
    81
    val xsko43 = Meson.skolemize ctxt nnf43;
wenzelm@37777
    82
  *}
wenzelm@46708
    83
  apply (tactic {* cut_tac xsko43 1 THEN REPEAT (etac exE 1) *})
wenzelm@37777
    84
  ML_val {*
wenzelm@54564
    85
    val ctxt = @{context};
wenzelm@54564
    86
    val [_, sko43] = #prems (#1 (Subgoal.focus ctxt 1 (#goal @{Isar.goal})));
wenzelm@54564
    87
    val clauses43 = Meson.make_clauses ctxt [sko43];
wenzelm@54564
    88
    val _ = @{assert} (length clauses43 = 6);
wenzelm@54564
    89
    val horns43 = Meson.make_horns clauses43;
wenzelm@54564
    90
    val _ = @{assert} (length horns43 = 16);
wenzelm@37777
    91
    val go43 :: _ = Meson.gocls clauses43;
wenzelm@24127
    92
wenzelm@54984
    93
    val ctxt' = fold Thm.declare_hyps (maps (#hyps o Thm.crep_thm) (go43 :: horns43)) ctxt;
wenzelm@54564
    94
    Goal.prove ctxt' [] [] @{prop False} (fn _ =>
wenzelm@37777
    95
      rtac go43 1 THEN
wenzelm@37777
    96
      Meson.best_prolog_tac Meson.size_of_subgoals horns43);   (*7ms*)
wenzelm@37777
    97
    *}
wenzelm@37777
    98
  oops
wenzelm@24127
    99
wenzelm@24128
   100
(*
wenzelm@24127
   101
#1  (q x xa ==> ~ q x xa) ==> q xa x
wenzelm@24127
   102
#2  (q xa x ==> ~ q xa x) ==> q x xa
wenzelm@24127
   103
#3  (~ q x xa ==> q x xa) ==> ~ q xa x
wenzelm@24127
   104
#4  (~ q xa x ==> q xa x) ==> ~ q x xa
wenzelm@24127
   105
#5  [| ~ q ?U ?V ==> q ?U ?V; ~ p ?W ?U ==> p ?W ?U |] ==> p ?W ?V
wenzelm@24127
   106
#6  [| ~ p ?W ?U ==> p ?W ?U; p ?W ?V ==> ~ p ?W ?V |] ==> ~ q ?U ?V
wenzelm@24127
   107
#7  [| p ?W ?V ==> ~ p ?W ?V; ~ q ?U ?V ==> q ?U ?V |] ==> ~ p ?W ?U
wenzelm@24127
   108
#8  [| ~ q ?U ?V ==> q ?U ?V; ~ p ?W ?V ==> p ?W ?V |] ==> p ?W ?U
wenzelm@24127
   109
#9  [| ~ p ?W ?V ==> p ?W ?V; p ?W ?U ==> ~ p ?W ?U |] ==> ~ q ?U ?V
wenzelm@24127
   110
#10 [| p ?W ?U ==> ~ p ?W ?U; ~ q ?U ?V ==> q ?U ?V |] ==> ~ p ?W ?V
wenzelm@24127
   111
#11 [| p (xb ?U ?V) ?U ==> ~ p (xb ?U ?V) ?U;
wenzelm@24127
   112
       p (xb ?U ?V) ?V ==> ~ p (xb ?U ?V) ?V |] ==> q ?U ?V
wenzelm@24127
   113
#12 [| p (xb ?U ?V) ?V ==> ~ p (xb ?U ?V) ?V; q ?U ?V ==> ~ q ?U ?V |] ==>
wenzelm@24127
   114
    p (xb ?U ?V) ?U
wenzelm@24127
   115
#13 [| q ?U ?V ==> ~ q ?U ?V; p (xb ?U ?V) ?U ==> ~ p (xb ?U ?V) ?U |] ==>
wenzelm@24127
   116
    p (xb ?U ?V) ?V
wenzelm@24127
   117
#14 [| ~ p (xb ?U ?V) ?U ==> p (xb ?U ?V) ?U;
wenzelm@24127
   118
       ~ p (xb ?U ?V) ?V ==> p (xb ?U ?V) ?V |] ==> q ?U ?V
wenzelm@24127
   119
#15 [| ~ p (xb ?U ?V) ?V ==> p (xb ?U ?V) ?V; q ?U ?V ==> ~ q ?U ?V |] ==>
wenzelm@24127
   120
    ~ p (xb ?U ?V) ?U
wenzelm@24127
   121
#16 [| q ?U ?V ==> ~ q ?U ?V; ~ p (xb ?U ?V) ?U ==> p (xb ?U ?V) ?U |] ==>
wenzelm@24127
   122
    ~ p (xb ?U ?V) ?V
wenzelm@24127
   123
wenzelm@24127
   124
And here is the proof! (Unkn is the start state after use of goal clause)
wenzelm@24127
   125
[Unkn, Res ([Thm "#14"], false, 1), Res ([Thm "#5"], false, 1),
wenzelm@24127
   126
   Res ([Thm "#1"], false, 1), Asm 1, Res ([Thm "#13"], false, 1), Asm 2,
wenzelm@24127
   127
   Asm 1, Res ([Thm "#13"], false, 1), Asm 1, Res ([Thm "#10"], false, 1),
wenzelm@24127
   128
   Res ([Thm "#16"], false, 1), Asm 2, Asm 1, Res ([Thm "#1"], false, 1),
wenzelm@24127
   129
   Asm 1, Res ([Thm "#14"], false, 1), Res ([Thm "#5"], false, 1),
wenzelm@24127
   130
   Res ([Thm "#2"], false, 1), Asm 1, Res ([Thm "#13"], false, 1), Asm 2,
wenzelm@24127
   131
   Asm 1, Res ([Thm "#8"], false, 1), Res ([Thm "#2"], false, 1), Asm 1,
wenzelm@24127
   132
   Res ([Thm "#12"], false, 1), Asm 2, Asm 1] : lderiv list
wenzelm@24127
   133
*)
wenzelm@24127
   134
wenzelm@24127
   135
wenzelm@24127
   136
text {*
wenzelm@24127
   137
  MORE and MUCH HARDER test data for the MESON proof procedure
wenzelm@24127
   138
  (courtesy John Harrison).
wenzelm@24127
   139
*}
wenzelm@24127
   140
wenzelm@24127
   141
(* ========================================================================= *)
wenzelm@24127
   142
(* 100 problems selected from the TPTP library                               *)
wenzelm@24127
   143
(* ========================================================================= *)
wenzelm@24127
   144
wenzelm@24127
   145
(*
wenzelm@24127
   146
 * Original timings for John Harrison's MESON_TAC.
wenzelm@24127
   147
 * Timings below on a 600MHz Pentium III (perch)
wenzelm@24127
   148
 * Some timings below refer to griffon, which is a dual 2.5GHz Power Mac G5.
wenzelm@24128
   149
 *
wenzelm@24127
   150
 * A few variable names have been changed to avoid clashing with constants.
wenzelm@24127
   151
 *
wenzelm@24127
   152
 * Changed numeric constants e.g. 0, 1, 2... to num0, num1, num2...
wenzelm@24127
   153
 *
wenzelm@24127
   154
 * Here's a list giving typical CPU times, as well as common names and
wenzelm@24127
   155
 * literature references.
wenzelm@24127
   156
 *
wenzelm@24127
   157
 * BOO003-1     34.6    B2 part 1 [McCharen, et al., 1976]; Lemma proved [Overbeek, et al., 1976]; prob2_part1.ver1.in [ANL]
wenzelm@24127
   158
 * BOO004-1     36.7    B2 part 2 [McCharen, et al., 1976]; Lemma proved [Overbeek, et al., 1976]; prob2_part2.ver1 [ANL]
wenzelm@24127
   159
 * BOO005-1     47.4    B3 part 1 [McCharen, et al., 1976]; B5 [McCharen, et al., 1976]; Lemma proved [Overbeek, et al., 1976]; prob3_part1.ver1.in [ANL]
wenzelm@24127
   160
 * BOO006-1     48.4    B3 part 2 [McCharen, et al., 1976]; B6 [McCharen, et al., 1976]; Lemma proved [Overbeek, et al., 1976]; prob3_part2.ver1 [ANL]
wenzelm@24127
   161
 * BOO011-1     19.0    B7 [McCharen, et al., 1976]; prob7.ver1 [ANL]
wenzelm@24127
   162
 * CAT001-3     45.2    C1 [McCharen, et al., 1976]; p1.ver3.in [ANL]
wenzelm@24127
   163
 * CAT003-3     10.5    C3 [McCharen, et al., 1976]; p3.ver3.in [ANL]
wenzelm@24127
   164
 * CAT005-1    480.1    C5 [McCharen, et al., 1976]; p5.ver1.in [ANL]
wenzelm@24127
   165
 * CAT007-1     11.9    C7 [McCharen, et al., 1976]; p7.ver1.in [ANL]
wenzelm@24127
   166
 * CAT018-1     81.3    p18.ver1.in [ANL]
wenzelm@24127
   167
 * COL001-2     16.0    C1 [Wos & McCune, 1988]
wenzelm@24127
   168
 * COL023-1      5.1    [McCune & Wos, 1988]
wenzelm@24127
   169
 * COL032-1     15.8    [McCune & Wos, 1988]
wenzelm@24127
   170
 * COL052-2     13.2    bird4.ver2.in [ANL]
wenzelm@24127
   171
 * COL075-2    116.9    [Jech, 1994]
wenzelm@24127
   172
 * COM001-1      1.7    shortburst [Wilson & Minker, 1976]
wenzelm@24127
   173
 * COM002-1      4.4    burstall [Wilson & Minker, 1976]
wenzelm@24127
   174
 * COM002-2      7.4
wenzelm@24127
   175
 * COM003-2     22.1    [Brushi, 1991]
wenzelm@24127
   176
 * COM004-1     45.1
wenzelm@24127
   177
 * GEO003-1     71.7    T3 [McCharen, et al., 1976]; t3.ver1.in [ANL]
wenzelm@24127
   178
 * GEO017-2     78.8    D4.1 [Quaife, 1989]
wenzelm@24127
   179
 * GEO027-3    181.5    D10.1 [Quaife, 1989]
wenzelm@24127
   180
 * GEO058-2    104.0    R4 [Quaife, 1989]
wenzelm@24127
   181
 * GEO079-1      2.4    GEOMETRY THEOREM [Slagle, 1967]
wenzelm@24127
   182
 * GRP001-1     47.8    CADE-11 Competition 1 [Overbeek, 1990]; G1 [McCharen, et al., 1976]; THEOREM 1 [Lusk & McCune, 1993]; wos10 [Wilson & Minker, 1976]; xsquared.ver1.in [ANL]; [Robinson, 1963]
wenzelm@24127
   183
 * GRP008-1     50.4    Problem 4 [Wos, 1965]; wos4 [Wilson & Minker, 1976]
wenzelm@24127
   184
 * GRP013-1     40.2    Problem 11 [Wos, 1965]; wos11 [Wilson & Minker, 1976]
wenzelm@24127
   185
 * GRP037-3     43.8    Problem 17 [Wos, 1965]; wos17 [Wilson & Minker, 1976]
wenzelm@24127
   186
 * GRP031-2      3.2    ls23 [Lawrence & Starkey, 1974]; ls23 [Wilson & Minker, 1976]
wenzelm@24127
   187
 * GRP034-4      2.5    ls26 [Lawrence & Starkey, 1974]; ls26 [Wilson & Minker, 1976]
wenzelm@24127
   188
 * GRP047-2     11.7    [Veroff, 1992]
wenzelm@24127
   189
 * GRP130-1    170.6    Bennett QG8 [TPTP]; QG8 [Slaney, 1993]
wenzelm@24127
   190
 * GRP156-1     48.7    ax_mono1c [Schulz, 1995]
wenzelm@24127
   191
 * GRP168-1    159.1    p01a [Schulz, 1995]
wenzelm@24127
   192
 * HEN003-3     39.9    HP3 [McCharen, et al., 1976]
wenzelm@24127
   193
 * HEN007-2    125.7    H7 [McCharen, et al., 1976]
wenzelm@24127
   194
 * HEN008-4     62.0    H8 [McCharen, et al., 1976]
wenzelm@24127
   195
 * HEN009-5    136.3    H9 [McCharen, et al., 1976]; hp9.ver3.in [ANL]
wenzelm@24127
   196
 * HEN012-3     48.5    new.ver2.in [ANL]
wenzelm@24127
   197
 * LCL010-1    370.9    EC-73 [McCune & Wos, 1992]; ec_yq.in [OTTER]
wenzelm@24127
   198
 * LCL077-2     51.6    morgan.two.ver1.in [ANL]
wenzelm@24127
   199
 * LCL082-1     14.6    IC-1.1 [Wos, et al., 1990]; IC-65 [McCune & Wos, 1992]; ls2 [SETHEO]; S1 [Pfenning, 1988]
wenzelm@24127
   200
 * LCL111-1    585.6    CADE-11 Competition 6 [Overbeek, 1990]; mv25.in [OTTER]; MV-57 [McCune & Wos, 1992]; mv.in part 2 [OTTER]; ovb6 [SETHEO]; THEOREM 6 [Lusk & McCune, 1993]
wenzelm@24127
   201
 * LCL143-1     10.9    Lattice structure theorem 2 [Bonacina, 1991]
wenzelm@24127
   202
 * LCL182-1    271.6    Problem 2.16 [Whitehead & Russell, 1927]
wenzelm@24127
   203
 * LCL200-1     12.0    Problem 2.46 [Whitehead & Russell, 1927]
wenzelm@24127
   204
 * LCL215-1    214.4    Problem 2.62 [Whitehead & Russell, 1927]; Problem 2.63 [Whitehead & Russell, 1927]
wenzelm@24127
   205
 * LCL230-2      0.2    Pelletier 5 [Pelletier, 1986]
wenzelm@24127
   206
 * LDA003-1     68.5    Problem 3 [Jech, 1993]
wenzelm@24127
   207
 * MSC002-1      9.2    DBABHP [Michie, et al., 1972]; DBABHP [Wilson & Minker, 1976]
wenzelm@24127
   208
 * MSC003-1      3.2    HASPARTS-T1 [Wilson & Minker, 1976]
wenzelm@24127
   209
 * MSC004-1      9.3    HASPARTS-T2 [Wilson & Minker, 1976]
wenzelm@24127
   210
 * MSC005-1      1.8    Problem 5.1 [Plaisted, 1982]
wenzelm@24127
   211
 * MSC006-1     39.0    nonob.lop [SETHEO]
wenzelm@24127
   212
 * NUM001-1     14.0    Chang-Lee-10a [Chang, 1970]; ls28 [Lawrence & Starkey, 1974]; ls28 [Wilson & Minker, 1976]
wenzelm@24127
   213
 * NUM021-1     52.3    ls65 [Lawrence & Starkey, 1974]; ls65 [Wilson & Minker, 1976]
wenzelm@24127
   214
 * NUM024-1     64.6    ls75 [Lawrence & Starkey, 1974]; ls75 [Wilson & Minker, 1976]
wenzelm@24127
   215
 * NUM180-1    621.2    LIM2.1 [Quaife]
wenzelm@24127
   216
 * NUM228-1    575.9    TRECDEF4 cor. [Quaife]
wenzelm@24127
   217
 * PLA002-1     37.4    Problem 5.7 [Plaisted, 1982]
wenzelm@24127
   218
 * PLA006-1      7.2    [Segre & Elkan, 1994]
wenzelm@24127
   219
 * PLA017-1    484.8    [Segre & Elkan, 1994]
wenzelm@24127
   220
 * PLA022-1     19.1    [Segre & Elkan, 1994]
wenzelm@24127
   221
 * PLA022-2     19.7    [Segre & Elkan, 1994]
wenzelm@24127
   222
 * PRV001-1     10.3    PV1 [McCharen, et al., 1976]
wenzelm@24127
   223
 * PRV003-1      3.9    E2 [McCharen, et al., 1976]; v2.lop [SETHEO]
wenzelm@24127
   224
 * PRV005-1      4.3    E4 [McCharen, et al., 1976]; v4.lop [SETHEO]
wenzelm@24127
   225
 * PRV006-1      6.0    E5 [McCharen, et al., 1976]; v5.lop [SETHEO]
wenzelm@24127
   226
 * PRV009-1      2.2    Hoares FIND [Bledsoe, 1977]; Problem 5.5 [Plaisted, 1982]
wenzelm@24127
   227
 * PUZ012-1      3.5    Boxes-of-fruit [Wos, 1988]; Boxes-of-fruit [Wos, et al., 1992]; boxes.ver1.in [ANL]
wenzelm@24127
   228
 * PUZ020-1     56.6    knightknave.in [ANL]
wenzelm@24127
   229
 * PUZ025-1     58.4    Problem 35 [Smullyan, 1978]; tandl35.ver1.in [ANL]
wenzelm@24127
   230
 * PUZ029-1      5.1    pigs.ver1.in [ANL]
wenzelm@24127
   231
 * RNG001-3     82.4    EX6-T? [Wilson & Minker, 1976]; ex6.lop [SETHEO]; Example 6a [Fleisig, et al., 1974]; FEX6T1 [SPRFN]; FEX6T2 [SPRFN]
wenzelm@24127
   232
 * RNG001-5    399.8    Problem 21 [Wos, 1965]; wos21 [Wilson & Minker, 1976]
wenzelm@24127
   233
 * RNG011-5      8.4    CADE-11 Competition Eq-10 [Overbeek, 1990]; PROBLEM 10 [Zhang, 1993]; THEOREM EQ-10 [Lusk & McCune, 1993]
wenzelm@24127
   234
 * RNG023-6      9.1    [Stevens, 1987]
wenzelm@24127
   235
 * RNG028-2      9.3    PROOF III [Anantharaman & Hsiang, 1990]
wenzelm@24127
   236
 * RNG038-2     16.2    Problem 27 [Wos, 1965]; wos27 [Wilson & Minker, 1976]
wenzelm@24127
   237
 * RNG040-2    180.5    Problem 29 [Wos, 1965]; wos29 [Wilson & Minker, 1976]
wenzelm@24127
   238
 * RNG041-1     35.8    Problem 30 [Wos, 1965]; wos30 [Wilson & Minker, 1976]
wenzelm@24127
   239
 * ROB010-1    205.0    Lemma 3.3 [Winker, 1990]; RA2 [Lusk & Wos, 1992]
wenzelm@24127
   240
 * ROB013-1     23.6    Lemma 3.5 [Winker, 1990]
wenzelm@24127
   241
 * ROB016-1     15.2    Corollary 3.7 [Winker, 1990]
wenzelm@24127
   242
 * ROB021-1    230.4    [McCune, 1992]
wenzelm@24127
   243
 * SET005-1    192.2    ls108 [Lawrence & Starkey, 1974]; ls108 [Wilson & Minker, 1976]
wenzelm@24127
   244
 * SET009-1     10.5    ls116 [Lawrence & Starkey, 1974]; ls116 [Wilson & Minker, 1976]
wenzelm@24127
   245
 * SET025-4    694.7    Lemma 10 [Boyer, et al, 1986]
wenzelm@24127
   246
 * SET046-5      2.3    p42.in [ANL]; Pelletier 42 [Pelletier, 1986]
wenzelm@24127
   247
 * SET047-5      3.7    p43.in [ANL]; Pelletier 43 [Pelletier, 1986]
wenzelm@24127
   248
 * SYN034-1      2.8    QW [Michie, et al., 1972]; QW [Wilson & Minker, 1976]
wenzelm@24127
   249
 * SYN071-1      1.9    Pelletier 48 [Pelletier, 1986]
wenzelm@24127
   250
 * SYN349-1     61.7    Ch17N5 [Tammet, 1994]
wenzelm@24127
   251
 * SYN352-1      5.5    Ch18N4 [Tammet, 1994]
wenzelm@24127
   252
 * TOP001-2     61.1    Lemma 1a [Wick & McCune, 1989]
wenzelm@24127
   253
 * TOP002-2      0.4    Lemma 1b [Wick & McCune, 1989]
wenzelm@24127
   254
 * TOP004-1    181.6    Lemma 1d [Wick & McCune, 1989]
wenzelm@24127
   255
 * TOP004-2      9.0    Lemma 1d [Wick & McCune, 1989]
wenzelm@24127
   256
 * TOP005-2    139.8    Lemma 1e [Wick & McCune, 1989]
wenzelm@24127
   257
 *)
wenzelm@24127
   258
wenzelm@24128
   259
abbreviation "EQU001_0_ax equal \<equiv> (\<forall>X. equal(X::'a,X)) &
wenzelm@24128
   260
  (\<forall>Y X. equal(X::'a,Y) --> equal(Y::'a,X)) &
wenzelm@24127
   261
  (\<forall>Y X Z. equal(X::'a,Y) & equal(Y::'a,Z) --> equal(X::'a,Z))"
wenzelm@24127
   262
wenzelm@24127
   263
abbreviation "BOO002_0_ax equal INVERSE multiplicative_identity
wenzelm@24127
   264
  additive_identity multiply product add sum \<equiv>
wenzelm@24128
   265
  (\<forall>X Y. sum(X::'a,Y,add(X::'a,Y))) &
wenzelm@24128
   266
  (\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
   267
  (\<forall>Y X Z. sum(X::'a,Y,Z) --> sum(Y::'a,X,Z)) &
wenzelm@24128
   268
  (\<forall>Y X Z. product(X::'a,Y,Z) --> product(Y::'a,X,Z)) &
wenzelm@24128
   269
  (\<forall>X. sum(additive_identity::'a,X,X)) &
wenzelm@24128
   270
  (\<forall>X. sum(X::'a,additive_identity,X)) &
wenzelm@24128
   271
  (\<forall>X. product(multiplicative_identity::'a,X,X)) &
wenzelm@24128
   272
  (\<forall>X. product(X::'a,multiplicative_identity,X)) &
wenzelm@24128
   273
  (\<forall>Y Z X V3 V1 V2 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & product(X::'a,V3,V4) --> sum(V1::'a,V2,V4)) &
wenzelm@24128
   274
  (\<forall>Y Z V1 V2 X V3 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & sum(V1::'a,V2,V4) --> product(X::'a,V3,V4)) &
wenzelm@24128
   275
  (\<forall>Y Z V3 X V1 V2 V4. product(Y::'a,X,V1) & product(Z::'a,X,V2) & sum(Y::'a,Z,V3) & product(V3::'a,X,V4) --> sum(V1::'a,V2,V4)) &
wenzelm@24128
   276
  (\<forall>Y Z V1 V2 V3 X V4. product(Y::'a,X,V1) & product(Z::'a,X,V2) & sum(Y::'a,Z,V3) & sum(V1::'a,V2,V4) --> product(V3::'a,X,V4)) &
wenzelm@24128
   277
  (\<forall>Y Z X V3 V1 V2 V4. sum(X::'a,Y,V1) & sum(X::'a,Z,V2) & product(Y::'a,Z,V3) & sum(X::'a,V3,V4) --> product(V1::'a,V2,V4)) &
wenzelm@24128
   278
  (\<forall>Y Z V1 V2 X V3 V4. sum(X::'a,Y,V1) & sum(X::'a,Z,V2) & product(Y::'a,Z,V3) & product(V1::'a,V2,V4) --> sum(X::'a,V3,V4)) &
wenzelm@24128
   279
  (\<forall>Y Z V3 X V1 V2 V4. sum(Y::'a,X,V1) & sum(Z::'a,X,V2) & product(Y::'a,Z,V3) & sum(V3::'a,X,V4) --> product(V1::'a,V2,V4)) &
wenzelm@24128
   280
  (\<forall>Y Z V1 V2 V3 X V4. sum(Y::'a,X,V1) & sum(Z::'a,X,V2) & product(Y::'a,Z,V3) & product(V1::'a,V2,V4) --> sum(V3::'a,X,V4)) &
wenzelm@24128
   281
  (\<forall>X. sum(INVERSE(X),X,multiplicative_identity)) &
wenzelm@24128
   282
  (\<forall>X. sum(X::'a,INVERSE(X),multiplicative_identity)) &
wenzelm@24128
   283
  (\<forall>X. product(INVERSE(X),X,additive_identity)) &
wenzelm@24128
   284
  (\<forall>X. product(X::'a,INVERSE(X),additive_identity)) &
wenzelm@24128
   285
  (\<forall>X Y U V. sum(X::'a,Y,U) & sum(X::'a,Y,V) --> equal(U::'a,V)) &
wenzelm@24127
   286
  (\<forall>X Y U V. product(X::'a,Y,U) & product(X::'a,Y,V) --> equal(U::'a,V))"
wenzelm@24127
   287
wenzelm@24127
   288
abbreviation "BOO002_0_eq INVERSE multiply add product sum equal \<equiv>
wenzelm@24128
   289
  (\<forall>X Y W Z. equal(X::'a,Y) & sum(X::'a,W,Z) --> sum(Y::'a,W,Z)) &
wenzelm@24128
   290
  (\<forall>X W Y Z. equal(X::'a,Y) & sum(W::'a,X,Z) --> sum(W::'a,Y,Z)) &
wenzelm@24128
   291
  (\<forall>X W Z Y. equal(X::'a,Y) & sum(W::'a,Z,X) --> sum(W::'a,Z,Y)) &
wenzelm@24128
   292
  (\<forall>X Y W Z. equal(X::'a,Y) & product(X::'a,W,Z) --> product(Y::'a,W,Z)) &
wenzelm@24128
   293
  (\<forall>X W Y Z. equal(X::'a,Y) & product(W::'a,X,Z) --> product(W::'a,Y,Z)) &
wenzelm@24128
   294
  (\<forall>X W Z Y. equal(X::'a,Y) & product(W::'a,Z,X) --> product(W::'a,Z,Y)) &
wenzelm@24128
   295
  (\<forall>X Y W. equal(X::'a,Y) --> equal(add(X::'a,W),add(Y::'a,W))) &
wenzelm@24128
   296
  (\<forall>X W Y. equal(X::'a,Y) --> equal(add(W::'a,X),add(W::'a,Y))) &
wenzelm@24128
   297
  (\<forall>X Y W. equal(X::'a,Y) --> equal(multiply(X::'a,W),multiply(Y::'a,W))) &
wenzelm@24128
   298
  (\<forall>X W Y. equal(X::'a,Y) --> equal(multiply(W::'a,X),multiply(W::'a,Y))) &
wenzelm@24127
   299
  (\<forall>X Y. equal(X::'a,Y) --> equal(INVERSE(X),INVERSE(Y)))"
wenzelm@24127
   300
wenzelm@24127
   301
(*51194 inferences so far.  Searching to depth 13.  232.9 secs*)
wenzelm@24127
   302
lemma BOO003_1:
wenzelm@24127
   303
  "EQU001_0_ax equal &
wenzelm@24127
   304
  BOO002_0_ax equal INVERSE multiplicative_identity additive_identity multiply product add sum &
wenzelm@24127
   305
  BOO002_0_eq INVERSE multiply add product sum equal &
wenzelm@24127
   306
  (~product(x::'a,x,x)) --> False"
wenzelm@24127
   307
  oops
wenzelm@24127
   308
wenzelm@24127
   309
(*51194 inferences so far.  Searching to depth 13. 204.6 secs
wenzelm@24127
   310
  Strange! The previous problem also has 51194 inferences at depth 13.  They
wenzelm@24127
   311
   must be very similar!*)
wenzelm@24127
   312
lemma BOO004_1:
wenzelm@24127
   313
  "EQU001_0_ax equal &
wenzelm@24127
   314
  BOO002_0_ax equal INVERSE multiplicative_identity additive_identity multiply product add sum &
wenzelm@24127
   315
  BOO002_0_eq INVERSE multiply add product sum equal &
wenzelm@24127
   316
  (~sum(x::'a,x,x)) --> False"
wenzelm@24127
   317
  oops
wenzelm@24127
   318
wenzelm@24127
   319
(*74799 inferences so far.  Searching to depth 13.  290.0 secs*)
wenzelm@24127
   320
lemma BOO005_1:
wenzelm@24127
   321
  "EQU001_0_ax equal &
wenzelm@24127
   322
  BOO002_0_ax equal INVERSE multiplicative_identity additive_identity multiply product add sum &
wenzelm@24127
   323
  BOO002_0_eq INVERSE multiply add product sum equal &
wenzelm@24127
   324
  (~sum(x::'a,multiplicative_identity,multiplicative_identity)) --> False"
wenzelm@24127
   325
  oops
wenzelm@24127
   326
wenzelm@24127
   327
(*74799 inferences so far.  Searching to depth 13.  314.6 secs*)
wenzelm@24127
   328
lemma BOO006_1:
wenzelm@24127
   329
  "EQU001_0_ax equal &
wenzelm@24127
   330
  BOO002_0_ax equal INVERSE multiplicative_identity additive_identity multiply product add sum &
wenzelm@24127
   331
  BOO002_0_eq INVERSE multiply add product sum equal &
wenzelm@24127
   332
  (~product(x::'a,additive_identity,additive_identity)) --> False"
wenzelm@24127
   333
  oops
wenzelm@24127
   334
wenzelm@24127
   335
(*5 inferences so far.  Searching to depth 5.  1.3 secs*)
wenzelm@24127
   336
lemma BOO011_1:
wenzelm@24127
   337
  "EQU001_0_ax equal &
wenzelm@24127
   338
  BOO002_0_ax equal INVERSE multiplicative_identity additive_identity multiply product add sum &
wenzelm@24127
   339
  BOO002_0_eq INVERSE multiply add product sum equal &
wenzelm@24127
   340
  (~equal(INVERSE(additive_identity),multiplicative_identity)) --> False"
wenzelm@24127
   341
  by meson
wenzelm@24127
   342
wenzelm@24127
   343
abbreviation "CAT003_0_ax f1 compos codomain domain equal there_exists equivalent \<equiv>
wenzelm@24128
   344
  (\<forall>Y X. equivalent(X::'a,Y) --> there_exists(X)) &
wenzelm@24128
   345
  (\<forall>X Y. equivalent(X::'a,Y) --> equal(X::'a,Y)) &
wenzelm@24128
   346
  (\<forall>X Y. there_exists(X) & equal(X::'a,Y) --> equivalent(X::'a,Y)) &
wenzelm@24128
   347
  (\<forall>X. there_exists(domain(X)) --> there_exists(X)) &
wenzelm@24128
   348
  (\<forall>X. there_exists(codomain(X)) --> there_exists(X)) &
wenzelm@24128
   349
  (\<forall>Y X. there_exists(compos(X::'a,Y)) --> there_exists(domain(X))) &
wenzelm@24128
   350
  (\<forall>X Y. there_exists(compos(X::'a,Y)) --> equal(domain(X),codomain(Y))) &
wenzelm@24128
   351
  (\<forall>X Y. there_exists(domain(X)) & equal(domain(X),codomain(Y)) --> there_exists(compos(X::'a,Y))) &
wenzelm@24128
   352
  (\<forall>X Y Z. equal(compos(X::'a,compos(Y::'a,Z)),compos(compos(X::'a,Y),Z))) &
wenzelm@24128
   353
  (\<forall>X. equal(compos(X::'a,domain(X)),X)) &
wenzelm@24128
   354
  (\<forall>X. equal(compos(codomain(X),X),X)) &
wenzelm@24128
   355
  (\<forall>X Y. equivalent(X::'a,Y) --> there_exists(Y)) &
wenzelm@24128
   356
  (\<forall>X Y. there_exists(X) & there_exists(Y) & equal(X::'a,Y) --> equivalent(X::'a,Y)) &
wenzelm@24128
   357
  (\<forall>Y X. there_exists(compos(X::'a,Y)) --> there_exists(codomain(X))) &
wenzelm@24128
   358
  (\<forall>X Y. there_exists(f1(X::'a,Y)) | equal(X::'a,Y)) &
wenzelm@24128
   359
  (\<forall>X Y. equal(X::'a,f1(X::'a,Y)) | equal(Y::'a,f1(X::'a,Y)) | equal(X::'a,Y)) &
wenzelm@24127
   360
  (\<forall>X Y. equal(X::'a,f1(X::'a,Y)) & equal(Y::'a,f1(X::'a,Y)) --> equal(X::'a,Y))"
wenzelm@24127
   361
wenzelm@24127
   362
abbreviation "CAT003_0_eq f1 compos codomain domain equivalent there_exists equal \<equiv>
wenzelm@24128
   363
  (\<forall>X Y. equal(X::'a,Y) & there_exists(X) --> there_exists(Y)) &
wenzelm@24128
   364
  (\<forall>X Y Z. equal(X::'a,Y) & equivalent(X::'a,Z) --> equivalent(Y::'a,Z)) &
wenzelm@24128
   365
  (\<forall>X Z Y. equal(X::'a,Y) & equivalent(Z::'a,X) --> equivalent(Z::'a,Y)) &
wenzelm@24128
   366
  (\<forall>X Y. equal(X::'a,Y) --> equal(domain(X),domain(Y))) &
wenzelm@24128
   367
  (\<forall>X Y. equal(X::'a,Y) --> equal(codomain(X),codomain(Y))) &
wenzelm@24128
   368
  (\<forall>X Y Z. equal(X::'a,Y) --> equal(compos(X::'a,Z),compos(Y::'a,Z))) &
wenzelm@24128
   369
  (\<forall>X Z Y. equal(X::'a,Y) --> equal(compos(Z::'a,X),compos(Z::'a,Y))) &
wenzelm@24128
   370
  (\<forall>A B C. equal(A::'a,B) --> equal(f1(A::'a,C),f1(B::'a,C))) &
wenzelm@24127
   371
  (\<forall>D F' E. equal(D::'a,E) --> equal(f1(F'::'a,D),f1(F'::'a,E)))"
wenzelm@24127
   372
wenzelm@24127
   373
(*4007 inferences so far.  Searching to depth 9.  13 secs*)
wenzelm@24127
   374
lemma CAT001_3:
wenzelm@24127
   375
  "EQU001_0_ax equal &
wenzelm@24127
   376
  CAT003_0_ax f1 compos codomain domain equal there_exists equivalent &
wenzelm@24127
   377
  CAT003_0_eq f1 compos codomain domain equivalent there_exists equal &
wenzelm@24128
   378
  (there_exists(compos(a::'a,b))) &
wenzelm@24128
   379
  (\<forall>Y X Z. equal(compos(compos(a::'a,b),X),Y) & equal(compos(compos(a::'a,b),Z),Y) --> equal(X::'a,Z)) &
wenzelm@24128
   380
  (there_exists(compos(b::'a,h))) &
wenzelm@24128
   381
  (equal(compos(b::'a,h),compos(b::'a,g))) &
wenzelm@24127
   382
  (~equal(h::'a,g)) --> False"
wenzelm@24127
   383
   by meson
wenzelm@24127
   384
wenzelm@24127
   385
(*245 inferences so far.  Searching to depth 7.  1.0 secs*)
wenzelm@24127
   386
lemma CAT003_3:
wenzelm@24127
   387
  "EQU001_0_ax equal &
wenzelm@24127
   388
  CAT003_0_ax f1 compos codomain domain equal there_exists equivalent &
wenzelm@24127
   389
  CAT003_0_eq f1 compos codomain domain equivalent there_exists equal &
wenzelm@24128
   390
  (there_exists(compos(a::'a,b))) &
wenzelm@24128
   391
  (\<forall>Y X Z. equal(compos(X::'a,compos(a::'a,b)),Y) & equal(compos(Z::'a,compos(a::'a,b)),Y) --> equal(X::'a,Z)) &
wenzelm@24128
   392
  (there_exists(h)) &
wenzelm@24128
   393
  (equal(compos(h::'a,a),compos(g::'a,a))) &
wenzelm@24127
   394
  (~equal(g::'a,h)) --> False"
wenzelm@24127
   395
  by meson
wenzelm@24127
   396
wenzelm@24127
   397
abbreviation "CAT001_0_ax equal codomain domain identity_map compos product defined \<equiv>
wenzelm@24128
   398
  (\<forall>X Y. defined(X::'a,Y) --> product(X::'a,Y,compos(X::'a,Y))) &
wenzelm@24128
   399
  (\<forall>Z X Y. product(X::'a,Y,Z) --> defined(X::'a,Y)) &
wenzelm@24128
   400
  (\<forall>X Xy Y Z. product(X::'a,Y,Xy) & defined(Xy::'a,Z) --> defined(Y::'a,Z)) &
wenzelm@24128
   401
  (\<forall>Y Xy Z X Yz. product(X::'a,Y,Xy) & product(Y::'a,Z,Yz) & defined(Xy::'a,Z) --> defined(X::'a,Yz)) &
wenzelm@24128
   402
  (\<forall>Xy Y Z X Yz Xyz. product(X::'a,Y,Xy) & product(Xy::'a,Z,Xyz) & product(Y::'a,Z,Yz) --> product(X::'a,Yz,Xyz)) &
wenzelm@24128
   403
  (\<forall>Z Yz X Y. product(Y::'a,Z,Yz) & defined(X::'a,Yz) --> defined(X::'a,Y)) &
wenzelm@24128
   404
  (\<forall>Y X Yz Xy Z. product(Y::'a,Z,Yz) & product(X::'a,Y,Xy) & defined(X::'a,Yz) --> defined(Xy::'a,Z)) &
wenzelm@24128
   405
  (\<forall>Yz X Y Xy Z Xyz. product(Y::'a,Z,Yz) & product(X::'a,Yz,Xyz) & product(X::'a,Y,Xy) --> product(Xy::'a,Z,Xyz)) &
wenzelm@24128
   406
  (\<forall>Y X Z. defined(X::'a,Y) & defined(Y::'a,Z) & identity_map(Y) --> defined(X::'a,Z)) &
wenzelm@24128
   407
  (\<forall>X. identity_map(domain(X))) &
wenzelm@24128
   408
  (\<forall>X. identity_map(codomain(X))) &
wenzelm@24128
   409
  (\<forall>X. defined(X::'a,domain(X))) &
wenzelm@24128
   410
  (\<forall>X. defined(codomain(X),X)) &
wenzelm@24128
   411
  (\<forall>X. product(X::'a,domain(X),X)) &
wenzelm@24128
   412
  (\<forall>X. product(codomain(X),X,X)) &
wenzelm@24128
   413
  (\<forall>X Y. defined(X::'a,Y) & identity_map(X) --> product(X::'a,Y,Y)) &
wenzelm@24128
   414
  (\<forall>Y X. defined(X::'a,Y) & identity_map(Y) --> product(X::'a,Y,X)) &
wenzelm@24127
   415
  (\<forall>X Y Z W. product(X::'a,Y,Z) & product(X::'a,Y,W) --> equal(Z::'a,W))"
wenzelm@24127
   416
wenzelm@24127
   417
abbreviation "CAT001_0_eq compos defined identity_map codomain domain product equal \<equiv>
wenzelm@24128
   418
  (\<forall>X Y Z W. equal(X::'a,Y) & product(X::'a,Z,W) --> product(Y::'a,Z,W)) &
wenzelm@24128
   419
  (\<forall>X Z Y W. equal(X::'a,Y) & product(Z::'a,X,W) --> product(Z::'a,Y,W)) &
wenzelm@24128
   420
  (\<forall>X Z W Y. equal(X::'a,Y) & product(Z::'a,W,X) --> product(Z::'a,W,Y)) &
wenzelm@24128
   421
  (\<forall>X Y. equal(X::'a,Y) --> equal(domain(X),domain(Y))) &
wenzelm@24128
   422
  (\<forall>X Y. equal(X::'a,Y) --> equal(codomain(X),codomain(Y))) &
wenzelm@24128
   423
  (\<forall>X Y. equal(X::'a,Y) & identity_map(X) --> identity_map(Y)) &
wenzelm@24128
   424
  (\<forall>X Y Z. equal(X::'a,Y) & defined(X::'a,Z) --> defined(Y::'a,Z)) &
wenzelm@24128
   425
  (\<forall>X Z Y. equal(X::'a,Y) & defined(Z::'a,X) --> defined(Z::'a,Y)) &
wenzelm@24128
   426
  (\<forall>X Z Y. equal(X::'a,Y) --> equal(compos(Z::'a,X),compos(Z::'a,Y))) &
wenzelm@24127
   427
  (\<forall>X Y Z. equal(X::'a,Y) --> equal(compos(X::'a,Z),compos(Y::'a,Z)))"
wenzelm@24127
   428
wenzelm@24127
   429
(*54288 inferences so far.  Searching to depth 14.  118.0 secs*)
wenzelm@24127
   430
lemma CAT005_1:
wenzelm@24127
   431
  "EQU001_0_ax equal &
wenzelm@24127
   432
  CAT001_0_ax equal codomain domain identity_map compos product defined &
wenzelm@24127
   433
  CAT001_0_eq compos defined identity_map codomain domain product equal &
wenzelm@24128
   434
  (defined(a::'a,d)) &
wenzelm@24128
   435
  (identity_map(d)) &
wenzelm@24127
   436
  (~equal(domain(a),d)) --> False"
wenzelm@24127
   437
  oops
wenzelm@24127
   438
wenzelm@24127
   439
(*1728 inferences so far.  Searching to depth 10.  5.8 secs*)
wenzelm@24127
   440
lemma CAT007_1:
wenzelm@24127
   441
  "EQU001_0_ax equal &
wenzelm@24127
   442
  CAT001_0_ax equal codomain domain identity_map compos product defined &
wenzelm@24127
   443
  CAT001_0_eq compos defined identity_map codomain domain product equal &
wenzelm@24128
   444
  (equal(domain(a),codomain(b))) &
wenzelm@24127
   445
  (~defined(a::'a,b)) --> False"
wenzelm@24127
   446
  by meson
wenzelm@24127
   447
wenzelm@24127
   448
(*82895 inferences so far.  Searching to depth 13.  355 secs*)
wenzelm@24127
   449
lemma CAT018_1:
wenzelm@24127
   450
  "EQU001_0_ax equal &
wenzelm@24127
   451
  CAT001_0_ax equal codomain domain identity_map compos product defined &
wenzelm@24127
   452
  CAT001_0_eq compos defined identity_map codomain domain product equal &
wenzelm@24128
   453
  (defined(a::'a,b)) &
wenzelm@24128
   454
  (defined(b::'a,c)) &
wenzelm@24127
   455
  (~defined(a::'a,compos(b::'a,c))) --> False"
wenzelm@24127
   456
  oops
wenzelm@24127
   457
wenzelm@24127
   458
(*1118 inferences so far.  Searching to depth 8.  2.3 secs*)
wenzelm@24127
   459
lemma COL001_2:
wenzelm@24127
   460
  "EQU001_0_ax equal &
wenzelm@24128
   461
  (\<forall>X Y Z. equal(apply(apply(apply(s::'a,X),Y),Z),apply(apply(X::'a,Z),apply(Y::'a,Z)))) &
wenzelm@24128
   462
  (\<forall>Y X. equal(apply(apply(k::'a,X),Y),X)) &
wenzelm@24128
   463
  (\<forall>X Y Z. equal(apply(apply(apply(b::'a,X),Y),Z),apply(X::'a,apply(Y::'a,Z)))) &
wenzelm@24128
   464
  (\<forall>X. equal(apply(i::'a,X),X)) &
wenzelm@24128
   465
  (\<forall>A B C. equal(A::'a,B) --> equal(apply(A::'a,C),apply(B::'a,C))) &
wenzelm@24128
   466
  (\<forall>D F' E. equal(D::'a,E) --> equal(apply(F'::'a,D),apply(F'::'a,E))) &
wenzelm@24128
   467
  (\<forall>X. equal(apply(apply(apply(s::'a,apply(b::'a,X)),i),apply(apply(s::'a,apply(b::'a,X)),i)),apply(x::'a,apply(apply(apply(s::'a,apply(b::'a,X)),i),apply(apply(s::'a,apply(b::'a,X)),i))))) &
wenzelm@24127
   468
  (\<forall>Y. ~equal(Y::'a,apply(combinator::'a,Y))) --> False"
wenzelm@24127
   469
  by meson
wenzelm@24127
   470
wenzelm@24127
   471
(*500 inferences so far.  Searching to depth 8.  0.9 secs*)
wenzelm@24127
   472
lemma COL023_1:
wenzelm@24127
   473
  "EQU001_0_ax equal &
wenzelm@24128
   474
  (\<forall>X Y Z. equal(apply(apply(apply(b::'a,X),Y),Z),apply(X::'a,apply(Y::'a,Z)))) &
wenzelm@24128
   475
  (\<forall>X Y Z. equal(apply(apply(apply(n::'a,X),Y),Z),apply(apply(apply(X::'a,Z),Y),Z))) &
wenzelm@24128
   476
  (\<forall>A B C. equal(A::'a,B) --> equal(apply(A::'a,C),apply(B::'a,C))) &
wenzelm@24128
   477
  (\<forall>D F' E. equal(D::'a,E) --> equal(apply(F'::'a,D),apply(F'::'a,E))) &
wenzelm@24127
   478
  (\<forall>Y. ~equal(Y::'a,apply(combinator::'a,Y))) --> False"
wenzelm@24127
   479
  by meson
wenzelm@24127
   480
wenzelm@24127
   481
(*3018 inferences so far.  Searching to depth 10.  4.3 secs*)
wenzelm@24127
   482
lemma COL032_1:
wenzelm@24127
   483
  "EQU001_0_ax equal &
wenzelm@24128
   484
  (\<forall>X. equal(apply(m::'a,X),apply(X::'a,X))) &
wenzelm@24128
   485
  (\<forall>Y X Z. equal(apply(apply(apply(q::'a,X),Y),Z),apply(Y::'a,apply(X::'a,Z)))) &
wenzelm@24128
   486
  (\<forall>A B C. equal(A::'a,B) --> equal(apply(A::'a,C),apply(B::'a,C))) &
wenzelm@24128
   487
  (\<forall>D F' E. equal(D::'a,E) --> equal(apply(F'::'a,D),apply(F'::'a,E))) &
wenzelm@24128
   488
  (\<forall>G H. equal(G::'a,H) --> equal(f(G),f(H))) &
wenzelm@24127
   489
  (\<forall>Y. ~equal(apply(Y::'a,f(Y)),apply(f(Y),apply(Y::'a,f(Y))))) --> False"
wenzelm@24127
   490
  by meson
wenzelm@24127
   491
wenzelm@24127
   492
(*381878 inferences so far.  Searching to depth 13.  670.4 secs*)
wenzelm@24127
   493
lemma COL052_2:
wenzelm@24127
   494
  "EQU001_0_ax equal &
wenzelm@24128
   495
  (\<forall>X Y W. equal(response(compos(X::'a,Y),W),response(X::'a,response(Y::'a,W)))) &
wenzelm@24128
   496
  (\<forall>X Y. agreeable(X) --> equal(response(X::'a,common_bird(Y)),response(Y::'a,common_bird(Y)))) &
wenzelm@24128
   497
  (\<forall>Z X. equal(response(X::'a,Z),response(compatible(X),Z)) --> agreeable(X)) &
wenzelm@24128
   498
  (\<forall>A B. equal(A::'a,B) --> equal(common_bird(A),common_bird(B))) &
wenzelm@24128
   499
  (\<forall>C D. equal(C::'a,D) --> equal(compatible(C),compatible(D))) &
wenzelm@24128
   500
  (\<forall>Q R. equal(Q::'a,R) & agreeable(Q) --> agreeable(R)) &
wenzelm@24128
   501
  (\<forall>A B C. equal(A::'a,B) --> equal(compos(A::'a,C),compos(B::'a,C))) &
wenzelm@24128
   502
  (\<forall>D F' E. equal(D::'a,E) --> equal(compos(F'::'a,D),compos(F'::'a,E))) &
wenzelm@24128
   503
  (\<forall>G H I'. equal(G::'a,H) --> equal(response(G::'a,I'),response(H::'a,I'))) &
wenzelm@24128
   504
  (\<forall>J L K'. equal(J::'a,K') --> equal(response(L::'a,J),response(L::'a,K'))) &
wenzelm@24128
   505
  (agreeable(c)) &
wenzelm@24128
   506
  (~agreeable(a)) &
wenzelm@24127
   507
  (equal(c::'a,compos(a::'a,b))) --> False"
wenzelm@24127
   508
  oops
wenzelm@24127
   509
wenzelm@24127
   510
(*13201 inferences so far.  Searching to depth 11.  31.9 secs*)
wenzelm@24127
   511
lemma COL075_2:
wenzelm@24128
   512
  "EQU001_0_ax equal &
wenzelm@24128
   513
  (\<forall>Y X. equal(apply(apply(k::'a,X),Y),X)) &
wenzelm@24128
   514
  (\<forall>X Y Z. equal(apply(apply(apply(abstraction::'a,X),Y),Z),apply(apply(X::'a,apply(k::'a,Z)),apply(Y::'a,Z)))) &
wenzelm@24128
   515
  (\<forall>D E F'. equal(D::'a,E) --> equal(apply(D::'a,F'),apply(E::'a,F'))) &
wenzelm@24128
   516
  (\<forall>G I' H. equal(G::'a,H) --> equal(apply(I'::'a,G),apply(I'::'a,H))) &
wenzelm@24128
   517
  (\<forall>A B. equal(A::'a,B) --> equal(b(A),b(B))) &
wenzelm@24128
   518
  (\<forall>C D. equal(C::'a,D) --> equal(c(C),c(D))) &
wenzelm@24127
   519
  (\<forall>Y. ~equal(apply(apply(Y::'a,b(Y)),c(Y)),apply(b(Y),b(Y)))) --> False"
wenzelm@24127
   520
  oops
wenzelm@24127
   521
wenzelm@24127
   522
(*33 inferences so far.  Searching to depth 7.  0.1 secs*)
wenzelm@24127
   523
lemma COM001_1:
wenzelm@24128
   524
  "(\<forall>Goal_state Start_state. follows(Goal_state::'a,Start_state) --> succeeds(Goal_state::'a,Start_state)) &
wenzelm@24128
   525
  (\<forall>Goal_state Intermediate_state Start_state. succeeds(Goal_state::'a,Intermediate_state) & succeeds(Intermediate_state::'a,Start_state) --> succeeds(Goal_state::'a,Start_state)) &
wenzelm@24128
   526
  (\<forall>Start_state Label Goal_state. has(Start_state::'a,goto(Label)) & labels(Label::'a,Goal_state) --> succeeds(Goal_state::'a,Start_state)) &
wenzelm@24128
   527
  (\<forall>Start_state Condition Goal_state. has(Start_state::'a,ifthen(Condition::'a,Goal_state)) --> succeeds(Goal_state::'a,Start_state)) &
wenzelm@24128
   528
  (labels(loop::'a,p3)) &
wenzelm@24128
   529
  (has(p3::'a,ifthen(equal(register_j::'a,n),p4))) &
wenzelm@24128
   530
  (has(p4::'a,goto(out))) &
wenzelm@24128
   531
  (follows(p5::'a,p4)) &
wenzelm@24128
   532
  (follows(p8::'a,p3)) &
wenzelm@24128
   533
  (has(p8::'a,goto(loop))) &
wenzelm@24127
   534
  (~succeeds(p3::'a,p3)) --> False"
wenzelm@24127
   535
  by meson
wenzelm@24127
   536
wenzelm@24127
   537
(*533 inferences so far.  Searching to depth 13.  0.3 secs*)
wenzelm@24127
   538
lemma COM002_1:
wenzelm@24128
   539
  "(\<forall>Goal_state Start_state. follows(Goal_state::'a,Start_state) --> succeeds(Goal_state::'a,Start_state)) &
wenzelm@24128
   540
  (\<forall>Goal_state Intermediate_state Start_state. succeeds(Goal_state::'a,Intermediate_state) & succeeds(Intermediate_state::'a,Start_state) --> succeeds(Goal_state::'a,Start_state)) &
wenzelm@24128
   541
  (\<forall>Start_state Label Goal_state. has(Start_state::'a,goto(Label)) & labels(Label::'a,Goal_state) --> succeeds(Goal_state::'a,Start_state)) &
wenzelm@24128
   542
  (\<forall>Start_state Condition Goal_state. has(Start_state::'a,ifthen(Condition::'a,Goal_state)) --> succeeds(Goal_state::'a,Start_state)) &
wenzelm@24128
   543
  (has(p1::'a,assign(register_j::'a,num0))) &
wenzelm@24128
   544
  (follows(p2::'a,p1)) &
wenzelm@24128
   545
  (has(p2::'a,assign(register_k::'a,num1))) &
wenzelm@24128
   546
  (labels(loop::'a,p3)) &
wenzelm@24128
   547
  (follows(p3::'a,p2)) &
wenzelm@24128
   548
  (has(p3::'a,ifthen(equal(register_j::'a,n),p4))) &
wenzelm@24128
   549
  (has(p4::'a,goto(out))) &
wenzelm@24128
   550
  (follows(p5::'a,p4)) &
wenzelm@24128
   551
  (follows(p6::'a,p3)) &
wenzelm@24128
   552
  (has(p6::'a,assign(register_k::'a,mtimes(num2::'a,register_k)))) &
wenzelm@24128
   553
  (follows(p7::'a,p6)) &
wenzelm@24128
   554
  (has(p7::'a,assign(register_j::'a,mplus(register_j::'a,num1)))) &
wenzelm@24128
   555
  (follows(p8::'a,p7)) &
wenzelm@24128
   556
  (has(p8::'a,goto(loop))) &
wenzelm@24127
   557
  (~succeeds(p3::'a,p3)) --> False"
wenzelm@24127
   558
  by meson
wenzelm@24127
   559
wenzelm@24127
   560
(*4821 inferences so far.  Searching to depth 14.  1.3 secs*)
wenzelm@24127
   561
lemma COM002_2:
wenzelm@24128
   562
  "(\<forall>Goal_state Start_state. ~(fails(Goal_state::'a,Start_state) & follows(Goal_state::'a,Start_state))) &
wenzelm@24128
   563
  (\<forall>Goal_state Intermediate_state Start_state. fails(Goal_state::'a,Start_state) --> fails(Goal_state::'a,Intermediate_state) | fails(Intermediate_state::'a,Start_state)) &
wenzelm@24128
   564
  (\<forall>Start_state Label Goal_state. ~(fails(Goal_state::'a,Start_state) & has(Start_state::'a,goto(Label)) & labels(Label::'a,Goal_state))) &
wenzelm@24128
   565
  (\<forall>Start_state Condition Goal_state. ~(fails(Goal_state::'a,Start_state) & has(Start_state::'a,ifthen(Condition::'a,Goal_state)))) &
wenzelm@24128
   566
  (has(p1::'a,assign(register_j::'a,num0))) &
wenzelm@24128
   567
  (follows(p2::'a,p1)) &
wenzelm@24128
   568
  (has(p2::'a,assign(register_k::'a,num1))) &
wenzelm@24128
   569
  (labels(loop::'a,p3)) &
wenzelm@24128
   570
  (follows(p3::'a,p2)) &
wenzelm@24128
   571
  (has(p3::'a,ifthen(equal(register_j::'a,n),p4))) &
wenzelm@24128
   572
  (has(p4::'a,goto(out))) &
wenzelm@24128
   573
  (follows(p5::'a,p4)) &
wenzelm@24128
   574
  (follows(p6::'a,p3)) &
wenzelm@24128
   575
  (has(p6::'a,assign(register_k::'a,mtimes(num2::'a,register_k)))) &
wenzelm@24128
   576
  (follows(p7::'a,p6)) &
wenzelm@24128
   577
  (has(p7::'a,assign(register_j::'a,mplus(register_j::'a,num1)))) &
wenzelm@24128
   578
  (follows(p8::'a,p7)) &
wenzelm@24128
   579
  (has(p8::'a,goto(loop))) &
wenzelm@24127
   580
  (fails(p3::'a,p3)) --> False"
wenzelm@24127
   581
  by meson
wenzelm@24127
   582
wenzelm@24127
   583
(*98 inferences so far.  Searching to depth 10.  1.1 secs*)
wenzelm@24127
   584
lemma COM003_2:
wenzelm@24128
   585
  "(\<forall>X Y Z. program_decides(X) & program(Y) --> decides(X::'a,Y,Z)) &
wenzelm@24128
   586
  (\<forall>X. program_decides(X) | program(f2(X))) &
wenzelm@24128
   587
  (\<forall>X. decides(X::'a,f2(X),f1(X)) --> program_decides(X)) &
wenzelm@24128
   588
  (\<forall>X. program_program_decides(X) --> program(X)) &
wenzelm@24128
   589
  (\<forall>X. program_program_decides(X) --> program_decides(X)) &
wenzelm@24128
   590
  (\<forall>X. program(X) & program_decides(X) --> program_program_decides(X)) &
wenzelm@24128
   591
  (\<forall>X. algorithm_program_decides(X) --> algorithm(X)) &
wenzelm@24128
   592
  (\<forall>X. algorithm_program_decides(X) --> program_decides(X)) &
wenzelm@24128
   593
  (\<forall>X. algorithm(X) & program_decides(X) --> algorithm_program_decides(X)) &
wenzelm@24128
   594
  (\<forall>Y X. program_halts2(X::'a,Y) --> program(X)) &
wenzelm@24128
   595
  (\<forall>X Y. program_halts2(X::'a,Y) --> halts2(X::'a,Y)) &
wenzelm@24128
   596
  (\<forall>X Y. program(X) & halts2(X::'a,Y) --> program_halts2(X::'a,Y)) &
wenzelm@24128
   597
  (\<forall>W X Y Z. halts3_outputs(X::'a,Y,Z,W) --> halts3(X::'a,Y,Z)) &
wenzelm@24128
   598
  (\<forall>Y Z X W. halts3_outputs(X::'a,Y,Z,W) --> outputs(X::'a,W)) &
wenzelm@24128
   599
  (\<forall>Y Z X W. halts3(X::'a,Y,Z) & outputs(X::'a,W) --> halts3_outputs(X::'a,Y,Z,W)) &
wenzelm@24128
   600
  (\<forall>Y X. program_not_halts2(X::'a,Y) --> program(X)) &
wenzelm@24128
   601
  (\<forall>X Y. ~(program_not_halts2(X::'a,Y) & halts2(X::'a,Y))) &
wenzelm@24128
   602
  (\<forall>X Y. program(X) --> program_not_halts2(X::'a,Y) | halts2(X::'a,Y)) &
wenzelm@24128
   603
  (\<forall>W X Y. halts2_outputs(X::'a,Y,W) --> halts2(X::'a,Y)) &
wenzelm@24128
   604
  (\<forall>Y X W. halts2_outputs(X::'a,Y,W) --> outputs(X::'a,W)) &
wenzelm@24128
   605
  (\<forall>Y X W. halts2(X::'a,Y) & outputs(X::'a,W) --> halts2_outputs(X::'a,Y,W)) &
wenzelm@24128
   606
  (\<forall>X W Y Z. program_halts2_halts3_outputs(X::'a,Y,Z,W) --> program_halts2(Y::'a,Z)) &
wenzelm@24128
   607
  (\<forall>X Y Z W. program_halts2_halts3_outputs(X::'a,Y,Z,W) --> halts3_outputs(X::'a,Y,Z,W)) &
wenzelm@24128
   608
  (\<forall>X Y Z W. program_halts2(Y::'a,Z) & halts3_outputs(X::'a,Y,Z,W) --> program_halts2_halts3_outputs(X::'a,Y,Z,W)) &
wenzelm@24128
   609
  (\<forall>X W Y Z. program_not_halts2_halts3_outputs(X::'a,Y,Z,W) --> program_not_halts2(Y::'a,Z)) &
wenzelm@24128
   610
  (\<forall>X Y Z W. program_not_halts2_halts3_outputs(X::'a,Y,Z,W) --> halts3_outputs(X::'a,Y,Z,W)) &
wenzelm@24128
   611
  (\<forall>X Y Z W. program_not_halts2(Y::'a,Z) & halts3_outputs(X::'a,Y,Z,W) --> program_not_halts2_halts3_outputs(X::'a,Y,Z,W)) &
wenzelm@24128
   612
  (\<forall>X W Y. program_halts2_halts2_outputs(X::'a,Y,W) --> program_halts2(Y::'a,Y)) &
wenzelm@24128
   613
  (\<forall>X Y W. program_halts2_halts2_outputs(X::'a,Y,W) --> halts2_outputs(X::'a,Y,W)) &
wenzelm@24128
   614
  (\<forall>X Y W. program_halts2(Y::'a,Y) & halts2_outputs(X::'a,Y,W) --> program_halts2_halts2_outputs(X::'a,Y,W)) &
wenzelm@24128
   615
  (\<forall>X W Y. program_not_halts2_halts2_outputs(X::'a,Y,W) --> program_not_halts2(Y::'a,Y)) &
wenzelm@24128
   616
  (\<forall>X Y W. program_not_halts2_halts2_outputs(X::'a,Y,W) --> halts2_outputs(X::'a,Y,W)) &
wenzelm@24128
   617
  (\<forall>X Y W. program_not_halts2(Y::'a,Y) & halts2_outputs(X::'a,Y,W) --> program_not_halts2_halts2_outputs(X::'a,Y,W)) &
wenzelm@24128
   618
  (\<forall>X. algorithm_program_decides(X) --> program_program_decides(c1)) &
wenzelm@24128
   619
  (\<forall>W Y Z. program_program_decides(W) --> program_halts2_halts3_outputs(W::'a,Y,Z,good)) &
wenzelm@24128
   620
  (\<forall>W Y Z. program_program_decides(W) --> program_not_halts2_halts3_outputs(W::'a,Y,Z,bad)) &
wenzelm@24128
   621
  (\<forall>W. program(W) & program_halts2_halts3_outputs(W::'a,f3(W),f3(W),good) & program_not_halts2_halts3_outputs(W::'a,f3(W),f3(W),bad) --> program(c2)) &
wenzelm@24128
   622
  (\<forall>W Y. program(W) & program_halts2_halts3_outputs(W::'a,f3(W),f3(W),good) & program_not_halts2_halts3_outputs(W::'a,f3(W),f3(W),bad) --> program_halts2_halts2_outputs(c2::'a,Y,good)) &
wenzelm@24128
   623
  (\<forall>W Y. program(W) & program_halts2_halts3_outputs(W::'a,f3(W),f3(W),good) & program_not_halts2_halts3_outputs(W::'a,f3(W),f3(W),bad) --> program_not_halts2_halts2_outputs(c2::'a,Y,bad)) &
wenzelm@24128
   624
  (\<forall>V. program(V) & program_halts2_halts2_outputs(V::'a,f4(V),good) & program_not_halts2_halts2_outputs(V::'a,f4(V),bad) --> program(c3)) &
wenzelm@24128
   625
  (\<forall>V Y. program(V) & program_halts2_halts2_outputs(V::'a,f4(V),good) & program_not_halts2_halts2_outputs(V::'a,f4(V),bad) & program_halts2(Y::'a,Y) --> halts2(c3::'a,Y)) &
wenzelm@24128
   626
  (\<forall>V Y. program(V) & program_halts2_halts2_outputs(V::'a,f4(V),good) & program_not_halts2_halts2_outputs(V::'a,f4(V),bad) --> program_not_halts2_halts2_outputs(c3::'a,Y,bad)) &
wenzelm@24127
   627
  (algorithm_program_decides(c4)) --> False"
wenzelm@24127
   628
  by meson
wenzelm@24127
   629
wenzelm@24128
   630
(*2100398 inferences so far.  Searching to depth 12.
wenzelm@24127
   631
  1256s (21 mins) on griffon*)
wenzelm@24127
   632
lemma COM004_1:
wenzelm@24128
   633
  "EQU001_0_ax equal &
wenzelm@24128
   634
  (\<forall>C D P Q X Y. failure_node(X::'a,or(C::'a,P)) & failure_node(Y::'a,or(D::'a,Q)) & contradictory(P::'a,Q) & siblings(X::'a,Y) --> failure_node(parent_of(X::'a,Y),or(C::'a,D))) &
wenzelm@24128
   635
  (\<forall>X. contradictory(negate(X),X)) &
wenzelm@24128
   636
  (\<forall>X. contradictory(X::'a,negate(X))) &
wenzelm@24128
   637
  (\<forall>X. siblings(left_child_of(X),right_child_of(X))) &
wenzelm@24128
   638
  (\<forall>D E. equal(D::'a,E) --> equal(left_child_of(D),left_child_of(E))) &
wenzelm@24128
   639
  (\<forall>F' G. equal(F'::'a,G) --> equal(negate(F'),negate(G))) &
wenzelm@24128
   640
  (\<forall>H I' J. equal(H::'a,I') --> equal(or(H::'a,J),or(I'::'a,J))) &
wenzelm@24128
   641
  (\<forall>K' M L. equal(K'::'a,L) --> equal(or(M::'a,K'),or(M::'a,L))) &
wenzelm@24128
   642
  (\<forall>N O' P. equal(N::'a,O') --> equal(parent_of(N::'a,P),parent_of(O'::'a,P))) &
wenzelm@24128
   643
  (\<forall>Q S' R. equal(Q::'a,R) --> equal(parent_of(S'::'a,Q),parent_of(S'::'a,R))) &
wenzelm@24128
   644
  (\<forall>T' U. equal(T'::'a,U) --> equal(right_child_of(T'),right_child_of(U))) &
wenzelm@24128
   645
  (\<forall>V W X. equal(V::'a,W) & contradictory(V::'a,X) --> contradictory(W::'a,X)) &
wenzelm@24128
   646
  (\<forall>Y A1 Z. equal(Y::'a,Z) & contradictory(A1::'a,Y) --> contradictory(A1::'a,Z)) &
wenzelm@24128
   647
  (\<forall>B1 C1 D1. equal(B1::'a,C1) & failure_node(B1::'a,D1) --> failure_node(C1::'a,D1)) &
wenzelm@24128
   648
  (\<forall>E1 G1 F1. equal(E1::'a,F1) & failure_node(G1::'a,E1) --> failure_node(G1::'a,F1)) &
wenzelm@24128
   649
  (\<forall>H1 I1 J1. equal(H1::'a,I1) & siblings(H1::'a,J1) --> siblings(I1::'a,J1)) &
wenzelm@24128
   650
  (\<forall>K1 M1 L1. equal(K1::'a,L1) & siblings(M1::'a,K1) --> siblings(M1::'a,L1)) &
wenzelm@24128
   651
  (failure_node(n_left::'a,or(EMPTY::'a,atom))) &
wenzelm@24128
   652
  (failure_node(n_right::'a,or(EMPTY::'a,negate(atom)))) &
wenzelm@24128
   653
  (equal(n_left::'a,left_child_of(n))) &
wenzelm@24128
   654
  (equal(n_right::'a,right_child_of(n))) &
wenzelm@24127
   655
  (\<forall>Z. ~failure_node(Z::'a,or(EMPTY::'a,EMPTY))) --> False"
wenzelm@24127
   656
  oops
wenzelm@24127
   657
wenzelm@24127
   658
abbreviation "GEO001_0_ax continuous lower_dimension_point_3 lower_dimension_point_2
wenzelm@24127
   659
  lower_dimension_point_1 extension euclid2 euclid1 outer_pasch equidistant equal between \<equiv>
wenzelm@24128
   660
  (\<forall>X Y. between(X::'a,Y,X) --> equal(X::'a,Y)) &
wenzelm@24128
   661
  (\<forall>V X Y Z. between(X::'a,Y,V) & between(Y::'a,Z,V) --> between(X::'a,Y,Z)) &
wenzelm@24128
   662
  (\<forall>Y X V Z. between(X::'a,Y,Z) & between(X::'a,Y,V) --> equal(X::'a,Y) | between(X::'a,Z,V) | between(X::'a,V,Z)) &
wenzelm@24128
   663
  (\<forall>Y X. equidistant(X::'a,Y,Y,X)) &
wenzelm@24128
   664
  (\<forall>Z X Y. equidistant(X::'a,Y,Z,Z) --> equal(X::'a,Y)) &
wenzelm@24128
   665
  (\<forall>X Y Z V V2 W. equidistant(X::'a,Y,Z,V) & equidistant(X::'a,Y,V2,W) --> equidistant(Z::'a,V,V2,W)) &
wenzelm@24128
   666
  (\<forall>W X Z V Y. between(X::'a,W,V) & between(Y::'a,V,Z) --> between(X::'a,outer_pasch(W::'a,X,Y,Z,V),Y)) &
wenzelm@24128
   667
  (\<forall>W X Y Z V. between(X::'a,W,V) & between(Y::'a,V,Z) --> between(Z::'a,W,outer_pasch(W::'a,X,Y,Z,V))) &
wenzelm@24128
   668
  (\<forall>W X Y Z V. between(X::'a,V,W) & between(Y::'a,V,Z) --> equal(X::'a,V) | between(X::'a,Z,euclid1(W::'a,X,Y,Z,V))) &
wenzelm@24128
   669
  (\<forall>W X Y Z V. between(X::'a,V,W) & between(Y::'a,V,Z) --> equal(X::'a,V) | between(X::'a,Y,euclid2(W::'a,X,Y,Z,V))) &
wenzelm@24128
   670
  (\<forall>W X Y Z V. between(X::'a,V,W) & between(Y::'a,V,Z) --> equal(X::'a,V) | between(euclid1(W::'a,X,Y,Z,V),W,euclid2(W::'a,X,Y,Z,V))) &
wenzelm@24128
   671
  (\<forall>X1 Y1 X Y Z V Z1 V1. equidistant(X::'a,Y,X1,Y1) & equidistant(Y::'a,Z,Y1,Z1) & equidistant(X::'a,V,X1,V1) & equidistant(Y::'a,V,Y1,V1) & between(X::'a,Y,Z) & between(X1::'a,Y1,Z1) --> equal(X::'a,Y) | equidistant(Z::'a,V,Z1,V1)) &
wenzelm@24128
   672
  (\<forall>X Y W V. between(X::'a,Y,extension(X::'a,Y,W,V))) &
wenzelm@24128
   673
  (\<forall>X Y W V. equidistant(Y::'a,extension(X::'a,Y,W,V),W,V)) &
wenzelm@24128
   674
  (~between(lower_dimension_point_1::'a,lower_dimension_point_2,lower_dimension_point_3)) &
wenzelm@24128
   675
  (~between(lower_dimension_point_2::'a,lower_dimension_point_3,lower_dimension_point_1)) &
wenzelm@24128
   676
  (~between(lower_dimension_point_3::'a,lower_dimension_point_1,lower_dimension_point_2)) &
wenzelm@24128
   677
  (\<forall>Z X Y W V. equidistant(X::'a,W,X,V) & equidistant(Y::'a,W,Y,V) & equidistant(Z::'a,W,Z,V) --> between(X::'a,Y,Z) | between(Y::'a,Z,X) | between(Z::'a,X,Y) | equal(W::'a,V)) &
wenzelm@24128
   678
  (\<forall>X Y Z X1 Z1 V. equidistant(V::'a,X,V,X1) & equidistant(V::'a,Z,V,Z1) & between(V::'a,X,Z) & between(X::'a,Y,Z) --> equidistant(V::'a,Y,Z,continuous(X::'a,Y,Z,X1,Z1,V))) &
wenzelm@24127
   679
  (\<forall>X Y Z X1 V Z1. equidistant(V::'a,X,V,X1) & equidistant(V::'a,Z,V,Z1) & between(V::'a,X,Z) & between(X::'a,Y,Z) --> between(X1::'a,continuous(X::'a,Y,Z,X1,Z1,V),Z1))"
wenzelm@24127
   680
wenzelm@24127
   681
abbreviation "GEO001_0_eq continuous extension euclid2 euclid1 outer_pasch equidistant
wenzelm@24127
   682
  between equal \<equiv>
wenzelm@24128
   683
  (\<forall>X Y W Z. equal(X::'a,Y) & between(X::'a,W,Z) --> between(Y::'a,W,Z)) &
wenzelm@24128
   684
  (\<forall>X W Y Z. equal(X::'a,Y) & between(W::'a,X,Z) --> between(W::'a,Y,Z)) &
wenzelm@24128
   685
  (\<forall>X W Z Y. equal(X::'a,Y) & between(W::'a,Z,X) --> between(W::'a,Z,Y)) &
wenzelm@24128
   686
  (\<forall>X Y V W Z. equal(X::'a,Y) & equidistant(X::'a,V,W,Z) --> equidistant(Y::'a,V,W,Z)) &
wenzelm@24128
   687
  (\<forall>X V Y W Z. equal(X::'a,Y) & equidistant(V::'a,X,W,Z) --> equidistant(V::'a,Y,W,Z)) &
wenzelm@24128
   688
  (\<forall>X V W Y Z. equal(X::'a,Y) & equidistant(V::'a,W,X,Z) --> equidistant(V::'a,W,Y,Z)) &
wenzelm@24128
   689
  (\<forall>X V W Z Y. equal(X::'a,Y) & equidistant(V::'a,W,Z,X) --> equidistant(V::'a,W,Z,Y)) &
wenzelm@24128
   690
  (\<forall>X Y V1 V2 V3 V4. equal(X::'a,Y) --> equal(outer_pasch(X::'a,V1,V2,V3,V4),outer_pasch(Y::'a,V1,V2,V3,V4))) &
wenzelm@24128
   691
  (\<forall>X V1 Y V2 V3 V4. equal(X::'a,Y) --> equal(outer_pasch(V1::'a,X,V2,V3,V4),outer_pasch(V1::'a,Y,V2,V3,V4))) &
wenzelm@24128
   692
  (\<forall>X V1 V2 Y V3 V4. equal(X::'a,Y) --> equal(outer_pasch(V1::'a,V2,X,V3,V4),outer_pasch(V1::'a,V2,Y,V3,V4))) &
wenzelm@24128
   693
  (\<forall>X V1 V2 V3 Y V4. equal(X::'a,Y) --> equal(outer_pasch(V1::'a,V2,V3,X,V4),outer_pasch(V1::'a,V2,V3,Y,V4))) &
wenzelm@24128
   694
  (\<forall>X V1 V2 V3 V4 Y. equal(X::'a,Y) --> equal(outer_pasch(V1::'a,V2,V3,V4,X),outer_pasch(V1::'a,V2,V3,V4,Y))) &
wenzelm@24128
   695
  (\<forall>A B C D E F'. equal(A::'a,B) --> equal(euclid1(A::'a,C,D,E,F'),euclid1(B::'a,C,D,E,F'))) &
wenzelm@24128
   696
  (\<forall>G I' H J K' L. equal(G::'a,H) --> equal(euclid1(I'::'a,G,J,K',L),euclid1(I'::'a,H,J,K',L))) &
wenzelm@24128
   697
  (\<forall>M O' P N Q R. equal(M::'a,N) --> equal(euclid1(O'::'a,P,M,Q,R),euclid1(O'::'a,P,N,Q,R))) &
wenzelm@24128
   698
  (\<forall>S' U V W T' X. equal(S'::'a,T') --> equal(euclid1(U::'a,V,W,S',X),euclid1(U::'a,V,W,T',X))) &
wenzelm@24128
   699
  (\<forall>Y A1 B1 C1 D1 Z. equal(Y::'a,Z) --> equal(euclid1(A1::'a,B1,C1,D1,Y),euclid1(A1::'a,B1,C1,D1,Z))) &
wenzelm@24128
   700
  (\<forall>E1 F1 G1 H1 I1 J1. equal(E1::'a,F1) --> equal(euclid2(E1::'a,G1,H1,I1,J1),euclid2(F1::'a,G1,H1,I1,J1))) &
wenzelm@24128
   701
  (\<forall>K1 M1 L1 N1 O1 P1. equal(K1::'a,L1) --> equal(euclid2(M1::'a,K1,N1,O1,P1),euclid2(M1::'a,L1,N1,O1,P1))) &
wenzelm@24128
   702
  (\<forall>Q1 S1 T1 R1 U1 V1. equal(Q1::'a,R1) --> equal(euclid2(S1::'a,T1,Q1,U1,V1),euclid2(S1::'a,T1,R1,U1,V1))) &
wenzelm@24128
   703
  (\<forall>W1 Y1 Z1 A2 X1 B2. equal(W1::'a,X1) --> equal(euclid2(Y1::'a,Z1,A2,W1,B2),euclid2(Y1::'a,Z1,A2,X1,B2))) &
wenzelm@24128
   704
  (\<forall>C2 E2 F2 G2 H2 D2. equal(C2::'a,D2) --> equal(euclid2(E2::'a,F2,G2,H2,C2),euclid2(E2::'a,F2,G2,H2,D2))) &
wenzelm@24128
   705
  (\<forall>X Y V1 V2 V3. equal(X::'a,Y) --> equal(extension(X::'a,V1,V2,V3),extension(Y::'a,V1,V2,V3))) &
wenzelm@24128
   706
  (\<forall>X V1 Y V2 V3. equal(X::'a,Y) --> equal(extension(V1::'a,X,V2,V3),extension(V1::'a,Y,V2,V3))) &
wenzelm@24128
   707
  (\<forall>X V1 V2 Y V3. equal(X::'a,Y) --> equal(extension(V1::'a,V2,X,V3),extension(V1::'a,V2,Y,V3))) &
wenzelm@24128
   708
  (\<forall>X V1 V2 V3 Y. equal(X::'a,Y) --> equal(extension(V1::'a,V2,V3,X),extension(V1::'a,V2,V3,Y))) &
wenzelm@24128
   709
  (\<forall>X Y V1 V2 V3 V4 V5. equal(X::'a,Y) --> equal(continuous(X::'a,V1,V2,V3,V4,V5),continuous(Y::'a,V1,V2,V3,V4,V5))) &
wenzelm@24128
   710
  (\<forall>X V1 Y V2 V3 V4 V5. equal(X::'a,Y) --> equal(continuous(V1::'a,X,V2,V3,V4,V5),continuous(V1::'a,Y,V2,V3,V4,V5))) &
wenzelm@24128
   711
  (\<forall>X V1 V2 Y V3 V4 V5. equal(X::'a,Y) --> equal(continuous(V1::'a,V2,X,V3,V4,V5),continuous(V1::'a,V2,Y,V3,V4,V5))) &
wenzelm@24128
   712
  (\<forall>X V1 V2 V3 Y V4 V5. equal(X::'a,Y) --> equal(continuous(V1::'a,V2,V3,X,V4,V5),continuous(V1::'a,V2,V3,Y,V4,V5))) &
wenzelm@24128
   713
  (\<forall>X V1 V2 V3 V4 Y V5. equal(X::'a,Y) --> equal(continuous(V1::'a,V2,V3,V4,X,V5),continuous(V1::'a,V2,V3,V4,Y,V5))) &
wenzelm@24127
   714
  (\<forall>X V1 V2 V3 V4 V5 Y. equal(X::'a,Y) --> equal(continuous(V1::'a,V2,V3,V4,V5,X),continuous(V1::'a,V2,V3,V4,V5,Y)))"
wenzelm@24127
   715
wenzelm@24127
   716
wenzelm@24127
   717
(*179 inferences so far.  Searching to depth 7.  3.9 secs*)
wenzelm@24127
   718
lemma GEO003_1:
wenzelm@24127
   719
  "EQU001_0_ax equal &
wenzelm@24127
   720
  GEO001_0_ax continuous lower_dimension_point_3 lower_dimension_point_2
wenzelm@24127
   721
    lower_dimension_point_1 extension euclid2 euclid1 outer_pasch equidistant equal between &
wenzelm@24127
   722
  GEO001_0_eq continuous extension euclid2 euclid1 outer_pasch equidistant between equal &
wenzelm@24127
   723
  (~between(a::'a,b,b)) --> False"
wenzelm@24127
   724
  by meson
wenzelm@24127
   725
wenzelm@24127
   726
abbreviation "GEO002_ax_eq continuous euclid2 euclid1 lower_dimension_point_3
wenzelm@24127
   727
  lower_dimension_point_2 lower_dimension_point_1 inner_pasch extension
wenzelm@24127
   728
  between equal equidistant \<equiv>
wenzelm@24128
   729
  (\<forall>Y X. equidistant(X::'a,Y,Y,X)) &
wenzelm@24128
   730
  (\<forall>X Y Z V V2 W. equidistant(X::'a,Y,Z,V) & equidistant(X::'a,Y,V2,W) --> equidistant(Z::'a,V,V2,W)) &
wenzelm@24128
   731
  (\<forall>Z X Y. equidistant(X::'a,Y,Z,Z) --> equal(X::'a,Y)) &
wenzelm@24128
   732
  (\<forall>X Y W V. between(X::'a,Y,extension(X::'a,Y,W,V))) &
wenzelm@24128
   733
  (\<forall>X Y W V. equidistant(Y::'a,extension(X::'a,Y,W,V),W,V)) &
wenzelm@24128
   734
  (\<forall>X1 Y1 X Y Z V Z1 V1. equidistant(X::'a,Y,X1,Y1) & equidistant(Y::'a,Z,Y1,Z1) & equidistant(X::'a,V,X1,V1) & equidistant(Y::'a,V,Y1,V1) & between(X::'a,Y,Z) & between(X1::'a,Y1,Z1) --> equal(X::'a,Y) | equidistant(Z::'a,V,Z1,V1)) &
wenzelm@24128
   735
  (\<forall>X Y. between(X::'a,Y,X) --> equal(X::'a,Y)) &
wenzelm@24128
   736
  (\<forall>U V W X Y. between(U::'a,V,W) & between(Y::'a,X,W) --> between(V::'a,inner_pasch(U::'a,V,W,X,Y),Y)) &
wenzelm@24128
   737
  (\<forall>V W X Y U. between(U::'a,V,W) & between(Y::'a,X,W) --> between(X::'a,inner_pasch(U::'a,V,W,X,Y),U)) &
wenzelm@24128
   738
  (~between(lower_dimension_point_1::'a,lower_dimension_point_2,lower_dimension_point_3)) &
wenzelm@24128
   739
  (~between(lower_dimension_point_2::'a,lower_dimension_point_3,lower_dimension_point_1)) &
wenzelm@24128
   740
  (~between(lower_dimension_point_3::'a,lower_dimension_point_1,lower_dimension_point_2)) &
wenzelm@24128
   741
  (\<forall>Z X Y W V. equidistant(X::'a,W,X,V) & equidistant(Y::'a,W,Y,V) & equidistant(Z::'a,W,Z,V) --> between(X::'a,Y,Z) | between(Y::'a,Z,X) | between(Z::'a,X,Y) | equal(W::'a,V)) &
wenzelm@24128
   742
  (\<forall>U V W X Y. between(U::'a,W,Y) & between(V::'a,W,X) --> equal(U::'a,W) | between(U::'a,V,euclid1(U::'a,V,W,X,Y))) &
wenzelm@24128
   743
  (\<forall>U V W X Y. between(U::'a,W,Y) & between(V::'a,W,X) --> equal(U::'a,W) | between(U::'a,X,euclid2(U::'a,V,W,X,Y))) &
wenzelm@24128
   744
  (\<forall>U V W X Y. between(U::'a,W,Y) & between(V::'a,W,X) --> equal(U::'a,W) | between(euclid1(U::'a,V,W,X,Y),Y,euclid2(U::'a,V,W,X,Y))) &
wenzelm@24128
   745
  (\<forall>U V V1 W X X1. equidistant(U::'a,V,U,V1) & equidistant(U::'a,X,U,X1) & between(U::'a,V,X) & between(V::'a,W,X) --> between(V1::'a,continuous(U::'a,V,V1,W,X,X1),X1)) &
wenzelm@24128
   746
  (\<forall>U V V1 W X X1. equidistant(U::'a,V,U,V1) & equidistant(U::'a,X,U,X1) & between(U::'a,V,X) & between(V::'a,W,X) --> equidistant(U::'a,W,U,continuous(U::'a,V,V1,W,X,X1))) &
wenzelm@24128
   747
  (\<forall>X Y W Z. equal(X::'a,Y) & between(X::'a,W,Z) --> between(Y::'a,W,Z)) &
wenzelm@24128
   748
  (\<forall>X W Y Z. equal(X::'a,Y) & between(W::'a,X,Z) --> between(W::'a,Y,Z)) &
wenzelm@24128
   749
  (\<forall>X W Z Y. equal(X::'a,Y) & between(W::'a,Z,X) --> between(W::'a,Z,Y)) &
wenzelm@24128
   750
  (\<forall>X Y V W Z. equal(X::'a,Y) & equidistant(X::'a,V,W,Z) --> equidistant(Y::'a,V,W,Z)) &
wenzelm@24128
   751
  (\<forall>X V Y W Z. equal(X::'a,Y) & equidistant(V::'a,X,W,Z) --> equidistant(V::'a,Y,W,Z)) &
wenzelm@24128
   752
  (\<forall>X V W Y Z. equal(X::'a,Y) & equidistant(V::'a,W,X,Z) --> equidistant(V::'a,W,Y,Z)) &
wenzelm@24128
   753
  (\<forall>X V W Z Y. equal(X::'a,Y) & equidistant(V::'a,W,Z,X) --> equidistant(V::'a,W,Z,Y)) &
wenzelm@24128
   754
  (\<forall>X Y V1 V2 V3 V4. equal(X::'a,Y) --> equal(inner_pasch(X::'a,V1,V2,V3,V4),inner_pasch(Y::'a,V1,V2,V3,V4))) &
wenzelm@24128
   755
  (\<forall>X V1 Y V2 V3 V4. equal(X::'a,Y) --> equal(inner_pasch(V1::'a,X,V2,V3,V4),inner_pasch(V1::'a,Y,V2,V3,V4))) &
wenzelm@24128
   756
  (\<forall>X V1 V2 Y V3 V4. equal(X::'a,Y) --> equal(inner_pasch(V1::'a,V2,X,V3,V4),inner_pasch(V1::'a,V2,Y,V3,V4))) &
wenzelm@24128
   757
  (\<forall>X V1 V2 V3 Y V4. equal(X::'a,Y) --> equal(inner_pasch(V1::'a,V2,V3,X,V4),inner_pasch(V1::'a,V2,V3,Y,V4))) &
wenzelm@24128
   758
  (\<forall>X V1 V2 V3 V4 Y. equal(X::'a,Y) --> equal(inner_pasch(V1::'a,V2,V3,V4,X),inner_pasch(V1::'a,V2,V3,V4,Y))) &
wenzelm@24128
   759
  (\<forall>A B C D E F'. equal(A::'a,B) --> equal(euclid1(A::'a,C,D,E,F'),euclid1(B::'a,C,D,E,F'))) &
wenzelm@24128
   760
  (\<forall>G I' H J K' L. equal(G::'a,H) --> equal(euclid1(I'::'a,G,J,K',L),euclid1(I'::'a,H,J,K',L))) &
wenzelm@24128
   761
  (\<forall>M O' P N Q R. equal(M::'a,N) --> equal(euclid1(O'::'a,P,M,Q,R),euclid1(O'::'a,P,N,Q,R))) &
wenzelm@24128
   762
  (\<forall>S' U V W T' X. equal(S'::'a,T') --> equal(euclid1(U::'a,V,W,S',X),euclid1(U::'a,V,W,T',X))) &
wenzelm@24128
   763
  (\<forall>Y A1 B1 C1 D1 Z. equal(Y::'a,Z) --> equal(euclid1(A1::'a,B1,C1,D1,Y),euclid1(A1::'a,B1,C1,D1,Z))) &
wenzelm@24128
   764
  (\<forall>E1 F1 G1 H1 I1 J1. equal(E1::'a,F1) --> equal(euclid2(E1::'a,G1,H1,I1,J1),euclid2(F1::'a,G1,H1,I1,J1))) &
wenzelm@24128
   765
  (\<forall>K1 M1 L1 N1 O1 P1. equal(K1::'a,L1) --> equal(euclid2(M1::'a,K1,N1,O1,P1),euclid2(M1::'a,L1,N1,O1,P1))) &
wenzelm@24128
   766
  (\<forall>Q1 S1 T1 R1 U1 V1. equal(Q1::'a,R1) --> equal(euclid2(S1::'a,T1,Q1,U1,V1),euclid2(S1::'a,T1,R1,U1,V1))) &
wenzelm@24128
   767
  (\<forall>W1 Y1 Z1 A2 X1 B2. equal(W1::'a,X1) --> equal(euclid2(Y1::'a,Z1,A2,W1,B2),euclid2(Y1::'a,Z1,A2,X1,B2))) &
wenzelm@24128
   768
  (\<forall>C2 E2 F2 G2 H2 D2. equal(C2::'a,D2) --> equal(euclid2(E2::'a,F2,G2,H2,C2),euclid2(E2::'a,F2,G2,H2,D2))) &
wenzelm@24128
   769
  (\<forall>X Y V1 V2 V3. equal(X::'a,Y) --> equal(extension(X::'a,V1,V2,V3),extension(Y::'a,V1,V2,V3))) &
wenzelm@24128
   770
  (\<forall>X V1 Y V2 V3. equal(X::'a,Y) --> equal(extension(V1::'a,X,V2,V3),extension(V1::'a,Y,V2,V3))) &
wenzelm@24128
   771
  (\<forall>X V1 V2 Y V3. equal(X::'a,Y) --> equal(extension(V1::'a,V2,X,V3),extension(V1::'a,V2,Y,V3))) &
wenzelm@24128
   772
  (\<forall>X V1 V2 V3 Y. equal(X::'a,Y) --> equal(extension(V1::'a,V2,V3,X),extension(V1::'a,V2,V3,Y))) &
wenzelm@24128
   773
  (\<forall>X Y V1 V2 V3 V4 V5. equal(X::'a,Y) --> equal(continuous(X::'a,V1,V2,V3,V4,V5),continuous(Y::'a,V1,V2,V3,V4,V5))) &
wenzelm@24128
   774
  (\<forall>X V1 Y V2 V3 V4 V5. equal(X::'a,Y) --> equal(continuous(V1::'a,X,V2,V3,V4,V5),continuous(V1::'a,Y,V2,V3,V4,V5))) &
wenzelm@24128
   775
  (\<forall>X V1 V2 Y V3 V4 V5. equal(X::'a,Y) --> equal(continuous(V1::'a,V2,X,V3,V4,V5),continuous(V1::'a,V2,Y,V3,V4,V5))) &
wenzelm@24128
   776
  (\<forall>X V1 V2 V3 Y V4 V5. equal(X::'a,Y) --> equal(continuous(V1::'a,V2,V3,X,V4,V5),continuous(V1::'a,V2,V3,Y,V4,V5))) &
wenzelm@24128
   777
  (\<forall>X V1 V2 V3 V4 Y V5. equal(X::'a,Y) --> equal(continuous(V1::'a,V2,V3,V4,X,V5),continuous(V1::'a,V2,V3,V4,Y,V5))) &
wenzelm@24127
   778
  (\<forall>X V1 V2 V3 V4 V5 Y. equal(X::'a,Y) --> equal(continuous(V1::'a,V2,V3,V4,V5,X),continuous(V1::'a,V2,V3,V4,V5,Y)))"
wenzelm@24127
   779
wenzelm@24127
   780
(*4272 inferences so far.  Searching to depth 10.  29.4 secs*)
wenzelm@24127
   781
lemma GEO017_2:
wenzelm@24127
   782
  "EQU001_0_ax equal &
wenzelm@24127
   783
  GEO002_ax_eq continuous euclid2 euclid1 lower_dimension_point_3
wenzelm@24127
   784
    lower_dimension_point_2 lower_dimension_point_1 inner_pasch extension
wenzelm@24127
   785
    between equal equidistant &
wenzelm@24128
   786
  (equidistant(u::'a,v,w,x)) &
wenzelm@24127
   787
  (~equidistant(u::'a,v,x,w)) --> False"
wenzelm@24127
   788
  oops
wenzelm@24127
   789
wenzelm@24127
   790
(*382903 inferences so far.  Searching to depth 9. 1022s (17 mins) on griffon*)
wenzelm@24127
   791
lemma GEO027_3:
wenzelm@24127
   792
  "EQU001_0_ax equal &
wenzelm@24127
   793
  GEO002_ax_eq continuous euclid2 euclid1 lower_dimension_point_3
wenzelm@24127
   794
    lower_dimension_point_2 lower_dimension_point_1 inner_pasch extension
wenzelm@24127
   795
    between equal equidistant &
wenzelm@24128
   796
  (\<forall>U V. equal(reflection(U::'a,V),extension(U::'a,V,U,V))) &
wenzelm@24128
   797
  (\<forall>X Y Z. equal(X::'a,Y) --> equal(reflection(X::'a,Z),reflection(Y::'a,Z))) &
wenzelm@24128
   798
  (\<forall>A1 C1 B1. equal(A1::'a,B1) --> equal(reflection(C1::'a,A1),reflection(C1::'a,B1))) &
wenzelm@24128
   799
  (\<forall>U V. equidistant(U::'a,V,U,V)) &
wenzelm@24128
   800
  (\<forall>W X U V. equidistant(U::'a,V,W,X) --> equidistant(W::'a,X,U,V)) &
wenzelm@24128
   801
  (\<forall>V U W X. equidistant(U::'a,V,W,X) --> equidistant(V::'a,U,W,X)) &
wenzelm@24128
   802
  (\<forall>U V X W. equidistant(U::'a,V,W,X) --> equidistant(U::'a,V,X,W)) &
wenzelm@24128
   803
  (\<forall>V U X W. equidistant(U::'a,V,W,X) --> equidistant(V::'a,U,X,W)) &
wenzelm@24128
   804
  (\<forall>W X V U. equidistant(U::'a,V,W,X) --> equidistant(W::'a,X,V,U)) &
wenzelm@24128
   805
  (\<forall>X W U V. equidistant(U::'a,V,W,X) --> equidistant(X::'a,W,U,V)) &
wenzelm@24128
   806
  (\<forall>X W V U. equidistant(U::'a,V,W,X) --> equidistant(X::'a,W,V,U)) &
wenzelm@24128
   807
  (\<forall>W X U V Y Z. equidistant(U::'a,V,W,X) & equidistant(W::'a,X,Y,Z) --> equidistant(U::'a,V,Y,Z)) &
wenzelm@24128
   808
  (\<forall>U V W. equal(V::'a,extension(U::'a,V,W,W))) &
wenzelm@24128
   809
  (\<forall>W X U V Y. equal(Y::'a,extension(U::'a,V,W,X)) --> between(U::'a,V,Y)) &
wenzelm@24128
   810
  (\<forall>U V. between(U::'a,V,reflection(U::'a,V))) &
wenzelm@24128
   811
  (\<forall>U V. equidistant(V::'a,reflection(U::'a,V),U,V)) &
wenzelm@24128
   812
  (\<forall>U V. equal(U::'a,V) --> equal(V::'a,reflection(U::'a,V))) &
wenzelm@24128
   813
  (\<forall>U. equal(U::'a,reflection(U::'a,U))) &
wenzelm@24128
   814
  (\<forall>U V. equal(V::'a,reflection(U::'a,V)) --> equal(U::'a,V)) &
wenzelm@24128
   815
  (\<forall>U V. equidistant(U::'a,U,V,V)) &
wenzelm@24128
   816
  (\<forall>V V1 U W U1 W1. equidistant(U::'a,V,U1,V1) & equidistant(V::'a,W,V1,W1) & between(U::'a,V,W) & between(U1::'a,V1,W1) --> equidistant(U::'a,W,U1,W1)) &
wenzelm@24128
   817
  (\<forall>U V W X. between(U::'a,V,W) & between(U::'a,V,X) & equidistant(V::'a,W,V,X) --> equal(U::'a,V) | equal(W::'a,X)) &
wenzelm@24128
   818
  (between(u::'a,v,w)) &
wenzelm@24128
   819
  (~equal(u::'a,v)) &
wenzelm@24127
   820
  (~equal(w::'a,extension(u::'a,v,v,w))) --> False"
wenzelm@24127
   821
  oops
wenzelm@24127
   822
wenzelm@24127
   823
(*313884 inferences so far.  Searching to depth 10.  887 secs: 15 mins.*)
wenzelm@24127
   824
lemma GEO058_2:
wenzelm@24127
   825
  "EQU001_0_ax equal &
wenzelm@24127
   826
  GEO002_ax_eq continuous euclid2 euclid1 lower_dimension_point_3
wenzelm@24127
   827
    lower_dimension_point_2 lower_dimension_point_1 inner_pasch extension
wenzelm@24127
   828
    between equal equidistant &
wenzelm@24128
   829
  (\<forall>U V. equal(reflection(U::'a,V),extension(U::'a,V,U,V))) &
wenzelm@24128
   830
  (\<forall>X Y Z. equal(X::'a,Y) --> equal(reflection(X::'a,Z),reflection(Y::'a,Z))) &
wenzelm@24128
   831
  (\<forall>A1 C1 B1. equal(A1::'a,B1) --> equal(reflection(C1::'a,A1),reflection(C1::'a,B1))) &
wenzelm@24128
   832
  (equal(v::'a,reflection(u::'a,v))) &
wenzelm@24127
   833
  (~equal(u::'a,v)) --> False"
wenzelm@24127
   834
  oops
wenzelm@24127
   835
wenzelm@24127
   836
(*0 inferences so far.  Searching to depth 0.  0.2 secs*)
wenzelm@24127
   837
lemma GEO079_1:
wenzelm@24128
   838
  "(\<forall>U V W X Y Z. right_angle(U::'a,V,W) & right_angle(X::'a,Y,Z) --> eq(U::'a,V,W,X,Y,Z)) &
wenzelm@24128
   839
  (\<forall>U V W X Y Z. CONGRUENT(U::'a,V,W,X,Y,Z) --> eq(U::'a,V,W,X,Y,Z)) &
wenzelm@24128
   840
  (\<forall>V W U X. trapezoid(U::'a,V,W,X) --> parallel(V::'a,W,U,X)) &
wenzelm@24128
   841
  (\<forall>U V X Y. parallel(U::'a,V,X,Y) --> eq(X::'a,V,U,V,X,Y)) &
wenzelm@24128
   842
  (trapezoid(a::'a,b,c,d)) &
wenzelm@24127
   843
  (~eq(a::'a,c,b,c,a,d)) --> False"
wenzelm@24127
   844
   by meson
wenzelm@24127
   845
wenzelm@24127
   846
abbreviation "GRP003_0_ax equal multiply INVERSE identity product \<equiv>
wenzelm@24128
   847
  (\<forall>X. product(identity::'a,X,X)) &
wenzelm@24128
   848
  (\<forall>X. product(X::'a,identity,X)) &
wenzelm@24128
   849
  (\<forall>X. product(INVERSE(X),X,identity)) &
wenzelm@24128
   850
  (\<forall>X. product(X::'a,INVERSE(X),identity)) &
wenzelm@24128
   851
  (\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
   852
  (\<forall>X Y Z W. product(X::'a,Y,Z) & product(X::'a,Y,W) --> equal(Z::'a,W)) &
wenzelm@24128
   853
  (\<forall>Y U Z X V W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(U::'a,Z,W) --> product(X::'a,V,W)) &
wenzelm@24127
   854
  (\<forall>Y X V U Z W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(X::'a,V,W) --> product(U::'a,Z,W))"
wenzelm@24127
   855
wenzelm@24127
   856
abbreviation "GRP003_0_eq product multiply INVERSE equal \<equiv>
wenzelm@24128
   857
  (\<forall>X Y. equal(X::'a,Y) --> equal(INVERSE(X),INVERSE(Y))) &
wenzelm@24128
   858
  (\<forall>X Y W. equal(X::'a,Y) --> equal(multiply(X::'a,W),multiply(Y::'a,W))) &
wenzelm@24128
   859
  (\<forall>X W Y. equal(X::'a,Y) --> equal(multiply(W::'a,X),multiply(W::'a,Y))) &
wenzelm@24128
   860
  (\<forall>X Y W Z. equal(X::'a,Y) & product(X::'a,W,Z) --> product(Y::'a,W,Z)) &
wenzelm@24128
   861
  (\<forall>X W Y Z. equal(X::'a,Y) & product(W::'a,X,Z) --> product(W::'a,Y,Z)) &
wenzelm@24127
   862
  (\<forall>X W Z Y. equal(X::'a,Y) & product(W::'a,Z,X) --> product(W::'a,Z,Y))"
wenzelm@24127
   863
wenzelm@24127
   864
(*2032008 inferences so far. Searching to depth 16. 658s (11 mins) on griffon*)
wenzelm@24127
   865
lemma GRP001_1:
wenzelm@24127
   866
  "EQU001_0_ax equal &
wenzelm@24127
   867
  GRP003_0_ax equal multiply INVERSE identity product &
wenzelm@24127
   868
  GRP003_0_eq product multiply INVERSE equal &
wenzelm@24128
   869
  (\<forall>X. product(X::'a,X,identity)) &
wenzelm@24128
   870
  (product(a::'a,b,c)) &
wenzelm@24127
   871
  (~product(b::'a,a,c)) --> False"
wenzelm@24127
   872
  oops
wenzelm@24127
   873
wenzelm@24127
   874
(*2386 inferences so far.  Searching to depth 11.  8.7 secs*)
wenzelm@24127
   875
lemma GRP008_1:
wenzelm@24127
   876
  "EQU001_0_ax equal &
wenzelm@24127
   877
  GRP003_0_ax equal multiply INVERSE identity product &
wenzelm@24127
   878
  GRP003_0_eq product multiply INVERSE equal &
wenzelm@24128
   879
  (\<forall>A B. equal(A::'a,B) --> equal(h(A),h(B))) &
wenzelm@24128
   880
  (\<forall>C D. equal(C::'a,D) --> equal(j(C),j(D))) &
wenzelm@24128
   881
  (\<forall>A B. equal(A::'a,B) & q(A) --> q(B)) &
wenzelm@24128
   882
  (\<forall>B A C. q(A) & product(A::'a,B,C) --> product(B::'a,A,C)) &
wenzelm@24128
   883
  (\<forall>A. product(j(A),A,h(A)) | product(A::'a,j(A),h(A)) | q(A)) &
wenzelm@24128
   884
  (\<forall>A. product(j(A),A,h(A)) & product(A::'a,j(A),h(A)) --> q(A)) &
wenzelm@24127
   885
  (~q(identity)) --> False"
wenzelm@24127
   886
  by meson
wenzelm@24127
   887
wenzelm@24127
   888
(*8625 inferences so far.  Searching to depth 11.  20 secs*)
wenzelm@24127
   889
lemma GRP013_1:
wenzelm@24127
   890
  "EQU001_0_ax equal &
wenzelm@24127
   891
  GRP003_0_ax equal multiply INVERSE identity product &
wenzelm@24127
   892
  GRP003_0_eq product multiply INVERSE equal &
wenzelm@24128
   893
  (\<forall>A. product(A::'a,A,identity)) &
wenzelm@24128
   894
  (product(a::'a,b,c)) &
wenzelm@24128
   895
  (product(INVERSE(a),INVERSE(b),d)) &
wenzelm@24128
   896
  (\<forall>A C B. product(INVERSE(A),INVERSE(B),C) --> product(A::'a,C,B)) &
wenzelm@24127
   897
  (~product(c::'a,d,identity)) --> False"
wenzelm@24127
   898
  oops
wenzelm@24127
   899
wenzelm@24127
   900
(*2448 inferences so far.  Searching to depth 10.  7.2 secs*)
wenzelm@24127
   901
lemma GRP037_3:
wenzelm@24127
   902
  "EQU001_0_ax equal &
wenzelm@24127
   903
  GRP003_0_ax equal multiply INVERSE identity product &
wenzelm@24127
   904
  GRP003_0_eq product multiply INVERSE equal &
wenzelm@24128
   905
  (\<forall>A B C. subgroup_member(A) & subgroup_member(B) & product(A::'a,INVERSE(B),C) --> subgroup_member(C)) &
wenzelm@24128
   906
  (\<forall>A B. equal(A::'a,B) & subgroup_member(A) --> subgroup_member(B)) &
wenzelm@24128
   907
  (\<forall>A. subgroup_member(A) --> product(Gidentity::'a,A,A)) &
wenzelm@24128
   908
  (\<forall>A. subgroup_member(A) --> product(A::'a,Gidentity,A)) &
wenzelm@24128
   909
  (\<forall>A. subgroup_member(A) --> product(A::'a,Ginverse(A),Gidentity)) &
wenzelm@24128
   910
  (\<forall>A. subgroup_member(A) --> product(Ginverse(A),A,Gidentity)) &
wenzelm@24128
   911
  (\<forall>A. subgroup_member(A) --> subgroup_member(Ginverse(A))) &
wenzelm@24128
   912
  (\<forall>A B. equal(A::'a,B) --> equal(Ginverse(A),Ginverse(B))) &
wenzelm@24128
   913
  (\<forall>A C D B. product(A::'a,B,C) & product(A::'a,D,C) --> equal(D::'a,B)) &
wenzelm@24128
   914
  (\<forall>B C D A. product(A::'a,B,C) & product(D::'a,B,C) --> equal(D::'a,A)) &
wenzelm@24128
   915
  (subgroup_member(a)) &
wenzelm@24128
   916
  (subgroup_member(Gidentity)) &
wenzelm@24127
   917
  (~equal(INVERSE(a),Ginverse(a))) --> False"
wenzelm@24127
   918
  by meson
wenzelm@24127
   919
wenzelm@24127
   920
(*163 inferences so far.  Searching to depth 11.  0.3 secs*)
wenzelm@24127
   921
lemma GRP031_2:
wenzelm@24128
   922
  "(\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
   923
  (\<forall>X Y Z W. product(X::'a,Y,Z) & product(X::'a,Y,W) --> equal(Z::'a,W)) &
wenzelm@24128
   924
  (\<forall>Y U Z X V W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(U::'a,Z,W) --> product(X::'a,V,W)) &
wenzelm@24128
   925
  (\<forall>Y X V U Z W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(X::'a,V,W) --> product(U::'a,Z,W)) &
wenzelm@24128
   926
  (\<forall>A. product(A::'a,INVERSE(A),identity)) &
wenzelm@24128
   927
  (\<forall>A. product(A::'a,identity,A)) &
wenzelm@24127
   928
  (\<forall>A. ~product(A::'a,a,identity)) --> False"
wenzelm@24127
   929
   by meson
wenzelm@24127
   930
wenzelm@24127
   931
(*47 inferences so far.  Searching to depth 11.   0.2 secs*)
wenzelm@24127
   932
lemma GRP034_4:
wenzelm@24128
   933
  "(\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
   934
  (\<forall>X. product(identity::'a,X,X)) &
wenzelm@24128
   935
  (\<forall>X. product(X::'a,identity,X)) &
wenzelm@24128
   936
  (\<forall>X. product(X::'a,INVERSE(X),identity)) &
wenzelm@24128
   937
  (\<forall>Y U Z X V W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(U::'a,Z,W) --> product(X::'a,V,W)) &
wenzelm@24128
   938
  (\<forall>Y X V U Z W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(X::'a,V,W) --> product(U::'a,Z,W)) &
wenzelm@24128
   939
  (\<forall>B A C. subgroup_member(A) & subgroup_member(B) & product(B::'a,INVERSE(A),C) --> subgroup_member(C)) &
wenzelm@24128
   940
  (subgroup_member(a)) &
wenzelm@24127
   941
  (~subgroup_member(INVERSE(a))) --> False"
wenzelm@24127
   942
  by meson
wenzelm@24127
   943
wenzelm@24127
   944
(*3287 inferences so far.  Searching to depth 14.  3.5 secs*)
wenzelm@24127
   945
lemma GRP047_2:
wenzelm@24128
   946
  "(\<forall>X. product(identity::'a,X,X)) &
wenzelm@24128
   947
  (\<forall>X. product(INVERSE(X),X,identity)) &
wenzelm@24128
   948
  (\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
   949
  (\<forall>X Y Z W. product(X::'a,Y,Z) & product(X::'a,Y,W) --> equal(Z::'a,W)) &
wenzelm@24128
   950
  (\<forall>Y U Z X V W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(U::'a,Z,W) --> product(X::'a,V,W)) &
wenzelm@24128
   951
  (\<forall>Y X V U Z W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(X::'a,V,W) --> product(U::'a,Z,W)) &
wenzelm@24128
   952
  (\<forall>X W Z Y. equal(X::'a,Y) & product(W::'a,Z,X) --> product(W::'a,Z,Y)) &
wenzelm@24128
   953
  (equal(a::'a,b)) &
wenzelm@24127
   954
  (~equal(multiply(c::'a,a),multiply(c::'a,b))) --> False"
wenzelm@24127
   955
  by meson
wenzelm@24127
   956
wenzelm@24127
   957
(*25559 inferences so far.  Searching to depth 19.  16.9 secs*)
wenzelm@24127
   958
lemma GRP130_1_002:
wenzelm@24128
   959
  "(group_element(e_1)) &
wenzelm@24128
   960
  (group_element(e_2)) &
wenzelm@24128
   961
  (~equal(e_1::'a,e_2)) &
wenzelm@24128
   962
  (~equal(e_2::'a,e_1)) &
wenzelm@24128
   963
  (\<forall>X Y. group_element(X) & group_element(Y) --> product(X::'a,Y,e_1) | product(X::'a,Y,e_2)) &
wenzelm@24128
   964
  (\<forall>X Y W Z. product(X::'a,Y,W) & product(X::'a,Y,Z) --> equal(W::'a,Z)) &
wenzelm@24128
   965
  (\<forall>X Y W Z. product(X::'a,W,Y) & product(X::'a,Z,Y) --> equal(W::'a,Z)) &
wenzelm@24128
   966
  (\<forall>Y X W Z. product(W::'a,Y,X) & product(Z::'a,Y,X) --> equal(W::'a,Z)) &
wenzelm@24127
   967
  (\<forall>Z1 Z2 Y X. product(X::'a,Y,Z1) & product(X::'a,Z1,Z2) --> product(Z2::'a,Y,X)) --> False"
wenzelm@24127
   968
  oops
wenzelm@24127
   969
wenzelm@24127
   970
abbreviation "GRP004_0_ax INVERSE identity multiply equal \<equiv>
wenzelm@24128
   971
  (\<forall>X. equal(multiply(identity::'a,X),X)) &
wenzelm@24128
   972
  (\<forall>X. equal(multiply(INVERSE(X),X),identity)) &
wenzelm@24128
   973
  (\<forall>X Y Z. equal(multiply(multiply(X::'a,Y),Z),multiply(X::'a,multiply(Y::'a,Z)))) &
wenzelm@24128
   974
  (\<forall>A B. equal(A::'a,B) --> equal(INVERSE(A),INVERSE(B))) &
wenzelm@24128
   975
  (\<forall>C D E. equal(C::'a,D) --> equal(multiply(C::'a,E),multiply(D::'a,E))) &
wenzelm@24127
   976
  (\<forall>F' H G. equal(F'::'a,G) --> equal(multiply(H::'a,F'),multiply(H::'a,G)))"
wenzelm@24127
   977
wenzelm@24127
   978
abbreviation "GRP004_2_ax multiply least_upper_bound greatest_lower_bound equal \<equiv>
wenzelm@24128
   979
  (\<forall>Y X. equal(greatest_lower_bound(X::'a,Y),greatest_lower_bound(Y::'a,X))) &
wenzelm@24128
   980
  (\<forall>Y X. equal(least_upper_bound(X::'a,Y),least_upper_bound(Y::'a,X))) &
wenzelm@24128
   981
  (\<forall>X Y Z. equal(greatest_lower_bound(X::'a,greatest_lower_bound(Y::'a,Z)),greatest_lower_bound(greatest_lower_bound(X::'a,Y),Z))) &
wenzelm@24128
   982
  (\<forall>X Y Z. equal(least_upper_bound(X::'a,least_upper_bound(Y::'a,Z)),least_upper_bound(least_upper_bound(X::'a,Y),Z))) &
wenzelm@24128
   983
  (\<forall>X. equal(least_upper_bound(X::'a,X),X)) &
wenzelm@24128
   984
  (\<forall>X. equal(greatest_lower_bound(X::'a,X),X)) &
wenzelm@24128
   985
  (\<forall>Y X. equal(least_upper_bound(X::'a,greatest_lower_bound(X::'a,Y)),X)) &
wenzelm@24128
   986
  (\<forall>Y X. equal(greatest_lower_bound(X::'a,least_upper_bound(X::'a,Y)),X)) &
wenzelm@24128
   987
  (\<forall>Y X Z. equal(multiply(X::'a,least_upper_bound(Y::'a,Z)),least_upper_bound(multiply(X::'a,Y),multiply(X::'a,Z)))) &
wenzelm@24128
   988
  (\<forall>Y X Z. equal(multiply(X::'a,greatest_lower_bound(Y::'a,Z)),greatest_lower_bound(multiply(X::'a,Y),multiply(X::'a,Z)))) &
wenzelm@24128
   989
  (\<forall>Y Z X. equal(multiply(least_upper_bound(Y::'a,Z),X),least_upper_bound(multiply(Y::'a,X),multiply(Z::'a,X)))) &
wenzelm@24128
   990
  (\<forall>Y Z X. equal(multiply(greatest_lower_bound(Y::'a,Z),X),greatest_lower_bound(multiply(Y::'a,X),multiply(Z::'a,X)))) &
wenzelm@24128
   991
  (\<forall>A B C. equal(A::'a,B) --> equal(greatest_lower_bound(A::'a,C),greatest_lower_bound(B::'a,C))) &
wenzelm@24128
   992
  (\<forall>A C B. equal(A::'a,B) --> equal(greatest_lower_bound(C::'a,A),greatest_lower_bound(C::'a,B))) &
wenzelm@24128
   993
  (\<forall>A B C. equal(A::'a,B) --> equal(least_upper_bound(A::'a,C),least_upper_bound(B::'a,C))) &
wenzelm@24128
   994
  (\<forall>A C B. equal(A::'a,B) --> equal(least_upper_bound(C::'a,A),least_upper_bound(C::'a,B))) &
wenzelm@24128
   995
  (\<forall>A B C. equal(A::'a,B) --> equal(multiply(A::'a,C),multiply(B::'a,C))) &
wenzelm@24127
   996
  (\<forall>A C B. equal(A::'a,B) --> equal(multiply(C::'a,A),multiply(C::'a,B)))"
wenzelm@24127
   997
wenzelm@24127
   998
(*3468 inferences so far.  Searching to depth 10.  9.1 secs*)
wenzelm@24127
   999
lemma GRP156_1:
wenzelm@24127
  1000
  "EQU001_0_ax equal &
wenzelm@24127
  1001
  GRP004_0_ax INVERSE identity multiply equal &
wenzelm@24127
  1002
  GRP004_2_ax multiply least_upper_bound greatest_lower_bound equal &
wenzelm@24128
  1003
  (equal(least_upper_bound(a::'a,b),b)) &
wenzelm@24127
  1004
  (~equal(greatest_lower_bound(multiply(a::'a,c),multiply(b::'a,c)),multiply(a::'a,c))) --> False"
wenzelm@24128
  1005
    by meson
wenzelm@24127
  1006
wenzelm@24127
  1007
(*4394 inferences so far.  Searching to depth 10.  8.2 secs*)
wenzelm@24127
  1008
lemma GRP168_1:
wenzelm@24127
  1009
  "EQU001_0_ax equal &
wenzelm@24127
  1010
  GRP004_0_ax INVERSE identity multiply equal &
wenzelm@24128
  1011
  GRP004_2_ax multiply least_upper_bound greatest_lower_bound equal &
wenzelm@24128
  1012
  (equal(least_upper_bound(a::'a,b),b)) &
wenzelm@24127
  1013
  (~equal(least_upper_bound(multiply(INVERSE(c),multiply(a::'a,c)),multiply(INVERSE(c),multiply(b::'a,c))),multiply(INVERSE(c),multiply(b::'a,c)))) --> False"
wenzelm@24127
  1014
  by meson
wenzelm@24127
  1015
wenzelm@24127
  1016
abbreviation "HEN002_0_ax identity Zero Divide equal mless_equal \<equiv>
wenzelm@24128
  1017
  (\<forall>X Y. mless_equal(X::'a,Y) --> equal(Divide(X::'a,Y),Zero)) &
wenzelm@24128
  1018
  (\<forall>X Y. equal(Divide(X::'a,Y),Zero) --> mless_equal(X::'a,Y)) &
wenzelm@24128
  1019
  (\<forall>Y X. mless_equal(Divide(X::'a,Y),X)) &
wenzelm@24128
  1020
  (\<forall>X Y Z. mless_equal(Divide(Divide(X::'a,Z),Divide(Y::'a,Z)),Divide(Divide(X::'a,Y),Z))) &
wenzelm@24128
  1021
  (\<forall>X. mless_equal(Zero::'a,X)) &
wenzelm@24128
  1022
  (\<forall>X Y. mless_equal(X::'a,Y) & mless_equal(Y::'a,X) --> equal(X::'a,Y)) &
wenzelm@24127
  1023
  (\<forall>X. mless_equal(X::'a,identity))"
wenzelm@24127
  1024
wenzelm@24127
  1025
abbreviation "HEN002_0_eq mless_equal Divide equal \<equiv>
wenzelm@24128
  1026
  (\<forall>A B C. equal(A::'a,B) --> equal(Divide(A::'a,C),Divide(B::'a,C))) &
wenzelm@24128
  1027
  (\<forall>D F' E. equal(D::'a,E) --> equal(Divide(F'::'a,D),Divide(F'::'a,E))) &
wenzelm@24128
  1028
  (\<forall>G H I'. equal(G::'a,H) & mless_equal(G::'a,I') --> mless_equal(H::'a,I')) &
wenzelm@24127
  1029
  (\<forall>J L K'. equal(J::'a,K') & mless_equal(L::'a,J) --> mless_equal(L::'a,K'))"
wenzelm@24127
  1030
wenzelm@24127
  1031
(*250258 inferences so far.  Searching to depth 16.  406.2 secs*)
wenzelm@24127
  1032
lemma HEN003_3:
wenzelm@24127
  1033
  "EQU001_0_ax equal &
wenzelm@24127
  1034
  HEN002_0_ax identity Zero Divide equal mless_equal &
wenzelm@24127
  1035
  HEN002_0_eq mless_equal Divide equal &
wenzelm@24127
  1036
  (~equal(Divide(a::'a,a),Zero)) --> False"
wenzelm@24127
  1037
  oops
wenzelm@24127
  1038
wenzelm@24127
  1039
(*202177 inferences so far.  Searching to depth 14.  451 secs*)
wenzelm@24127
  1040
lemma HEN007_2:
wenzelm@24127
  1041
  "EQU001_0_ax equal &
wenzelm@24128
  1042
  (\<forall>X Y. mless_equal(X::'a,Y) --> quotient(X::'a,Y,Zero)) &
wenzelm@24128
  1043
  (\<forall>X Y. quotient(X::'a,Y,Zero) --> mless_equal(X::'a,Y)) &
wenzelm@24128
  1044
  (\<forall>Y Z X. quotient(X::'a,Y,Z) --> mless_equal(Z::'a,X)) &
wenzelm@24128
  1045
  (\<forall>Y X V3 V2 V1 Z V4 V5. quotient(X::'a,Y,V1) & quotient(Y::'a,Z,V2) & quotient(X::'a,Z,V3) & quotient(V3::'a,V2,V4) & quotient(V1::'a,Z,V5) --> mless_equal(V4::'a,V5)) &
wenzelm@24128
  1046
  (\<forall>X. mless_equal(Zero::'a,X)) &
wenzelm@24128
  1047
  (\<forall>X Y. mless_equal(X::'a,Y) & mless_equal(Y::'a,X) --> equal(X::'a,Y)) &
wenzelm@24128
  1048
  (\<forall>X. mless_equal(X::'a,identity)) &
wenzelm@24128
  1049
  (\<forall>X Y. quotient(X::'a,Y,Divide(X::'a,Y))) &
wenzelm@24128
  1050
  (\<forall>X Y Z W. quotient(X::'a,Y,Z) & quotient(X::'a,Y,W) --> equal(Z::'a,W)) &
wenzelm@24128
  1051
  (\<forall>X Y W Z. equal(X::'a,Y) & quotient(X::'a,W,Z) --> quotient(Y::'a,W,Z)) &
wenzelm@24128
  1052
  (\<forall>X W Y Z. equal(X::'a,Y) & quotient(W::'a,X,Z) --> quotient(W::'a,Y,Z)) &
wenzelm@24128
  1053
  (\<forall>X W Z Y. equal(X::'a,Y) & quotient(W::'a,Z,X) --> quotient(W::'a,Z,Y)) &
wenzelm@24128
  1054
  (\<forall>X Z Y. equal(X::'a,Y) & mless_equal(Z::'a,X) --> mless_equal(Z::'a,Y)) &
wenzelm@24128
  1055
  (\<forall>X Y Z. equal(X::'a,Y) & mless_equal(X::'a,Z) --> mless_equal(Y::'a,Z)) &
wenzelm@24128
  1056
  (\<forall>X Y W. equal(X::'a,Y) --> equal(Divide(X::'a,W),Divide(Y::'a,W))) &
wenzelm@24128
  1057
  (\<forall>X W Y. equal(X::'a,Y) --> equal(Divide(W::'a,X),Divide(W::'a,Y))) &
wenzelm@24128
  1058
  (\<forall>X. quotient(X::'a,identity,Zero)) &
wenzelm@24128
  1059
  (\<forall>X. quotient(Zero::'a,X,Zero)) &
wenzelm@24128
  1060
  (\<forall>X. quotient(X::'a,X,Zero)) &
wenzelm@24128
  1061
  (\<forall>X. quotient(X::'a,Zero,X)) &
wenzelm@24128
  1062
  (\<forall>Y X Z. mless_equal(X::'a,Y) & mless_equal(Y::'a,Z) --> mless_equal(X::'a,Z)) &
wenzelm@24128
  1063
  (\<forall>W1 X Z W2 Y. quotient(X::'a,Y,W1) & mless_equal(W1::'a,Z) & quotient(X::'a,Z,W2) --> mless_equal(W2::'a,Y)) &
wenzelm@24128
  1064
  (mless_equal(x::'a,y)) &
wenzelm@24128
  1065
  (quotient(z::'a,y,zQy)) &
wenzelm@24128
  1066
  (quotient(z::'a,x,zQx)) &
wenzelm@24127
  1067
  (~mless_equal(zQy::'a,zQx)) --> False"
wenzelm@24127
  1068
  oops
wenzelm@24127
  1069
wenzelm@24127
  1070
(*60026 inferences so far.  Searching to depth 12.  42.2 secs*)
wenzelm@24127
  1071
lemma HEN008_4:
wenzelm@24127
  1072
  "EQU001_0_ax equal &
wenzelm@24127
  1073
  HEN002_0_ax identity Zero Divide equal mless_equal &
wenzelm@24127
  1074
  HEN002_0_eq mless_equal Divide equal &
wenzelm@24128
  1075
  (\<forall>X. equal(Divide(X::'a,identity),Zero)) &
wenzelm@24128
  1076
  (\<forall>X. equal(Divide(Zero::'a,X),Zero)) &
wenzelm@24128
  1077
  (\<forall>X. equal(Divide(X::'a,X),Zero)) &
wenzelm@24128
  1078
  (equal(Divide(a::'a,Zero),a)) &
wenzelm@24128
  1079
  (\<forall>Y X Z. mless_equal(X::'a,Y) & mless_equal(Y::'a,Z) --> mless_equal(X::'a,Z)) &
wenzelm@24128
  1080
  (\<forall>X Z Y. mless_equal(Divide(X::'a,Y),Z) --> mless_equal(Divide(X::'a,Z),Y)) &
wenzelm@24128
  1081
  (\<forall>Y Z X. mless_equal(X::'a,Y) --> mless_equal(Divide(Z::'a,Y),Divide(Z::'a,X))) &
wenzelm@24128
  1082
  (mless_equal(a::'a,b)) &
wenzelm@24127
  1083
  (~mless_equal(Divide(a::'a,c),Divide(b::'a,c))) --> False"
wenzelm@24127
  1084
  oops
wenzelm@24127
  1085
wenzelm@24127
  1086
(*3160 inferences so far.  Searching to depth 11.  3.5 secs*)
wenzelm@24127
  1087
lemma HEN009_5:
wenzelm@24127
  1088
  "EQU001_0_ax equal &
wenzelm@24128
  1089
  (\<forall>Y X. equal(Divide(Divide(X::'a,Y),X),Zero)) &
wenzelm@24128
  1090
  (\<forall>X Y Z. equal(Divide(Divide(Divide(X::'a,Z),Divide(Y::'a,Z)),Divide(Divide(X::'a,Y),Z)),Zero)) &
wenzelm@24128
  1091
  (\<forall>X. equal(Divide(Zero::'a,X),Zero)) &
wenzelm@24128
  1092
  (\<forall>X Y. equal(Divide(X::'a,Y),Zero) & equal(Divide(Y::'a,X),Zero) --> equal(X::'a,Y)) &
wenzelm@24128
  1093
  (\<forall>X. equal(Divide(X::'a,identity),Zero)) &
wenzelm@24128
  1094
  (\<forall>A B C. equal(A::'a,B) --> equal(Divide(A::'a,C),Divide(B::'a,C))) &
wenzelm@24128
  1095
  (\<forall>D F' E. equal(D::'a,E) --> equal(Divide(F'::'a,D),Divide(F'::'a,E))) &
wenzelm@24128
  1096
  (\<forall>Y X Z. equal(Divide(X::'a,Y),Zero) & equal(Divide(Y::'a,Z),Zero) --> equal(Divide(X::'a,Z),Zero)) &
wenzelm@24128
  1097
  (\<forall>X Z Y. equal(Divide(Divide(X::'a,Y),Z),Zero) --> equal(Divide(Divide(X::'a,Z),Y),Zero)) &
wenzelm@24128
  1098
  (\<forall>Y Z X. equal(Divide(X::'a,Y),Zero) --> equal(Divide(Divide(Z::'a,Y),Divide(Z::'a,X)),Zero)) &
wenzelm@24128
  1099
  (~equal(Divide(identity::'a,a),Divide(identity::'a,Divide(identity::'a,Divide(identity::'a,a))))) &
wenzelm@24128
  1100
  (equal(Divide(identity::'a,a),b)) &
wenzelm@24128
  1101
  (equal(Divide(identity::'a,b),c)) &
wenzelm@24128
  1102
  (equal(Divide(identity::'a,c),d)) &
wenzelm@24127
  1103
  (~equal(b::'a,d)) --> False"
wenzelm@24127
  1104
  by meson
wenzelm@24127
  1105
wenzelm@24127
  1106
(*970373 inferences so far.  Searching to depth 17.  890.0 secs*)
wenzelm@24127
  1107
lemma HEN012_3:
wenzelm@24127
  1108
  "EQU001_0_ax equal &
wenzelm@24127
  1109
  HEN002_0_ax identity Zero Divide equal mless_equal &
wenzelm@24127
  1110
  HEN002_0_eq mless_equal Divide equal &
wenzelm@24127
  1111
  (~mless_equal(a::'a,a)) --> False"
wenzelm@24127
  1112
  oops
wenzelm@24127
  1113
wenzelm@24127
  1114
wenzelm@24127
  1115
(*1063 inferences so far.  Searching to depth 20.  1.0 secs*)
wenzelm@24127
  1116
lemma LCL010_1:
wenzelm@24128
  1117
 "(\<forall>X Y. is_a_theorem(equivalent(X::'a,Y)) & is_a_theorem(X) --> is_a_theorem(Y)) &
wenzelm@24128
  1118
  (\<forall>X Z Y. is_a_theorem(equivalent(equivalent(X::'a,Y),equivalent(equivalent(X::'a,Z),equivalent(Z::'a,Y))))) &
wenzelm@24127
  1119
  (~is_a_theorem(equivalent(equivalent(a::'a,b),equivalent(equivalent(c::'a,b),equivalent(a::'a,c))))) --> False"
wenzelm@24127
  1120
  by meson
wenzelm@24127
  1121
wenzelm@24127
  1122
(*2549 inferences so far.  Searching to depth 12.  1.4 secs*)
wenzelm@24127
  1123
lemma LCL077_2:
wenzelm@24128
  1124
 "(\<forall>X Y. is_a_theorem(implies(X,Y)) & is_a_theorem(X) --> is_a_theorem(Y)) &
wenzelm@24128
  1125
  (\<forall>Y X. is_a_theorem(implies(X,implies(Y,X)))) &
wenzelm@24128
  1126
  (\<forall>Y X Z. is_a_theorem(implies(implies(X,implies(Y,Z)),implies(implies(X,Y),implies(X,Z))))) &
wenzelm@24128
  1127
  (\<forall>Y X. is_a_theorem(implies(implies(not(X),not(Y)),implies(Y,X)))) &
wenzelm@24128
  1128
  (\<forall>X2 X1 X3. is_a_theorem(implies(X1,X2)) & is_a_theorem(implies(X2,X3)) --> is_a_theorem(implies(X1,X3))) &
wenzelm@24127
  1129
  (~is_a_theorem(implies(not(not(a)),a))) --> False"
wenzelm@24127
  1130
  by meson
wenzelm@24127
  1131
wenzelm@24127
  1132
(*2036 inferences so far.  Searching to depth 20.  1.5 secs*)
wenzelm@24127
  1133
lemma LCL082_1:
wenzelm@24128
  1134
 "(\<forall>X Y. is_a_theorem(implies(X::'a,Y)) & is_a_theorem(X) --> is_a_theorem(Y)) &
wenzelm@24128
  1135
  (\<forall>Y Z U X. is_a_theorem(implies(implies(implies(X::'a,Y),Z),implies(implies(Z::'a,X),implies(U::'a,X))))) &
wenzelm@24127
  1136
  (~is_a_theorem(implies(a::'a,implies(b::'a,a)))) --> False"
wenzelm@24127
  1137
  by meson
wenzelm@24127
  1138
wenzelm@24127
  1139
(*1100 inferences so far.  Searching to depth 13.  1.0 secs*)
wenzelm@24127
  1140
lemma LCL111_1:
wenzelm@24128
  1141
 "(\<forall>X Y. is_a_theorem(implies(X,Y)) & is_a_theorem(X) --> is_a_theorem(Y)) &
wenzelm@24128
  1142
  (\<forall>Y X. is_a_theorem(implies(X,implies(Y,X)))) &
wenzelm@24128
  1143
  (\<forall>Y X Z. is_a_theorem(implies(implies(X,Y),implies(implies(Y,Z),implies(X,Z))))) &
wenzelm@24128
  1144
  (\<forall>Y X. is_a_theorem(implies(implies(implies(X,Y),Y),implies(implies(Y,X),X)))) &
wenzelm@24128
  1145
  (\<forall>Y X. is_a_theorem(implies(implies(not(X),not(Y)),implies(Y,X)))) &
wenzelm@24127
  1146
  (~is_a_theorem(implies(implies(a,b),implies(implies(c,a),implies(c,b))))) --> False"
wenzelm@24127
  1147
  by meson
wenzelm@24127
  1148
wenzelm@24127
  1149
(*667 inferences so far.  Searching to depth 9.  1.4 secs*)
wenzelm@24127
  1150
lemma LCL143_1:
wenzelm@24128
  1151
 "(\<forall>X. equal(X,X)) &
wenzelm@24128
  1152
  (\<forall>Y X. equal(X,Y) --> equal(Y,X)) &
wenzelm@24128
  1153
  (\<forall>Y X Z. equal(X,Y) & equal(Y,Z) --> equal(X,Z)) &
wenzelm@24128
  1154
  (\<forall>X. equal(implies(true,X),X)) &
wenzelm@24128
  1155
  (\<forall>Y X Z. equal(implies(implies(X,Y),implies(implies(Y,Z),implies(X,Z))),true)) &
wenzelm@24128
  1156
  (\<forall>Y X. equal(implies(implies(X,Y),Y),implies(implies(Y,X),X))) &
wenzelm@24128
  1157
  (\<forall>Y X. equal(implies(implies(not(X),not(Y)),implies(Y,X)),true)) &
wenzelm@24128
  1158
  (\<forall>A B C. equal(A,B) --> equal(implies(A,C),implies(B,C))) &
wenzelm@24128
  1159
  (\<forall>D F' E. equal(D,E) --> equal(implies(F',D),implies(F',E))) &
wenzelm@24128
  1160
  (\<forall>G H. equal(G,H) --> equal(not(G),not(H))) &
wenzelm@24128
  1161
  (\<forall>X Y. equal(big_V(X,Y),implies(implies(X,Y),Y))) &
wenzelm@24128
  1162
  (\<forall>X Y. equal(big_hat(X,Y),not(big_V(not(X),not(Y))))) &
wenzelm@24128
  1163
  (\<forall>X Y. ordered(X,Y) --> equal(implies(X,Y),true)) &
wenzelm@24128
  1164
  (\<forall>X Y. equal(implies(X,Y),true) --> ordered(X,Y)) &
wenzelm@24128
  1165
  (\<forall>A B C. equal(A,B) --> equal(big_V(A,C),big_V(B,C))) &
wenzelm@24128
  1166
  (\<forall>D F' E. equal(D,E) --> equal(big_V(F',D),big_V(F',E))) &
wenzelm@24128
  1167
  (\<forall>G H I'. equal(G,H) --> equal(big_hat(G,I'),big_hat(H,I'))) &
wenzelm@24128
  1168
  (\<forall>J L K'. equal(J,K') --> equal(big_hat(L,J),big_hat(L,K'))) &
wenzelm@24128
  1169
  (\<forall>M N O'. equal(M,N) & ordered(M,O') --> ordered(N,O')) &
wenzelm@24128
  1170
  (\<forall>P R Q. equal(P,Q) & ordered(R,P) --> ordered(R,Q)) &
wenzelm@24128
  1171
  (ordered(x,y)) &
wenzelm@24127
  1172
  (~ordered(implies(z,x),implies(z,y))) --> False"
wenzelm@24127
  1173
  by meson
wenzelm@24127
  1174
wenzelm@24127
  1175
(*5245 inferences so far.  Searching to depth 12.  4.6 secs*)
wenzelm@24127
  1176
lemma LCL182_1:
wenzelm@24128
  1177
 "(\<forall>A. axiom(or(not(or(A,A)),A))) &
wenzelm@24128
  1178
  (\<forall>B A. axiom(or(not(A),or(B,A)))) &
wenzelm@24128
  1179
  (\<forall>B A. axiom(or(not(or(A,B)),or(B,A)))) &
wenzelm@24128
  1180
  (\<forall>B A C. axiom(or(not(or(A,or(B,C))),or(B,or(A,C))))) &
wenzelm@24128
  1181
  (\<forall>A C B. axiom(or(not(or(not(A),B)),or(not(or(C,A)),or(C,B))))) &
wenzelm@24128
  1182
  (\<forall>X. axiom(X) --> theorem(X)) &
wenzelm@24128
  1183
  (\<forall>X Y. axiom(or(not(Y),X)) & theorem(Y) --> theorem(X)) &
wenzelm@24128
  1184
  (\<forall>X Y Z. axiom(or(not(X),Y)) & theorem(or(not(Y),Z)) --> theorem(or(not(X),Z))) &
wenzelm@24127
  1185
  (~theorem(or(not(or(not(p),q)),or(not(not(q)),not(p))))) --> False"
wenzelm@24127
  1186
  by meson
wenzelm@24127
  1187
wenzelm@24127
  1188
(*410 inferences so far.  Searching to depth 10.  0.3 secs*)
wenzelm@24127
  1189
lemma LCL200_1:
wenzelm@24128
  1190
 "(\<forall>A. axiom(or(not(or(A,A)),A))) &
wenzelm@24128
  1191
  (\<forall>B A. axiom(or(not(A),or(B,A)))) &
wenzelm@24128
  1192
  (\<forall>B A. axiom(or(not(or(A,B)),or(B,A)))) &
wenzelm@24128
  1193
  (\<forall>B A C. axiom(or(not(or(A,or(B,C))),or(B,or(A,C))))) &
wenzelm@24128
  1194
  (\<forall>A C B. axiom(or(not(or(not(A),B)),or(not(or(C,A)),or(C,B))))) &
wenzelm@24128
  1195
  (\<forall>X. axiom(X) --> theorem(X)) &
wenzelm@24128
  1196
  (\<forall>X Y. axiom(or(not(Y),X)) & theorem(Y) --> theorem(X)) &
wenzelm@24128
  1197
  (\<forall>X Y Z. axiom(or(not(X),Y)) & theorem(or(not(Y),Z)) --> theorem(or(not(X),Z))) &
wenzelm@24127
  1198
  (~theorem(or(not(not(or(p,q))),not(q)))) --> False"
wenzelm@24127
  1199
  by meson
wenzelm@24127
  1200
wenzelm@24127
  1201
(*5849 inferences so far.  Searching to depth 12.  5.6 secs*)
wenzelm@24127
  1202
lemma LCL215_1:
wenzelm@24128
  1203
 "(\<forall>A. axiom(or(not(or(A,A)),A))) &
wenzelm@24128
  1204
  (\<forall>B A. axiom(or(not(A),or(B,A)))) &
wenzelm@24128
  1205
  (\<forall>B A. axiom(or(not(or(A,B)),or(B,A)))) &
wenzelm@24128
  1206
  (\<forall>B A C. axiom(or(not(or(A,or(B,C))),or(B,or(A,C))))) &
wenzelm@24128
  1207
  (\<forall>A C B. axiom(or(not(or(not(A),B)),or(not(or(C,A)),or(C,B))))) &
wenzelm@24128
  1208
  (\<forall>X. axiom(X) --> theorem(X)) &
wenzelm@24128
  1209
  (\<forall>X Y. axiom(or(not(Y),X)) & theorem(Y) --> theorem(X)) &
wenzelm@24128
  1210
  (\<forall>X Y Z. axiom(or(not(X),Y)) & theorem(or(not(Y),Z)) --> theorem(or(not(X),Z))) &
wenzelm@24127
  1211
  (~theorem(or(not(or(not(p),q)),or(not(or(p,q)),q)))) --> False"
wenzelm@24127
  1212
  by meson
wenzelm@24127
  1213
wenzelm@24127
  1214
(*0 secs.  Not sure that a search even starts!*)
wenzelm@24127
  1215
lemma LCL230_2:
wenzelm@24128
  1216
  "(q --> p | r) &
wenzelm@24128
  1217
  (~p) &
wenzelm@24128
  1218
  (q) &
wenzelm@24127
  1219
  (~r) --> False"
wenzelm@24127
  1220
  by meson
wenzelm@24127
  1221
wenzelm@24127
  1222
(*119585 inferences so far.  Searching to depth 14.  262.4 secs*)
wenzelm@24127
  1223
lemma LDA003_1:
wenzelm@24127
  1224
  "EQU001_0_ax equal &
wenzelm@24128
  1225
  (\<forall>Y X Z. equal(f(X::'a,f(Y::'a,Z)),f(f(X::'a,Y),f(X::'a,Z)))) &
wenzelm@24128
  1226
  (\<forall>X Y. left(X::'a,f(X::'a,Y))) &
wenzelm@24128
  1227
  (\<forall>Y X Z. left(X::'a,Y) & left(Y::'a,Z) --> left(X::'a,Z)) &
wenzelm@24128
  1228
  (equal(num2::'a,f(num1::'a,num1))) &
wenzelm@24128
  1229
  (equal(num3::'a,f(num2::'a,num1))) &
wenzelm@24128
  1230
  (equal(u::'a,f(num2::'a,num2))) &
wenzelm@24128
  1231
  (\<forall>A B C. equal(A::'a,B) --> equal(f(A::'a,C),f(B::'a,C))) &
wenzelm@24128
  1232
  (\<forall>D F' E. equal(D::'a,E) --> equal(f(F'::'a,D),f(F'::'a,E))) &
wenzelm@24128
  1233
  (\<forall>G H I'. equal(G::'a,H) & left(G::'a,I') --> left(H::'a,I')) &
wenzelm@24128
  1234
  (\<forall>J L K'. equal(J::'a,K') & left(L::'a,J) --> left(L::'a,K')) &
wenzelm@24127
  1235
  (~left(num3::'a,u)) --> False"
wenzelm@24127
  1236
  oops
wenzelm@24127
  1237
wenzelm@24127
  1238
wenzelm@24127
  1239
(*2392 inferences so far.  Searching to depth 12.  2.2 secs*)
wenzelm@24127
  1240
lemma MSC002_1:
wenzelm@24128
  1241
 "(at(something::'a,here,now)) &
wenzelm@24128
  1242
  (\<forall>Place Situation. hand_at(Place::'a,Situation) --> hand_at(Place::'a,let_go(Situation))) &
wenzelm@24128
  1243
  (\<forall>Place Another_place Situation. hand_at(Place::'a,Situation) --> hand_at(Another_place::'a,go(Another_place::'a,Situation))) &
wenzelm@24128
  1244
  (\<forall>Thing Situation. ~held(Thing::'a,let_go(Situation))) &
wenzelm@24128
  1245
  (\<forall>Situation Thing. at(Thing::'a,here,Situation) --> red(Thing)) &
wenzelm@24128
  1246
  (\<forall>Thing Place Situation. at(Thing::'a,Place,Situation) --> at(Thing::'a,Place,let_go(Situation))) &
wenzelm@24128
  1247
  (\<forall>Thing Place Situation. at(Thing::'a,Place,Situation) --> at(Thing::'a,Place,pick_up(Situation))) &
wenzelm@24128
  1248
  (\<forall>Thing Place Situation. at(Thing::'a,Place,Situation) --> grabbed(Thing::'a,pick_up(go(Place::'a,let_go(Situation))))) &
wenzelm@24128
  1249
  (\<forall>Thing Situation. red(Thing) & put(Thing::'a,there,Situation) --> answer(Situation)) &
wenzelm@24128
  1250
  (\<forall>Place Thing Another_place Situation. at(Thing::'a,Place,Situation) & grabbed(Thing::'a,Situation) --> put(Thing::'a,Another_place,go(Another_place::'a,Situation))) &
wenzelm@24128
  1251
  (\<forall>Thing Place Another_place Situation. at(Thing::'a,Place,Situation) --> held(Thing::'a,Situation) | at(Thing::'a,Place,go(Another_place::'a,Situation))) &
wenzelm@24128
  1252
  (\<forall>One_place Thing Place Situation. hand_at(One_place::'a,Situation) & held(Thing::'a,Situation) --> at(Thing::'a,Place,go(Place::'a,Situation))) &
wenzelm@24128
  1253
  (\<forall>Place Thing Situation. hand_at(Place::'a,Situation) & at(Thing::'a,Place,Situation) --> held(Thing::'a,pick_up(Situation))) &
wenzelm@24127
  1254
  (\<forall>Situation. ~answer(Situation)) --> False"
wenzelm@24127
  1255
  by meson
wenzelm@24127
  1256
wenzelm@24127
  1257
(*73 inferences so far.  Searching to depth 10.  0.2 secs*)
wenzelm@24127
  1258
lemma MSC003_1:
wenzelm@24128
  1259
  "(\<forall>Number_of_small_parts Small_part Big_part Number_of_mid_parts Mid_part. has_parts(Big_part::'a,Number_of_mid_parts,Mid_part) --> in'(object_in(Big_part::'a,Mid_part,Small_part,Number_of_mid_parts,Number_of_small_parts),Mid_part) | has_parts(Big_part::'a,mtimes(Number_of_mid_parts::'a,Number_of_small_parts),Small_part)) &
wenzelm@24128
  1260
  (\<forall>Big_part Mid_part Number_of_mid_parts Number_of_small_parts Small_part. has_parts(Big_part::'a,Number_of_mid_parts,Mid_part) & has_parts(object_in(Big_part::'a,Mid_part,Small_part,Number_of_mid_parts,Number_of_small_parts),Number_of_small_parts,Small_part) --> has_parts(Big_part::'a,mtimes(Number_of_mid_parts::'a,Number_of_small_parts),Small_part)) &
wenzelm@24128
  1261
  (in'(john::'a,boy)) &
wenzelm@24128
  1262
  (\<forall>X. in'(X::'a,boy) --> in'(X::'a,human)) &
wenzelm@24128
  1263
  (\<forall>X. in'(X::'a,hand) --> has_parts(X::'a,num5,fingers)) &
wenzelm@24128
  1264
  (\<forall>X. in'(X::'a,human) --> has_parts(X::'a,num2,arm)) &
wenzelm@24128
  1265
  (\<forall>X. in'(X::'a,arm) --> has_parts(X::'a,num1,hand)) &
wenzelm@24127
  1266
  (~has_parts(john::'a,mtimes(num2::'a,num1),hand)) --> False"
wenzelm@24127
  1267
  by meson
wenzelm@24127
  1268
wenzelm@24127
  1269
(*1486 inferences so far.  Searching to depth 20.  1.2 secs*)
wenzelm@24127
  1270
lemma MSC004_1:
wenzelm@24128
  1271
 "(\<forall>Number_of_small_parts Small_part Big_part Number_of_mid_parts Mid_part. has_parts(Big_part::'a,Number_of_mid_parts,Mid_part) --> in'(object_in(Big_part::'a,Mid_part,Small_part,Number_of_mid_parts,Number_of_small_parts),Mid_part) | has_parts(Big_part::'a,mtimes(Number_of_mid_parts::'a,Number_of_small_parts),Small_part)) &
wenzelm@24128
  1272
  (\<forall>Big_part Mid_part Number_of_mid_parts Number_of_small_parts Small_part. has_parts(Big_part::'a,Number_of_mid_parts,Mid_part) & has_parts(object_in(Big_part::'a,Mid_part,Small_part,Number_of_mid_parts,Number_of_small_parts),Number_of_small_parts,Small_part) --> has_parts(Big_part::'a,mtimes(Number_of_mid_parts::'a,Number_of_small_parts),Small_part)) &
wenzelm@24128
  1273
  (in'(john::'a,boy)) &
wenzelm@24128
  1274
  (\<forall>X. in'(X::'a,boy) --> in'(X::'a,human)) &
wenzelm@24128
  1275
  (\<forall>X. in'(X::'a,hand) --> has_parts(X::'a,num5,fingers)) &
wenzelm@24128
  1276
  (\<forall>X. in'(X::'a,human) --> has_parts(X::'a,num2,arm)) &
wenzelm@24128
  1277
  (\<forall>X. in'(X::'a,arm) --> has_parts(X::'a,num1,hand)) &
wenzelm@24127
  1278
  (~has_parts(john::'a,mtimes(mtimes(num2::'a,num1),num5),fingers)) --> False"
wenzelm@24127
  1279
  by meson
wenzelm@24127
  1280
wenzelm@24127
  1281
(*100 inferences so far.  Searching to depth 12.  0.1 secs*)
wenzelm@24127
  1282
lemma MSC005_1:
wenzelm@24128
  1283
  "(value(truth::'a,truth)) &
wenzelm@24128
  1284
  (value(falsity::'a,falsity)) &
wenzelm@24128
  1285
  (\<forall>X Y. value(X::'a,truth) & value(Y::'a,truth) --> value(xor(X::'a,Y),falsity)) &
wenzelm@24128
  1286
  (\<forall>X Y. value(X::'a,truth) & value(Y::'a,falsity) --> value(xor(X::'a,Y),truth)) &
wenzelm@24128
  1287
  (\<forall>X Y. value(X::'a,falsity) & value(Y::'a,truth) --> value(xor(X::'a,Y),truth)) &
wenzelm@24128
  1288
  (\<forall>X Y. value(X::'a,falsity) & value(Y::'a,falsity) --> value(xor(X::'a,Y),falsity)) &
wenzelm@24127
  1289
  (\<forall>Value. ~value(xor(xor(xor(xor(truth::'a,falsity),falsity),truth),falsity),Value)) --> False"
wenzelm@24127
  1290
  by meson
wenzelm@24127
  1291
wenzelm@24127
  1292
(*19116 inferences so far.  Searching to depth 16.  15.9 secs*)
wenzelm@24127
  1293
lemma MSC006_1:
wenzelm@24128
  1294
 "(\<forall>Y X Z. p(X::'a,Y) & p(Y::'a,Z) --> p(X::'a,Z)) &
wenzelm@24128
  1295
  (\<forall>Y X Z. q(X::'a,Y) & q(Y::'a,Z) --> q(X::'a,Z)) &
wenzelm@24128
  1296
  (\<forall>Y X. q(X::'a,Y) --> q(Y::'a,X)) &
wenzelm@24128
  1297
  (\<forall>X Y. p(X::'a,Y) | q(X::'a,Y)) &
wenzelm@24128
  1298
  (~p(a::'a,b)) &
wenzelm@24127
  1299
  (~q(c::'a,d)) --> False"
wenzelm@24127
  1300
   by meson
wenzelm@24127
  1301
wenzelm@24127
  1302
(*1713 inferences so far.  Searching to depth 10.  2.8 secs*)
wenzelm@24127
  1303
lemma NUM001_1:
wenzelm@24128
  1304
  "(\<forall>A. equal(A::'a,A)) &
wenzelm@24128
  1305
  (\<forall>B A C. equal(A::'a,B) & equal(B::'a,C) --> equal(A::'a,C)) &
wenzelm@24128
  1306
  (\<forall>B A. equal(add(A::'a,B),add(B::'a,A))) &
wenzelm@24128
  1307
  (\<forall>A B C. equal(add(A::'a,add(B::'a,C)),add(add(A::'a,B),C))) &
wenzelm@24128
  1308
  (\<forall>B A. equal(subtract(add(A::'a,B),B),A)) &
wenzelm@24128
  1309
  (\<forall>A B. equal(A::'a,subtract(add(A::'a,B),B))) &
wenzelm@24128
  1310
  (\<forall>A C B. equal(add(subtract(A::'a,B),C),subtract(add(A::'a,C),B))) &
wenzelm@24128
  1311
  (\<forall>A C B. equal(subtract(add(A::'a,B),C),add(subtract(A::'a,C),B))) &
wenzelm@24128
  1312
  (\<forall>A C B D. equal(A::'a,B) & equal(C::'a,add(A::'a,D)) --> equal(C::'a,add(B::'a,D))) &
wenzelm@24128
  1313
  (\<forall>A C D B. equal(A::'a,B) & equal(C::'a,add(D::'a,A)) --> equal(C::'a,add(D::'a,B))) &
wenzelm@24128
  1314
  (\<forall>A C B D. equal(A::'a,B) & equal(C::'a,subtract(A::'a,D)) --> equal(C::'a,subtract(B::'a,D))) &
wenzelm@24128
  1315
  (\<forall>A C D B. equal(A::'a,B) & equal(C::'a,subtract(D::'a,A)) --> equal(C::'a,subtract(D::'a,B))) &
wenzelm@24127
  1316
  (~equal(add(add(a::'a,b),c),add(a::'a,add(b::'a,c)))) --> False"
wenzelm@24127
  1317
  by meson
wenzelm@24127
  1318
wenzelm@24127
  1319
abbreviation "NUM001_0_ax multiply successor num0 add equal \<equiv>
wenzelm@24128
  1320
  (\<forall>A. equal(add(A::'a,num0),A)) &
wenzelm@24128
  1321
  (\<forall>A B. equal(add(A::'a,successor(B)),successor(add(A::'a,B)))) &
wenzelm@24128
  1322
  (\<forall>A. equal(multiply(A::'a,num0),num0)) &
wenzelm@24128
  1323
  (\<forall>B A. equal(multiply(A::'a,successor(B)),add(multiply(A::'a,B),A))) &
wenzelm@24128
  1324
  (\<forall>A B. equal(successor(A),successor(B)) --> equal(A::'a,B)) &
wenzelm@24127
  1325
  (\<forall>A B. equal(A::'a,B) --> equal(successor(A),successor(B)))"
wenzelm@24127
  1326
wenzelm@24127
  1327
abbreviation "NUM001_1_ax predecessor_of_1st_minus_2nd successor add equal mless \<equiv>
wenzelm@24128
  1328
  (\<forall>A C B. mless(A::'a,B) & mless(C::'a,A) --> mless(C::'a,B)) &
wenzelm@24128
  1329
  (\<forall>A B C. equal(add(successor(A),B),C) --> mless(B::'a,C)) &
wenzelm@24127
  1330
  (\<forall>A B. mless(A::'a,B) --> equal(add(successor(predecessor_of_1st_minus_2nd(B::'a,A)),A),B))"
wenzelm@24127
  1331
wenzelm@24127
  1332
abbreviation "NUM001_2_ax equal mless divides \<equiv>
wenzelm@24128
  1333
  (\<forall>A B. divides(A::'a,B) --> mless(A::'a,B) | equal(A::'a,B)) &
wenzelm@24128
  1334
  (\<forall>A B. mless(A::'a,B) --> divides(A::'a,B)) &
wenzelm@24127
  1335
  (\<forall>A B. equal(A::'a,B) --> divides(A::'a,B))"
wenzelm@24127
  1336
wenzelm@24127
  1337
(*20717 inferences so far.  Searching to depth 11.  13.7 secs*)
wenzelm@24127
  1338
lemma NUM021_1:
wenzelm@24127
  1339
  "EQU001_0_ax equal &
wenzelm@24127
  1340
  NUM001_0_ax multiply successor num0 add equal &
wenzelm@24127
  1341
  NUM001_1_ax predecessor_of_1st_minus_2nd successor add equal mless &
wenzelm@24127
  1342
  NUM001_2_ax equal mless divides &
wenzelm@24128
  1343
  (mless(b::'a,c)) &
wenzelm@24128
  1344
   (~mless(b::'a,a)) &
wenzelm@24128
  1345
   (divides(c::'a,a)) &
wenzelm@24127
  1346
   (\<forall>A. ~equal(successor(A),num0)) --> False"
wenzelm@24127
  1347
  by meson
wenzelm@24127
  1348
wenzelm@24127
  1349
(*26320 inferences so far.  Searching to depth 10.  26.4 secs*)
wenzelm@24127
  1350
lemma NUM024_1:
wenzelm@24127
  1351
  "EQU001_0_ax equal &
wenzelm@24127
  1352
  NUM001_0_ax multiply successor num0 add equal &
wenzelm@24128
  1353
  NUM001_1_ax predecessor_of_1st_minus_2nd successor add equal mless &
wenzelm@24128
  1354
  (\<forall>B A. equal(add(A::'a,B),add(B::'a,A))) &
wenzelm@24128
  1355
  (\<forall>B A C. equal(add(A::'a,B),add(C::'a,B)) --> equal(A::'a,C)) &
wenzelm@24128
  1356
  (mless(a::'a,a)) &
wenzelm@24127
  1357
  (\<forall>A. ~equal(successor(A),num0)) --> False"
wenzelm@24127
  1358
  oops
wenzelm@24127
  1359
wenzelm@24127
  1360
abbreviation "SET004_0_ax not_homomorphism2 not_homomorphism1
wenzelm@24127
  1361
    homomorphism compatible operation cantor diagonalise subset_relation
wenzelm@24127
  1362
    one_to_one choice apply regular function identity_relation
wenzelm@24127
  1363
    single_valued_class compos powerClass sum_class omega inductive
wenzelm@24127
  1364
    successor_relation successor image' rng domain range_of INVERSE flip
wenzelm@24127
  1365
    rot domain_of null_class restrct difference union complement
wenzelm@24127
  1366
    intersection element_relation second first cross_product ordered_pair
wenzelm@24127
  1367
    singleton unordered_pair equal universal_class not_subclass_element
wenzelm@24127
  1368
    member subclass \<equiv>
wenzelm@24128
  1369
  (\<forall>X U Y. subclass(X::'a,Y) & member(U::'a,X) --> member(U::'a,Y)) &
wenzelm@24128
  1370
  (\<forall>X Y. member(not_subclass_element(X::'a,Y),X) | subclass(X::'a,Y)) &
wenzelm@24128
  1371
  (\<forall>X Y. member(not_subclass_element(X::'a,Y),Y) --> subclass(X::'a,Y)) &
wenzelm@24128
  1372
  (\<forall>X. subclass(X::'a,universal_class)) &
wenzelm@24128
  1373
  (\<forall>X Y. equal(X::'a,Y) --> subclass(X::'a,Y)) &
wenzelm@24128
  1374
  (\<forall>Y X. equal(X::'a,Y) --> subclass(Y::'a,X)) &
wenzelm@24128
  1375
  (\<forall>X Y. subclass(X::'a,Y) & subclass(Y::'a,X) --> equal(X::'a,Y)) &
wenzelm@24128
  1376
  (\<forall>X U Y. member(U::'a,unordered_pair(X::'a,Y)) --> equal(U::'a,X) | equal(U::'a,Y)) &
wenzelm@24128
  1377
  (\<forall>X Y. member(X::'a,universal_class) --> member(X::'a,unordered_pair(X::'a,Y))) &
wenzelm@24128
  1378
  (\<forall>X Y. member(Y::'a,universal_class) --> member(Y::'a,unordered_pair(X::'a,Y))) &
wenzelm@24128
  1379
  (\<forall>X Y. member(unordered_pair(X::'a,Y),universal_class)) &
wenzelm@24128
  1380
  (\<forall>X. equal(unordered_pair(X::'a,X),singleton(X))) &
wenzelm@24128
  1381
  (\<forall>X Y. equal(unordered_pair(singleton(X),unordered_pair(X::'a,singleton(Y))),ordered_pair(X::'a,Y))) &
wenzelm@24128
  1382
  (\<forall>V Y U X. member(ordered_pair(U::'a,V),cross_product(X::'a,Y)) --> member(U::'a,X)) &
wenzelm@24128
  1383
  (\<forall>U X V Y. member(ordered_pair(U::'a,V),cross_product(X::'a,Y)) --> member(V::'a,Y)) &
wenzelm@24128
  1384
  (\<forall>U V X Y. member(U::'a,X) & member(V::'a,Y) --> member(ordered_pair(U::'a,V),cross_product(X::'a,Y))) &
wenzelm@24128
  1385
  (\<forall>X Y Z. member(Z::'a,cross_product(X::'a,Y)) --> equal(ordered_pair(first(Z),second(Z)),Z)) &
wenzelm@24128
  1386
  (subclass(element_relation::'a,cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1387
  (\<forall>X Y. member(ordered_pair(X::'a,Y),element_relation) --> member(X::'a,Y)) &
wenzelm@24128
  1388
  (\<forall>X Y. member(ordered_pair(X::'a,Y),cross_product(universal_class::'a,universal_class)) & member(X::'a,Y) --> member(ordered_pair(X::'a,Y),element_relation)) &
wenzelm@24128
  1389
  (\<forall>Y Z X. member(Z::'a,intersection(X::'a,Y)) --> member(Z::'a,X)) &
wenzelm@24128
  1390
  (\<forall>X Z Y. member(Z::'a,intersection(X::'a,Y)) --> member(Z::'a,Y)) &
wenzelm@24128
  1391
  (\<forall>Z X Y. member(Z::'a,X) & member(Z::'a,Y) --> member(Z::'a,intersection(X::'a,Y))) &
wenzelm@24128
  1392
  (\<forall>Z X. ~(member(Z::'a,complement(X)) & member(Z::'a,X))) &
wenzelm@24128
  1393
  (\<forall>Z X. member(Z::'a,universal_class) --> member(Z::'a,complement(X)) | member(Z::'a,X)) &
wenzelm@24128
  1394
  (\<forall>X Y. equal(complement(intersection(complement(X),complement(Y))),union(X::'a,Y))) &
wenzelm@24128
  1395
  (\<forall>X Y. equal(intersection(complement(intersection(X::'a,Y)),complement(intersection(complement(X),complement(Y)))),difference(X::'a,Y))) &
wenzelm@24128
  1396
  (\<forall>Xr X Y. equal(intersection(Xr::'a,cross_product(X::'a,Y)),restrct(Xr::'a,X,Y))) &
wenzelm@24128
  1397
  (\<forall>Xr X Y. equal(intersection(cross_product(X::'a,Y),Xr),restrct(Xr::'a,X,Y))) &
wenzelm@24128
  1398
  (\<forall>Z X. ~(equal(restrct(X::'a,singleton(Z),universal_class),null_class) & member(Z::'a,domain_of(X)))) &
wenzelm@24128
  1399
  (\<forall>Z X. member(Z::'a,universal_class) --> equal(restrct(X::'a,singleton(Z),universal_class),null_class) | member(Z::'a,domain_of(X))) &
wenzelm@24128
  1400
  (\<forall>X. subclass(rot(X),cross_product(cross_product(universal_class::'a,universal_class),universal_class))) &
wenzelm@24128
  1401
  (\<forall>V W U X. member(ordered_pair(ordered_pair(U::'a,V),W),rot(X)) --> member(ordered_pair(ordered_pair(V::'a,W),U),X)) &
wenzelm@24128
  1402
  (\<forall>U V W X. member(ordered_pair(ordered_pair(V::'a,W),U),X) & member(ordered_pair(ordered_pair(U::'a,V),W),cross_product(cross_product(universal_class::'a,universal_class),universal_class)) --> member(ordered_pair(ordered_pair(U::'a,V),W),rot(X))) &
wenzelm@24128
  1403
  (\<forall>X. subclass(flip(X),cross_product(cross_product(universal_class::'a,universal_class),universal_class))) &
wenzelm@24128
  1404
  (\<forall>V U W X. member(ordered_pair(ordered_pair(U::'a,V),W),flip(X)) --> member(ordered_pair(ordered_pair(V::'a,U),W),X)) &
wenzelm@24128
  1405
  (\<forall>U V W X. member(ordered_pair(ordered_pair(V::'a,U),W),X) & member(ordered_pair(ordered_pair(U::'a,V),W),cross_product(cross_product(universal_class::'a,universal_class),universal_class)) --> member(ordered_pair(ordered_pair(U::'a,V),W),flip(X))) &
wenzelm@24128
  1406
  (\<forall>Y. equal(domain_of(flip(cross_product(Y::'a,universal_class))),INVERSE(Y))) &
wenzelm@24128
  1407
  (\<forall>Z. equal(domain_of(INVERSE(Z)),range_of(Z))) &
wenzelm@24128
  1408
  (\<forall>Z X Y. equal(first(not_subclass_element(restrct(Z::'a,X,singleton(Y)),null_class)),domain(Z::'a,X,Y))) &
wenzelm@24128
  1409
  (\<forall>Z X Y. equal(second(not_subclass_element(restrct(Z::'a,singleton(X),Y),null_class)),rng(Z::'a,X,Y))) &
wenzelm@24128
  1410
  (\<forall>Xr X. equal(range_of(restrct(Xr::'a,X,universal_class)),image'(Xr::'a,X))) &
wenzelm@24128
  1411
  (\<forall>X. equal(union(X::'a,singleton(X)),successor(X))) &
wenzelm@24128
  1412
  (subclass(successor_relation::'a,cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1413
  (\<forall>X Y. member(ordered_pair(X::'a,Y),successor_relation) --> equal(successor(X),Y)) &
wenzelm@24128
  1414
  (\<forall>X Y. equal(successor(X),Y) & member(ordered_pair(X::'a,Y),cross_product(universal_class::'a,universal_class)) --> member(ordered_pair(X::'a,Y),successor_relation)) &
wenzelm@24128
  1415
  (\<forall>X. inductive(X) --> member(null_class::'a,X)) &
wenzelm@24128
  1416
  (\<forall>X. inductive(X) --> subclass(image'(successor_relation::'a,X),X)) &
wenzelm@24128
  1417
  (\<forall>X. member(null_class::'a,X) & subclass(image'(successor_relation::'a,X),X) --> inductive(X)) &
wenzelm@24128
  1418
  (inductive(omega)) &
wenzelm@24128
  1419
  (\<forall>Y. inductive(Y) --> subclass(omega::'a,Y)) &
wenzelm@24128
  1420
  (member(omega::'a,universal_class)) &
wenzelm@24128
  1421
  (\<forall>X. equal(domain_of(restrct(element_relation::'a,universal_class,X)),sum_class(X))) &
wenzelm@24128
  1422
  (\<forall>X. member(X::'a,universal_class) --> member(sum_class(X),universal_class)) &
wenzelm@24128
  1423
  (\<forall>X. equal(complement(image'(element_relation::'a,complement(X))),powerClass(X))) &
wenzelm@24128
  1424
  (\<forall>U. member(U::'a,universal_class) --> member(powerClass(U),universal_class)) &
wenzelm@24128
  1425
  (\<forall>Yr Xr. subclass(compos(Yr::'a,Xr),cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1426
  (\<forall>Z Yr Xr Y. member(ordered_pair(Y::'a,Z),compos(Yr::'a,Xr)) --> member(Z::'a,image'(Yr::'a,image'(Xr::'a,singleton(Y))))) &
wenzelm@24128
  1427
  (\<forall>Y Z Yr Xr. member(Z::'a,image'(Yr::'a,image'(Xr::'a,singleton(Y)))) & member(ordered_pair(Y::'a,Z),cross_product(universal_class::'a,universal_class)) --> member(ordered_pair(Y::'a,Z),compos(Yr::'a,Xr))) &
wenzelm@24128
  1428
  (\<forall>X. single_valued_class(X) --> subclass(compos(X::'a,INVERSE(X)),identity_relation)) &
wenzelm@24128
  1429
  (\<forall>X. subclass(compos(X::'a,INVERSE(X)),identity_relation) --> single_valued_class(X)) &
wenzelm@24128
  1430
  (\<forall>Xf. function(Xf) --> subclass(Xf::'a,cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1431
  (\<forall>Xf. function(Xf) --> subclass(compos(Xf::'a,INVERSE(Xf)),identity_relation)) &
wenzelm@24128
  1432
  (\<forall>Xf. subclass(Xf::'a,cross_product(universal_class::'a,universal_class)) & subclass(compos(Xf::'a,INVERSE(Xf)),identity_relation) --> function(Xf)) &
wenzelm@24128
  1433
  (\<forall>Xf X. function(Xf) & member(X::'a,universal_class) --> member(image'(Xf::'a,X),universal_class)) &
wenzelm@24128
  1434
  (\<forall>X. equal(X::'a,null_class) | member(regular(X),X)) &
wenzelm@24128
  1435
  (\<forall>X. equal(X::'a,null_class) | equal(intersection(X::'a,regular(X)),null_class)) &
wenzelm@24128
  1436
  (\<forall>Xf Y. equal(sum_class(image'(Xf::'a,singleton(Y))),apply(Xf::'a,Y))) &
wenzelm@24128
  1437
  (function(choice)) &
wenzelm@24128
  1438
  (\<forall>Y. member(Y::'a,universal_class) --> equal(Y::'a,null_class) | member(apply(choice::'a,Y),Y)) &
wenzelm@24128
  1439
  (\<forall>Xf. one_to_one(Xf) --> function(Xf)) &
wenzelm@24128
  1440
  (\<forall>Xf. one_to_one(Xf) --> function(INVERSE(Xf))) &
wenzelm@24128
  1441
  (\<forall>Xf. function(INVERSE(Xf)) & function(Xf) --> one_to_one(Xf)) &
wenzelm@24128
  1442
  (equal(intersection(cross_product(universal_class::'a,universal_class),intersection(cross_product(universal_class::'a,universal_class),complement(compos(complement(element_relation),INVERSE(element_relation))))),subset_relation)) &
wenzelm@24128
  1443
  (equal(intersection(INVERSE(subset_relation),subset_relation),identity_relation)) &
wenzelm@24128
  1444
  (\<forall>Xr. equal(complement(domain_of(intersection(Xr::'a,identity_relation))),diagonalise(Xr))) &
wenzelm@24128
  1445
  (\<forall>X. equal(intersection(domain_of(X),diagonalise(compos(INVERSE(element_relation),X))),cantor(X))) &
wenzelm@24128
  1446
  (\<forall>Xf. operation(Xf) --> function(Xf)) &
wenzelm@24128
  1447
  (\<forall>Xf. operation(Xf) --> equal(cross_product(domain_of(domain_of(Xf)),domain_of(domain_of(Xf))),domain_of(Xf))) &
wenzelm@24128
  1448
  (\<forall>Xf. operation(Xf) --> subclass(range_of(Xf),domain_of(domain_of(Xf)))) &
wenzelm@24128
  1449
  (\<forall>Xf. function(Xf) & equal(cross_product(domain_of(domain_of(Xf)),domain_of(domain_of(Xf))),domain_of(Xf)) & subclass(range_of(Xf),domain_of(domain_of(Xf))) --> operation(Xf)) &
wenzelm@24128
  1450
  (\<forall>Xf1 Xf2 Xh. compatible(Xh::'a,Xf1,Xf2) --> function(Xh)) &
wenzelm@24128
  1451
  (\<forall>Xf2 Xf1 Xh. compatible(Xh::'a,Xf1,Xf2) --> equal(domain_of(domain_of(Xf1)),domain_of(Xh))) &
wenzelm@24128
  1452
  (\<forall>Xf1 Xh Xf2. compatible(Xh::'a,Xf1,Xf2) --> subclass(range_of(Xh),domain_of(domain_of(Xf2)))) &
wenzelm@24128
  1453
  (\<forall>Xh Xh1 Xf1 Xf2. function(Xh) & equal(domain_of(domain_of(Xf1)),domain_of(Xh)) & subclass(range_of(Xh),domain_of(domain_of(Xf2))) --> compatible(Xh1::'a,Xf1,Xf2)) &
wenzelm@24128
  1454
  (\<forall>Xh Xf2 Xf1. homomorphism(Xh::'a,Xf1,Xf2) --> operation(Xf1)) &
wenzelm@24128
  1455
  (\<forall>Xh Xf1 Xf2. homomorphism(Xh::'a,Xf1,Xf2) --> operation(Xf2)) &
wenzelm@24128
  1456
  (\<forall>Xh Xf1 Xf2. homomorphism(Xh::'a,Xf1,Xf2) --> compatible(Xh::'a,Xf1,Xf2)) &
wenzelm@24128
  1457
  (\<forall>Xf2 Xh Xf1 X Y. homomorphism(Xh::'a,Xf1,Xf2) & member(ordered_pair(X::'a,Y),domain_of(Xf1)) --> equal(apply(Xf2::'a,ordered_pair(apply(Xh::'a,X),apply(Xh::'a,Y))),apply(Xh::'a,apply(Xf1::'a,ordered_pair(X::'a,Y))))) &
wenzelm@24128
  1458
  (\<forall>Xh Xf1 Xf2. operation(Xf1) & operation(Xf2) & compatible(Xh::'a,Xf1,Xf2) --> member(ordered_pair(not_homomorphism1(Xh::'a,Xf1,Xf2),not_homomorphism2(Xh::'a,Xf1,Xf2)),domain_of(Xf1)) | homomorphism(Xh::'a,Xf1,Xf2)) &
wenzelm@24127
  1459
  (\<forall>Xh Xf1 Xf2. operation(Xf1) & operation(Xf2) & compatible(Xh::'a,Xf1,Xf2) & equal(apply(Xf2::'a,ordered_pair(apply(Xh::'a,not_homomorphism1(Xh::'a,Xf1,Xf2)),apply(Xh::'a,not_homomorphism2(Xh::'a,Xf1,Xf2)))),apply(Xh::'a,apply(Xf1::'a,ordered_pair(not_homomorphism1(Xh::'a,Xf1,Xf2),not_homomorphism2(Xh::'a,Xf1,Xf2))))) --> homomorphism(Xh::'a,Xf1,Xf2))"
wenzelm@24127
  1460
wenzelm@24127
  1461
abbreviation "SET004_0_eq subclass single_valued_class operation
wenzelm@24127
  1462
    one_to_one member inductive homomorphism function compatible
wenzelm@24127
  1463
    unordered_pair union sum_class successor singleton second rot restrct
wenzelm@24127
  1464
    regular range_of rng powerClass ordered_pair not_subclass_element
wenzelm@24127
  1465
    not_homomorphism2 not_homomorphism1 INVERSE intersection image' flip
wenzelm@24127
  1466
    first domain_of domain difference diagonalise cross_product compos
wenzelm@24127
  1467
    complement cantor apply equal \<equiv>
wenzelm@24128
  1468
  (\<forall>D E F'. equal(D::'a,E) --> equal(apply(D::'a,F'),apply(E::'a,F'))) &
wenzelm@24128
  1469
  (\<forall>G I' H. equal(G::'a,H) --> equal(apply(I'::'a,G),apply(I'::'a,H))) &
wenzelm@24128
  1470
  (\<forall>J K'. equal(J::'a,K') --> equal(cantor(J),cantor(K'))) &
wenzelm@24128
  1471
  (\<forall>L M. equal(L::'a,M) --> equal(complement(L),complement(M))) &
wenzelm@24128
  1472
  (\<forall>N O' P. equal(N::'a,O') --> equal(compos(N::'a,P),compos(O'::'a,P))) &
wenzelm@24128
  1473
  (\<forall>Q S' R. equal(Q::'a,R) --> equal(compos(S'::'a,Q),compos(S'::'a,R))) &
wenzelm@24128
  1474
  (\<forall>T' U V. equal(T'::'a,U) --> equal(cross_product(T'::'a,V),cross_product(U::'a,V))) &
wenzelm@24128
  1475
  (\<forall>W Y X. equal(W::'a,X) --> equal(cross_product(Y::'a,W),cross_product(Y::'a,X))) &
wenzelm@24128
  1476
  (\<forall>Z A1. equal(Z::'a,A1) --> equal(diagonalise(Z),diagonalise(A1))) &
wenzelm@24128
  1477
  (\<forall>B1 C1 D1. equal(B1::'a,C1) --> equal(difference(B1::'a,D1),difference(C1::'a,D1))) &
wenzelm@24128
  1478
  (\<forall>E1 G1 F1. equal(E1::'a,F1) --> equal(difference(G1::'a,E1),difference(G1::'a,F1))) &
wenzelm@24128
  1479
  (\<forall>H1 I1 J1 K1. equal(H1::'a,I1) --> equal(domain(H1::'a,J1,K1),domain(I1::'a,J1,K1))) &
wenzelm@24128
  1480
  (\<forall>L1 N1 M1 O1. equal(L1::'a,M1) --> equal(domain(N1::'a,L1,O1),domain(N1::'a,M1,O1))) &
wenzelm@24128
  1481
  (\<forall>P1 R1 S1 Q1. equal(P1::'a,Q1) --> equal(domain(R1::'a,S1,P1),domain(R1::'a,S1,Q1))) &
wenzelm@24128
  1482
  (\<forall>T1 U1. equal(T1::'a,U1) --> equal(domain_of(T1),domain_of(U1))) &
wenzelm@24128
  1483
  (\<forall>V1 W1. equal(V1::'a,W1) --> equal(first(V1),first(W1))) &
wenzelm@24128
  1484
  (\<forall>X1 Y1. equal(X1::'a,Y1) --> equal(flip(X1),flip(Y1))) &
wenzelm@24128
  1485
  (\<forall>Z1 A2 B2. equal(Z1::'a,A2) --> equal(image'(Z1::'a,B2),image'(A2::'a,B2))) &
wenzelm@24128
  1486
  (\<forall>C2 E2 D2. equal(C2::'a,D2) --> equal(image'(E2::'a,C2),image'(E2::'a,D2))) &
wenzelm@24128
  1487
  (\<forall>F2 G2 H2. equal(F2::'a,G2) --> equal(intersection(F2::'a,H2),intersection(G2::'a,H2))) &
wenzelm@24128
  1488
  (\<forall>I2 K2 J2. equal(I2::'a,J2) --> equal(intersection(K2::'a,I2),intersection(K2::'a,J2))) &
wenzelm@24128
  1489
  (\<forall>L2 M2. equal(L2::'a,M2) --> equal(INVERSE(L2),INVERSE(M2))) &
wenzelm@24128
  1490
  (\<forall>N2 O2 P2 Q2. equal(N2::'a,O2) --> equal(not_homomorphism1(N2::'a,P2,Q2),not_homomorphism1(O2::'a,P2,Q2))) &
wenzelm@24128
  1491
  (\<forall>R2 T2 S2 U2. equal(R2::'a,S2) --> equal(not_homomorphism1(T2::'a,R2,U2),not_homomorphism1(T2::'a,S2,U2))) &
wenzelm@24128
  1492
  (\<forall>V2 X2 Y2 W2. equal(V2::'a,W2) --> equal(not_homomorphism1(X2::'a,Y2,V2),not_homomorphism1(X2::'a,Y2,W2))) &
wenzelm@24128
  1493
  (\<forall>Z2 A3 B3 C3. equal(Z2::'a,A3) --> equal(not_homomorphism2(Z2::'a,B3,C3),not_homomorphism2(A3::'a,B3,C3))) &
wenzelm@24128
  1494
  (\<forall>D3 F3 E3 G3. equal(D3::'a,E3) --> equal(not_homomorphism2(F3::'a,D3,G3),not_homomorphism2(F3::'a,E3,G3))) &
wenzelm@24128
  1495
  (\<forall>H3 J3 K3 I3. equal(H3::'a,I3) --> equal(not_homomorphism2(J3::'a,K3,H3),not_homomorphism2(J3::'a,K3,I3))) &
wenzelm@24128
  1496
  (\<forall>L3 M3 N3. equal(L3::'a,M3) --> equal(not_subclass_element(L3::'a,N3),not_subclass_element(M3::'a,N3))) &
wenzelm@24128
  1497
  (\<forall>O3 Q3 P3. equal(O3::'a,P3) --> equal(not_subclass_element(Q3::'a,O3),not_subclass_element(Q3::'a,P3))) &
wenzelm@24128
  1498
  (\<forall>R3 S3 T3. equal(R3::'a,S3) --> equal(ordered_pair(R3::'a,T3),ordered_pair(S3::'a,T3))) &
wenzelm@24128
  1499
  (\<forall>U3 W3 V3. equal(U3::'a,V3) --> equal(ordered_pair(W3::'a,U3),ordered_pair(W3::'a,V3))) &
wenzelm@24128
  1500
  (\<forall>X3 Y3. equal(X3::'a,Y3) --> equal(powerClass(X3),powerClass(Y3))) &
wenzelm@24128
  1501
  (\<forall>Z3 A4 B4 C4. equal(Z3::'a,A4) --> equal(rng(Z3::'a,B4,C4),rng(A4::'a,B4,C4))) &
wenzelm@24128
  1502
  (\<forall>D4 F4 E4 G4. equal(D4::'a,E4) --> equal(rng(F4::'a,D4,G4),rng(F4::'a,E4,G4))) &
wenzelm@24128
  1503
  (\<forall>H4 J4 K4 I4. equal(H4::'a,I4) --> equal(rng(J4::'a,K4,H4),rng(J4::'a,K4,I4))) &
wenzelm@24128
  1504
  (\<forall>L4 M4. equal(L4::'a,M4) --> equal(range_of(L4),range_of(M4))) &
wenzelm@24128
  1505
  (\<forall>N4 O4. equal(N4::'a,O4) --> equal(regular(N4),regular(O4))) &
wenzelm@24128
  1506
  (\<forall>P4 Q4 R4 S4. equal(P4::'a,Q4) --> equal(restrct(P4::'a,R4,S4),restrct(Q4::'a,R4,S4))) &
wenzelm@24128
  1507
  (\<forall>T4 V4 U4 W4. equal(T4::'a,U4) --> equal(restrct(V4::'a,T4,W4),restrct(V4::'a,U4,W4))) &
wenzelm@24128
  1508
  (\<forall>X4 Z4 A5 Y4. equal(X4::'a,Y4) --> equal(restrct(Z4::'a,A5,X4),restrct(Z4::'a,A5,Y4))) &
wenzelm@24128
  1509
  (\<forall>B5 C5. equal(B5::'a,C5) --> equal(rot(B5),rot(C5))) &
wenzelm@24128
  1510
  (\<forall>D5 E5. equal(D5::'a,E5) --> equal(second(D5),second(E5))) &
wenzelm@24128
  1511
  (\<forall>F5 G5. equal(F5::'a,G5) --> equal(singleton(F5),singleton(G5))) &
wenzelm@24128
  1512
  (\<forall>H5 I5. equal(H5::'a,I5) --> equal(successor(H5),successor(I5))) &
wenzelm@24128
  1513
  (\<forall>J5 K5. equal(J5::'a,K5) --> equal(sum_class(J5),sum_class(K5))) &
wenzelm@24128
  1514
  (\<forall>L5 M5 N5. equal(L5::'a,M5) --> equal(union(L5::'a,N5),union(M5::'a,N5))) &
wenzelm@24128
  1515
  (\<forall>O5 Q5 P5. equal(O5::'a,P5) --> equal(union(Q5::'a,O5),union(Q5::'a,P5))) &
wenzelm@24128
  1516
  (\<forall>R5 S5 T5. equal(R5::'a,S5) --> equal(unordered_pair(R5::'a,T5),unordered_pair(S5::'a,T5))) &
wenzelm@24128
  1517
  (\<forall>U5 W5 V5. equal(U5::'a,V5) --> equal(unordered_pair(W5::'a,U5),unordered_pair(W5::'a,V5))) &
wenzelm@24128
  1518
  (\<forall>X5 Y5 Z5 A6. equal(X5::'a,Y5) & compatible(X5::'a,Z5,A6) --> compatible(Y5::'a,Z5,A6)) &
wenzelm@24128
  1519
  (\<forall>B6 D6 C6 E6. equal(B6::'a,C6) & compatible(D6::'a,B6,E6) --> compatible(D6::'a,C6,E6)) &
wenzelm@24128
  1520
  (\<forall>F6 H6 I6 G6. equal(F6::'a,G6) & compatible(H6::'a,I6,F6) --> compatible(H6::'a,I6,G6)) &
wenzelm@24128
  1521
  (\<forall>J6 K6. equal(J6::'a,K6) & function(J6) --> function(K6)) &
wenzelm@24128
  1522
  (\<forall>L6 M6 N6 O6. equal(L6::'a,M6) & homomorphism(L6::'a,N6,O6) --> homomorphism(M6::'a,N6,O6)) &
wenzelm@24128
  1523
  (\<forall>P6 R6 Q6 S6. equal(P6::'a,Q6) & homomorphism(R6::'a,P6,S6) --> homomorphism(R6::'a,Q6,S6)) &
wenzelm@24128
  1524
  (\<forall>T6 V6 W6 U6. equal(T6::'a,U6) & homomorphism(V6::'a,W6,T6) --> homomorphism(V6::'a,W6,U6)) &
wenzelm@24128
  1525
  (\<forall>X6 Y6. equal(X6::'a,Y6) & inductive(X6) --> inductive(Y6)) &
wenzelm@24128
  1526
  (\<forall>Z6 A7 B7. equal(Z6::'a,A7) & member(Z6::'a,B7) --> member(A7::'a,B7)) &
wenzelm@24128
  1527
  (\<forall>C7 E7 D7. equal(C7::'a,D7) & member(E7::'a,C7) --> member(E7::'a,D7)) &
wenzelm@24128
  1528
  (\<forall>F7 G7. equal(F7::'a,G7) & one_to_one(F7) --> one_to_one(G7)) &
wenzelm@24128
  1529
  (\<forall>H7 I7. equal(H7::'a,I7) & operation(H7) --> operation(I7)) &
wenzelm@24128
  1530
  (\<forall>J7 K7. equal(J7::'a,K7) & single_valued_class(J7) --> single_valued_class(K7)) &
wenzelm@24128
  1531
  (\<forall>L7 M7 N7. equal(L7::'a,M7) & subclass(L7::'a,N7) --> subclass(M7::'a,N7)) &
wenzelm@24128
  1532
  (\<forall>O7 Q7 P7. equal(O7::'a,P7) & subclass(Q7::'a,O7) --> subclass(Q7::'a,P7))"
wenzelm@24127
  1533
wenzelm@24127
  1534
abbreviation "SET004_1_ax range_of function maps apply
wenzelm@24127
  1535
    application_function singleton_relation element_relation complement
wenzelm@24127
  1536
    intersection single_valued3 singleton image' domain single_valued2
wenzelm@24127
  1537
    second single_valued1 identity_relation INVERSE not_subclass_element
wenzelm@24127
  1538
    first domain_of domain_relation composition_function compos equal
wenzelm@24127
  1539
    ordered_pair member universal_class cross_product compose_class
wenzelm@24127
  1540
    subclass \<equiv>
wenzelm@24128
  1541
  (\<forall>X. subclass(compose_class(X),cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1542
  (\<forall>X Y Z. member(ordered_pair(Y::'a,Z),compose_class(X)) --> equal(compos(X::'a,Y),Z)) &
wenzelm@24128
  1543
  (\<forall>Y Z X. member(ordered_pair(Y::'a,Z),cross_product(universal_class::'a,universal_class)) & equal(compos(X::'a,Y),Z) --> member(ordered_pair(Y::'a,Z),compose_class(X))) &
wenzelm@24128
  1544
  (subclass(composition_function::'a,cross_product(universal_class::'a,cross_product(universal_class::'a,universal_class)))) &
wenzelm@24128
  1545
  (\<forall>X Y Z. member(ordered_pair(X::'a,ordered_pair(Y::'a,Z)),composition_function) --> equal(compos(X::'a,Y),Z)) &
wenzelm@24128
  1546
  (\<forall>X Y. member(ordered_pair(X::'a,Y),cross_product(universal_class::'a,universal_class)) --> member(ordered_pair(X::'a,ordered_pair(Y::'a,compos(X::'a,Y))),composition_function)) &
wenzelm@24128
  1547
  (subclass(domain_relation::'a,cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1548
  (\<forall>X Y. member(ordered_pair(X::'a,Y),domain_relation) --> equal(domain_of(X),Y)) &
wenzelm@24128
  1549
  (\<forall>X. member(X::'a,universal_class) --> member(ordered_pair(X::'a,domain_of(X)),domain_relation)) &
wenzelm@24128
  1550
  (\<forall>X. equal(first(not_subclass_element(compos(X::'a,INVERSE(X)),identity_relation)),single_valued1(X))) &
wenzelm@24128
  1551
  (\<forall>X. equal(second(not_subclass_element(compos(X::'a,INVERSE(X)),identity_relation)),single_valued2(X))) &
wenzelm@24128
  1552
  (\<forall>X. equal(domain(X::'a,image'(INVERSE(X),singleton(single_valued1(X))),single_valued2(X)),single_valued3(X))) &
wenzelm@24128
  1553
  (equal(intersection(complement(compos(element_relation::'a,complement(identity_relation))),element_relation),singleton_relation)) &
wenzelm@24128
  1554
  (subclass(application_function::'a,cross_product(universal_class::'a,cross_product(universal_class::'a,universal_class)))) &
wenzelm@24128
  1555
  (\<forall>Z Y X. member(ordered_pair(X::'a,ordered_pair(Y::'a,Z)),application_function) --> member(Y::'a,domain_of(X))) &
wenzelm@24128
  1556
  (\<forall>X Y Z. member(ordered_pair(X::'a,ordered_pair(Y::'a,Z)),application_function) --> equal(apply(X::'a,Y),Z)) &
wenzelm@24128
  1557
  (\<forall>Z X Y. member(ordered_pair(X::'a,ordered_pair(Y::'a,Z)),cross_product(universal_class::'a,cross_product(universal_class::'a,universal_class))) & member(Y::'a,domain_of(X)) --> member(ordered_pair(X::'a,ordered_pair(Y::'a,apply(X::'a,Y))),application_function)) &
wenzelm@24128
  1558
  (\<forall>X Y Xf. maps(Xf::'a,X,Y) --> function(Xf)) &
wenzelm@24128
  1559
  (\<forall>Y Xf X. maps(Xf::'a,X,Y) --> equal(domain_of(Xf),X)) &
wenzelm@24128
  1560
  (\<forall>X Xf Y. maps(Xf::'a,X,Y) --> subclass(range_of(Xf),Y)) &
wenzelm@24127
  1561
  (\<forall>Xf Y. function(Xf) & subclass(range_of(Xf),Y) --> maps(Xf::'a,domain_of(Xf),Y))"
wenzelm@24127
  1562
wenzelm@24127
  1563
abbreviation "SET004_1_eq maps single_valued3 single_valued2 single_valued1 compose_class equal \<equiv>
wenzelm@24128
  1564
  (\<forall>L M. equal(L::'a,M) --> equal(compose_class(L),compose_class(M))) &
wenzelm@24128
  1565
  (\<forall>N2 O2. equal(N2::'a,O2) --> equal(single_valued1(N2),single_valued1(O2))) &
wenzelm@24128
  1566
  (\<forall>P2 Q2. equal(P2::'a,Q2) --> equal(single_valued2(P2),single_valued2(Q2))) &
wenzelm@24128
  1567
  (\<forall>R2 S2. equal(R2::'a,S2) --> equal(single_valued3(R2),single_valued3(S2))) &
wenzelm@24128
  1568
  (\<forall>X2 Y2 Z2 A3. equal(X2::'a,Y2) & maps(X2::'a,Z2,A3) --> maps(Y2::'a,Z2,A3)) &
wenzelm@24128
  1569
  (\<forall>B3 D3 C3 E3. equal(B3::'a,C3) & maps(D3::'a,B3,E3) --> maps(D3::'a,C3,E3)) &
wenzelm@24127
  1570
  (\<forall>F3 H3 I3 G3. equal(F3::'a,G3) & maps(H3::'a,I3,F3) --> maps(H3::'a,I3,G3))"
wenzelm@24127
  1571
wenzelm@24127
  1572
abbreviation "NUM004_0_ax integer_of omega ordinal_multiply
wenzelm@24127
  1573
    add_relation ordinal_add recursion apply range_of union_of_range_map
wenzelm@24127
  1574
    function recursion_equation_functions rest_relation rest_of
wenzelm@24127
  1575
    limit_ordinals kind_1_ordinals successor_relation image'
wenzelm@24127
  1576
    universal_class sum_class element_relation ordinal_numbers section
wenzelm@24127
  1577
    not_well_ordering ordered_pair least member well_ordering singleton
wenzelm@24127
  1578
    domain_of segment null_class intersection asymmetric compos transitive
wenzelm@24127
  1579
    cross_product connected identity_relation complement restrct subclass
wenzelm@24127
  1580
    irreflexive symmetrization_of INVERSE union equal \<equiv>
wenzelm@24128
  1581
  (\<forall>X. equal(union(X::'a,INVERSE(X)),symmetrization_of(X))) &
wenzelm@24128
  1582
  (\<forall>X Y. irreflexive(X::'a,Y) --> subclass(restrct(X::'a,Y,Y),complement(identity_relation))) &
wenzelm@24128
  1583
  (\<forall>X Y. subclass(restrct(X::'a,Y,Y),complement(identity_relation)) --> irreflexive(X::'a,Y)) &
wenzelm@24128
  1584
  (\<forall>Y X. connected(X::'a,Y) --> subclass(cross_product(Y::'a,Y),union(identity_relation::'a,symmetrization_of(X)))) &
wenzelm@24128
  1585
  (\<forall>X Y. subclass(cross_product(Y::'a,Y),union(identity_relation::'a,symmetrization_of(X))) --> connected(X::'a,Y)) &
wenzelm@24128
  1586
  (\<forall>Xr Y. transitive(Xr::'a,Y) --> subclass(compos(restrct(Xr::'a,Y,Y),restrct(Xr::'a,Y,Y)),restrct(Xr::'a,Y,Y))) &
wenzelm@24128
  1587
  (\<forall>Xr Y. subclass(compos(restrct(Xr::'a,Y,Y),restrct(Xr::'a,Y,Y)),restrct(Xr::'a,Y,Y)) --> transitive(Xr::'a,Y)) &
wenzelm@24128
  1588
  (\<forall>Xr Y. asymmetric(Xr::'a,Y) --> equal(restrct(intersection(Xr::'a,INVERSE(Xr)),Y,Y),null_class)) &
wenzelm@24128
  1589
  (\<forall>Xr Y. equal(restrct(intersection(Xr::'a,INVERSE(Xr)),Y,Y),null_class) --> asymmetric(Xr::'a,Y)) &
wenzelm@24128
  1590
  (\<forall>Xr Y Z. equal(segment(Xr::'a,Y,Z),domain_of(restrct(Xr::'a,Y,singleton(Z))))) &
wenzelm@24128
  1591
  (\<forall>X Y. well_ordering(X::'a,Y) --> connected(X::'a,Y)) &
wenzelm@24128
  1592
  (\<forall>Y Xr U. well_ordering(Xr::'a,Y) & subclass(U::'a,Y) --> equal(U::'a,null_class) | member(least(Xr::'a,U),U)) &
wenzelm@24128
  1593
  (\<forall>Y V Xr U. well_ordering(Xr::'a,Y) & subclass(U::'a,Y) & member(V::'a,U) --> member(least(Xr::'a,U),U)) &
wenzelm@24128
  1594
  (\<forall>Y Xr U. well_ordering(Xr::'a,Y) & subclass(U::'a,Y) --> equal(segment(Xr::'a,U,least(Xr::'a,U)),null_class)) &
wenzelm@24128
  1595
  (\<forall>Y V U Xr. ~(well_ordering(Xr::'a,Y) & subclass(U::'a,Y) & member(V::'a,U) & member(ordered_pair(V::'a,least(Xr::'a,U)),Xr))) &
wenzelm@24128
  1596
  (\<forall>Xr Y. connected(Xr::'a,Y) & equal(not_well_ordering(Xr::'a,Y),null_class) --> well_ordering(Xr::'a,Y)) &
wenzelm@24128
  1597
  (\<forall>Xr Y. connected(Xr::'a,Y) --> subclass(not_well_ordering(Xr::'a,Y),Y) | well_ordering(Xr::'a,Y)) &
wenzelm@24128
  1598
  (\<forall>V Xr Y. member(V::'a,not_well_ordering(Xr::'a,Y)) & equal(segment(Xr::'a,not_well_ordering(Xr::'a,Y),V),null_class) & connected(Xr::'a,Y) --> well_ordering(Xr::'a,Y)) &
wenzelm@24128
  1599
  (\<forall>Xr Y Z. section(Xr::'a,Y,Z) --> subclass(Y::'a,Z)) &
wenzelm@24128
  1600
  (\<forall>Xr Z Y. section(Xr::'a,Y,Z) --> subclass(domain_of(restrct(Xr::'a,Z,Y)),Y)) &
wenzelm@24128
  1601
  (\<forall>Xr Y Z. subclass(Y::'a,Z) & subclass(domain_of(restrct(Xr::'a,Z,Y)),Y) --> section(Xr::'a,Y,Z)) &
wenzelm@24128
  1602
  (\<forall>X. member(X::'a,ordinal_numbers) --> well_ordering(element_relation::'a,X)) &
wenzelm@24128
  1603
  (\<forall>X. member(X::'a,ordinal_numbers) --> subclass(sum_class(X),X)) &
wenzelm@24128
  1604
  (\<forall>X. well_ordering(element_relation::'a,X) & subclass(sum_class(X),X) & member(X::'a,universal_class) --> member(X::'a,ordinal_numbers)) &
wenzelm@24128
  1605
  (\<forall>X. well_ordering(element_relation::'a,X) & subclass(sum_class(X),X) --> member(X::'a,ordinal_numbers) | equal(X::'a,ordinal_numbers)) &
wenzelm@24128
  1606
  (equal(union(singleton(null_class),image'(successor_relation::'a,ordinal_numbers)),kind_1_ordinals)) &
wenzelm@24128
  1607
  (equal(intersection(complement(kind_1_ordinals),ordinal_numbers),limit_ordinals)) &
wenzelm@24128
  1608
  (\<forall>X. subclass(rest_of(X),cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1609
  (\<forall>V U X. member(ordered_pair(U::'a,V),rest_of(X)) --> member(U::'a,domain_of(X))) &
wenzelm@24128
  1610
  (\<forall>X U V. member(ordered_pair(U::'a,V),rest_of(X)) --> equal(restrct(X::'a,U,universal_class),V)) &
wenzelm@24128
  1611
  (\<forall>U V X. member(U::'a,domain_of(X)) & equal(restrct(X::'a,U,universal_class),V) --> member(ordered_pair(U::'a,V),rest_of(X))) &
wenzelm@24128
  1612
  (subclass(rest_relation::'a,cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1613
  (\<forall>X Y. member(ordered_pair(X::'a,Y),rest_relation) --> equal(rest_of(X),Y)) &
wenzelm@24128
  1614
  (\<forall>X. member(X::'a,universal_class) --> member(ordered_pair(X::'a,rest_of(X)),rest_relation)) &
wenzelm@24128
  1615
  (\<forall>X Z. member(X::'a,recursion_equation_functions(Z)) --> function(Z)) &
wenzelm@24128
  1616
  (\<forall>Z X. member(X::'a,recursion_equation_functions(Z)) --> function(X)) &
wenzelm@24128
  1617
  (\<forall>Z X. member(X::'a,recursion_equation_functions(Z)) --> member(domain_of(X),ordinal_numbers)) &
wenzelm@24128
  1618
  (\<forall>Z X. member(X::'a,recursion_equation_functions(Z)) --> equal(compos(Z::'a,rest_of(X)),X)) &
wenzelm@24128
  1619
  (\<forall>X Z. function(Z) & function(X) & member(domain_of(X),ordinal_numbers) & equal(compos(Z::'a,rest_of(X)),X) --> member(X::'a,recursion_equation_functions(Z))) &
wenzelm@24128
  1620
  (subclass(union_of_range_map::'a,cross_product(universal_class::'a,universal_class))) &
wenzelm@24128
  1621
  (\<forall>X Y. member(ordered_pair(X::'a,Y),union_of_range_map) --> equal(sum_class(range_of(X)),Y)) &
wenzelm@24128
  1622
  (\<forall>X Y. member(ordered_pair(X::'a,Y),cross_product(universal_class::'a,universal_class)) & equal(sum_class(range_of(X)),Y) --> member(ordered_pair(X::'a,Y),union_of_range_map)) &
wenzelm@24128
  1623
  (\<forall>X Y. equal(apply(recursion(X::'a,successor_relation,union_of_range_map),Y),ordinal_add(X::'a,Y))) &
wenzelm@24128
  1624
  (\<forall>X Y. equal(recursion(null_class::'a,apply(add_relation::'a,X),union_of_range_map),ordinal_multiply(X::'a,Y))) &
wenzelm@24128
  1625
  (\<forall>X. member(X::'a,omega) --> equal(integer_of(X),X)) &
wenzelm@24127
  1626
  (\<forall>X. member(X::'a,omega) | equal(integer_of(X),null_class))"
wenzelm@24127
  1627
wenzelm@24127
  1628
abbreviation "NUM004_0_eq well_ordering transitive section irreflexive
wenzelm@24127
  1629
    connected asymmetric symmetrization_of segment rest_of
wenzelm@24127
  1630
    recursion_equation_functions recursion ordinal_multiply ordinal_add
wenzelm@24127
  1631
    not_well_ordering least integer_of equal \<equiv>
wenzelm@24128
  1632
  (\<forall>D E. equal(D::'a,E) --> equal(integer_of(D),integer_of(E))) &
wenzelm@24128
  1633
  (\<forall>F' G H. equal(F'::'a,G) --> equal(least(F'::'a,H),least(G::'a,H))) &
wenzelm@24128
  1634
  (\<forall>I' K' J. equal(I'::'a,J) --> equal(least(K'::'a,I'),least(K'::'a,J))) &
wenzelm@24128
  1635
  (\<forall>L M N. equal(L::'a,M) --> equal(not_well_ordering(L::'a,N),not_well_ordering(M::'a,N))) &
wenzelm@24128
  1636
  (\<forall>O' Q P. equal(O'::'a,P) --> equal(not_well_ordering(Q::'a,O'),not_well_ordering(Q::'a,P))) &
wenzelm@24128
  1637
  (\<forall>R S' T'. equal(R::'a,S') --> equal(ordinal_add(R::'a,T'),ordinal_add(S'::'a,T'))) &
wenzelm@24128
  1638
  (\<forall>U W V. equal(U::'a,V) --> equal(ordinal_add(W::'a,U),ordinal_add(W::'a,V))) &
wenzelm@24128
  1639
  (\<forall>X Y Z. equal(X::'a,Y) --> equal(ordinal_multiply(X::'a,Z),ordinal_multiply(Y::'a,Z))) &
wenzelm@24128
  1640
  (\<forall>A1 C1 B1. equal(A1::'a,B1) --> equal(ordinal_multiply(C1::'a,A1),ordinal_multiply(C1::'a,B1))) &
wenzelm@24128
  1641
  (\<forall>F1 G1 H1 I1. equal(F1::'a,G1) --> equal(recursion(F1::'a,H1,I1),recursion(G1::'a,H1,I1))) &
wenzelm@24128
  1642
  (\<forall>J1 L1 K1 M1. equal(J1::'a,K1) --> equal(recursion(L1::'a,J1,M1),recursion(L1::'a,K1,M1))) &
wenzelm@24128
  1643
  (\<forall>N1 P1 Q1 O1. equal(N1::'a,O1) --> equal(recursion(P1::'a,Q1,N1),recursion(P1::'a,Q1,O1))) &
wenzelm@24128
  1644
  (\<forall>R1 S1. equal(R1::'a,S1) --> equal(recursion_equation_functions(R1),recursion_equation_functions(S1))) &
wenzelm@24128
  1645
  (\<forall>T1 U1. equal(T1::'a,U1) --> equal(rest_of(T1),rest_of(U1))) &
wenzelm@24128
  1646
  (\<forall>V1 W1 X1 Y1. equal(V1::'a,W1) --> equal(segment(V1::'a,X1,Y1),segment(W1::'a,X1,Y1))) &
wenzelm@24128
  1647
  (\<forall>Z1 B2 A2 C2. equal(Z1::'a,A2) --> equal(segment(B2::'a,Z1,C2),segment(B2::'a,A2,C2))) &
wenzelm@24128
  1648
  (\<forall>D2 F2 G2 E2. equal(D2::'a,E2) --> equal(segment(F2::'a,G2,D2),segment(F2::'a,G2,E2))) &
wenzelm@24128
  1649
  (\<forall>H2 I2. equal(H2::'a,I2) --> equal(symmetrization_of(H2),symmetrization_of(I2))) &
wenzelm@24128
  1650
  (\<forall>J2 K2 L2. equal(J2::'a,K2) & asymmetric(J2::'a,L2) --> asymmetric(K2::'a,L2)) &
wenzelm@24128
  1651
  (\<forall>M2 O2 N2. equal(M2::'a,N2) & asymmetric(O2::'a,M2) --> asymmetric(O2::'a,N2)) &
wenzelm@24128
  1652
  (\<forall>P2 Q2 R2. equal(P2::'a,Q2) & connected(P2::'a,R2) --> connected(Q2::'a,R2)) &
wenzelm@24128
  1653
  (\<forall>S2 U2 T2. equal(S2::'a,T2) & connected(U2::'a,S2) --> connected(U2::'a,T2)) &
wenzelm@24128
  1654
  (\<forall>V2 W2 X2. equal(V2::'a,W2) & irreflexive(V2::'a,X2) --> irreflexive(W2::'a,X2)) &
wenzelm@24128
  1655
  (\<forall>Y2 A3 Z2. equal(Y2::'a,Z2) & irreflexive(A3::'a,Y2) --> irreflexive(A3::'a,Z2)) &
wenzelm@24128
  1656
  (\<forall>B3 C3 D3 E3. equal(B3::'a,C3) & section(B3::'a,D3,E3) --> section(C3::'a,D3,E3)) &
wenzelm@24128
  1657
  (\<forall>F3 H3 G3 I3. equal(F3::'a,G3) & section(H3::'a,F3,I3) --> section(H3::'a,G3,I3)) &
wenzelm@24128
  1658
  (\<forall>J3 L3 M3 K3. equal(J3::'a,K3) & section(L3::'a,M3,J3) --> section(L3::'a,M3,K3)) &
wenzelm@24128
  1659
  (\<forall>N3 O3 P3. equal(N3::'a,O3) & transitive(N3::'a,P3) --> transitive(O3::'a,P3)) &
wenzelm@24128
  1660
  (\<forall>Q3 S3 R3. equal(Q3::'a,R3) & transitive(S3::'a,Q3) --> transitive(S3::'a,R3)) &
wenzelm@24128
  1661
  (\<forall>T3 U3 V3. equal(T3::'a,U3) & well_ordering(T3::'a,V3) --> well_ordering(U3::'a,V3)) &
wenzelm@24127
  1662
  (\<forall>W3 Y3 X3. equal(W3::'a,X3) & well_ordering(Y3::'a,W3) --> well_ordering(Y3::'a,X3))"
wenzelm@24127
  1663
wenzelm@24127
  1664
(*1345 inferences so far.  Searching to depth 7.  23.3 secs.  BIG*)
wenzelm@24127
  1665
lemma NUM180_1:
wenzelm@24127
  1666
  "EQU001_0_ax equal &
wenzelm@24127
  1667
  SET004_0_ax not_homomorphism2 not_homomorphism1
wenzelm@24127
  1668
    homomorphism compatible operation cantor diagonalise subset_relation
wenzelm@24127
  1669
    one_to_one choice apply regular function identity_relation
wenzelm@24127
  1670
    single_valued_class compos powerClass sum_class omega inductive
wenzelm@24127
  1671
    successor_relation successor image' rng domain range_of INVERSE flip
wenzelm@24127
  1672
    rot domain_of null_class restrct difference union complement
wenzelm@24127
  1673
    intersection element_relation second first cross_product ordered_pair
wenzelm@24127
  1674
    singleton unordered_pair equal universal_class not_subclass_element
wenzelm@24127
  1675
    member subclass &
wenzelm@24127
  1676
  SET004_0_eq subclass single_valued_class operation
wenzelm@24127
  1677
    one_to_one member inductive homomorphism function compatible
wenzelm@24127
  1678
    unordered_pair union sum_class successor singleton second rot restrct
wenzelm@24127
  1679
    regular range_of rng powerClass ordered_pair not_subclass_element
wenzelm@24127
  1680
    not_homomorphism2 not_homomorphism1 INVERSE intersection image' flip
wenzelm@24127
  1681
    first domain_of domain difference diagonalise cross_product compos
wenzelm@24127
  1682
    complement cantor apply equal &
wenzelm@24127
  1683
  SET004_1_ax range_of function maps apply
wenzelm@24127
  1684
    application_function singleton_relation element_relation complement
wenzelm@24127
  1685
    intersection single_valued3 singleton image' domain single_valued2
wenzelm@24127
  1686
    second single_valued1 identity_relation INVERSE not_subclass_element
wenzelm@24127
  1687
    first domain_of domain_relation composition_function compos equal
wenzelm@24127
  1688
    ordered_pair member universal_class cross_product compose_class
wenzelm@24127
  1689
    subclass &
wenzelm@24127
  1690
  SET004_1_eq maps single_valued3 single_valued2 single_valued1 compose_class equal &
wenzelm@24127
  1691
  NUM004_0_ax integer_of omega ordinal_multiply
wenzelm@24127
  1692
    add_relation ordinal_add recursion apply range_of union_of_range_map
wenzelm@24127
  1693
    function recursion_equation_functions rest_relation rest_of
wenzelm@24127
  1694
    limit_ordinals kind_1_ordinals successor_relation image'
wenzelm@24127
  1695
    universal_class sum_class element_relation ordinal_numbers section
wenzelm@24127
  1696
    not_well_ordering ordered_pair least member well_ordering singleton
wenzelm@24127
  1697
    domain_of segment null_class intersection asymmetric compos transitive
wenzelm@24127
  1698
    cross_product connected identity_relation complement restrct subclass
wenzelm@24127
  1699
    irreflexive symmetrization_of INVERSE union equal &
wenzelm@24127
  1700
  NUM004_0_eq well_ordering transitive section irreflexive
wenzelm@24127
  1701
    connected asymmetric symmetrization_of segment rest_of
wenzelm@24127
  1702
    recursion_equation_functions recursion ordinal_multiply ordinal_add
wenzelm@24127
  1703
    not_well_ordering least integer_of equal &
wenzelm@24127
  1704
  (~subclass(limit_ordinals::'a,ordinal_numbers)) --> False"
wenzelm@24127
  1705
  by meson
wenzelm@24127
  1706
wenzelm@24127
  1707
wenzelm@24127
  1708
(*0 inferences so far.  Searching to depth 0.  16.8 secs.  BIG*)
wenzelm@24127
  1709
lemma NUM228_1:
wenzelm@24127
  1710
  "EQU001_0_ax equal &
wenzelm@24127
  1711
  SET004_0_ax not_homomorphism2 not_homomorphism1
wenzelm@24127
  1712
    homomorphism compatible operation cantor diagonalise subset_relation
wenzelm@24127
  1713
    one_to_one choice apply regular function identity_relation
wenzelm@24127
  1714
    single_valued_class compos powerClass sum_class omega inductive
wenzelm@24127
  1715
    successor_relation successor image' rng domain range_of INVERSE flip
wenzelm@24127
  1716
    rot domain_of null_class restrct difference union complement
wenzelm@24127
  1717
    intersection element_relation second first cross_product ordered_pair
wenzelm@24127
  1718
    singleton unordered_pair equal universal_class not_subclass_element
wenzelm@24127
  1719
    member subclass &
wenzelm@24127
  1720
  SET004_0_eq subclass single_valued_class operation
wenzelm@24127
  1721
    one_to_one member inductive homomorphism function compatible
wenzelm@24127
  1722
    unordered_pair union sum_class successor singleton second rot restrct
wenzelm@24127
  1723
    regular range_of rng powerClass ordered_pair not_subclass_element
wenzelm@24127
  1724
    not_homomorphism2 not_homomorphism1 INVERSE intersection image' flip
wenzelm@24127
  1725
    first domain_of domain difference diagonalise cross_product compos
wenzelm@24127
  1726
    complement cantor apply equal &
wenzelm@24127
  1727
  SET004_1_ax range_of function maps apply
wenzelm@24127
  1728
    application_function singleton_relation element_relation complement
wenzelm@24127
  1729
    intersection single_valued3 singleton image' domain single_valued2
wenzelm@24127
  1730
    second single_valued1 identity_relation INVERSE not_subclass_element
wenzelm@24127
  1731
    first domain_of domain_relation composition_function compos equal
wenzelm@24127
  1732
    ordered_pair member universal_class cross_product compose_class
wenzelm@24127
  1733
    subclass &
wenzelm@24127
  1734
  SET004_1_eq maps single_valued3 single_valued2 single_valued1 compose_class equal &
wenzelm@24127
  1735
  NUM004_0_ax integer_of omega ordinal_multiply
wenzelm@24127
  1736
    add_relation ordinal_add recursion apply range_of union_of_range_map
wenzelm@24127
  1737
    function recursion_equation_functions rest_relation rest_of
wenzelm@24127
  1738
    limit_ordinals kind_1_ordinals successor_relation image'
wenzelm@24127
  1739
    universal_class sum_class element_relation ordinal_numbers section
wenzelm@24127
  1740
    not_well_ordering ordered_pair least member well_ordering singleton
wenzelm@24127
  1741
    domain_of segment null_class intersection asymmetric compos transitive
wenzelm@24127
  1742
    cross_product connected identity_relation complement restrct subclass
wenzelm@24127
  1743
    irreflexive symmetrization_of INVERSE union equal &
wenzelm@24127
  1744
  NUM004_0_eq well_ordering transitive section irreflexive
wenzelm@24127
  1745
    connected asymmetric symmetrization_of segment rest_of
wenzelm@24127
  1746
    recursion_equation_functions recursion ordinal_multiply ordinal_add
wenzelm@24127
  1747
    not_well_ordering least integer_of equal &
wenzelm@24128
  1748
  (~function(z)) &
wenzelm@24127
  1749
    (~equal(recursion_equation_functions(z),null_class)) --> False"
wenzelm@24127
  1750
  by meson
wenzelm@24127
  1751
wenzelm@24127
  1752
wenzelm@24127
  1753
(*4868 inferences so far.  Searching to depth 12.  4.3 secs*)
wenzelm@24127
  1754
lemma PLA002_1:
wenzelm@24128
  1755
  "(\<forall>Situation1 Situation2. warm(Situation1) | cold(Situation2)) &
wenzelm@24128
  1756
  (\<forall>Situation. at(a::'a,Situation) --> at(b::'a,walk(b::'a,Situation))) &
wenzelm@24128
  1757
  (\<forall>Situation. at(a::'a,Situation) --> at(b::'a,drive(b::'a,Situation))) &
wenzelm@24128
  1758
  (\<forall>Situation. at(b::'a,Situation) --> at(a::'a,walk(a::'a,Situation))) &
wenzelm@24128
  1759
  (\<forall>Situation. at(b::'a,Situation) --> at(a::'a,drive(a::'a,Situation))) &
wenzelm@24128
  1760
  (\<forall>Situation. cold(Situation) & at(b::'a,Situation) --> at(c::'a,skate(c::'a,Situation))) &
wenzelm@24128
  1761
  (\<forall>Situation. cold(Situation) & at(c::'a,Situation) --> at(b::'a,skate(b::'a,Situation))) &
wenzelm@24128
  1762
  (\<forall>Situation. warm(Situation) & at(b::'a,Situation) --> at(d::'a,climb(d::'a,Situation))) &
wenzelm@24128
  1763
  (\<forall>Situation. warm(Situation) & at(d::'a,Situation) --> at(b::'a,climb(b::'a,Situation))) &
wenzelm@24128
  1764
  (\<forall>Situation. at(c::'a,Situation) --> at(d::'a,go(d::'a,Situation))) &
wenzelm@24128
  1765
  (\<forall>Situation. at(d::'a,Situation) --> at(c::'a,go(c::'a,Situation))) &
wenzelm@24128
  1766
  (\<forall>Situation. at(c::'a,Situation) --> at(e::'a,go(e::'a,Situation))) &
wenzelm@24128
  1767
  (\<forall>Situation. at(e::'a,Situation) --> at(c::'a,go(c::'a,Situation))) &
wenzelm@24128
  1768
  (\<forall>Situation. at(d::'a,Situation) --> at(f::'a,go(f::'a,Situation))) &
wenzelm@24128
  1769
  (\<forall>Situation. at(f::'a,Situation) --> at(d::'a,go(d::'a,Situation))) &
wenzelm@24128
  1770
  (at(f::'a,s0)) &
wenzelm@24127
  1771
  (\<forall>S'. ~at(a::'a,S')) --> False"
wenzelm@24127
  1772
  by meson
wenzelm@24127
  1773
wenzelm@24127
  1774
abbreviation "PLA001_0_ax putdown on pickup do holding table differ clear EMPTY and' holds \<equiv>
wenzelm@24128
  1775
  (\<forall>X Y State. holds(X::'a,State) & holds(Y::'a,State) --> holds(and'(X::'a,Y),State)) &
wenzelm@24128
  1776
  (\<forall>State X. holds(EMPTY::'a,State) & holds(clear(X),State) & differ(X::'a,table) --> holds(holding(X),do(pickup(X),State))) &
wenzelm@24128
  1777
  (\<forall>Y X State. holds(on(X::'a,Y),State) & holds(clear(X),State) & holds(EMPTY::'a,State) --> holds(clear(Y),do(pickup(X),State))) &
wenzelm@24128
  1778
  (\<forall>Y State X Z. holds(on(X::'a,Y),State) & differ(X::'a,Z) --> holds(on(X::'a,Y),do(pickup(Z),State))) &
wenzelm@24128
  1779
  (\<forall>State X Z. holds(clear(X),State) & differ(X::'a,Z) --> holds(clear(X),do(pickup(Z),State))) &
wenzelm@24128
  1780
  (\<forall>X Y State. holds(holding(X),State) & holds(clear(Y),State) --> holds(EMPTY::'a,do(putdown(X::'a,Y),State))) &
wenzelm@24128
  1781
  (\<forall>X Y State. holds(holding(X),State) & holds(clear(Y),State) --> holds(on(X::'a,Y),do(putdown(X::'a,Y),State))) &
wenzelm@24128
  1782
  (\<forall>X Y State. holds(holding(X),State) & holds(clear(Y),State) --> holds(clear(X),do(putdown(X::'a,Y),State))) &
wenzelm@24128
  1783
  (\<forall>Z W X Y State. holds(on(X::'a,Y),State) --> holds(on(X::'a,Y),do(putdown(Z::'a,W),State))) &
wenzelm@24127
  1784
  (\<forall>X State Z Y. holds(clear(Z),State) & differ(Z::'a,Y) --> holds(clear(Z),do(putdown(X::'a,Y),State)))"
wenzelm@24127
  1785
wenzelm@24127
  1786
abbreviation "PLA001_1_ax EMPTY clear s0 on holds table d c b a differ \<equiv>
wenzelm@24128
  1787
  (\<forall>Y X. differ(Y::'a,X) --> differ(X::'a,Y)) &
wenzelm@24128
  1788
  (differ(a::'a,b)) &
wenzelm@24128
  1789
  (differ(a::'a,c)) &
wenzelm@24128
  1790
  (differ(a::'a,d)) &
wenzelm@24128
  1791
  (differ(a::'a,table)) &
wenzelm@24128
  1792
  (differ(b::'a,c)) &
wenzelm@24128
  1793
  (differ(b::'a,d)) &
wenzelm@24128
  1794
  (differ(b::'a,table)) &
wenzelm@24128
  1795
  (differ(c::'a,d)) &
wenzelm@24128
  1796
  (differ(c::'a,table)) &
wenzelm@24128
  1797
  (differ(d::'a,table)) &
wenzelm@24128
  1798
  (holds(on(a::'a,table),s0)) &
wenzelm@24128
  1799
  (holds(on(b::'a,table),s0)) &
wenzelm@24128
  1800
  (holds(on(c::'a,d),s0)) &
wenzelm@24128
  1801
  (holds(on(d::'a,table),s0)) &
wenzelm@24128
  1802
  (holds(clear(a),s0)) &
wenzelm@24128
  1803
  (holds(clear(b),s0)) &
wenzelm@24128
  1804
  (holds(clear(c),s0)) &
wenzelm@24128
  1805
  (holds(EMPTY::'a,s0)) &
wenzelm@24127
  1806
  (\<forall>State. holds(clear(table),State))"
wenzelm@24127
  1807
wenzelm@24127
  1808
(*190 inferences so far.  Searching to depth 10.  0.6 secs*)
wenzelm@24127
  1809
lemma PLA006_1:
wenzelm@24127
  1810
  "PLA001_0_ax putdown on pickup do holding table differ clear EMPTY and' holds &
wenzelm@24127
  1811
  PLA001_1_ax EMPTY clear s0 on holds table d c b a differ &
wenzelm@24127
  1812
  (\<forall>State. ~holds(on(c::'a,table),State)) --> False"
wenzelm@24127
  1813
  by meson
wenzelm@24127
  1814
wenzelm@24127
  1815
(*190 inferences so far.  Searching to depth 10.  0.5 secs*)
wenzelm@24127
  1816
lemma PLA017_1:
wenzelm@24127
  1817
  "PLA001_0_ax putdown on pickup do holding table differ clear EMPTY and' holds &
wenzelm@24127
  1818
  PLA001_1_ax EMPTY clear s0 on holds table d c b a differ &
wenzelm@24127
  1819
  (\<forall>State. ~holds(on(a::'a,c),State)) --> False"
wenzelm@24127
  1820
  by meson
wenzelm@24127
  1821
wenzelm@24127
  1822
(*13732 inferences so far.  Searching to depth 16.  9.8 secs*)
wenzelm@24127
  1823
lemma PLA022_1:
wenzelm@24127
  1824
  "PLA001_0_ax putdown on pickup do holding table differ clear EMPTY and' holds &
wenzelm@24127
  1825
  PLA001_1_ax EMPTY clear s0 on holds table d c b a differ &
wenzelm@24127
  1826
  (\<forall>State. ~holds(and'(on(c::'a,d),on(a::'a,c)),State)) --> False"
wenzelm@24127
  1827
  by meson
wenzelm@24127
  1828
wenzelm@24127
  1829
(*217 inferences so far.  Searching to depth 13.  0.7 secs*)
wenzelm@24127
  1830
lemma PLA022_2:
wenzelm@24127
  1831
  "PLA001_0_ax putdown on pickup do holding table differ clear EMPTY and' holds &
wenzelm@24127
  1832
  PLA001_1_ax EMPTY clear s0 on holds table d c b a differ &
wenzelm@24127
  1833
  (\<forall>State. ~holds(and'(on(a::'a,c),on(c::'a,d)),State)) --> False"
wenzelm@24127
  1834
  by meson
wenzelm@24127
  1835
wenzelm@24127
  1836
(*948 inferences so far.  Searching to depth 18.  1.1 secs*)
wenzelm@24127
  1837
lemma PRV001_1:
wenzelm@24128
  1838
 "(\<forall>X Y Z. q1(X::'a,Y,Z) & mless_or_equal(X::'a,Y) --> q2(X::'a,Y,Z)) &
wenzelm@24128
  1839
  (\<forall>X Y Z. q1(X::'a,Y,Z) --> mless_or_equal(X::'a,Y) | q3(X::'a,Y,Z)) &
wenzelm@24128
  1840
  (\<forall>Z X Y. q2(X::'a,Y,Z) --> q4(X::'a,Y,Y)) &
wenzelm@24128
  1841
  (\<forall>Z Y X. q3(X::'a,Y,Z) --> q4(X::'a,Y,X)) &
wenzelm@24128
  1842
  (\<forall>X. mless_or_equal(X::'a,X)) &
wenzelm@24128
  1843
  (\<forall>X Y. mless_or_equal(X::'a,Y) & mless_or_equal(Y::'a,X) --> equal(X::'a,Y)) &
wenzelm@24128
  1844
  (\<forall>Y X Z. mless_or_equal(X::'a,Y) & mless_or_equal(Y::'a,Z) --> mless_or_equal(X::'a,Z)) &
wenzelm@24128
  1845
  (\<forall>Y X. mless_or_equal(X::'a,Y) | mless_or_equal(Y::'a,X)) &
wenzelm@24128
  1846
  (\<forall>X Y. equal(X::'a,Y) --> mless_or_equal(X::'a,Y)) &
wenzelm@24128
  1847
  (\<forall>X Y Z. equal(X::'a,Y) & mless_or_equal(X::'a,Z) --> mless_or_equal(Y::'a,Z)) &
wenzelm@24128
  1848
  (\<forall>X Z Y. equal(X::'a,Y) & mless_or_equal(Z::'a,X) --> mless_or_equal(Z::'a,Y)) &
wenzelm@24128
  1849
  (q1(a::'a,b,c)) &
wenzelm@24128
  1850
  (\<forall>W. ~(q4(a::'a,b,W) & mless_or_equal(a::'a,W) & mless_or_equal(b::'a,W) & mless_or_equal(W::'a,a))) &
wenzelm@24127
  1851
  (\<forall>W. ~(q4(a::'a,b,W) & mless_or_equal(a::'a,W) & mless_or_equal(b::'a,W) & mless_or_equal(W::'a,b))) --> False"
wenzelm@24127
  1852
  by meson
wenzelm@24127
  1853
wenzelm@24127
  1854
(*PRV is now called SWV (software verification) *)
wenzelm@24127
  1855
abbreviation "SWV001_1_ax mless_THAN successor predecessor equal \<equiv>
wenzelm@24128
  1856
  (\<forall>X. equal(predecessor(successor(X)),X)) &
wenzelm@24128
  1857
  (\<forall>X. equal(successor(predecessor(X)),X)) &
wenzelm@24128
  1858
  (\<forall>X Y. equal(predecessor(X),predecessor(Y)) --> equal(X::'a,Y)) &
wenzelm@24128
  1859
  (\<forall>X Y. equal(successor(X),successor(Y)) --> equal(X::'a,Y)) &
wenzelm@24128
  1860
  (\<forall>X. mless_THAN(predecessor(X),X)) &
wenzelm@24128
  1861
  (\<forall>X. mless_THAN(X::'a,successor(X))) &
wenzelm@24128
  1862
  (\<forall>X Y Z. mless_THAN(X::'a,Y) & mless_THAN(Y::'a,Z) --> mless_THAN(X::'a,Z)) &
wenzelm@24128
  1863
  (\<forall>X Y. mless_THAN(X::'a,Y) | mless_THAN(Y::'a,X) | equal(X::'a,Y)) &
wenzelm@24128
  1864
  (\<forall>X. ~mless_THAN(X::'a,X)) &
wenzelm@24128
  1865
  (\<forall>Y X. ~(mless_THAN(X::'a,Y) & mless_THAN(Y::'a,X))) &
wenzelm@24128
  1866
  (\<forall>Y X Z. equal(X::'a,Y) & mless_THAN(X::'a,Z) --> mless_THAN(Y::'a,Z)) &
wenzelm@24127
  1867
  (\<forall>Y Z X. equal(X::'a,Y) & mless_THAN(Z::'a,X) --> mless_THAN(Z::'a,Y))"
wenzelm@24127
  1868
wenzelm@24127
  1869
abbreviation "SWV001_0_eq a successor predecessor equal \<equiv>
wenzelm@24128
  1870
  (\<forall>X Y. equal(X::'a,Y) --> equal(predecessor(X),predecessor(Y))) &
wenzelm@24128
  1871
  (\<forall>X Y. equal(X::'a,Y) --> equal(successor(X),successor(Y))) &
wenzelm@24127
  1872
  (\<forall>X Y. equal(X::'a,Y) --> equal(a(X),a(Y)))"
wenzelm@24127
  1873
wenzelm@24127
  1874
(*21 inferences so far.  Searching to depth 5.  0.4 secs*)
wenzelm@24127
  1875
lemma PRV003_1:
wenzelm@24127
  1876
  "EQU001_0_ax equal &
wenzelm@24127
  1877
  SWV001_1_ax mless_THAN successor predecessor equal &
wenzelm@24128
  1878
  SWV001_0_eq a successor predecessor equal &
wenzelm@24128
  1879
  (~mless_THAN(n::'a,j)) &
wenzelm@24128
  1880
  (mless_THAN(k::'a,j)) &
wenzelm@24128
  1881
  (~mless_THAN(k::'a,i)) &
wenzelm@24128
  1882
  (mless_THAN(i::'a,n)) &
wenzelm@24128
  1883
  (mless_THAN(a(j),a(k))) &
wenzelm@24128
  1884
  (\<forall>X. mless_THAN(X::'a,j) & mless_THAN(a(X),a(k)) --> mless_THAN(X::'a,i)) &
wenzelm@24128
  1885
  (\<forall>X. mless_THAN(One::'a,i) & mless_THAN(a(X),a(predecessor(i))) --> mless_THAN(X::'a,i) | mless_THAN(n::'a,X)) &
wenzelm@24128
  1886
  (\<forall>X. ~(mless_THAN(One::'a,X) & mless_THAN(X::'a,i) & mless_THAN(a(X),a(predecessor(X))))) &
wenzelm@24127
  1887
  (mless_THAN(j::'a,i)) --> False"
wenzelm@24127
  1888
  by meson
wenzelm@24127
  1889
wenzelm@24127
  1890
(*584 inferences so far.  Searching to depth 7.  1.1 secs*)
wenzelm@24127
  1891
lemma PRV005_1:
wenzelm@24127
  1892
  "EQU001_0_ax equal &
wenzelm@24127
  1893
  SWV001_1_ax mless_THAN successor predecessor equal &
wenzelm@24128
  1894
  SWV001_0_eq a successor predecessor equal &
wenzelm@24128
  1895
  (~mless_THAN(n::'a,k)) &
wenzelm@24128
  1896
  (~mless_THAN(k::'a,l)) &
wenzelm@24128
  1897
  (~mless_THAN(k::'a,i)) &
wenzelm@24128
  1898
  (mless_THAN(l::'a,n)) &
wenzelm@24128
  1899
  (mless_THAN(One::'a,l)) &
wenzelm@24128
  1900
  (mless_THAN(a(k),a(predecessor(l)))) &
wenzelm@24128
  1901
  (\<forall>X. mless_THAN(X::'a,successor(n)) & mless_THAN(a(X),a(k)) --> mless_THAN(X::'a,l)) &
wenzelm@24128
  1902
  (\<forall>X. mless_THAN(One::'a,l) & mless_THAN(a(X),a(predecessor(l))) --> mless_THAN(X::'a,l) | mless_THAN(n::'a,X)) &
wenzelm@24127
  1903
  (\<forall>X. ~(mless_THAN(One::'a,X) & mless_THAN(X::'a,l) & mless_THAN(a(X),a(predecessor(X))))) --> False"
wenzelm@24127
  1904
  by meson
wenzelm@24127
  1905
wenzelm@24127
  1906
(*2343 inferences so far.  Searching to depth 8.  3.5 secs*)
wenzelm@24127
  1907
lemma PRV006_1:
wenzelm@24127
  1908
  "EQU001_0_ax equal &
wenzelm@24127
  1909
  SWV001_1_ax mless_THAN successor predecessor equal &
wenzelm@24127
  1910
  SWV001_0_eq a successor predecessor equal &
wenzelm@24128
  1911
  (~mless_THAN(n::'a,m)) &
wenzelm@24128
  1912
  (mless_THAN(i::'a,m)) &
wenzelm@24128
  1913
  (mless_THAN(i::'a,n)) &
wenzelm@24128
  1914
  (~mless_THAN(i::'a,One)) &
wenzelm@24128
  1915
  (mless_THAN(a(i),a(m))) &
wenzelm@24128
  1916
  (\<forall>X. mless_THAN(X::'a,successor(n)) & mless_THAN(a(X),a(m)) --> mless_THAN(X::'a,i)) &
wenzelm@24128
  1917
  (\<forall>X. mless_THAN(One::'a,i) & mless_THAN(a(X),a(predecessor(i))) --> mless_THAN(X::'a,i) | mless_THAN(n::'a,X)) &
wenzelm@24127
  1918
  (\<forall>X. ~(mless_THAN(One::'a,X) & mless_THAN(X::'a,i) & mless_THAN(a(X),a(predecessor(X))))) --> False"
wenzelm@24127
  1919
  by meson
wenzelm@24127
  1920
wenzelm@24127
  1921
(*86 inferences so far.  Searching to depth 14.  0.1 secs*)
wenzelm@24127
  1922
lemma PRV009_1:
wenzelm@24128
  1923
  "(\<forall>Y X. mless_or_equal(X::'a,Y) | mless(Y::'a,X)) &
wenzelm@24128
  1924
  (mless(j::'a,i)) &
wenzelm@24128
  1925
  (mless_or_equal(m::'a,p)) &
wenzelm@24128
  1926
  (mless_or_equal(p::'a,q)) &
wenzelm@24128
  1927
  (mless_or_equal(q::'a,n)) &
wenzelm@24128
  1928
  (\<forall>X Y. mless_or_equal(m::'a,X) & mless(X::'a,i) & mless(j::'a,Y) & mless_or_equal(Y::'a,n) --> mless_or_equal(a(X),a(Y))) &
wenzelm@24128
  1929
  (\<forall>X Y. mless_or_equal(m::'a,X) & mless_or_equal(X::'a,Y) & mless_or_equal(Y::'a,j) --> mless_or_equal(a(X),a(Y))) &
wenzelm@24128
  1930
  (\<forall>X Y. mless_or_equal(i::'a,X) & mless_or_equal(X::'a,Y) & mless_or_equal(Y::'a,n) --> mless_or_equal(a(X),a(Y))) &
wenzelm@24127
  1931
  (~mless_or_equal(a(p),a(q))) --> False"
wenzelm@24127
  1932
  by meson
wenzelm@24127
  1933
wenzelm@24127
  1934
(*222 inferences so far.  Searching to depth 8.  0.4 secs*)
wenzelm@24127
  1935
lemma PUZ012_1:
wenzelm@24128
  1936
  "(\<forall>X. equal_fruits(X::'a,X)) &
wenzelm@24128
  1937
  (\<forall>X. equal_boxes(X::'a,X)) &
wenzelm@24128
  1938
  (\<forall>X Y. ~(label(X::'a,Y) & contains(X::'a,Y))) &
wenzelm@24128
  1939
  (\<forall>X. contains(boxa::'a,X) | contains(boxb::'a,X) | contains(boxc::'a,X)) &
wenzelm@24128
  1940
  (\<forall>X. contains(X::'a,apples) | contains(X::'a,bananas) | contains(X::'a,oranges)) &
wenzelm@24128
  1941
  (\<forall>X Y Z. contains(X::'a,Y) & contains(X::'a,Z) --> equal_fruits(Y::'a,Z)) &
wenzelm@24128
  1942
  (\<forall>Y X Z. contains(X::'a,Y) & contains(Z::'a,Y) --> equal_boxes(X::'a,Z)) &
wenzelm@24128
  1943
  (~equal_boxes(boxa::'a,boxb)) &
wenzelm@24128
  1944
  (~equal_boxes(boxb::'a,boxc)) &
wenzelm@24128
  1945
  (~equal_boxes(boxa::'a,boxc)) &
wenzelm@24128
  1946
  (~equal_fruits(apples::'a,bananas)) &
wenzelm@24128
  1947
  (~equal_fruits(bananas::'a,oranges)) &
wenzelm@24128
  1948
  (~equal_fruits(apples::'a,oranges)) &
wenzelm@24128
  1949
  (label(boxa::'a,apples)) &
wenzelm@24128
  1950
  (label(boxb::'a,oranges)) &
wenzelm@24128
  1951
  (label(boxc::'a,bananas)) &
wenzelm@24128
  1952
  (contains(boxb::'a,apples)) &
wenzelm@24127
  1953
  (~(contains(boxa::'a,bananas) & contains(boxc::'a,oranges))) --> False"
wenzelm@24127
  1954
  by meson
wenzelm@24127
  1955
wenzelm@24127
  1956
(*35 inferences so far.  Searching to depth 5.  3.2 secs*)
wenzelm@24127
  1957
lemma PUZ020_1:
wenzelm@24128
  1958
  "EQU001_0_ax equal &
wenzelm@24128
  1959
  (\<forall>A B. equal(A::'a,B) --> equal(statement_by(A),statement_by(B))) &
wenzelm@24128
  1960
  (\<forall>X. person(X) --> knight(X) | knave(X)) &
wenzelm@24128
  1961
  (\<forall>X. ~(person(X) & knight(X) & knave(X))) &
wenzelm@24128
  1962
  (\<forall>X Y. says(X::'a,Y) & a_truth(Y) --> a_truth(Y)) &
wenzelm@24128
  1963
  (\<forall>X Y. ~(says(X::'a,Y) & equal(X::'a,Y))) &
wenzelm@24128
  1964
  (\<forall>Y X. says(X::'a,Y) --> equal(Y::'a,statement_by(X))) &
wenzelm@24128
  1965
  (\<forall>X Y. ~(person(X) & equal(X::'a,statement_by(Y)))) &
wenzelm@24128
  1966
  (\<forall>X. person(X) & a_truth(statement_by(X)) --> knight(X)) &
wenzelm@24128
  1967
  (\<forall>X. person(X) --> a_truth(statement_by(X)) | knave(X)) &
wenzelm@24128
  1968
  (\<forall>X Y. equal(X::'a,Y) & knight(X) --> knight(Y)) &
wenzelm@24128
  1969
  (\<forall>X Y. equal(X::'a,Y) & knave(X) --> knave(Y)) &
wenzelm@24128
  1970
  (\<forall>X Y. equal(X::'a,Y) & person(X) --> person(Y)) &
wenzelm@24128
  1971
  (\<forall>X Y Z. equal(X::'a,Y) & says(X::'a,Z) --> says(Y::'a,Z)) &
wenzelm@24128
  1972
  (\<forall>X Z Y. equal(X::'a,Y) & says(Z::'a,X) --> says(Z::'a,Y)) &
wenzelm@24128
  1973
  (\<forall>X Y. equal(X::'a,Y) & a_truth(X) --> a_truth(Y)) &
wenzelm@24128
  1974
  (\<forall>X Y. knight(X) & says(X::'a,Y) --> a_truth(Y)) &
wenzelm@24128
  1975
  (\<forall>X Y. ~(knave(X) & says(X::'a,Y) & a_truth(Y))) &
wenzelm@24128
  1976
  (person(husband)) &
wenzelm@24128
  1977
  (person(wife)) &
wenzelm@24128
  1978
  (~equal(husband::'a,wife)) &
wenzelm@24128
  1979
  (says(husband::'a,statement_by(husband))) &
wenzelm@24128
  1980
  (a_truth(statement_by(husband)) & knight(husband) --> knight(wife)) &
wenzelm@24128
  1981
  (knight(husband) --> a_truth(statement_by(husband))) &
wenzelm@24128
  1982
  (a_truth(statement_by(husband)) | knight(wife)) &
wenzelm@24128
  1983
  (knight(wife) --> a_truth(statement_by(husband))) &
wenzelm@24127
  1984
  (~knight(husband)) --> False"
wenzelm@24127
  1985
  by meson
wenzelm@24127
  1986
wenzelm@24127
  1987
(*121806 inferences so far.  Searching to depth 17.  63.0 secs*)
wenzelm@24127
  1988
lemma PUZ025_1:
wenzelm@24128
  1989
  "(\<forall>X. a_truth(truthteller(X)) | a_truth(liar(X))) &
wenzelm@24128
  1990
  (\<forall>X. ~(a_truth(truthteller(X)) & a_truth(liar(X)))) &
wenzelm@24128
  1991
  (\<forall>Truthteller Statement. a_truth(truthteller(Truthteller)) & a_truth(says(Truthteller::'a,Statement)) --> a_truth(Statement)) &
wenzelm@24128
  1992
  (\<forall>Liar Statement. ~(a_truth(liar(Liar)) & a_truth(says(Liar::'a,Statement)) & a_truth(Statement))) &
wenzelm@24128
  1993
  (\<forall>Statement Truthteller. a_truth(Statement) & a_truth(says(Truthteller::'a,Statement)) --> a_truth(truthteller(Truthteller))) &
wenzelm@24128
  1994
  (\<forall>Statement Liar. a_truth(says(Liar::'a,Statement)) --> a_truth(Statement) | a_truth(liar(Liar))) &
wenzelm@24128
  1995
  (\<forall>Z X Y. people(X::'a,Y,Z) & a_truth(liar(X)) & a_truth(liar(Y)) --> a_truth(equal_type(X::'a,Y))) &
wenzelm@24128
  1996
  (\<forall>Z X Y. people(X::'a,Y,Z) & a_truth(truthteller(X)) & a_truth(truthteller(Y)) --> a_truth(equal_type(X::'a,Y))) &
wenzelm@24128
  1997
  (\<forall>X Y. a_truth(equal_type(X::'a,Y)) & a_truth(truthteller(X)) --> a_truth(truthteller(Y))) &
wenzelm@24128
  1998
  (\<forall>X Y. a_truth(equal_type(X::'a,Y)) & a_truth(liar(X)) --> a_truth(liar(Y))) &
wenzelm@24128
  1999
  (\<forall>X Y. a_truth(truthteller(X)) --> a_truth(equal_type(X::'a,Y)) | a_truth(liar(Y))) &
wenzelm@24128
  2000
  (\<forall>X Y. a_truth(liar(X)) --> a_truth(equal_type(X::'a,Y)) | a_truth(truthteller(Y))) &
wenzelm@24128
  2001
  (\<forall>Y X. a_truth(equal_type(X::'a,Y)) --> a_truth(equal_type(Y::'a,X))) &
wenzelm@24128
  2002
  (\<forall>X Y. ask_1_if_2(X::'a,Y) & a_truth(truthteller(X)) & a_truth(Y) --> answer(yes)) &
wenzelm@24128
  2003
  (\<forall>X Y. ask_1_if_2(X::'a,Y) & a_truth(truthteller(X)) --> a_truth(Y) | answer(no)) &
wenzelm@24128
  2004
  (\<forall>X Y. ask_1_if_2(X::'a,Y) & a_truth(liar(X)) & a_truth(Y) --> answer(no)) &
wenzelm@24128
  2005
  (\<forall>X Y. ask_1_if_2(X::'a,Y) & a_truth(liar(X)) --> a_truth(Y) | answer(yes)) &
wenzelm@24128
  2006
  (people(b::'a,c,a)) &
wenzelm@24128
  2007
  (people(a::'a,b,a)) &
wenzelm@24128
  2008
  (people(a::'a,c,b)) &
wenzelm@24128
  2009
  (people(c::'a,b,a)) &
wenzelm@24128
  2010
  (a_truth(says(a::'a,equal_type(b::'a,c)))) &
wenzelm@24128
  2011
  (ask_1_if_2(c::'a,equal_type(a::'a,b))) &
wenzelm@24127
  2012
  (\<forall>Answer. ~answer(Answer)) --> False"
wenzelm@24127
  2013
  oops
wenzelm@24127
  2014
wenzelm@24127
  2015
wenzelm@24127
  2016
(*621 inferences so far.  Searching to depth 18.  0.2 secs*)
wenzelm@24127
  2017
lemma PUZ029_1:
wenzelm@24128
  2018
 "(\<forall>X. dances_on_tightropes(X) | eats_pennybuns(X) | old(X)) &
wenzelm@24128
  2019
  (\<forall>X. pig(X) & liable_to_giddiness(X) --> treated_with_respect(X)) &
wenzelm@24128
  2020
  (\<forall>X. wise(X) & balloonist(X) --> has_umbrella(X)) &
wenzelm@24128
  2021
  (\<forall>X. ~(looks_ridiculous(X) & eats_pennybuns(X) & eats_lunch_in_public(X))) &
wenzelm@24128
  2022
  (\<forall>X. balloonist(X) & young(X) --> liable_to_giddiness(X)) &
wenzelm@24128
  2023
  (\<forall>X. fat(X) & looks_ridiculous(X) --> dances_on_tightropes(X) | eats_lunch_in_public(X)) &
wenzelm@24128
  2024
  (\<forall>X. ~(liable_to_giddiness(X) & wise(X) & dances_on_tightropes(X))) &
wenzelm@24128
  2025
  (\<forall>X. pig(X) & has_umbrella(X) --> looks_ridiculous(X)) &
wenzelm@24128
  2026
  (\<forall>X. treated_with_respect(X) --> dances_on_tightropes(X) | fat(X)) &
wenzelm@24128
  2027
  (\<forall>X. young(X) | old(X)) &
wenzelm@24128
  2028
  (\<forall>X. ~(young(X) & old(X))) &
wenzelm@24128
  2029
  (wise(piggy)) &
wenzelm@24128
  2030
  (young(piggy)) &
wenzelm@24128
  2031
  (pig(piggy)) &
wenzelm@24127
  2032
  (balloonist(piggy)) --> False"
wenzelm@24127
  2033
  by meson
wenzelm@24127
  2034
wenzelm@24127
  2035
abbreviation "RNG001_0_ax equal additive_inverse add multiply product additive_identity sum \<equiv>
wenzelm@24128
  2036
  (\<forall>X. sum(additive_identity::'a,X,X)) &
wenzelm@24128
  2037
  (\<forall>X. sum(X::'a,additive_identity,X)) &
wenzelm@24128
  2038
  (\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
  2039
  (\<forall>X Y. sum(X::'a,Y,add(X::'a,Y))) &
wenzelm@24128
  2040
  (\<forall>X. sum(additive_inverse(X),X,additive_identity)) &
wenzelm@24128
  2041
  (\<forall>X. sum(X::'a,additive_inverse(X),additive_identity)) &
wenzelm@24128
  2042
  (\<forall>Y U Z X V W. sum(X::'a,Y,U) & sum(Y::'a,Z,V) & sum(U::'a,Z,W) --> sum(X::'a,V,W)) &
wenzelm@24128
  2043
  (\<forall>Y X V U Z W. sum(X::'a,Y,U) & sum(Y::'a,Z,V) & sum(X::'a,V,W) --> sum(U::'a,Z,W)) &
wenzelm@24128
  2044
  (\<forall>Y X Z. sum(X::'a,Y,Z) --> sum(Y::'a,X,Z)) &
wenzelm@24128
  2045
  (\<forall>Y U Z X V W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(U::'a,Z,W) --> product(X::'a,V,W)) &
wenzelm@24128
  2046
  (\<forall>Y X V U Z W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(X::'a,V,W) --> product(U::'a,Z,W)) &
wenzelm@24128
  2047
  (\<forall>Y Z X V3 V1 V2 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & product(X::'a,V3,V4) --> sum(V1::'a,V2,V4)) &
wenzelm@24128
  2048
  (\<forall>Y Z V1 V2 X V3 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & sum(V1::'a,V2,V4) --> product(X::'a,V3,V4)) &
wenzelm@24128
  2049
  (\<forall>Y Z V3 X V1 V2 V4. product(Y::'a,X,V1) & product(Z::'a,X,V2) & sum(Y::'a,Z,V3) & product(V3::'a,X,V4) --> sum(V1::'a,V2,V4)) &
wenzelm@24128
  2050
  (\<forall>Y Z V1 V2 V3 X V4. product(Y::'a,X,V1) & product(Z::'a,X,V2) & sum(Y::'a,Z,V3) & sum(V1::'a,V2,V4) --> product(V3::'a,X,V4)) &
wenzelm@24128
  2051
  (\<forall>X Y U V. sum(X::'a,Y,U) & sum(X::'a,Y,V) --> equal(U::'a,V)) &
wenzelm@24127
  2052
  (\<forall>X Y U V. product(X::'a,Y,U) & product(X::'a,Y,V) --> equal(U::'a,V))"
wenzelm@24127
  2053
wenzelm@24127
  2054
abbreviation "RNG001_0_eq product multiply sum add additive_inverse equal \<equiv>
wenzelm@24128
  2055
  (\<forall>X Y. equal(X::'a,Y) --> equal(additive_inverse(X),additive_inverse(Y))) &
wenzelm@24128
  2056
  (\<forall>X Y W. equal(X::'a,Y) --> equal(add(X::'a,W),add(Y::'a,W))) &
wenzelm@24128
  2057
  (\<forall>X W Y. equal(X::'a,Y) --> equal(add(W::'a,X),add(W::'a,Y))) &
wenzelm@24128
  2058
  (\<forall>X Y W Z. equal(X::'a,Y) & sum(X::'a,W,Z) --> sum(Y::'a,W,Z)) &
wenzelm@24128
  2059
  (\<forall>X W Y Z. equal(X::'a,Y) & sum(W::'a,X,Z) --> sum(W::'a,Y,Z)) &
wenzelm@24128
  2060
  (\<forall>X W Z Y. equal(X::'a,Y) & sum(W::'a,Z,X) --> sum(W::'a,Z,Y)) &
wenzelm@24128
  2061
  (\<forall>X Y W. equal(X::'a,Y) --> equal(multiply(X::'a,W),multiply(Y::'a,W))) &
wenzelm@24128
  2062
  (\<forall>X W Y. equal(X::'a,Y) --> equal(multiply(W::'a,X),multiply(W::'a,Y))) &
wenzelm@24128
  2063
  (\<forall>X Y W Z. equal(X::'a,Y) & product(X::'a,W,Z) --> product(Y::'a,W,Z)) &
wenzelm@24128
  2064
  (\<forall>X W Y Z. equal(X::'a,Y) & product(W::'a,X,Z) --> product(W::'a,Y,Z)) &
wenzelm@24127
  2065
  (\<forall>X W Z Y. equal(X::'a,Y) & product(W::'a,Z,X) --> product(W::'a,Z,Y))"
wenzelm@24127
  2066
wenzelm@24127
  2067
(*93620 inferences so far.  Searching to depth 24.  65.9 secs*)
wenzelm@24127
  2068
lemma RNG001_3:
wenzelm@24128
  2069
 "(\<forall>X. sum(additive_identity::'a,X,X)) &
wenzelm@24128
  2070
  (\<forall>X. sum(additive_inverse(X),X,additive_identity)) &
wenzelm@24128
  2071
  (\<forall>Y U Z X V W. sum(X::'a,Y,U) & sum(Y::'a,Z,V) & sum(U::'a,Z,W) --> sum(X::'a,V,W)) &
wenzelm@24128
  2072
  (\<forall>Y X V U Z W. sum(X::'a,Y,U) & sum(Y::'a,Z,V) & sum(X::'a,V,W) --> sum(U::'a,Z,W)) &
wenzelm@24128
  2073
  (\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
  2074
  (\<forall>Y Z X V3 V1 V2 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & product(X::'a,V3,V4) --> sum(V1::'a,V2,V4)) &
wenzelm@24128
  2075
  (\<forall>Y Z V1 V2 X V3 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & sum(V1::'a,V2,V4) --> product(X::'a,V3,V4)) &
wenzelm@24127
  2076
  (~product(a::'a,additive_identity,additive_identity)) --> False"
wenzelm@24127
  2077
  oops
wenzelm@24127
  2078
wenzelm@24127
  2079
abbreviation "RNG_other_ax multiply add equal product additive_identity additive_inverse sum \<equiv>
wenzelm@24128
  2080
  (\<forall>X. sum(X::'a,additive_inverse(X),additive_identity)) &
wenzelm@24128
  2081
  (\<forall>Y U Z X V W. sum(X::'a,Y,U) & sum(Y::'a,Z,V) & sum(U::'a,Z,W) --> sum(X::'a,V,W)) &
wenzelm@24128
  2082
  (\<forall>Y X V U Z W. sum(X::'a,Y,U) & sum(Y::'a,Z,V) & sum(X::'a,V,W) --> sum(U::'a,Z,W)) &
wenzelm@24128
  2083
  (\<forall>Y X Z. sum(X::'a,Y,Z) --> sum(Y::'a,X,Z)) &
wenzelm@24128
  2084
  (\<forall>Y U Z X V W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(U::'a,Z,W) --> product(X::'a,V,W)) &
wenzelm@24128
  2085
  (\<forall>Y X V U Z W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(X::'a,V,W) --> product(U::'a,Z,W)) &
wenzelm@24128
  2086
  (\<forall>Y Z X V3 V1 V2 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & product(X::'a,V3,V4) --> sum(V1::'a,V2,V4)) &
wenzelm@24128
  2087
  (\<forall>Y Z V1 V2 X V3 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & sum(V1::'a,V2,V4) --> product(X::'a,V3,V4)) &
wenzelm@24128
  2088
  (\<forall>Y Z V3 X V1 V2 V4. product(Y::'a,X,V1) & product(Z::'a,X,V2) & sum(Y::'a,Z,V3) & product(V3::'a,X,V4) --> sum(V1::'a,V2,V4)) &
wenzelm@24128
  2089
  (\<forall>Y Z V1 V2 V3 X V4. product(Y::'a,X,V1) & product(Z::'a,X,V2) & sum(Y::'a,Z,V3) & sum(V1::'a,V2,V4) --> product(V3::'a,X,V4)) &
wenzelm@24128
  2090
  (\<forall>X Y U V. sum(X::'a,Y,U) & sum(X::'a,Y,V) --> equal(U::'a,V)) &
wenzelm@24128
  2091
  (\<forall>X Y U V. product(X::'a,Y,U) & product(X::'a,Y,V) --> equal(U::'a,V)) &
wenzelm@24128
  2092
  (\<forall>X Y. equal(X::'a,Y) --> equal(additive_inverse(X),additive_inverse(Y))) &
wenzelm@24128
  2093
  (\<forall>X Y W. equal(X::'a,Y) --> equal(add(X::'a,W),add(Y::'a,W))) &
wenzelm@24128
  2094
  (\<forall>X Y W Z. equal(X::'a,Y) & sum(X::'a,W,Z) --> sum(Y::'a,W,Z)) &
wenzelm@24128
  2095
  (\<forall>X W Y Z. equal(X::'a,Y) & sum(W::'a,X,Z) --> sum(W::'a,Y,Z)) &
wenzelm@24128
  2096
  (\<forall>X W Z Y. equal(X::'a,Y) & sum(W::'a,Z,X) --> sum(W::'a,Z,Y)) &
wenzelm@24128
  2097
  (\<forall>X Y W. equal(X::'a,Y) --> equal(multiply(X::'a,W),multiply(Y::'a,W))) &
wenzelm@24128
  2098
  (\<forall>X Y W Z. equal(X::'a,Y) & product(X::'a,W,Z) --> product(Y::'a,W,Z)) &
wenzelm@24128
  2099
  (\<forall>X W Y Z. equal(X::'a,Y) & product(W::'a,X,Z) --> product(W::'a,Y,Z)) &
wenzelm@24127
  2100
  (\<forall>X W Z Y. equal(X::'a,Y) & product(W::'a,Z,X) --> product(W::'a,Z,Y))"
wenzelm@24127
  2101
wenzelm@24127
  2102
wenzelm@24127
  2103
(****************SLOW
wenzelm@24127
  2104
76385914 inferences so far.  Searching to depth 18
wenzelm@24127
  2105
No proof after 5 1/2 hours! (griffon)
wenzelm@24127
  2106
****************)
wenzelm@24128
  2107
lemma RNG001_5:
wenzelm@24128
  2108
  "EQU001_0_ax equal &
wenzelm@24128
  2109
  (\<forall>X. sum(additive_identity::'a,X,X)) &
wenzelm@24128
  2110
  (\<forall>X. sum(X::'a,additive_identity,X)) &
wenzelm@24128
  2111
  (\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
  2112
  (\<forall>X Y. sum(X::'a,Y,add(X::'a,Y))) &
wenzelm@24128
  2113
  (\<forall>X. sum(additive_inverse(X),X,additive_identity)) &
wenzelm@24128
  2114
  RNG_other_ax multiply add equal product additive_identity additive_inverse sum &
wenzelm@24128
  2115
  (~product(a::'a,additive_identity,additive_identity)) --> False"
wenzelm@24128
  2116
  oops
wenzelm@24127
  2117
wenzelm@24127
  2118
(*0 inferences so far.  Searching to depth 0.  0.5 secs*)
wenzelm@24127
  2119
lemma RNG011_5:
wenzelm@24128
  2120
  "EQU001_0_ax equal &
wenzelm@24128
  2121
  (\<forall>A B C. equal(A::'a,B) --> equal(add(A::'a,C),add(B::'a,C))) &
wenzelm@24128
  2122
  (\<forall>D F' E. equal(D::'a,E) --> equal(add(F'::'a,D),add(F'::'a,E))) &
wenzelm@24128
  2123
  (\<forall>G H. equal(G::'a,H) --> equal(additive_inverse(G),additive_inverse(H))) &
wenzelm@24128
  2124
  (\<forall>I' J K'. equal(I'::'a,J) --> equal(multiply(I'::'a,K'),multiply(J::'a,K'))) &
wenzelm@24128
  2125
  (\<forall>L N M. equal(L::'a,M) --> equal(multiply(N::'a,L),multiply(N::'a,M))) &
wenzelm@24128
  2126
  (\<forall>A B C D. equal(A::'a,B) --> equal(associator(A::'a,C,D),associator(B::'a,C,D))) &
wenzelm@24128
  2127
  (\<forall>E G F' H. equal(E::'a,F') --> equal(associator(G::'a,E,H),associator(G::'a,F',H))) &
wenzelm@24128
  2128
  (\<forall>I' K' L J. equal(I'::'a,J) --> equal(associator(K'::'a,L,I'),associator(K'::'a,L,J))) &
wenzelm@24128
  2129
  (\<forall>M N O'. equal(M::'a,N) --> equal(commutator(M::'a,O'),commutator(N::'a,O'))) &
wenzelm@24128
  2130
  (\<forall>P R Q. equal(P::'a,Q) --> equal(commutator(R::'a,P),commutator(R::'a,Q))) &
wenzelm@24128
  2131
  (\<forall>Y X. equal(add(X::'a,Y),add(Y::'a,X))) &
wenzelm@24128
  2132
  (\<forall>X Y Z. equal(add(add(X::'a,Y),Z),add(X::'a,add(Y::'a,Z)))) &
wenzelm@24128
  2133
  (\<forall>X. equal(add(X::'a,additive_identity),X)) &
wenzelm@24128
  2134
  (\<forall>X. equal(add(additive_identity::'a,X),X)) &
wenzelm@24128
  2135
  (\<forall>X. equal(add(X::'a,additive_inverse(X)),additive_identity)) &
wenzelm@24128
  2136
  (\<forall>X. equal(add(additive_inverse(X),X),additive_identity)) &
wenzelm@24128
  2137
  (equal(additive_inverse(additive_identity),additive_identity)) &
wenzelm@24128
  2138
  (\<forall>X Y. equal(add(X::'a,add(additive_inverse(X),Y)),Y)) &
wenzelm@24128
  2139
  (\<forall>X Y. equal(additive_inverse(add(X::'a,Y)),add(additive_inverse(X),additive_inverse(Y)))) &
wenzelm@24128
  2140
  (\<forall>X. equal(additive_inverse(additive_inverse(X)),X)) &
wenzelm@24128
  2141
  (\<forall>X. equal(multiply(X::'a,additive_identity),additive_identity)) &
wenzelm@24128
  2142
  (\<forall>X. equal(multiply(additive_identity::'a,X),additive_identity)) &
wenzelm@24128
  2143
  (\<forall>X Y. equal(multiply(additive_inverse(X),additive_inverse(Y)),multiply(X::'a,Y))) &
wenzelm@24128
  2144
  (\<forall>X Y. equal(multiply(X::'a,additive_inverse(Y)),additive_inverse(multiply(X::'a,Y)))) &
wenzelm@24128
  2145
  (\<forall>X Y. equal(multiply(additive_inverse(X),Y),additive_inverse(multiply(X::'a,Y)))) &
wenzelm@24128
  2146
  (\<forall>Y X Z. equal(multiply(X::'a,add(Y::'a,Z)),add(multiply(X::'a,Y),multiply(X::'a,Z)))) &
wenzelm@24128
  2147
  (\<forall>X Y Z. equal(multiply(add(X::'a,Y),Z),add(multiply(X::'a,Z),multiply(Y::'a,Z)))) &
wenzelm@24128
  2148
  (\<forall>X Y. equal(multiply(multiply(X::'a,Y),Y),multiply(X::'a,multiply(Y::'a,Y)))) &
wenzelm@24128
  2149
  (\<forall>X Y Z. equal(associator(X::'a,Y,Z),add(multiply(multiply(X::'a,Y),Z),additive_inverse(multiply(X::'a,multiply(Y::'a,Z)))))) &
wenzelm@24128
  2150
  (\<forall>X Y. equal(commutator(X::'a,Y),add(multiply(Y::'a,X),additive_inverse(multiply(X::'a,Y))))) &
wenzelm@24128
  2151
  (\<forall>X Y. equal(multiply(multiply(associator(X::'a,X,Y),X),associator(X::'a,X,Y)),additive_identity)) &
wenzelm@24127
  2152
  (~equal(multiply(multiply(associator(a::'a,a,b),a),associator(a::'a,a,b)),additive_identity)) --> False"
wenzelm@24127
  2153
  by meson
wenzelm@24127
  2154
wenzelm@24127
  2155
(*202 inferences so far.  Searching to depth 8.  0.6 secs*)
wenzelm@24127
  2156
lemma RNG023_6:
wenzelm@24128
  2157
  "EQU001_0_ax equal &
wenzelm@24128
  2158
  (\<forall>Y X. equal(add(X::'a,Y),add(Y::'a,X))) &
wenzelm@24128
  2159
  (\<forall>X Y Z. equal(add(X::'a,add(Y::'a,Z)),add(add(X::'a,Y),Z))) &
wenzelm@24128
  2160
  (\<forall>X. equal(add(additive_identity::'a,X),X)) &
wenzelm@24128
  2161
  (\<forall>X. equal(add(X::'a,additive_identity),X)) &
wenzelm@24128
  2162
  (\<forall>X. equal(multiply(additive_identity::'a,X),additive_identity)) &
wenzelm@24128
  2163
  (\<forall>X. equal(multiply(X::'a,additive_identity),additive_identity)) &
wenzelm@24128
  2164
  (\<forall>X. equal(add(additive_inverse(X),X),additive_identity)) &
wenzelm@24128
  2165
  (\<forall>X. equal(add(X::'a,additive_inverse(X)),additive_identity)) &
wenzelm@24128
  2166
  (\<forall>Y X Z. equal(multiply(X::'a,add(Y::'a,Z)),add(multiply(X::'a,Y),multiply(X::'a,Z)))) &
wenzelm@24128
  2167
  (\<forall>X Y Z. equal(multiply(add(X::'a,Y),Z),add(multiply(X::'a,Z),multiply(Y::'a,Z)))) &
wenzelm@24128
  2168
  (\<forall>X. equal(additive_inverse(additive_inverse(X)),X)) &
wenzelm@24128
  2169
  (\<forall>X Y. equal(multiply(multiply(X::'a,Y),Y),multiply(X::'a,multiply(Y::'a,Y)))) &
wenzelm@24128
  2170
  (\<forall>X Y. equal(multiply(multiply(X::'a,X),Y),multiply(X::'a,multiply(X::'a,Y)))) &
wenzelm@24128
  2171
  (\<forall>X Y Z. equal(associator(X::'a,Y,Z),add(multiply(multiply(X::'a,Y),Z),additive_inverse(multiply(X::'a,multiply(Y::'a,Z)))))) &
wenzelm@24128
  2172
  (\<forall>X Y. equal(commutator(X::'a,Y),add(multiply(Y::'a,X),additive_inverse(multiply(X::'a,Y))))) &
wenzelm@24128
  2173
  (\<forall>D E F'. equal(D::'a,E) --> equal(add(D::'a,F'),add(E::'a,F'))) &
wenzelm@24128
  2174
  (\<forall>G I' H. equal(G::'a,H) --> equal(add(I'::'a,G),add(I'::'a,H))) &
wenzelm@24128
  2175
  (\<forall>J K'. equal(J::'a,K') --> equal(additive_inverse(J),additive_inverse(K'))) &
wenzelm@24128
  2176
  (\<forall>L M N O'. equal(L::'a,M) --> equal(associator(L::'a,N,O'),associator(M::'a,N,O'))) &
wenzelm@24128
  2177
  (\<forall>P R Q S'. equal(P::'a,Q) --> equal(associator(R::'a,P,S'),associator(R::'a,Q,S'))) &
wenzelm@24128
  2178
  (\<forall>T' V W U. equal(T'::'a,U) --> equal(associator(V::'a,W,T'),associator(V::'a,W,U))) &
wenzelm@24128
  2179
  (\<forall>X Y Z. equal(X::'a,Y) --> equal(commutator(X::'a,Z),commutator(Y::'a,Z))) &
wenzelm@24128
  2180
  (\<forall>A1 C1 B1. equal(A1::'a,B1) --> equal(commutator(C1::'a,A1),commutator(C1::'a,B1))) &
wenzelm@24128
  2181
  (\<forall>D1 E1 F1. equal(D1::'a,E1) --> equal(multiply(D1::'a,F1),multiply(E1::'a,F1))) &
wenzelm@24128
  2182
  (\<forall>G1 I1 H1. equal(G1::'a,H1) --> equal(multiply(I1::'a,G1),multiply(I1::'a,H1))) &
wenzelm@24127
  2183
  (~equal(associator(x::'a,x,y),additive_identity)) --> False"
wenzelm@24127
  2184
  by meson
wenzelm@24127
  2185
wenzelm@24127
  2186
(*0 inferences so far.  Searching to depth 0.  0.6 secs*)
wenzelm@24127
  2187
lemma RNG028_2:
wenzelm@24128
  2188
  "EQU001_0_ax equal &
wenzelm@24128
  2189
  (\<forall>X. equal(add(additive_identity::'a,X),X)) &
wenzelm@24128
  2190
  (\<forall>X. equal(multiply(additive_identity::'a,X),additive_identity)) &
wenzelm@24128
  2191
  (\<forall>X. equal(multiply(X::'a,additive_identity),additive_identity)) &
wenzelm@24128
  2192
  (\<forall>X. equal(add(additive_inverse(X),X),additive_identity)) &
wenzelm@24128
  2193
  (\<forall>X Y. equal(additive_inverse(add(X::'a,Y)),add(additive_inverse(X),additive_inverse(Y)))) &
wenzelm@24128
  2194
  (\<forall>X. equal(additive_inverse(additive_inverse(X)),X)) &
wenzelm@24128
  2195
  (\<forall>Y X Z. equal(multiply(X::'a,add(Y::'a,Z)),add(multiply(X::'a,Y),multiply(X::'a,Z)))) &
wenzelm@24128
  2196
  (\<forall>X Y Z. equal(multiply(add(X::'a,Y),Z),add(multiply(X::'a,Z),multiply(Y::'a,Z)))) &
wenzelm@24128
  2197
  (\<forall>X Y. equal(multiply(multiply(X::'a,Y),Y),multiply(X::'a,multiply(Y::'a,Y)))) &
wenzelm@24128
  2198
  (\<forall>X Y. equal(multiply(multiply(X::'a,X),Y),multiply(X::'a,multiply(X::'a,Y)))) &
wenzelm@24128
  2199
  (\<forall>X Y. equal(multiply(additive_inverse(X),Y),additive_inverse(multiply(X::'a,Y)))) &
wenzelm@24128
  2200
  (\<forall>X Y. equal(multiply(X::'a,additive_inverse(Y)),additive_inverse(multiply(X::'a,Y)))) &
wenzelm@24128
  2201
  (equal(additive_inverse(additive_identity),additive_identity)) &
wenzelm@24128
  2202
  (\<forall>Y X. equal(add(X::'a,Y),add(Y::'a,X))) &
wenzelm@24128
  2203
  (\<forall>X Y Z. equal(add(X::'a,add(Y::'a,Z)),add(add(X::'a,Y),Z))) &
wenzelm@24128
  2204
  (\<forall>Z X Y. equal(add(X::'a,Z),add(Y::'a,Z)) --> equal(X::'a,Y)) &
wenzelm@24128
  2205
  (\<forall>Z X Y. equal(add(Z::'a,X),add(Z::'a,Y)) --> equal(X::'a,Y)) &
wenzelm@24128
  2206
  (\<forall>D E F'. equal(D::'a,E) --> equal(add(D::'a,F'),add(E::'a,F'))) &
wenzelm@24128
  2207
  (\<forall>G I' H. equal(G::'a,H) --> equal(add(I'::'a,G),add(I'::'a,H))) &
wenzelm@24128
  2208
  (\<forall>J K'. equal(J::'a,K') --> equal(additive_inverse(J),additive_inverse(K'))) &
wenzelm@24128
  2209
  (\<forall>D1 E1 F1. equal(D1::'a,E1) --> equal(multiply(D1::'a,F1),multiply(E1::'a,F1))) &
wenzelm@24128
  2210
  (\<forall>G1 I1 H1. equal(G1::'a,H1) --> equal(multiply(I1::'a,G1),multiply(I1::'a,H1))) &
wenzelm@24128
  2211
  (\<forall>X Y Z. equal(associator(X::'a,Y,Z),add(multiply(multiply(X::'a,Y),Z),additive_inverse(multiply(X::'a,multiply(Y::'a,Z)))))) &
wenzelm@24128
  2212
  (\<forall>L M N O'. equal(L::'a,M) --> equal(associator(L::'a,N,O'),associator(M::'a,N,O'))) &
wenzelm@24128
  2213
  (\<forall>P R Q S'. equal(P::'a,Q) --> equal(associator(R::'a,P,S'),associator(R::'a,Q,S'))) &
wenzelm@24128
  2214
  (\<forall>T' V W U. equal(T'::'a,U) --> equal(associator(V::'a,W,T'),associator(V::'a,W,U))) &
wenzelm@24128
  2215
  (\<forall>X Y. ~equal(multiply(multiply(Y::'a,X),Y),multiply(Y::'a,multiply(X::'a,Y)))) &
wenzelm@24128
  2216
  (\<forall>X Y Z. ~equal(associator(Y::'a,X,Z),additive_inverse(associator(X::'a,Y,Z)))) &
wenzelm@24128
  2217
  (\<forall>X Y Z. ~equal(associator(Z::'a,Y,X),additive_inverse(associator(X::'a,Y,Z)))) &
wenzelm@24127
  2218
  (~equal(multiply(multiply(cx::'a,multiply(cy::'a,cx)),cz),multiply(cx::'a,multiply(cy::'a,multiply(cx::'a,cz))))) --> False"
wenzelm@24127
  2219
  by meson
wenzelm@24127
  2220
wenzelm@24127
  2221
(*209 inferences so far.  Searching to depth 9.  1.2 secs*)
wenzelm@24127
  2222
lemma RNG038_2:
wenzelm@24128
  2223
  "(\<forall>X. sum(X::'a,additive_identity,X)) &
wenzelm@24128
  2224
  (\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24127
  2225
  (\<forall>X Y. sum(X::'a,Y,add(X::'a,Y))) &
wenzelm@24128
  2226
  RNG_other_ax multiply add equal product additive_identity additive_inverse sum &
wenzelm@24128
  2227
  (\<forall>X. product(additive_identity::'a,X,additive_identity)) &
wenzelm@24128
  2228
  (\<forall>X. product(X::'a,additive_identity,additive_identity)) &
wenzelm@24128
  2229
  (\<forall>X Y. equal(X::'a,additive_identity) --> product(X::'a,h(X::'a,Y),Y)) &
wenzelm@24128
  2230
  (product(a::'a,b,additive_identity)) &
wenzelm@24128
  2231
  (~equal(a::'a,additive_identity)) &
wenzelm@24127
  2232
  (~equal(b::'a,additive_identity)) --> False"
wenzelm@24127
  2233
  by meson
wenzelm@24127
  2234
wenzelm@24127
  2235
(*2660 inferences so far.  Searching to depth 10.  7.0 secs*)
wenzelm@24127
  2236
lemma RNG040_2:
wenzelm@24127
  2237
  "EQU001_0_ax equal &
wenzelm@24128
  2238
  RNG001_0_eq product multiply sum add additive_inverse equal &
wenzelm@24128
  2239
  (\<forall>X. sum(additive_identity::'a,X,X)) &
wenzelm@24128
  2240
  (\<forall>X. sum(X::'a,additive_identity,X)) &
wenzelm@24128
  2241
  (\<forall>X Y. product(X::'a,Y,multiply(X::'a,Y))) &
wenzelm@24128
  2242
  (\<forall>X Y. sum(X::'a,Y,add(X::'a,Y))) &
wenzelm@24128
  2243
  (\<forall>X. sum(additive_inverse(X),X,additive_identity)) &
wenzelm@24128
  2244
  (\<forall>X. sum(X::'a,additive_inverse(X),additive_identity)) &
wenzelm@24128
  2245
  (\<forall>Y U Z X V W. sum(X::'a,Y,U) & sum(Y::'a,Z,V) & sum(U::'a,Z,W) --> sum(X::'a,V,W)) &
wenzelm@24128
  2246
  (\<forall>Y X V U Z W. sum(X::'a,Y,U) & sum(Y::'a,Z,V) & sum(X::'a,V,W) --> sum(U::'a,Z,W)) &
wenzelm@24128
  2247
  (\<forall>Y X Z. sum(X::'a,Y,Z) --> sum(Y::'a,X,Z)) &
wenzelm@24128
  2248
  (\<forall>Y U Z X V W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(U::'a,Z,W) --> product(X::'a,V,W)) &
wenzelm@24128
  2249
  (\<forall>Y X V U Z W. product(X::'a,Y,U) & product(Y::'a,Z,V) & product(X::'a,V,W) --> product(U::'a,Z,W)) &
wenzelm@24128
  2250
  (\<forall>Y Z X V3 V1 V2 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & product(X::'a,V3,V4) --> sum(V1::'a,V2,V4)) &
wenzelm@24128
  2251
  (\<forall>Y Z V1 V2 X V3 V4. product(X::'a,Y,V1) & product(X::'a,Z,V2) & sum(Y::'a,Z,V3) & sum(V1::'a,V2,V4) --> product(X::'a,V3,V4)) &
wenzelm@24128
  2252
  (\<forall>X Y U V. sum(X::'a,Y,U) & sum(X::'a,Y,V) --> equal(U::'a,V)) &
wenzelm@24128
  2253
  (\<forall>X Y U V. product(X::'a,Y,U) & product(X::'a,Y,V) --> equal(U::'a,V)) &
wenzelm@24128
  2254
  (\<forall>A. product(A::'a,multiplicative_identity,A)) &
wenzelm@24128
  2255
  (\<forall>A. product(multiplicative_identity::'a,A,A)) &
wenzelm@24128
  2256
  (\<forall>A. product(A::'a,h(A),multiplicative_identity) | equal(A::'a,additive_identity)) &
wenzelm@24128
  2257
  (\<forall>A. product(h(A),A,multiplicative_identity) | equal(A::'a,additive_identity)) &
wenzelm@24128
  2258
  (\<forall>B A C. product(A::'a,B,C) --> product(B::'a,A,C)) &
wenzelm@24128
  2259
  (\<forall>A B. equal(A::'a,B) --> equal(h(A),h(B))) &
wenzelm@24128
  2260
  (sum(b::'a,c,d)) &
wenzelm@24128
  2261
  (product(d::'a,a,additive_identity)) &
wenzelm@24128
  2262
  (product(b::'a,a,l)) &
wenzelm@24128
  2263
  (product(c::'a,a,n)) &
wenzelm@24127
  2264
  (~sum(l::'a,n,additive_identity)) --> False"
wenzelm@24127
  2265
  by meson
wenzelm@24127
  2266
wenzelm@24127
  2267
(*8991 inferences so far.  Searching to depth 9.  22.2 secs*)
wenzelm@24127
  2268
lemma RNG041_1:
wenzelm@24127
  2269
  "EQU001_0_ax equal &
wenzelm@24127
  2270
  RNG001_0_ax equal additive_inverse add multiply product additive_identity sum &
wenzelm@24128
  2271
  RNG001_0_eq product multiply sum add additive_inverse equal &
wenzelm@24128
  2272
  (\<forall>A B. equal(A::'a,B) --> equal(h(A),h(B))) &
wenzelm@24128
  2273
  (\<forall>A. product(additive_identity::'a,A,additive_identity)) &
wenzelm@24128
  2274
  (\<forall>A. product(A::'a,additive_identity,additive_identity)) &
wenzelm@24128
  2275
  (\<forall>A. product(A::'a,multiplicative_identity,A)) &
wenzelm@24128
  2276
  (\<forall>A. product(multiplicative_identity::'a,A,A)) &
wenzelm@24128
  2277
  (\<forall>A. product(A::'a,h(A),multiplicative_identity) | equal(A::'a,additive_identity)) &
wenzelm@24128
  2278
  (\<forall>A. product(h(A),A,multiplicative_identity) | equal(A::'a,additive_identity)) &
wenzelm@24128
  2279
  (product(a::'a,b,additive_identity)) &
wenzelm@24128
  2280
  (~equal(a::'a,additive_identity)) &
wenzelm@24127
  2281
  (~equal(b::'a,additive_identity)) --> False"
wenzelm@24127
  2282
  oops
wenzelm@24127
  2283
wenzelm@24127
  2284
(*101319 inferences so far.  Searching to depth 14.  76.0 secs*)
wenzelm@24127
  2285
lemma ROB010_1:
wenzelm@24128
  2286
  "EQU001_0_ax equal &
wenzelm@24128
  2287
  (\<forall>Y X. equal(add(X::'a,Y),add(Y::'a,X))) &
wenzelm@24128
  2288
  (\<forall>X Y Z. equal(add(add(X::'a,Y),Z),add(X::'a,add(Y::'a,Z)))) &
wenzelm@24128
  2289
  (\<forall>Y X. equal(negate(add(negate(add(X::'a,Y)),negate(add(X::'a,negate(Y))))),X)) &
wenzelm@24128
  2290
  (\<forall>A B C. equal(A::'a,B) --> equal(add(A::'a,C),add(B::'a,C))) &
wenzelm@24128
  2291
  (\<forall>D F' E. equal(D::'a,E) --> equal(add(F'::'a,D),add(F'::'a,E))) &
wenzelm@24128
  2292
  (\<forall>G H. equal(G::'a,H) --> equal(negate(G),negate(H))) &
wenzelm@24128
  2293
  (equal(negate(add(a::'a,negate(b))),c)) &
wenzelm@24127
  2294
  (~equal(negate(add(c::'a,negate(add(b::'a,a)))),a)) --> False"
wenzelm@24127
  2295
  oops
wenzelm@24127
  2296
wenzelm@24127
  2297
wenzelm@24127
  2298
(*6933 inferences so far.  Searching to depth 12.  5.1 secs*)
wenzelm@24127
  2299
lemma ROB013_1:
wenzelm@24127
  2300
  "EQU001_0_ax equal &
wenzelm@24128
  2301
  (\<forall>Y X. equal(add(X::'a,Y),add(Y::'a,X))) &
wenzelm@24128
  2302
  (\<forall>X Y Z. equal(add(add(X::'a,Y),Z),add(X::'a,add(Y::'a,Z)))) &
wenzelm@24128
  2303
  (\<forall>Y X. equal(negate(add(negate(add(X::'a,Y)),negate(add(X::'a,negate(Y))))),X)) &
wenzelm@24128
  2304
  (\<forall>A B C. equal(A::'a,B) --> equal(add(A::'a,C),add(B::'a,C))) &
wenzelm@24128
  2305
  (\<forall>D F' E. equal(D::'a,E) --> equal(add(F'::'a,D),add(F'::'a,E))) &
wenzelm@24128
  2306
  (\<forall>G H. equal(G::'a,H) --> equal(negate(G),negate(H))) &
wenzelm@24128
  2307
  (equal(negate(add(a::'a,b)),c)) &
wenzelm@24127
  2308
  (~equal(negate(add(c::'a,negate(add(negate(b),a)))),a)) --> False"
wenzelm@24127
  2309
  by meson
wenzelm@24127
  2310
wenzelm@24127
  2311
(*6614 inferences so far.  Searching to depth 11.  20.4 secs*)
wenzelm@24127
  2312
lemma ROB016_1:
wenzelm@24127
  2313
  "EQU001_0_ax equal &
wenzelm@24128
  2314
  (\<forall>Y X. equal(add(X::'a,Y),add(Y::'a,X))) &
wenzelm@24128
  2315
  (\<forall>X Y Z. equal(add(add(X::'a,Y),Z),add(X::'a,add(Y::'a,Z)))) &
wenzelm@24128
  2316
  (\<forall>Y X. equal(negate(add(negate(add(X::'a,Y)),negate(add(X::'a,negate(Y))))),X)) &
wenzelm@24128
  2317
  (\<forall>A B C. equal(A::'a,B) --> equal(add(A::'a,C),add(B::'a,C))) &
wenzelm@24128
  2318
  (\<forall>D F' E. equal(D::'a,E) --> equal(add(F'::'a,D),add(F'::'a,E))) &
wenzelm@24128
  2319
  (\<forall>G H. equal(G::'a,H) --> equal(negate(G),negate(H))) &
wenzelm@24128
  2320
  (\<forall>J K' L. equal(J::'a,K') --> equal(multiply(J::'a,L),multiply(K'::'a,L))) &
wenzelm@24128
  2321
  (\<forall>M O' N. equal(M::'a,N) --> equal(multiply(O'::'a,M),multiply(O'::'a,N))) &
wenzelm@24128
  2322
  (\<forall>P Q. equal(P::'a,Q) --> equal(successor(P),successor(Q))) &
wenzelm@24128
  2323
  (\<forall>R S'. equal(R::'a,S') & positive_integer(R) --> positive_integer(S')) &
wenzelm@24128
  2324
  (\<forall>X. equal(multiply(One::'a,X),X)) &
wenzelm@24128
  2325
  (\<forall>V X. positive_integer(X) --> equal(multiply(successor(V),X),add(X::'a,multiply(V::'a,X)))) &
wenzelm@24128
  2326
  (positive_integer(One)) &
wenzelm@24128
  2327
  (\<forall>X. positive_integer(X) --> positive_integer(successor(X))) &
wenzelm@24128
  2328
  (equal(negate(add(d::'a,e)),negate(e))) &
wenzelm@24128
  2329
  (positive_integer(k)) &
wenzelm@24128
  2330
  (\<forall>Vk X Y. equal(negate(add(negate(Y),negate(add(X::'a,negate(Y))))),X) & positive_integer(Vk) --> equal(negate(add(Y::'a,multiply(Vk::'a,add(X::'a,negate(add(X::'a,negate(Y))))))),negate(Y))) &
wenzelm@24127
  2331
  (~equal(negate(add(e::'a,multiply(k::'a,add(d::'a,negate(add(d::'a,negate(e))))))),negate(e))) --> False"
wenzelm@24127
  2332
  oops
wenzelm@24127
  2333
wenzelm@24127
  2334
(*14077 inferences so far.  Searching to depth 11.  32.8 secs*)
wenzelm@24127
  2335
lemma ROB021_1:
wenzelm@24127
  2336
  "EQU001_0_ax equal &
wenzelm@24128
  2337
  (\<forall>Y X. equal(add(X::'a,Y),add(Y::'a,X))) &
wenzelm@24128
  2338
  (\<forall>X Y Z. equal(add(add(X::'a,Y),Z),add(X::'a,add(Y::'a,Z)))) &
wenzelm@24128
  2339
  (\<forall>Y X. equal(negate(add(negate(add(X::'a,Y)),negate(add(X::'a,negate(Y))))),X)) &
wenzelm@24128
  2340
  (\<forall>A B C. equal(A::'a,B) --> equal(add(A::'a,C),add(B::'a,C))) &
wenzelm@24128
  2341
  (\<forall>D F' E. equal(D::'a,E) --> equal(add(F'::'a,D),add(F'::'a,E))) &
wenzelm@24128
  2342
  (\<forall>G H. equal(G::'a,H) --> equal(negate(G),negate(H))) &
wenzelm@24128
  2343
  (\<forall>X Y. equal(negate(X),negate(Y)) --> equal(X::'a,Y)) &
wenzelm@24127
  2344
  (~equal(add(negate(add(a::'a,negate(b))),negate(add(negate(a),negate(b)))),b)) --> False"
wenzelm@24127
  2345
  oops
wenzelm@24127
  2346
wenzelm@24127
  2347
(*35532 inferences so far.  Searching to depth 19.  54.3 secs*)
wenzelm@24127
  2348
lemma SET005_1:
wenzelm@24128
  2349
 "(\<forall>Subset Element Superset. member(Element::'a,Subset) & subset(Subset::'a,Superset) --> member(Element::'a,Superset)) &
wenzelm@24128
  2350
  (\<forall>Superset Subset. subset(Subset::'a,Superset) | member(member_of_1_not_of_2(Subset::'a,Superset),Subset)) &
wenzelm@24128
  2351
  (\<forall>Subset Superset. member(member_of_1_not_of_2(Subset::'a,Superset),Superset) --> subset(Subset::'a,Superset)) &
wenzelm@24128
  2352
  (\<forall>Subset Superset. equal_sets(Subset::'a,Superset) --> subset(Subset::'a,Superset)) &
wenzelm@24128
  2353
  (\<forall>Subset Superset. equal_sets(Superset::'a,Subset) --> subset(Subset::'a,Superset)) &
wenzelm@24128
  2354
  (\<forall>Set2 Set1. subset(Set1::'a,Set2) & subset(Set2::'a,Set1) --> equal_sets(Set2::'a,Set1)) &
wenzelm@24128
  2355
  (\<forall>Set2 Intersection Element Set1. intersection(Set1::'a,Set2,Intersection) & member(Element::'a,Intersection) --> member(Element::'a,Set1)) &
wenzelm@24128
  2356
  (\<forall>Set1 Intersection Element Set2. intersection(Set1::'a,Set2,Intersection) & member(Element::'a,Intersection) --> member(Element::'a,Set2)) &
wenzelm@24128
  2357
  (\<forall>Set2 Set1 Element Intersection. intersection(Set1::'a,Set2,Intersection) & member(Element::'a,Set2) & member(Element::'a,Set1) --> member(Element::'a,Intersection)) &
wenzelm@24128
  2358
  (\<forall>Set2 Intersection Set1. member(h(Set1::'a,Set2,Intersection),Intersection) | intersection(Set1::'a,Set2,Intersection) | member(h(Set1::'a,Set2,Intersection),Set1)) &
wenzelm@24128
  2359
  (\<forall>Set1 Intersection Set2. member(h(Set1::'a,Set2,Intersection),Intersection) | intersection(Set1::'a,Set2,Intersection) | member(h(Set1::'a,Set2,Intersection),Set2)) &
wenzelm@24128
  2360
  (\<forall>Set1 Set2 Intersection. member(h(Set1::'a,Set2,Intersection),Intersection) & member(h(Set1::'a,Set2,Intersection),Set2) & member(h(Set1::'a,Set2,Intersection),Set1) --> intersection(Set1::'a,Set2,Intersection)) &
wenzelm@24128
  2361
  (intersection(a::'a,b,aIb)) &
wenzelm@24128
  2362
  (intersection(b::'a,c,bIc)) &
wenzelm@24128
  2363
  (intersection(a::'a,bIc,aIbIc)) &
wenzelm@24127
  2364
  (~intersection(aIb::'a,c,aIbIc)) --> False"
wenzelm@24127
  2365
  oops
wenzelm@24127
  2366
wenzelm@24127
  2367
wenzelm@24127
  2368
(*6450 inferences so far.  Searching to depth 14.  4.2 secs*)
wenzelm@24127
  2369
lemma SET009_1:
wenzelm@24128
  2370
  "(\<forall>Subset Element Superset. member(Element::'a,Subset) & ssubset(Subset::'a,Superset) --> member(Element::'a,Superset)) &
wenzelm@24128
  2371
  (\<forall>Superset Subset. ssubset(Subset::'a,Superset) | member(member_of_1_not_of_2(Subset::'a,Superset),Subset)) &
wenzelm@24128
  2372
  (\<forall>Subset Superset. member(member_of_1_not_of_2(Subset::'a,Superset),Superset) --> ssubset(Subset::'a,Superset)) &
wenzelm@24128
  2373
  (\<forall>Subset Superset. equal_sets(Subset::'a,Superset) --> ssubset(Subset::'a,Superset)) &
wenzelm@24128
  2374
  (\<forall>Subset Superset. equal_sets(Superset::'a,Subset) --> ssubset(Subset::'a,Superset)) &
wenzelm@24128
  2375
  (\<forall>Set2 Set1. ssubset(Set1::'a,Set2) & ssubset(Set2::'a,Set1) --> equal_sets(Set2::'a,Set1)) &
wenzelm@24128
  2376
  (\<forall>Set2 Difference Element Set1. difference(Set1::'a,Set2,Difference) & member(Element::'a,Difference) --> member(Element::'a,Set1)) &
wenzelm@24128
  2377
  (\<forall>Element A_set Set1 Set2. ~(member(Element::'a,Set1) & member(Element::'a,Set2) & difference(A_set::'a,Set1,Set2))) &
wenzelm@24128
  2378
  (\<forall>Set1 Difference Element Set2. member(Element::'a,Set1) & difference(Set1::'a,Set2,Difference) --> member(Element::'a,Difference) | member(Element::'a,Set2)) &
wenzelm@24128
  2379
  (\<forall>Set1 Set2 Difference. difference(Set1::'a,Set2,Difference) | member(k(Set1::'a,Set2,Difference),Set1) | member(k(Set1::'a,Set2,Difference),Difference)) &
wenzelm@24128
  2380
  (\<forall>Set1 Set2 Difference. member(k(Set1::'a,Set2,Difference),Set2) --> member(k(Set1::'a,Set2,Difference),Difference) | difference(Set1::'a,Set2,Difference)) &
wenzelm@24128
  2381
  (\<forall>Set1 Set2 Difference. member(k(Set1::'a,Set2,Difference),Difference) & member(k(Set1::'a,Set2,Difference),Set1) --> member(k(Set1::'a,Set2,Difference),Set2) | difference(Set1::'a,Set2,Difference)) &
wenzelm@24128
  2382
  (ssubset(d::'a,a)) &
wenzelm@24128
  2383
  (difference(b::'a,a,bDa)) &
wenzelm@24128
  2384
  (difference(b::'a,d,bDd)) &
wenzelm@24127
  2385
  (~ssubset(bDa::'a,bDd)) --> False"
wenzelm@24127
  2386
  by meson
wenzelm@24127
  2387
wenzelm@24127
  2388
(*34726 inferences so far.  Searching to depth 6.  2420 secs: 40 mins! BIG*)
wenzelm@24127
  2389
lemma SET025_4:
wenzelm@24128
  2390
  "EQU001_0_ax equal &
wenzelm@24128
  2391
  (\<forall>Y X. member(X::'a,Y) --> little_set(X)) &
wenzelm@24128
  2392
  (\<forall>X Y. little_set(f1(X::'a,Y)) | equal(X::'a,Y)) &
wenzelm@24128
  2393
  (\<forall>X Y. member(f1(X::'a,Y),X) | member(f1(X::'a,Y),Y) | equal(X::'a,Y)) &
wenzelm@24128
  2394
  (\<forall>X Y. member(f1(X::'a,Y),X) & member(f1(X::'a,Y),Y) --> equal(X::'a,Y)) &
wenzelm@24128
  2395
  (\<forall>X U Y. member(U::'a,non_ordered_pair(X::'a,Y)) --> equal(U::'a,X) | equal(U::'a,Y)) &
wenzelm@24128
  2396
  (\<forall>Y U X. little_set(U) & equal(U::'a,X) --> member(U::'a,non_ordered_pair(X::'a,Y))) &
wenzelm@24128
  2397
  (\<forall>X U Y. little_set(U) & equal(U::'a,Y) --> member(U::'a,non_ordered_pair(X::'a,Y))) &
wenzelm@24128
  2398
  (\<forall>X Y. little_set(non_ordered_pair(X::'a,Y))) &
wenzelm@24128
  2399
  (\<forall>X. equal(singleton_set(X),non_ordered_pair(X::'a,X))) &
wenzelm@24128
  2400
  (\<forall>X Y. equal(ordered_pair(X::'a,Y),non_ordered_pair(singleton_set(X),non_ordered_pair(X::'a,Y)))) &
wenzelm@24128
  2401
  (\<forall>X. ordered_pair_predicate(X) --> little_set(f2(X))) &
wenzelm@24128
  2402
  (\<forall>X. ordered_pair_predicate(X) --> little_set(f3(X))) &
wenzelm@24128
  2403
  (\<forall>X. ordered_pair_predicate(X) --> equal(X::'a,ordered_pair(f2(X),f3(X)))) &
wenzelm@24128
  2404
  (\<forall>X Y Z. little_set(Y) & little_set(Z) & equal(X::'a,ordered_pair(Y::'a,Z)) --> ordered_pair_predicate(X)) &
wenzelm@24128
  2405
  (\<forall>Z X. member(Z::'a,first(X)) --> little_set(f4(Z::'a,X))) &
wenzelm@24128
  2406
  (\<forall>Z X. member(Z::'a,first(X)) --> little_set(f5(Z::'a,X))) &
wenzelm@24128
  2407
  (\<forall>Z X. member(Z::'a,first(X)) --> equal(X::'a,ordered_pair(f4(Z::'a,X),f5(Z::'a,X)))) &
wenzelm@24128
  2408
  (\<forall>Z X. member(Z::'a,first(X)) --> member(Z::'a,f4(Z::'a,X))) &
wenzelm@24128
  2409
  (\<forall>X V Z U. little_set(U) & little_set(V) & equal(X::'a,ordered_pair(U::'a,V)) & member(Z::'a,U) --> member(Z::'a,first(X))) &
wenzelm@24128
  2410
  (\<forall>Z X. member(Z::'a,second(X)) --> little_set(f6(Z::'a,X))) &
wenzelm@24128
  2411
  (\<forall>Z X. member(Z::'a,second(X)) --> little_set(f7(Z::'a,X))) &
wenzelm@24128
  2412
  (\<forall>Z X. member(Z::'a,second(X)) --> equal(X::'a,ordered_pair(f6(Z::'a,X),f7(Z::'a,X)))) &
wenzelm@24128
  2413
  (\<forall>Z X. member(Z::'a,second(X)) --> member(Z::'a,f7(Z::'a,X))) &
wenzelm@24128
  2414
  (\<forall>X U Z V. little_set(U) & little_set(V) & equal(X::'a,ordered_pair(U::'a,V)) & member(Z::'a,V) --> member(Z::'a,second(X))) &
wenzelm@24128
  2415
  (\<forall>Z. member(Z::'a,estin) --> ordered_pair_predicate(Z)) &
wenzelm@24128
  2416
  (\<forall>Z. member(Z::'a,estin) --> member(first(Z),second(Z))) &
wenzelm@24128
  2417
  (\<forall>Z. little_set(Z) & ordered_pair_predicate(Z) & member(first(Z),second(Z)) --> member(Z::'a,estin)) &
wenzelm@24128
  2418
  (\<forall>Y Z X. member(Z::'a,intersection(X::'a,Y)) --> member(Z::'a,X)) &
wenzelm@24128
  2419
  (\<forall>X Z Y. member(Z::'a,intersection(X::'a,Y)) --> member(Z::'a,Y)) &
wenzelm@24128
  2420
  (\<forall>X Z Y. member(Z::'a,X) & member(Z::'a,Y) --> member(Z::'a,intersection(X::'a,Y))) &
wenzelm@24128
  2421
  (\<forall>Z X. ~(member(Z::'a,complement(X)) & member(Z::'a,X))) &
wenzelm@24128
  2422
  (\<forall>Z X. little_set(Z) --> member(Z::'a,complement(X)) | member(Z::'a,X)) &
wenzelm@24128
  2423
  (\<forall>X Y. equal(union(X::'a,Y),complement(intersection(complement(X),complement(Y))))) &
wenzelm@24128
  2424
  (\<forall>Z X. member(Z::'a,domain_of(X)) --> ordered_pair_predicate(f8(Z::'a,X))) &
wenzelm@24128
  2425
  (\<forall>Z X. member(Z::'a,domain_of(X)) --> member(f8(Z::'a,X),X)) &
wenzelm@24128
  2426
  (\<forall>Z X. member(Z::'a,domain_of(X)) --> equal(Z::'a,first(f8(Z::'a,X)))) &
wenzelm@24128
  2427
  (\<forall>X Z Xp. little_set(Z) & ordered_pair_predicate(Xp) & member(Xp::'a,X) & equal(Z::'a,first(Xp)) --> member(Z::'a,domain_of(X))) &
wenzelm@24128
  2428
  (\<forall>X Y Z. member(Z::'a,cross_product(X::'a,Y)) --> ordered_pair_predicate(Z)) &
wenzelm@24128
  2429
  (\<forall>Y Z X. member(Z::'a,cross_product(X::'a,Y)) --> member(first(Z),X)) &
wenzelm@24128
  2430
  (\<forall>X Z Y. member(Z::'a,cross_product(X::'a,Y)) --> member(second(Z),Y)) &
wenzelm@24128
  2431
  (\<forall>X Z Y. little_set(Z) & ordered_pair_predicate(Z) & member(first(Z),X) & member(second(Z),Y) --> member(Z::'a,cross_product(X::'a,Y))) &
wenzelm@24128
  2432
  (\<forall>X Z. member(Z::'a,inv1 X) --> ordered_pair_predicate(Z)) &
wenzelm@24128
  2433
  (\<forall>Z X. member(Z::'a,inv1 X) --> member(ordered_pair(second(Z),first(Z)),X)) &
wenzelm@24128
  2434
  (\<forall>Z X. little_set(Z) & ordered_pair_predicate(Z) & member(ordered_pair(second(Z),first(Z)),X) --> member(Z::'a,inv1 X)) &
wenzelm@24128
  2435
  (\<forall>Z X. member(Z::'a,rot_right(X)) --> little_set(f9(Z::'a,X))) &
wenzelm@24128
  2436
  (\<forall>Z X. member(Z::'a,rot_right(X)) --> little_set(f10(Z::'a,X))) &
wenzelm@24128
  2437
  (\<forall>Z X. member(Z::'a,rot_right(X)) --> little_set(f11(Z::'a,X))) &
wenzelm@24128
  2438
  (\<forall>Z X. member(Z::'a,rot_right(X)) --> equal(Z::'a,ordered_pair(f9(Z::'a,X),ordered_pair(f10(Z::'a,X),f11(Z::'a,X))))) &
wenzelm@24128
  2439
  (\<forall>Z X. member(Z::'a,rot_right(X)) --> member(ordered_pair(f10(Z::'a,X),ordered_pair(f11(Z::'a,X),f9(Z::'a,X))),X)) &
wenzelm@24128
  2440
  (\<forall>Z V W U X. little_set(Z) & little_set(U) & little_set(V) & little_set(W) & equal(Z::'a,ordered_pair(U::'a,ordered_pair(V::'a,W))) & member(ordered_pair(V::'a,ordered_pair(W::'a,U)),X) --> member(Z::'a,rot_right(X))) &
wenzelm@24128
  2441
  (\<forall>Z X. member(Z::'a,flip_range_of(X)) --> little_set(f12(Z::'a,X))) &
wenzelm@24128
  2442
  (\<forall>Z X. member(Z::'a,flip_range_of(X)) --> little_set(f13(Z::'a,X))) &
wenzelm@24128
  2443
  (\<forall>Z X. member(Z::'a,flip_range_of(X)) --> little_set(f14(Z::'a,X))) &
wenzelm@24128
  2444
  (\<forall>Z X. member(Z::'a,flip_range_of(X)) --> equal(Z::'a,ordered_pair(f12(Z::'a,X),ordered_pair(f13(Z::'a,X),f14(Z::'a,X))))) &
wenzelm@24128
  2445
  (\<forall>Z X. member(Z::'a,flip_range_of(X)) --> member(ordered_pair(f12(Z::'a,X),ordered_pair(f14(Z::'a,X),f13(Z::'a,X))),X)) &
wenzelm@24128
  2446
  (\<forall>Z U W V X. little_set(Z) & little_set(U) & little_set(V) & little_set(W) & equal(Z::'a,ordered_pair(U::'a,ordered_pair(V::'a,W))) & member(ordered_pair(U::'a,ordered_pair(W::'a,V)),X) --> member(Z::'a,flip_range_of(X))) &
wenzelm@24128
  2447
  (\<forall>X. equal(successor(X),union(X::'a,singleton_set(X)))) &
wenzelm@24128
  2448
  (\<forall>Z. ~member(Z::'a,empty_set)) &
wenzelm@24128
  2449
  (\<forall>Z. little_set(Z) --> member(Z::'a,universal_set)) &
wenzelm@24128
  2450
  (little_set(infinity)) &
wenzelm@24128
  2451
  (member(empty_set::'a,infinity)) &
wenzelm@24128
  2452
  (\<forall>X. member(X::'a,infinity) --> member(successor(X),infinity)) &
wenzelm@24128
  2453
  (\<forall>Z X. member(Z::'a,sigma(X)) --> member(f16(Z::'a,X),X)) &
wenzelm@24128
  2454
  (\<forall>Z X. member(Z::'a,sigma(X)) --> member(Z::'a,f16(Z::'a,X))) &
wenzelm@24128
  2455
  (\<forall>X Z Y. member(Y::'a,X) & member(Z::'a,Y) --> member(Z::'a,sigma(X))) &
wenzelm@24128
  2456
  (\<forall>U. little_set(U) --> little_set(sigma(U))) &
wenzelm@24128
  2457
  (\<forall>X U Y. ssubset(X::'a,Y) & member(U::'a,X) --> member(U::'a,Y)) &
wenzelm@24128
  2458
  (\<forall>Y X. ssubset(X::'a,Y) | member(f17(X::'a,Y),X)) &
wenzelm@24128
  2459
  (\<forall>X Y. member(f17(X::'a,Y),Y) --> ssubset(X::'a,Y)) &
wenzelm@24128
  2460
  (\<forall>X Y. proper_subset(X::'a,Y) --> ssubset(X::'a,Y)) &
wenzelm@24128
  2461
  (\<forall>X Y. ~(proper_subset(X::'a,Y) & equal(X::'a,Y))) &
wenzelm@24128
  2462
  (\<forall>X Y. ssubset(X::'a,Y) --> proper_subset(X::'a,Y) | equal(X::'a,Y)) &
wenzelm@24128
  2463
  (\<forall>Z X. member(Z::'a,powerset(X)) --> ssubset(Z::'a,X)) &
wenzelm@24128
  2464
  (\<forall>Z X. little_set(Z) & ssubset(Z::'a,X) --> member(Z::'a,powerset(X))) &
wenzelm@24128
  2465
  (\<forall>U. little_set(U) --> little_set(powerset(U))) &
wenzelm@24128
  2466
  (\<forall>Z X. relation(Z) & member(X::'a,Z) --> ordered_pair_predicate(X)) &
wenzelm@24128
  2467
  (\<forall>Z. relation(Z) | member(f18(Z),Z)) &
wenzelm@24128
  2468
  (\<forall>Z. ordered_pair_predicate(f18(Z)) --> relation(Z)) &
wenzelm@24128
  2469
  (\<forall>U X V W. single_valued_set(X) & little_set(U) & little_set(V) & little_set(W) & member(ordered_pair(U::'a,V),X) & member(ordered_pair(U::'a,W),X) --> equal(V::'a,W)) &
wenzelm@24128
  2470
  (\<forall>X. single_valued_set(X) | little_set(f19(X))) &
wenzelm@24128
  2471
  (\<forall>X. single_valued_set(X) | little_set(f20(X))) &
wenzelm@24128
  2472
  (\<forall>X. single_valued_set(X) | little_set(f21(X))) &
wenzelm@24128
  2473
  (\<forall>X. single_valued_set(X) | member(ordered_pair(f19(X),f20(X)),X)) &
wenzelm@24128
  2474
  (\<forall>X. single_valued_set(X) | member(ordered_pair(f19(X),f21(X)),X)) &
wenzelm@24128
  2475
  (\<forall>X. equal(f20(X),f21(X)) --> single_valued_set(X)) &
wenzelm@24128
  2476
  (\<forall>Xf. function(Xf) --> relation(Xf)) &
wenzelm@24128
  2477
  (\<forall>Xf. function(Xf) --> single_valued_set(Xf)) &
wenzelm@24128
  2478
  (\<forall>Xf. relation(Xf) & single_valued_set(Xf) --> function(Xf)) &
wenzelm@24128
  2479
  (\<forall>Z X Xf. member(Z::'a,image'(X::'a,Xf)) --> ordered_pair_predicate(f22(Z::'a,X,Xf))) &
wenzelm@24128
  2480
  (\<forall>Z X Xf. member(Z::'a,image'(X::'a,Xf)) --> member(f22(Z::'a,X,Xf),Xf)) &
wenzelm@24128
  2481
  (\<forall>Z Xf X. member(Z::'a,image'(X::'a,Xf)) --> member(first(f22(Z::'a,X,Xf)),X)) &
wenzelm@24128
  2482
  (\<forall>X Xf Z. member(Z::'a,image'(X::'a,Xf)) --> equal(second(f22(Z::'a,X,Xf)),Z)) &
wenzelm@24128
  2483
  (\<forall>Xf X Y Z. little_set(Z) & ordered_pair_predicate(Y) & member(Y::'a,Xf) & member(first(Y),X) & equal(second(Y),Z) --> member(Z::'a,image'(X::'a,Xf))) &
wenzelm@24128
  2484
  (\<forall>X Xf. little_set(X) & function(Xf) --> little_set(image'(X::'a,Xf))) &
wenzelm@24128
  2485
  (\<forall>X U Y. ~(disjoint(X::'a,Y) & member(U::'a,X) & member(U::'a,Y))) &
wenzelm@24128
  2486
  (\<forall>Y X. disjoint(X::'a,Y) | member(f23(X::'a,Y),X)) &
wenzelm@24128
  2487
  (\<forall>X Y. disjoint(X::'a,Y) | member(f23(X::'a,Y),Y)) &
wenzelm@24128
  2488
  (\<forall>X. equal(X::'a,empty_set) | member(f24(X),X)) &
wenzelm@24128
  2489
  (\<forall>X. equal(X::'a,empty_set) | disjoint(f24(X),X)) &
wenzelm@24128
  2490
  (function(f25)) &
wenzelm@24128