1open HolKernel Feedback testutils Parse boolLib mesonLib
2
3local open pairTheory in end
4
5val op$ = Portable.$
6
7fun M nm tm =
8  let
9    val _ = tprint ("meson "^nm)
10  in
11    require is_result TAC_PROOF (([], tm), MESON_TAC[])
12  end
13
14fun Mfail nm tm =
15  let
16    val _ = tprint ("meson (expected to fail) "^nm)
17  in
18    require (check_HOL_ERR (fn _ => true)) TAC_PROOF (([], tm), MESON_TAC [])
19  end
20
21
22(*---------------------------------------------------------------------------
23 * Some of the big formulas are too big for guessing tyvars for. A workaround
24 * is to give explicit constraints.
25 *---------------------------------------------------------------------------*)
26
27val _ = Globals.guessing_tyvars := false;
28val _ = Parse.current_backend := PPBackEnd.raw_terminal
29val _ = temp_remove_termtok {term_name = "O", tok = "O"};
30val _ = app (ignore o hide) ["irreflexive", "transitive", "one"];
31
32(* -------------------------------------------------------------------------
33 * Trivia
34 * ------------------------------------------------------------------------- *)
35
36(* M90: OK *)
37M "T" ���T���;
38
39
40(* M90: OK *)
41M "P \\/ ~P" ���P \/ ~P���;
42
43
44(* -------------------------------------------------------------------------
45 * Basic existential stuff (bug reported by Michael Norrish)
46 * ------------------------------------------------------------------------- *)
47
48val _ = new_type("num", 0)
49val _ = new_constant("n0", ``:num``)
50val _ = new_constant("n1", ``:num``)
51val _ = new_constant("n2", ``:num``)
52val _ = new_constant("n3", ``:num``);
53
54Mfail "Norrish existential" ���!se:num. ?n:num. f n se se ==> ?m:num. f m n0 n0���;
55
56(* -------------------------------------------------------------------------
57 * P50
58 * ------------------------------------------------------------------------- *)
59
60val P50 = ���(!x:'a. F0 a x \/ !y. F0 x y) ==> ?x. !y. F0 x y���;
61M "P50" P50;
62
63(* -------------------------------------------------------------------------
64 * Example from Eric Borm (see long info-hol discussion, September 93).
65 * ------------------------------------------------------------------------- *)
66
67val ERIC = Term
68`!P Q R. !x:'a. ?v w. !y (z:'b).
69          P x /\ Q y ==> (P v \/ R w) /\ (R z ==> Q v)`;
70
71M "ERIC" ERIC;
72
73
74
75(* -------------------------------------------------------------------------
76 * The classic Los puzzle. (Clausal version MSC006-1 in the TPTP library.)
77 * Note: this is actually in the decidable "AE" subset, though that doesn't
78 * yield a very efficient proof.
79 * ------------------------------------------------------------------------- *)
80
81val LOS = ���(!(x:'a) (y:'a) z. P x y /\ P y z ==> P x z) /\
82   (!x (y:'a) z. Q x y /\ Q y z ==> Q x z) /\
83   (!x y. P x y ==> P y x) /\
84   (!x y. P x y \/ Q x y)
85   ==> (!x y. P x y) \/ (!x y. Q x y)���;
86
87M "LOS" LOS;;
88
89
90(* -------------------------------------------------------------------------
91 * An equality-free version of the Agatha puzzle.
92 * ------------------------------------------------------------------------- *)
93
94val P55 =
95���lives(agatha) /\ lives(butler) /\ lives(charles) /\
96   (killed(agatha,agatha) \/ killed(butler,agatha) \/
97    killed(charles,agatha)) /\
98   (!x y. killed(x,y) ==> hates(x,y) /\ ~richer(x,y)) /\
99   (!x. hates(agatha,x) ==> ~hates(charles,x)) /\
100   (hates(agatha,agatha) /\ hates(agatha,charles)) /\
101   (!x. lives(x) /\ ~richer(x,agatha) ==> hates(butler,x)) /\
102   (!x. hates(agatha,x) ==> hates(butler,x)) /\
103   (!x. ~hates(x,agatha) \/ ~hates(x,butler) \/ ~hates(x,charles)) ==>
104   (?x:'person. killed(x,agatha))���;
105
106M "P55" P55;
107
108
109(* -------------------------------------------------------------------------
110 * The Steamroller.
111 * ------------------------------------------------------------------------- *)
112
113val P47 = ���((!x:'a. P1 x ==> P0 x) /\ (?x. P1 x)) /\
114   ((!x. P2 x ==> P0 x) /\ (?x. P2 x)) /\
115   ((!x. P3 x ==> P0 x) /\ (?x. P3 x)) /\
116   ((!x. P4 x ==> P0 x) /\ (?x. P4 x)) /\
117   ((!x. P5 x ==> P0 x) /\ (?x. P5 x)) /\
118   ((?x. Q1 x) /\ (!x. Q1 x ==> Q0 x)) /\
119   (!x. P0 x ==> (!y. Q0 y ==> R x y) \/
120    (((!y. P0 y /\ S0 y x /\ ?z. Q0 z /\ R y z) ==> R x y))) /\
121   (!x y. P3 y /\ (P5 x \/ P4 x) ==> S0 x y) /\
122   (!x y. P3 x /\ P2 y ==> S0 x y) /\
123   (!x y. P2 x /\ P1 y ==> S0 x y) /\
124   (!x y. P1 x /\ (P2 y \/ Q1 y) ==> ~(R x y)) /\
125   (!x y. P3 x /\ P4 y ==> R x y) /\
126   (!x y. P3 x /\ P5 y ==> ~(R x y)) /\
127   (!x. (P4 x \/ P5 x) ==> ?y. Q0 y /\ R x y)
128   ==> ?x y. P0 x /\ P0 y /\ ?z. Q1 z /\ R y z /\ R x y���;
129
130Mfail "P47" P47;
131
132
133(* -------------------------------------------------------------------------
134 * Now problems with equality.
135 * ------------------------------------------------------------------------- *)
136
137val P48 = M "P48"
138 ���((a:'a = b) \/ (c = d)) /\ ((a = c) \/ (b = d)) ==> (a = d) \/ (b = c)���;
139
140(* hol90 - tick *)
141
142
143(* -------------------------------------------------------------------------
144 * More problems with equality.
145 * ------------------------------------------------------------------------- *)
146
147(* hol90 - no *)
148val P49 = Mfail "P49" ���(?x y. !z:'a. (z = x) \/ (z = y)) /\
149                            P a /\ P b /\ ~(a = b) ==> !x:'a. P x���;
150
151val P51 = M "P51"
152 ���(?z w:'a. !x y:'a. F0 x y = (x = z) /\ (y = w)) ==>
153        ?z:'a. !x:'a. (?w:'a. !y:'a. F0 x y = (y = w)) = (x = z)���;
154
155val P52 = M"P52"
156 ���(?z w:'a. !x y. F0 x y = (x = z) /\ (y = w)) ==>
157        ?w:'a. !y. (?z. !x:'a. F0 x y = (x = z)) = (y = w)���;
158
159(*** Too slow
160
161val P53 =
162 ���(?x y. ~(x = y) /\ !z. (z = x) \/ (z = y)) ==>
163     ((?z. !x. (?w. !y. F0 x y = (y = w)) = (x = z)) =
164      (?w. !y. (?z. !x. F0 x y = (x = z)) = (y = w)))���;
165
166
167val P54 = Tactical.prove(GEN_MESON_TAC
168 ���(!y. ?z. !x. F0 x z = (x = y)) ==>
169    ~?w. !x. F0 x w = !u. F0 x u ==> ?y. F0 y u /\ ~ ?z. F0 x u /\ F0 z y���);
170
171
172*****)
173
174(* hol90 - yes? (too slow) *)
175val P55 =
176 ���(?x:'a. lives x /\ killed x agatha) /\
177   (lives(agatha) /\ lives(butler) /\ lives(charles)) /\
178   (!x. lives(x) ==> (x = agatha) \/ (x = butler) \/ (x = charles)) /\
179   (!y x. killed x y ==> hates x y) /\
180   (!x y. killed x y ==> ~richer x y) /\
181   (!x. hates agatha x ==> ~hates charles x) /\
182   (!x. ~(x = butler) ==> hates agatha x) /\
183   (!x. ~richer x agatha ==> hates butler x) /\
184   (!x. hates agatha x ==> hates butler x) /\
185   (!x. ?y. ~hates x y) /\
186   ~(agatha = butler)
187   ==> killed agatha agatha���;
188
189
190(* ------------------------------------------------------------------------- *)
191(* ------------------------------------------------------------------------- *)
192
193(* hol90 - yes *)
194val P50 =
195 ���(!x:'a. P(a,x) \/ (!y. P(x,y))) ==> ?x. !y. P(x,y)���;
196
197
198(* ========================================================================= *)
199(* 100 problems selected from the TPTP library as a test for MESON_TAC.      *)
200(* ========================================================================= *)
201
202(*
203 * These should all work with the default settings, but some are quite slow
204 * (many minutes).
205 *
206 * A few variable names have been primed to avoid clashing with constants.
207 *
208 * Here's a list giving typical CPU times, as well as common names and
209 * literature references.
210 *
211 * BOO003-1     34.6    B2 part 1 [McCharen, et al., 1976]; Lemma d [Overbeek, et al., 1976]; prob2_part1.ver1.in [ANL]
212 * BOO004-1     36.7    B2 part 2 [McCharen, et al., 1976]; Lemma d [Overbeek, et al., 1976]; prob2_part2.ver1 [ANL]
213 * BOO005-1     47.4    B3 part 1 [McCharen, et al., 1976]; B5 [McCharen, et al., 1976]; Lemma d [Overbeek, et al., 1976]; prob3_part1.ver1.in [ANL]
214 * BOO006-1     48.4    B3 part 2 [McCharen, et al., 1976]; B6 [McCharen, et al., 1976]; Lemma d [Overbeek, et al., 1976]; prob3_part2.ver1 [ANL]
215 * BOO011-1     19.0    B7 [McCharen, et al., 1976]; prob7.ver1 [ANL]
216 * CAT001-3     45.2    C1 [McCharen, et al., 1976]; p1.ver3.in [ANL]
217 * CAT003-3     10.5    C3 [McCharen, et al., 1976]; p3.ver3.in [ANL]
218 * CAT005-1    480.1    C5 [McCharen, et al., 1976]; p5.ver1.in [ANL]
219 * CAT007-1     11.9    C7 [McCharen, et al., 1976]; p7.ver1.in [ANL]
220 * CAT018-1     81.3    p18.ver1.in [ANL]
221 * COL001-2     16.0    C1 [Wos & McCune, 1988]
222 * COL023-1      5.1    [McCune & Wos, 1988]
223 * COL032-1     15.8    [McCune & Wos, 1988]
224 * COL052-2     13.2    bird4.ver2.in [ANL]
225 * COL075-2    116.9    [Jech, 1994]
226 * COM001-1      1.7    shortburst [Wilson & Minker, 1976]
227 * COM002-1      4.4    burstall [Wilson & Minker, 1976]
228 * COM002-2      7.4
229 * COM003-2     22.1    [Brushi, 1991]
230 * COM004-1     45.1
231 * GEO003-1     71.7    T3 [McCharen, et al., 1976]; t3.ver1.in [ANL]
232 * GEO017-2     78.8    D4.1 [Quaife, 1989]
233 * GEO027-3    181.5    D10.1 [Quaife, 1989]
234 * GEO058-2    104.0    R4 [Quaife, 1989]
235 * GEO079-1      2.4    GEOMETRY THEOREM [Slagle, 1967]
236 * 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]
237 * GRP008-1     50.4    Problem 4 [Wos, 1965]; wos4 [Wilson & Minker, 1976]
238 * GRP013-1     40.2    Problem 11 [Wos, 1965]; wos11 [Wilson & Minker, 1976]
239 * GRP037-3     43.8    Problem 17 [Wos, 1965]; wos17 [Wilson & Minker, 1976]
240 * GRP031-2      3.2    ls23 [Lawrence & Starkey, 1974]; ls23 [Wilson & Minker, 1976]
241 * GRP034-4      2.5    ls26 [Lawrence & Starkey, 1974]; ls26 [Wilson & Minker, 1976]
242 * GRP047-2     11.7    [Veroff, 1992]
243 * GRP130-1    170.6    Bennett QG8 [TPTP]; QG8 [Slaney, 1993]
244 * GRP156-1     48.7    ax_mono1c [Schulz, 1995]
245 * GRP168-1    159.1    p01a [Schulz, 1995]
246 * HEN003-3     39.9    HP3 [McCharen, et al., 1976]
247 * HEN007-2    125.7    H7 [McCharen, et al., 1976]
248 * HEN008-4     62.0    H8 [McCharen, et al., 1976]
249 * HEN009-5    136.3    H9 [McCharen, et al., 1976]; hp9.ver3.in [ANL]
250 * HEN012-3     48.5    new.ver2.in [ANL]
251 * LCL010-1    370.9    EC-73 [McCune & Wos, 1992]; ec_yq.in [OTTER]
252 * LCL077-2     51.6    morgan.two.ver1.in [ANL]
253 * LCL082-1     14.6    IC-1.1 [Wos, et al., 1990]; IC-65 [McCune & Wos, 1992]; ls2 [SETHEO]; S1 [Pfenning, 1988]
254 * 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]
255 * LCL143-1     10.9    Lattice structure theorem 2 [Bonacina, 1991]
256 * LCL182-1    271.6    Problem 2.16 [Whitehead & Russell, 1927]
257 * LCL200-1     12.0    Problem 2.46 [Whitehead & Russell, 1927]
258 * LCL215-1    214.4    Problem 2.62 [Whitehead & Russell, 1927]; Problem 2.63 [Whitehead & Russell, 1927]
259 * LCL230-2      0.2    Pelletier 5 [Pelletier, 1986]
260 * LDA003-1     68.5    Problem 3 [Jech, 1993]
261 * MSC002-1      9.2    DBABHP [Michie, et al., 1972]; DBABHP [Wilson & Minker, 1976]
262 * MSC003-1      3.2    HASPARTS-T1 [Wilson & Minker, 1976]
263 * MSC004-1      9.3    HASPARTS-T2 [Wilson & Minker, 1976]
264 * MSC005-1      1.8    Problem 5.1 [Plaisted, 1982]
265 * MSC006-1     39.0    nonob.lop [SETHEO]
266 * NUM001-1     14.0    Chang-Lee-10a [Chang, 1970]; ls28 [Lawrence & Starkey, 1974]; ls28 [Wilson & Minker, 1976]
267 * NUM021-1     52.3    ls65 [Lawrence & Starkey, 1974]; ls65 [Wilson & Minker, 1976]
268 * NUM024-1     64.6    ls75 [Lawrence & Starkey, 1974]; ls75 [Wilson & Minker, 1976]
269 * NUM180-1    621.2    LIM2.1 [Quaife]
270 * NUM228-1    575.9    TRECDEF4 cor. [Quaife]
271 * PLA002-1     37.4    Problem 5.7 [Plaisted, 1982]
272 * PLA006-1      7.2    [Segre & Elkan, 1994]
273 * PLA017-1    484.8    [Segre & Elkan, 1994]
274 * PLA022-1     19.1    [Segre & Elkan, 1994]
275 * PLA022-2     19.7    [Segre & Elkan, 1994]
276 * PRV001-1     10.3    PV1 [McCharen, et al., 1976]
277 * PRV003-1      3.9    E2 [McCharen, et al., 1976]; v2.lop [SETHEO]
278 * PRV005-1      4.3    E4 [McCharen, et al., 1976]; v4.lop [SETHEO]
279 * PRV006-1      6.0    E5 [McCharen, et al., 1976]; v5.lop [SETHEO]
280 * PRV009-1      2.2    Hoares FIND [Bledsoe, 1977]; Problem 5.5 [Plaisted, 1982]
281 * PUZ012-1      3.5    Boxes-of-fruit [Wos, 1988]; Boxes-of-fruit [Wos, et al., 1992]; boxes.ver1.in [ANL]
282 * PUZ020-1     56.6    knightknave.in [ANL]
283 * PUZ025-1     58.4    Problem 35 [Smullyan, 1978]; tandl35.ver1.in [ANL]
284 * PUZ029-1      5.1    pigs.ver1.in [ANL]
285 * RNG001-3     82.4    EX6-T? [Wilson & Minker, 1976]; ex6.lop [SETHEO]; Example 6a [Fleisig, et al., 1974]; FEX6T1 [SPRFN]; FEX6T2 [SPRFN]
286 * RNG001-5    399.8    Problem 21 [Wos, 1965]; wos21 [Wilson & Minker, 1976]
287 * RNG011-5      8.4    CADE-11 Competition Eq-10 [Overbeek, 1990]; PROBLEM 10 [Zhang, 1993]; THEOREM EQ-10 [Lusk & McCune, 1993]
288 * RNG023-6      9.1    [Stevens, 1987]
289 * RNG028-2      9.3    PROOF III [Anantharaman & Hsiang, 1990]
290 * RNG038-2     16.2    Problem 27 [Wos, 1965]; wos27 [Wilson & Minker, 1976]
291 * RNG040-2    180.5    Problem 29 [Wos, 1965]; wos29 [Wilson & Minker, 1976]
292 * RNG041-1     35.8    Problem 30 [Wos, 1965]; wos30 [Wilson & Minker, 1976]
293 * ROB010-1    205.0    Lemma 3.3 [Winker, 1990]; RA2 [Lusk & Wos, 1992]
294 * ROB013-1     23.6    Lemma 3.5 [Winker, 1990]
295 * ROB016-1     15.2    Corollary 3.7 [Winker, 1990]
296 * ROB021-1    230.4    [McCune, 1992]
297 * SET005-1    192.2    ls108 [Lawrence & Starkey, 1974]; ls108 [Wilson & Minker, 1976]
298 * SET009-1     10.5    ls116 [Lawrence & Starkey, 1974]; ls116 [Wilson & Minker, 1976]
299 * SET025-4    694.7    Lemma 10 [Boyer, et al, 1986]
300 * SET046-5      2.3    p42.in [ANL]; Pelletier 42 [Pelletier, 1986]
301 * SET047-5      3.7    p43.in [ANL]; Pelletier 43 [Pelletier, 1986]
302 * SYN034-1      2.8    QW [Michie, et al., 1972]; QW [Wilson & Minker, 1976]
303 * SYN071-1      1.9    Pelletier 48 [Pelletier, 1986]
304 * SYN349-1     61.7    Ch17N5 [Tammet, 1994]
305 * SYN352-1      5.5    Ch18N4 [Tammet, 1994]
306 * TOP001-2     61.1    Lemma 1a [Wick & McCune, 1989]
307 * TOP002-2      0.4    Lemma 1b [Wick & McCune, 1989]
308 * TOP004-1    181.6    Lemma 1d [Wick & McCune, 1989]
309 * TOP004-2      9.0    Lemma 1d [Wick & McCune, 1989]
310 * TOP005-2    139.8    Lemma 1e [Wick & McCune, 1989]
311 *)
312
313val BOOL =
314���(!(X:'a). equal(X,X)) /\
315   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
316   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
317   (!X Y. sum(X,Y,add(X,Y))) /\
318   (!X Y. product(X,Y,multiply(X,Y))) /\
319   (!Y X Z. sum(X,Y,Z) ==> sum(Y,X,Z)) /\
320   (!Y X Z. product(X,Y,Z) ==> product(Y,X,Z)) /\
321   (!X. sum(additive_identity,X,X)) /\
322   (!X. sum(X,additive_identity,X)) /\
323   (!X. product(multiplicative_identity,X,X)) /\
324   (!X. product(X,multiplicative_identity,X)) /\
325   (!Y Z X V3 V1 V2 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ product(X,V3,V4) ==> sum(V1,V2,V4)) /\
326   (!Y Z V1 V2 X V3 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(X,V3,V4)) /\
327   (!Y Z V3 X V1 V2 V4. product(Y,X,V1) /\ product(Z,X,V2) /\ sum(Y,Z,V3) /\ product(V3,X,V4) ==> sum(V1,V2,V4)) /\
328   (!Y Z V1 V2 V3 X V4. product(Y,X,V1) /\ product(Z,X,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(V3,X,V4)) /\
329   (!Y Z X V3 V1 V2 V4. sum(X,Y,V1) /\ sum(X,Z,V2) /\ product(Y,Z,V3) /\ sum(X,V3,V4) ==> product(V1,V2,V4)) /\
330   (!Y Z V1 V2 X V3 V4. sum(X,Y,V1) /\ sum(X,Z,V2) /\ product(Y,Z,V3) /\ product(V1,V2,V4) ==> sum(X,V3,V4)) /\
331   (!Y Z V3 X V1 V2 V4. sum(Y,X,V1) /\ sum(Z,X,V2) /\ product(Y,Z,V3) /\ sum(V3,X,V4) ==> product(V1,V2,V4)) /\
332   (!Y Z V1 V2 V3 X V4. sum(Y,X,V1) /\ sum(Z,X,V2) /\ product(Y,Z,V3) /\ product(V1,V2,V4) ==> sum(V3,X,V4)) /\
333   (!X. sum(inverse(X),X,multiplicative_identity)) /\
334   (!X. sum(X,inverse(X),multiplicative_identity)) /\
335   (!X. product(inverse(X),X,additive_identity)) /\
336   (!X. product(X,inverse(X),additive_identity)) /\
337   (!X Y U V. sum(X,Y,U) /\ sum(X,Y,V) ==> equal(U,V)) /\
338   (!X Y U V. product(X,Y,U) /\ product(X,Y,V) ==> equal(U,V)) /\
339   (!X Y W Z. equal(X,Y) /\ sum(X,W,Z) ==> sum(Y,W,Z)) /\
340   (!X W Y Z. equal(X,Y) /\ sum(W,X,Z) ==> sum(W,Y,Z)) /\
341   (!X W Z Y. equal(X,Y) /\ sum(W,Z,X) ==> sum(W,Z,Y)) /\
342   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
343   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
344   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
345   (!X Y W. equal(X,Y) ==> equal(add(X,W),add(Y,W))) /\
346   (!X W Y. equal(X,Y) ==> equal(add(W,X),add(W,Y))) /\
347   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
348   (!X W Y. equal(X,Y) ==> equal(multiply(W,X),multiply(W,Y))) /\
349   (!X Y. equal(X,Y) ==> equal(inverse(X),inverse(Y)))���;;
350
351
352fun MESON _ thms tm = (tm,mesonLib.MESON_TAC (ASSUME BOOL :: thms) ([], tm));
353val BOOL_FACTS = true
354
355(* hol90 - yes *)
356val BOO003_1 = MESON [BOOL_FACTS] [] ���product((x:'a),x,x):bool���;;
357
358(* hol90 - yes *)
359val BOO004_1 = MESON [BOOL_FACTS] [] ���sum((x:'a),x,x):bool���;;
360
361(* hol90 - yes *)
362val BOO005_1 = MESON [BOOL_FACTS] [] ���sum((x:'a),(multiplicative_identity:'a),multiplicative_identity):bool���;;
363
364(* hol90 - yes *)
365val BOO006_1 = MESON [BOOL_FACTS] [] ���product((x:'a),(additive_identity:'a),additive_identity):bool���;;
366
367(* hol90 - yes *)
368val BOO011_1 = MESON [BOOL_FACTS] [] ���equal((inverse(additive_identity:'a):'a),(multiplicative_identity:'a)):bool���;;
369
370val CAT001_3 = M "CAT001_3"
371 ���(!X:'a. equal(X,X)) /\
372   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
373   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
374   (!Y X. equivalent(X,Y) ==> there_exists(X)) /\
375   (!X Y. equivalent(X,Y) ==> equal(X,Y)) /\
376   (!X Y. there_exists(X) /\ equal(X,Y) ==> equivalent(X,Y)) /\
377   (!X. there_exists(domain(X)) ==> there_exists(X)) /\
378   (!X. there_exists(codomain(X)) ==> there_exists(X)) /\
379   (!Y X. there_exists(compose(X,Y)) ==> there_exists(domain(X))) /\
380   (!X Y. there_exists(compose(X,Y)) ==> equal(domain(X),codomain(Y))) /\
381   (!X Y. there_exists(domain(X)) /\ equal(domain(X),codomain(Y)) ==> there_exists(compose(X,Y))) /\
382   (!X Y Z. equal(compose(X,compose(Y,Z)),compose(compose(X,Y),Z))) /\
383   (!X. equal(compose(X,domain(X)),X)) /\
384   (!X. equal(compose(codomain(X),X),X)) /\
385   (!X Y. equivalent(X,Y) ==> there_exists(Y)) /\
386   (!X Y. there_exists(X) /\ there_exists(Y) /\ equal(X,Y) ==> equivalent(X,Y)) /\
387   (!Y X. there_exists(compose(X,Y)) ==> there_exists(codomain(X))) /\
388   (!X Y. there_exists(f1(X,Y)) \/ equal(X,Y)) /\
389   (!X Y. equal(X,f1(X,Y)) \/ equal(Y,f1(X,Y)) \/ equal(X,Y)) /\
390   (!X Y. equal(X,f1(X,Y)) /\ equal(Y,f1(X,Y)) ==> equal(X,Y)) /\
391   (!X Y. equal(X,Y) /\ there_exists(X) ==> there_exists(Y)) /\
392   (!X Y Z. equal(X,Y) /\ equivalent(X,Z) ==> equivalent(Y,Z)) /\
393   (!X Z Y. equal(X,Y) /\ equivalent(Z,X) ==> equivalent(Z,Y)) /\
394   (!X Y. equal(X,Y) ==> equal(domain(X),domain(Y))) /\
395   (!X Y. equal(X,Y) ==> equal(codomain(X),codomain(Y))) /\
396   (!X Y Z. equal(X,Y) ==> equal(compose(X,Z),compose(Y,Z))) /\
397   (!X Z Y. equal(X,Y) ==> equal(compose(Z,X),compose(Z,Y))) /\
398   (!A B C. equal(A,B) ==> equal(f1(A,C),f1(B,C))) /\
399   (!D F' E. equal(D,E) ==> equal(f1(F',D),f1(F',E))) /\
400   (there_exists(compose(a,b))) /\
401   (!Y X Z. equal(compose(compose(a,b),X),Y) /\ equal(compose(compose(a,b),Z),Y) ==> equal(X,Z)) /\
402   (there_exists(compose(b,h))) /\
403   (equal(compose(b,h),compose(b,g))) /\
404   (~equal(h,g)) ==> F���;
405
406
407val CAT003_3 = M "CAT003_3"
408 ���(!X:'a. equal(X,X)) /\
409   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
410   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
411   (!Y X. equivalent(X,Y) ==> there_exists(X)) /\
412   (!X Y. equivalent(X,Y) ==> equal(X,Y)) /\
413   (!X Y. there_exists(X) /\ equal(X,Y) ==> equivalent(X,Y)) /\
414   (!X. there_exists(domain(X)) ==> there_exists(X)) /\
415   (!X. there_exists(codomain(X)) ==> there_exists(X)) /\
416   (!Y X. there_exists(compose(X,Y)) ==> there_exists(domain(X))) /\
417   (!X Y. there_exists(compose(X,Y)) ==> equal(domain(X),codomain(Y))) /\
418   (!X Y. there_exists(domain(X)) /\ equal(domain(X),codomain(Y)) ==> there_exists(compose(X,Y))) /\
419   (!X Y Z. equal(compose(X,compose(Y,Z)),compose(compose(X,Y),Z))) /\
420   (!X. equal(compose(X,domain(X)),X)) /\
421   (!X. equal(compose(codomain(X),X),X)) /\
422   (!X Y. equivalent(X,Y) ==> there_exists(Y)) /\
423   (!X Y. there_exists(X) /\ there_exists(Y) /\ equal(X,Y) ==> equivalent(X,Y)) /\
424   (!Y X. there_exists(compose(X,Y)) ==> there_exists(codomain(X))) /\
425   (!X Y. there_exists(f1(X,Y)) \/ equal(X,Y)) /\
426   (!X Y. equal(X,f1(X,Y)) \/ equal(Y,f1(X,Y)) \/ equal(X,Y)) /\
427   (!X Y. equal(X,f1(X,Y)) /\ equal(Y,f1(X,Y)) ==> equal(X,Y)) /\
428   (!X Y. equal(X,Y) /\ there_exists(X) ==> there_exists(Y)) /\
429   (!X Y Z. equal(X,Y) /\ equivalent(X,Z) ==> equivalent(Y,Z)) /\
430   (!X Z Y. equal(X,Y) /\ equivalent(Z,X) ==> equivalent(Z,Y)) /\
431   (!X Y. equal(X,Y) ==> equal(domain(X),domain(Y))) /\
432   (!X Y. equal(X,Y) ==> equal(codomain(X),codomain(Y))) /\
433   (!X Y Z. equal(X,Y) ==> equal(compose(X,Z),compose(Y,Z))) /\
434   (!X Z Y. equal(X,Y) ==> equal(compose(Z,X),compose(Z,Y))) /\
435   (!A B C. equal(A,B) ==> equal(f1(A,C),f1(B,C))) /\
436   (!D F' E. equal(D,E) ==> equal(f1(F',D),f1(F',E))) /\
437   (there_exists(compose(a,b))) /\
438   (!Y X Z. equal(compose(X,compose(a,b)),Y) /\ equal(compose(Z,compose(a,b)),Y) ==> equal(X,Z)) /\
439   (there_exists(h)) /\
440   (equal(compose(h,a),compose(g,a))) /\
441   (~equal(g,h)) ==> F���;
442
443
444val CAT005_1 = M "CAT005_1"
445 ���(!X:'a. equal(X,X)) /\
446   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
447   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
448   (!X Y. defined(X,Y) ==> product(X,Y,compose(X,Y))) /\
449   (!Z X Y. product(X,Y,Z) ==> defined(X,Y)) /\
450   (!X Xy Y Z. product(X,Y,Xy) /\ defined(Xy,Z) ==> defined(Y,Z)) /\
451   (!Y Xy Z X Yz. product(X,Y,Xy) /\ product(Y,Z,Yz) /\ defined(Xy,Z) ==> defined(X,Yz)) /\
452   (!Xy Y Z X Yz Xyz. product(X,Y,Xy) /\ product(Xy,Z,Xyz) /\ product(Y,Z,Yz) ==> product(X,Yz,Xyz)) /\
453   (!Z Yz X Y. product(Y,Z,Yz) /\ defined(X,Yz) ==> defined(X,Y)) /\
454   (!Y X Yz Xy Z. product(Y,Z,Yz) /\ product(X,Y,Xy) /\ defined(X,Yz) ==> defined(Xy,Z)) /\
455   (!Yz X Y Xy Z Xyz. product(Y,Z,Yz) /\ product(X,Yz,Xyz) /\ product(X,Y,Xy) ==> product(Xy,Z,Xyz)) /\
456   (!Y X Z. defined(X,Y) /\ defined(Y,Z) /\ identity_map(Y) ==> defined(X,Z)) /\
457   (!X. identity_map(domain(X))) /\
458   (!X. identity_map(codomain(X))) /\
459   (!X. defined(X,domain(X))) /\
460   (!X. defined(codomain(X),X)) /\
461   (!X. product(X,domain(X),X)) /\
462   (!X. product(codomain(X),X,X)) /\
463   (!X Y. defined(X,Y) /\ identity_map(X) ==> product(X,Y,Y)) /\
464   (!Y X. defined(X,Y) /\ identity_map(Y) ==> product(X,Y,X)) /\
465   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
466   (!X Y Z W. equal(X,Y) /\ product(X,Z,W) ==> product(Y,Z,W)) /\
467   (!X Z Y W. equal(X,Y) /\ product(Z,X,W) ==> product(Z,Y,W)) /\
468   (!X Z W Y. equal(X,Y) /\ product(Z,W,X) ==> product(Z,W,Y)) /\
469   (!X Y. equal(X,Y) ==> equal(domain(X),domain(Y))) /\
470   (!X Y. equal(X,Y) ==> equal(codomain(X),codomain(Y))) /\
471   (!X Y. equal(X,Y) /\ identity_map(X) ==> identity_map(Y)) /\
472   (!X Y Z. equal(X,Y) /\ defined(X,Z) ==> defined(Y,Z)) /\
473   (!X Z Y. equal(X,Y) /\ defined(Z,X) ==> defined(Z,Y)) /\
474   (!X Z Y. equal(X,Y) ==> equal(compose(Z,X),compose(Z,Y))) /\
475   (!X Y Z. equal(X,Y) ==> equal(compose(X,Z),compose(Y,Z))) /\
476   (defined(a,d)) /\
477   (identity_map(d)) /\
478   (~equal(domain(a),d)) ==> F���;
479
480
481val CAT007_1 = M "CAT007_1"
482 ���(!X:'a. equal(X,X)) /\
483   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
484   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
485   (!X Y. defined(X,Y) ==> product(X,Y,compose(X,Y))) /\
486   (!Z X Y. product(X,Y,Z) ==> defined(X,Y)) /\
487   (!X Xy Y Z. product(X,Y,Xy) /\ defined(Xy,Z) ==> defined(Y,Z)) /\
488   (!Y Xy Z X Yz. product(X,Y,Xy) /\ product(Y,Z,Yz) /\ defined(Xy,Z) ==> defined(X,Yz)) /\
489   (!Xy Y Z X Yz Xyz. product(X,Y,Xy) /\ product(Xy,Z,Xyz) /\ product(Y,Z,Yz) ==> product(X,Yz,Xyz)) /\
490   (!Z Yz X Y. product(Y,Z,Yz) /\ defined(X,Yz) ==> defined(X,Y)) /\
491   (!Y X Yz Xy Z. product(Y,Z,Yz) /\ product(X,Y,Xy) /\ defined(X,Yz) ==> defined(Xy,Z)) /\
492   (!Yz X Y Xy Z Xyz. product(Y,Z,Yz) /\ product(X,Yz,Xyz) /\ product(X,Y,Xy) ==> product(Xy,Z,Xyz)) /\
493   (!Y X Z. defined(X,Y) /\ defined(Y,Z) /\ identity_map(Y) ==> defined(X,Z)) /\
494   (!X. identity_map(domain(X))) /\
495   (!X. identity_map(codomain(X))) /\
496   (!X. defined(X,domain(X))) /\
497   (!X. defined(codomain(X),X)) /\
498   (!X. product(X,domain(X),X)) /\
499   (!X. product(codomain(X),X,X)) /\
500   (!X Y. defined(X,Y) /\ identity_map(X) ==> product(X,Y,Y)) /\
501   (!Y X. defined(X,Y) /\ identity_map(Y) ==> product(X,Y,X)) /\
502   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
503   (!X Y Z W. equal(X,Y) /\ product(X,Z,W) ==> product(Y,Z,W)) /\
504   (!X Z Y W. equal(X,Y) /\ product(Z,X,W) ==> product(Z,Y,W)) /\
505   (!X Z W Y. equal(X,Y) /\ product(Z,W,X) ==> product(Z,W,Y)) /\
506   (!X Y. equal(X,Y) ==> equal(domain(X),domain(Y))) /\
507   (!X Y. equal(X,Y) ==> equal(codomain(X),codomain(Y))) /\
508   (!X Y. equal(X,Y) /\ identity_map(X) ==> identity_map(Y)) /\
509   (!X Y Z. equal(X,Y) /\ defined(X,Z) ==> defined(Y,Z)) /\
510   (!X Z Y. equal(X,Y) /\ defined(Z,X) ==> defined(Z,Y)) /\
511   (!X Z Y. equal(X,Y) ==> equal(compose(Z,X),compose(Z,Y))) /\
512   (!X Y Z. equal(X,Y) ==> equal(compose(X,Z),compose(Y,Z))) /\
513   (equal(domain(a),codomain(b))) /\
514   (~defined(a,b)) ==> F���;
515
516
517val CAT018_1 = M "CAT018_1"
518 ���(!X:'a. equal(X,X)) /\
519   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
520   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
521   (!X Y. defined(X,Y) ==> product(X,Y,compose(X,Y))) /\
522   (!Z X Y. product(X,Y,Z) ==> defined(X,Y)) /\
523   (!X Xy Y Z. product(X,Y,Xy) /\ defined(Xy,Z) ==> defined(Y,Z)) /\
524   (!Y Xy Z X Yz. product(X,Y,Xy) /\ product(Y,Z,Yz) /\ defined(Xy,Z) ==> defined(X,Yz)) /\
525   (!Xy Y Z X Yz Xyz. product(X,Y,Xy) /\ product(Xy,Z,Xyz) /\ product(Y,Z,Yz) ==> product(X,Yz,Xyz)) /\
526   (!Z Yz X Y. product(Y,Z,Yz) /\ defined(X,Yz) ==> defined(X,Y)) /\
527   (!Y X Yz Xy Z. product(Y,Z,Yz) /\ product(X,Y,Xy) /\ defined(X,Yz) ==> defined(Xy,Z)) /\
528   (!Yz X Y Xy Z Xyz. product(Y,Z,Yz) /\ product(X,Yz,Xyz) /\ product(X,Y,Xy) ==> product(Xy,Z,Xyz)) /\
529   (!Y X Z. defined(X,Y) /\ defined(Y,Z) /\ identity_map(Y) ==> defined(X,Z)) /\
530   (!X. identity_map(domain(X))) /\
531   (!X. identity_map(codomain(X))) /\
532   (!X. defined(X,domain(X))) /\
533   (!X. defined(codomain(X),X)) /\
534   (!X. product(X,domain(X),X)) /\
535   (!X. product(codomain(X),X,X)) /\
536   (!X Y. defined(X,Y) /\ identity_map(X) ==> product(X,Y,Y)) /\
537   (!Y X. defined(X,Y) /\ identity_map(Y) ==> product(X,Y,X)) /\
538   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
539   (!X Y Z W. equal(X,Y) /\ product(X,Z,W) ==> product(Y,Z,W)) /\
540   (!X Z Y W. equal(X,Y) /\ product(Z,X,W) ==> product(Z,Y,W)) /\
541   (!X Z W Y. equal(X,Y) /\ product(Z,W,X) ==> product(Z,W,Y)) /\
542   (!X Y. equal(X,Y) ==> equal(domain(X),domain(Y))) /\
543   (!X Y. equal(X,Y) ==> equal(codomain(X),codomain(Y))) /\
544   (!X Y. equal(X,Y) /\ identity_map(X) ==> identity_map(Y)) /\
545   (!X Y Z. equal(X,Y) /\ defined(X,Z) ==> defined(Y,Z)) /\
546   (!X Z Y. equal(X,Y) /\ defined(Z,X) ==> defined(Z,Y)) /\
547   (!X Z Y. equal(X,Y) ==> equal(compose(Z,X),compose(Z,Y))) /\
548   (!X Y Z. equal(X,Y) ==> equal(compose(X,Z),compose(Y,Z))) /\
549   (defined(a,b)) /\
550   (defined(b,c)) /\
551   (~defined(a,compose(b,c))) ==> F���;
552
553
554val COL001_2 = M "COL001_2"
555 ���(!X:'a. equal(X,X)) /\
556   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
557   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
558   (!X Y Z. equal(apply(apply(apply(s,X),Y),Z),apply(apply(X,Z),apply(Y,Z)))) /\
559   (!Y X. equal(apply(apply(k,X),Y),X)) /\
560   (!X Y Z. equal(apply(apply(apply(b,X),Y),Z),apply(X,apply(Y,Z)))) /\
561   (!X. equal(apply(i,X),X)) /\
562   (!A B C. equal(A,B) ==> equal(apply(A,C),apply(B,C))) /\
563   (!D F' E. equal(D,E) ==> equal(apply(F',D),apply(F',E))) /\
564   (!X. equal(apply(apply(apply(s,apply(b,X)),i),apply(apply(s,apply(b,X)),i)),apply(x,apply(apply(apply(s,apply(b,X)),i),apply(apply(s,apply(b,X)),i))))) /\
565   (!Y. ~equal(Y,apply(combinator,Y))) ==> F���;
566
567
568val COL023_1 = M "COL023_1"
569 ���(!X:'a. equal(X,X)) /\
570   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
571   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
572   (!X Y Z. equal(apply(apply(apply(b,X),Y),Z),apply(X,apply(Y,Z)))) /\
573   (!X Y Z. equal(apply(apply(apply(n,X),Y),Z),apply(apply(apply(X,Z),Y),Z))) /\
574   (!A B C. equal(A,B) ==> equal(apply(A,C),apply(B,C))) /\
575   (!D F' E. equal(D,E) ==> equal(apply(F',D),apply(F',E))) /\
576   (!Y. ~equal(Y,apply(combinator,Y))) ==> F���;
577
578
579val COL032_1 = M "COL032_1"
580 ���(!X:'a. equal(X,X)) /\
581   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
582   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
583   (!X. equal(apply(m,X),apply(X,X))) /\
584   (!Y X Z. equal(apply(apply(apply(q,X),Y),Z),apply(Y,apply(X,Z)))) /\
585   (!A B C. equal(A,B) ==> equal(apply(A,C),apply(B,C))) /\
586   (!D F' E. equal(D,E) ==> equal(apply(F',D),apply(F',E))) /\
587   (!G H. equal(G,H) ==> equal(f(G),f(H))) /\
588   (!Y. ~equal(apply(Y,f(Y)),apply(f(Y),apply(Y,f(Y))))) ==> F���;
589
590
591val COL052_2 =
592 ���(!X:'a. equal(X,X)) /\
593   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
594   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
595   (!X Y W. equal(response(compose(X,Y),W),response(X,response(Y,W)))) /\
596   (!X Y. agreeable(X) ==> equal(response(X,common_bird(Y)),response(Y,common_bird(Y)))) /\
597   (!Z X. equal(response(X,Z),response(compatible(X),Z)) ==> agreeable(X)) /\
598   (!A B. equal(A,B) ==> equal(common_bird(A),common_bird(B))) /\
599   (!C D. equal(C,D) ==> equal(compatible(C),compatible(D))) /\
600   (!Q R. equal(Q,R) /\ agreeable(Q) ==> agreeable(R)) /\
601   (!A B C. equal(A,B) ==> equal(compose(A,C),compose(B,C))) /\
602   (!D F' E. equal(D,E) ==> equal(compose(F',D),compose(F',E))) /\
603   (!G H I'. equal(G,H) ==> equal(response(G,I'),response(H,I'))) /\
604   (!J L K'. equal(J,K') ==> equal(response(L,J),response(L,K'))) /\
605   (agreeable(c)) /\
606   (~agreeable(a)) /\
607   (equal(c,compose(a,b))) ==> F���;
608
609
610val COL075_2 =
611 ���(!X:'a. equal(X,X)) /\
612   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
613   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
614   (!Y X. equal(apply(apply(k,X),Y),X)) /\
615   (!X Y Z. equal(apply(apply(apply(abstraction,X),Y),Z),apply(apply(X,apply(k,Z)),apply(Y,Z)))) /\
616   (!D E F'. equal(D,E) ==> equal(apply(D,F'),apply(E,F'))) /\
617   (!G I' H. equal(G,H) ==> equal(apply(I',G),apply(I',H))) /\
618   (!A B. equal(A,B) ==> equal(b(A),b(B))) /\
619   (!C D. equal(C,D) ==> equal(c(C),c(D))) /\
620   (!Y. ~equal(apply(apply(Y,b(Y)),c(Y)),apply(b(Y),b(Y)))) ==> F���;
621
622
623val COM001_1 =
624Lib.with_flag(Globals.guessing_tyvars,true)
625 Term
626`(!Goal_state Start_state.
627        follows(Goal_state,Start_state)
628             ==> succeeds(Goal_state,Start_state)) /\
629   (!Goal_state Intermediate_state Start_state.
630         succeeds(Goal_state,Intermediate_state) /\
631         succeeds(Intermediate_state,Start_state)
632            ==> succeeds(Goal_state,Start_state)) /\
633   (!Start_state Label Goal_state.
634      has(Start_state,goto(Label)) /\ labels(Label,Goal_state)
635           ==> succeeds(Goal_state,Start_state)) /\
636   (!Start_state Condition Goal_state.
637          has(Start_state,ifthen(Condition,Goal_state))
638            ==> succeeds(Goal_state,Start_state)) /\
639   (labels(loop,p3)) /\
640   (has(p3,ifthen(equal(register_j,n),p4))) /\
641   (has(p4,goto(out))) /\
642   (follows(p5,p4)) /\
643   (follows(p8,p3)) /\
644   (has(p8,goto(loop))) /\
645   (~succeeds(p3,p3)) ==> F`;
646
647val COM002_1 = M "COM002_1" $
648Lib.with_flag(Globals.guessing_tyvars,true)
649 Term
650`(!Goal_state Start_state. follows(Goal_state,Start_state) ==> succeeds(Goal_state,Start_state)) /\
651   (!Goal_state Intermediate_state Start_state. succeeds(Goal_state,Intermediate_state) /\ succeeds(Intermediate_state,Start_state) ==> succeeds(Goal_state,Start_state)) /\
652   (!Start_state Label Goal_state. has(Start_state,goto(Label)) /\ labels(Label,Goal_state) ==> succeeds(Goal_state,Start_state)) /\
653   (!Start_state Condition Goal_state. has(Start_state,ifthen(Condition,Goal_state)) ==> succeeds(Goal_state,Start_state)) /\
654   (has(p1,assign(register_j,n0))) /\
655   (follows(p2,p1)) /\
656   (has(p2,assign(register_k,n1))) /\
657   (labels(loop,p3)) /\
658   (follows(p3,p2)) /\
659   (has(p3,ifthen(equal(register_j,n),p4))) /\
660   (has(p4,goto(out))) /\
661   (follows(p5,p4)) /\
662   (follows(p6,p3)) /\
663   (has(p6,assign(register_k,times(n2,register_k)))) /\
664   (follows(p7,p6)) /\
665   (has(p7,assign(register_j,plus(register_j,n1)))) /\
666   (follows(p8,p7)) /\
667   (has(p8,goto(loop))) /\
668   (~succeeds(p3,p3)) ==> F`;
669
670
671val COM002_2 = M "COM002_2" $
672Lib.with_flag(Globals.guessing_tyvars,true)
673 Term
674`(!Goal_state Start_state. ~(fails(Goal_state,Start_state) /\ follows(Goal_state,Start_state))) /\
675   (!Goal_state Intermediate_state Start_state. fails(Goal_state,Start_state) ==> fails(Goal_state,Intermediate_state) \/ fails(Intermediate_state,Start_state)) /\
676   (!Start_state Label Goal_state. ~(fails(Goal_state,Start_state) /\ has(Start_state,goto(Label)) /\ labels(Label,Goal_state))) /\
677   (!Start_state Condition Goal_state. ~(fails(Goal_state,Start_state) /\ has(Start_state,ifthen(Condition,Goal_state)))) /\
678   (has(p1,assign(register_j,n0))) /\
679   (follows(p2,p1)) /\
680   (has(p2,assign(register_k,n1))) /\
681   (labels(loop,p3)) /\
682   (follows(p3,p2)) /\
683   (has(p3,ifthen(equal(register_j,n),p4))) /\
684   (has(p4,goto(out))) /\
685   (follows(p5,p4)) /\
686   (follows(p6,p3)) /\
687   (has(p6,assign(register_k,times(n2,register_k)))) /\
688   (follows(p7,p6)) /\
689   (has(p7,assign(register_j,plus(register_j,n1)))) /\
690   (follows(p8,p7)) /\
691   (has(p8,goto(loop))) /\
692   (fails(p3,p3)) ==> F`;
693
694
695val COM003_2 = M "COM003_2" $
696Lib.with_flag(Globals.guessing_tyvars,true)
697 Term
698`(!X Y Z. program_decides(X) /\ program(Y) ==> decides(X,Y,Z)) /\
699   (!X. program_decides(X) \/ program(f2(X))) /\
700   (!X. decides(X,f2(X),f1(X)) ==> program_decides(X)) /\
701   (!X. program_program_decides(X) ==> program(X)) /\
702   (!X. program_program_decides(X) ==> program_decides(X)) /\
703   (!X. program(X) /\ program_decides(X) ==> program_program_decides(X)) /\
704   (!X. algorithm_program_decides(X) ==> algorithm(X)) /\
705   (!X. algorithm_program_decides(X) ==> program_decides(X)) /\
706   (!X. algorithm(X) /\ program_decides(X) ==> algorithm_program_decides(X)) /\
707   (!Y X. program_halts2(X,Y) ==> program(X)) /\
708   (!X Y. program_halts2(X,Y) ==> halts2(X,Y)) /\
709   (!X Y. program(X) /\ halts2(X,Y) ==> program_halts2(X,Y)) /\
710   (!W X Y Z. halts3_outputs(X,Y,Z,W) ==> halts3(X,Y,Z)) /\
711   (!Y Z X W. halts3_outputs(X,Y,Z,W) ==> outputs(X,W)) /\
712   (!Y Z X W. halts3(X,Y,Z) /\ outputs(X,W) ==> halts3_outputs(X,Y,Z,W)) /\
713   (!Y X. program_not_halts2(X,Y) ==> program(X)) /\
714   (!X Y. ~(program_not_halts2(X,Y) /\ halts2(X,Y))) /\
715   (!X Y. program(X) ==> program_not_halts2(X,Y) \/ halts2(X,Y)) /\
716   (!W X Y. halts2_outputs(X,Y,W) ==> halts2(X,Y)) /\
717   (!Y X W. halts2_outputs(X,Y,W) ==> outputs(X,W)) /\
718   (!Y X W. halts2(X,Y) /\ outputs(X,W) ==> halts2_outputs(X,Y,W)) /\
719   (!X W Y Z. program_halts2_halts3_outputs(X,Y,Z,W) ==> program_halts2(Y,Z)) /\
720   (!X Y Z W. program_halts2_halts3_outputs(X,Y,Z,W) ==> halts3_outputs(X,Y,Z,W)) /\
721   (!X Y Z W. program_halts2(Y,Z) /\ halts3_outputs(X,Y,Z,W) ==> program_halts2_halts3_outputs(X,Y,Z,W)) /\
722   (!X W Y Z. program_not_halts2_halts3_outputs(X,Y,Z,W) ==> program_not_halts2(Y,Z)) /\
723   (!X Y Z W. program_not_halts2_halts3_outputs(X,Y,Z,W) ==> halts3_outputs(X,Y,Z,W)) /\
724   (!X Y Z W. program_not_halts2(Y,Z) /\ halts3_outputs(X,Y,Z,W) ==> program_not_halts2_halts3_outputs(X,Y,Z,W)) /\
725   (!X W Y. program_halts2_halts2_outputs(X,Y,W) ==> program_halts2(Y,Y)) /\
726   (!X Y W. program_halts2_halts2_outputs(X,Y,W) ==> halts2_outputs(X,Y,W)) /\
727   (!X Y W. program_halts2(Y,Y) /\ halts2_outputs(X,Y,W) ==> program_halts2_halts2_outputs(X,Y,W)) /\
728   (!X W Y. program_not_halts2_halts2_outputs(X,Y,W) ==> program_not_halts2(Y,Y)) /\
729   (!X Y W. program_not_halts2_halts2_outputs(X,Y,W) ==> halts2_outputs(X,Y,W)) /\
730   (!X Y W. program_not_halts2(Y,Y) /\ halts2_outputs(X,Y,W) ==> program_not_halts2_halts2_outputs(X,Y,W)) /\
731   (!X. algorithm_program_decides(X) ==> program_program_decides(c1)) /\
732   (!W Y Z. program_program_decides(W) ==> program_halts2_halts3_outputs(W,Y,Z,good)) /\
733   (!W Y Z. program_program_decides(W) ==> program_not_halts2_halts3_outputs(W,Y,Z,bad)) /\
734   (!W. program(W) /\ program_halts2_halts3_outputs(W,f3(W),f3(W),good) /\ program_not_halts2_halts3_outputs(W,f3(W),f3(W),bad) ==> program(c2)) /\
735   (!W Y. program(W) /\ program_halts2_halts3_outputs(W,f3(W),f3(W),good) /\ program_not_halts2_halts3_outputs(W,f3(W),f3(W),bad) ==> program_halts2_halts2_outputs(c2,Y,good)) /\
736   (!W Y. program(W) /\ program_halts2_halts3_outputs(W,f3(W),f3(W),good) /\ program_not_halts2_halts3_outputs(W,f3(W),f3(W),bad) ==> program_not_halts2_halts2_outputs(c2,Y,bad)) /\
737   (!V. program(V) /\ program_halts2_halts2_outputs(V,f4(V),good) /\ program_not_halts2_halts2_outputs(V,f4(V),bad) ==> program(c3)) /\
738   (!V Y. program(V) /\ program_halts2_halts2_outputs(V,f4(V),good) /\ program_not_halts2_halts2_outputs(V,f4(V),bad) /\ program_halts2(Y,Y) ==> halts2(c3,Y)) /\
739   (!V Y. program(V) /\ program_halts2_halts2_outputs(V,f4(V),good) /\ program_not_halts2_halts2_outputs(V,f4(V),bad) ==> program_not_halts2_halts2_outputs(c3,Y,bad)) /\
740   (algorithm_program_decides(c4)) ==> F`;
741
742
743val COM004_1 = M "COM004_1" $
744Lib.with_flag(Globals.guessing_tyvars,true)
745 Term
746`(!X. equal(X,X)) /\
747   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
748   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
749   (!C D P Q X Y. failure_node(X,or(C,P)) /\ failure_node(Y,or(D,Q)) /\ contradictory(P,Q) /\ siblings(X,Y) ==> failure_node(parent_of(X,Y),or(C,D))) /\
750   (!X. contradictory(negate(X),X)) /\
751   (!X. contradictory(X,negate(X))) /\
752   (!X. siblings(left_child_of(X),right_child_of(X))) /\
753   (!D E. equal(D,E) ==> equal(left_child_of(D),left_child_of(E))) /\
754   (!F' G. equal(F',G) ==> equal(negate(F'),negate(G))) /\
755   (!H I' J. equal(H,I') ==> equal(or(H,J),or(I',J))) /\
756   (!K' M L. equal(K',L) ==> equal(or(M,K'),or(M,L))) /\
757   (!N O P. equal(N,O) ==> equal(parent_of(N,P),parent_of(O,P))) /\
758   (!Q S' R. equal(Q,R) ==> equal(parent_of(S',Q),parent_of(S',R))) /\
759   (!T' U. equal(T',U) ==> equal(right_child_of(T'),right_child_of(U))) /\
760   (!V W X. equal(V,W) /\ contradictory(V,X) ==> contradictory(W,X)) /\
761   (!Y A1 Z. equal(Y,Z) /\ contradictory(A1,Y) ==> contradictory(A1,Z)) /\
762   (!B1 C1 D1. equal(B1,C1) /\ failure_node(B1,D1) ==> failure_node(C1,D1)) /\
763   (!E1 G1 F1. equal(E1,F1) /\ failure_node(G1,E1) ==> failure_node(G1,F1)) /\
764   (!H1 I1 J1. equal(H1,I1) /\ siblings(H1,J1) ==> siblings(I1,J1)) /\
765   (!K1 M1 L1. equal(K1,L1) /\ siblings(M1,K1) ==> siblings(M1,L1)) /\
766   (failure_node(n_left,or(empty,atom))) /\
767   (failure_node(n_right,or(empty,negate(atom)))) /\
768   (equal(n_left,left_child_of(n))) /\
769   (equal(n_right,right_child_of(n))) /\
770   (!Z. ~failure_node(Z,or(empty,empty))) ==> F`;
771
772
773val GEO003_1 = M "GEO003_1"
774 ���(!X:'a. equal(X,X)) /\
775   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
776   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
777   (!X Y. between(X,Y,X) ==> equal(X,Y)) /\
778   (!V X Y Z. between(X,Y,V) /\ between(Y,Z,V) ==> between(X,Y,Z)) /\
779   (!Y X V Z. between(X,Y,Z) /\ between(X,Y,V) ==> equal(X,Y) \/ between(X,Z,V) \/ between(X,V,Z)) /\
780   (!Y X. equidistant(X,Y,Y,X)) /\
781   (!Z X Y. equidistant(X,Y,Z,Z) ==> equal(X,Y)) /\
782   (!X Y Z V V2 W. equidistant(X,Y,Z,V) /\ equidistant(X,Y,V2,W) ==> equidistant(Z,V,V2,W)) /\
783   (!W X Z V Y. between(X,W,V) /\ between(Y,V,Z) ==> between(X,outer_pasch(W,X,Y,Z,V),Y)) /\
784   (!W X Y Z V. between(X,W,V) /\ between(Y,V,Z) ==> between(Z,W,outer_pasch(W,X,Y,Z,V))) /\
785   (!W X Y Z V. between(X,V,W) /\ between(Y,V,Z) ==> equal(X,V) \/ between(X,Z,euclid1(W,X,Y,Z,V))) /\
786   (!W X Y Z V. between(X,V,W) /\ between(Y,V,Z) ==> equal(X,V) \/ between(X,Y,euclid2(W,X,Y,Z,V))) /\
787   (!W X Y Z V. between(X,V,W) /\ between(Y,V,Z) ==> equal(X,V) \/ between(euclid1(W,X,Y,Z,V),W,euclid2(W,X,Y,Z,V))) /\
788   (!X1 Y1 X Y Z V Z1 V1. equidistant(X,Y,X1,Y1) /\ equidistant(Y,Z,Y1,Z1) /\ equidistant(X,V,X1,V1) /\ equidistant(Y,V,Y1,V1) /\ between(X,Y,Z) /\ between(X1,Y1,Z1) ==> equal(X,Y) \/ equidistant(Z,V,Z1,V1)) /\
789   (!X Y W V. between(X,Y,extension(X,Y,W,V))) /\
790   (!X Y W V. equidistant(Y,extension(X,Y,W,V),W,V)) /\
791   (~between(lower_dimension_point_1,lower_dimension_point_2,lower_dimension_point_3)) /\
792   (~between(lower_dimension_point_2,lower_dimension_point_3,lower_dimension_point_1)) /\
793   (~between(lower_dimension_point_3,lower_dimension_point_1,lower_dimension_point_2)) /\
794   (!Z X Y W V. equidistant(X,W,X,V) /\ equidistant(Y,W,Y,V) /\ equidistant(Z,W,Z,V) ==> between(X,Y,Z) \/ between(Y,Z,X) \/ between(Z,X,Y) \/ equal(W,V)) /\
795   (!X Y Z X1 Z1 V. equidistant(V,X,V,X1) /\ equidistant(V,Z,V,Z1) /\ between(V,X,Z) /\ between(X,Y,Z) ==> equidistant(V,Y,Z,continuous(X,Y,Z,X1,Z1,V))) /\
796   (!X Y Z X1 V Z1. equidistant(V,X,V,X1) /\ equidistant(V,Z,V,Z1) /\ between(V,X,Z) /\ between(X,Y,Z) ==> between(X1,continuous(X,Y,Z,X1,Z1,V),Z1)) /\
797   (!X Y W Z. equal(X,Y) /\ between(X,W,Z) ==> between(Y,W,Z)) /\
798   (!X W Y Z. equal(X,Y) /\ between(W,X,Z) ==> between(W,Y,Z)) /\
799   (!X W Z Y. equal(X,Y) /\ between(W,Z,X) ==> between(W,Z,Y)) /\
800   (!X Y V W Z. equal(X,Y) /\ equidistant(X,V,W,Z) ==> equidistant(Y,V,W,Z)) /\
801   (!X V Y W Z. equal(X,Y) /\ equidistant(V,X,W,Z) ==> equidistant(V,Y,W,Z)) /\
802   (!X V W Y Z. equal(X,Y) /\ equidistant(V,W,X,Z) ==> equidistant(V,W,Y,Z)) /\
803   (!X V W Z Y. equal(X,Y) /\ equidistant(V,W,Z,X) ==> equidistant(V,W,Z,Y)) /\
804   (!X Y V1 V2 V3 V4. equal(X,Y) ==> equal(outer_pasch(X,V1,V2,V3,V4),outer_pasch(Y,V1,V2,V3,V4))) /\
805   (!X V1 Y V2 V3 V4. equal(X,Y) ==> equal(outer_pasch(V1,X,V2,V3,V4),outer_pasch(V1,Y,V2,V3,V4))) /\
806   (!X V1 V2 Y V3 V4. equal(X,Y) ==> equal(outer_pasch(V1,V2,X,V3,V4),outer_pasch(V1,V2,Y,V3,V4))) /\
807   (!X V1 V2 V3 Y V4. equal(X,Y) ==> equal(outer_pasch(V1,V2,V3,X,V4),outer_pasch(V1,V2,V3,Y,V4))) /\
808   (!X V1 V2 V3 V4 Y. equal(X,Y) ==> equal(outer_pasch(V1,V2,V3,V4,X),outer_pasch(V1,V2,V3,V4,Y))) /\
809   (!A B C D E F'. equal(A,B) ==> equal(euclid1(A,C,D,E,F'),euclid1(B,C,D,E,F'))) /\
810   (!G I' H J K' L. equal(G,H) ==> equal(euclid1(I',G,J,K',L),euclid1(I',H,J,K',L))) /\
811   (!M O P N Q R. equal(M,N) ==> equal(euclid1(O,P,M,Q,R),euclid1(O,P,N,Q,R))) /\
812   (!S' U V W T' X. equal(S',T') ==> equal(euclid1(U,V,W,S',X),euclid1(U,V,W,T',X))) /\
813   (!Y A1 B1 C1 D1 Z. equal(Y,Z) ==> equal(euclid1(A1,B1,C1,D1,Y),euclid1(A1,B1,C1,D1,Z))) /\
814   (!E1 F1 G1 H1 I1 J1. equal(E1,F1) ==> equal(euclid2(E1,G1,H1,I1,J1),euclid2(F1,G1,H1,I1,J1))) /\
815   (!K1 M1 L1 N1 O1 P1. equal(K1,L1) ==> equal(euclid2(M1,K1,N1,O1,P1),euclid2(M1,L1,N1,O1,P1))) /\
816   (!Q1 S1 T1 R1 U1 V1. equal(Q1,R1) ==> equal(euclid2(S1,T1,Q1,U1,V1),euclid2(S1,T1,R1,U1,V1))) /\
817   (!W1 Y1 Z1 A2 X1 B2. equal(W1,X1) ==> equal(euclid2(Y1,Z1,A2,W1,B2),euclid2(Y1,Z1,A2,X1,B2))) /\
818   (!C2 E2 F2 G2 H2 D2. equal(C2,D2) ==> equal(euclid2(E2,F2,G2,H2,C2),euclid2(E2,F2,G2,H2,D2))) /\
819   (!X Y V1 V2 V3. equal(X,Y) ==> equal(extension(X,V1,V2,V3),extension(Y,V1,V2,V3))) /\
820   (!X V1 Y V2 V3. equal(X,Y) ==> equal(extension(V1,X,V2,V3),extension(V1,Y,V2,V3))) /\
821   (!X V1 V2 Y V3. equal(X,Y) ==> equal(extension(V1,V2,X,V3),extension(V1,V2,Y,V3))) /\
822   (!X V1 V2 V3 Y. equal(X,Y) ==> equal(extension(V1,V2,V3,X),extension(V1,V2,V3,Y))) /\
823   (!X Y V1 V2 V3 V4 V5. equal(X,Y) ==> equal(continuous(X,V1,V2,V3,V4,V5),continuous(Y,V1,V2,V3,V4,V5))) /\
824   (!X V1 Y V2 V3 V4 V5. equal(X,Y) ==> equal(continuous(V1,X,V2,V3,V4,V5),continuous(V1,Y,V2,V3,V4,V5))) /\
825   (!X V1 V2 Y V3 V4 V5. equal(X,Y) ==> equal(continuous(V1,V2,X,V3,V4,V5),continuous(V1,V2,Y,V3,V4,V5))) /\
826   (!X V1 V2 V3 Y V4 V5. equal(X,Y) ==> equal(continuous(V1,V2,V3,X,V4,V5),continuous(V1,V2,V3,Y,V4,V5))) /\
827   (!X V1 V2 V3 V4 Y V5. equal(X,Y) ==> equal(continuous(V1,V2,V3,V4,X,V5),continuous(V1,V2,V3,V4,Y,V5))) /\
828   (!X V1 V2 V3 V4 V5 Y. equal(X,Y) ==> equal(continuous(V1,V2,V3,V4,V5,X),continuous(V1,V2,V3,V4,V5,Y))) /\
829   (~between(a,b,b)) ==> F���;
830
831
832val GEO017_2 = M "GEO017_2"
833 ���(!X:'a. equal(X,X)) /\
834   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
835   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
836   (!Y X. equidistant(X,Y,Y,X)) /\
837   (!X Y Z V V2 W. equidistant(X,Y,Z,V) /\ equidistant(X,Y,V2,W) ==> equidistant(Z,V,V2,W)) /\
838   (!Z X Y. equidistant(X,Y,Z,Z) ==> equal(X,Y)) /\
839   (!X Y W V. between(X,Y,extension(X,Y,W,V))) /\
840   (!X Y W V. equidistant(Y,extension(X,Y,W,V),W,V)) /\
841   (!X1 Y1 X Y Z V Z1 V1. equidistant(X,Y,X1,Y1) /\ equidistant(Y,Z,Y1,Z1) /\ equidistant(X,V,X1,V1) /\ equidistant(Y,V,Y1,V1) /\ between(X,Y,Z) /\ between(X1,Y1,Z1) ==> equal(X,Y) \/ equidistant(Z,V,Z1,V1)) /\
842   (!X Y. between(X,Y,X) ==> equal(X,Y)) /\
843   (!U V W X Y. between(U,V,W) /\ between(Y,X,W) ==> between(V,inner_pasch(U,V,W,X,Y),Y)) /\
844   (!V W X Y U. between(U,V,W) /\ between(Y,X,W) ==> between(X,inner_pasch(U,V,W,X,Y),U)) /\
845   (~between(lower_dimension_point_1,lower_dimension_point_2,lower_dimension_point_3)) /\
846   (~between(lower_dimension_point_2,lower_dimension_point_3,lower_dimension_point_1)) /\
847   (~between(lower_dimension_point_3,lower_dimension_point_1,lower_dimension_point_2)) /\
848   (!Z X Y W V. equidistant(X,W,X,V) /\ equidistant(Y,W,Y,V) /\ equidistant(Z,W,Z,V) ==> between(X,Y,Z) \/ between(Y,Z,X) \/ between(Z,X,Y) \/ equal(W,V)) /\
849   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(U,V,euclid1(U,V,W,X,Y))) /\
850   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(U,X,euclid2(U,V,W,X,Y))) /\
851   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(euclid1(U,V,W,X,Y),Y,euclid2(U,V,W,X,Y))) /\
852   (!U V V1 W X X1. equidistant(U,V,U,V1) /\ equidistant(U,X,U,X1) /\ between(U,V,X) /\ between(V,W,X) ==> between(V1,continuous(U,V,V1,W,X,X1),X1)) /\
853   (!U V V1 W X X1. equidistant(U,V,U,V1) /\ equidistant(U,X,U,X1) /\ between(U,V,X) /\ between(V,W,X) ==> equidistant(U,W,U,continuous(U,V,V1,W,X,X1))) /\
854   (!X Y W Z. equal(X,Y) /\ between(X,W,Z) ==> between(Y,W,Z)) /\
855   (!X W Y Z. equal(X,Y) /\ between(W,X,Z) ==> between(W,Y,Z)) /\
856   (!X W Z Y. equal(X,Y) /\ between(W,Z,X) ==> between(W,Z,Y)) /\
857   (!X Y V W Z. equal(X,Y) /\ equidistant(X,V,W,Z) ==> equidistant(Y,V,W,Z)) /\
858   (!X V Y W Z. equal(X,Y) /\ equidistant(V,X,W,Z) ==> equidistant(V,Y,W,Z)) /\
859   (!X V W Y Z. equal(X,Y) /\ equidistant(V,W,X,Z) ==> equidistant(V,W,Y,Z)) /\
860   (!X V W Z Y. equal(X,Y) /\ equidistant(V,W,Z,X) ==> equidistant(V,W,Z,Y)) /\
861   (!X Y V1 V2 V3 V4. equal(X,Y) ==> equal(inner_pasch(X,V1,V2,V3,V4),inner_pasch(Y,V1,V2,V3,V4))) /\
862   (!X V1 Y V2 V3 V4. equal(X,Y) ==> equal(inner_pasch(V1,X,V2,V3,V4),inner_pasch(V1,Y,V2,V3,V4))) /\
863   (!X V1 V2 Y V3 V4. equal(X,Y) ==> equal(inner_pasch(V1,V2,X,V3,V4),inner_pasch(V1,V2,Y,V3,V4))) /\
864   (!X V1 V2 V3 Y V4. equal(X,Y) ==> equal(inner_pasch(V1,V2,V3,X,V4),inner_pasch(V1,V2,V3,Y,V4))) /\
865   (!X V1 V2 V3 V4 Y. equal(X,Y) ==> equal(inner_pasch(V1,V2,V3,V4,X),inner_pasch(V1,V2,V3,V4,Y))) /\
866   (!A B C D E F'. equal(A,B) ==> equal(euclid1(A,C,D,E,F'),euclid1(B,C,D,E,F'))) /\
867   (!G I' H J K' L. equal(G,H) ==> equal(euclid1(I',G,J,K',L),euclid1(I',H,J,K',L))) /\
868   (!M O P N Q R. equal(M,N) ==> equal(euclid1(O,P,M,Q,R),euclid1(O,P,N,Q,R))) /\
869   (!S' U V W T' X. equal(S',T') ==> equal(euclid1(U,V,W,S',X),euclid1(U,V,W,T',X))) /\
870   (!Y A1 B1 C1 D1 Z. equal(Y,Z) ==> equal(euclid1(A1,B1,C1,D1,Y),euclid1(A1,B1,C1,D1,Z))) /\
871   (!E1 F1 G1 H1 I1 J1. equal(E1,F1) ==> equal(euclid2(E1,G1,H1,I1,J1),euclid2(F1,G1,H1,I1,J1))) /\
872   (!K1 M1 L1 N1 O1 P1. equal(K1,L1) ==> equal(euclid2(M1,K1,N1,O1,P1),euclid2(M1,L1,N1,O1,P1))) /\
873   (!Q1 S1 T1 R1 U1 V1. equal(Q1,R1) ==> equal(euclid2(S1,T1,Q1,U1,V1),euclid2(S1,T1,R1,U1,V1))) /\
874   (!W1 Y1 Z1 A2 X1 B2. equal(W1,X1) ==> equal(euclid2(Y1,Z1,A2,W1,B2),euclid2(Y1,Z1,A2,X1,B2))) /\
875   (!C2 E2 F2 G2 H2 D2. equal(C2,D2) ==> equal(euclid2(E2,F2,G2,H2,C2),euclid2(E2,F2,G2,H2,D2))) /\
876   (!X Y V1 V2 V3. equal(X,Y) ==> equal(extension(X,V1,V2,V3),extension(Y,V1,V2,V3))) /\
877   (!X V1 Y V2 V3. equal(X,Y) ==> equal(extension(V1,X,V2,V3),extension(V1,Y,V2,V3))) /\
878   (!X V1 V2 Y V3. equal(X,Y) ==> equal(extension(V1,V2,X,V3),extension(V1,V2,Y,V3))) /\
879   (!X V1 V2 V3 Y. equal(X,Y) ==> equal(extension(V1,V2,V3,X),extension(V1,V2,V3,Y))) /\
880   (!X Y V1 V2 V3 V4 V5. equal(X,Y) ==> equal(continuous(X,V1,V2,V3,V4,V5),continuous(Y,V1,V2,V3,V4,V5))) /\
881   (!X V1 Y V2 V3 V4 V5. equal(X,Y) ==> equal(continuous(V1,X,V2,V3,V4,V5),continuous(V1,Y,V2,V3,V4,V5))) /\
882   (!X V1 V2 Y V3 V4 V5. equal(X,Y) ==> equal(continuous(V1,V2,X,V3,V4,V5),continuous(V1,V2,Y,V3,V4,V5))) /\
883   (!X V1 V2 V3 Y V4 V5. equal(X,Y) ==> equal(continuous(V1,V2,V3,X,V4,V5),continuous(V1,V2,V3,Y,V4,V5))) /\
884   (!X V1 V2 V3 V4 Y V5. equal(X,Y) ==> equal(continuous(V1,V2,V3,V4,X,V5),continuous(V1,V2,V3,V4,Y,V5))) /\
885   (!X V1 V2 V3 V4 V5 Y. equal(X,Y) ==> equal(continuous(V1,V2,V3,V4,V5,X),continuous(V1,V2,V3,V4,V5,Y))) /\
886   (equidistant(u,v,w,x)) /\
887   (~equidistant(u,v,x,w)) ==> F���;
888
889
890val GEO027_3 = M "GEO027_3" $
891 ���(!X:'a. equal(X,X)) /\
892   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
893   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
894   (!Y X. equidistant(X,Y,Y,X)) /\
895   (!X Y Z V V2 W. equidistant(X,Y,Z,V) /\ equidistant(X,Y,V2,W) ==> equidistant(Z,V,V2,W)) /\
896   (!Z X Y. equidistant(X,Y,Z,Z) ==> equal(X,Y)) /\
897   (!X Y W V. between(X,Y,extension(X,Y,W,V))) /\
898   (!X Y W V. equidistant(Y,extension(X,Y,W,V),W,V)) /\
899   (!X1 Y1 X Y Z V Z1 V1. equidistant(X,Y,X1,Y1) /\ equidistant(Y,Z,Y1,Z1) /\ equidistant(X,V,X1,V1) /\ equidistant(Y,V,Y1,V1) /\ between(X,Y,Z) /\ between(X1,Y1,Z1) ==> equal(X,Y) \/ equidistant(Z,V,Z1,V1)) /\
900   (!X Y. between(X,Y,X) ==> equal(X,Y)) /\
901   (!U V W X Y. between(U,V,W) /\ between(Y,X,W) ==> between(V,inner_pasch(U,V,W,X,Y),Y)) /\
902   (!V W X Y U. between(U,V,W) /\ between(Y,X,W) ==> between(X,inner_pasch(U,V,W,X,Y),U)) /\
903   (~between(lower_dimension_point_1,lower_dimension_point_2,lower_dimension_point_3)) /\
904   (~between(lower_dimension_point_2,lower_dimension_point_3,lower_dimension_point_1)) /\
905   (~between(lower_dimension_point_3,lower_dimension_point_1,lower_dimension_point_2)) /\
906   (!Z X Y W V. equidistant(X,W,X,V) /\ equidistant(Y,W,Y,V) /\ equidistant(Z,W,Z,V) ==> between(X,Y,Z) \/ between(Y,Z,X) \/ between(Z,X,Y) \/ equal(W,V)) /\
907   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(U,V,euclid1(U,V,W,X,Y))) /\
908   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(U,X,euclid2(U,V,W,X,Y))) /\
909   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(euclid1(U,V,W,X,Y),Y,euclid2(U,V,W,X,Y))) /\
910   (!U V V1 W X X1. equidistant(U,V,U,V1) /\ equidistant(U,X,U,X1) /\ between(U,V,X) /\ between(V,W,X) ==> between(V1,continuous(U,V,V1,W,X,X1),X1)) /\
911   (!U V V1 W X X1. equidistant(U,V,U,V1) /\ equidistant(U,X,U,X1) /\ between(U,V,X) /\ between(V,W,X) ==> equidistant(U,W,U,continuous(U,V,V1,W,X,X1))) /\
912   (!X Y W Z. equal(X,Y) /\ between(X,W,Z) ==> between(Y,W,Z)) /\
913   (!X W Y Z. equal(X,Y) /\ between(W,X,Z) ==> between(W,Y,Z)) /\
914   (!X W Z Y. equal(X,Y) /\ between(W,Z,X) ==> between(W,Z,Y)) /\
915   (!X Y V W Z. equal(X,Y) /\ equidistant(X,V,W,Z) ==> equidistant(Y,V,W,Z)) /\
916   (!X V Y W Z. equal(X,Y) /\ equidistant(V,X,W,Z) ==> equidistant(V,Y,W,Z)) /\
917   (!X V W Y Z. equal(X,Y) /\ equidistant(V,W,X,Z) ==> equidistant(V,W,Y,Z)) /\
918   (!X V W Z Y. equal(X,Y) /\ equidistant(V,W,Z,X) ==> equidistant(V,W,Z,Y)) /\
919   (!X Y V1 V2 V3 V4. equal(X,Y) ==> equal(inner_pasch(X,V1,V2,V3,V4),inner_pasch(Y,V1,V2,V3,V4))) /\
920   (!X V1 Y V2 V3 V4. equal(X,Y) ==> equal(inner_pasch(V1,X,V2,V3,V4),inner_pasch(V1,Y,V2,V3,V4))) /\
921   (!X V1 V2 Y V3 V4. equal(X,Y) ==> equal(inner_pasch(V1,V2,X,V3,V4),inner_pasch(V1,V2,Y,V3,V4))) /\
922   (!X V1 V2 V3 Y V4. equal(X,Y) ==> equal(inner_pasch(V1,V2,V3,X,V4),inner_pasch(V1,V2,V3,Y,V4))) /\
923   (!X V1 V2 V3 V4 Y. equal(X,Y) ==> equal(inner_pasch(V1,V2,V3,V4,X),inner_pasch(V1,V2,V3,V4,Y))) /\
924   (!A B C D E F'. equal(A,B) ==> equal(euclid1(A,C,D,E,F'),euclid1(B,C,D,E,F'))) /\
925   (!G I' H J K' L. equal(G,H) ==> equal(euclid1(I',G,J,K',L),euclid1(I',H,J,K',L))) /\
926   (!M O P N Q R. equal(M,N) ==> equal(euclid1(O,P,M,Q,R),euclid1(O,P,N,Q,R))) /\
927   (!S' U V W T' X. equal(S',T') ==> equal(euclid1(U,V,W,S',X),euclid1(U,V,W,T',X))) /\
928   (!Y A1 B1 C1 D1 Z. equal(Y,Z) ==> equal(euclid1(A1,B1,C1,D1,Y),euclid1(A1,B1,C1,D1,Z))) /\
929   (!E1 F1 G1 H1 I1 J1. equal(E1,F1) ==> equal(euclid2(E1,G1,H1,I1,J1),euclid2(F1,G1,H1,I1,J1))) /\
930   (!K1 M1 L1 N1 O1 P1. equal(K1,L1) ==> equal(euclid2(M1,K1,N1,O1,P1),euclid2(M1,L1,N1,O1,P1))) /\
931   (!Q1 S1 T1 R1 U1 V1. equal(Q1,R1) ==> equal(euclid2(S1,T1,Q1,U1,V1),euclid2(S1,T1,R1,U1,V1))) /\
932   (!W1 Y1 Z1 A2 X1 B2. equal(W1,X1) ==> equal(euclid2(Y1,Z1,A2,W1,B2),euclid2(Y1,Z1,A2,X1,B2))) /\
933   (!C2 E2 F2 G2 H2 D2. equal(C2,D2) ==> equal(euclid2(E2,F2,G2,H2,C2),euclid2(E2,F2,G2,H2,D2))) /\
934   (!X Y V1 V2 V3. equal(X,Y) ==> equal(extension(X,V1,V2,V3),extension(Y,V1,V2,V3))) /\
935   (!X V1 Y V2 V3. equal(X,Y) ==> equal(extension(V1,X,V2,V3),extension(V1,Y,V2,V3))) /\
936   (!X V1 V2 Y V3. equal(X,Y) ==> equal(extension(V1,V2,X,V3),extension(V1,V2,Y,V3))) /\
937   (!X V1 V2 V3 Y. equal(X,Y) ==> equal(extension(V1,V2,V3,X),extension(V1,V2,V3,Y))) /\
938   (!X Y V1 V2 V3 V4 V5. equal(X,Y) ==> equal(continuous(X,V1,V2,V3,V4,V5),continuous(Y,V1,V2,V3,V4,V5))) /\
939   (!X V1 Y V2 V3 V4 V5. equal(X,Y) ==> equal(continuous(V1,X,V2,V3,V4,V5),continuous(V1,Y,V2,V3,V4,V5))) /\
940   (!X V1 V2 Y V3 V4 V5. equal(X,Y) ==> equal(continuous(V1,V2,X,V3,V4,V5),continuous(V1,V2,Y,V3,V4,V5))) /\
941   (!X V1 V2 V3 Y V4 V5. equal(X,Y) ==> equal(continuous(V1,V2,V3,X,V4,V5),continuous(V1,V2,V3,Y,V4,V5))) /\
942   (!X V1 V2 V3 V4 Y V5. equal(X,Y) ==> equal(continuous(V1,V2,V3,V4,X,V5),continuous(V1,V2,V3,V4,Y,V5))) /\
943   (!X V1 V2 V3 V4 V5 Y. equal(X,Y) ==> equal(continuous(V1,V2,V3,V4,V5,X),continuous(V1,V2,V3,V4,V5,Y))) /\
944   (!U V. equal(reflection(U,V),extension(U,V,U,V))) /\
945   (!X Y Z. equal(X,Y) ==> equal(reflection(X,Z),reflection(Y,Z))) /\
946   (!A1 C1 B1. equal(A1,B1) ==> equal(reflection(C1,A1),reflection(C1,B1))) /\
947   (!U V. equidistant(U,V,U,V)) /\
948   (!W X U V. equidistant(U,V,W,X) ==> equidistant(W,X,U,V)) /\
949   (!V U W X. equidistant(U,V,W,X) ==> equidistant(V,U,W,X)) /\
950   (!U V X W. equidistant(U,V,W,X) ==> equidistant(U,V,X,W)) /\
951   (!V U X W. equidistant(U,V,W,X) ==> equidistant(V,U,X,W)) /\
952   (!W X V U. equidistant(U,V,W,X) ==> equidistant(W,X,V,U)) /\
953   (!X W U V. equidistant(U,V,W,X) ==> equidistant(X,W,U,V)) /\
954   (!X W V U. equidistant(U,V,W,X) ==> equidistant(X,W,V,U)) /\
955   (!W X U V Y Z. equidistant(U,V,W,X) /\ equidistant(W,X,Y,Z) ==> equidistant(U,V,Y,Z)) /\
956   (!U V W. equal(V,extension(U,V,W,W))) /\
957   (!W X U V Y. equal(Y,extension(U,V,W,X)) ==> between(U,V,Y)) /\
958   (!U V. between(U,V,reflection(U,V))) /\
959   (!U V. equidistant(V,reflection(U,V),U,V)) /\
960   (!U V. equal(U,V) ==> equal(V,reflection(U,V))) /\
961   (!U. equal(U,reflection(U,U))) /\
962   (!U V. equal(V,reflection(U,V)) ==> equal(U,V)) /\
963   (!U V. equidistant(U,U,V,V)) /\
964   (!V V1 U W U1 W1. equidistant(U,V,U1,V1) /\ equidistant(V,W,V1,W1) /\ between(U,V,W) /\ between(U1,V1,W1) ==> equidistant(U,W,U1,W1)) /\
965   (!U V W X. between(U,V,W) /\ between(U,V,X) /\ equidistant(V,W,V,X) ==> equal(U,V) \/ equal(W,X)) /\
966   (between(u,v,w)) /\
967   (~equal(u,v)) /\
968   (~equal(w,extension(u,v,v,w))) ==> F���;
969
970
971val GEO058_2 = M "GEO058_2" $
972 ���(!X:'a. equal(X,X)) /\
973   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
974   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
975   (!Y X. equidistant(X,Y,Y,X)) /\
976   (!X Y Z V V2 W. equidistant(X,Y,Z,V) /\ equidistant(X,Y,V2,W) ==> equidistant(Z,V,V2,W)) /\
977   (!Z X Y. equidistant(X,Y,Z,Z) ==> equal(X,Y)) /\
978   (!X Y W V. between(X,Y,extension(X,Y,W,V))) /\
979   (!X Y W V. equidistant(Y,extension(X,Y,W,V),W,V)) /\
980   (!X1 Y1 X Y Z V Z1 V1. equidistant(X,Y,X1,Y1) /\ equidistant(Y,Z,Y1,Z1) /\ equidistant(X,V,X1,V1) /\ equidistant(Y,V,Y1,V1) /\ between(X,Y,Z) /\ between(X1,Y1,Z1) ==> equal(X,Y) \/ equidistant(Z,V,Z1,V1)) /\
981   (!X Y. between(X,Y,X) ==> equal(X,Y)) /\
982   (!U V W X Y. between(U,V,W) /\ between(Y,X,W) ==> between(V,inner_pasch(U,V,W,X,Y),Y)) /\
983   (!V W X Y U. between(U,V,W) /\ between(Y,X,W) ==> between(X,inner_pasch(U,V,W,X,Y),U)) /\
984   (~between(lower_dimension_point_1,lower_dimension_point_2,lower_dimension_point_3)) /\
985   (~between(lower_dimension_point_2,lower_dimension_point_3,lower_dimension_point_1)) /\
986   (~between(lower_dimension_point_3,lower_dimension_point_1,lower_dimension_point_2)) /\
987   (!Z X Y W V. equidistant(X,W,X,V) /\ equidistant(Y,W,Y,V) /\ equidistant(Z,W,Z,V) ==> between(X,Y,Z) \/ between(Y,Z,X) \/ between(Z,X,Y) \/ equal(W,V)) /\
988   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(U,V,euclid1(U,V,W,X,Y))) /\
989   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(U,X,euclid2(U,V,W,X,Y))) /\
990   (!U V W X Y. between(U,W,Y) /\ between(V,W,X) ==> equal(U,W) \/ between(euclid1(U,V,W,X,Y),Y,euclid2(U,V,W,X,Y))) /\
991   (!U V V1 W X X1. equidistant(U,V,U,V1) /\ equidistant(U,X,U,X1) /\ between(U,V,X) /\ between(V,W,X) ==> between(V1,continuous(U,V,V1,W,X,X1),X1)) /\
992   (!U V V1 W X X1. equidistant(U,V,U,V1) /\ equidistant(U,X,U,X1) /\ between(U,V,X) /\ between(V,W,X) ==> equidistant(U,W,U,continuous(U,V,V1,W,X,X1))) /\
993   (!X Y W Z. equal(X,Y) /\ between(X,W,Z) ==> between(Y,W,Z)) /\
994   (!X W Y Z. equal(X,Y) /\ between(W,X,Z) ==> between(W,Y,Z)) /\
995   (!X W Z Y. equal(X,Y) /\ between(W,Z,X) ==> between(W,Z,Y)) /\
996   (!X Y V W Z. equal(X,Y) /\ equidistant(X,V,W,Z) ==> equidistant(Y,V,W,Z)) /\
997   (!X V Y W Z. equal(X,Y) /\ equidistant(V,X,W,Z) ==> equidistant(V,Y,W,Z)) /\
998   (!X V W Y Z. equal(X,Y) /\ equidistant(V,W,X,Z) ==> equidistant(V,W,Y,Z)) /\
999   (!X V W Z Y. equal(X,Y) /\ equidistant(V,W,Z,X) ==> equidistant(V,W,Z,Y)) /\
1000   (!X Y V1 V2 V3 V4. equal(X,Y) ==> equal(inner_pasch(X,V1,V2,V3,V4),inner_pasch(Y,V1,V2,V3,V4))) /\
1001   (!X V1 Y V2 V3 V4. equal(X,Y) ==> equal(inner_pasch(V1,X,V2,V3,V4),inner_pasch(V1,Y,V2,V3,V4))) /\
1002   (!X V1 V2 Y V3 V4. equal(X,Y) ==> equal(inner_pasch(V1,V2,X,V3,V4),inner_pasch(V1,V2,Y,V3,V4))) /\
1003   (!X V1 V2 V3 Y V4. equal(X,Y) ==> equal(inner_pasch(V1,V2,V3,X,V4),inner_pasch(V1,V2,V3,Y,V4))) /\
1004   (!X V1 V2 V3 V4 Y. equal(X,Y) ==> equal(inner_pasch(V1,V2,V3,V4,X),inner_pasch(V1,V2,V3,V4,Y))) /\
1005   (!A B C D E F'. equal(A,B) ==> equal(euclid1(A,C,D,E,F'),euclid1(B,C,D,E,F'))) /\
1006   (!G I' H J K' L. equal(G,H) ==> equal(euclid1(I',G,J,K',L),euclid1(I',H,J,K',L))) /\
1007   (!M O P N Q R. equal(M,N) ==> equal(euclid1(O,P,M,Q,R),euclid1(O,P,N,Q,R))) /\
1008   (!S' U V W T' X. equal(S',T') ==> equal(euclid1(U,V,W,S',X),euclid1(U,V,W,T',X))) /\
1009   (!Y A1 B1 C1 D1 Z. equal(Y,Z) ==> equal(euclid1(A1,B1,C1,D1,Y),euclid1(A1,B1,C1,D1,Z))) /\
1010   (!E1 F1 G1 H1 I1 J1. equal(E1,F1) ==> equal(euclid2(E1,G1,H1,I1,J1),euclid2(F1,G1,H1,I1,J1))) /\
1011   (!K1 M1 L1 N1 O1 P1. equal(K1,L1) ==> equal(euclid2(M1,K1,N1,O1,P1),euclid2(M1,L1,N1,O1,P1))) /\
1012   (!Q1 S1 T1 R1 U1 V1. equal(Q1,R1) ==> equal(euclid2(S1,T1,Q1,U1,V1),euclid2(S1,T1,R1,U1,V1))) /\
1013   (!W1 Y1 Z1 A2 X1 B2. equal(W1,X1) ==> equal(euclid2(Y1,Z1,A2,W1,B2),euclid2(Y1,Z1,A2,X1,B2))) /\
1014   (!C2 E2 F2 G2 H2 D2. equal(C2,D2) ==> equal(euclid2(E2,F2,G2,H2,C2),euclid2(E2,F2,G2,H2,D2))) /\
1015   (!X Y V1 V2 V3. equal(X,Y) ==> equal(extension(X,V1,V2,V3),extension(Y,V1,V2,V3))) /\
1016   (!X V1 Y V2 V3. equal(X,Y) ==> equal(extension(V1,X,V2,V3),extension(V1,Y,V2,V3))) /\
1017   (!X V1 V2 Y V3. equal(X,Y) ==> equal(extension(V1,V2,X,V3),extension(V1,V2,Y,V3))) /\
1018   (!X V1 V2 V3 Y. equal(X,Y) ==> equal(extension(V1,V2,V3,X),extension(V1,V2,V3,Y))) /\
1019   (!X Y V1 V2 V3 V4 V5. equal(X,Y) ==> equal(continuous(X,V1,V2,V3,V4,V5),continuous(Y,V1,V2,V3,V4,V5))) /\
1020   (!X V1 Y V2 V3 V4 V5. equal(X,Y) ==> equal(continuous(V1,X,V2,V3,V4,V5),continuous(V1,Y,V2,V3,V4,V5))) /\
1021   (!X V1 V2 Y V3 V4 V5. equal(X,Y) ==> equal(continuous(V1,V2,X,V3,V4,V5),continuous(V1,V2,Y,V3,V4,V5))) /\
1022   (!X V1 V2 V3 Y V4 V5. equal(X,Y) ==> equal(continuous(V1,V2,V3,X,V4,V5),continuous(V1,V2,V3,Y,V4,V5))) /\
1023   (!X V1 V2 V3 V4 Y V5. equal(X,Y) ==> equal(continuous(V1,V2,V3,V4,X,V5),continuous(V1,V2,V3,V4,Y,V5))) /\
1024   (!X V1 V2 V3 V4 V5 Y. equal(X,Y) ==> equal(continuous(V1,V2,V3,V4,V5,X),continuous(V1,V2,V3,V4,V5,Y))) /\
1025   (!U V. equal(reflection(U,V),extension(U,V,U,V))) /\
1026   (!X Y Z. equal(X,Y) ==> equal(reflection(X,Z),reflection(Y,Z))) /\
1027   (!A1 C1 B1. equal(A1,B1) ==> equal(reflection(C1,A1),reflection(C1,B1))) /\
1028   (equal(v,reflection(u,v))) /\
1029   (~equal(u,v)) ==> F���;
1030
1031
1032val GEO079_1 = M "GEO079_1" $
1033Lib.with_flag(Globals.guessing_tyvars,true)
1034 Term
1035`(!U V W X Y Z. right_angle(U,V,W) /\ right_angle(X,Y,Z) ==> eq(U,V,W,X,Y,Z)) /\
1036   (!U V W X Y Z. congruent(U,V,W,X,Y,Z) ==> eq(U,V,W,X,Y,Z)) /\
1037   (!V W U X. trapezoid(U,V,W,X) ==> parallel(V,W,U,X)) /\
1038   (!U V X Y. parallel(U,V,X,Y) ==> eq(X,V,U,V,X,Y)) /\
1039   (trapezoid(a,b,c,d)) /\
1040   (~eq(a,c,b,c,a,d)) ==> F`;
1041
1042
1043val GRP001_1 = M "GRP001_1" $
1044 ���(!X:'a. equal(X,X)) /\
1045   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1046   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1047   (!X. product(identity,X,X)) /\
1048   (!X. product(X,identity,X)) /\
1049   (!X. product(inverse(X),X,identity)) /\
1050   (!X. product(X,inverse(X),identity)) /\
1051   (!X Y. product(X,Y,multiply(X,Y))) /\
1052   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
1053   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
1054   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
1055   (!X Y. equal(X,Y) ==> equal(inverse(X),inverse(Y))) /\
1056   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
1057   (!X W Y. equal(X,Y) ==> equal(multiply(W,X),multiply(W,Y))) /\
1058   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
1059   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
1060   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
1061   (!X. product(X,X,identity)) /\
1062   (product(a,b,c)) /\
1063   (~product(b,a,c)) ==> F���;
1064
1065
1066val GRP008_1 = M "GRP008_1" $
1067 ���(!X:'a. equal(X,X)) /\
1068   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1069   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1070   (!X. product(identity,X,X)) /\
1071   (!X. product(X,identity,X)) /\
1072   (!X. product(inverse(X),X,identity)) /\
1073   (!X. product(X,inverse(X),identity)) /\
1074   (!X Y. product(X,Y,multiply(X,Y))) /\
1075   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
1076   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
1077   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
1078   (!X Y. equal(X,Y) ==> equal(inverse(X),inverse(Y))) /\
1079   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
1080   (!X W Y. equal(X,Y) ==> equal(multiply(W,X),multiply(W,Y))) /\
1081   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
1082   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
1083   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
1084   (!A B. equal(A,B) ==> equal(h(A),h(B))) /\
1085   (!C D. equal(C,D) ==> equal(j(C),j(D))) /\
1086   (!A B. equal(A,B) /\ q(A) ==> q(B)) /\
1087   (!B A C. q(A) /\ product(A,B,C) ==> product(B,A,C)) /\
1088   (!A. product(j(A),A,h(A)) \/ product(A,j(A),h(A)) \/ q(A)) /\
1089   (!A. product(j(A),A,h(A)) /\ product(A,j(A),h(A)) ==> q(A)) /\
1090   (~q(identity)) ==> F���;
1091
1092
1093val GRP013_1 = M "GRP013_1" $
1094 ���(!X:'a. equal(X,X)) /\
1095   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1096   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1097   (!X. product(identity,X,X)) /\
1098   (!X. product(X,identity,X)) /\
1099   (!X. product(inverse(X),X,identity)) /\
1100   (!X. product(X,inverse(X),identity)) /\
1101   (!X Y. product(X,Y,multiply(X,Y))) /\
1102   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
1103   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
1104   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
1105   (!X Y. equal(X,Y) ==> equal(inverse(X),inverse(Y))) /\
1106   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
1107   (!X W Y. equal(X,Y) ==> equal(multiply(W,X),multiply(W,Y))) /\
1108   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
1109   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
1110   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
1111   (!A. product(A,A,identity)) /\
1112   (product(a,b,c)) /\
1113   (product(inverse(a),inverse(b),d)) /\
1114   (!A C B. product(inverse(A),inverse(B),C) ==> product(A,C,B)) /\
1115   (~product(c,d,identity)) ==> F���;
1116
1117
1118val GRP037_3 = M "GRP037_3" $
1119 ���(!X:'a. equal(X,X)) /\
1120   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1121   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1122   (!X. product(identity,X,X)) /\
1123   (!X. product(X,identity,X)) /\
1124   (!X. product(inverse(X),X,identity)) /\
1125   (!X. product(X,inverse(X),identity)) /\
1126   (!X Y. product(X,Y,multiply(X,Y))) /\
1127   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
1128   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
1129   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
1130   (!X Y. equal(X,Y) ==> equal(inverse(X),inverse(Y))) /\
1131   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
1132   (!X W Y. equal(X,Y) ==> equal(multiply(W,X),multiply(W,Y))) /\
1133   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
1134   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
1135   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
1136   (!A B C. subgroup_member(A) /\ subgroup_member(B) /\ product(A,inverse(B),C) ==> subgroup_member(C)) /\
1137   (!A B. equal(A,B) /\ subgroup_member(A) ==> subgroup_member(B)) /\
1138   (!A. subgroup_member(A) ==> product(another_identity,A,A)) /\
1139   (!A. subgroup_member(A) ==> product(A,another_identity,A)) /\
1140   (!A. subgroup_member(A) ==> product(A,another_inverse(A),another_identity)) /\
1141   (!A. subgroup_member(A) ==> product(another_inverse(A),A,another_identity)) /\
1142   (!A. subgroup_member(A) ==> subgroup_member(another_inverse(A))) /\
1143   (!A B. equal(A,B) ==> equal(another_inverse(A),another_inverse(B))) /\
1144   (!A C D B. product(A,B,C) /\ product(A,D,C) ==> equal(D,B)) /\
1145   (!B C D A. product(A,B,C) /\ product(D,B,C) ==> equal(D,A)) /\
1146   (subgroup_member(a)) /\
1147   (subgroup_member(another_identity)) /\
1148   (~equal(inverse(a),another_inverse(a))) ==> F���;
1149
1150
1151val GRP031_2 = M "GRP031_2" $
1152 ���(!X Y. product(X,Y,multiply(X,Y))) /\
1153   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
1154   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
1155   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
1156   (!A. product(A,inverse(A),identity)) /\
1157   (!A:'a. product(A,identity,A)) /\
1158   (!A. ~product(A,a,identity)) ==> F���;
1159
1160
1161val GRP034_4 = M "GRP034_4" $
1162 ���(!X Y:'a. product(X,Y,multiply(X,Y))) /\
1163   (!X. product(identity,X,X)) /\
1164   (!X. product(X,identity,X)) /\
1165   (!X. product(X,inverse(X),identity)) /\
1166   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
1167   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
1168   (!B A C. subgroup_member(A) /\ subgroup_member(B) /\ product(B,inverse(A),C) ==> subgroup_member(C)) /\
1169   (subgroup_member(a)) /\
1170   (~subgroup_member(inverse(a))) ==> F���;
1171
1172
1173val GRP047_2 = M "GRP047_2" $
1174 ���(!X:'a. product(identity,X,X)) /\
1175   (!X. product(inverse(X),X,identity)) /\
1176   (!X Y. product(X,Y,multiply(X,Y))) /\
1177   (!X Y Z W. product(X,Y,Z) /\ product(X,Y,W) ==> equal(Z,W)) /\
1178   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
1179   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
1180   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
1181   (equal(a,b)) /\
1182   (~equal(multiply(c,a),multiply(c,b))) ==> F���;
1183
1184
1185val GRP130_1_002 = Mfail "GRP130_1_002" $
1186 ���(group_element(e_1:'a)) /\
1187   (group_element(e_2)) /\
1188   (~equal(e_1,e_2)) /\
1189   (~equal(e_2,e_1)) /\
1190   (!X Y. group_element(X) /\ group_element(Y) ==> product(X,Y,e_1) \/ product(X,Y,e_2)) /\
1191   (!X Y W Z. product(X,Y,W) /\ product(X,Y,Z) ==> equal(W,Z)) /\
1192   (!X Y W Z. product(X,W,Y) /\ product(X,Z,Y) ==> equal(W,Z)) /\
1193   (!Y X W Z. product(W,Y,X) /\ product(Z,Y,X) ==> equal(W,Z)) /\
1194   (!Z1 Z2 Y X. product(X,Y,Z1) /\ product(X,Z1,Z2) ==> product(Z2,Y,X)) ==> F���;
1195
1196
1197val GRP156_1 = M "GRP156_1" $
1198 ���(!X:'a. equal(X,X)) /\
1199   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1200   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1201   (!X. equal(multiply(identity,X),X)) /\
1202   (!X. equal(multiply(inverse(X),X),identity)) /\
1203   (!X Y Z. equal(multiply(multiply(X,Y),Z),multiply(X,multiply(Y,Z)))) /\
1204   (!A B. equal(A,B) ==> equal(inverse(A),inverse(B))) /\
1205   (!C D E. equal(C,D) ==> equal(multiply(C,E),multiply(D,E))) /\
1206   (!F' H G. equal(F',G) ==> equal(multiply(H,F'),multiply(H,G))) /\
1207   (!Y X. equal(greatest_lower_bound(X,Y),greatest_lower_bound(Y,X))) /\
1208   (!Y X. equal(least_upper_bound(X,Y),least_upper_bound(Y,X))) /\
1209   (!X Y Z. equal(greatest_lower_bound(X,greatest_lower_bound(Y,Z)),greatest_lower_bound(greatest_lower_bound(X,Y),Z))) /\
1210   (!X Y Z. equal(least_upper_bound(X,least_upper_bound(Y,Z)),least_upper_bound(least_upper_bound(X,Y),Z))) /\
1211   (!X. equal(least_upper_bound(X,X),X)) /\
1212   (!X. equal(greatest_lower_bound(X,X),X)) /\
1213   (!Y X. equal(least_upper_bound(X,greatest_lower_bound(X,Y)),X)) /\
1214   (!Y X. equal(greatest_lower_bound(X,least_upper_bound(X,Y)),X)) /\
1215   (!Y X Z. equal(multiply(X,least_upper_bound(Y,Z)),least_upper_bound(multiply(X,Y),multiply(X,Z)))) /\
1216   (!Y X Z. equal(multiply(X,greatest_lower_bound(Y,Z)),greatest_lower_bound(multiply(X,Y),multiply(X,Z)))) /\
1217   (!Y Z X. equal(multiply(least_upper_bound(Y,Z),X),least_upper_bound(multiply(Y,X),multiply(Z,X)))) /\
1218   (!Y Z X. equal(multiply(greatest_lower_bound(Y,Z),X),greatest_lower_bound(multiply(Y,X),multiply(Z,X)))) /\
1219   (!A B C. equal(A,B) ==> equal(greatest_lower_bound(A,C),greatest_lower_bound(B,C))) /\
1220   (!A C B. equal(A,B) ==> equal(greatest_lower_bound(C,A),greatest_lower_bound(C,B))) /\
1221   (!A B C. equal(A,B) ==> equal(least_upper_bound(A,C),least_upper_bound(B,C))) /\
1222   (!A C B. equal(A,B) ==> equal(least_upper_bound(C,A),least_upper_bound(C,B))) /\
1223   (!A B C. equal(A,B) ==> equal(multiply(A,C),multiply(B,C))) /\
1224   (!A C B. equal(A,B) ==> equal(multiply(C,A),multiply(C,B))) /\
1225   (equal(least_upper_bound(a,b),b)) /\
1226   (~equal(greatest_lower_bound(multiply(a,c),multiply(b,c)),multiply(a,c))) ==> F���;
1227
1228
1229val GRP168_1 = M "GRP168_1" $
1230 ���(!X:'a. equal(X,X)) /\
1231   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1232   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1233   (!X. equal(multiply(identity,X),X)) /\
1234   (!X. equal(multiply(inverse(X),X),identity)) /\
1235   (!X Y Z. equal(multiply(multiply(X,Y),Z),multiply(X,multiply(Y,Z)))) /\
1236   (!A B. equal(A,B) ==> equal(inverse(A),inverse(B))) /\
1237   (!C D E. equal(C,D) ==> equal(multiply(C,E),multiply(D,E))) /\
1238   (!F' H G. equal(F',G) ==> equal(multiply(H,F'),multiply(H,G))) /\
1239   (!Y X. equal(greatest_lower_bound(X,Y),greatest_lower_bound(Y,X))) /\
1240   (!Y X. equal(least_upper_bound(X,Y),least_upper_bound(Y,X))) /\
1241   (!X Y Z. equal(greatest_lower_bound(X,greatest_lower_bound(Y,Z)),greatest_lower_bound(greatest_lower_bound(X,Y),Z))) /\
1242   (!X Y Z. equal(least_upper_bound(X,least_upper_bound(Y,Z)),least_upper_bound(least_upper_bound(X,Y),Z))) /\
1243   (!X. equal(least_upper_bound(X,X),X)) /\
1244   (!X. equal(greatest_lower_bound(X,X),X)) /\
1245   (!Y X. equal(least_upper_bound(X,greatest_lower_bound(X,Y)),X)) /\
1246   (!Y X. equal(greatest_lower_bound(X,least_upper_bound(X,Y)),X)) /\
1247   (!Y X Z. equal(multiply(X,least_upper_bound(Y,Z)),least_upper_bound(multiply(X,Y),multiply(X,Z)))) /\
1248   (!Y X Z. equal(multiply(X,greatest_lower_bound(Y,Z)),greatest_lower_bound(multiply(X,Y),multiply(X,Z)))) /\
1249   (!Y Z X. equal(multiply(least_upper_bound(Y,Z),X),least_upper_bound(multiply(Y,X),multiply(Z,X)))) /\
1250   (!Y Z X. equal(multiply(greatest_lower_bound(Y,Z),X),greatest_lower_bound(multiply(Y,X),multiply(Z,X)))) /\
1251   (!A B C. equal(A,B) ==> equal(greatest_lower_bound(A,C),greatest_lower_bound(B,C))) /\
1252   (!A C B. equal(A,B) ==> equal(greatest_lower_bound(C,A),greatest_lower_bound(C,B))) /\
1253   (!A B C. equal(A,B) ==> equal(least_upper_bound(A,C),least_upper_bound(B,C))) /\
1254   (!A C B. equal(A,B) ==> equal(least_upper_bound(C,A),least_upper_bound(C,B))) /\
1255   (!A B C. equal(A,B) ==> equal(multiply(A,C),multiply(B,C))) /\
1256   (!A C B. equal(A,B) ==> equal(multiply(C,A),multiply(C,B))) /\
1257   (equal(least_upper_bound(a,b),b)) /\
1258   (~equal(least_upper_bound(multiply(inverse(c),multiply(a,c)),multiply(inverse(c),multiply(b,c))),multiply(inverse(c),multiply(b,c)))) ==> F���;
1259
1260
1261val HEN003_3 = M "HEN003_3" $
1262 ���(!X:'a. equal(X,X)) /\
1263   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1264   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1265   (!X Y. less_equal(X,Y) ==> equal(divide(X,Y),zero)) /\
1266   (!X Y. equal(divide(X,Y),zero) ==> less_equal(X,Y)) /\
1267   (!Y X. less_equal(divide(X,Y),X)) /\
1268   (!X Y Z. less_equal(divide(divide(X,Z),divide(Y,Z)),divide(divide(X,Y),Z))) /\
1269   (!X. less_equal(zero,X)) /\
1270   (!X Y. less_equal(X,Y) /\ less_equal(Y,X) ==> equal(X,Y)) /\
1271   (!X. less_equal(X,identity)) /\
1272   (!A B C. equal(A,B) ==> equal(divide(A,C),divide(B,C))) /\
1273   (!D F' E. equal(D,E) ==> equal(divide(F',D),divide(F',E))) /\
1274   (!G H I'. equal(G,H) /\ less_equal(G,I') ==> less_equal(H,I')) /\
1275   (!J L K'. equal(J,K') /\ less_equal(L,J) ==> less_equal(L,K')) /\
1276   (~equal(divide(a,a),zero)) ==> F���;
1277
1278
1279val HEN007_2 = M "HEN007_2" $
1280 ���(!X:'a. equal(X,X)) /\
1281   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1282   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1283   (!X Y. less_equal(X,Y) ==> quotient(X,Y,zero)) /\
1284   (!X Y. quotient(X,Y,zero) ==> less_equal(X,Y)) /\
1285   (!Y Z X. quotient(X,Y,Z) ==> less_equal(Z,X)) /\
1286   (!Y X V3 V2 V1 Z V4 V5. quotient(X,Y,V1) /\ quotient(Y,Z,V2) /\ quotient(X,Z,V3) /\ quotient(V3,V2,V4) /\ quotient(V1,Z,V5) ==> less_equal(V4,V5)) /\
1287   (!X. less_equal(zero,X)) /\
1288   (!X Y. less_equal(X,Y) /\ less_equal(Y,X) ==> equal(X,Y)) /\
1289   (!X. less_equal(X,identity)) /\
1290   (!X Y. quotient(X,Y,divide(X,Y))) /\
1291   (!X Y Z W. quotient(X,Y,Z) /\ quotient(X,Y,W) ==> equal(Z,W)) /\
1292   (!X Y W Z. equal(X,Y) /\ quotient(X,W,Z) ==> quotient(Y,W,Z)) /\
1293   (!X W Y Z. equal(X,Y) /\ quotient(W,X,Z) ==> quotient(W,Y,Z)) /\
1294   (!X W Z Y. equal(X,Y) /\ quotient(W,Z,X) ==> quotient(W,Z,Y)) /\
1295   (!X Z Y. equal(X,Y) /\ less_equal(Z,X) ==> less_equal(Z,Y)) /\
1296   (!X Y Z. equal(X,Y) /\ less_equal(X,Z) ==> less_equal(Y,Z)) /\
1297   (!X Y W. equal(X,Y) ==> equal(divide(X,W),divide(Y,W))) /\
1298   (!X W Y. equal(X,Y) ==> equal(divide(W,X),divide(W,Y))) /\
1299   (!X. quotient(X,identity,zero)) /\
1300   (!X. quotient(zero,X,zero)) /\
1301   (!X. quotient(X,X,zero)) /\
1302   (!X. quotient(X,zero,X)) /\
1303   (!Y X Z. less_equal(X,Y) /\ less_equal(Y,Z) ==> less_equal(X,Z)) /\
1304   (!W1 X Z W2 Y. quotient(X,Y,W1) /\ less_equal(W1,Z) /\ quotient(X,Z,W2) ==> less_equal(W2,Y)) /\
1305   (less_equal(x,y)) /\
1306   (quotient(z,y,zQy)) /\
1307   (quotient(z,x,zQx)) /\
1308   (~less_equal(zQy,zQx)) ==> F���;
1309
1310
1311val HEN008_4 = M "HEN008_4" $
1312 ���(!X:'a. equal(X,X)) /\
1313   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1314   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1315   (!X Y. less_equal(X,Y) ==> equal(divide(X,Y),zero)) /\
1316   (!X Y. equal(divide(X,Y),zero) ==> less_equal(X,Y)) /\
1317   (!Y X. less_equal(divide(X,Y),X)) /\
1318   (!X Y Z. less_equal(divide(divide(X,Z),divide(Y,Z)),divide(divide(X,Y),Z))) /\
1319   (!X. less_equal(zero,X)) /\
1320   (!X Y. less_equal(X,Y) /\ less_equal(Y,X) ==> equal(X,Y)) /\
1321   (!X. less_equal(X,identity)) /\
1322   (!A B C. equal(A,B) ==> equal(divide(A,C),divide(B,C))) /\
1323   (!D F' E. equal(D,E) ==> equal(divide(F',D),divide(F',E))) /\
1324   (!G H I'. equal(G,H) /\ less_equal(G,I') ==> less_equal(H,I')) /\
1325   (!J L K'. equal(J,K') /\ less_equal(L,J) ==> less_equal(L,K')) /\
1326   (!X. equal(divide(X,identity),zero)) /\
1327   (!X. equal(divide(zero,X),zero)) /\
1328   (!X. equal(divide(X,X),zero)) /\
1329   (equal(divide(a,zero),a)) /\
1330   (!Y X Z. less_equal(X,Y) /\ less_equal(Y,Z) ==> less_equal(X,Z)) /\
1331   (!X Z Y. less_equal(divide(X,Y),Z) ==> less_equal(divide(X,Z),Y)) /\
1332   (!Y Z X. less_equal(X,Y) ==> less_equal(divide(Z,Y),divide(Z,X))) /\
1333   (less_equal(a,b)) /\
1334   (~less_equal(divide(a,c),divide(b,c))) ==> F���;
1335
1336
1337val HEN009_5 = M "HEN009_5" $
1338 ���(!X:'a. equal(X,X)) /\
1339   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1340   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1341   (!Y X. equal(divide(divide(X,Y),X),zero)) /\
1342   (!X Y Z. equal(divide(divide(divide(X,Z),divide(Y,Z)),divide(divide(X,Y),Z)),zero)) /\
1343   (!X. equal(divide(zero,X),zero)) /\
1344   (!X Y. equal(divide(X,Y),zero) /\ equal(divide(Y,X),zero) ==> equal(X,Y)) /\
1345   (!X. equal(divide(X,identity),zero)) /\
1346   (!A B C. equal(A,B) ==> equal(divide(A,C),divide(B,C))) /\
1347   (!D F' E. equal(D,E) ==> equal(divide(F',D),divide(F',E))) /\
1348   (!Y X Z. equal(divide(X,Y),zero) /\ equal(divide(Y,Z),zero) ==> equal(divide(X,Z),zero)) /\
1349   (!X Z Y. equal(divide(divide(X,Y),Z),zero) ==> equal(divide(divide(X,Z),Y),zero)) /\
1350   (!Y Z X. equal(divide(X,Y),zero) ==> equal(divide(divide(Z,Y),divide(Z,X)),zero)) /\
1351   (~equal(divide(identity,a),divide(identity,divide(identity,divide(identity,a))))) /\
1352   (equal(divide(identity,a),b)) /\
1353   (equal(divide(identity,b),c)) /\
1354   (equal(divide(identity,c),d)) /\
1355   (~equal(b,d)) ==> F���;
1356
1357
1358val HEN012_3 = M "HEN012_3" $
1359 ���(!X:'a. equal(X,X)) /\
1360   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1361   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1362   (!X Y. less_equal(X,Y) ==> equal(divide(X,Y),zero)) /\
1363   (!X Y. equal(divide(X,Y),zero) ==> less_equal(X,Y)) /\
1364   (!Y X. less_equal(divide(X,Y),X)) /\
1365   (!X Y Z. less_equal(divide(divide(X,Z),divide(Y,Z)),divide(divide(X,Y),Z))) /\
1366   (!X. less_equal(zero,X)) /\
1367   (!X Y. less_equal(X,Y) /\ less_equal(Y,X) ==> equal(X,Y)) /\
1368   (!X. less_equal(X,identity)) /\
1369   (!A B C. equal(A,B) ==> equal(divide(A,C),divide(B,C))) /\
1370   (!D F' E. equal(D,E) ==> equal(divide(F',D),divide(F',E))) /\
1371   (!G H I'. equal(G,H) /\ less_equal(G,I') ==> less_equal(H,I')) /\
1372   (!J L K'. equal(J,K') /\ less_equal(L,J) ==> less_equal(L,K')) /\
1373   (~less_equal(a,a)) ==> F���;
1374
1375
1376val LCL010_1 = M "LCL010_1" $
1377 ���(!X Y:'a. is_a_theorem(equivalent(X,Y)) /\ is_a_theorem(X) ==> is_a_theorem(Y)) /\
1378   (!X Z Y. is_a_theorem(equivalent(equivalent(X,Y),equivalent(equivalent(X,Z),equivalent(Z,Y))))) /\
1379   (~is_a_theorem(equivalent(equivalent(a,b),equivalent(equivalent(c,b),equivalent(a,c))))) ==> F���;
1380
1381
1382val LCL077_2 = M "LCL077_2" $
1383 ���(!X Y:'a. is_a_theorem(implies(X,Y)) /\ is_a_theorem(X) ==> is_a_theorem(Y)) /\
1384   (!Y X. is_a_theorem(implies(X,implies(Y,X)))) /\
1385   (!Y X Z. is_a_theorem(implies(implies(X,implies(Y,Z)),implies(implies(X,Y),implies(X,Z))))) /\
1386   (!Y X. is_a_theorem(implies(implies(not(X),not(Y)),implies(Y,X)))) /\
1387   (!X2 X1 X3. is_a_theorem(implies(X1,X2)) /\ is_a_theorem(implies(X2,X3)) ==> is_a_theorem(implies(X1,X3))) /\
1388   (~is_a_theorem(implies(not(not(a)),a))) ==> F���;
1389
1390
1391val LCL082_1 = M "LCL082_1" $
1392 ���(!X Y:'a. is_a_theorem(implies(X,Y)) /\ is_a_theorem(X) ==> is_a_theorem(Y)) /\
1393   (!Y Z U X. is_a_theorem(implies(implies(implies(X,Y),Z),implies(implies(Z,X),implies(U,X))))) /\
1394   (~is_a_theorem(implies(a,implies(b,a)))) ==> F���;
1395
1396
1397val LCL111_1 = M "LCL111_1" $
1398 ���(!X Y:'a. is_a_theorem(implies(X,Y)) /\ is_a_theorem(X) ==> is_a_theorem(Y)) /\
1399   (!Y X. is_a_theorem(implies(X,implies(Y,X)))) /\
1400   (!Y X Z. is_a_theorem(implies(implies(X,Y),implies(implies(Y,Z),implies(X,Z))))) /\
1401   (!Y X. is_a_theorem(implies(implies(implies(X,Y),Y),implies(implies(Y,X),X)))) /\
1402   (!Y X. is_a_theorem(implies(implies(not(X),not(Y)),implies(Y,X)))) /\
1403   (~is_a_theorem(implies(implies(a,b),implies(implies(c,a),implies(c,b))))) ==> F���;
1404
1405
1406val LCL143_1 = M "LCL143_1" $
1407 ���(!X:'a. equal(X,X)) /\
1408   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1409   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1410   (!X. equal(implies(true,X),X)) /\
1411   (!Y X Z. equal(implies(implies(X,Y),implies(implies(Y,Z),implies(X,Z))),true)) /\
1412   (!Y X. equal(implies(implies(X,Y),Y),implies(implies(Y,X),X))) /\
1413   (!Y X. equal(implies(implies(not(X),not(Y)),implies(Y,X)),true)) /\
1414   (!A B C. equal(A,B) ==> equal(implies(A,C),implies(B,C))) /\
1415   (!D F' E. equal(D,E) ==> equal(implies(F',D),implies(F',E))) /\
1416   (!G H. equal(G,H) ==> equal(not(G),not(H))) /\
1417   (!X Y. equal(big_V(X,Y),implies(implies(X,Y),Y))) /\
1418   (!X Y. equal(big_hat(X,Y),not(big_V(not(X),not(Y))))) /\
1419   (!X Y. ordered(X,Y) ==> equal(implies(X,Y),true)) /\
1420   (!X Y. equal(implies(X,Y),true) ==> ordered(X,Y)) /\
1421   (!A B C. equal(A,B) ==> equal(big_V(A,C),big_V(B,C))) /\
1422   (!D F' E. equal(D,E) ==> equal(big_V(F',D),big_V(F',E))) /\
1423   (!G H I'. equal(G,H) ==> equal(big_hat(G,I'),big_hat(H,I'))) /\
1424   (!J L K'. equal(J,K') ==> equal(big_hat(L,J),big_hat(L,K'))) /\
1425   (!M N O. equal(M,N) /\ ordered(M,O) ==> ordered(N,O)) /\
1426   (!P R Q. equal(P,Q) /\ ordered(R,P) ==> ordered(R,Q)) /\
1427   (ordered(x,y)) /\
1428   (~ordered(implies(z,x),implies(z,y))) ==> F���;
1429
1430
1431val LCL182_1 = M "LCL182_1" $
1432 ���(!A:'a. axiom(or(not(or(A,A)),A))) /\
1433   (!B A. axiom(or(not(A),or(B,A)))) /\
1434   (!B A. axiom(or(not(or(A,B)),or(B,A)))) /\
1435   (!B A C. axiom(or(not(or(A,or(B,C))),or(B,or(A,C))))) /\
1436   (!A C B. axiom(or(not(or(not(A),B)),or(not(or(C,A)),or(C,B))))) /\
1437   (!X. axiom(X) ==> theorem(X)) /\
1438   (!X Y. axiom(or(not(Y),X)) /\ theorem(Y) ==> theorem(X)) /\
1439   (!X Y Z. axiom(or(not(X),Y)) /\ theorem(or(not(Y),Z)) ==> theorem(or(not(X),Z))) /\
1440   (~theorem(or(not(or(not(p),q)),or(not(not(q)),not(p))))) ==> F���;
1441
1442
1443val LCL200_1 = M "LCL200_1" $
1444 ���(!A:'a. axiom(or(not(or(A,A)),A))) /\
1445   (!B A. axiom(or(not(A),or(B,A)))) /\
1446   (!B A. axiom(or(not(or(A,B)),or(B,A)))) /\
1447   (!B A C. axiom(or(not(or(A,or(B,C))),or(B,or(A,C))))) /\
1448   (!A C B. axiom(or(not(or(not(A),B)),or(not(or(C,A)),or(C,B))))) /\
1449   (!X. axiom(X) ==> theorem(X)) /\
1450   (!X Y. axiom(or(not(Y),X)) /\ theorem(Y) ==> theorem(X)) /\
1451   (!X Y Z. axiom(or(not(X),Y)) /\ theorem(or(not(Y),Z)) ==> theorem(or(not(X),Z))) /\
1452   (~theorem(or(not(not(or(p,q))),not(q)))) ==> F���;
1453
1454
1455val LCL215_1 = M "LCL215_1" $
1456 ���(!A:'a. axiom(or(not(or(A,A)),A))) /\
1457   (!B A. axiom(or(not(A),or(B,A)))) /\
1458   (!B A. axiom(or(not(or(A,B)),or(B,A)))) /\
1459   (!B A C. axiom(or(not(or(A,or(B,C))),or(B,or(A,C))))) /\
1460   (!A C B. axiom(or(not(or(not(A),B)),or(not(or(C,A)),or(C,B))))) /\
1461   (!X. axiom(X) ==> theorem(X)) /\
1462   (!X Y. axiom(or(not(Y),X)) /\ theorem(Y) ==> theorem(X)) /\
1463   (!X Y Z. axiom(or(not(X),Y)) /\ theorem(or(not(Y),Z)) ==> theorem(or(not(X),Z))) /\
1464   (~theorem(or(not(or(not(p),q)),or(not(or(p,q)),q)))) ==> F���;
1465
1466
1467val LCL230_2 = M "LCL230_2" $
1468 ���(q ==> p \/ r) /\
1469   (~p) /\
1470   (q) /\
1471   (~r) ==> F���;
1472
1473
1474val LDA003_1 = M "LDA003_1"
1475 ���(!X:num. equal(X,X)) /\
1476   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1477   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1478   (!Y X Z. equal(f(X,f(Y,Z)),f(f(X,Y),f(X,Z)))) /\
1479   (!X Y. left(X,f(X,Y))) /\
1480   (!Y X Z. left(X,Y) /\ left(Y,Z) ==> left(X,Z)) /\
1481   (equal(n2,f(n1,n1))) /\
1482   (equal(n3,f(n2,n1))) /\
1483   (equal(u,f(n2,n2))) /\
1484   (!A B C. equal(A,B) ==> equal(f(A,C),f(B,C))) /\
1485   (!D F' E. equal(D,E) ==> equal(f(F',D),f(F',E))) /\
1486   (!G H I'. equal(G,H) /\ left(G,I') ==> left(H,I')) /\
1487   (!J L K'. equal(J,K') /\ left(L,J) ==> left(L,K')) /\
1488   (~left(n3,u)) ==> F���;
1489
1490
1491val MSC002_1 = M "MSC002_1" $
1492Lib.with_flag(Globals.guessing_tyvars,true)
1493 Term
1494`(at(something,here,now)) /\
1495   (!Place Situation. hand_at(Place,Situation) ==> hand_at(Place,let_go(Situation))) /\
1496   (!Place Another_place Situation. hand_at(Place,Situation) ==> hand_at(Another_place,go(Another_place,Situation))) /\
1497   (!Thing Situation. ~held(Thing,let_go(Situation))) /\
1498   (!Situation Thing. at(Thing,here,Situation) ==> red(Thing)) /\
1499   (!Thing Place Situation. at(Thing,Place,Situation) ==> at(Thing,Place,let_go(Situation))) /\
1500   (!Thing Place Situation. at(Thing,Place,Situation) ==> at(Thing,Place,pick_up(Situation))) /\
1501   (!Thing Place Situation. at(Thing,Place,Situation) ==> grabbed(Thing,pick_up(go(Place,let_go(Situation))))) /\
1502   (!Thing Situation. red(Thing) /\ put(Thing,there,Situation) ==> answer(Situation)) /\
1503   (!Place Thing Another_place Situation. at(Thing,Place,Situation) /\ grabbed(Thing,Situation) ==> put(Thing,Another_place,go(Another_place,Situation))) /\
1504   (!Thing Place Another_place Situation. at(Thing,Place,Situation) ==> held(Thing,Situation) \/ at(Thing,Place,go(Another_place,Situation))) /\
1505   (!One_place Thing Place Situation. hand_at(One_place,Situation) /\ held(Thing,Situation) ==> at(Thing,Place,go(Place,Situation))) /\
1506   (!Place Thing Situation. hand_at(Place,Situation) /\ at(Thing,Place,Situation) ==> held(Thing,pick_up(Situation))) /\
1507   (!Situation. ~answer(Situation)) ==> F`;
1508
1509val MSC003_1 = M "MSC003_1" $
1510Lib.with_flag(Globals.guessing_tyvars,true)
1511 Term
1512`(!Number_of_small_parts Small_part Big_part Number_of_mid_parts Mid_part. has_parts(Big_part,Number_of_mid_parts,Mid_part) ==> in'(object_in(Big_part,Mid_part,Small_part,Number_of_mid_parts,Number_of_small_parts),Mid_part) \/ has_parts(Big_part,times(Number_of_mid_parts,Number_of_small_parts),Small_part)) /\
1513   (!Big_part Mid_part Number_of_mid_parts Number_of_small_parts Small_part. has_parts(Big_part,Number_of_mid_parts,Mid_part) /\ has_parts(object_in(Big_part,Mid_part,Small_part,Number_of_mid_parts,Number_of_small_parts),Number_of_small_parts,Small_part) ==> has_parts(Big_part,times(Number_of_mid_parts,Number_of_small_parts),Small_part)) /\
1514   (in'(john,boy)) /\
1515   (!X. in'(X,boy) ==> in'(X,human)) /\
1516   (!X. in'(X,hand) ==> has_parts(X,n5,fingers)) /\
1517   (!X. in'(X,human) ==> has_parts(X,n2,arm)) /\
1518   (!X. in'(X,arm) ==> has_parts(X,n1,hand)) /\
1519   (~has_parts(john,times(n2,n1),hand)) ==> F`;
1520
1521
1522val MSC004_1 = M "MSC004_1" $
1523Lib.with_flag(Globals.guessing_tyvars,true)
1524 Term
1525`(!Number_of_small_parts Small_part Big_part Number_of_mid_parts Mid_part. has_parts(Big_part,Number_of_mid_parts,Mid_part) ==> in'(object_in(Big_part,Mid_part,Small_part,Number_of_mid_parts,Number_of_small_parts),Mid_part) \/ has_parts(Big_part,times(Number_of_mid_parts,Number_of_small_parts),Small_part)) /\
1526   (!Big_part Mid_part Number_of_mid_parts Number_of_small_parts Small_part. has_parts(Big_part,Number_of_mid_parts,Mid_part) /\ has_parts(object_in(Big_part,Mid_part,Small_part,Number_of_mid_parts,Number_of_small_parts),Number_of_small_parts,Small_part) ==> has_parts(Big_part,times(Number_of_mid_parts,Number_of_small_parts),Small_part)) /\
1527   (in'(john,boy)) /\
1528   (!X. in'(X,boy) ==> in'(X,human)) /\
1529   (!X. in'(X,hand) ==> has_parts(X,n5,fingers)) /\
1530   (!X. in'(X,human) ==> has_parts(X,n2,arm)) /\
1531   (!X. in'(X,arm) ==> has_parts(X,n1,hand)) /\
1532   (~has_parts(john,times(times(n2,n1),n5),fingers)) ==> F`;
1533
1534
1535val MSC005_1 = M "MSC005_1" $
1536Lib.with_flag(Globals.guessing_tyvars,true)
1537 Term
1538`(value(truth,truth)) /\
1539 (value(falsity,falsity)) /\
1540 (!X Y. value(X,truth) /\ value(Y,truth) ==> value(xor(X,Y),falsity)) /\
1541 (!X Y. value(X,truth) /\ value(Y,falsity) ==> value(xor(X,Y),truth)) /\
1542 (!X Y. value(X,falsity) /\ value(Y,truth) ==> value(xor(X,Y),truth)) /\
1543 (!X Y. value(X,falsity) /\ value(Y,falsity) ==> value(xor(X,Y),falsity)) /\
1544 (!Value. ~value(xor(xor(xor(xor(truth,falsity),falsity),truth),falsity),Value))
1545  ==> F`;
1546
1547
1548val MSC006_1 = M "MSC006_1" $
1549 ���(!Y X Z:'a. p(X,Y) /\ p(Y,Z) ==> p(X,Z)) /\
1550   (!Y X Z. q(X,Y) /\ q(Y,Z) ==> q(X,Z)) /\
1551   (!Y X. q(X,Y) ==> q(Y,X)) /\
1552   (!X Y. p(X,Y) \/ q(X,Y)) /\
1553   (~p(a,b)) /\
1554   (~q(c,d)) ==> F���;
1555
1556
1557val NUM001_1 = M "NUM001_1"
1558 ���(!A:'a. equal(A,A)) /\
1559   (!B A C. equal(A,B) /\ equal(B,C) ==> equal(A,C)) /\
1560   (!B A. equal(add(A,B),add(B,A))) /\
1561   (!A B C. equal(add(A,add(B,C)),add(add(A,B),C))) /\
1562   (!B A. equal(subtract(add(A,B),B),A)) /\
1563   (!A B. equal(A,subtract(add(A,B),B))) /\
1564   (!A C B. equal(add(subtract(A,B),C),subtract(add(A,C),B))) /\
1565   (!A C B. equal(subtract(add(A,B),C),add(subtract(A,C),B))) /\
1566   (!A C B D. equal(A,B) /\ equal(C,add(A,D)) ==> equal(C,add(B,D))) /\
1567   (!A C D B. equal(A,B) /\ equal(C,add(D,A)) ==> equal(C,add(D,B))) /\
1568   (!A C B D. equal(A,B) /\ equal(C,subtract(A,D)) ==> equal(C,subtract(B,D))) /\
1569   (!A C D B. equal(A,B) /\ equal(C,subtract(D,A)) ==> equal(C,subtract(D,B))) /\
1570   (~equal(add(add(a,b),c),add(a,add(b,c)))) ==> F���;
1571
1572
1573val NUM021_1 = M "NUM021_1"
1574 ���(!X. equal(X,X)) /\
1575   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1576   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1577   (!A. equal(add(A,n0),A)) /\
1578   (!A B. equal(add(A,successor(B)),successor(add(A,B)))) /\
1579   (!A. equal(multiply(A,n0),n0)) /\
1580   (!B A. equal(multiply(A,successor(B)),add(multiply(A,B),A))) /\
1581   (!A B. equal(successor(A),successor(B)) ==> equal(A,B)) /\
1582   (!A B. equal(A,B) ==> equal(successor(A),successor(B))) /\
1583   (!A C B. less(A,B) /\ less(C,A) ==> less(C,B)) /\
1584   (!A B C. equal(add(successor(A),B),C) ==> less(B,C)) /\
1585   (!A B. less(A,B) ==> equal(add(successor(predecessor_of_1st_minus_2nd(B,A)),A),B)) /\
1586   (!A B. divides(A,B) ==> less(A,B) \/ equal(A,B)) /\
1587   (!A B. less(A,B) ==> divides(A,B)) /\
1588   (!A B. equal(A,B) ==> divides(A,B)) /\
1589   (less(b,c)) /\
1590   (~less(b,a)) /\
1591   (divides(c,a)) /\
1592   (!A. ~equal(successor(A),n0)) ==> F���;
1593
1594
1595val NUM024_1 = M "NUM024_1" $
1596 ���(!X. equal(X,X)) /\
1597   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1598   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1599   (!A. equal(add(A,n0),A)) /\
1600   (!A B. equal(add(A,successor(B)),successor(add(A,B)))) /\
1601   (!A. equal(multiply(A,n0),n0)) /\
1602   (!B A. equal(multiply(A,successor(B)),add(multiply(A,B),A))) /\
1603   (!A B. equal(successor(A),successor(B)) ==> equal(A,B)) /\
1604   (!A B. equal(A,B) ==> equal(successor(A),successor(B))) /\
1605   (!A C B. less(A,B) /\ less(C,A) ==> less(C,B)) /\
1606   (!A B C. equal(add(successor(A),B),C) ==> less(B,C)) /\
1607   (!A B. less(A,B) ==> equal(add(successor(predecessor_of_1st_minus_2nd(B,A)),A),B)) /\
1608   (!B A. equal(add(A,B),add(B,A))) /\
1609   (!B A C. equal(add(A,B),add(C,B)) ==> equal(A,C)) /\
1610   (less(a,a)) /\
1611   (!A. ~equal(successor(A),n0)) ==> F���;
1612
1613val _ = hide "flip"
1614
1615val NUM180_1 = M "NUM180_1" $
1616Lib.with_flag(Globals.guessing_tyvars,true)
1617 Term
1618`(!X:'a. equal(X,X)) /\
1619   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1620   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1621   (!X U Y. subclass(X,Y) /\ member(U,X) ==> member(U,Y)) /\
1622   (!X Y. member(not_subclass_element(X,Y),X) \/ subclass(X,Y)) /\
1623   (!X Y. member(not_subclass_element(X,Y),Y) ==> subclass(X,Y)) /\
1624   (!X. subclass(X,universal_class)) /\
1625   (!X Y. equal(X,Y) ==> subclass(X,Y)) /\
1626   (!Y X. equal(X,Y) ==> subclass(Y,X)) /\
1627   (!X Y. subclass(X,Y) /\ subclass(Y,X) ==> equal(X,Y)) /\
1628   (!X U Y. member(U,unordered_pair(X,Y)) ==> equal(U,X) \/ equal(U,Y)) /\
1629   (!X Y. member(X,universal_class) ==> member(X,unordered_pair(X,Y))) /\
1630   (!X Y. member(Y,universal_class) ==> member(Y,unordered_pair(X,Y))) /\
1631   (!X Y. member(unordered_pair(X,Y),universal_class)) /\
1632   (!X. equal(unordered_pair(X,X),singleton(X))) /\
1633   (!X Y. equal(unordered_pair(singleton(X),unordered_pair(X,singleton(Y))),ordered_pair(X,Y))) /\
1634   (!V Y U X. member(ordered_pair(U,V),cross_product(X,Y)) ==> member(U,X)) /\
1635   (!U X V Y. member(ordered_pair(U,V),cross_product(X,Y)) ==> member(V,Y)) /\
1636   (!U V X Y. member(U,X) /\ member(V,Y) ==> member(ordered_pair(U,V),cross_product(X,Y))) /\
1637   (!X Y Z. member(Z,cross_product(X,Y)) ==> equal(ordered_pair(first(Z),second(Z)),Z)) /\
1638   (subclass(element_relation,cross_product(universal_class,universal_class))) /\
1639   (!X Y. member(ordered_pair(X,Y),element_relation) ==> member(X,Y)) /\
1640   (!X Y. member(ordered_pair(X,Y),cross_product(universal_class,universal_class)) /\ member(X,Y) ==> member(ordered_pair(X,Y),element_relation)) /\
1641   (!Y Z X. member(Z,intersection(X,Y)) ==> member(Z,X)) /\
1642   (!X Z Y. member(Z,intersection(X,Y)) ==> member(Z,Y)) /\
1643   (!Z X Y. member(Z,X) /\ member(Z,Y) ==> member(Z,intersection(X,Y))) /\
1644   (!Z X. ~(member(Z,complement(X)) /\ member(Z,X))) /\
1645   (!Z X. member(Z,universal_class) ==> member(Z,complement(X)) \/ member(Z,X)) /\
1646   (!X Y. equal(complement(intersection(complement(X),complement(Y))),union(X,Y))) /\
1647   (!X Y. equal(intersection(complement(intersection(X,Y)),complement(intersection(complement(X),complement(Y)))),difference(X,Y))) /\
1648   (!Xr X Y. equal(intersection(Xr,cross_product(X,Y)),restrict(Xr,X,Y))) /\
1649   (!Xr X Y. equal(intersection(cross_product(X,Y),Xr),restrict(Xr,X,Y))) /\
1650   (!Z X. ~(equal(restrict(X,singleton(Z),universal_class),null_class) /\ member(Z,domain_of(X)))) /\
1651   (!Z X. member(Z,universal_class) ==> equal(restrict(X,singleton(Z),universal_class),null_class) \/ member(Z,domain_of(X))) /\
1652   (!X. subclass(rotate(X),cross_product(cross_product(universal_class,universal_class),universal_class))) /\
1653   (!V W U X. member(ordered_pair(ordered_pair(U,V),W),rotate(X)) ==> member(ordered_pair(ordered_pair(V,W),U),X)) /\
1654   (!U V W X. member(ordered_pair(ordered_pair(V,W),U),X) /\ member(ordered_pair(ordered_pair(U,V),W),cross_product(cross_product(universal_class,universal_class),universal_class)) ==> member(ordered_pair(ordered_pair(U,V),W),rotate(X))) /\
1655   (!X. subclass(flip(X),cross_product(cross_product(universal_class,universal_class),universal_class))) /\
1656   (!V U W X. member(ordered_pair(ordered_pair(U,V),W),flip(X)) ==> member(ordered_pair(ordered_pair(V,U),W),X)) /\
1657   (!U V W X. member(ordered_pair(ordered_pair(V,U),W),X) /\ member(ordered_pair(ordered_pair(U,V),W),cross_product(cross_product(universal_class,universal_class),universal_class)) ==> member(ordered_pair(ordered_pair(U,V),W),flip(X))) /\
1658   (!Y. equal(domain_of(flip(cross_product(Y,universal_class))),inverse(Y))) /\
1659   (!Z. equal(domain_of(inverse(Z)),range_of(Z))) /\
1660   (!Z X Y. equal(first(not_subclass_element(restrict(Z,X,singleton(Y)),null_class)),domain(Z,X,Y))) /\
1661   (!Z X Y. equal(second(not_subclass_element(restrict(Z,singleton(X),Y),null_class)),range(Z,X,Y))) /\
1662   (!Xr X. equal(range_of(restrict(Xr,X,universal_class)),image(Xr,X))) /\
1663   (!X. equal(union(X,singleton(X)),successor(X))) /\
1664   (subclass(successor_relation,cross_product(universal_class,universal_class))) /\
1665   (!X Y. member(ordered_pair(X,Y),successor_relation) ==> equal(successor(X),Y)) /\
1666   (!X Y. equal(successor(X),Y) /\ member(ordered_pair(X,Y),cross_product(universal_class,universal_class)) ==> member(ordered_pair(X,Y),successor_relation)) /\
1667   (!X. inductive(X) ==> member(null_class,X)) /\
1668   (!X. inductive(X) ==> subclass(image(successor_relation,X),X)) /\
1669   (!X. member(null_class,X) /\ subclass(image(successor_relation,X),X) ==> inductive(X)) /\
1670   (inductive(omega)) /\
1671   (!Y. inductive(Y) ==> subclass(omega,Y)) /\
1672   (member(omega,universal_class)) /\
1673   (!X. equal(domain_of(restrict(element_relation,universal_class,X)),sum_class(X))) /\
1674   (!X. member(X,universal_class) ==> member(sum_class(X),universal_class)) /\
1675   (!X. equal(complement(image(element_relation,complement(X))),power_class(X))) /\
1676   (!U. member(U,universal_class) ==> member(power_class(U),universal_class)) /\
1677   (!Yr Xr. subclass(compose(Yr,Xr),cross_product(universal_class,universal_class))) /\
1678   (!Z Yr Xr Y. member(ordered_pair(Y,Z),compose(Yr,Xr)) ==> member(Z,image(Yr,image(Xr,singleton(Y))))) /\
1679   (!Y Z Yr Xr. member(Z,image(Yr,image(Xr,singleton(Y)))) /\ member(ordered_pair(Y,Z),cross_product(universal_class,universal_class)) ==> member(ordered_pair(Y,Z),compose(Yr,Xr))) /\
1680   (!X. single_valued_class(X) ==> subclass(compose(X,inverse(X)),identity_relation)) /\
1681   (!X. subclass(compose(X,inverse(X)),identity_relation) ==> single_valued_class(X)) /\
1682   (!Xf. function(Xf) ==> subclass(Xf,cross_product(universal_class,universal_class))) /\
1683   (!Xf. function(Xf) ==> subclass(compose(Xf,inverse(Xf)),identity_relation)) /\
1684   (!Xf. subclass(Xf,cross_product(universal_class,universal_class)) /\ subclass(compose(Xf,inverse(Xf)),identity_relation) ==> function(Xf)) /\
1685   (!Xf X. function(Xf) /\ member(X,universal_class) ==> member(image(Xf,X),universal_class)) /\
1686   (!X. equal(X,null_class) \/ member(regular(X),X)) /\
1687   (!X. equal(X,null_class) \/ equal(intersection(X,regular(X)),null_class)) /\
1688   (!Xf Y. equal(sum_class(image(Xf,singleton(Y))),apply(Xf,Y))) /\
1689   (function(choice)) /\
1690   (!Y. member(Y,universal_class) ==> equal(Y,null_class) \/ member(apply(choice,Y),Y)) /\
1691   (!Xf. one_to_one(Xf) ==> function(Xf)) /\
1692   (!Xf. one_to_one(Xf) ==> function(inverse(Xf))) /\
1693   (!Xf. function(inverse(Xf)) /\ function(Xf) ==> one_to_one(Xf)) /\
1694   (equal(intersection(cross_product(universal_class,universal_class),intersection(cross_product(universal_class,universal_class),complement(compose(complement(element_relation),inverse(element_relation))))),subset_relation)) /\
1695   (equal(intersection(inverse(subset_relation),subset_relation),identity_relation)) /\
1696   (!Xr. equal(complement(domain_of(intersection(Xr,identity_relation))),diagonalise(Xr))) /\
1697   (!X. equal(intersection(domain_of(X),diagonalise(compose(inverse(element_relation),X))),cantor(X))) /\
1698   (!Xf. operation(Xf) ==> function(Xf)) /\
1699   (!Xf. operation(Xf) ==> equal(cross_product(domain_of(domain_of(Xf)),domain_of(domain_of(Xf))),domain_of(Xf))) /\
1700   (!Xf. operation(Xf) ==> subclass(range_of(Xf),domain_of(domain_of(Xf)))) /\
1701   (!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)) /\
1702   (!Xf1 Xf2 Xh. compatible(Xh,Xf1,Xf2) ==> function(Xh)) /\
1703   (!Xf2 Xf1 Xh. compatible(Xh,Xf1,Xf2) ==> equal(domain_of(domain_of(Xf1)),domain_of(Xh))) /\
1704   (!Xf1 Xh Xf2. compatible(Xh,Xf1,Xf2) ==> subclass(range_of(Xh),domain_of(domain_of(Xf2)))) /\
1705   (!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,Xf1,Xf2)) /\
1706   (!Xh Xf2 Xf1. homomorphism(Xh,Xf1,Xf2) ==> operation(Xf1)) /\
1707   (!Xh Xf1 Xf2. homomorphism(Xh,Xf1,Xf2) ==> operation(Xf2)) /\
1708   (!Xh Xf1 Xf2. homomorphism(Xh,Xf1,Xf2) ==> compatible(Xh,Xf1,Xf2)) /\
1709   (!Xf2 Xh Xf1 X Y. homomorphism(Xh,Xf1,Xf2) /\ member(ordered_pair(X,Y),domain_of(Xf1)) ==> equal(apply(Xf2,ordered_pair(apply(Xh,X),apply(Xh,Y))),apply(Xh,apply(Xf1,ordered_pair(X,Y))))) /\
1710   (!Xh Xf1 Xf2. operation(Xf1) /\ operation(Xf2) /\ compatible(Xh,Xf1,Xf2) ==> member(ordered_pair(not_homomorphism1(Xh,Xf1,Xf2),not_homomorphism2(Xh,Xf1,Xf2)),domain_of(Xf1)) \/ homomorphism(Xh,Xf1,Xf2)) /\
1711   (!Xh Xf1 Xf2. operation(Xf1) /\ operation(Xf2) /\ compatible(Xh,Xf1,Xf2) /\ equal(apply(Xf2,ordered_pair(apply(Xh,not_homomorphism1(Xh,Xf1,Xf2)),apply(Xh,not_homomorphism2(Xh,Xf1,Xf2)))),apply(Xh,apply(Xf1,ordered_pair(not_homomorphism1(Xh,Xf1,Xf2),not_homomorphism2(Xh,Xf1,Xf2))))) ==> homomorphism(Xh,Xf1,Xf2)) /\
1712   (!D E F'. equal(D,E) ==> equal(apply(D,F'),apply(E,F'))) /\
1713   (!G I' H. equal(G,H) ==> equal(apply(I',G),apply(I',H))) /\
1714   (!J K'. equal(J,K') ==> equal(cantor(J),cantor(K'))) /\
1715   (!L M. equal(L,M) ==> equal(complement(L),complement(M))) /\
1716   (!N O P. equal(N,O) ==> equal(compose(N,P),compose(O,P))) /\
1717   (!Q S' R. equal(Q,R) ==> equal(compose(S',Q),compose(S',R))) /\
1718   (!T' U V. equal(T',U) ==> equal(cross_product(T',V),cross_product(U,V))) /\
1719   (!W Y X. equal(W,X) ==> equal(cross_product(Y,W),cross_product(Y,X))) /\
1720   (!Z A1. equal(Z,A1) ==> equal(diagonalise(Z),diagonalise(A1))) /\
1721   (!B1 C1 D1. equal(B1,C1) ==> equal(difference(B1,D1),difference(C1,D1))) /\
1722   (!E1 G1 F1. equal(E1,F1) ==> equal(difference(G1,E1),difference(G1,F1))) /\
1723   (!H1 I1 J1 K1. equal(H1,I1) ==> equal(domain(H1,J1,K1),domain(I1,J1,K1))) /\
1724   (!L1 N1 M1 O1. equal(L1,M1) ==> equal(domain(N1,L1,O1),domain(N1,M1,O1))) /\
1725   (!P1 R1 S1 Q1. equal(P1,Q1) ==> equal(domain(R1,S1,P1),domain(R1,S1,Q1))) /\
1726   (!T1 U1. equal(T1,U1) ==> equal(domain_of(T1),domain_of(U1))) /\
1727   (!V1 W1. equal(V1,W1) ==> equal(first(V1),first(W1))) /\
1728   (!X1 Y1. equal(X1,Y1) ==> equal(flip(X1),flip(Y1))) /\
1729   (!Z1 A2 B2. equal(Z1,A2) ==> equal(image(Z1,B2),image(A2,B2))) /\
1730   (!C2 E2 D2. equal(C2,D2) ==> equal(image(E2,C2),image(E2,D2))) /\
1731   (!F2 G2 H2. equal(F2,G2) ==> equal(intersection(F2,H2),intersection(G2,H2))) /\
1732   (!I2 K2 J2. equal(I2,J2) ==> equal(intersection(K2,I2),intersection(K2,J2))) /\
1733   (!L2 M2. equal(L2,M2) ==> equal(inverse(L2),inverse(M2))) /\
1734   (!N2 O2 P2 Q2. equal(N2,O2) ==> equal(not_homomorphism1(N2,P2,Q2),not_homomorphism1(O2,P2,Q2))) /\
1735   (!R2 T2 S2 U2. equal(R2,S2) ==> equal(not_homomorphism1(T2,R2,U2),not_homomorphism1(T2,S2,U2))) /\
1736   (!V2 X2 Y2 W2. equal(V2,W2) ==> equal(not_homomorphism1(X2,Y2,V2),not_homomorphism1(X2,Y2,W2))) /\
1737   (!Z2 A3 B3 C3. equal(Z2,A3) ==> equal(not_homomorphism2(Z2,B3,C3),not_homomorphism2(A3,B3,C3))) /\
1738   (!D3 F3 E3 G3. equal(D3,E3) ==> equal(not_homomorphism2(F3,D3,G3),not_homomorphism2(F3,E3,G3))) /\
1739   (!H3 J3 K3 I3. equal(H3,I3) ==> equal(not_homomorphism2(J3,K3,H3),not_homomorphism2(J3,K3,I3))) /\
1740   (!L3 M3 N3. equal(L3,M3) ==> equal(not_subclass_element(L3,N3),not_subclass_element(M3,N3))) /\
1741   (!O3 Q3 P3. equal(O3,P3) ==> equal(not_subclass_element(Q3,O3),not_subclass_element(Q3,P3))) /\
1742   (!R3 S3 T3. equal(R3,S3) ==> equal(ordered_pair(R3,T3),ordered_pair(S3,T3))) /\
1743   (!U3 W3 V3. equal(U3,V3) ==> equal(ordered_pair(W3,U3),ordered_pair(W3,V3))) /\
1744   (!X3 Y3. equal(X3,Y3) ==> equal(power_class(X3),power_class(Y3))) /\
1745   (!Z3 A4 B4 C4. equal(Z3,A4) ==> equal(range(Z3,B4,C4),range(A4,B4,C4))) /\
1746   (!D4 F4 E4 G4. equal(D4,E4) ==> equal(range(F4,D4,G4),range(F4,E4,G4))) /\
1747   (!H4 J4 K4 I4. equal(H4,I4) ==> equal(range(J4,K4,H4),range(J4,K4,I4))) /\
1748   (!L4 M4. equal(L4,M4) ==> equal(range_of(L4),range_of(M4))) /\
1749   (!N4 O4. equal(N4,O4) ==> equal(regular(N4),regular(O4))) /\
1750   (!P4 Q4 R4 S4. equal(P4,Q4) ==> equal(restrict(P4,R4,S4),restrict(Q4,R4,S4))) /\
1751   (!T4 V4 U4 W4. equal(T4,U4) ==> equal(restrict(V4,T4,W4),restrict(V4,U4,W4))) /\
1752   (!X4 Z4 A5 Y4. equal(X4,Y4) ==> equal(restrict(Z4,A5,X4),restrict(Z4,A5,Y4))) /\
1753   (!B5 C5. equal(B5,C5) ==> equal(rotate(B5),rotate(C5))) /\
1754   (!D5 E5. equal(D5,E5) ==> equal(second(D5),second(E5))) /\
1755   (!F5 G5. equal(F5,G5) ==> equal(singleton(F5),singleton(G5))) /\
1756   (!H5 I5. equal(H5,I5) ==> equal(successor(H5),successor(I5))) /\
1757   (!J5 K5. equal(J5,K5) ==> equal(sum_class(J5),sum_class(K5))) /\
1758   (!L5 M5 N5. equal(L5,M5) ==> equal(union(L5,N5),union(M5,N5))) /\
1759   (!O5 Q5 P5. equal(O5,P5) ==> equal(union(Q5,O5),union(Q5,P5))) /\
1760   (!R5 S5 T5. equal(R5,S5) ==> equal(unordered_pair(R5,T5),unordered_pair(S5,T5))) /\
1761   (!U5 W5 V5. equal(U5,V5) ==> equal(unordered_pair(W5,U5),unordered_pair(W5,V5))) /\
1762   (!X5 Y5 Z5 A6. equal(X5,Y5) /\ compatible(X5,Z5,A6) ==> compatible(Y5,Z5,A6)) /\
1763   (!B6 D6 C6 E6. equal(B6,C6) /\ compatible(D6,B6,E6) ==> compatible(D6,C6,E6)) /\
1764   (!F6 H6 I6 G6. equal(F6,G6) /\ compatible(H6,I6,F6) ==> compatible(H6,I6,G6)) /\
1765   (!J6 K6. equal(J6,K6) /\ function(J6) ==> function(K6)) /\
1766   (!L6 M6 N6 O6. equal(L6,M6) /\ homomorphism(L6,N6,O6) ==> homomorphism(M6,N6,O6)) /\
1767   (!P6 R6 Q6 S6. equal(P6,Q6) /\ homomorphism(R6,P6,S6) ==> homomorphism(R6,Q6,S6)) /\
1768   (!T6 V6 W6 U6. equal(T6,U6) /\ homomorphism(V6,W6,T6) ==> homomorphism(V6,W6,U6)) /\
1769   (!X6 Y6. equal(X6,Y6) /\ inductive(X6) ==> inductive(Y6)) /\
1770   (!Z6 A7 B7. equal(Z6,A7) /\ member(Z6,B7) ==> member(A7,B7)) /\
1771   (!C7 E7 D7. equal(C7,D7) /\ member(E7,C7) ==> member(E7,D7)) /\
1772   (!F7 G7. equal(F7,G7) /\ one_to_one(F7) ==> one_to_one(G7)) /\
1773   (!H7 I7. equal(H7,I7) /\ operation(H7) ==> operation(I7)) /\
1774   (!J7 K7. equal(J7,K7) /\ single_valued_class(J7) ==> single_valued_class(K7)) /\
1775   (!L7 M7 N7. equal(L7,M7) /\ subclass(L7,N7) ==> subclass(M7,N7)) /\
1776   (!O7 Q7 P7. equal(O7,P7) /\ subclass(Q7,O7) ==> subclass(Q7,P7)) /\
1777   (!X. subclass(compose_class(X),cross_product(universal_class,universal_class))) /\
1778   (!X Y Z. member(ordered_pair(Y,Z),compose_class(X)) ==> equal(compose(X,Y),Z)) /\
1779   (!Y Z X. member(ordered_pair(Y,Z),cross_product(universal_class,universal_class)) /\ equal(compose(X,Y),Z) ==> member(ordered_pair(Y,Z),compose_class(X))) /\
1780   (subclass(composition_function,cross_product(universal_class,cross_product(universal_class,universal_class)))) /\
1781   (!X Y Z. member(ordered_pair(X,ordered_pair(Y,Z)),composition_function) ==> equal(compose(X,Y),Z)) /\
1782   (!X Y. member(ordered_pair(X,Y),cross_product(universal_class,universal_class)) ==> member(ordered_pair(X,ordered_pair(Y,compose(X,Y))),composition_function)) /\
1783   (subclass(domain_relation,cross_product(universal_class,universal_class))) /\
1784   (!X Y. member(ordered_pair(X,Y),domain_relation) ==> equal(domain_of(X),Y)) /\
1785   (!X. member(X,universal_class) ==> member(ordered_pair(X,domain_of(X)),domain_relation)) /\
1786   (!X. equal(first(not_subclass_element(compose(X,inverse(X)),identity_relation)),single_valued1(X))) /\
1787   (!X. equal(second(not_subclass_element(compose(X,inverse(X)),identity_relation)),single_valued2(X))) /\
1788   (!X. equal(domain(X,image(inverse(X),singleton(single_valued1(X))),single_valued2(X)),single_valued3(X))) /\
1789   (equal(intersection(complement(compose(element_relation,complement(identity_relation))),element_relation),singleton_relation)) /\
1790   (subclass(application_function,cross_product(universal_class,cross_product(universal_class,universal_class)))) /\
1791   (!Z Y X. member(ordered_pair(X,ordered_pair(Y,Z)),application_function) ==> member(Y,domain_of(X))) /\
1792   (!X Y Z. member(ordered_pair(X,ordered_pair(Y,Z)),application_function) ==> equal(apply(X,Y),Z)) /\
1793   (!Z X Y. member(ordered_pair(X,ordered_pair(Y,Z)),cross_product(universal_class,cross_product(universal_class,universal_class))) /\ member(Y,domain_of(X)) ==> member(ordered_pair(X,ordered_pair(Y,apply(X,Y))),application_function)) /\
1794   (!X Y Xf. maps(Xf,X,Y) ==> function(Xf)) /\
1795   (!Y Xf X. maps(Xf,X,Y) ==> equal(domain_of(Xf),X)) /\
1796   (!X Xf Y. maps(Xf,X,Y) ==> subclass(range_of(Xf),Y)) /\
1797   (!Xf Y. function(Xf) /\ subclass(range_of(Xf),Y) ==> maps(Xf,domain_of(Xf),Y)) /\
1798   (!L M. equal(L,M) ==> equal(compose_class(L),compose_class(M))) /\
1799   (!N2 O2. equal(N2,O2) ==> equal(single_valued1(N2),single_valued1(O2))) /\
1800   (!P2 Q2. equal(P2,Q2) ==> equal(single_valued2(P2),single_valued2(Q2))) /\
1801   (!R2 S2. equal(R2,S2) ==> equal(single_valued3(R2),single_valued3(S2))) /\
1802   (!X2 Y2 Z2 A3. equal(X2,Y2) /\ maps(X2,Z2,A3) ==> maps(Y2,Z2,A3)) /\
1803   (!B3 D3 C3 E3. equal(B3,C3) /\ maps(D3,B3,E3) ==> maps(D3,C3,E3)) /\
1804   (!F3 H3 I3 G3. equal(F3,G3) /\ maps(H3,I3,F3) ==> maps(H3,I3,G3)) /\
1805   (!X. equal(union(X,inverse(X)),symmetrization_of(X))) /\
1806   (!X Y. irreflexive(X,Y) ==> subclass(restrict(X,Y,Y),complement(identity_relation))) /\
1807   (!X Y. subclass(restrict(X,Y,Y),complement(identity_relation)) ==> irreflexive(X,Y)) /\
1808   (!Y X. connected(X,Y) ==> subclass(cross_product(Y,Y),union(identity_relation,symmetrization_of(X)))) /\
1809   (!X Y. subclass(cross_product(Y,Y),union(identity_relation,symmetrization_of(X))) ==> connected(X,Y)) /\
1810   (!Xr Y. transitive(Xr,Y) ==> subclass(compose(restrict(Xr,Y,Y),restrict(Xr,Y,Y)),restrict(Xr,Y,Y))) /\
1811   (!Xr Y. subclass(compose(restrict(Xr,Y,Y),restrict(Xr,Y,Y)),restrict(Xr,Y,Y)) ==> transitive(Xr,Y)) /\
1812   (!Xr Y. asymmetric(Xr,Y) ==> equal(restrict(intersection(Xr,inverse(Xr)),Y,Y),null_class)) /\
1813   (!Xr Y. equal(restrict(intersection(Xr,inverse(Xr)),Y,Y),null_class) ==> asymmetric(Xr,Y)) /\
1814   (!Xr Y Z. equal(segment(Xr,Y,Z),domain_of(restrict(Xr,Y,singleton(Z))))) /\
1815   (!X Y. well_ordering(X,Y) ==> connected(X,Y)) /\
1816   (!Y Xr U. well_ordering(Xr,Y) /\ subclass(U,Y) ==> equal(U,null_class) \/ member(least(Xr,U),U)) /\
1817   (!Y V Xr U. well_ordering(Xr,Y) /\ subclass(U,Y) /\ member(V,U) ==> member(least(Xr,U),U)) /\
1818   (!Y Xr U. well_ordering(Xr,Y) /\ subclass(U,Y) ==> equal(segment(Xr,U,least(Xr,U)),null_class)) /\
1819   (!Y V U Xr. ~(well_ordering(Xr,Y) /\ subclass(U,Y) /\ member(V,U) /\ member(ordered_pair(V,least(Xr,U)),Xr))) /\
1820   (!Xr Y. connected(Xr,Y) /\ equal(not_well_ordering(Xr,Y),null_class) ==> well_ordering(Xr,Y)) /\
1821   (!Xr Y. connected(Xr,Y) ==> subclass(not_well_ordering(Xr,Y),Y) \/ well_ordering(Xr,Y)) /\
1822   (!V Xr Y. member(V,not_well_ordering(Xr,Y)) /\ equal(segment(Xr,not_well_ordering(Xr,Y),V),null_class) /\ connected(Xr,Y) ==> well_ordering(Xr,Y)) /\
1823   (!Xr Y Z. section(Xr,Y,Z) ==> subclass(Y,Z)) /\
1824   (!Xr Z Y. section(Xr,Y,Z) ==> subclass(domain_of(restrict(Xr,Z,Y)),Y)) /\
1825   (!Xr Y Z. subclass(Y,Z) /\ subclass(domain_of(restrict(Xr,Z,Y)),Y) ==> section(Xr,Y,Z)) /\
1826   (!X. member(X,ordinal_numbers) ==> well_ordering(element_relation,X)) /\
1827   (!X. member(X,ordinal_numbers) ==> subclass(sum_class(X),X)) /\
1828   (!X. well_ordering(element_relation,X) /\ subclass(sum_class(X),X) /\ member(X,universal_class) ==> member(X,ordinal_numbers)) /\
1829   (!X. well_ordering(element_relation,X) /\ subclass(sum_class(X),X) ==> member(X,ordinal_numbers) \/ equal(X,ordinal_numbers)) /\
1830   (equal(union(singleton(null_class),image(successor_relation,ordinal_numbers)),kind_1_ordinals)) /\
1831   (equal(intersection(complement(kind_1_ordinals),ordinal_numbers),limit_ordinals)) /\
1832   (!X. subclass(rest_of(X),cross_product(universal_class,universal_class))) /\
1833   (!V U X. member(ordered_pair(U,V),rest_of(X)) ==> member(U,domain_of(X))) /\
1834   (!X U V. member(ordered_pair(U,V),rest_of(X)) ==> equal(restrict(X,U,universal_class),V)) /\
1835   (!U V X. member(U,domain_of(X)) /\ equal(restrict(X,U,universal_class),V) ==> member(ordered_pair(U,V),rest_of(X))) /\
1836   (subclass(rest_relation,cross_product(universal_class,universal_class))) /\
1837   (!X Y. member(ordered_pair(X,Y),rest_relation) ==> equal(rest_of(X),Y)) /\
1838   (!X. member(X,universal_class) ==> member(ordered_pair(X,rest_of(X)),rest_relation)) /\
1839   (!X Z. member(X,recursion_equation_functions(Z)) ==> function(Z)) /\
1840   (!Z X. member(X,recursion_equation_functions(Z)) ==> function(X)) /\
1841   (!Z X. member(X,recursion_equation_functions(Z)) ==> member(domain_of(X),ordinal_numbers)) /\
1842   (!Z X. member(X,recursion_equation_functions(Z)) ==> equal(compose(Z,rest_of(X)),X)) /\
1843   (!X Z. function(Z) /\ function(X) /\ member(domain_of(X),ordinal_numbers) /\ equal(compose(Z,rest_of(X)),X) ==> member(X,recursion_equation_functions(Z))) /\
1844   (subclass(union_of_range_map,cross_product(universal_class,universal_class))) /\
1845   (!X Y. member(ordered_pair(X,Y),union_of_range_map) ==> equal(sum_class(range_of(X)),Y)) /\
1846   (!X Y. member(ordered_pair(X,Y),cross_product(universal_class,universal_class)) /\ equal(sum_class(range_of(X)),Y) ==> member(ordered_pair(X,Y),union_of_range_map)) /\
1847   (!X Y. equal(apply(recursion(X,successor_relation,union_of_range_map),Y),ordinal_add(X,Y))) /\
1848   (!X Y. equal(recursion(null_class,apply(add_relation,X),union_of_range_map),ordinal_multiply(X,Y))) /\
1849   (!X. member(X,omega) ==> equal(integer_of(X),X)) /\
1850   (!X. member(X,omega) \/ equal(integer_of(X),null_class)) /\
1851   (!D E. equal(D,E) ==> equal(integer_of(D),integer_of(E))) /\
1852   (!F' G H. equal(F',G) ==> equal(least(F',H),least(G,H))) /\
1853   (!I' K' J. equal(I',J) ==> equal(least(K',I'),least(K',J))) /\
1854   (!L M N. equal(L,M) ==> equal(not_well_ordering(L,N),not_well_ordering(M,N))) /\
1855   (!O Q P. equal(O,P) ==> equal(not_well_ordering(Q,O),not_well_ordering(Q,P))) /\
1856   (!R S' T'. equal(R,S') ==> equal(ordinal_add(R,T'),ordinal_add(S',T'))) /\
1857   (!U W V. equal(U,V) ==> equal(ordinal_add(W,U),ordinal_add(W,V))) /\
1858   (!X Y Z. equal(X,Y) ==> equal(ordinal_multiply(X,Z),ordinal_multiply(Y,Z))) /\
1859   (!A1 C1 B1. equal(A1,B1) ==> equal(ordinal_multiply(C1,A1),ordinal_multiply(C1,B1))) /\
1860   (!F1 G1 H1 I1. equal(F1,G1) ==> equal(recursion(F1,H1,I1),recursion(G1,H1,I1))) /\
1861   (!J1 L1 K1 M1. equal(J1,K1) ==> equal(recursion(L1,J1,M1),recursion(L1,K1,M1))) /\
1862   (!N1 P1 Q1 O1. equal(N1,O1) ==> equal(recursion(P1,Q1,N1),recursion(P1,Q1,O1))) /\
1863   (!R1 S1. equal(R1,S1) ==> equal(recursion_equation_functions(R1),recursion_equation_functions(S1))) /\
1864   (!T1 U1. equal(T1,U1) ==> equal(rest_of(T1),rest_of(U1))) /\
1865   (!V1 W1 X1 Y1. equal(V1,W1) ==> equal(segment(V1,X1,Y1),segment(W1,X1,Y1))) /\
1866   (!Z1 B2 A2 C2. equal(Z1,A2) ==> equal(segment(B2,Z1,C2),segment(B2,A2,C2))) /\
1867   (!D2 F2 G2 E2. equal(D2,E2) ==> equal(segment(F2,G2,D2),segment(F2,G2,E2))) /\
1868   (!H2 I2. equal(H2,I2) ==> equal(symmetrization_of(H2),symmetrization_of(I2))) /\
1869   (!J2 K2 L2. equal(J2,K2) /\ asymmetric(J2,L2) ==> asymmetric(K2,L2)) /\
1870   (!M2 O2 N2. equal(M2,N2) /\ asymmetric(O2,M2) ==> asymmetric(O2,N2)) /\
1871   (!P2 Q2 R2. equal(P2,Q2) /\ connected(P2,R2) ==> connected(Q2,R2)) /\
1872   (!S2 U2 T2. equal(S2,T2) /\ connected(U2,S2) ==> connected(U2,T2)) /\
1873   (!V2 W2 X2. equal(V2,W2) /\ irreflexive(V2,X2) ==> irreflexive(W2,X2)) /\
1874   (!Y2 A3 Z2. equal(Y2,Z2) /\ irreflexive(A3,Y2) ==> irreflexive(A3,Z2)) /\
1875   (!B3 C3 D3 E3. equal(B3,C3) /\ section(B3,D3,E3) ==> section(C3,D3,E3)) /\
1876   (!F3 H3 G3 I3. equal(F3,G3) /\ section(H3,F3,I3) ==> section(H3,G3,I3)) /\
1877   (!J3 L3 M3 K3. equal(J3,K3) /\ section(L3,M3,J3) ==> section(L3,M3,K3)) /\
1878   (!N3 O3 P3. equal(N3,O3) /\ transitive(N3,P3) ==> transitive(O3,P3)) /\
1879   (!Q3 S3 R3. equal(Q3,R3) /\ transitive(S3,Q3) ==> transitive(S3,R3)) /\
1880   (!T3 U3 V3. equal(T3,U3) /\ well_ordering(T3,V3) ==> well_ordering(U3,V3)) /\
1881   (!W3 Y3 X3. equal(W3,X3) /\ well_ordering(Y3,W3) ==> well_ordering(Y3,X3)) /\
1882   (~subclass(limit_ordinals,ordinal_numbers)) ==> F`;
1883
1884
1885val NUM228_1 = M "NUM228_1" $
1886Lib.with_flag(Globals.guessing_tyvars,false)
1887 Term
1888`(!X:'a. equal(X,X)) /\
1889   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
1890   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
1891   (!X U Y. subclass(X,Y) /\ member(U,X) ==> member(U,Y)) /\
1892   (!X Y. member(not_subclass_element(X,Y),X) \/ subclass(X,Y)) /\
1893   (!X Y. member(not_subclass_element(X,Y),Y) ==> subclass(X,Y)) /\
1894   (!X. subclass(X,universal_class)) /\
1895   (!X Y. equal(X,Y) ==> subclass(X,Y)) /\
1896   (!Y X. equal(X,Y) ==> subclass(Y,X)) /\
1897   (!X Y. subclass(X,Y) /\ subclass(Y,X) ==> equal(X,Y)) /\
1898   (!X U Y. member(U,unordered_pair(X,Y)) ==> equal(U,X) \/ equal(U,Y)) /\
1899   (!X Y. member(X,universal_class) ==> member(X,unordered_pair(X,Y))) /\
1900   (!X Y. member(Y,universal_class) ==> member(Y,unordered_pair(X,Y))) /\
1901   (!X Y. member(unordered_pair(X,Y),universal_class)) /\
1902   (!X. equal(unordered_pair(X,X),singleton(X))) /\
1903   (!X Y. equal(unordered_pair(singleton(X),unordered_pair(X,singleton(Y))),ordered_pair(X,Y))) /\
1904   (!V Y U X. member(ordered_pair(U,V),cross_product(X,Y)) ==> member(U,X)) /\
1905   (!U X V Y. member(ordered_pair(U,V),cross_product(X,Y)) ==> member(V,Y)) /\
1906   (!U V X Y. member(U,X) /\ member(V,Y) ==> member(ordered_pair(U,V),cross_product(X,Y))) /\
1907   (!X Y Z. member(Z,cross_product(X,Y)) ==> equal(ordered_pair(first(Z),second(Z)),Z)) /\
1908   (subclass(element_relation,cross_product(universal_class,universal_class))) /\
1909   (!X Y. member(ordered_pair(X,Y),element_relation) ==> member(X,Y)) /\
1910   (!X Y. member(ordered_pair(X,Y),cross_product(universal_class,universal_class)) /\ member(X,Y) ==> member(ordered_pair(X,Y),element_relation)) /\
1911   (!Y Z X. member(Z,intersection(X,Y)) ==> member(Z,X)) /\
1912   (!X Z Y. member(Z,intersection(X,Y)) ==> member(Z,Y)) /\
1913   (!Z X Y. member(Z,X) /\ member(Z,Y) ==> member(Z,intersection(X,Y))) /\
1914   (!Z X. ~(member(Z,complement(X)) /\ member(Z,X))) /\
1915   (!Z X. member(Z,universal_class) ==> member(Z,complement(X)) \/ member(Z,X)) /\
1916   (!X Y. equal(complement(intersection(complement(X),complement(Y))),union(X,Y))) /\
1917   (!X Y. equal(intersection(complement(intersection(X,Y)),complement(intersection(complement(X),complement(Y)))),difference(X,Y))) /\
1918   (!Xr X Y. equal(intersection(Xr,cross_product(X,Y)),restrict(Xr,X,Y))) /\
1919   (!Xr X Y. equal(intersection(cross_product(X,Y),Xr),restrict(Xr,X,Y))) /\
1920   (!Z X. ~(equal(restrict(X,singleton(Z),universal_class),null_class) /\ member(Z,domain_of(X)))) /\
1921   (!Z X. member(Z,universal_class) ==> equal(restrict(X,singleton(Z),universal_class),null_class) \/ member(Z,domain_of(X))) /\
1922   (!X. subclass(rotate(X),cross_product(cross_product(universal_class,universal_class),universal_class))) /\
1923   (!V W U X. member(ordered_pair(ordered_pair(U,V),W),rotate(X)) ==> member(ordered_pair(ordered_pair(V,W),U),X)) /\
1924   (!U V W X. member(ordered_pair(ordered_pair(V,W),U),X) /\ member(ordered_pair(ordered_pair(U,V),W),cross_product(cross_product(universal_class,universal_class),universal_class)) ==> member(ordered_pair(ordered_pair(U,V),W),rotate(X))) /\
1925   (!X. subclass(flip(X),cross_product(cross_product(universal_class,universal_class),universal_class))) /\
1926   (!V U W X. member(ordered_pair(ordered_pair(U,V),W),flip(X)) ==> member(ordered_pair(ordered_pair(V,U),W),X)) /\
1927   (!U V W X. member(ordered_pair(ordered_pair(V,U),W),X) /\ member(ordered_pair(ordered_pair(U,V),W),cross_product(cross_product(universal_class,universal_class),universal_class)) ==> member(ordered_pair(ordered_pair(U,V),W),flip(X))) /\
1928   (!Y. equal(domain_of(flip(cross_product(Y,universal_class))),inverse(Y))) /\
1929   (!Z. equal(domain_of(inverse(Z)),range_of(Z))) /\
1930   (!Z X Y. equal(first(not_subclass_element(restrict(Z,X,singleton(Y)),null_class)),domain(Z,X,Y))) /\
1931   (!Z X Y. equal(second(not_subclass_element(restrict(Z,singleton(X),Y),null_class)),range(Z,X,Y))) /\
1932   (!Xr X. equal(range_of(restrict(Xr,X,universal_class)),image(Xr,X))) /\
1933   (!X. equal(union(X,singleton(X)),successor(X))) /\
1934   (subclass(successor_relation,cross_product(universal_class,universal_class))) /\
1935   (!X Y. member(ordered_pair(X,Y),successor_relation) ==> equal(successor(X),Y)) /\
1936   (!X Y. equal(successor(X),Y) /\ member(ordered_pair(X,Y),cross_product(universal_class,universal_class)) ==> member(ordered_pair(X,Y),successor_relation)) /\
1937   (!X. inductive(X) ==> member(null_class,X)) /\
1938   (!X. inductive(X) ==> subclass(image(successor_relation,X),X)) /\
1939   (!X. member(null_class,X) /\ subclass(image(successor_relation,X),X) ==> inductive(X)) /\
1940   (inductive(omega)) /\
1941   (!Y. inductive(Y) ==> subclass(omega,Y)) /\
1942   (member(omega,universal_class)) /\
1943   (!X. equal(domain_of(restrict(element_relation,universal_class,X)),sum_class(X))) /\
1944   (!X. member(X,universal_class) ==> member(sum_class(X),universal_class)) /\
1945   (!X. equal(complement(image(element_relation,complement(X))),power_class(X))) /\
1946   (!U. member(U,universal_class) ==> member(power_class(U),universal_class)) /\
1947   (!Yr Xr. subclass(compose(Yr,Xr),cross_product(universal_class,universal_class))) /\
1948   (!Z Yr Xr Y. member(ordered_pair(Y,Z),compose(Yr,Xr)) ==> member(Z,image(Yr,image(Xr,singleton(Y))))) /\
1949   (!Y Z Yr Xr. member(Z,image(Yr,image(Xr,singleton(Y)))) /\ member(ordered_pair(Y,Z),cross_product(universal_class,universal_class)) ==> member(ordered_pair(Y,Z),compose(Yr,Xr))) /\
1950   (!X. single_valued_class(X) ==> subclass(compose(X,inverse(X)),identity_relation)) /\
1951   (!X. subclass(compose(X,inverse(X)),identity_relation) ==> single_valued_class(X)) /\
1952   (!Xf. function(Xf) ==> subclass(Xf,cross_product(universal_class,universal_class))) /\
1953   (!Xf. function(Xf) ==> subclass(compose(Xf,inverse(Xf)),identity_relation)) /\
1954   (!Xf. subclass(Xf,cross_product(universal_class,universal_class)) /\ subclass(compose(Xf,inverse(Xf)),identity_relation) ==> function(Xf)) /\
1955   (!Xf X. function(Xf) /\ member(X,universal_class) ==> member(image(Xf,X),universal_class)) /\
1956   (!X. equal(X,null_class) \/ member(regular(X),X)) /\
1957   (!X. equal(X,null_class) \/ equal(intersection(X,regular(X)),null_class)) /\
1958   (!Xf Y. equal(sum_class(image(Xf,singleton(Y))),apply(Xf,Y))) /\
1959   (function(choice)) /\
1960   (!Y. member(Y,universal_class) ==> equal(Y,null_class) \/ member(apply(choice,Y),Y)) /\
1961   (!Xf. one_to_one(Xf) ==> function(Xf)) /\
1962   (!Xf. one_to_one(Xf) ==> function(inverse(Xf))) /\
1963   (!Xf. function(inverse(Xf)) /\ function(Xf) ==> one_to_one(Xf)) /\
1964   (equal(intersection(cross_product(universal_class,universal_class),intersection(cross_product(universal_class,universal_class),complement(compose(complement(element_relation),inverse(element_relation))))),subset_relation)) /\
1965   (equal(intersection(inverse(subset_relation),subset_relation),identity_relation)) /\
1966   (!Xr. equal(complement(domain_of(intersection(Xr,identity_relation))),diagonalise(Xr))) /\
1967   (!X. equal(intersection(domain_of(X),diagonalise(compose(inverse(element_relation),X))),cantor(X))) /\
1968   (!Xf. operation(Xf) ==> function(Xf)) /\
1969   (!Xf. operation(Xf) ==> equal(cross_product(domain_of(domain_of(Xf)),domain_of(domain_of(Xf))),domain_of(Xf))) /\
1970   (!Xf. operation(Xf) ==> subclass(range_of(Xf),domain_of(domain_of(Xf)))) /\
1971   (!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)) /\
1972   (!Xf1 Xf2 Xh. compatible(Xh,Xf1,Xf2) ==> function(Xh)) /\
1973   (!Xf2 Xf1 Xh. compatible(Xh,Xf1,Xf2) ==> equal(domain_of(domain_of(Xf1)),domain_of(Xh))) /\
1974   (!Xf1 Xh Xf2. compatible(Xh,Xf1,Xf2) ==> subclass(range_of(Xh),domain_of(domain_of(Xf2)))) /\
1975   (!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,Xf1,Xf2)) /\
1976   (!Xh Xf2 Xf1. homomorphism(Xh,Xf1,Xf2) ==> operation(Xf1)) /\
1977   (!Xh Xf1 Xf2. homomorphism(Xh,Xf1,Xf2) ==> operation(Xf2)) /\
1978   (!Xh Xf1 Xf2. homomorphism(Xh,Xf1,Xf2) ==> compatible(Xh,Xf1,Xf2)) /\
1979   (!Xf2 Xh Xf1 X Y. homomorphism(Xh,Xf1,Xf2) /\ member(ordered_pair(X,Y),domain_of(Xf1)) ==> equal(apply(Xf2,ordered_pair(apply(Xh,X),apply(Xh,Y))),apply(Xh,apply(Xf1,ordered_pair(X,Y))))) /\
1980   (!Xh Xf1 Xf2. operation(Xf1) /\ operation(Xf2) /\ compatible(Xh,Xf1,Xf2) ==> member(ordered_pair(not_homomorphism1(Xh,Xf1,Xf2),not_homomorphism2(Xh,Xf1,Xf2)),domain_of(Xf1)) \/ homomorphism(Xh,Xf1,Xf2)) /\
1981   (!Xh Xf1 Xf2. operation(Xf1) /\ operation(Xf2) /\ compatible(Xh,Xf1,Xf2) /\ equal(apply(Xf2,ordered_pair(apply(Xh,not_homomorphism1(Xh,Xf1,Xf2)),apply(Xh,not_homomorphism2(Xh,Xf1,Xf2)))),apply(Xh,apply(Xf1,ordered_pair(not_homomorphism1(Xh,Xf1,Xf2),not_homomorphism2(Xh,Xf1,Xf2))))) ==> homomorphism(Xh,Xf1,Xf2)) /\
1982   (!D E F'. equal(D,E) ==> equal(apply(D,F'),apply(E,F'))) /\
1983   (!G I' H. equal(G,H) ==> equal(apply(I',G),apply(I',H))) /\
1984   (!J K'. equal(J,K') ==> equal(cantor(J),cantor(K'))) /\
1985   (!L M. equal(L,M) ==> equal(complement(L),complement(M))) /\
1986   (!N O P. equal(N,O) ==> equal(compose(N,P),compose(O,P))) /\
1987   (!Q S' R. equal(Q,R) ==> equal(compose(S',Q),compose(S',R))) /\
1988   (!T' U V. equal(T',U) ==> equal(cross_product(T',V),cross_product(U,V))) /\
1989   (!W Y X. equal(W,X) ==> equal(cross_product(Y,W),cross_product(Y,X))) /\
1990   (!Z A1. equal(Z,A1) ==> equal(diagonalise(Z),diagonalise(A1))) /\
1991   (!B1 C1 D1. equal(B1,C1) ==> equal(difference(B1,D1),difference(C1,D1))) /\
1992   (!E1 G1 F1. equal(E1,F1) ==> equal(difference(G1,E1),difference(G1,F1))) /\
1993   (!H1 I1 J1 K1. equal(H1,I1) ==> equal(domain(H1,J1,K1),domain(I1,J1,K1))) /\
1994   (!L1 N1 M1 O1. equal(L1,M1) ==> equal(domain(N1,L1,O1),domain(N1,M1,O1))) /\
1995   (!P1 R1 S1 Q1. equal(P1,Q1) ==> equal(domain(R1,S1,P1),domain(R1,S1,Q1))) /\
1996   (!T1 U1. equal(T1,U1) ==> equal(domain_of(T1),domain_of(U1))) /\
1997   (!V1 W1. equal(V1,W1) ==> equal(first(V1),first(W1))) /\
1998   (!X1 Y1. equal(X1,Y1) ==> equal(flip(X1),flip(Y1))) /\
1999   (!Z1 A2 B2. equal(Z1,A2) ==> equal(image(Z1,B2),image(A2,B2))) /\
2000   (!C2 E2 D2. equal(C2,D2) ==> equal(image(E2,C2),image(E2,D2))) /\
2001   (!F2 G2 H2. equal(F2,G2) ==> equal(intersection(F2,H2),intersection(G2,H2))) /\
2002   (!I2 K2 J2. equal(I2,J2) ==> equal(intersection(K2,I2),intersection(K2,J2))) /\
2003   (!L2 M2. equal(L2,M2) ==> equal(inverse(L2),inverse(M2))) /\
2004   (!N2 O2 P2 Q2. equal(N2,O2) ==> equal(not_homomorphism1(N2,P2,Q2),not_homomorphism1(O2,P2,Q2))) /\
2005   (!R2 T2 S2 U2. equal(R2,S2) ==> equal(not_homomorphism1(T2,R2,U2),not_homomorphism1(T2,S2,U2))) /\
2006   (!V2 X2 Y2 W2. equal(V2,W2) ==> equal(not_homomorphism1(X2,Y2,V2),not_homomorphism1(X2,Y2,W2))) /\
2007   (!Z2 A3 B3 C3. equal(Z2,A3) ==> equal(not_homomorphism2(Z2,B3,C3),not_homomorphism2(A3,B3,C3))) /\
2008   (!D3 F3 E3 G3. equal(D3,E3) ==> equal(not_homomorphism2(F3,D3,G3),not_homomorphism2(F3,E3,G3))) /\
2009   (!H3 J3 K3 I3. equal(H3,I3) ==> equal(not_homomorphism2(J3,K3,H3),not_homomorphism2(J3,K3,I3))) /\
2010   (!L3 M3 N3. equal(L3,M3) ==> equal(not_subclass_element(L3,N3),not_subclass_element(M3,N3))) /\
2011   (!O3 Q3 P3. equal(O3,P3) ==> equal(not_subclass_element(Q3,O3),not_subclass_element(Q3,P3))) /\
2012   (!R3 S3 T3. equal(R3,S3) ==> equal(ordered_pair(R3,T3),ordered_pair(S3,T3))) /\
2013   (!U3 W3 V3. equal(U3,V3) ==> equal(ordered_pair(W3,U3),ordered_pair(W3,V3))) /\
2014   (!X3 Y3. equal(X3,Y3) ==> equal(power_class(X3),power_class(Y3))) /\
2015   (!Z3 A4 B4 C4. equal(Z3,A4) ==> equal(range(Z3,B4,C4),range(A4,B4,C4))) /\
2016   (!D4 F4 E4 G4. equal(D4,E4) ==> equal(range(F4,D4,G4),range(F4,E4,G4))) /\
2017   (!H4 J4 K4 I4. equal(H4,I4) ==> equal(range(J4,K4,H4),range(J4,K4,I4))) /\
2018   (!L4 M4. equal(L4,M4) ==> equal(range_of(L4),range_of(M4))) /\
2019   (!N4 O4. equal(N4,O4) ==> equal(regular(N4),regular(O4))) /\
2020   (!P4 Q4 R4 S4. equal(P4,Q4) ==> equal(restrict(P4,R4,S4),restrict(Q4,R4,S4))) /\
2021   (!T4 V4 U4 W4. equal(T4,U4) ==> equal(restrict(V4,T4,W4),restrict(V4,U4,W4))) /\
2022   (!X4 Z4 A5 Y4. equal(X4,Y4) ==> equal(restrict(Z4,A5,X4),restrict(Z4,A5,Y4))) /\
2023   (!B5 C5. equal(B5,C5) ==> equal(rotate(B5),rotate(C5))) /\
2024   (!D5 E5. equal(D5,E5) ==> equal(second(D5),second(E5))) /\
2025   (!F5 G5. equal(F5,G5) ==> equal(singleton(F5),singleton(G5))) /\
2026   (!H5 I5. equal(H5,I5) ==> equal(successor(H5),successor(I5))) /\
2027   (!J5 K5. equal(J5,K5) ==> equal(sum_class(J5),sum_class(K5))) /\
2028   (!L5 M5 N5. equal(L5,M5) ==> equal(union(L5,N5),union(M5,N5))) /\
2029   (!O5 Q5 P5. equal(O5,P5) ==> equal(union(Q5,O5),union(Q5,P5))) /\
2030   (!R5 S5 T5. equal(R5,S5) ==> equal(unordered_pair(R5,T5),unordered_pair(S5,T5))) /\
2031   (!U5 W5 V5. equal(U5,V5) ==> equal(unordered_pair(W5,U5),unordered_pair(W5,V5))) /\
2032   (!X5 Y5 Z5 A6. equal(X5,Y5) /\ compatible(X5,Z5,A6) ==> compatible(Y5,Z5,A6)) /\
2033   (!B6 D6 C6 E6. equal(B6,C6) /\ compatible(D6,B6,E6) ==> compatible(D6,C6,E6)) /\
2034   (!F6 H6 I6 G6. equal(F6,G6) /\ compatible(H6,I6,F6) ==> compatible(H6,I6,G6)) /\
2035   (!J6 K6. equal(J6,K6) /\ function(J6) ==> function(K6)) /\
2036   (!L6 M6 N6 O6. equal(L6,M6) /\ homomorphism(L6,N6,O6) ==> homomorphism(M6,N6,O6)) /\
2037   (!P6 R6 Q6 S6. equal(P6,Q6) /\ homomorphism(R6,P6,S6) ==> homomorphism(R6,Q6,S6)) /\
2038   (!T6 V6 W6 U6. equal(T6,U6) /\ homomorphism(V6,W6,T6) ==> homomorphism(V6,W6,U6)) /\
2039   (!X6 Y6. equal(X6,Y6) /\ inductive(X6) ==> inductive(Y6)) /\
2040   (!Z6 A7 B7. equal(Z6,A7) /\ member(Z6,B7) ==> member(A7,B7)) /\
2041   (!C7 E7 D7. equal(C7,D7) /\ member(E7,C7) ==> member(E7,D7)) /\
2042   (!F7 G7. equal(F7,G7) /\ one_to_one(F7) ==> one_to_one(G7)) /\
2043   (!H7 I7. equal(H7,I7) /\ operation(H7) ==> operation(I7)) /\
2044   (!J7 K7. equal(J7,K7) /\ single_valued_class(J7) ==> single_valued_class(K7)) /\
2045   (!L7 M7 N7. equal(L7,M7) /\ subclass(L7,N7) ==> subclass(M7,N7)) /\
2046   (!O7 Q7 P7. equal(O7,P7) /\ subclass(Q7,O7) ==> subclass(Q7,P7)) /\
2047   (!X. subclass(compose_class(X),cross_product(universal_class,universal_class))) /\
2048   (!X Y Z. member(ordered_pair(Y,Z),compose_class(X)) ==> equal(compose(X,Y),Z)) /\
2049   (!Y Z X. member(ordered_pair(Y,Z),cross_product(universal_class,universal_class)) /\ equal(compose(X,Y),Z) ==> member(ordered_pair(Y,Z),compose_class(X))) /\
2050   (subclass(composition_function,cross_product(universal_class,cross_product(universal_class,universal_class)))) /\
2051   (!X Y Z. member(ordered_pair(X,ordered_pair(Y,Z)),composition_function) ==> equal(compose(X,Y),Z)) /\
2052   (!X Y. member(ordered_pair(X,Y),cross_product(universal_class,universal_class)) ==> member(ordered_pair(X,ordered_pair(Y,compose(X,Y))),composition_function)) /\
2053   (subclass(domain_relation,cross_product(universal_class,universal_class))) /\
2054   (!X Y. member(ordered_pair(X,Y),domain_relation) ==> equal(domain_of(X),Y)) /\
2055   (!X. member(X,universal_class) ==> member(ordered_pair(X,domain_of(X)),domain_relation)) /\
2056   (!X. equal(first(not_subclass_element(compose(X,inverse(X)),identity_relation)),single_valued1(X))) /\
2057   (!X. equal(second(not_subclass_element(compose(X,inverse(X)),identity_relation)),single_valued2(X))) /\
2058   (!X. equal(domain(X,image(inverse(X),singleton(single_valued1(X))),single_valued2(X)),single_valued3(X))) /\
2059   (equal(intersection(complement(compose(element_relation,complement(identity_relation))),element_relation),singleton_relation)) /\
2060   (subclass(application_function,cross_product(universal_class,cross_product(universal_class,universal_class)))) /\
2061   (!Z Y X. member(ordered_pair(X,ordered_pair(Y,Z)),application_function) ==> member(Y,domain_of(X))) /\
2062   (!X Y Z. member(ordered_pair(X,ordered_pair(Y,Z)),application_function) ==> equal(apply(X,Y),Z)) /\
2063   (!Z X Y. member(ordered_pair(X,ordered_pair(Y,Z)),cross_product(universal_class,cross_product(universal_class,universal_class))) /\ member(Y,domain_of(X)) ==> member(ordered_pair(X,ordered_pair(Y,apply(X,Y))),application_function)) /\
2064   (!X Y Xf. maps(Xf,X,Y) ==> function(Xf)) /\
2065   (!Y Xf X. maps(Xf,X,Y) ==> equal(domain_of(Xf),X)) /\
2066   (!X Xf Y. maps(Xf,X,Y) ==> subclass(range_of(Xf),Y)) /\
2067   (!Xf Y. function(Xf) /\ subclass(range_of(Xf),Y) ==> maps(Xf,domain_of(Xf),Y)) /\
2068   (!L M. equal(L,M) ==> equal(compose_class(L),compose_class(M))) /\
2069   (!N2 O2. equal(N2,O2) ==> equal(single_valued1(N2),single_valued1(O2))) /\
2070   (!P2 Q2. equal(P2,Q2) ==> equal(single_valued2(P2),single_valued2(Q2))) /\
2071   (!R2 S2. equal(R2,S2) ==> equal(single_valued3(R2),single_valued3(S2))) /\
2072   (!X2 Y2 Z2 A3. equal(X2,Y2) /\ maps(X2,Z2,A3) ==> maps(Y2,Z2,A3)) /\
2073   (!B3 D3 C3 E3. equal(B3,C3) /\ maps(D3,B3,E3) ==> maps(D3,C3,E3)) /\
2074   (!F3 H3 I3 G3. equal(F3,G3) /\ maps(H3,I3,F3) ==> maps(H3,I3,G3)) /\
2075   (!X. equal(union(X,inverse(X)),symmetrization_of(X))) /\
2076   (!X Y. irreflexive(X,Y) ==> subclass(restrict(X,Y,Y),complement(identity_relation))) /\
2077   (!X Y. subclass(restrict(X,Y,Y),complement(identity_relation)) ==> irreflexive(X,Y)) /\
2078   (!Y X. connected(X,Y) ==> subclass(cross_product(Y,Y),union(identity_relation,symmetrization_of(X)))) /\
2079   (!X Y. subclass(cross_product(Y,Y),union(identity_relation,symmetrization_of(X))) ==> connected(X,Y)) /\
2080   (!Xr Y. transitive(Xr,Y) ==> subclass(compose(restrict(Xr,Y,Y),restrict(Xr,Y,Y)),restrict(Xr,Y,Y))) /\
2081   (!Xr Y. subclass(compose(restrict(Xr,Y,Y),restrict(Xr,Y,Y)),restrict(Xr,Y,Y)) ==> transitive(Xr,Y)) /\
2082   (!Xr Y. asymmetric(Xr,Y) ==> equal(restrict(intersection(Xr,inverse(Xr)),Y,Y),null_class)) /\
2083   (!Xr Y. equal(restrict(intersection(Xr,inverse(Xr)),Y,Y),null_class) ==> asymmetric(Xr,Y)) /\
2084   (!Xr Y Z. equal(segment(Xr,Y,Z),domain_of(restrict(Xr,Y,singleton(Z))))) /\
2085   (!X Y. well_ordering(X,Y) ==> connected(X,Y)) /\
2086   (!Y Xr U. well_ordering(Xr,Y) /\ subclass(U,Y) ==> equal(U,null_class) \/ member(least(Xr,U),U)) /\
2087   (!Y V Xr U. well_ordering(Xr,Y) /\ subclass(U,Y) /\ member(V,U) ==> member(least(Xr,U),U)) /\
2088   (!Y Xr U. well_ordering(Xr,Y) /\ subclass(U,Y) ==> equal(segment(Xr,U,least(Xr,U)),null_class)) /\
2089   (!Y V U Xr. ~(well_ordering(Xr,Y) /\ subclass(U,Y) /\ member(V,U) /\ member(ordered_pair(V,least(Xr,U)),Xr))) /\
2090   (!Xr Y. connected(Xr,Y) /\ equal(not_well_ordering(Xr,Y),null_class) ==> well_ordering(Xr,Y)) /\
2091   (!Xr Y. connected(Xr,Y) ==> subclass(not_well_ordering(Xr,Y),Y) \/ well_ordering(Xr,Y)) /\
2092   (!V Xr Y. member(V,not_well_ordering(Xr,Y)) /\ equal(segment(Xr,not_well_ordering(Xr,Y),V),null_class) /\ connected(Xr,Y) ==> well_ordering(Xr,Y)) /\
2093   (!Xr Y Z. section(Xr,Y,Z) ==> subclass(Y,Z)) /\
2094   (!Xr Z Y. section(Xr,Y,Z) ==> subclass(domain_of(restrict(Xr,Z,Y)),Y)) /\
2095   (!Xr Y Z. subclass(Y,Z) /\ subclass(domain_of(restrict(Xr,Z,Y)),Y) ==> section(Xr,Y,Z)) /\
2096   (!X. member(X,ordinal_numbers) ==> well_ordering(element_relation,X)) /\
2097   (!X. member(X,ordinal_numbers) ==> subclass(sum_class(X),X)) /\
2098   (!X. well_ordering(element_relation,X) /\ subclass(sum_class(X),X) /\ member(X,universal_class) ==> member(X,ordinal_numbers)) /\
2099   (!X. well_ordering(element_relation,X) /\ subclass(sum_class(X),X) ==> member(X,ordinal_numbers) \/ equal(X,ordinal_numbers)) /\
2100   (equal(union(singleton(null_class),image(successor_relation,ordinal_numbers)),kind_1_ordinals)) /\
2101   (equal(intersection(complement(kind_1_ordinals),ordinal_numbers),limit_ordinals)) /\
2102   (!X. subclass(rest_of(X),cross_product(universal_class,universal_class))) /\
2103   (!V U X. member(ordered_pair(U,V),rest_of(X)) ==> member(U,domain_of(X))) /\
2104   (!X U V. member(ordered_pair(U,V),rest_of(X)) ==> equal(restrict(X,U,universal_class),V)) /\
2105   (!U V X. member(U,domain_of(X)) /\ equal(restrict(X,U,universal_class),V) ==> member(ordered_pair(U,V),rest_of(X))) /\
2106   (subclass(rest_relation,cross_product(universal_class,universal_class))) /\
2107   (!X Y. member(ordered_pair(X,Y),rest_relation) ==> equal(rest_of(X),Y)) /\
2108   (!X. member(X,universal_class) ==> member(ordered_pair(X,rest_of(X)),rest_relation)) /\
2109   (!X Z. member(X,recursion_equation_functions(Z)) ==> function(Z)) /\
2110   (!Z X. member(X,recursion_equation_functions(Z)) ==> function(X)) /\
2111   (!Z X. member(X,recursion_equation_functions(Z)) ==> member(domain_of(X),ordinal_numbers)) /\
2112   (!Z X. member(X,recursion_equation_functions(Z)) ==> equal(compose(Z,rest_of(X)),X)) /\
2113   (!X Z. function(Z) /\ function(X) /\ member(domain_of(X),ordinal_numbers) /\ equal(compose(Z,rest_of(X)),X) ==> member(X,recursion_equation_functions(Z))) /\
2114   (subclass(union_of_range_map,cross_product(universal_class,universal_class))) /\
2115   (!X Y. member(ordered_pair(X,Y),union_of_range_map) ==> equal(sum_class(range_of(X)),Y)) /\
2116   (!X Y. member(ordered_pair(X,Y),cross_product(universal_class,universal_class)) /\ equal(sum_class(range_of(X)),Y) ==> member(ordered_pair(X,Y),union_of_range_map)) /\
2117   (!X Y. equal(apply(recursion(X,successor_relation,union_of_range_map),Y),ordinal_add(X,Y))) /\
2118   (!X Y. equal(recursion(null_class,apply(add_relation,X),union_of_range_map),ordinal_multiply(X,Y))) /\
2119   (!X. member(X,omega) ==> equal(integer_of(X),X)) /\
2120   (!X. member(X,omega) \/ equal(integer_of(X),null_class)) /\
2121   (!D E. equal(D,E) ==> equal(integer_of(D),integer_of(E))) /\
2122   (!F' G H. equal(F',G) ==> equal(least(F',H),least(G,H))) /\
2123   (!I' K' J. equal(I',J) ==> equal(least(K',I'),least(K',J))) /\
2124   (!L M N. equal(L,M) ==> equal(not_well_ordering(L,N),not_well_ordering(M,N))) /\
2125   (!O Q P. equal(O,P) ==> equal(not_well_ordering(Q,O),not_well_ordering(Q,P))) /\
2126   (!R S' T'. equal(R,S') ==> equal(ordinal_add(R,T'),ordinal_add(S',T'))) /\
2127   (!U W V. equal(U,V) ==> equal(ordinal_add(W,U),ordinal_add(W,V))) /\
2128   (!X Y Z. equal(X,Y) ==> equal(ordinal_multiply(X,Z),ordinal_multiply(Y,Z))) /\
2129   (!A1 C1 B1. equal(A1,B1) ==> equal(ordinal_multiply(C1,A1),ordinal_multiply(C1,B1))) /\
2130   (!F1 G1 H1 I1. equal(F1,G1) ==> equal(recursion(F1,H1,I1),recursion(G1,H1,I1))) /\
2131   (!J1 L1 K1 M1. equal(J1,K1) ==> equal(recursion(L1,J1,M1),recursion(L1,K1,M1))) /\
2132   (!N1 P1 Q1 O1. equal(N1,O1) ==> equal(recursion(P1,Q1,N1),recursion(P1,Q1,O1))) /\
2133   (!R1 S1. equal(R1,S1) ==> equal(recursion_equation_functions(R1),recursion_equation_functions(S1))) /\
2134   (!T1 U1. equal(T1,U1) ==> equal(rest_of(T1),rest_of(U1))) /\
2135   (!V1 W1 X1 Y1. equal(V1,W1) ==> equal(segment(V1,X1,Y1),segment(W1,X1,Y1))) /\
2136   (!Z1 B2 A2 C2. equal(Z1,A2) ==> equal(segment(B2,Z1,C2),segment(B2,A2,C2))) /\
2137   (!D2 F2 G2 E2. equal(D2,E2) ==> equal(segment(F2,G2,D2),segment(F2,G2,E2))) /\
2138   (!H2 I2. equal(H2,I2) ==> equal(symmetrization_of(H2),symmetrization_of(I2))) /\
2139   (!J2 K2 L2. equal(J2,K2) /\ asymmetric(J2,L2) ==> asymmetric(K2,L2)) /\
2140   (!M2 O2 N2. equal(M2,N2) /\ asymmetric(O2,M2) ==> asymmetric(O2,N2)) /\
2141   (!P2 Q2 R2. equal(P2,Q2) /\ connected(P2,R2) ==> connected(Q2,R2)) /\
2142   (!S2 U2 T2. equal(S2,T2) /\ connected(U2,S2) ==> connected(U2,T2)) /\
2143   (!V2 W2 X2. equal(V2,W2) /\ irreflexive(V2,X2) ==> irreflexive(W2,X2)) /\
2144   (!Y2 A3 Z2. equal(Y2,Z2) /\ irreflexive(A3,Y2) ==> irreflexive(A3,Z2)) /\
2145   (!B3 C3 D3 E3. equal(B3,C3) /\ section(B3,D3,E3) ==> section(C3,D3,E3)) /\
2146   (!F3 H3 G3 I3. equal(F3,G3) /\ section(H3,F3,I3) ==> section(H3,G3,I3)) /\
2147   (!J3 L3 M3 K3. equal(J3,K3) /\ section(L3,M3,J3) ==> section(L3,M3,K3)) /\
2148   (!N3 O3 P3. equal(N3,O3) /\ transitive(N3,P3) ==> transitive(O3,P3)) /\
2149   (!Q3 S3 R3. equal(Q3,R3) /\ transitive(S3,Q3) ==> transitive(S3,R3)) /\
2150   (!T3 U3 V3. equal(T3,U3) /\ well_ordering(T3,V3) ==> well_ordering(U3,V3)) /\
2151   (!W3 Y3 X3. equal(W3,X3) /\ well_ordering(Y3,W3) ==> well_ordering(Y3,X3)) /\
2152   (~function(z)) /\
2153   (~equal(recursion_equation_functions(z),null_class)) ==> F`;
2154
2155
2156val PLA002_1 = M "PLA002_1"
2157 ���(!Situation1 Situation2. warm(Situation1) \/ cold(Situation2)) /\
2158   (!Situation. at(a:'a,Situation) ==> at(b,walk(b,Situation))) /\
2159   (!Situation. at(a,Situation) ==> at(b,drive(b,Situation))) /\
2160   (!Situation. at(b,Situation) ==> at(a,walk(a,Situation))) /\
2161   (!Situation. at(b,Situation) ==> at(a,drive(a,Situation))) /\
2162   (!Situation. cold(Situation) /\ at(b,Situation) ==> at(c,skate(c,Situation))) /\
2163   (!Situation. cold(Situation) /\ at(c,Situation) ==> at(b,skate(b,Situation))) /\
2164   (!Situation. warm(Situation) /\ at(b,Situation) ==> at(d,climb(d,Situation))) /\
2165   (!Situation. warm(Situation) /\ at(d,Situation) ==> at(b,climb(b,Situation))) /\
2166   (!Situation. at(c,Situation) ==> at(d,go(d,Situation))) /\
2167   (!Situation. at(d,Situation) ==> at(c,go(c,Situation))) /\
2168   (!Situation. at(c,Situation) ==> at(e,go(e,Situation))) /\
2169   (!Situation. at(e,Situation) ==> at(c,go(c,Situation))) /\
2170   (!Situation. at(d,Situation) ==> at(f,go(f,Situation))) /\
2171   (!Situation:'a. at(f,Situation) ==> at(d,go(d,Situation))) /\
2172   (at(f,s0)) /\
2173   (!S'. ~at(a,S')) ==> F���;
2174
2175
2176val PLA006_1 = M "PLA006_1" $
2177Lib.with_flag(Globals.guessing_tyvars,true)
2178 Term
2179`(!X Y State. holds(X,State) /\ holds(Y,State) ==> holds(and'(X,Y),State)) /\
2180   (!State X. holds(empty,State) /\ holds(clear(X),State) /\ differ(X,table) ==> holds(holding(X),do(pickup(X),State))) /\
2181   (!Y X State. holds(on(X,Y),State) /\ holds(clear(X),State) /\ holds(empty,State) ==> holds(clear(Y),do(pickup(X),State))) /\
2182   (!Y State X Z. holds(on(X,Y),State) /\ differ(X,Z) ==> holds(on(X,Y),do(pickup(Z),State))) /\
2183   (!State X Z. holds(clear(X),State) /\ differ(X,Z) ==> holds(clear(X),do(pickup(Z),State))) /\
2184   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(empty,do(putdown(X,Y),State))) /\
2185   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(on(X,Y),do(putdown(X,Y),State))) /\
2186   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(clear(X),do(putdown(X,Y),State))) /\
2187   (!Z W X Y State. holds(on(X,Y),State) ==> holds(on(X,Y),do(putdown(Z,W),State))) /\
2188   (!X State Z Y. holds(clear(Z),State) /\ differ(Z,Y) ==> holds(clear(Z),do(putdown(X,Y),State))) /\
2189   (!Y X. differ(Y,X) ==> differ(X,Y)) /\
2190   (differ(a,b)) /\
2191   (differ(a,c)) /\
2192   (differ(a,d)) /\
2193   (differ(a,table)) /\
2194   (differ(b,c)) /\
2195   (differ(b,d)) /\
2196   (differ(b,table)) /\
2197   (differ(c,d)) /\
2198   (differ(c,table)) /\
2199   (differ(d,table)) /\
2200   (holds(on(a,table),s0)) /\
2201   (holds(on(b,table),s0)) /\
2202   (holds(on(c,d),s0)) /\
2203   (holds(on(d,table),s0)) /\
2204   (holds(clear(a),s0)) /\
2205   (holds(clear(b),s0)) /\
2206   (holds(clear(c),s0)) /\
2207   (holds(empty,s0)) /\
2208   (!State. holds(clear(table),State)) /\
2209   (!State. ~holds(on(c,table),State)) ==> F`;
2210
2211
2212val PLA017_1 = M "PLA017_1" $
2213Lib.with_flag(Globals.guessing_tyvars,true)
2214 Term
2215`(!X Y State. holds(X,State) /\ holds(Y,State) ==> holds(and'(X,Y),State)) /\
2216   (!State X. holds(empty,State) /\ holds(clear(X),State) /\ differ(X,table) ==> holds(holding(X),do(pickup(X),State))) /\
2217   (!Y X State. holds(on(X,Y),State) /\ holds(clear(X),State) /\ holds(empty,State) ==> holds(clear(Y),do(pickup(X),State))) /\
2218   (!Y State X Z. holds(on(X,Y),State) /\ differ(X,Z) ==> holds(on(X,Y),do(pickup(Z),State))) /\
2219   (!State X Z. holds(clear(X),State) /\ differ(X,Z) ==> holds(clear(X),do(pickup(Z),State))) /\
2220   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(empty,do(putdown(X,Y),State))) /\
2221   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(on(X,Y),do(putdown(X,Y),State))) /\
2222   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(clear(X),do(putdown(X,Y),State))) /\
2223   (!Z W X Y State. holds(on(X,Y),State) ==> holds(on(X,Y),do(putdown(Z,W),State))) /\
2224   (!X State Z Y. holds(clear(Z),State) /\ differ(Z,Y) ==> holds(clear(Z),do(putdown(X,Y),State))) /\
2225   (!Y X. differ(Y,X) ==> differ(X,Y)) /\
2226   (differ(a,b)) /\
2227   (differ(a,c)) /\
2228   (differ(a,d)) /\
2229   (differ(a,table)) /\
2230   (differ(b,c)) /\
2231   (differ(b,d)) /\
2232   (differ(b,table)) /\
2233   (differ(c,d)) /\
2234   (differ(c,table)) /\
2235   (differ(d,table)) /\
2236   (holds(on(a,table),s0)) /\
2237   (holds(on(b,table),s0)) /\
2238   (holds(on(c,d),s0)) /\
2239   (holds(on(d,table),s0)) /\
2240   (holds(clear(a),s0)) /\
2241   (holds(clear(b),s0)) /\
2242   (holds(clear(c),s0)) /\
2243   (holds(empty,s0)) /\
2244   (!State. holds(clear(table),State)) /\
2245   (!State. ~holds(on(a,c),State)) ==> F`;
2246
2247
2248val PLA022_1 = M "PLA022_1" $
2249Lib.with_flag(Globals.guessing_tyvars,true)
2250 Term
2251`(!X Y State. holds(X,State) /\ holds(Y,State) ==> holds(and'(X,Y),State)) /\
2252   (!State X. holds(empty,State) /\ holds(clear(X),State) /\ differ(X,table) ==> holds(holding(X),do(pickup(X),State))) /\
2253   (!Y X State. holds(on(X,Y),State) /\ holds(clear(X),State) /\ holds(empty,State) ==> holds(clear(Y),do(pickup(X),State))) /\
2254   (!Y State X Z. holds(on(X,Y),State) /\ differ(X,Z) ==> holds(on(X,Y),do(pickup(Z),State))) /\
2255   (!State X Z. holds(clear(X),State) /\ differ(X,Z) ==> holds(clear(X),do(pickup(Z),State))) /\
2256   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(empty,do(putdown(X,Y),State))) /\
2257   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(on(X,Y),do(putdown(X,Y),State))) /\
2258   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(clear(X),do(putdown(X,Y),State))) /\
2259   (!Z W X Y State. holds(on(X,Y),State) ==> holds(on(X,Y),do(putdown(Z,W),State))) /\
2260   (!X State Z Y. holds(clear(Z),State) /\ differ(Z,Y) ==> holds(clear(Z),do(putdown(X,Y),State))) /\
2261   (!Y X. differ(Y,X) ==> differ(X,Y)) /\
2262   (differ(a,b)) /\
2263   (differ(a,c)) /\
2264   (differ(a,d)) /\
2265   (differ(a,table)) /\
2266   (differ(b,c)) /\
2267   (differ(b,d)) /\
2268   (differ(b,table)) /\
2269   (differ(c,d)) /\
2270   (differ(c,table)) /\
2271   (differ(d,table)) /\
2272   (holds(on(a,table),s0)) /\
2273   (holds(on(b,table),s0)) /\
2274   (holds(on(c,d),s0)) /\
2275   (holds(on(d,table),s0)) /\
2276   (holds(clear(a),s0)) /\
2277   (holds(clear(b),s0)) /\
2278   (holds(clear(c),s0)) /\
2279   (holds(empty,s0)) /\
2280   (!State. holds(clear(table),State)) /\
2281   (!State. ~holds(and'(on(c,d),on(a,c)),State)) ==> F`;
2282
2283
2284val PLA022_2 = M "PLA022_2" $
2285Lib.with_flag(Globals.guessing_tyvars,true)
2286 Term
2287`(!X Y State. holds(X,State) /\ holds(Y,State) ==> holds(and'(X,Y),State)) /\
2288   (!State X. holds(empty,State) /\ holds(clear(X),State) /\ differ(X,table) ==> holds(holding(X),do(pickup(X),State))) /\
2289   (!Y X State. holds(on(X,Y),State) /\ holds(clear(X),State) /\ holds(empty,State) ==> holds(clear(Y),do(pickup(X),State))) /\
2290   (!Y State X Z. holds(on(X,Y),State) /\ differ(X,Z) ==> holds(on(X,Y),do(pickup(Z),State))) /\
2291   (!State X Z. holds(clear(X),State) /\ differ(X,Z) ==> holds(clear(X),do(pickup(Z),State))) /\
2292   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(empty,do(putdown(X,Y),State))) /\
2293   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(on(X,Y),do(putdown(X,Y),State))) /\
2294   (!X Y State. holds(holding(X),State) /\ holds(clear(Y),State) ==> holds(clear(X),do(putdown(X,Y),State))) /\
2295   (!Z W X Y State. holds(on(X,Y),State) ==> holds(on(X,Y),do(putdown(Z,W),State))) /\
2296   (!X State Z Y. holds(clear(Z),State) /\ differ(Z,Y) ==> holds(clear(Z),do(putdown(X,Y),State))) /\
2297   (!Y X. differ(Y,X) ==> differ(X,Y)) /\
2298   (differ(a,b)) /\
2299   (differ(a,c)) /\
2300   (differ(a,d)) /\
2301   (differ(a,table)) /\
2302   (differ(b,c)) /\
2303   (differ(b,d)) /\
2304   (differ(b,table)) /\
2305   (differ(c,d)) /\
2306   (differ(c,table)) /\
2307   (differ(d,table)) /\
2308   (holds(on(a,table),s0)) /\
2309   (holds(on(b,table),s0)) /\
2310   (holds(on(c,d),s0)) /\
2311   (holds(on(d,table),s0)) /\
2312   (holds(clear(a),s0)) /\
2313   (holds(clear(b),s0)) /\
2314   (holds(clear(c),s0)) /\
2315   (holds(empty,s0)) /\
2316   (!State. holds(clear(table),State)) /\
2317   (!State. ~holds(and'(on(a,c),on(c,d)),State)) ==> F`;
2318
2319
2320val PRV001_1 = M "PRV001_1" $
2321Lib.with_flag(Globals.guessing_tyvars,true)
2322 Term
2323`(!X Y Z. q1(X,Y,Z) /\ less_or_equal(X,Y) ==> q2(X,Y,Z)) /\
2324 (!X Y Z. q1(X,Y,Z) ==> less_or_equal(X,Y) \/ q3(X,Y,Z)) /\
2325 (!Z X Y. q2(X,Y,Z) ==> q4(X,Y,Y)) /\
2326 (!Z Y X. q3(X,Y,Z) ==> q4(X,Y,X)) /\
2327 (!X. less_or_equal(X,X)) /\
2328 (!X Y. less_or_equal(X,Y) /\ less_or_equal(Y,X) ==> equal(X,Y)) /\
2329 (!Y X Z. less_or_equal(X,Y) /\ less_or_equal(Y,Z) ==> less_or_equal(X,Z)) /\
2330 (!Y X. less_or_equal(X,Y) \/ less_or_equal(Y,X)) /\
2331 (!X Y. equal(X,Y) ==> less_or_equal(X,Y)) /\
2332 (!X Y Z. equal(X,Y) /\ less_or_equal(X,Z) ==> less_or_equal(Y,Z)) /\
2333 (!X Z Y. equal(X,Y) /\ less_or_equal(Z,X) ==> less_or_equal(Z,Y)) /\
2334 (q1(a,b,c)) /\
2335 (!W. ~(q4(a,b,W) /\ less_or_equal(a,W) /\ less_or_equal(b,W) /\ less_or_equal(W,a))) /\
2336 (!W. ~(q4(a,b,W) /\ less_or_equal(a,W) /\ less_or_equal(b,W) /\
2337       less_or_equal(W,b)))
2338  ==> F`;
2339
2340
2341val PRV003_1 = M"PRV003_1"
2342 ���(!X:'a. equal(X,X)) /\
2343   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2344   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2345   (!X. equal(predecessor(successor(X)),X)) /\
2346   (!X. equal(successor(predecessor(X)),X)) /\
2347   (!X Y. equal(predecessor(X),predecessor(Y)) ==> equal(X,Y)) /\
2348   (!X Y. equal(successor(X),successor(Y)) ==> equal(X,Y)) /\
2349   (!X. less_than(predecessor(X),X)) /\
2350   (!X. less_than(X,successor(X))) /\
2351   (!X Y Z. less_than(X,Y) /\ less_than(Y,Z) ==> less_than(X,Z)) /\
2352   (!X Y. less_than(X,Y) \/ less_than(Y,X) \/ equal(X,Y)) /\
2353   (!X. ~less_than(X,X)) /\
2354   (!Y X. ~(less_than(X,Y) /\ less_than(Y,X))) /\
2355   (!Y X Z. equal(X,Y) /\ less_than(X,Z) ==> less_than(Y,Z)) /\
2356   (!Y Z X. equal(X,Y) /\ less_than(Z,X) ==> less_than(Z,Y)) /\
2357   (!X Y. equal(X,Y) ==> equal(predecessor(X),predecessor(Y))) /\
2358   (!X Y. equal(X,Y) ==> equal(successor(X),successor(Y))) /\
2359   (!X Y. equal(X,Y) ==> equal(a(X),a(Y))) /\
2360   (~less_than(n,j)) /\
2361   (less_than(k,j)) /\
2362   (~less_than(k,i)) /\
2363   (less_than(i,n)) /\
2364   (less_than(a(j),a(k))) /\
2365   (!X. less_than(X,j) /\ less_than(a(X),a(k)) ==> less_than(X,i)) /\
2366   (!X. less_than(one,i) /\ less_than(a(X),a(predecessor(i))) ==> less_than(X,i) \/ less_than(n,X)) /\
2367   (!X. ~(less_than(one,X) /\ less_than(X,i) /\ less_than(a(X),a(predecessor(X))))) /\
2368   (less_than(j,i)) ==> F���;
2369
2370
2371val PRV005_1 =M "PRV005_1"
2372 ���(!X:'a. equal(X,X)) /\
2373   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2374   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2375   (!X. equal(predecessor(successor(X)),X)) /\
2376   (!X. equal(successor(predecessor(X)),X)) /\
2377   (!X Y. equal(predecessor(X),predecessor(Y)) ==> equal(X,Y)) /\
2378   (!X Y. equal(successor(X),successor(Y)) ==> equal(X,Y)) /\
2379   (!X. less_than(predecessor(X),X)) /\
2380   (!X. less_than(X,successor(X))) /\
2381   (!X Y Z. less_than(X,Y) /\ less_than(Y,Z) ==> less_than(X,Z)) /\
2382   (!X Y. less_than(X,Y) \/ less_than(Y,X) \/ equal(X,Y)) /\
2383   (!X. ~less_than(X,X)) /\
2384   (!Y X. ~(less_than(X,Y) /\ less_than(Y,X))) /\
2385   (!Y X Z. equal(X,Y) /\ less_than(X,Z) ==> less_than(Y,Z)) /\
2386   (!Y Z X. equal(X,Y) /\ less_than(Z,X) ==> less_than(Z,Y)) /\
2387   (!X Y. equal(X,Y) ==> equal(predecessor(X),predecessor(Y))) /\
2388   (!X Y. equal(X,Y) ==> equal(successor(X),successor(Y))) /\
2389   (!X Y. equal(X,Y) ==> equal(a(X),a(Y))) /\
2390   (~less_than(n,k)) /\
2391   (~less_than(k,l)) /\
2392   (~less_than(k,i)) /\
2393   (less_than(l,n)) /\
2394   (less_than(one,l)) /\
2395   (less_than(a(k),a(predecessor(l)))) /\
2396   (!X. less_than(X,successor(n)) /\ less_than(a(X),a(k)) ==> less_than(X,l)) /\
2397   (!X. less_than(one,l) /\ less_than(a(X),a(predecessor(l))) ==> less_than(X,l) \/ less_than(n,X)) /\
2398   (!X. ~(less_than(one,X) /\ less_than(X,l) /\ less_than(a(X),a(predecessor(X))))) ==> F���;
2399
2400
2401val PRV006_1 = M "PRV006_1"
2402 ���(!X:'a. equal(X,X)) /\
2403   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2404   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2405   (!X. equal(predecessor(successor(X)),X)) /\
2406   (!X. equal(successor(predecessor(X)),X)) /\
2407   (!X Y. equal(predecessor(X),predecessor(Y)) ==> equal(X,Y)) /\
2408   (!X Y. equal(successor(X),successor(Y)) ==> equal(X,Y)) /\
2409   (!X. less_than(predecessor(X),X)) /\
2410   (!X. less_than(X,successor(X))) /\
2411   (!X Y Z. less_than(X,Y) /\ less_than(Y,Z) ==> less_than(X,Z)) /\
2412   (!X Y. less_than(X,Y) \/ less_than(Y,X) \/ equal(X,Y)) /\
2413   (!X. ~less_than(X,X)) /\
2414   (!Y X. ~(less_than(X,Y) /\ less_than(Y,X))) /\
2415   (!Y X Z. equal(X,Y) /\ less_than(X,Z) ==> less_than(Y,Z)) /\
2416   (!Y Z X. equal(X,Y) /\ less_than(Z,X) ==> less_than(Z,Y)) /\
2417   (!X Y. equal(X,Y) ==> equal(predecessor(X),predecessor(Y))) /\
2418   (!X Y. equal(X,Y) ==> equal(successor(X),successor(Y))) /\
2419   (!X Y. equal(X,Y) ==> equal(a(X),a(Y))) /\
2420   (~less_than(n,m)) /\
2421   (less_than(i,m)) /\
2422   (less_than(i,n)) /\
2423   (~less_than(i,one)) /\
2424   (less_than(a(i),a(m))) /\
2425   (!X. less_than(X,successor(n)) /\ less_than(a(X),a(m)) ==> less_than(X,i)) /\
2426   (!X. less_than(one,i) /\ less_than(a(X),a(predecessor(i))) ==> less_than(X,i) \/ less_than(n,X)) /\
2427   (!X. ~(less_than(one,X) /\ less_than(X,i) /\ less_than(a(X),a(predecessor(X))))) ==> F���;
2428
2429
2430val PRV009_1 = M"PRV009_1" $
2431Lib.with_flag(Globals.guessing_tyvars,true)
2432 Term
2433`(!Y X. less_or_equal(X,Y) \/ less(Y,X)) /\
2434   (less(j,i)) /\
2435   (less_or_equal(m,p)) /\
2436   (less_or_equal(p,q)) /\
2437   (less_or_equal(q,n)) /\
2438   (!X Y. less_or_equal(m,X) /\ less(X,i) /\ less(j,Y) /\ less_or_equal(Y,n) ==> less_or_equal(a(X),a(Y))) /\
2439   (!X Y. less_or_equal(m,X) /\ less_or_equal(X,Y) /\ less_or_equal(Y,j) ==> less_or_equal(a(X),a(Y))) /\
2440   (!X Y. less_or_equal(i,X) /\ less_or_equal(X,Y) /\ less_or_equal(Y,n) ==> less_or_equal(a(X),a(Y))) /\
2441   (~less_or_equal(a(p),a(q))) ==> F`;
2442
2443
2444val PUZ012_1 = M"PUZ012_1" $
2445Lib.with_flag(Globals.guessing_tyvars,true)
2446 Term
2447`(!X. equal_fruits(X,X)) /\
2448   (!X. equal_boxes(X,X)) /\
2449   (!X Y. ~(label(X,Y) /\ contains(X,Y))) /\
2450   (!X. contains(boxa,X) \/ contains(boxb,X) \/ contains(boxc,X)) /\
2451   (!X. contains(X,apples) \/ contains(X,bananas) \/ contains(X,oranges)) /\
2452   (!X Y Z. contains(X,Y) /\ contains(X,Z) ==> equal_fruits(Y,Z)) /\
2453   (!Y X Z. contains(X,Y) /\ contains(Z,Y) ==> equal_boxes(X,Z)) /\
2454   (~equal_boxes(boxa,boxb)) /\
2455   (~equal_boxes(boxb,boxc)) /\
2456   (~equal_boxes(boxa,boxc)) /\
2457   (~equal_fruits(apples,bananas)) /\
2458   (~equal_fruits(bananas,oranges)) /\
2459   (~equal_fruits(apples,oranges)) /\
2460   (label(boxa,apples)) /\
2461   (label(boxb,oranges)) /\
2462   (label(boxc,bananas)) /\
2463   (contains(boxb,apples)) /\
2464   (~(contains(boxa,bananas) /\ contains(boxc,oranges))) ==> F`;
2465
2466
2467val PUZ020_1 = M "PUZ020_1" $
2468Term`(!X:'a. equal(X,X)) /\
2469   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2470   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2471   (!A B. equal(A,B) ==> equal(statement_by(A),statement_by(B))) /\
2472   (!X. person(X) ==> knight(X) \/ knave(X)) /\
2473   (!X. ~(person(X) /\ knight(X) /\ knave(X))) /\
2474   (!X Y. says(X,Y) /\ a_truth(Y) ==> a_truth(Y)) /\
2475   (!X Y. ~(says(X,Y) /\ equal(X,Y))) /\
2476   (!Y X. says(X,Y) ==> equal(Y,statement_by(X))) /\
2477   (!X Y. ~(person(X) /\ equal(X,statement_by(Y)))) /\
2478   (!X. person(X) /\ a_truth(statement_by(X)) ==> knight(X)) /\
2479   (!X. person(X) ==> a_truth(statement_by(X)) \/ knave(X)) /\
2480   (!X Y. equal(X,Y) /\ knight(X) ==> knight(Y)) /\
2481   (!X Y. equal(X,Y) /\ knave(X) ==> knave(Y)) /\
2482   (!X Y. equal(X,Y) /\ person(X) ==> person(Y)) /\
2483   (!X Y Z. equal(X,Y) /\ says(X,Z) ==> says(Y,Z)) /\
2484   (!X Z Y. equal(X,Y) /\ says(Z,X) ==> says(Z,Y)) /\
2485   (!X Y. equal(X,Y) /\ a_truth(X) ==> a_truth(Y)) /\
2486   (!X Y. knight(X) /\ says(X,Y) ==> a_truth(Y)) /\
2487   (!X Y. ~(knave(X) /\ says(X,Y) /\ a_truth(Y))) /\
2488   (person(husband)) /\
2489   (person(wife)) /\
2490   (~equal(husband,wife)) /\
2491   (says(husband,statement_by(husband))) /\
2492   (a_truth(statement_by(husband)) /\ knight(husband) ==> knight(wife)) /\
2493   (knight(husband) ==> a_truth(statement_by(husband))) /\
2494   (a_truth(statement_by(husband)) \/ knight(wife)) /\
2495   (knight(wife) ==> a_truth(statement_by(husband))) /\
2496   (~knight(husband)) ==> F`;
2497
2498
2499val PUZ025_1 = M "PUZ025_1" $
2500Lib.with_flag(Globals.guessing_tyvars,true)
2501 Term
2502`(!X. a_truth(truthteller(X)) \/ a_truth(liar(X))) /\
2503   (!X. ~(a_truth(truthteller(X)) /\ a_truth(liar(X)))) /\
2504   (!Truthteller Statement. a_truth(truthteller(Truthteller)) /\ a_truth(says(Truthteller,Statement)) ==> a_truth(Statement)) /\
2505   (!Liar Statement. ~(a_truth(liar(Liar)) /\ a_truth(says(Liar,Statement)) /\ a_truth(Statement))) /\
2506   (!Statement Truthteller. a_truth(Statement) /\ a_truth(says(Truthteller,Statement)) ==> a_truth(truthteller(Truthteller))) /\
2507   (!Statement Liar. a_truth(says(Liar,Statement)) ==> a_truth(Statement) \/ a_truth(liar(Liar))) /\
2508   (!Z X Y. people(X,Y,Z) /\ a_truth(liar(X)) /\ a_truth(liar(Y)) ==> a_truth(equal_type(X,Y))) /\
2509   (!Z X Y. people(X,Y,Z) /\ a_truth(truthteller(X)) /\ a_truth(truthteller(Y)) ==> a_truth(equal_type(X,Y))) /\
2510   (!X Y. a_truth(equal_type(X,Y)) /\ a_truth(truthteller(X)) ==> a_truth(truthteller(Y))) /\
2511   (!X Y. a_truth(equal_type(X,Y)) /\ a_truth(liar(X)) ==> a_truth(liar(Y))) /\
2512   (!X Y. a_truth(truthteller(X)) ==> a_truth(equal_type(X,Y)) \/ a_truth(liar(Y))) /\
2513   (!X Y. a_truth(liar(X)) ==> a_truth(equal_type(X,Y)) \/ a_truth(truthteller(Y))) /\
2514   (!Y X. a_truth(equal_type(X,Y)) ==> a_truth(equal_type(Y,X))) /\
2515   (!X Y. ask_1_if_2(X,Y) /\ a_truth(truthteller(X)) /\ a_truth(Y) ==> answer(yes)) /\
2516   (!X Y. ask_1_if_2(X,Y) /\ a_truth(truthteller(X)) ==> a_truth(Y) \/ answer(no)) /\
2517   (!X Y. ask_1_if_2(X,Y) /\ a_truth(liar(X)) /\ a_truth(Y) ==> answer(no)) /\
2518   (!X Y. ask_1_if_2(X,Y) /\ a_truth(liar(X)) ==> a_truth(Y) \/ answer(yes)) /\
2519   (people(b,c,a)) /\
2520   (people(a,b,a)) /\
2521   (people(a,c,b)) /\
2522   (people(c,b,a)) /\
2523   (a_truth(says(a,equal_type(b,c)))) /\
2524   (ask_1_if_2(c,equal_type(a,b))) /\
2525   (!Answer. ~answer(Answer)) ==> F`;
2526
2527
2528val PUZ029_1 = M "PUZ029_1"
2529 ���(!X:'a. dances_on_tightropes(X) \/ eats_pennybuns(X) \/ old(X)) /\
2530   (!X. pig(X) /\ liable_to_giddiness(X) ==> treated_with_respect(X)) /\
2531   (!X. wise(X) /\ balloonist(X) ==> has_umbrella(X)) /\
2532   (!X. ~(looks_ridiculous(X) /\ eats_pennybuns(X) /\ eats_lunch_in_public(X))) /\
2533   (!X. balloonist(X) /\ young(X) ==> liable_to_giddiness(X)) /\
2534   (!X. fat(X) /\ looks_ridiculous(X) ==> dances_on_tightropes(X) \/ eats_lunch_in_public(X)) /\
2535   (!X. ~(liable_to_giddiness(X) /\ wise(X) /\ dances_on_tightropes(X))) /\
2536   (!X. pig(X) /\ has_umbrella(X) ==> looks_ridiculous(X)) /\
2537   (!X. treated_with_respect(X) ==> dances_on_tightropes(X) \/ fat(X)) /\
2538   (!X. young(X) \/ old(X)) /\
2539   (!X. ~(young(X) /\ old(X))) /\
2540   (wise(piggy)) /\
2541   (young(piggy)) /\
2542   (pig(piggy)) /\
2543   (balloonist(piggy)) ==> F���;
2544
2545
2546val RNG001_3 = M "RNG001_3" $
2547Lib.with_flag(Globals.guessing_tyvars,true)
2548 Term
2549`(!X. sum(additive_identity,X,X)) /\
2550   (!X. sum(additive_inverse(X),X,additive_identity)) /\
2551   (!Y U Z X V W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(U,Z,W) ==> sum(X,V,W)) /\
2552   (!Y X V U Z W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(X,V,W) ==> sum(U,Z,W)) /\
2553   (!X Y. product(X,Y,multiply(X,Y))) /\
2554   (!Y Z X V3 V1 V2 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ product(X,V3,V4) ==> sum(V1,V2,V4)) /\
2555   (!Y Z V1 V2 X V3 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(X,V3,V4)) /\
2556   (~product(a,additive_identity,additive_identity)) ==> F`;
2557
2558
2559val RNG001_5 = M "RNG001_5" $
2560 ���(!X:'a. equal(X,X)) /\
2561   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2562   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2563   (!X. sum(additive_identity,X,X)) /\
2564   (!X. sum(X,additive_identity,X)) /\
2565   (!X Y. product(X,Y,multiply(X,Y))) /\
2566   (!X Y. sum(X,Y,add(X,Y))) /\
2567   (!X. sum(additive_inverse(X),X,additive_identity)) /\
2568   (!X. sum(X,additive_inverse(X),additive_identity)) /\
2569   (!Y U Z X V W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(U,Z,W) ==> sum(X,V,W)) /\
2570   (!Y X V U Z W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(X,V,W) ==> sum(U,Z,W)) /\
2571   (!Y X Z. sum(X,Y,Z) ==> sum(Y,X,Z)) /\
2572   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
2573   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
2574   (!Y Z X V3 V1 V2 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ product(X,V3,V4) ==> sum(V1,V2,V4)) /\
2575   (!Y Z V1 V2 X V3 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(X,V3,V4)) /\
2576   (!Y Z V3 X V1 V2 V4. product(Y,X,V1) /\ product(Z,X,V2) /\ sum(Y,Z,V3) /\ product(V3,X,V4) ==> sum(V1,V2,V4)) /\
2577   (!Y Z V1 V2 V3 X V4. product(Y,X,V1) /\ product(Z,X,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(V3,X,V4)) /\
2578   (!X Y U V. sum(X,Y,U) /\ sum(X,Y,V) ==> equal(U,V)) /\
2579   (!X Y U V. product(X,Y,U) /\ product(X,Y,V) ==> equal(U,V)) /\
2580   (!X Y. equal(X,Y) ==> equal(additive_inverse(X),additive_inverse(Y))) /\
2581   (!X Y W. equal(X,Y) ==> equal(add(X,W),add(Y,W))) /\
2582   (!X Y W Z. equal(X,Y) /\ sum(X,W,Z) ==> sum(Y,W,Z)) /\
2583   (!X W Y Z. equal(X,Y) /\ sum(W,X,Z) ==> sum(W,Y,Z)) /\
2584   (!X W Z Y. equal(X,Y) /\ sum(W,Z,X) ==> sum(W,Z,Y)) /\
2585   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
2586   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
2587   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
2588   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
2589   (~product(a,additive_identity,additive_identity)) ==> F���;
2590
2591
2592val RNG011_5 = M "RNG011_5" $
2593 ���(!X:'a. equal(X,X)) /\
2594   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2595   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2596   (!A B C. equal(A,B) ==> equal(add(A,C),add(B,C))) /\
2597   (!D F' E. equal(D,E) ==> equal(add(F',D),add(F',E))) /\
2598   (!G H. equal(G,H) ==> equal(additive_inverse(G),additive_inverse(H))) /\
2599   (!I' J K'. equal(I',J) ==> equal(multiply(I',K'),multiply(J,K'))) /\
2600   (!L N M. equal(L,M) ==> equal(multiply(N,L),multiply(N,M))) /\
2601   (!A B C D. equal(A,B) ==> equal(associator(A,C,D),associator(B,C,D))) /\
2602   (!E G F' H. equal(E,F') ==> equal(associator(G,E,H),associator(G,F',H))) /\
2603   (!I' K' L J. equal(I',J) ==> equal(associator(K',L,I'),associator(K',L,J))) /\
2604   (!M N O. equal(M,N) ==> equal(commutator(M,O),commutator(N,O))) /\
2605   (!P R Q. equal(P,Q) ==> equal(commutator(R,P),commutator(R,Q))) /\
2606   (!Y X. equal(add(X,Y),add(Y,X))) /\
2607   (!X Y Z. equal(add(add(X,Y),Z),add(X,add(Y,Z)))) /\
2608   (!X. equal(add(X,additive_identity),X)) /\
2609   (!X. equal(add(additive_identity,X),X)) /\
2610   (!X. equal(add(X,additive_inverse(X)),additive_identity)) /\
2611   (!X. equal(add(additive_inverse(X),X),additive_identity)) /\
2612   (equal(additive_inverse(additive_identity),additive_identity)) /\
2613   (!X Y. equal(add(X,add(additive_inverse(X),Y)),Y)) /\
2614   (!X Y. equal(additive_inverse(add(X,Y)),add(additive_inverse(X),additive_inverse(Y)))) /\
2615   (!X. equal(additive_inverse(additive_inverse(X)),X)) /\
2616   (!X. equal(multiply(X,additive_identity),additive_identity)) /\
2617   (!X. equal(multiply(additive_identity,X),additive_identity)) /\
2618   (!X Y. equal(multiply(additive_inverse(X),additive_inverse(Y)),multiply(X,Y))) /\
2619   (!X Y. equal(multiply(X,additive_inverse(Y)),additive_inverse(multiply(X,Y)))) /\
2620   (!X Y. equal(multiply(additive_inverse(X),Y),additive_inverse(multiply(X,Y)))) /\
2621   (!Y X Z. equal(multiply(X,add(Y,Z)),add(multiply(X,Y),multiply(X,Z)))) /\
2622   (!X Y Z. equal(multiply(add(X,Y),Z),add(multiply(X,Z),multiply(Y,Z)))) /\
2623   (!X Y. equal(multiply(multiply(X,Y),Y),multiply(X,multiply(Y,Y)))) /\
2624   (!X Y Z. equal(associator(X,Y,Z),add(multiply(multiply(X,Y),Z),additive_inverse(multiply(X,multiply(Y,Z)))))) /\
2625   (!X Y. equal(commutator(X,Y),add(multiply(Y,X),additive_inverse(multiply(X,Y))))) /\
2626   (!X Y. equal(multiply(multiply(associator(X,X,Y),X),associator(X,X,Y)),additive_identity)) /\
2627   (~equal(multiply(multiply(associator(a,a,b),a),associator(a,a,b)),additive_identity)) ==> F���;
2628
2629
2630val RNG023_6 = M "RNG023_6" $
2631 ���(!X:'a. equal(X,X)) /\
2632   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2633   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2634   (!Y X. equal(add(X,Y),add(Y,X))) /\
2635   (!X Y Z. equal(add(X,add(Y,Z)),add(add(X,Y),Z))) /\
2636   (!X. equal(add(additive_identity,X),X)) /\
2637   (!X. equal(add(X,additive_identity),X)) /\
2638   (!X. equal(multiply(additive_identity,X),additive_identity)) /\
2639   (!X. equal(multiply(X,additive_identity),additive_identity)) /\
2640   (!X. equal(add(additive_inverse(X),X),additive_identity)) /\
2641   (!X. equal(add(X,additive_inverse(X)),additive_identity)) /\
2642   (!Y X Z. equal(multiply(X,add(Y,Z)),add(multiply(X,Y),multiply(X,Z)))) /\
2643   (!X Y Z. equal(multiply(add(X,Y),Z),add(multiply(X,Z),multiply(Y,Z)))) /\
2644   (!X. equal(additive_inverse(additive_inverse(X)),X)) /\
2645   (!X Y. equal(multiply(multiply(X,Y),Y),multiply(X,multiply(Y,Y)))) /\
2646   (!X Y. equal(multiply(multiply(X,X),Y),multiply(X,multiply(X,Y)))) /\
2647   (!X Y Z. equal(associator(X,Y,Z),add(multiply(multiply(X,Y),Z),additive_inverse(multiply(X,multiply(Y,Z)))))) /\
2648   (!X Y. equal(commutator(X,Y),add(multiply(Y,X),additive_inverse(multiply(X,Y))))) /\
2649   (!D E F'. equal(D,E) ==> equal(add(D,F'),add(E,F'))) /\
2650   (!G I' H. equal(G,H) ==> equal(add(I',G),add(I',H))) /\
2651   (!J K'. equal(J,K') ==> equal(additive_inverse(J),additive_inverse(K'))) /\
2652   (!L M N O. equal(L,M) ==> equal(associator(L,N,O),associator(M,N,O))) /\
2653   (!P R Q S'. equal(P,Q) ==> equal(associator(R,P,S'),associator(R,Q,S'))) /\
2654   (!T' V W U. equal(T',U) ==> equal(associator(V,W,T'),associator(V,W,U))) /\
2655   (!X Y Z. equal(X,Y) ==> equal(commutator(X,Z),commutator(Y,Z))) /\
2656   (!A1 C1 B1. equal(A1,B1) ==> equal(commutator(C1,A1),commutator(C1,B1))) /\
2657   (!D1 E1 F1. equal(D1,E1) ==> equal(multiply(D1,F1),multiply(E1,F1))) /\
2658   (!G1 I1 H1. equal(G1,H1) ==> equal(multiply(I1,G1),multiply(I1,H1))) /\
2659   (~equal(associator(x,x,y),additive_identity)) ==> F���;
2660
2661
2662val RNG028_2 = M "RNG028_2" $
2663 ���(!X:'a. equal(X,X)) /\
2664   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2665   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2666   (!X. equal(add(additive_identity,X),X)) /\
2667   (!X. equal(multiply(additive_identity,X),additive_identity)) /\
2668   (!X. equal(multiply(X,additive_identity),additive_identity)) /\
2669   (!X. equal(add(additive_inverse(X),X),additive_identity)) /\
2670   (!X Y. equal(additive_inverse(add(X,Y)),add(additive_inverse(X),additive_inverse(Y)))) /\
2671   (!X. equal(additive_inverse(additive_inverse(X)),X)) /\
2672   (!Y X Z. equal(multiply(X,add(Y,Z)),add(multiply(X,Y),multiply(X,Z)))) /\
2673   (!X Y Z. equal(multiply(add(X,Y),Z),add(multiply(X,Z),multiply(Y,Z)))) /\
2674   (!X Y. equal(multiply(multiply(X,Y),Y),multiply(X,multiply(Y,Y)))) /\
2675   (!X Y. equal(multiply(multiply(X,X),Y),multiply(X,multiply(X,Y)))) /\
2676   (!X Y. equal(multiply(additive_inverse(X),Y),additive_inverse(multiply(X,Y)))) /\
2677   (!X Y. equal(multiply(X,additive_inverse(Y)),additive_inverse(multiply(X,Y)))) /\
2678   (equal(additive_inverse(additive_identity),additive_identity)) /\
2679   (!Y X. equal(add(X,Y),add(Y,X))) /\
2680   (!X Y Z. equal(add(X,add(Y,Z)),add(add(X,Y),Z))) /\
2681   (!Z X Y. equal(add(X,Z),add(Y,Z)) ==> equal(X,Y)) /\
2682   (!Z X Y. equal(add(Z,X),add(Z,Y)) ==> equal(X,Y)) /\
2683   (!D E F'. equal(D,E) ==> equal(add(D,F'),add(E,F'))) /\
2684   (!G I' H. equal(G,H) ==> equal(add(I',G),add(I',H))) /\
2685   (!J K'. equal(J,K') ==> equal(additive_inverse(J),additive_inverse(K'))) /\
2686   (!D1 E1 F1. equal(D1,E1) ==> equal(multiply(D1,F1),multiply(E1,F1))) /\
2687   (!G1 I1 H1. equal(G1,H1) ==> equal(multiply(I1,G1),multiply(I1,H1))) /\
2688   (!X Y Z. equal(associator(X,Y,Z),add(multiply(multiply(X,Y),Z),additive_inverse(multiply(X,multiply(Y,Z)))))) /\
2689   (!L M N O. equal(L,M) ==> equal(associator(L,N,O),associator(M,N,O))) /\
2690   (!P R Q S'. equal(P,Q) ==> equal(associator(R,P,S'),associator(R,Q,S'))) /\
2691   (!T' V W U. equal(T',U) ==> equal(associator(V,W,T'),associator(V,W,U))) /\
2692   (!X Y. ~equal(multiply(multiply(Y,X),Y),multiply(Y,multiply(X,Y)))) /\
2693   (!X Y Z. ~equal(associator(Y,X,Z),additive_inverse(associator(X,Y,Z)))) /\
2694   (!X Y Z. ~equal(associator(Z,Y,X),additive_inverse(associator(X,Y,Z)))) /\
2695   (~equal(multiply(multiply(cx,multiply(cy,cx)),cz),multiply(cx,multiply(cy,multiply(cx,cz))))) ==> F���;
2696
2697
2698val RNG038_2 = M "RNG038_2" $
2699 Term
2700`(!X:'a. sum(X,additive_identity,X)) /\
2701   (!X Y. product(X,Y,multiply(X,Y))) /\
2702   (!X Y. sum(X,Y,add(X,Y))) /\
2703   (!X. sum(X,additive_inverse(X),additive_identity)) /\
2704   (!Y U Z X V W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(U,Z,W) ==> sum(X,V,W)) /\
2705   (!Y X V U Z W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(X,V,W) ==> sum(U,Z,W)) /\
2706   (!Y X Z. sum(X,Y,Z) ==> sum(Y,X,Z)) /\
2707   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
2708   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
2709   (!Y Z X V3 V1 V2 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ product(X,V3,V4) ==> sum(V1,V2,V4)) /\
2710   (!Y Z V1 V2 X V3 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(X,V3,V4)) /\
2711   (!Y Z V3 X V1 V2 V4. product(Y,X,V1) /\ product(Z,X,V2) /\ sum(Y,Z,V3) /\ product(V3,X,V4) ==> sum(V1,V2,V4)) /\
2712   (!Y Z V1 V2 V3 X V4. product(Y,X,V1) /\ product(Z,X,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(V3,X,V4)) /\
2713   (!X Y U V. sum(X,Y,U) /\ sum(X,Y,V) ==> equal(U,V)) /\
2714   (!X Y U V. product(X,Y,U) /\ product(X,Y,V) ==> equal(U,V)) /\
2715   (!X Y. equal(X,Y) ==> equal(additive_inverse(X),additive_inverse(Y))) /\
2716   (!X Y W. equal(X,Y) ==> equal(add(X,W),add(Y,W))) /\
2717   (!X Y W Z. equal(X,Y) /\ sum(X,W,Z) ==> sum(Y,W,Z)) /\
2718   (!X W Y Z. equal(X,Y) /\ sum(W,X,Z) ==> sum(W,Y,Z)) /\
2719   (!X W Z Y. equal(X,Y) /\ sum(W,Z,X) ==> sum(W,Z,Y)) /\
2720   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
2721   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
2722   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
2723   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
2724   (!X. product(additive_identity,X,additive_identity)) /\
2725   (!X. product(X,additive_identity,additive_identity)) /\
2726   (!X Y. equal(X,additive_identity) ==> product(X,h(X,Y),Y)) /\
2727   (product(a,b,additive_identity)) /\
2728   (~equal(a,additive_identity)) /\
2729   (~equal(b,additive_identity)) ==> F`;
2730
2731
2732val RNG040_2 = M "RNG040_2" $
2733 ���(!X:'a. equal(X,X)) /\
2734   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2735   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2736   (!X Y. equal(X,Y) ==> equal(additive_inverse(X),additive_inverse(Y))) /\
2737   (!X Y W. equal(X,Y) ==> equal(add(X,W),add(Y,W))) /\
2738   (!X W Y. equal(X,Y) ==> equal(add(W,X),add(W,Y))) /\
2739   (!X Y W Z. equal(X,Y) /\ sum(X,W,Z) ==> sum(Y,W,Z)) /\
2740   (!X W Y Z. equal(X,Y) /\ sum(W,X,Z) ==> sum(W,Y,Z)) /\
2741   (!X W Z Y. equal(X,Y) /\ sum(W,Z,X) ==> sum(W,Z,Y)) /\
2742   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
2743   (!X W Y. equal(X,Y) ==> equal(multiply(W,X),multiply(W,Y))) /\
2744   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
2745   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
2746   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
2747   (!X. sum(additive_identity,X,X)) /\
2748   (!X. sum(X,additive_identity,X)) /\
2749   (!X Y. product(X,Y,multiply(X,Y))) /\
2750   (!X Y. sum(X,Y,add(X,Y))) /\
2751   (!X. sum(additive_inverse(X),X,additive_identity)) /\
2752   (!X. sum(X,additive_inverse(X),additive_identity)) /\
2753   (!Y U Z X V W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(U,Z,W) ==> sum(X,V,W)) /\
2754   (!Y X V U Z W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(X,V,W) ==> sum(U,Z,W)) /\
2755   (!Y X Z. sum(X,Y,Z) ==> sum(Y,X,Z)) /\
2756   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
2757   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
2758   (!Y Z X V3 V1 V2 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ product(X,V3,V4) ==> sum(V1,V2,V4)) /\
2759   (!Y Z V1 V2 X V3 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(X,V3,V4)) /\
2760   (!X Y U V. sum(X,Y,U) /\ sum(X,Y,V) ==> equal(U,V)) /\
2761   (!X Y U V. product(X,Y,U) /\ product(X,Y,V) ==> equal(U,V)) /\
2762   (!A. product(A,multiplicative_identity,A)) /\
2763   (!A. product(multiplicative_identity,A,A)) /\
2764   (!A. product(A,h(A),multiplicative_identity) \/ equal(A,additive_identity)) /\
2765   (!A. product(h(A),A,multiplicative_identity) \/ equal(A,additive_identity)) /\
2766   (!B A C. product(A,B,C) ==> product(B,A,C)) /\
2767   (!A B. equal(A,B) ==> equal(h(A),h(B))) /\
2768   (sum(b,c,d)) /\
2769   (product(d,a,additive_identity)) /\
2770   (product(b,a,l)) /\
2771   (product(c,a,n)) /\
2772   (~sum(l,n,additive_identity)) ==> F���;
2773
2774
2775val RNG041_1 = M "RNG041_1" $
2776 ���(!X:'a. equal(X,X)) /\
2777   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2778   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2779   (!X. sum(additive_identity,X,X)) /\
2780   (!X. sum(X,additive_identity,X)) /\
2781   (!X Y. product(X,Y,multiply(X,Y))) /\
2782   (!X Y. sum(X,Y,add(X,Y))) /\
2783   (!X. sum(additive_inverse(X),X,additive_identity)) /\
2784   (!X. sum(X,additive_inverse(X),additive_identity)) /\
2785   (!Y U Z X V W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(U,Z,W) ==> sum(X,V,W)) /\
2786   (!Y X V U Z W. sum(X,Y,U) /\ sum(Y,Z,V) /\ sum(X,V,W) ==> sum(U,Z,W)) /\
2787   (!Y X Z. sum(X,Y,Z) ==> sum(Y,X,Z)) /\
2788   (!Y U Z X V W. product(X,Y,U) /\ product(Y,Z,V) /\ product(U,Z,W) ==> product(X,V,W)) /\
2789   (!Y X V U Z W. product(X,Y,U) /\ product(Y,Z,V) /\ product(X,V,W) ==> product(U,Z,W)) /\
2790   (!Y Z X V3 V1 V2 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ product(X,V3,V4) ==> sum(V1,V2,V4)) /\
2791   (!Y Z V1 V2 X V3 V4. product(X,Y,V1) /\ product(X,Z,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(X,V3,V4)) /\
2792   (!Y Z V3 X V1 V2 V4. product(Y,X,V1) /\ product(Z,X,V2) /\ sum(Y,Z,V3) /\ product(V3,X,V4) ==> sum(V1,V2,V4)) /\
2793   (!Y Z V1 V2 V3 X V4. product(Y,X,V1) /\ product(Z,X,V2) /\ sum(Y,Z,V3) /\ sum(V1,V2,V4) ==> product(V3,X,V4)) /\
2794   (!X Y U V. sum(X,Y,U) /\ sum(X,Y,V) ==> equal(U,V)) /\
2795   (!X Y U V. product(X,Y,U) /\ product(X,Y,V) ==> equal(U,V)) /\
2796   (!X Y. equal(X,Y) ==> equal(additive_inverse(X),additive_inverse(Y))) /\
2797   (!X Y W. equal(X,Y) ==> equal(add(X,W),add(Y,W))) /\
2798   (!X W Y. equal(X,Y) ==> equal(add(W,X),add(W,Y))) /\
2799   (!X Y W Z. equal(X,Y) /\ sum(X,W,Z) ==> sum(Y,W,Z)) /\
2800   (!X W Y Z. equal(X,Y) /\ sum(W,X,Z) ==> sum(W,Y,Z)) /\
2801   (!X W Z Y. equal(X,Y) /\ sum(W,Z,X) ==> sum(W,Z,Y)) /\
2802   (!X Y W. equal(X,Y) ==> equal(multiply(X,W),multiply(Y,W))) /\
2803   (!X W Y. equal(X,Y) ==> equal(multiply(W,X),multiply(W,Y))) /\
2804   (!X Y W Z. equal(X,Y) /\ product(X,W,Z) ==> product(Y,W,Z)) /\
2805   (!X W Y Z. equal(X,Y) /\ product(W,X,Z) ==> product(W,Y,Z)) /\
2806   (!X W Z Y. equal(X,Y) /\ product(W,Z,X) ==> product(W,Z,Y)) /\
2807   (!A B. equal(A,B) ==> equal(h(A),h(B))) /\
2808   (!A. product(additive_identity,A,additive_identity)) /\
2809   (!A. product(A,additive_identity,additive_identity)) /\
2810   (!A. product(A,multiplicative_identity,A)) /\
2811   (!A. product(multiplicative_identity,A,A)) /\
2812   (!A. product(A,h(A),multiplicative_identity) \/ equal(A,additive_identity)) /\
2813   (!A. product(h(A),A,multiplicative_identity) \/ equal(A,additive_identity)) /\
2814   (product(a,b,additive_identity)) /\
2815   (~equal(a,additive_identity)) /\
2816   (~equal(b,additive_identity)) ==> F���;
2817
2818
2819val ROB010_1 = M "ROB010_1" $
2820 ���(!X:'a. equal(X,X)) /\
2821   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2822   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2823   (!Y X. equal(add(X,Y),add(Y,X))) /\
2824   (!X Y Z. equal(add(add(X,Y),Z),add(X,add(Y,Z)))) /\
2825   (!Y X. equal(negate(add(negate(add(X,Y)),negate(add(X,negate(Y))))),X)) /\
2826   (!A B C. equal(A,B) ==> equal(add(A,C),add(B,C))) /\
2827   (!D F' E. equal(D,E) ==> equal(add(F',D),add(F',E))) /\
2828   (!G H. equal(G,H) ==> equal(negate(G),negate(H))) /\
2829   (equal(negate(add(a,negate(b))),c)) /\
2830   (~equal(negate(add(c,negate(add(b,a)))),a)) ==> F���;
2831
2832
2833val ROB013_1 = M "ROB013_1" $
2834 ���(!X:'a. equal(X,X)) /\
2835   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2836   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2837   (!Y X. equal(add(X,Y),add(Y,X))) /\
2838   (!X Y Z. equal(add(add(X,Y),Z),add(X,add(Y,Z)))) /\
2839   (!Y X. equal(negate(add(negate(add(X,Y)),negate(add(X,negate(Y))))),X)) /\
2840   (!A B C. equal(A,B) ==> equal(add(A,C),add(B,C))) /\
2841   (!D F' E. equal(D,E) ==> equal(add(F',D),add(F',E))) /\
2842   (!G H. equal(G,H) ==> equal(negate(G),negate(H))) /\
2843   (equal(negate(add(a,b)),c)) /\
2844   (~equal(negate(add(c,negate(add(negate(b),a)))),a)) ==> F���;
2845
2846
2847val ROB016_1 = M "ROB016_1" $
2848 ���(!X:'a. equal(X,X)) /\
2849   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2850   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2851   (!Y X. equal(add(X,Y),add(Y,X))) /\
2852   (!X Y Z. equal(add(add(X,Y),Z),add(X,add(Y,Z)))) /\
2853   (!Y X. equal(negate(add(negate(add(X,Y)),negate(add(X,negate(Y))))),X)) /\
2854   (!A B C. equal(A,B) ==> equal(add(A,C),add(B,C))) /\
2855   (!D F' E. equal(D,E) ==> equal(add(F',D),add(F',E))) /\
2856   (!G H. equal(G,H) ==> equal(negate(G),negate(H))) /\
2857   (!J K' L. equal(J,K') ==> equal(multiply(J,L),multiply(K',L))) /\
2858   (!M O N. equal(M,N) ==> equal(multiply(O,M),multiply(O,N))) /\
2859   (!P Q. equal(P,Q) ==> equal(successor(P),successor(Q))) /\
2860   (!R S'. equal(R,S') /\ positive_integer(R) ==> positive_integer(S')) /\
2861   (!X. equal(multiply(one:'a,X),X)) /\
2862   (!V X. positive_integer(X) ==> equal(multiply(successor(V),X),add(X,multiply(V,X)))) /\
2863   (positive_integer(one)) /\
2864   (!X. positive_integer(X) ==> positive_integer(successor(X))) /\
2865   (equal(negate(add(d,e)),negate(e))) /\
2866   (positive_integer(k)) /\
2867   (!Vk X Y. equal(negate(add(negate(Y),negate(add(X,negate(Y))))),X) /\ positive_integer(Vk) ==> equal(negate(add(Y,multiply(Vk,add(X,negate(add(X,negate(Y))))))),negate(Y))) /\
2868   (~equal(negate(add(e,multiply(k,add(d,negate(add(d,negate(e))))))),negate(e))) ==> F���;
2869
2870
2871val ROB021_1 = M "ROB021_1" $
2872 ���(!X:'a. equal(X,X)) /\
2873   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2874   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2875   (!Y X. equal(add(X,Y),add(Y,X))) /\
2876   (!X Y Z. equal(add(add(X,Y),Z),add(X,add(Y,Z)))) /\
2877   (!Y X. equal(negate(add(negate(add(X,Y)),negate(add(X,negate(Y))))),X)) /\
2878   (!A B C. equal(A,B) ==> equal(add(A,C),add(B,C))) /\
2879   (!D F' E. equal(D,E) ==> equal(add(F',D),add(F',E))) /\
2880   (!G H. equal(G,H) ==> equal(negate(G),negate(H))) /\
2881   (!X Y. equal(negate(X),negate(Y)) ==> equal(X,Y)) /\
2882   (~equal(add(negate(add(a,negate(b))),negate(add(negate(a),negate(b)))),b)) ==> F���;
2883
2884
2885val SET005_1 = Mfail "SET005_1" $
2886Lib.with_flag(Globals.guessing_tyvars,true)
2887 Term
2888`(!Subset Element Superset. member(Element,Subset) /\ subset(Subset,Superset) ==> member(Element,Superset)) /\
2889   (!Superset Subset. subset(Subset,Superset) \/ member(member_of_1_not_of_2(Subset,Superset),Subset)) /\
2890   (!Subset Superset. member(member_of_1_not_of_2(Subset,Superset),Superset) ==> subset(Subset,Superset)) /\
2891   (!Subset Superset. equal_sets(Subset,Superset) ==> subset(Subset,Superset)) /\
2892   (!Subset Superset. equal_sets(Superset,Subset) ==> subset(Subset,Superset)) /\
2893   (!Set2 Set1. subset(Set1,Set2) /\ subset(Set2,Set1) ==> equal_sets(Set2,Set1)) /\
2894   (!Set2 Intersection Element Set1. intersection(Set1,Set2,Intersection) /\ member(Element,Intersection) ==> member(Element,Set1)) /\
2895   (!Set1 Intersection Element Set2. intersection(Set1,Set2,Intersection) /\ member(Element,Intersection) ==> member(Element,Set2)) /\
2896   (!Set2 Set1 Element Intersection. intersection(Set1,Set2,Intersection) /\ member(Element,Set2) /\ member(Element,Set1) ==> member(Element,Intersection)) /\
2897   (!Set2 Intersection Set1. member(h(Set1,Set2,Intersection),Intersection) \/ intersection(Set1,Set2,Intersection) \/ member(h(Set1,Set2,Intersection),Set1)) /\
2898   (!Set1 Intersection Set2. member(h(Set1,Set2,Intersection),Intersection) \/ intersection(Set1,Set2,Intersection) \/ member(h(Set1,Set2,Intersection),Set2)) /\
2899   (!Set1 Set2 Intersection. member(h(Set1,Set2,Intersection),Intersection) /\ member(h(Set1,Set2,Intersection),Set2) /\ member(h(Set1,Set2,Intersection),Set1) ==> intersection(Set1,Set2,Intersection)) /\
2900   (intersection(a,b,aIb)) /\
2901   (intersection(b,c,bIc)) /\
2902   (intersection(a,bIc,aIbIc)) /\
2903   (~intersection(aIb,c,aIbIc)) ==> F`;
2904
2905
2906val SET009_1 = M "SET009_1" $
2907Lib.with_flag(Globals.guessing_tyvars,true)
2908 Term
2909`(!Subset Element Superset. member(Element,Subset) /\ subset(Subset,Superset) ==> member(Element,Superset)) /\
2910   (!Superset Subset. subset(Subset,Superset) \/ member(member_of_1_not_of_2(Subset,Superset),Subset)) /\
2911   (!Subset Superset. member(member_of_1_not_of_2(Subset,Superset),Superset) ==> subset(Subset,Superset)) /\
2912   (!Subset Superset. equal_sets(Subset,Superset) ==> subset(Subset,Superset)) /\
2913   (!Subset Superset. equal_sets(Superset,Subset) ==> subset(Subset,Superset)) /\
2914   (!Set2 Set1. subset(Set1,Set2) /\ subset(Set2,Set1) ==> equal_sets(Set2,Set1)) /\
2915   (!Set2 Difference Element Set1. difference(Set1,Set2,Difference) /\ member(Element,Difference) ==> member(Element,Set1)) /\
2916   (!Element A_set Set1 Set2. ~(member(Element,Set1) /\ member(Element,Set2) /\ difference(A_set,Set1,Set2))) /\
2917   (!Set1 Difference Element Set2. member(Element,Set1) /\ difference(Set1,Set2,Difference) ==> member(Element,Difference) \/ member(Element,Set2)) /\
2918   (!Set1 Set2 Difference. difference(Set1,Set2,Difference) \/ member(k(Set1,Set2,Difference),Set1) \/ member(k(Set1,Set2,Difference),Difference)) /\
2919   (!Set1 Set2 Difference. member(k(Set1,Set2,Difference),Set2) ==> member(k(Set1,Set2,Difference),Difference) \/ difference(Set1,Set2,Difference)) /\
2920   (!Set1 Set2 Difference. member(k(Set1,Set2,Difference),Difference) /\ member(k(Set1,Set2,Difference),Set1) ==> member(k(Set1,Set2,Difference),Set2) \/ difference(Set1,Set2,Difference)) /\
2921   (subset(d,a)) /\
2922   (difference(b,a,bDa)) /\
2923   (difference(b,d,bDd)) /\
2924   (~subset(bDa,bDd)) ==> F`;
2925
2926
2927val SET025_4 = M "SET025_4" $
2928 ���(!X:'a. equal(X,X)) /\
2929   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
2930   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
2931   (!Y X. member(X,Y) ==> little_set(X)) /\
2932   (!X Y. little_set(f1(X,Y)) \/ equal(X,Y)) /\
2933   (!X Y. member(f1(X,Y),X) \/ member(f1(X,Y),Y) \/ equal(X,Y)) /\
2934   (!X Y. member(f1(X,Y),X) /\ member(f1(X,Y),Y) ==> equal(X,Y)) /\
2935   (!X U Y. member(U,non_ordered_pair(X,Y)) ==> equal(U,X) \/ equal(U,Y)) /\
2936   (!Y U X. little_set(U) /\ equal(U,X) ==> member(U,non_ordered_pair(X,Y))) /\
2937   (!X U Y. little_set(U) /\ equal(U,Y) ==> member(U,non_ordered_pair(X,Y))) /\
2938   (!X Y. little_set(non_ordered_pair(X,Y))) /\
2939   (!X. equal(singleton_set(X),non_ordered_pair(X,X))) /\
2940   (!X Y. equal(ordered_pair(X,Y),non_ordered_pair(singleton_set(X),non_ordered_pair(X,Y)))) /\
2941   (!X. ordered_pair_predicate(X) ==> little_set(f2(X))) /\
2942   (!X. ordered_pair_predicate(X) ==> little_set(f3(X))) /\
2943   (!X. ordered_pair_predicate(X) ==> equal(X,ordered_pair(f2(X),f3(X)))) /\
2944   (!X Y Z. little_set(Y) /\ little_set(Z) /\ equal(X,ordered_pair(Y,Z)) ==> ordered_pair_predicate(X)) /\
2945   (!Z X. member(Z,first(X)) ==> little_set(f4(Z,X))) /\
2946   (!Z X. member(Z,first(X)) ==> little_set(f5(Z,X))) /\
2947   (!Z X. member(Z,first(X)) ==> equal(X,ordered_pair(f4(Z,X),f5(Z,X)))) /\
2948   (!Z X. member(Z,first(X)) ==> member(Z,f4(Z,X))) /\
2949   (!X V Z U. little_set(U) /\ little_set(V) /\ equal(X,ordered_pair(U,V)) /\ member(Z,U) ==> member(Z,first(X))) /\
2950   (!Z X. member(Z,second(X)) ==> little_set(f6(Z,X))) /\
2951   (!Z X. member(Z,second(X)) ==> little_set(f7(Z,X))) /\
2952   (!Z X. member(Z,second(X)) ==> equal(X,ordered_pair(f6(Z,X),f7(Z,X)))) /\
2953   (!Z X. member(Z,second(X)) ==> member(Z,f7(Z,X))) /\
2954   (!X U Z V. little_set(U) /\ little_set(V) /\ equal(X,ordered_pair(U,V)) /\ member(Z,V) ==> member(Z,second(X))) /\
2955   (!Z. member(Z,estin) ==> ordered_pair_predicate(Z)) /\
2956   (!Z. member(Z,estin) ==> member(first(Z),second(Z))) /\
2957   (!Z. little_set(Z) /\ ordered_pair_predicate(Z) /\ member(first(Z),second(Z)) ==> member(Z,estin)) /\
2958   (!Y Z X. member(Z,intersection(X,Y)) ==> member(Z,X)) /\
2959   (!X Z Y. member(Z,intersection(X,Y)) ==> member(Z,Y)) /\
2960   (!X Z Y. member(Z,X) /\ member(Z,Y) ==> member(Z,intersection(X,Y))) /\
2961   (!Z X. ~(member(Z,complement(X)) /\ member(Z,X))) /\
2962   (!Z X. little_set(Z) ==> member(Z,complement(X)) \/ member(Z,X)) /\
2963   (!X Y. equal(union(X,Y),complement(intersection(complement(X),complement(Y))))) /\
2964   (!Z X. member(Z,domain_of(X)) ==> ordered_pair_predicate(f8(Z,X))) /\
2965   (!Z X. member(Z,domain_of(X)) ==> member(f8(Z,X),X)) /\
2966   (!Z X. member(Z,domain_of(X)) ==> equal(Z,first(f8(Z,X)))) /\
2967   (!X Z Xp. little_set(Z) /\ ordered_pair_predicate(Xp) /\ member(Xp,X) /\ equal(Z,first(Xp)) ==> member(Z,domain_of(X))) /\
2968   (!X Y Z. member(Z,cross_product(X,Y)) ==> ordered_pair_predicate(Z)) /\
2969   (!Y Z X. member(Z,cross_product(X,Y)) ==> member(first(Z),X)) /\
2970   (!X Z Y. member(Z,cross_product(X,Y)) ==> member(second(Z),Y)) /\
2971   (!X Z Y. little_set(Z) /\ ordered_pair_predicate(Z) /\ member(first(Z),X) /\ member(second(Z),Y) ==> member(Z,cross_product(X,Y))) /\
2972   (!X Z. member(Z,converse(X)) ==> ordered_pair_predicate(Z)) /\
2973   (!Z X. member(Z,converse(X)) ==> member(ordered_pair(second(Z),first(Z)),X)) /\
2974   (!Z X. little_set(Z) /\ ordered_pair_predicate(Z) /\ member(ordered_pair(second(Z),first(Z)),X) ==> member(Z,converse(X))) /\
2975   (!Z X. member(Z,rotate_right(X)) ==> little_set(f9(Z,X))) /\
2976   (!Z X. member(Z,rotate_right(X)) ==> little_set(f10(Z,X))) /\
2977   (!Z X. member(Z,rotate_right(X)) ==> little_set(f11(Z,X))) /\
2978   (!Z X. member(Z,rotate_right(X)) ==> equal(Z,ordered_pair(f9(Z,X),ordered_pair(f10(Z,X),f11(Z,X))))) /\
2979   (!Z X. member(Z,rotate_right(X)) ==> member(ordered_pair(f10(Z,X),ordered_pair(f11(Z,X),f9(Z,X))),X)) /\
2980   (!Z V W U X. little_set(Z) /\ little_set(U) /\ little_set(V) /\ little_set(W) /\ equal(Z,ordered_pair(U,ordered_pair(V,W))) /\ member(ordered_pair(V,ordered_pair(W,U)),X) ==> member(Z,rotate_right(X))) /\
2981   (!Z X. member(Z,flip_range_of(X)) ==> little_set(f12(Z,X))) /\
2982   (!Z X. member(Z,flip_range_of(X)) ==> little_set(f13(Z,X))) /\
2983   (!Z X. member(Z,flip_range_of(X)) ==> little_set(f14(Z,X))) /\
2984   (!Z X. member(Z,flip_range_of(X)) ==> equal(Z,ordered_pair(f12(Z,X),ordered_pair(f13(Z,X),f14(Z,X))))) /\
2985   (!Z X. member(Z,flip_range_of(X)) ==> member(ordered_pair(f12(Z,X),ordered_pair(f14(Z,X),f13(Z,X))),X)) /\
2986   (!Z U W V X. little_set(Z) /\ little_set(U) /\ little_set(V) /\ little_set(W) /\ equal(Z,ordered_pair(U,ordered_pair(V,W))) /\ member(ordered_pair(U,ordered_pair(W,V)),X) ==> member(Z,flip_range_of(X))) /\
2987   (!X. equal(successor(X),union(X,singleton_set(X)))) /\
2988   (!Z. ~member(Z,empty_set)) /\
2989   (!Z. little_set(Z) ==> member(Z,universal_set)) /\
2990   (little_set(infinity)) /\
2991   (member(empty_set,infinity)) /\
2992   (!X. member(X,infinity) ==> member(successor(X),infinity)) /\
2993   (!Z X. member(Z,sigma(X)) ==> member(f16(Z,X),X)) /\
2994   (!Z X. member(Z,sigma(X)) ==> member(Z,f16(Z,X))) /\
2995   (!X Z Y. member(Y,X) /\ member(Z,Y) ==> member(Z,sigma(X))) /\
2996   (!U. little_set(U) ==> little_set(sigma(U))) /\
2997   (!X U Y. subset(X,Y) /\ member(U,X) ==> member(U,Y)) /\
2998   (!Y X. subset(X,Y) \/ member(f17(X,Y),X)) /\
2999   (!X Y. member(f17(X,Y),Y) ==> subset(X,Y)) /\
3000   (!X Y. proper_subset(X,Y) ==> subset(X,Y)) /\
3001   (!X Y. ~(proper_subset(X,Y) /\ equal(X,Y))) /\
3002   (!X Y. subset(X,Y) ==> proper_subset(X,Y) \/ equal(X,Y)) /\
3003   (!Z X. member(Z,powerset(X)) ==> subset(Z,X)) /\
3004   (!Z X. little_set(Z) /\ subset(Z,X) ==> member(Z,powerset(X))) /\
3005   (!U. little_set(U) ==> little_set(powerset(U))) /\
3006   (!Z X. relation(Z) /\ member(X,Z) ==> ordered_pair_predicate(X)) /\
3007   (!Z. relation(Z) \/ member(f18(Z),Z)) /\
3008   (!Z. ordered_pair_predicate(f18(Z)) ==> relation(Z)) /\
3009   (!U X V W. single_valued_set(X) /\ little_set(U) /\ little_set(V) /\ little_set(W) /\ member(ordered_pair(U,V),X) /\ member(ordered_pair(U,W),X) ==> equal(V,W)) /\
3010   (!X. single_valued_set(X) \/ little_set(f19(X))) /\
3011   (!X. single_valued_set(X) \/ little_set(f20(X))) /\
3012   (!X. single_valued_set(X) \/ little_set(f21(X))) /\
3013   (!X. single_valued_set(X) \/ member(ordered_pair(f19(X),f20(X)),X)) /\
3014   (!X. single_valued_set(X) \/ member(ordered_pair(f19(X),f21(X)),X)) /\
3015   (!X. equal(f20(X),f21(X)) ==> single_valued_set(X)) /\
3016   (!Xf. function(Xf) ==> relation(Xf)) /\
3017   (!Xf. function(Xf) ==> single_valued_set(Xf)) /\
3018   (!Xf. relation(Xf) /\ single_valued_set(Xf) ==> function(Xf)) /\
3019   (!Z X Xf. member(Z,image(X,Xf)) ==> ordered_pair_predicate(f22(Z,X,Xf))) /\
3020   (!Z X Xf. member(Z,image(X,Xf)) ==> member(f22(Z,X,Xf),Xf)) /\
3021   (!Z Xf X. member(Z,image(X,Xf)) ==> member(first(f22(Z,X,Xf)),X)) /\
3022   (!X Xf Z. member(Z,image(X,Xf)) ==> equal(second(f22(Z,X,Xf)),Z)) /\
3023   (!Xf X Y Z. little_set(Z) /\ ordered_pair_predicate(Y) /\ member(Y,Xf) /\ member(first(Y),X) /\ equal(second(Y),Z) ==> member(Z,image(X,Xf))) /\
3024   (!X Xf. little_set(X) /\ function(Xf) ==> little_set(image(X,Xf))) /\
3025   (!X U Y. ~(disjoint(X,Y) /\ member(U,X) /\ member(U,Y))) /\
3026   (!Y X. disjoint(X,Y) \/ member(f23(X,Y),X)) /\
3027   (!X Y. disjoint(X,Y) \/ member(f23(X,Y),Y)) /\
3028   (!X. equal(X,empty_set) \/ member(f24(X),X)) /\
3029   (!X. equal(X,empty_set) \/ disjoint(f24(X),X)) /\
3030   (function(f25)) /\
3031   (!X. little_set(X) ==> equal(X,empty_set) \/ member(f26(X),X)) /\
3032   (!X. little_set(X) ==> equal(X,empty_set) \/ member(ordered_pair(X,f26(X)),f25)) /\
3033   (!Z X. member(Z,range_of(X)) ==> ordered_pair_predicate(f27(Z,X))) /\
3034   (!Z X. member(Z,range_of(X)) ==> member(f27(Z,X),X)) /\
3035   (!Z X. member(Z,range_of(X)) ==> equal(Z,second(f27(Z,X)))) /\
3036   (!X Z Xp. little_set(Z) /\ ordered_pair_predicate(Xp) /\ member(Xp,X) /\ equal(Z,second(Xp)) ==> member(Z,range_of(X))) /\
3037   (!Z. member(Z,identity_relation) ==> ordered_pair_predicate(Z)) /\
3038   (!Z. member(Z,identity_relation) ==> equal(first(Z),second(Z))) /\
3039   (!Z. little_set(Z) /\ ordered_pair_predicate(Z) /\ equal(first(Z),second(Z)) ==> member(Z,identity_relation)) /\
3040   (!X Y. equal(restrict(X,Y),intersection(X,cross_product(Y,universal_set)))) /\
3041   (!Xf. one_to_one_function(Xf) ==> function(Xf)) /\
3042   (!Xf. one_to_one_function(Xf) ==> function(converse(Xf))) /\
3043   (!Xf. function(Xf) /\ function(converse(Xf)) ==> one_to_one_function(Xf)) /\
3044   (!Z Xf Y. member(Z,apply(Xf,Y)) ==> ordered_pair_predicate(f28(Z,Xf,Y))) /\
3045   (!Z Y Xf. member(Z,apply(Xf,Y)) ==> member(f28(Z,Xf,Y),Xf)) /\
3046   (!Z Xf Y. member(Z,apply(Xf,Y)) ==> equal(first(f28(Z,Xf,Y)),Y)) /\
3047   (!Z Xf Y. member(Z,apply(Xf,Y)) ==> member(Z,second(f28(Z,Xf,Y)))) /\
3048   (!Xf Y Z W. ordered_pair_predicate(W) /\ member(W,Xf) /\ equal(first(W),Y) /\ member(Z,second(W)) ==> member(Z,apply(Xf,Y))) /\
3049   (!Xf X Y. equal(apply_to_two_arguments(Xf,X,Y),apply(Xf,ordered_pair(X,Y)))) /\
3050   (!X Y Xf. maps(Xf,X,Y) ==> function(Xf)) /\
3051   (!Y Xf X. maps(Xf,X,Y) ==> equal(domain_of(Xf),X)) /\
3052   (!X Xf Y. maps(Xf,X,Y) ==> subset(range_of(Xf),Y)) /\
3053   (!X Xf Y. function(Xf) /\ equal(domain_of(Xf),X) /\ subset(range_of(Xf),Y) ==> maps(Xf,X,Y)) /\
3054   (!Xf Xs. closed(Xs,Xf) ==> little_set(Xs)) /\
3055   (!Xs Xf. closed(Xs,Xf) ==> little_set(Xf)) /\
3056   (!Xf Xs. closed(Xs,Xf) ==> maps(Xf,cross_product(Xs,Xs),Xs)) /\
3057   (!Xf Xs. little_set(Xs) /\ little_set(Xf) /\ maps(Xf,cross_product(Xs,Xs),Xs) ==> closed(Xs,Xf)) /\
3058   (!Z Xf Xg. member(Z,composition(Xf,Xg)) ==> little_set(f29(Z,Xf,Xg))) /\
3059   (!Z Xf Xg. member(Z,composition(Xf,Xg)) ==> little_set(f30(Z,Xf,Xg))) /\
3060   (!Z Xf Xg. member(Z,composition(Xf,Xg)) ==> little_set(f31(Z,Xf,Xg))) /\
3061   (!Z Xf Xg. member(Z,composition(Xf,Xg)) ==> equal(Z,ordered_pair(f29(Z,Xf,Xg),f30(Z,Xf,Xg)))) /\
3062   (!Z Xg Xf. member(Z,composition(Xf,Xg)) ==> member(ordered_pair(f29(Z,Xf,Xg),f31(Z,Xf,Xg)),Xf)) /\
3063   (!Z Xf Xg. member(Z,composition(Xf,Xg)) ==> member(ordered_pair(f31(Z,Xf,Xg),f30(Z,Xf,Xg)),Xg)) /\
3064   (!Z X Xf W Y Xg. little_set(Z) /\ little_set(X) /\ little_set(Y) /\ little_set(W) /\ equal(Z,ordered_pair(X,Y)) /\ member(ordered_pair(X,W),Xf) /\ member(ordered_pair(W,Y),Xg) ==> member(Z,composition(Xf,Xg))) /\
3065   (!Xh Xs2 Xf2 Xs1 Xf1. homomorphism(Xh,Xs1,Xf1,Xs2,Xf2) ==> closed(Xs1,Xf1)) /\
3066   (!Xh Xs1 Xf1 Xs2 Xf2. homomorphism(Xh,Xs1,Xf1,Xs2,Xf2) ==> closed(Xs2,Xf2)) /\
3067   (!Xf1 Xf2 Xh Xs1 Xs2. homomorphism(Xh,Xs1,Xf1,Xs2,Xf2) ==> maps(Xh,Xs1,Xs2)) /\
3068   (!Xs2 Xs1 Xf1 Xf2 X Xh Y. homomorphism(Xh,Xs1,Xf1,Xs2,Xf2) /\ member(X,Xs1) /\ member(Y,Xs1) ==> equal(apply(Xh,apply_to_two_arguments(Xf1,X,Y)),apply_to_two_arguments(Xf2,apply(Xh,X),apply(Xh,Y)))) /\
3069   (!Xh Xf1 Xs2 Xf2 Xs1. closed(Xs1,Xf1) /\ closed(Xs2,Xf2) /\ maps(Xh,Xs1,Xs2) ==> homomorphism(Xh,Xs1,Xf1,Xs2,Xf2) \/ member(f32(Xh,Xs1,Xf1,Xs2,Xf2),Xs1)) /\
3070   (!Xh Xf1 Xs2 Xf2 Xs1. closed(Xs1,Xf1) /\ closed(Xs2,Xf2) /\ maps(Xh,Xs1,Xs2) ==> homomorphism(Xh,Xs1,Xf1,Xs2,Xf2) \/ member(f33(Xh,Xs1,Xf1,Xs2,Xf2),Xs1)) /\
3071   (!Xh Xs1 Xf1 Xs2 Xf2. closed(Xs1,Xf1) /\ closed(Xs2,Xf2) /\ maps(Xh,Xs1,Xs2) /\ equal(apply(Xh,apply_to_two_arguments(Xf1,f32(Xh,Xs1,Xf1,Xs2,Xf2),f33(Xh,Xs1,Xf1,Xs2,Xf2))),apply_to_two_arguments(Xf2,apply(Xh,f32(Xh,Xs1,Xf1,Xs2,Xf2)),apply(Xh,f33(Xh,Xs1,Xf1,Xs2,Xf2)))) ==> homomorphism(Xh,Xs1,Xf1,Xs2,Xf2)) /\
3072   (!A B C. equal(A,B) ==> equal(f1(A,C),f1(B,C))) /\
3073   (!D F' E. equal(D,E) ==> equal(f1(F',D),f1(F',E))) /\
3074   (!A2 B2. equal(A2,B2) ==> equal(f2(A2),f2(B2))) /\
3075   (!G4 H4. equal(G4,H4) ==> equal(f3(G4),f3(H4))) /\
3076   (!O7 P7 Q7. equal(O7,P7) ==> equal(f4(O7,Q7),f4(P7,Q7))) /\
3077   (!R7 T7 S7. equal(R7,S7) ==> equal(f4(T7,R7),f4(T7,S7))) /\
3078   (!U7 V7 W7. equal(U7,V7) ==> equal(f5(U7,W7),f5(V7,W7))) /\
3079   (!X7 Z7 Y7. equal(X7,Y7) ==> equal(f5(Z7,X7),f5(Z7,Y7))) /\
3080   (!A8 B8 C8. equal(A8,B8) ==> equal(f6(A8,C8),f6(B8,C8))) /\
3081   (!D8 F8 E8. equal(D8,E8) ==> equal(f6(F8,D8),f6(F8,E8))) /\
3082   (!G8 H8 I8. equal(G8,H8) ==> equal(f7(G8,I8),f7(H8,I8))) /\
3083   (!J8 L8 K8. equal(J8,K8) ==> equal(f7(L8,J8),f7(L8,K8))) /\
3084   (!M8 N8 O8. equal(M8,N8) ==> equal(f8(M8,O8),f8(N8,O8))) /\
3085   (!P8 R8 Q8. equal(P8,Q8) ==> equal(f8(R8,P8),f8(R8,Q8))) /\
3086   (!S8 T8 U8. equal(S8,T8) ==> equal(f9(S8,U8),f9(T8,U8))) /\
3087   (!V8 X8 W8. equal(V8,W8) ==> equal(f9(X8,V8),f9(X8,W8))) /\
3088   (!G H I'. equal(G,H) ==> equal(f10(G,I'),f10(H,I'))) /\
3089   (!J L K'. equal(J,K') ==> equal(f10(L,J),f10(L,K'))) /\
3090   (!M N O. equal(M,N) ==> equal(f11(M,O),f11(N,O))) /\
3091   (!P R Q. equal(P,Q) ==> equal(f11(R,P),f11(R,Q))) /\
3092   (!S' T' U. equal(S',T') ==> equal(f12(S',U),f12(T',U))) /\
3093   (!V X W. equal(V,W) ==> equal(f12(X,V),f12(X,W))) /\
3094   (!Y Z A1. equal(Y,Z) ==> equal(f13(Y,A1),f13(Z,A1))) /\
3095   (!B1 D1 C1. equal(B1,C1) ==> equal(f13(D1,B1),f13(D1,C1))) /\
3096   (!E1 F1 G1. equal(E1,F1) ==> equal(f14(E1,G1),f14(F1,G1))) /\
3097   (!H1 J1 I1. equal(H1,I1) ==> equal(f14(J1,H1),f14(J1,I1))) /\
3098   (!K1 L1 M1. equal(K1,L1) ==> equal(f16(K1,M1),f16(L1,M1))) /\
3099   (!N1 P1 O1. equal(N1,O1) ==> equal(f16(P1,N1),f16(P1,O1))) /\
3100   (!Q1 R1 S1. equal(Q1,R1) ==> equal(f17(Q1,S1),f17(R1,S1))) /\
3101   (!T1 V1 U1. equal(T1,U1) ==> equal(f17(V1,T1),f17(V1,U1))) /\
3102   (!W1 X1. equal(W1,X1) ==> equal(f18(W1),f18(X1))) /\
3103   (!Y1 Z1. equal(Y1,Z1) ==> equal(f19(Y1),f19(Z1))) /\
3104   (!C2 D2. equal(C2,D2) ==> equal(f20(C2),f20(D2))) /\
3105   (!E2 F2. equal(E2,F2) ==> equal(f21(E2),f21(F2))) /\
3106   (!G2 H2 I2 J2. equal(G2,H2) ==> equal(f22(G2,I2,J2),f22(H2,I2,J2))) /\
3107   (!K2 M2 L2 N2. equal(K2,L2) ==> equal(f22(M2,K2,N2),f22(M2,L2,N2))) /\
3108   (!O2 Q2 R2 P2. equal(O2,P2) ==> equal(f22(Q2,R2,O2),f22(Q2,R2,P2))) /\
3109   (!S2 T2 U2. equal(S2,T2) ==> equal(f23(S2,U2),f23(T2,U2))) /\
3110   (!V2 X2 W2. equal(V2,W2) ==> equal(f23(X2,V2),f23(X2,W2))) /\
3111   (!Y2 Z2. equal(Y2,Z2) ==> equal(f24(Y2),f24(Z2))) /\
3112   (!A3 B3. equal(A3,B3) ==> equal(f26(A3),f26(B3))) /\
3113   (!C3 D3 E3. equal(C3,D3) ==> equal(f27(C3,E3),f27(D3,E3))) /\
3114   (!F3 H3 G3. equal(F3,G3) ==> equal(f27(H3,F3),f27(H3,G3))) /\
3115   (!I3 J3 K3 L3. equal(I3,J3) ==> equal(f28(I3,K3,L3),f28(J3,K3,L3))) /\
3116   (!M3 O3 N3 P3. equal(M3,N3) ==> equal(f28(O3,M3,P3),f28(O3,N3,P3))) /\
3117   (!Q3 S3 T3 R3. equal(Q3,R3) ==> equal(f28(S3,T3,Q3),f28(S3,T3,R3))) /\
3118   (!U3 V3 W3 X3. equal(U3,V3) ==> equal(f29(U3,W3,X3),f29(V3,W3,X3))) /\
3119   (!Y3 A4 Z3 B4. equal(Y3,Z3) ==> equal(f29(A4,Y3,B4),f29(A4,Z3,B4))) /\
3120   (!C4 E4 F4 D4. equal(C4,D4) ==> equal(f29(E4,F4,C4),f29(E4,F4,D4))) /\
3121   (!I4 J4 K4 L4. equal(I4,J4) ==> equal(f30(I4,K4,L4),f30(J4,K4,L4))) /\
3122   (!M4 O4 N4 P4. equal(M4,N4) ==> equal(f30(O4,M4,P4),f30(O4,N4,P4))) /\
3123   (!Q4 S4 T4 R4. equal(Q4,R4) ==> equal(f30(S4,T4,Q4),f30(S4,T4,R4))) /\
3124   (!U4 V4 W4 X4. equal(U4,V4) ==> equal(f31(U4,W4,X4),f31(V4,W4,X4))) /\
3125   (!Y4 A5 Z4 B5. equal(Y4,Z4) ==> equal(f31(A5,Y4,B5),f31(A5,Z4,B5))) /\
3126   (!C5 E5 F5 D5. equal(C5,D5) ==> equal(f31(E5,F5,C5),f31(E5,F5,D5))) /\
3127   (!G5 H5 I5 J5 K5 L5. equal(G5,H5) ==> equal(f32(G5,I5,J5,K5,L5),f32(H5,I5,J5,K5,L5))) /\
3128   (!M5 O5 N5 P5 Q5 R5. equal(M5,N5) ==> equal(f32(O5,M5,P5,Q5,R5),f32(O5,N5,P5,Q5,R5))) /\
3129   (!S5 U5 V5 T5 W5 X5. equal(S5,T5) ==> equal(f32(U5,V5,S5,W5,X5),f32(U5,V5,T5,W5,X5))) /\
3130   (!Y5 A6 B6 C6 Z5 D6. equal(Y5,Z5) ==> equal(f32(A6,B6,C6,Y5,D6),f32(A6,B6,C6,Z5,D6))) /\
3131   (!E6 G6 H6 I6 J6 F6. equal(E6,F6) ==> equal(f32(G6,H6,I6,J6,E6),f32(G6,H6,I6,J6,F6))) /\
3132   (!K6 L6 M6 N6 O6 P6. equal(K6,L6) ==> equal(f33(K6,M6,N6,O6,P6),f33(L6,M6,N6,O6,P6))) /\
3133   (!Q6 S6 R6 T6 U6 V6. equal(Q6,R6) ==> equal(f33(S6,Q6,T6,U6,V6),f33(S6,R6,T6,U6,V6))) /\
3134   (!W6 Y6 Z6 X6 A7 B7. equal(W6,X6) ==> equal(f33(Y6,Z6,W6,A7,B7),f33(Y6,Z6,X6,A7,B7))) /\
3135   (!C7 E7 F7 G7 D7 H7. equal(C7,D7) ==> equal(f33(E7,F7,G7,C7,H7),f33(E7,F7,G7,D7,H7))) /\
3136   (!I7 K7 L7 M7 N7 J7. equal(I7,J7) ==> equal(f33(K7,L7,M7,N7,I7),f33(K7,L7,M7,N7,J7))) /\
3137   (!A B C. equal(A,B) ==> equal(apply(A,C),apply(B,C))) /\
3138   (!D F' E. equal(D,E) ==> equal(apply(F',D),apply(F',E))) /\
3139   (!G H I' J. equal(G,H) ==> equal(apply_to_two_arguments(G,I',J),apply_to_two_arguments(H,I',J))) /\
3140   (!K' M L N. equal(K',L) ==> equal(apply_to_two_arguments(M,K',N),apply_to_two_arguments(M,L,N))) /\
3141   (!O Q R P. equal(O,P) ==> equal(apply_to_two_arguments(Q,R,O),apply_to_two_arguments(Q,R,P))) /\
3142   (!S' T'. equal(S',T') ==> equal(complement(S'),complement(T'))) /\
3143   (!U V W. equal(U,V) ==> equal(composition(U,W),composition(V,W))) /\
3144   (!X Z Y. equal(X,Y) ==> equal(composition(Z,X),composition(Z,Y))) /\
3145   (!A1 B1. equal(A1,B1) ==> equal(converse(A1),converse(B1))) /\
3146   (!C1 D1 E1. equal(C1,D1) ==> equal(cross_product(C1,E1),cross_product(D1,E1))) /\
3147   (!F1 H1 G1. equal(F1,G1) ==> equal(cross_product(H1,F1),cross_product(H1,G1))) /\
3148   (!I1 J1. equal(I1,J1) ==> equal(domain_of(I1),domain_of(J1))) /\
3149   (!I10 J10. equal(I10,J10) ==> equal(first(I10),first(J10))) /\
3150   (!Q10 R10. equal(Q10,R10) ==> equal(flip_range_of(Q10),flip_range_of(R10))) /\
3151   (!S10 T10 U10. equal(S10,T10) ==> equal(image(S10,U10),image(T10,U10))) /\
3152   (!V10 X10 W10. equal(V10,W10) ==> equal(image(X10,V10),image(X10,W10))) /\
3153   (!Y10 Z10 A11. equal(Y10,Z10) ==> equal(intersection(Y10,A11),intersection(Z10,A11))) /\
3154   (!B11 D11 C11. equal(B11,C11) ==> equal(intersection(D11,B11),intersection(D11,C11))) /\
3155   (!E11 F11 G11. equal(E11,F11) ==> equal(non_ordered_pair(E11,G11),non_ordered_pair(F11,G11))) /\
3156   (!H11 J11 I11. equal(H11,I11) ==> equal(non_ordered_pair(J11,H11),non_ordered_pair(J11,I11))) /\
3157   (!K11 L11 M11. equal(K11,L11) ==> equal(ordered_pair(K11,M11),ordered_pair(L11,M11))) /\
3158   (!N11 P11 O11. equal(N11,O11) ==> equal(ordered_pair(P11,N11),ordered_pair(P11,O11))) /\
3159   (!Q11 R11. equal(Q11,R11) ==> equal(powerset(Q11),powerset(R11))) /\
3160   (!S11 T11. equal(S11,T11) ==> equal(range_of(S11),range_of(T11))) /\
3161   (!U11 V11 W11. equal(U11,V11) ==> equal(restrict(U11,W11),restrict(V11,W11))) /\
3162   (!X11 Z11 Y11. equal(X11,Y11) ==> equal(restrict(Z11,X11),restrict(Z11,Y11))) /\
3163   (!A12 B12. equal(A12,B12) ==> equal(rotate_right(A12),rotate_right(B12))) /\
3164   (!C12 D12. equal(C12,D12) ==> equal(second(C12),second(D12))) /\
3165   (!K12 L12. equal(K12,L12) ==> equal(sigma(K12),sigma(L12))) /\
3166   (!M12 N12. equal(M12,N12) ==> equal(singleton_set(M12),singleton_set(N12))) /\
3167   (!O12 P12. equal(O12,P12) ==> equal(successor(O12),successor(P12))) /\
3168   (!Q12 R12 S12. equal(Q12,R12) ==> equal(union(Q12,S12),union(R12,S12))) /\
3169   (!T12 V12 U12. equal(T12,U12) ==> equal(union(V12,T12),union(V12,U12))) /\
3170   (!W12 X12 Y12. equal(W12,X12) /\ closed(W12,Y12) ==> closed(X12,Y12)) /\
3171   (!Z12 B13 A13. equal(Z12,A13) /\ closed(B13,Z12) ==> closed(B13,A13)) /\
3172   (!C13 D13 E13. equal(C13,D13) /\ disjoint(C13,E13) ==> disjoint(D13,E13)) /\
3173   (!F13 H13 G13. equal(F13,G13) /\ disjoint(H13,F13) ==> disjoint(H13,G13)) /\
3174   (!I13 J13. equal(I13,J13) /\ function(I13) ==> function(J13)) /\
3175   (!K13 L13 M13 N13 O13 P13. equal(K13,L13) /\ homomorphism(K13,M13,N13,O13,P13) ==> homomorphism(L13,M13,N13,O13,P13)) /\
3176   (!Q13 S13 R13 T13 U13 V13. equal(Q13,R13) /\ homomorphism(S13,Q13,T13,U13,V13) ==> homomorphism(S13,R13,T13,U13,V13)) /\
3177   (!W13 Y13 Z13 X13 A14 B14. equal(W13,X13) /\ homomorphism(Y13,Z13,W13,A14,B14) ==> homomorphism(Y13,Z13,X13,A14,B14)) /\
3178   (!C14 E14 F14 G14 D14 H14. equal(C14,D14) /\ homomorphism(E14,F14,G14,C14,H14) ==> homomorphism(E14,F14,G14,D14,H14)) /\
3179   (!I14 K14 L14 M14 N14 J14. equal(I14,J14) /\ homomorphism(K14,L14,M14,N14,I14) ==> homomorphism(K14,L14,M14,N14,J14)) /\
3180   (!O14 P14. equal(O14,P14) /\ little_set(O14) ==> little_set(P14)) /\
3181   (!Q14 R14 S14 T14. equal(Q14,R14) /\ maps(Q14,S14,T14) ==> maps(R14,S14,T14)) /\
3182   (!U14 W14 V14 X14. equal(U14,V14) /\ maps(W14,U14,X14) ==> maps(W14,V14,X14)) /\
3183   (!Y14 A15 B15 Z14. equal(Y14,Z14) /\ maps(A15,B15,Y14) ==> maps(A15,B15,Z14)) /\
3184   (!C15 D15 E15. equal(C15,D15) /\ member(C15,E15) ==> member(D15,E15)) /\
3185   (!F15 H15 G15. equal(F15,G15) /\ member(H15,F15) ==> member(H15,G15)) /\
3186   (!I15 J15. equal(I15,J15) /\ one_to_one_function(I15) ==> one_to_one_function(J15)) /\
3187   (!K15 L15. equal(K15,L15) /\ ordered_pair_predicate(K15) ==> ordered_pair_predicate(L15)) /\
3188   (!M15 N15 O15. equal(M15,N15) /\ proper_subset(M15,O15) ==> proper_subset(N15,O15)) /\
3189   (!P15 R15 Q15. equal(P15,Q15) /\ proper_subset(R15,P15) ==> proper_subset(R15,Q15)) /\
3190   (!S15 T15. equal(S15,T15) /\ relation(S15) ==> relation(T15)) /\
3191   (!U15 V15. equal(U15,V15) /\ single_valued_set(U15) ==> single_valued_set(V15)) /\
3192   (!W15 X15 Y15. equal(W15,X15) /\ subset(W15,Y15) ==> subset(X15,Y15)) /\
3193   (!Z15 B16 A16. equal(Z15,A16) /\ subset(B16,Z15) ==> subset(B16,A16)) /\
3194   (~little_set(ordered_pair(a,b))) ==> F���;
3195
3196
3197val SET046_5 = M "SET046_5" $
3198 Term
3199`(!Y X. ~(element(X,a) /\ element(X,Y) /\ element(Y,X))) /\
3200   (!X:'a. element(X,f(X)) \/ element(X,a)) /\
3201   (!X. element(f(X),X) \/ element(X,a)) ==> F`;
3202
3203
3204val SET047_5 = M "SET047_5" $
3205Lib.with_flag(Globals.guessing_tyvars,true)
3206 Term
3207`(!X Z Y. set_equal(X,Y) /\ element(Z,X) ==> element(Z,Y)) /\
3208   (!Y Z X. set_equal(X,Y) /\ element(Z,Y) ==> element(Z,X)) /\
3209   (!X Y. element(f(X,Y),X) \/ element(f(X,Y),Y) \/ set_equal(X,Y)) /\
3210   (!X Y. element(f(X,Y),Y) /\ element(f(X,Y),X) ==> set_equal(X,Y)) /\
3211   (set_equal(a,b) \/ set_equal(b,a)) /\
3212   (~(set_equal(b,a) /\ set_equal(a,b))) ==> F`;
3213
3214
3215val SYN034_1 = M "SYN034_1" $
3216 ���(!A:'a. p(A,a) \/ p(A,f(A))) /\
3217   (!A. p(A,a) \/ p(f(A),A)) /\
3218   (!A B. ~(p(A,B) /\ p(B,A) /\ p(B,a))) ==> F���;
3219
3220
3221val SYN071_1 = M "SYN071_1" $
3222 ���(!X:'a. equal(X,X)) /\
3223   (!Y X. equal(X,Y) ==> equal(Y,X)) /\
3224   (!Y X Z. equal(X,Y) /\ equal(Y,Z) ==> equal(X,Z)) /\
3225   (equal(a,b) \/ equal(c,d)) /\
3226   (equal(a,c) \/ equal(b,d)) /\
3227   (~equal(a,d)) /\
3228   (~equal(b,c)) ==> F���;
3229
3230
3231val SYN349_1 = Mfail "SYN349_1" $
3232 ���(!X Y. f(w(X),g(X,Y)) ==> f(X,g(X,Y))) /\
3233   (!X Y:'a. f(X,g(X,Y)) ==> f(w(X),g(X,Y))) /\
3234   (!Y X. f(X,g(X,Y)) /\ f(Y,g(X,Y)) ==> f(g(X,Y),Y) \/ f(g(X,Y),w(X))) /\
3235   (!Y X. f(g(X,Y),Y) /\ f(Y,g(X,Y)) ==> f(X,g(X,Y)) \/ f(g(X,Y),w(X))) /\
3236   (!Y X. f(X,g(X,Y)) \/ f(g(X,Y),Y) \/ f(Y,g(X,Y)) \/ f(g(X,Y),w(X))) /\
3237   (!Y X. f(X,g(X,Y)) /\ f(g(X,Y),Y) ==> f(Y,g(X,Y)) \/ f(g(X,Y),w(X))) /\
3238   (!Y X. f(X,g(X,Y)) /\ f(g(X,Y),w(X)) ==> f(g(X,Y),Y) \/ f(Y,g(X,Y))) /\
3239   (!Y X. f(g(X,Y),Y) /\ f(g(X,Y),w(X)) ==> f(X,g(X,Y)) \/ f(Y,g(X,Y))) /\
3240   (!Y X. f(Y,g(X,Y)) /\ f(g(X,Y),w(X)) ==> f(X,g(X,Y)) \/ f(g(X,Y),Y)) /\
3241   (!Y X. ~(f(X,g(X,Y)) /\ f(g(X,Y),Y) /\ f(Y,g(X,Y)) /\ f(g(X,Y),w(X)))) ==> F���;
3242
3243
3244val SYN352_1 = M "SYN352_1" $
3245 ���(f(a,b)) /\
3246   (!X Y:'a. f(X,Y) ==> f(b,z(X,Y)) \/ f(Y,z(X,Y))) /\
3247   (!X Y. f(X,Y) \/ f(z(X,Y),z(X,Y))) /\
3248   (!X Y. f(b,z(X,Y)) \/ f(X,z(X,Y)) \/ f(z(X,Y),z(X,Y))) /\
3249   (!X Y. f(b,z(X,Y)) /\ f(X,z(X,Y)) ==> f(z(X,Y),z(X,Y))) /\
3250   (!X Y. ~(f(X,Y) /\ f(X,z(X,Y)) /\ f(Y,z(X,Y)))) /\
3251   (!X Y. f(X,Y) ==> f(X,z(X,Y)) \/ f(Y,z(X,Y))) ==> F���;
3252
3253
3254val TOP001_2 = M "TOP001_2" $
3255Lib.with_flag(Globals.guessing_tyvars,true)
3256 Term
3257`(!Vf U. element_of_set(U,union_of_members(Vf)) ==> element_of_set(U,f1(Vf,U))) /\
3258   (!U Vf. element_of_set(U,union_of_members(Vf)) ==> element_of_collection(f1(Vf,U),Vf)) /\
3259   (!U Uu1 Vf. element_of_set(U,Uu1) /\ element_of_collection(Uu1,Vf) ==> element_of_set(U,union_of_members(Vf))) /\
3260   (!Vf X. basis(X,Vf) ==> equal_sets(union_of_members(Vf),X)) /\
3261   (!Vf U X. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> element_of_set(X,f10(Vf,U,X))) /\
3262   (!U X Vf. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> element_of_collection(f10(Vf,U,X),Vf)) /\
3263   (!X. subset_sets(X,X)) /\
3264   (!X U Y. subset_sets(X,Y) /\ element_of_set(U,X) ==> element_of_set(U,Y)) /\
3265   (!X Y. equal_sets(X,Y) ==> subset_sets(X,Y)) /\
3266   (!Y X. subset_sets(X,Y) \/ element_of_set(in_1st_set(X,Y),X)) /\
3267   (!X Y. element_of_set(in_1st_set(X,Y),Y) ==> subset_sets(X,Y)) /\
3268   (basis(cx,f)) /\
3269   (~subset_sets(union_of_members(top_of_basis(f)),cx)) ==> F`;
3270
3271
3272val TOP002_2 = M "TOP002_2" $
3273Lib.with_flag(Globals.guessing_tyvars,true)
3274 Term
3275`(!Vf U. element_of_collection(U,top_of_basis(Vf)) \/ element_of_set(f11(Vf,U),U)) /\
3276   (!X. ~element_of_set(X,empty_set)) /\
3277   (~element_of_collection(empty_set,top_of_basis(f))) ==> F`;
3278
3279
3280val TOP004_1 = M "TOP004_1" $
3281 Term
3282`(!(Vf:'a) (U:'b). element_of_set(U,union_of_members(Vf)) ==> element_of_set(U,f1(Vf,U))) /\
3283   (!U Vf. element_of_set(U,union_of_members(Vf)) ==> element_of_collection(f1(Vf,U),Vf)) /\
3284   (!U (Uu1:'c) Vf. element_of_set(U,Uu1) /\ element_of_collection(Uu1,Vf) ==> element_of_set(U,union_of_members(Vf))) /\
3285   (!Vf U Va. element_of_set(U,intersection_of_members(Vf)) /\ element_of_collection(Va,Vf) ==> element_of_set(U,Va)) /\
3286   (!U Vf. element_of_set(U,intersection_of_members(Vf)) \/ element_of_collection(f2(Vf,U),Vf)) /\
3287   (!Vf U. element_of_set(U,f2(Vf,U)) ==> element_of_set(U,intersection_of_members(Vf))) /\
3288   (!Vt X. topological_space(X,Vt) ==> equal_sets(union_of_members(Vt),X)) /\
3289   (!X Vt. topological_space(X,Vt) ==> element_of_collection(empty_set,Vt)) /\
3290   (!X Vt. topological_space(X,Vt) ==> element_of_collection(X,Vt)) /\
3291   (!X Y Z Vt. topological_space(X,Vt) /\ element_of_collection(Y,Vt) /\ element_of_collection(Z,Vt) ==> element_of_collection(intersection_of_sets(Y,Z),Vt)) /\
3292   (!X Vf Vt. topological_space(X,Vt) /\ subset_collections(Vf,Vt) ==> element_of_collection(union_of_members(Vf),Vt)) /\
3293   (!X Vt. equal_sets(union_of_members(Vt),X) /\ element_of_collection(empty_set,Vt) /\ element_of_collection(X,Vt) ==> topological_space(X,Vt) \/ element_of_collection(f3(X,Vt),Vt) \/ subset_collections(f5(X,Vt),Vt)) /\
3294   (!X Vt. equal_sets(union_of_members(Vt),X) /\ element_of_collection(empty_set,Vt) /\ element_of_collection(X,Vt) /\ element_of_collection(union_of_members(f5(X,Vt)),Vt) ==> topological_space(X,Vt) \/ element_of_collection(f3(X,Vt),Vt)) /\
3295   (!X Vt. equal_sets(union_of_members(Vt),X) /\ element_of_collection(empty_set,Vt) /\ element_of_collection(X,Vt) ==> topological_space(X,Vt) \/ element_of_collection(f4(X,Vt),Vt) \/ subset_collections(f5(X,Vt),Vt)) /\
3296   (!X Vt. equal_sets(union_of_members(Vt),X) /\ element_of_collection(empty_set,Vt) /\ element_of_collection(X,Vt) /\ element_of_collection(union_of_members(f5(X,Vt)),Vt) ==> topological_space(X,Vt) \/ element_of_collection(f4(X,Vt),Vt)) /\
3297   (!X Vt. equal_sets(union_of_members(Vt),X) /\ element_of_collection(empty_set,Vt) /\ element_of_collection(X,Vt) /\ element_of_collection(intersection_of_sets(f3(X,Vt),f4(X,Vt)),Vt) ==> topological_space(X,Vt) \/ subset_collections(f5(X,Vt),Vt)) /\
3298   (!X Vt. equal_sets(union_of_members(Vt),X) /\ element_of_collection(empty_set,Vt) /\ element_of_collection(X,Vt) /\ element_of_collection(intersection_of_sets(f3(X,Vt),f4(X,Vt)),Vt) /\ element_of_collection(union_of_members(f5(X,Vt)),Vt) ==> topological_space(X,Vt)) /\
3299   (!U X Vt. open(U,X,Vt) ==> topological_space(X,Vt)) /\
3300   (!X U Vt. open(U,X,Vt) ==> element_of_collection(U,Vt)) /\
3301   (!X U Vt. topological_space(X,Vt) /\ element_of_collection(U,Vt) ==> open(U,X,Vt)) /\
3302   (!U X Vt. closed(U,X,Vt) ==> topological_space(X,Vt)) /\
3303   (!U X Vt. closed(U,X,Vt) ==> open(relative_complement_sets(U,X),X,Vt)) /\
3304   (!U X Vt. topological_space(X,Vt) /\ open(relative_complement_sets(U,X),X,Vt) ==> closed(U,X,Vt)) /\
3305   (!Vs X Vt. finer(Vt,Vs,X) ==> topological_space(X,Vt)) /\
3306   (!Vt X Vs. finer(Vt,Vs,X) ==> topological_space(X,Vs)) /\
3307   (!X Vs Vt. finer(Vt,Vs,X) ==> subset_collections(Vs,Vt)) /\
3308   (!X Vs Vt. topological_space(X,Vt) /\ topological_space(X,Vs) /\ subset_collections(Vs,Vt) ==> finer(Vt,Vs,X)) /\
3309   (!Vf X. basis(X,Vf) ==> equal_sets(union_of_members(Vf),X)) /\
3310   (!X Vf Y Vb1 Vb2. basis(X,Vf) /\ element_of_set(Y,X) /\ element_of_collection(Vb1,Vf) /\ element_of_collection(Vb2,Vf) /\ element_of_set(Y,intersection_of_sets(Vb1,Vb2)) ==> element_of_set(Y,f6(X,Vf,Y,Vb1,Vb2))) /\
3311   (!X Y Vb1 Vb2 Vf. basis(X,Vf) /\ element_of_set(Y,X) /\ element_of_collection(Vb1,Vf) /\ element_of_collection(Vb2,Vf) /\ element_of_set(Y,intersection_of_sets(Vb1,Vb2)) ==> element_of_collection(f6(X,Vf,Y,Vb1,Vb2),Vf)) /\
3312   (!X Vf Y Vb1 Vb2. basis(X,Vf) /\ element_of_set(Y,X) /\ element_of_collection(Vb1,Vf) /\ element_of_collection(Vb2,Vf) /\ element_of_set(Y,intersection_of_sets(Vb1,Vb2)) ==> subset_sets(f6(X,Vf,Y,Vb1,Vb2),intersection_of_sets(Vb1,Vb2))) /\
3313   (!Vf X. equal_sets(union_of_members(Vf),X) ==> basis(X,Vf) \/ element_of_set(f7(X,Vf),X)) /\
3314   (!X Vf. equal_sets(union_of_members(Vf),X) ==> basis(X,Vf) \/ element_of_collection(f8(X,Vf),Vf)) /\
3315   (!X Vf. equal_sets(union_of_members(Vf),X) ==> basis(X,Vf) \/ element_of_collection(f9(X,Vf),Vf)) /\
3316   (!X Vf. equal_sets(union_of_members(Vf),X) ==> basis(X,Vf) \/ element_of_set(f7(X,Vf),intersection_of_sets(f8(X,Vf),f9(X,Vf)))) /\
3317   (!Uu9 X Vf. equal_sets(union_of_members(Vf),X) /\ element_of_set(f7(X,Vf),Uu9) /\ element_of_collection(Uu9,Vf) /\ subset_sets(Uu9,intersection_of_sets(f8(X,Vf),f9(X,Vf))) ==> basis(X,Vf)) /\
3318   (!Vf U X. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> element_of_set(X,f10(Vf,U,X))) /\
3319   (!U X Vf. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> element_of_collection(f10(Vf,U,X),Vf)) /\
3320   (!Vf X U. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> subset_sets(f10(Vf,U,X),U)) /\
3321   (!Vf U. element_of_collection(U,top_of_basis(Vf)) \/ element_of_set(f11(Vf,U),U)) /\
3322   (!Vf Uu11 U. element_of_set(f11(Vf,U),Uu11) /\ element_of_collection(Uu11,Vf) /\ subset_sets(Uu11,U) ==> element_of_collection(U,top_of_basis(Vf))) /\
3323   (!U Y X Vt. element_of_collection(U,subspace_topology(X,Vt,Y)) ==> topological_space(X,Vt)) /\
3324   (!U Vt Y X. element_of_collection(U,subspace_topology(X,Vt,Y)) ==> subset_sets(Y,X)) /\
3325   (!X Y U Vt. element_of_collection(U,subspace_topology(X,Vt,Y)) ==> element_of_collection(f12(X,Vt,Y,U),Vt)) /\
3326   (!X Vt Y U. element_of_collection(U,subspace_topology(X,Vt,Y)) ==> equal_sets(U,intersection_of_sets(Y,f12(X,Vt,Y,U)))) /\
3327   (!X Vt U Y Uu12. topological_space(X,Vt) /\ subset_sets(Y,X) /\ element_of_collection(Uu12,Vt) /\ equal_sets(U,intersection_of_sets(Y,Uu12)) ==> element_of_collection(U,subspace_topology(X,Vt,Y))) /\
3328   (!U Y X Vt. element_of_set(U,interior(Y,X,Vt)) ==> topological_space(X,Vt)) /\
3329   (!U Vt Y X. element_of_set(U,interior(Y,X,Vt)) ==> subset_sets(Y,X)) /\
3330   (!Y X Vt U. element_of_set(U,interior(Y,X,Vt)) ==> element_of_set(U,f13(Y,X,Vt,U))) /\
3331   (!X Vt U Y. element_of_set(U,interior(Y,X,Vt)) ==> subset_sets(f13(Y,X,Vt,U),Y)) /\
3332   (!Y U X Vt. element_of_set(U,interior(Y,X,Vt)) ==> open(f13(Y,X,Vt,U),X,Vt)) /\
3333   (!U Y Uu13 X Vt. topological_space(X,Vt) /\ subset_sets(Y,X) /\ element_of_set(U,Uu13) /\ subset_sets(Uu13,Y) /\ open(Uu13,X,Vt) ==> element_of_set(U,interior(Y,X,Vt))) /\
3334   (!U Y X Vt. element_of_set(U,closure(Y,X,Vt)) ==> topological_space(X,Vt)) /\
3335   (!U Vt Y X. element_of_set(U,closure(Y,X,Vt)) ==> subset_sets(Y,X)) /\
3336   (!Y X Vt U V. element_of_set(U,closure(Y,X,Vt)) /\ subset_sets(Y,V) /\ closed(V,X,Vt) ==> element_of_set(U,V)) /\
3337   (!Y X Vt U. topological_space(X,Vt) /\ subset_sets(Y,X) ==> element_of_set(U,closure(Y,X,Vt)) \/ subset_sets(Y,f14(Y,X,Vt,U))) /\
3338   (!Y U X Vt. topological_space(X,Vt) /\ subset_sets(Y,X) ==> element_of_set(U,closure(Y,X,Vt)) \/ closed(f14(Y,X,Vt,U),X,Vt)) /\
3339   (!Y X Vt U. topological_space(X,Vt) /\ subset_sets(Y,X) /\ element_of_set(U,f14(Y,X,Vt,U)) ==> element_of_set(U,closure(Y,X,Vt))) /\
3340   (!U Y X Vt. neighborhood(U,Y,X,Vt) ==> topological_space(X,Vt)) /\
3341   (!Y U X Vt. neighborhood(U,Y,X,Vt) ==> open(U,X,Vt)) /\
3342   (!X Vt Y U. neighborhood(U,Y,X,Vt) ==> element_of_set(Y,U)) /\
3343   (!X Vt Y U. topological_space(X,Vt) /\ open(U,X,Vt) /\ element_of_set(Y,U) ==> neighborhood(U,Y,X,Vt)) /\
3344   (!Z Y X Vt. limit_point(Z,Y,X,Vt) ==> topological_space(X,Vt)) /\
3345   (!Z Vt Y X. limit_point(Z,Y,X,Vt) ==> subset_sets(Y,X)) /\
3346   (!Z X Vt U Y. limit_point(Z,Y,X,Vt) /\ neighborhood(U,Z,X,Vt) ==> element_of_set(f15(Z,Y,X,Vt,U),intersection_of_sets(U,Y))) /\
3347   (!Y X Vt U Z. ~(limit_point(Z,Y,X,Vt) /\ neighborhood(U,Z,X,Vt) /\ eq_p(f15(Z,Y,X,Vt,U),Z))) /\
3348   (!Y Z X Vt. topological_space(X,Vt) /\ subset_sets(Y,X) ==> limit_point(Z,Y,X,Vt) \/ neighborhood(f16(Z,Y,X,Vt),Z,X,Vt)) /\
3349   (!X Vt Y Uu16 Z. topological_space(X,Vt) /\ subset_sets(Y,X) /\ element_of_set(Uu16,intersection_of_sets(f16(Z,Y,X,Vt),Y)) ==> limit_point(Z,Y,X,Vt) \/ eq_p(Uu16,Z)) /\
3350   (!U Y X Vt. element_of_set(U,boundary(Y,X,Vt)) ==> topological_space(X,Vt)) /\
3351   (!U Y X Vt. element_of_set(U,boundary(Y,X,Vt)) ==> element_of_set(U,closure(Y,X,Vt))) /\
3352   (!U Y X Vt. element_of_set(U,boundary(Y,X,Vt)) ==> element_of_set(U,closure(relative_complement_sets(Y,X),X,Vt))) /\
3353   (!U Y X Vt. topological_space(X,Vt) /\ element_of_set(U,closure(Y,X,Vt)) /\ element_of_set(U,closure(relative_complement_sets(Y,X),X,Vt)) ==> element_of_set(U,boundary(Y,X,Vt))) /\
3354   (!X Vt. hausdorff(X,Vt) ==> topological_space(X,Vt)) /\
3355   (!X_2 X_1 X Vt. hausdorff(X,Vt) /\ element_of_set(X_1,X) /\ element_of_set(X_2,X) ==> eq_p(X_1,X_2) \/ neighborhood(f17(X,Vt,X_1,X_2),X_1,X,Vt)) /\
3356   (!X_1 X_2 X Vt. hausdorff(X,Vt) /\ element_of_set(X_1,X) /\ element_of_set(X_2,X) ==> eq_p(X_1,X_2) \/ neighborhood(f18(X,Vt,X_1,X_2),X_2,X,Vt)) /\
3357   (!X Vt X_1 X_2. hausdorff(X,Vt) /\ element_of_set(X_1,X) /\ element_of_set(X_2,X) ==> eq_p(X_1,X_2) \/ disjoint_s(f17(X,Vt,X_1,X_2),f18(X,Vt,X_1,X_2))) /\
3358   (!Vt X. topological_space(X,Vt) ==> hausdorff(X,Vt) \/ element_of_set(f19(X,Vt),X)) /\
3359   (!Vt X. topological_space(X,Vt) ==> hausdorff(X,Vt) \/ element_of_set(f20(X,Vt),X)) /\
3360   (!X Vt. topological_space(X,Vt) /\ eq_p(f19(X,Vt),f20(X,Vt)) ==> hausdorff(X,Vt)) /\
3361   (!X Vt Uu19 Uu20. topological_space(X,Vt) /\ neighborhood(Uu19,f19(X,Vt),X,Vt) /\ neighborhood(Uu20,f20(X,Vt),X,Vt) /\ disjoint_s(Uu19,Uu20) ==> hausdorff(X,Vt)) /\
3362   (!Va1 Va2 X Vt. separation(Va1,Va2,X,Vt) ==> topological_space(X,Vt)) /\
3363   (!Va2 X Vt Va1. ~(separation(Va1,Va2,X,Vt) /\ equal_sets(Va1,empty_set))) /\
3364   (!Va1 X Vt Va2. ~(separation(Va1,Va2,X,Vt) /\ equal_sets(Va2,empty_set))) /\
3365   (!Va2 X Va1 Vt. separation(Va1,Va2,X,Vt) ==> element_of_collection(Va1,Vt)) /\
3366   (!Va1 X Va2 Vt. separation(Va1,Va2,X,Vt) ==> element_of_collection(Va2,Vt)) /\
3367   (!Vt Va1 Va2 X. separation(Va1,Va2,X,Vt) ==> equal_sets(union_of_sets(Va1,Va2),X)) /\
3368   (!X Vt Va1 Va2. separation(Va1,Va2,X,Vt) ==> disjoint_s(Va1,Va2)) /\
3369   (!Vt X Va1 Va2. topological_space(X,Vt) /\ element_of_collection(Va1,Vt) /\ element_of_collection(Va2,Vt) /\ equal_sets(union_of_sets(Va1,Va2),X) /\ disjoint_s(Va1,Va2) ==> separation(Va1,Va2,X,Vt) \/ equal_sets(Va1,empty_set) \/ equal_sets(Va2,empty_set)) /\
3370   (!X Vt. connected_space(X,Vt) ==> topological_space(X,Vt)) /\
3371   (!Va1 Va2 X Vt. ~(connected_space(X,Vt) /\ separation(Va1,Va2,X,Vt))) /\
3372   (!X Vt. topological_space(X,Vt) ==> connected_space(X,Vt) \/ separation(f21(X,Vt),f22(X,Vt),X,Vt)) /\
3373   (!Va X Vt. connected_set(Va,X,Vt) ==> topological_space(X,Vt)) /\
3374   (!Vt Va X. connected_set(Va,X,Vt) ==> subset_sets(Va,X)) /\
3375   (!X Vt Va. connected_set(Va,X,Vt) ==> connected_space(Va,subspace_topology(X,Vt,Va))) /\
3376   (!X Vt Va. topological_space(X,Vt) /\ subset_sets(Va,X) /\ connected_space(Va,subspace_topology(X,Vt,Va)) ==> connected_set(Va,X,Vt)) /\
3377   (!Vf X Vt. open_covering(Vf,X,Vt) ==> topological_space(X,Vt)) /\
3378   (!X Vf Vt. open_covering(Vf,X,Vt) ==> subset_collections(Vf,Vt)) /\
3379   (!Vt Vf X. open_covering(Vf,X,Vt) ==> equal_sets(union_of_members(Vf),X)) /\
3380   (!Vt Vf X. topological_space(X,Vt) /\ subset_collections(Vf,Vt) /\ equal_sets(union_of_members(Vf),X) ==> open_covering(Vf,X,Vt)) /\
3381   (!X Vt. compact_space(X,Vt) ==> topological_space(X,Vt)) /\
3382   (!X Vt Vf1. compact_space(X,Vt) /\ open_covering(Vf1,X,Vt) ==> finite(f23(X,Vt,Vf1))) /\
3383   (!X Vt Vf1. compact_space(X,Vt) /\ open_covering(Vf1,X,Vt) ==> subset_collections(f23(X,Vt,Vf1),Vf1)) /\
3384   (!Vf1 X Vt. compact_space(X,Vt) /\ open_covering(Vf1,X,Vt) ==> open_covering(f23(X,Vt,Vf1),X,Vt)) /\
3385   (!X Vt. topological_space(X,Vt) ==> compact_space(X,Vt) \/ open_covering(f24(X,Vt),X,Vt)) /\
3386   (!Uu24 X Vt. topological_space(X,Vt) /\ finite(Uu24) /\ subset_collections(Uu24,f24(X,Vt)) /\ open_covering(Uu24,X,Vt) ==> compact_space(X,Vt)) /\
3387   (!Va X Vt. compact_set(Va,X,Vt) ==> topological_space(X,Vt)) /\
3388   (!Vt Va X. compact_set(Va,X,Vt) ==> subset_sets(Va,X)) /\
3389   (!X Vt Va. compact_set(Va,X,Vt) ==> compact_space(Va,subspace_topology(X,Vt,Va))) /\
3390   (!X Vt Va. topological_space(X,Vt) /\ subset_sets(Va,X) /\ compact_space(Va,subspace_topology(X,Vt,Va)) ==> compact_set(Va,X,Vt)) /\
3391   (basis(cx,f)) /\
3392   (!U. element_of_collection(U,top_of_basis(f))) /\
3393   (!V. element_of_collection(V,top_of_basis(f))) /\
3394   (!U V. ~element_of_collection(intersection_of_sets(U,V),top_of_basis(f)))
3395   ==> F`;
3396
3397
3398val TOP004_2 = M "TOP004_2" $
3399Lib.with_flag(Globals.guessing_tyvars,true)
3400 Term
3401`(!U Uu1 Vf. element_of_set(U,Uu1) /\ element_of_collection(Uu1,Vf) ==> element_of_set(U,union_of_members(Vf))) /\
3402   (!Vf X. basis(X,Vf) ==> equal_sets(union_of_members(Vf),X)) /\
3403   (!X Vf Y Vb1 Vb2. basis(X,Vf) /\ element_of_set(Y,X) /\ element_of_collection(Vb1,Vf) /\ element_of_collection(Vb2,Vf) /\ element_of_set(Y,intersection_of_sets(Vb1,Vb2)) ==> element_of_set(Y,f6(X,Vf,Y,Vb1,Vb2))) /\
3404   (!X Y Vb1 Vb2 Vf. basis(X,Vf) /\ element_of_set(Y,X) /\ element_of_collection(Vb1,Vf) /\ element_of_collection(Vb2,Vf) /\ element_of_set(Y,intersection_of_sets(Vb1,Vb2)) ==> element_of_collection(f6(X,Vf,Y,Vb1,Vb2),Vf)) /\
3405   (!X Vf Y Vb1 Vb2. basis(X,Vf) /\ element_of_set(Y,X) /\ element_of_collection(Vb1,Vf) /\ element_of_collection(Vb2,Vf) /\ element_of_set(Y,intersection_of_sets(Vb1,Vb2)) ==> subset_sets(f6(X,Vf,Y,Vb1,Vb2),intersection_of_sets(Vb1,Vb2))) /\
3406   (!Vf U X. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> element_of_set(X,f10(Vf,U,X))) /\
3407   (!U X Vf. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> element_of_collection(f10(Vf,U,X),Vf)) /\
3408   (!Vf X U. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> subset_sets(f10(Vf,U,X),U)) /\
3409   (!Vf U. element_of_collection(U,top_of_basis(Vf)) \/ element_of_set(f11(Vf,U),U)) /\
3410   (!Vf Uu11 U. element_of_set(f11(Vf,U),Uu11) /\ element_of_collection(Uu11,Vf) /\ subset_sets(Uu11,U) ==> element_of_collection(U,top_of_basis(Vf))) /\
3411   (!Y X Z. subset_sets(X,Y) /\ subset_sets(Y,Z) ==> subset_sets(X,Z)) /\
3412   (!Y Z X. element_of_set(Z,intersection_of_sets(X,Y)) ==> element_of_set(Z,X)) /\
3413   (!X Z Y. element_of_set(Z,intersection_of_sets(X,Y)) ==> element_of_set(Z,Y)) /\
3414   (!X Z Y. element_of_set(Z,X) /\ element_of_set(Z,Y) ==> element_of_set(Z,intersection_of_sets(X,Y))) /\
3415   (!X U Y V. subset_sets(X,Y) /\ subset_sets(U,V) ==> subset_sets(intersection_of_sets(X,U),intersection_of_sets(Y,V))) /\
3416   (!X Z Y. equal_sets(X,Y) /\ element_of_set(Z,X) ==> element_of_set(Z,Y)) /\
3417   (!Y X. equal_sets(intersection_of_sets(X,Y),intersection_of_sets(Y,X))) /\
3418   (basis(cx,f)) /\
3419   (!U. element_of_collection(U,top_of_basis(f))) /\
3420   (!V. element_of_collection(V,top_of_basis(f))) /\
3421   (!U V. ~element_of_collection(intersection_of_sets(U,V),top_of_basis(f)))
3422   ==> F`;
3423
3424
3425val TOP005_2 = Mfail "TOP005_2" $
3426Lib.with_flag(Globals.guessing_tyvars,true)
3427 Term
3428`(!Vf U. element_of_set(U,union_of_members(Vf)) ==> element_of_set(U,f1(Vf,U))) /\
3429   (!U Vf. element_of_set(U,union_of_members(Vf)) ==> element_of_collection(f1(Vf,U),Vf)) /\
3430   (!Vf U X. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> element_of_set(X,f10(Vf,U,X))) /\
3431   (!U X Vf. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> element_of_collection(f10(Vf,U,X),Vf)) /\
3432   (!Vf X U. element_of_collection(U,top_of_basis(Vf)) /\ element_of_set(X,U) ==> subset_sets(f10(Vf,U,X),U)) /\
3433   (!Vf U. element_of_collection(U,top_of_basis(Vf)) \/ element_of_set(f11(Vf,U),U)) /\
3434   (!Vf Uu11 U. element_of_set(f11(Vf,U),Uu11) /\ element_of_collection(Uu11,Vf) /\ subset_sets(Uu11,U) ==> element_of_collection(U,top_of_basis(Vf))) /\
3435   (!X U Y. element_of_set(U,X) ==> subset_sets(X,Y) \/ element_of_set(U,Y)) /\
3436   (!Y X Z. subset_sets(X,Y) /\ element_of_collection(Y,Z) ==> subset_sets(X,union_of_members(Z))) /\
3437   (!X U Y. subset_collections(X,Y) /\ element_of_collection(U,X) ==> element_of_collection(U,Y)) /\
3438   (subset_collections(g,top_of_basis(f))) /\
3439   (~element_of_collection(union_of_members(g),top_of_basis(f))) ==> F`;
3440