Fundamental axioms and methods of definition: -- (1) Set Booleans and other decidable stuff, including Singleton: {x} and conditional expressions 'if e1 then a1 elseif e2 then a2... end if' -- (2) Axiom of choice: (S = 0 and arb(S) = 0) or (arb(S) in S & arb(S) * S = 0) -- (3) Axiom of infinity: s_inf /= 0 and (FORALL x in s_inf | {x} in s_inf) -- (4) Algebraic definition, in the ordinary way, including setformers -- (5) Recursive definition of f(S,A1,...,An) using predefined h(S,A1,...,An) and g(S,A1,...,An) -- f(S,A1,..,An) = g({h(f(t,A1,...,An),A1,...,An): t in S},A1,...,An) -- (6) Definition of groups of symbols by theory application. -- THEORY theory_name(list_of_assumed_symbols); assumptions... END theory_name; -- APPLY(new_symbol:defined_symbol_of_theory,...) theory_name(list_of_replacements_for_assumed_symbols) -- new_theory_name := Combine(theory_name(list_of_replacements_for_assumed_symbols),...) -- sets_of_groups := Combine_all(theory_name,s) -- A remark concerning the 'Axiom of Replacement'. One formulation of this axiom is: if P(x,y) is a predicate such that (FORALL x in s, y, z | ((P(x,y) & P(x,z)) ¥imp (y = z))) then there is a set t such that (FORALL y | (y in t ¥eq (EXISTS x in s | P(x,y)))). This may be subsumed by the very general way in which we Skolemize and allow setformers to be written. I will try to think through this point. -- ----------------------------------------------------------------------------- Catalog of Theorems and Definitions (1) Theorem 0: [Axiom of Choice] ((S = 0) & (arb(S) = 0)) or ((arb(S) in S) & (arb(S) * S = 0))

(2) Theorem 00: [Axiom of Infinity] (s_inf /= 0) & (FORALL x in s_inf | {x} in s_inf)

(3) Theorem 1: [Choice from singleton] arb({X}) = X

(4) Theorem 2: [Choice from set of 2] (X in Y) ¥imp (arb({Y,X}) = X)

(5) Theorem 3: [Choice from pair] arb([X,Y]) = {X}

(6) Theorem 4: [Choice from special set of 2] arb({X,{X,Y}}) = X

(7) Theorem 5: [Choice from pair, 2] arb(arb([X,Y])) = X

(8) Theorem 6: [cdr choice] arb(arb(arb([X,Y] - {arb([X,Y])}) - {arb([X,Y])})) = Y

(9) Theorem 7: [car of pair] car([X,Y]) = X

(10) Theorem 8: [cdr of pair] cdr([X,Y]) = Y

(11) Theorem 9: [Ordered pair property] (car([X,Y]) = X) & (cdr([X,Y]) = Y)

(12) Theorem 10: [Ordered pair property, 2] [X,Y] = [car([X,Y]),cdr([X,Y])]

(13) Theorem 11: [Pair reconstruction lemma] (U = [A,B]) ¥imp (U = [car(U),cdr(U)])

(14) Theorem if_then_else.1: [commutativity property of if_then_else] f(if p then a else b end if) = if p then f(a) else f(b) end if

(15) Theorem if_then_else2.1: [Conditioned interchange of nested occurrences of if_then_else] if p then if q then a else b end if else c end if = if q then ap else if pp then bp else cp end if end if

(16) Theorem setformer.1: [Equality of setformers] ((x1_thryvar notin s) or ((e(x1_thryvar) = e0(x1_thryvar)) & (P(x1_thryvar) ¥eq PP(x1_thryvar)))) ¥imp ({e(x): x in s | P(x)} = {e0(x): x in s | PP(x)})

(17) Theorem setformer01: [Empty setformer lemma] (s /= 0) ¥imp ({e(x): x in s} /= 0)

(18) Theorem setformer02: [Empty setformer lemma 2] ({x in s | P(x)} /= 0) ¥imp ({e(x): x in s | P(x)} /= 0)

(19) Theorem setformer2_1: [Equality of mapformers] (((x2_thryvar notin s) or (y2_thryvar notin (f(x2_thryvar) + fp(x2_thryvar)))) or (((f(x2_thryvar) = fp(x2_thryvar)) & (e2(x2_thryvar,y2_thryvar) = ep2(x2_thryvar,y2_thryvar)) & (R(x2_thryvar,y2_thryvar) ¥eq PQ(x2_thryvar,y2_thryvar))))) ¥imp ({e2(x,y): x in s, y in f(x) | R(x,y)} = {ep2(x,y): x in s, y in fp(x) | PQ(x,y)})

(20) Theorem comprehension1: [Setformer existence] (X in tt_thryvar) ¥eq ((X in s) & P(X))

(21) Theorem comprehension2: [Setformer inclusion lemma] {x in s | P(x)} ¥incin s

(22) Theorem 12: [Members of ordinals are ordinals] (Ord(S) & (T in S)) ¥imp Ord(T)

(23) Theorem 13: [Ordinal membership implies inclusion] (Ord(S) & (T in S)) ¥imp (T ¥incin S)

(24) Theorem ord_ind1: [Transfinite induction principle] Ord(t_thryvar) & P(t_thryvar) & (t_thryvar ¥incin o) & (FORALL x in t_thryvar | not P(x))

(25) Theorem 14: [Ultimate members lemma] S ¥incin Ult_membs(S)

(26) Theorem 15: [Ultimate members lemma 2] Ult_membs(S) = S + {v: x in S, v in Ult_membs(x)}

(27) Theorem 16: [Key property of ultimate members set] ((X in S) & (Y in X)) ¥imp (Y in Ult_membs(S))

(28) Theorem 17: [An ordinal is its own set of ultimate members] (Ord(S)) ¥imp (Ult_membs(S) = S)

(29) Theorem 18: [Ultimate members of a singleton] Ult_membs({S}) = {S} + Ult_membs(S)

(30) Theorem 19: [Ultimate members of an ordinal singleton] Ord(S) ¥imp (Ult_membs({S}) = S + {S})

(31) Theorem 20: [Ultimate members of the basic infinite set] (X in s_inf) ¥imp (membs_x(S,{X}) = membs_x(S,X) + Un(membs_x(S,X)))

(32) Theorem 21: [Ultimate members lemma 3] (S ¥incin Ult_memb1(S)) & (((X in Ult_memb1(S)) & (Y in X)) ¥imp (Y in Ult_memb1(S)))

(33) Theorem transfinite_induction.1: [Transfinite membership induction] P(mt1_thryvar) & ((K in mt1_thryvar) ¥imp (not P(K)))

(34) Theorem 22: [Monotonicity of ultimate members set] (Y in Ult_membs(S)) ¥imp (Ult_membs(Y) ¥incin Ult_membs(S))

(35) Theorem 23: [Members of ultimate members are also subsets] (Y in Ult_membs(S)) ¥imp (Y ¥incin Ult_membs(S))

(36) Theorem transfinite_member_induction1: [Ultimate members and transfinite induction] P(mt2_thryvar) & (mt2_thryvar in Ult_membs({n})) & ((K in mt2_thryvar) ¥imp (not P(K)))

(37) Theorem 24: [Only the null set has a null domain] (S = 0) ¥eq (domain(S) = 0)

(38) Theorem 25: [Only the null set has a null range] (S = 0) ¥eq (range(S) = 0)

(39) Theorem 26: [Maps are mapformers] Is_map(F) ¥eq (F ¥incin {[car(x),cdr(x)]: x in F})

(40) Theorem iz_map.1: [Mapformers are maps] Is_map({[a(x),b(x)]: x in s}) & (domain({[a(x),b(x)]: x in s}) = {a(x): x in s}) & (range({[a(x),b(x)]: x in s}) = {b(x): x in s})

(41) Theorem iz_map_2.1: [Two-variable mapformers] Is_map({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)})

(42) Theorem iz_map_3.1: [Three-variable mapformers] Is_map({[a3(x,y,yy),b3(x,y,yy)]: x in s, y in t, yy in u | P3(x,y,yy)})

(43) Theorem Svm_test.1: [Single-valuedness test] ((x3_thryvar in s) & (y3_thryvar in s) & (a(x3_thryvar) = a(y3_thryvar)) & (b(x3_thryvar) /= b(y3_thryvar))) or Svm({[a(x),b(x)]: x in s})

(44) Theorem Svm_test_2.1: [Single-valuedness test, two-variable case] ((x4_thryvar in s) & (y4_thryvar in t) & (xp1_thryvar in s) & (yp1_thryvar in t) & (a2(x4_thryvar,y4_thryvar) = a2(xp1_thryvar,yp1_thryvar)) & (b2(x4_thryvar,y4_thryvar) /= b2(xp1_thryvar,yp1_thryvar))) or Svm({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)})

(45) Theorem Svm_test_3.1: [Single-valuedness test, three-variable case] ((x5_thryvar in s) & (y5_thryvar in t) & (z1_thryvar in u) & (xp2_thryvar in s) & (yp2_thryvar in t) & (zp1_thryvar in u) & P3(x5_thryvar,y5_thryvar,z1_thryvar) & P3(xp2_thryvar,yp2_thryvar,zp1_thryvar) & (a3(x5_thryvar,y5_thryvar,z1_thryvar) = a3(xp2_thryvar,yp2_thryvar,zp1_thryvar)) & (b3(x5_thryvar,y5_thryvar,z1_thryvar) /= b3(xp2_thryvar,yp2_thryvar,zp1_thryvar))) or Svm({[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)})

(46) Theorem one_1_test.1: [One-one map former test] ((x6_thryvar in s) & (y6_thryvar in s) & (((a(x6_thryvar) = a(y6_thryvar)) ¥neq (b(x6_thryvar) = b(y6_thryvar))))) or one_1_map({[a(x),b(x)]: x in s})

(47) Theorem one_1_test_2.1: [One-one map former test, two-variable case] ((x7_thryvar in s) & (y7_thryvar in t) & (x2_thryvar in s) & (y2_thryvar in t) & (not((a2(x7_thryvar,y7_thryvar) = a2(x2_thryvar,y2_thryvar)) ¥eq (b2(x7_thryvar,y7_thryvar) = b2(x2_thryvar,y2_thryvar))))) or one_1_map({[a2(x,y),b2(x,y)]: x in s, y in t})

(48) Theorem one_1_test_3.1: [Single-valued map former, three-variable case] ((x8_thryvar in s) & (y8_thryvar in t) & (z2_thryvar in r) & (xp3_thryvar in s) & (yp3_thryvar in t) & (zp2_thryvar in r) & P3(x8_thryvar,y8_thryvar,z2_thryvar) & P3(xp3_thryvar,yp3_thryvar,zp2_thryvar) & (((a3(x8_thryvar,y8_thryvar,z2_thryvar) /= a3(xp3_thryvar,yp3_thryvar,zp2_thryvar)) ¥eq (b3(x8_thryvar,y8_thryvar,z2_thryvar) = b3(xp3_thryvar,yp3_thryvar,zp2_thryvar))))) or one_1_map({[a3(x,y,wz),b3(x,y,wz)]: x in s, y in t,wz in r | P3(x,y,wz)})

(49) Theorem 27: [Ordinal comparison lemma] (Ord(S) & Ord(T) & (T ¥incin S)) ¥imp ((T = S) or (T = arb(S - T)))

(50) Theorem 28: [Ordinal intersection] (Ord(S) & Ord(T)) ¥imp Ord(S * T)

(51) Theorem 29: [Second order comparison lemma] (Ord(S) & Ord(T)) ¥imp ((S ¥incin T) or (T ¥incin S))

(52) Theorem 30: [Ordinal maximum and minimum] (Ord(S) & Ord(T)) ¥imp (Ord(S + T) & Ord(S * T))

(53) Theorem 31: [Ordinal membership comparison] (Ord(S) & Ord(T)) ¥imp ((S in T) or (T in S) or (S = T))

(54) Theorem 32: [Successor ordinal] Ord(S) ¥imp Ord(next(S))

(55) Theorem 33: [Successor ordinal 2] Ord(S) ¥imp Ord(S + {S})

(56) Theorem 34: [Third ordinal comparison lemma] (Ord(S) & Ord(T)) ¥imp ((T ¥incin S) ¥eq ((T in S) or (T = S)))

(57) Theorem 35: [Ordinal membership and comparison] (Ord(S) & Ord(T)) ¥imp ((T notin S) ¥eq (S ¥incin T))

(58) Theorem 36: [Membership in the successor of an ordinal $s$] Ord(S) ¥imp ((T in next(S)) ¥eq ((T ¥incin S) & Ord(T)))

(59) Theorem 37: [Membership of $s$ in an ordinal $t$ implies inclusion of $next(s)$ in $t$] (Ord(T) & (S in T)) ¥imp (next(S) ¥incin T)

(60) Theorem 38: [The class of all sets is not a set] not(EXISTS x | (FORALL y | y in x))

(61) Theorem 39: [There is no antinomic Russell's set] not(EXISTS x | (FORALL y | (y in x) ¥eq (y notin y)))

(62) Theorem 40: [The class of ordinals is not a set] not (FORALL x | ((x in OS) ¥eq Ord(x)))

(63) Theorem 41: [Enumerability principle] ((Ord(X) & S in {enum(y,S): y in X})) ¥imp (S ¥incin {enum(y,S): y in X})

(64) Theorem 42: [Enumeration membership lemma] (enum(X,S) = S) or (enum(X,S) in S)

(65) Theorem 43: [Enumeration inclusion lemma] ((enum(X,S) = S) & (Y incs X)) ¥imp (enum(Y,S) = S)

(66) Theorem 44: [The enumeration of a set is 1-1] (Ord(X) & Ord(W) & (X /= W)) ¥imp ((S in {enum(u,S): u in X}) or (S in {enum(u,S): u in W}) or (enum(X,S) /= enum(W,S)))

(67) Theorem 45: [Enumeration lemma] (EXISTS x | (Ord(x) & (S in {enum(y,S): y in x})))

(68) Theorem 46: [Main enumeration theorem] (EXISTS x | Ord(x) & (S = {enum(y,S): y in x}) & (FORALL y in x, z0 in x | ((y /= z0) ¥imp (enum(y,S) /= enum(z0,S)))))

(68+) Theorem 47: [Enumeration single-valuedness principle] (FORALL s | (Ord(enum_Ord(s)) & (s = {enum(y,s): y in enum_Ord(s)}) & (FORALL y in enum_Ord(s), z0 in enum_Ord(s) | ((y /= z0) ¥imp (enum(y,s) /= enum(z0,s))))))

(69) Theorem 48: [Map restriction lemma] (F ¥ON A) ¥incin F

(70) Theorem 49: [Set intersection formula] S * T = {x in S | x in T}

(71) Theorem 50: [Set difference formula] S - T = {x in S | x notin T}

(72) Theorem 51: [Map members are pairs] (Is_map(F) ¥imp ((X in F) ¥imp (X = [car(X),cdr(X)]))) & ((FORALL x in F | x = [car(x),cdr(x)]) ¥imp Is_map(F))

(73) Theorem 52: [Map subsets are maps] (G ¥incin F & Is_map(F)) ¥imp Is_map(G)

(74) Theorem 53: [Single-valued map subsets are single-valued] ((G ¥incin F) & Svm(F)) ¥imp Svm(G)

(75) Theorem 54: [One-one map subsets are one-one] ((G ¥incin F) & one_1_map(F)) ¥imp one_1_map(G)

(76) Theorem 55: [Map compositions are maps] Is_map(F @ G)

(77) Theorem 56: [Map restrictions are maps] Is_map(F) ¥imp Is_map(F ¥ON S)

(78) Theorem 57: [Restrictions of single-valed maps are single-valued] Svm(F) ¥imp Svm(F ¥ON S)

(79) Theorem 58: [Restrictions of one-one maps are one-one] one_1_map(F) ¥imp one_1_map(F ¥ON S)

(80) Theorem 59: [The null set as a map] Is_map(0) & Svm(0) & (one_1_map(0)) & (range(0) = 0) & (domain(0) = 0)

(81) Theorem 60: [Domain membership lemma] (X in F) ¥imp (car(X) in domain(F))

(82) Theorem 61: [Range membership lemma] (X in F) ¥imp (cdr(X) in range(F))

(83) Theorem 62: [Map unions are maps] (Is_map(F) & Is_map(G)) ¥imp Is_map(F + G)

(84) Theorem 63: [Map restriction is additive] F ¥ON (A + B) = (F ¥ON A) + (F ¥ON B)

(85) Theorem 64: [Restriction of union maps] (F + G) ¥ON A = (F ¥ON A) + (G ¥ON A)

(86) Theorem 65: [Monotonicity of range and domain sets] (F ¥incin G) ¥imp ((range(F) ¥incin range(G)) & (domain(F) ¥incin domain(G)))

(87) Theorem 66: [Associativity of map multiplication] F @ (G @ H) = (F @ G) @ H

(88) Theorem 67: [Restriction of a map to its own domain] F ¥ON domain(F) = F

(89) Theorem 68: [Restriction to an intersection set] F ¥ON (domain(F) * T) = F ¥ON T

(90) Theorem 69: [Double restriction] F ¥ON (S * T) = (F ¥ON S) ¥ON T

(91) Theorem 70: [Null restriction] F ¥ON 0 = 0

(92) Theorem 71: [Map image elements belong to the map range] (X in domain(F)) ¥imp ((F~[X]) in range(F))

(93) Theorem fcn_symbol.1: [Mapformer domain] domain(g) = s

(94) Theorem fcn_symbol.2: [Image by a mapformer] (XX in s) ¥imp (g~[XX] = f(XX))

(95) Theorem fcn_symbol.2a: [Image by a mapformer, quantified form] (FORALL x in s | g~[x] = f(x))

(96) Theorem fcn_symbol.3: [Elements not in a mapformer domain] (XX notin s) ¥imp (g~[XX] = 0)

(97) Theorem fcn_symbol.4: [Mapformer image in general] g~[XX] = if XX in s then f(XX) else 0 end if

(98) Theorem fcn_symbol.4a: [Image by a mapformer, quantified form] (FORALL x | g~[x] = if x in s then f(x) else 0 end if)

(99) Theorem fcn_symbol.5: [Range of a mapformer] range(g) = {f(xx) : xx in s}

(100) Theorem fcn_symbol.6: [Mapformer one-to-oneness test] ((x9_thryvar in s) & (y9_thryvar in s) & (f(x9_thryvar) = f(y9_thryvar)) & (x9_thryvar /= y9_thryvar)) or one_1_map(g)

(101) Theorem fcn_symbol.7: [?] Svm(g)

(102) Theorem 72: [Form of a single-valued map] Svm(F) ¥eq (F = {[x,F~[x]]: x in domain(F)})

(103) Theorem 73: [Form of a single-valued map range] Svm(F) ¥imp (F = {[x,F~[x]]: x in domain(F)} & (range(F) = {F~[x]: x in domain(F)}))

(104) Theorem 74: [Map image formula] (Svm(F) & (X in F)) ¥imp (F~[car(X)] = cdr(X))

(105) Theorem 75: (X in domain(F)) ¥imp (F~[X] in range(F))

(106) Theorem 76: [Map members are pairs, 2] (Is_map(F) & (U in F)) ¥imp (U = [car(U),cdr(U)])

(107) Theorem 77: [Map domain member lemma] Is_map(F) ¥imp ((X in domain(F)) ¥eq ([X,F~[X]] in F))

(108) Theorem Must_be_svm.1: [Single-valued map former] Svm({[x,b(x)]: x in s}) & (domain({[x,b(x)]: x in s}) = s) & (range({[x,b(x)]: x in s}) = {b(x): x in s}) & ((u in s) ¥imp ({[x,b(x)]: x in s}~[u] = b(u)))

(109) Theorem Must_be_svm_2.1: [Single-valued map former, two-variable case] Svm({[[x,y],b2(x,y)]: x in s, y in t | P2(x,y)})

(110) Theorem 78: [Map domains are additive] domain(F + G) = domain(F) + domain(G)

(111) Theorem 79: [Map ranges are additive] range(F + G) = range(F) + range(G)

(112) Theorem 80: [Range of a restriction map] range(F ¥ON S) ¥incin range(F)

(113) Theorem 81: [Range of restriction to a union] range(F ¥ON (S + T)) = range(F ¥ON S) + range(F ¥ON T)

(114) Theorem 82: [Restriction to a subset] (S incs T) ¥imp (range(F ¥ON S) incs range(F ¥ON T))

(115) Theorem 83: [One-one map-restriction to an intersection] one_1_map(F) ¥imp (range(F ¥ON (S * T)) = range(F ¥ON S) * range(F ¥ON T))

(116) Theorem 84: [Restriction to the null set] ((F ¥ON 0) = 0) & (range(F ¥ON 0) = 0)

(117) Theorem 85: [One-one map restriction to disjoint sets] (one_1_map(F) & (S * T = 0)) ¥imp (range(F ¥ON S) * range(F ¥ON T) = 0)

(118) Theorem 86: [Domain is null only when range is null] (domain(F) = 0) ¥eq (range(F) = 0)

(119) Theorem 87: [Union of single-valued maps] (Svm(F) & Svm(G) & (domain(F) * domain(G) = 0)) ¥imp Svm(F + G)

(120) Theorem 88: [Union of 1-1 maps] (one_1_map(F) & one_1_map(G) & (range(F) * range(G) = 0) & (domain(F) * domain(G) = 0)) ¥imp one_1_map(F + G)

(121) Theorem 89: [Union of 1-1 maps, 2] (one_1_map(F + G) & ((G * F) = 0)) ¥imp ((domain(G) = (domain(F + G) - domain(F))) & (range(G) = (range(F + G) - range(F))))

(122) Theorem 90: [Members of the inverse map] Is_map(F) ¥imp (([X,Y] in F) ¥eq ([Y,X] in inv(F)))

(123) Theorem 91: [Singletons as maps] Svm({[X,Y]}) & one_1_map({[X,Y]}) & (({[X,Y]}~[X]) = Y)

(124) Theorem 92: [Doubletons as maps] Is_map({[X,Y],[Z,W]}) & (domain({[X,Y],[Z,W]}) = {X,Z}) & (range({[X,Y],[Z,W]}) = {Y,W}) & ((X /= Z) ¥imp Svm({[X,Y],[Z,W]}))

(125) Theorem 93: [Doubletons as maps, 2] (X /= Z) ¥imp ({[X,Y],[Z,W]}~[X] = Y)

(126) Theorem 94: [Domain of restriction] domain(F ¥ON S) = domain(F) * S

(127) Theorem 95: [Range and domain of map product] (range(F @ G) = range(F ¥ON range(G))) & ((range(G) ¥incin domain(F)) ¥imp (domain(F @ G) = domain(G)))

(128) Theorem 96: [Range and domain of map product, 2] (range(G) = domain(F)) ¥imp ((range(F @ G) = range(F)) & (domain(F @ G) = domain(G)))

(129) Theorem 97: [Range and domain of map product, 3] (range(G) ¥incin domain(F)) ¥imp ((range(F @ G) ¥incin range(F)) & (domain(F @ G) = domain(G)))

(130) Theorem 98: [Range of restriction of one-one map] (one_1_map(F) & (S ¥incin domain(F)) & (S /= domain(F))) ¥imp ((range(F ¥ON S) ¥incin range(F)) & (range(F ¥ON S) /= range(F)))

(131) Theorem 99: [Inverse map basic properties] Is_map(inv(F)) & range(inv(F)) = domain(F) & domain(inv(F)) = range(F)

(132) Theorem 100: [Double inverse map] Is_map(F) ¥imp (F = inv(inv(F)))

(133) Theorem 101: [Inverse of a one-one map] one_1_map(F) ¥imp (one_1_map(inv(F)) & (F = inv(inv(F))) & (range(inv(F)) = domain(F)) & (domain(inv(F)) = range(F)))

(134) Theorem 102: [Inverse image of an element] (one_1_map(F) & (X in domain(F))) ¥imp (inv(F)~[F~[X]] = X)

(135) Theorem 103: [Inverse image of an element's map image] one_1_map(F) ¥imp (((X in domain(F)) ¥imp (inv(F)~[F~[X]] = X)) & ((X in range(F)) ¥imp (F~[inv(F)~[X]] = X)))

(136) Theorem setformer_unravel1: {x: y in {e(f): f in s}, x in g(y)} = {x: f in s, x in g(e(f))}

(137) Theorem 104: [binary intersection distributes over monadic union] Un(F) * X = Un({y * X : y in F})

(138) Theorem 105: [membership in unionset] (X in Un(Y)) ¥eq ({v in Y | X in v} /= 0)

(139) Theorem 106: [Union set of a doubleton] Un({X,Y}) = (X + Y)

(140) Theorem 107: [Union set of a singleton] Un({X}) = X

(141) Theorem 108: [Recursive relationship for the union set] (Un(0) = 0) & ((X in M) ¥imp (Un(M) = (X + Un(M - {X}))))

(142) Theorem 109: [Recursive relationship for the union set, 2] (Un(0) = 0) & ((M /= 0) ¥imp (Un(M) = (arb(M) + Un(M - {arb(M)}))))

(143) Theorem unionset_commuter1: [Set separation and unionset formation commute] {e(x): x in Un(s)} = Un({{e(x): x in f}: f in s})

(144) Theorem unionset_commuter2: [Set formation and set enumeration commute] {e(x): x in s} = Un({{e(x)}: x in s})

(145) Theorem unionset_commuter3: [setformers whose iteration variable is bounded by 0 designate 0] {e(x): x in 0} = 0

(146) Theorem unionset_commuter4: [setformers whose iteration variable is bounded by a doubleton designate doubletons] {e(x): x in {s,T}} = {e(s),e(T)}

(147) Theorem unionset_commuter5: [setformers whose iteration variable is bounded by a singleton designate singletons] {e(x): x in {s}} = {e(s)}

(148) Theorem unionset_commuter6: [split of setformer over union-bounded iterator] {e(x): x in (s + T)} = {e(x): x in s} + {e(x): x in T}

(149) Theorem 110: [Map inversion and unionset formation commute] inv(Un(S)) = Un({inv(f): f in S})

(150) Theorem 111: [Map inversion and the union operation commute] inv(X + Y) = inv(X) + inv(Y)

(151) Theorem 112: [Range formation and unionset formation commute] range(Un(S)) = Un({range(f): f in S})

(152) Theorem 113: [Domain formation and unionset formation commute] domain(Un(S)) = Un({domain(f): f in S})

(153) Theorem 114: [Domain and range of singleton and doubleton maps] (domain({[X,Y]}) = {X}) & (range({[X,Y]}) = {Y}) & (domain({[X,Y],[U,V]}) = {X,U}) & (range({[X,Y],[U,V]}) = {Y,V})

(154) Theorem 115: [Elementary properties of identity maps] one_1_map(ident(S)) & (domain(ident(S)) = S) & (range(ident(S)) = S) & (inv(ident(S)) = ident(S)) & ((X in S) ¥imp (ident(S)~[X] = X)) & (Is_map(F) ¥imp (((domain(F) ¥incin S) ¥imp (F @ ident(S) = F)) & ((range(F) ¥incin S) ¥imp (ident(S) @ F = F))))

(155) Theorem 116: [Composition with an identity map is restriction] (Is_map(F)) ¥imp (F @ ident(S) = F ¥ON S)

(156) Theorem 117: [Composition with the inverse map] Svm(F) ¥imp (F @ inv(F) = ident(range(F)))

(157) Theorem 118: [Inverses of one-one maps] one_1_map(F) ¥imp (((F @ inv(F)) = ident(range(F))) & ((inv(F) @ F) = ident(domain(F))))

(158) Theorem 119: [Product of inverses lemma] (Is_map(F) & Is_map(G) & (domain(F) ¥incin range(G)) & Svm(F @ G)) ¥imp Svm(F)

(159) Theorem 120: [Product of Inverses] (Is_map(F) & Is_map(G)) ¥imp (inv(F @ G) = inv(G) @ inv(F))

(160) Theorem 121: [One-one-ness and singlevaluedness] one_1_map(F) ¥eq (Svm(F) & Svm(inv(F)))

(161) Theorem 122: [An inverse pair of maps must be 1-1 and must be each other's inverses] (Is_map(F) & Is_map(G) & (domain(F) = range(G)) & (range(F) = domain(G)) & (F @ G = ident(range(F))) & (G @ F = ident(domain(F)))) ¥imp (one_1_map(F) & (G = inv(F)))

(162) Theorem 123: [Single-valued map restrictions as setformers] Svm(F) ¥imp (((F ¥ON S) = {[x,F~[x]]: x in domain(F) | x in S}) & (domain(F ¥ON S) = {x: x in domain(F) | x in S}) & (range(F ¥ON S) = {F~[x]: x in domain(F) | x in S}))

(163) Theorem 124: [Image of a non-domain element] (X notin domain(F)) ¥imp ((F~[X]) = 0)

(164) Theorem 125: [Value of a restriction map] (F ¥ON S)~[X] = if X in domain(F ¥ON S) then F~[X] else 0 end if

(165) Theorem 126: [Single-valued map restrictions as setformers, 2] Svm(F) ¥imp (((F ¥ON S) = {[x,F~[x]]: x in domain(F ¥ON S)}) & (range(F ¥ON S) = {F~[x]: x in domain(F ¥ON S)}))

(166) Theorem 127: [Images under one-one maps] (one_1_map(F) & (X in domain(F)) & (Y in domain(F)) & (F~[X] = F~[Y])) ¥imp (X = Y)

(167) Theorem 128: [Composition of single-valued maps] (Svm(F) & Svm(G)) ¥imp Svm(F @ G)

(168) Theorem 129: [Images under single-valued map composition] (Svm(F) & Svm(G) & (X in domain(G)) & (range(G) ¥incin domain(F))) ¥imp ((F @ G)~[X] = F~[G~[X]])

(169) Theorem 130: [Single-valued map ranges and domains as set formers] (Svm(F) & Svm(G) & (X in domain(G)) & (range(G) ¥incin domain(F))) ¥imp (((F @ G)~[X] = F~[G~[X]]) & (F @ G = {[x,F~[G~[x]]]: x in domain(G)}) & (range(F @ G) = {F~[G~[x]]: x in domain(G)}))

(170) Theorem 131: [Image under single-valued map] (Svm(F) & (G ¥incin F) & (X in domain(G))) ¥imp (F~[X]=G~[X])

(171) Theorem 132: [Single-valued and one-one maps] Is_map(F) ¥imp (one_1_map(F) ¥eq one_1_map(inv(F)))

(172) Theorem 133: [Composition of one-one maps] (one_1_map(F) & one_1_map(G)) ¥imp one_1_map(F @ G)

(173) Theorem 134: [Elements are defined uniquely by their one-one images] Svm(F) ¥imp (one_1_map(F) ¥eq (FORALL x in domain(F), y in domain(F) | ((F~[x] = F~[y]) ¥imp (x = y))))

(174) Theorem 135: [A 1-1 map on a set $u$ induces a 1-1 map on the power set of $u$] (one_1_map(F) & (S ¥incin domain(F)) & (T ¥incin domain(F)) & (S /= T)) ¥imp (range(F ¥ON S) /= range(F ¥ON T))

(175) Theorem 136: [Union of map composition] (F + FF) @ G = (F @ G) + (FF @ G)

(176) Theorem 137: [Union of map composition, 2] G @ (F + FF) = (G @ F) + (G @ FF)

(177) Theorem 138: [Single-valued maps have 1-1 partial inverses] Svm(F) ¥imp (EXISTS h | ((domain(h) = range(F)) & (range(h) ¥incin domain(F)) & one_1_map(h)) & (FORALL x in range(F) | (F~[h~[x]] = x)))

(178) Theorem 139: [Cartesian product with a null set] (N ¥PROD 0 = 0) & (0 ¥PROD N = 0)

(179) Theorem 140: [Members of Cartesian products] (X in (S ¥PROD T)) ¥imp ((car(X) in S) & (cdr(X) in T))

(180) Theorem 141: [Subsets of Cartesian products] (Y ¥incin (S ¥PROD T)) ¥eq (Is_map(Y) & (domain(Y) ¥incin S) & (range(Y) ¥incin T))

(181) Theorem 142: [Image of Cartesian product by a singleton] (U in Z) ¥imp (((Z ¥PROD {V})~[U]) = V)

(182) Theorem 143: [Cartesian product disjointness] (A * B = 0) ¥imp ((X ¥PROD A) * (Y ¥PROD B) = 0)

(183) Theorem 144: [Cartesian modified associativity] (F = {[[[x,y],z],[x,[y,z]]]: x in A, y in B, z in C}) ¥imp (one_1_map(F) & (domain(F) = ((A ¥PROD B) ¥PROD C)) & (range(F) = (A ¥PROD (B ¥PROD C))))

(184) Theorem 145: [Cartesian modified commutativity] (F = {[[x,y],[y,x]]: x in A, y in B}) ¥imp (one_1_map(F) & (domain(F) = (A ¥PROD B)) & (range(F) = (B ¥PROD A)))

(185) Theorem 146: [Enumeration of an ordinal] (Ord(S) & X in S) ¥imp (enum(X,S) = X)

(186) Theorem 147: [Cardinality lemma] Ord(#S) & (EXISTS f in OM | (one_1_map(f) & (range(f) = S) & (domain(f) = #S))) & (not((EXISTS o in #S | (EXISTS g in OM | one_1_map(g) & (range(g) = S) & (domain(g) = o)))))

(187) Theorem 148: [Cardinality minimum theorem] S notin #S

(188) Theorem 149: ['arb' is monotone decreasing for non-empty sets of ordinals] (Ord(R) & (R incs S) & (S incs T)) ¥imp (arb(S) in arb(T) or arb(S) = arb(T) or T = 0)

(189) Theorem 150: [Axiom of choice variant] ((S /= 0) & (FORALL x in S | Ord(x))) ¥imp (FORALL x in S | x incs arb(S))

(190) Theorem 151: [Lemma for ordinal enumeration] (Ord(S) & (T ¥incin S) & (X in S) & (Y in X)) ¥imp (enum(Y,T) in enum(X,T) or enum(X,T) incs T)

(191) Theorem 152: [Subsets of an ordinal enumerate at least as rapidly as the ordinal] (Ord(S) & (T ¥incin S) & (X in S)) ¥imp (enum(X,T) incs X or enum(X,T) incs T)

(192) Theorem 153: [Subset enumeration lemma] (Ord(S) & (T ¥incin S)) ¥imp ({enum(x,T): x in S} incs T)

(193) Theorem 154: [Second subset enumeration lemma] (Ord(S) & (T ¥incin S)) ¥imp (EXISTS x ¥incin S | (Ord(x) & (T = {enum(y,T): y in x}) & (FORALL y in x, z in x | ((y /= z) ¥imp (enum(y,T) /= enum(z,T))))))

(194) Theorem 155: [Enumerability lemma] (Ord(S) & (T ¥incin S)) ¥imp (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (domain(f) ¥incin S) & (range(f) = T))

(195) Theorem 156: [Cardinality theorem] Card(#S) & Ord(#S) & (EXISTS f in OM | one_1_map(f) & (range(f) = S) & (domain(f) = #S))

(196) Theorem 157: [One-one maps are cardinality preserving] one_1_map(F) ¥imp (#range(F) = #domain(F))

(197) Theorem 158: [Equicardinality is equivalent to one-one correspondence] (EXISTS F in OM | (one_1_map(F) & (range(F) = S) & (domain(F) = T))) ¥eq (#S = #T)

(198) Theorem 159: [The enumerating ordinal of a set has the same cardinality as the set] (EXISTS o | Ord(o) & (S = {enum(x,S): x in o}) & (#o = #S))

(199) Theorem 160: [Associative Law for Cardinals] #((A ¥PROD B) ¥PROD C) = #(A ¥PROD (B ¥PROD C))

(200) Theorem 161: [Commutative Law for Cardinals] #(A ¥PROD B) = #(B ¥PROD A)

(201) Theorem 162: [Sets of cardinality 0 must be null] (#S = 0) ¥eq (S = 0)

(202) Theorem 163: [Non-null sets have cardinality greater than 0] (0 in #S) ¥eq (S /= 0)

(203) Theorem 164: [A cardinal is its own cardinality] Card(S) ¥eq (S = #S)

(204) Theorem 165: [Uniqueness of Cardinality] (Card(C) & (EXISTS f in OM | (one_1_map(f) & (range(f) = S) & domain(f) = C))) ¥imp (C = #S)

(205) Theorem 166: [The cardinality operator is idempotent] #S = ##S

(206) Theorem 167: [All cardinals are comparable] (#S in #T) or (#S = #T) or (#T in #S)

(207) Theorem 168: [Cardinal comparison is transitive] ((#S in #T) & (#T in #R)) ¥imp (#S in #R)

(208) Theorem 169: [Subsets of an ordinal have a cardinality that is no larger than the ordinal] (Ord(S) & (T ¥incin S)) ¥imp (#T ¥incin S)

(209) Theorem 170: [Subset cardinality theorem] (T ¥incin S) ¥imp (#T ¥incin #S)

(210) Theorem 171: [Single-valued mapping cannot increase cardinality] Svm(F) ¥imp (#range(F) ¥incin #domain(F))

(211) Theorem 172: [The cardinality of a map is no smaller than the cardinality of its domain] #domain(F) ¥incin #F

(212) Theorem 173: [The cardinality of a map is no smaller than the cardinality of its range] #range(F) ¥incin #F

(213) Theorem 174: [The cardinality of a single-valued map equals the cardinality of its domain] Svm(F) ¥imp (#domain(F) = #F)

(214) Theorem 175: [Cardinality of restriction maps] (Svm(F) & (domain(F) incs A)) ¥imp (#(F ¥ON A) = #A)

(215) Theorem fcn_symbol1: [Cardinality of mapformers and range formers] (#{[xx,f(xx)]: xx in s} = #s) & (#{f(xx): xx in s} ¥incin #s)

(216) Theorem 176: [Condition for existence of a single-valued map between two sets] (#S incs #T) ¥eq (T = 0 or (EXISTS f in OM | Svm(f) & (domain(f) = S) & (range(f) = T)))

(217) Theorem 177: [Domains and ranges of inverse] domain(G) = (G ¥INV_IM R) + (G ¥INV_IM (range(G) - R))

(218) Theorem 178: [Range-decomposition of a map domain] ((S * R = 0) & Svm(G)) ¥imp (((G ¥INV_IM S) * (G ¥INV_IM R)) = 0)

(219) Theorem 179: [Inverse image of a range element] (Y in range(G)) ¥imp ((G ¥INV_IM {Y}) /= 0)

(220) Theorem 180: [Range of a restricted inverse map] G ¥INV_IM R = range(inv(G) ¥ON R)

(221) Theorem 181: [Single-valued inverse image as a setformer] Svm(inv(G)) ¥imp (G ¥INV_IM R = {inv(G)~[w]: w in (R * range(G))})

(222) Theorem 182: [Inverse image of a range element] (one_1_map(G) & (Y in range(G))) ¥imp (G ¥INV_IM {Y} = {inv(G)~[Y]})

(223) Theorem 183: [Range of a map restricted to an inverse image] range(G ¥ON (G ¥INV_IM R)) incs (range(G) * R)

(224) Theorem 184: [Range of a single-valued map restricted to an inverse image] Svm(G) ¥imp (range(G ¥ON (G ¥INV_IM A)) = range(G) * A)

(225) Theorem 185: [Inverse images by a single-valued map] Svm(G) ¥imp ((G ¥ON (G ¥INV_IM A)) ¥INV_IM B = (G ¥INV_IM A) * (G ¥INV_IM B))

(226) Theorem 186: [Monotonicity of inverse image] (B ¥incin A) ¥imp ((G ¥INV_IM B) ¥incin (G ¥INV_IM A))

(227) Theorem 187: [Successive map restrictions] (((F ¥ON A) ¥ON B) = (F ¥ON (A * B)))

(228) Theorem 188: [0 is a finite cardinal] Ord(0) & Finite(0) & Card(0)

(229) Theorem 189: [A subset of a finite set is finite] (Finite(S) & (S incs T)) ¥imp Finite(T)

(230) Theorem 190: [One-one maps preserve finiteness] one_1_map(F) ¥imp ((Finite(domain(F))) ¥imp (Finite(range(F))))

(231) Theorem 191: [One-one maps preserve finiteness, 2] one_1_map(F) ¥imp (Finite(domain(F)) ¥eq Finite(range(F)))

(232) Theorem 192: [A single-valued map with finite domain has a finite range] (Svm(F) & Finite(domain(F))) ¥imp Finite(range(F))

(233) Theorem finite_image.1: [Any image of a finite set is finite] Finite({e(x): x in s0})

(234) Theorem 193: [A set is finite if and only if its cardinality is finite] Finite(S) ¥eq Finite(#S)

(235) Theorem 194: [Proper subsets of a finite set have fewer elements] (Finite(S) & (T ¥incin S) & (T /= S)) ¥imp (#T in #S)

(236) Theorem 195: [A set is finite if and only if it is not the single-valued image of any of its finite subsets] Finite(S) ¥eq (not(EXISTS f in OM | (Svm(f) & (range(f) = S) & (domain(f) ¥incin S) & (S /= domain(f)))))

(237) Theorem 196: [Members of a finite ordinal are finite] (Ord(S) & Finite(S) & (T in S)) ¥imp Finite(T)

(238) Theorem 197: [Any infinite ordinal is larger than any finite ordinal] (Ord(S) & Ord(T) & (not Finite(S)) & Finite(T)) ¥imp (T in S)

(239) Theorem 198: [Interchange lemma] ((X in S) & (Y in S)) ¥imp (EXISTS f | one_1_map(f) & (range(f) = S) & (domain(f) = S) & ((f~[X]) = Y) & ((f~[Y]) = X))

(240) Theorem 199: [Adding one element to a finite set leaves it finite] Finite(S) ¥eq Finite(S + {X})

(241) Theorem 200: [Finiteness of successor set] Finite(S) ¥imp Finite(next(S))

(242) Theorem 201: [Singletons are finite] Finite({S})

(243) Theorem 202: [Doubletons are finite] Finite({S,T})

(244) Theorem 203: [The basic infinite set is not finite] not(Finite(s_inf))

(245) Theorem 204: [Infinite cardinality theorem] not Finite(#s_inf)

(246) Theorem 205: [All finite ordinals are cardinals] (Ord(X) & Finite(X)) ¥imp Card(X)

(247) Theorem setformer_meet_join.1: [Disjunction in a setformer] {h(u,v): u in s, v in t | R(u,v) or Q(u,v)} = ({h(u,v): u in s, v in t | R(u,v)} + {h(u,v): u in s, v in t | Q(u,v)})

(248) Theorem setformer_meet_join.2: [Conjunction in a setformer] {h(u,v): u in s, v in t | R(u,v) & Q(u,v)} ¥incin ({h(u,v): u in s, v in t | R(u,v)} * {h(u,v): u in s, v in t | Q(u,v)})

(249) Theorem setformer_meet_join.3: [Implication in a setformer] (FORALL u in s, v in t | Q(u,v) ¥imp R(u,v)) ¥imp ({h(u,v): u in s, v in t | Q(u,v)} ¥incin {h(u,v): u in s, v in t | R(u,v)})

(250) Theorem setformer_meet_join.4: [Setformer cardinality inclusion, two-variable case] #{[u,v]: u in s, v in t | R(u,v)} incs #{h(u,v): u in s, v in t | R(u,v)}

(251) Theorem setformer_meet_join.5: [Setformer finiteness implication, two-variable case] Finite({[u,v]: u in s, v in t | R(u,v)}) ¥imp Finite({h(u,v): u in s, v in t | R(u,v)})

(252) Theorem 206: [The set of integers is an infinite ordinal consisting of all finite ordinals] Ord(Za) & (not Finite(Za)) & ((Card(X) & Finite(X)) ¥eq (X in Za))

(253) Theorem 207: [All integers are finite ordinals and cardinals] (X in Za) ¥imp ((X = #X) & Card(X) & Ord(X) & Finite(X))

(254) Theorem 208: [Transitivity of integer comparison] ((M in Za) & (N in Za) & (I in N)) ¥imp ((M in N) or (I in M))

(255) Theorem 209: [The set of integers is a Cardinal] Card(Za)

(256) Theorem 210: [The successor of an integer is an integer] (I in Za) ¥imp (Card(next(I)) & (next(I) in Za))

(257) Theorem 211: [The first few integers are all cardinals] Ord(0) & (0 in Za) & (1 in Za) & (2 in Za) & (3 in Za) & Card(0) & Card(1) & Card(2) & Card(3)

(258) Theorem 212: [The first few integers are all distinct] (0 in Za) & (1 in Za) & (2 in Za) & (3 in Za) & (1 /= 0) & (2 /= 0) & (3 /= 0) & (1 /= 2) & (1 /= 3) & (2 /= 3)

(259) Theorem 213: [Powerset of the null set] pow(0) = {0}

(260) Theorem 214: [Membership, singleton, and powerset] (X in L) ¥eq ({X} in pow(L))

(261) Theorem 215: [Singleton and powerset] ({0,X} ¥incin pow(X)) & ((X = {Y}) ¥imp (pow(X) = {0,X}))

(262) Theorem 216: [Disjointness of simple Cartesian products] {[x,0]: x in N} * {[x,1]: x in M} = 0

(263) Theorem 217: [First Disjoint sum lemma] ((N * M = 0) & (K * J = 0) & (#N = #K) & (#M = #J)) ¥imp (#(N + M) = #(K + J))

(264) Theorem 218: [Cardinality of Cartesian product by a singleton] (#{[x,A]: x in M} = #M)

(265) Theorem 219: [Monotonicity of arithmetic addition] ((N incs N1) and (M incs M1)) ¥imp (N ¥PLUS M incs N1 ¥PLUS M1)

(266) Theorem 220: [Disjoint sum lemma] (N * M = 0) ¥imp (N ¥PLUS M = #(N + M))

(267) Theorem 221: [Arithmetic addition lemma] N ¥PLUS M = #N ¥PLUS #M

(268) Theorem 222: [Second Disjoint sum lemma] (N * M = 0) ¥imp (#N ¥PLUS #M = #(N + M))

(269) Theorem 223: [Cardinality of Cartesian product by a singleton, 2] #({C} ¥PROD N) = #N

(270) Theorem 224: [Cardinality of Cartesian product by a singleton, 3] #(N ¥PROD {C}) = #N

(271) Theorem 225: [Cardinality of a Cartesian product union] (A /= B) ¥imp (#N ¥PLUS #M = #((N ¥PROD {A}) + (M ¥PROD {B})))

(272) Theorem 226: [Arithmetic addition lemma 2] N ¥PLUS M = N ¥PLUS #M

(273) Theorem 227: [Arithmetic addition lemma 3] N ¥PLUS M = #N ¥PLUS M

(274) Theorem 228: [Arithmetic associativity lemma] ((N * M = 0) & (N * K = 0) & (M * K = 0)) ¥imp (((N ¥PLUS M) ¥PLUS K) = #((N + M) + K))

(275) Theorem 229: [Arithmetic associativity lemma 2] ((N * M = 0) & (N * K = 0) & (M * K = 0)) ¥imp ((N ¥PLUS (M ¥PLUS K)) = #(N + (M + K)))

(276) Theorem 230: [Arithmetic multiplication lemma] (N ¥TIMES M) = (#N ¥TIMES #M)

(277) Theorem 231: [Arithmetic multiplication lemma 2] N ¥TIMES M = N ¥TIMES #M

(278) Theorem 232: [Arithmetic multiplication lemma 3] #(N ¥PROD M) = #(#N ¥PROD #M)

(279) Theorem 233: [Arithmetic multiplication lemma 4] #(N ¥PROD M) = #(N ¥PROD #M)

(280) Theorem 234: [Arithmetic multiplication lemma 5] #(N ¥PROD M) = #(#N ¥PROD M)

(281) Theorem 235: [Strict monotonicity of finite cardinality] (Finite(N) & (M ¥incin N) & (M /= N)) ¥imp (#M in #N)

(282) Theorem finite_induction1: [Induction principle for finite sets] (m1_thryvar ¥incin n) & P(m1_thryvar) & (FORALL k ¥incin m1_thryvar | ((k /= m1_thryvar) ¥imp (not P(k))))

(283) Theorem 236: [The union of finite sets is finite] (Finite(N) & Finite(M)) ¥eq Finite(N + M)

(284) Theorem 237: [Removal of an initial segment from $Za$ yields an infinite set] (N in Za) ¥imp (not Finite(Za - N))

(285) Theorem 238: [The union of finitely many finite sets is finite] ((FORALL x in S | Finite(x)) & Finite(S)) ¥imp Finite(Un(S))

(286) Theorem 239: [Finite subsets of $Un(S)$ where $S$ is a nonvoid inclusion-chain] ((S /= 0) & (FORALL u in S, v in S | (u incs v) or (v incs u)) & Finite(Y) & (Un(S) incs Y)) ¥imp (EXISTS z in S | z incs Y)

(287) Theorem 240: [An arithmetic sum is finite if its two terms are finite] Finite(N ¥PLUS M) ¥eq Finite(N + M)

(288) Theorem 241: [An arithmetic sum is finite if and only if both its terms are finite] (Finite(N) & Finite(M)) ¥eq Finite(N ¥PLUS M)

(289) Theorem 242: [acyclicity of the closure of membership] X notin Ult_membs(X)

(290) Theorem 243: [acyclicity of the closure of membership] ((X in Ult_membs({Y})) & (Y in Ult_membs({X}))) ¥imp (X = Y)

(291) Theorem 244: [existence of an $in$-maximal set in any finite set] (EXISTS v | Finite(F) ¥imp (((F = 0) or (v in F)) & ({y in (F-{v}) | v in Ult_membs({y})} = 0)))

(292) Theorem 245: [Anything times 0 is 0] (N ¥TIMES 0) = 0

(293) Theorem 246: [0 times anything is 0] (0 ¥TIMES N) = 0

(294) Theorem 247: [0 is a right additive identity] (#N ¥PLUS 0) = #N

(295) Theorem 248: [1 is a left multiplicative identity] (1 ¥TIMES N) = #N

(296) Theorem 249: [1 is a right multiplicative identity] (N ¥TIMES 1) = #N

(297) Theorem 250: [Monotonicity of multiplication] (M /= 0) ¥imp (#(N ¥PROD M) incs #N)

(298) Theorem 251: [Distributivity lemma] (A /= B) ¥imp (N ¥PLUS M = #((N ¥PROD {A}) + (M ¥PROD {B})))

(299) Theorem 252: [Commutative law for addition] (N ¥PLUS M) = (M ¥PLUS N)

(300) Theorem 253: [Commutative law for multiplication] N ¥TIMES M = M ¥TIMES N

(301) Theorem 254: [0 is bilateral additive identity] (X in Za) ¥imp (((X ¥PLUS 0) = X) & ((0 ¥PLUS X) = X))

(302) Theorem 255: [Rules for intersection and union of Cartesian products] ((A ¥PROD X) * (B ¥PROD X) = (A * B) ¥PROD X) & ((A ¥PROD X) + (B ¥PROD X) = (A + B) ¥PROD X) & (((X ¥PROD A) * (X ¥PROD B)) = X ¥PROD (A * B)) & (((X ¥PROD A) + (X ¥PROD B)) = X ¥PROD (A + B))

(303) Theorem 256: [Cartesian product monotonicity] ((A ¥incin B) & (C ¥incin D)) ¥imp ((A ¥PROD C) ¥incin (B ¥PROD D))

(304) Theorem 257: [Intersection of Cartesian products] ((A ¥PROD C) * (B ¥PROD D) = (A * B) ¥PROD (C * D))

(305) Theorem 258: [Associativity of arithmetic addition] N ¥PLUS (M ¥PLUS K) = (N ¥PLUS M) ¥PLUS K

(306) Theorem 259: [Associativity of arithmetic multiplication] N ¥TIMES (M ¥TIMES K) = (N ¥TIMES M) ¥TIMES K

(307) Theorem 260: [Arithmetic distributive law] N ¥TIMES (M ¥PLUS K) = (N ¥TIMES M) ¥PLUS (N ¥TIMES K)

(308) Theorem 261: [The arithmetic product of two finite sets is finite] (Finite(N) & Finite(M)) ¥imp Finite(N ¥TIMES M)

(309) Theorem 262: [The Cartesian product of two finite sets is finite] (Finite(N) & Finite(M)) ¥imp Finite(N ¥PROD M)

(310) Theorem 263: [If the product of two nonzero terms is finite, so are the terms] ((Finite(N) & Finite(M)) or N = 0 or M = 0) ¥eq Finite(N ¥TIMES M)

(311) Theorem 264: [A set is finite if and only if its powerset is finite] Finite(N) ¥eq Finite(pow(N))

(312) Theorem 265: [Cantor's Theorem] #N in #pow(N)

(313) Theorem 266: (S ¥incin pow(Un(S))) & ((Finite(Un(S)) & (X ¥incin S)) ¥imp Finite(X))

(314) Theorem 267: [Arithmetic subtraction principle] N ¥MINUS N = 0

(315) Theorem 268: [0 is right identity for arithmetic subtraction] N ¥MINUS 0 = #N

(316) Theorem 269: [Disjoint additivity lemma] ((N * M = 0) & (N2 * M2 = 0) & (#N = #N2) & (#M = #M2)) ¥imp (#(N + M) = #(N2 + M2))

(317) Theorem 270: [Excess subtraction lemma] (Ord(Y) & (X in Y)) ¥imp ((X ¥MINUS Y) = 0)

(318) Theorem 271: [Subtraction lemma] (M ¥incin N) ¥imp (#N = #M ¥PLUS (N ¥MINUS M))

(319) Theorem 272: [Subtraction in the non-negative case] (M ¥incin N) ¥imp (#N = (N ¥MINUS M) ¥PLUS M)

(320) Theorem 273: [Subtraction lemma 2] (#M in #N or #M = #N) ¥imp (#N = #M ¥PLUS (#N ¥MINUS #M))

(321) Theorem 274: [Union set as an upper bound] (FORALL x in S | x ¥incin Un(S)) & ((FORALL x in S | x ¥incin T) ¥imp (Un(S) ¥incin T))

(322) Theorem 275: (Un(S) = 0) ¥eq ((S = 0) or (S = {0}))

(323) Theorem 276: [Monotonicity of the union-set operator] (S ¥incin T) ¥imp (Un(S) ¥incin Un(T))

(324) Theorem 277: [Binary and unary union operations commute] Un(X + Y) = Un(X) + Un(Y)

(325) Theorem 278: [Equivalent characterizations of transitive sets] (S ¥incin pow(S)) ¥eq (Un(S) ¥incin S)

(326) Theorem 279: (Un(S) incs Un({c: c in S | H notin c})) & (H notin Un({c: c in S | H notin c}))

(327) Theorem 280: [The union of a set of ordinals is an ordinal] (FORALL x in S | Ord(x)) ¥imp Ord(Un(S))

(328) Theorem 281: [Division monotonicity lemma] (M /= 0) ¥imp ((N ¥OVER M) ¥incin N)

(329) Theorem 282: [Extended division monotonicity lemma] ((M /= 0) & (N in Za)) ¥imp (((N ¥OVER M) in Za) & ((N ¥OVER M) ¥incin N))

(330) Theorem 283: [Closure properties of arithmetic operators] ((N in Za) & (M in Za)) ¥imp ((N ¥PLUS M in Za) & (N ¥TIMES M in Za) & (N ¥MINUS M in Za))

(331) Theorem 284: [Strict monotonicity of addition] ((M in Za) & (N in Za) & (N /= 0)) ¥imp (M in (M ¥PLUS N))

(332) Theorem 285: [Only the nullset has cardinality zero] (#N = 0) ¥imp (N = 0)

(333) Theorem 286: [Strict monotonicity of addition] ((M in Za) & (N in Za) & (K in N)) ¥imp (M ¥PLUS K in M ¥PLUS N)

(334) Theorem 287: [Strict monotonicity of addition] ((M in Za) & (N in Za) & (K in N)) ¥imp (M ¥PLUS K in M ¥PLUS N)

(335) Theorem 288: [Strict monotonicity of addition, 2] ((M in Za) & (N in Za) & (K in N)) ¥imp (K ¥PLUS M in N ¥PLUS M)

(336) Theorem 289: [Cancellation] ((M in Za) & (N in Za) & (K in Za) & (M ¥PLUS K = N ¥PLUS K)) ¥imp (M = N)

(337) Theorem 290: [Monotonicity of addition] (M ¥incin N) ¥imp ((M ¥PLUS K) ¥incin (N ¥PLUS K))

(338) Theorem 291: [Monotonicity of addition, 2] Card(M) ¥imp ((M ¥incin (I ¥PLUS M)) & (M ¥incin (M ¥PLUS I)))

(339) Theorem 292: [Monotonicity of addition, 3] (M in Za) ¥imp ((M ¥incin (I ¥PLUS M)) & (M ¥incin (M ¥PLUS I)) & ((M ¥PLUS I) notin M) & ((I ¥PLUS M) notin M))

(340) Theorem 293: [Monotonicity of multiplication] (M ¥incin N) ¥imp ((M ¥TIMES K) ¥incin (N ¥TIMES K))

(341) Theorem 294: [Strict monotonicity of integer multiplication] ((M in N) & (N in Za) & (K in Za) & (K /= 0)) ¥imp ((M ¥TIMES K) in (N ¥TIMES K))

(342) Theorem 295: [The sum of non-negative integers is at least as big at each addend] ((X in Za) & (Y in Za)) ¥imp ((X ¥PLUS Y) notin Y)

(343) Theorem 296: [Strict monotonicity of addition] ((M in Za) & (N in Za) & (K in Za)) ¥imp (((M ¥PLUS K) ¥incin (N ¥PLUS K)) ¥eq (M ¥incin N))

(344) Theorem 297: [Strict monotonicity of addition] ((M in Za) & (N in M) & (K in Za)) ¥imp ((N ¥PLUS K) in (M ¥PLUS K))

(345) Theorem 298: [Subtraction Lemma] (N in Za) ¥imp ((N ¥MINUS M) in Za)

(346) Theorem 299: [Strict monotonicity of subtraction] ((N in Za) & (M in Za) & (K in N) & (M incs N)) ¥imp ((M ¥MINUS N) in (M ¥MINUS K))

(347) Theorem 300: [Monotonicity of subtraction] (K incs M) ¥imp ((K ¥MINUS N) incs (M ¥MINUS N))

(348) Theorem 301: [Monotonicity of subtraction, 2] (M incs N) ¥imp ((K ¥MINUS N) incs (K ¥MINUS M))

(349) Theorem 302: [Strict monotonicity of subtraction, 2] ((N in Za) & (M in Za) & (K in M) & (K incs N)) ¥imp ((K ¥MINUS N) in (M ¥MINUS N))

(350) Theorem 303: [Addition-subtraction commutativity] ((M in Za) & (N in Za) & (K in Za) & (N incs M) & ((N ¥MINUS M) incs K)) ¥imp ((N incs (M ¥PLUS K)) & (N ¥MINUS (M ¥PLUS K) = (N ¥MINUS M) ¥MINUS K))

(351) Theorem 304: [Subtraction reverses addition] ((M in Za) & (N in Za)) ¥imp ((M ¥PLUS N) ¥MINUS N = M)

(352) Theorem 305: [Singletons have one element] #{S} = {0}

(353) Theorem 306: ({X} incs Y) ¥imp (#Y in 2)

(354) Theorem 307: (#X = 1) ¥eq (X = {arb(X)})

(355) Theorem 308: [Integer division with remainder] ((M in Za) & (N in Za) & (N /= 0)) ¥imp (((M ¥OVER N) in Za) & (M incs ((M ¥OVER N) ¥TIMES N)) & ((M ¥MOD N) in N))

(356) Theorem 309: [If an integer product is zero, one of its factors is 0] (N ¥TIMES M = 0) ¥eq (N = 0 or M = 0)

(357) Theorem 310: [Subtraction monotonicity lemma] (N incs M) ¥imp ((N ¥MINUS K) incs (M ¥MINUS K))

(358) Theorem 311: [Cardinality of set difference] (Finite(N) & (N incs M)) ¥imp (#(N - M) = #(#N - #M))

(359) Theorem 312: [Strong monotonicity of integer addition] ((N in Za) & (M in Za) & (K in Za)) ¥imp ((N incs M) ¥eq ((N ¥PLUS K) incs (M ¥PLUS K)))

(360) Theorem 313: [Addition reverses subtraction] (N incs M) ¥imp (#N = #M ¥PLUS #(N - M))

(361) Theorem 314: [Addition-subtraction commutativity, 2] ((N in Za) & (M in Za) & (K in Za) & (N incs M)) ¥imp ((N ¥PLUS K) ¥MINUS (M ¥PLUS K) = N ¥MINUS M)

(362) Theorem 315: [Addition-subtraction lemma] ((N in Za) & (M in Za)) ¥imp (N = (M ¥PLUS (N ¥MINUS M)) or N = (M ¥MINUS (M ¥MINUS N)))

(363) Theorem 316: [The successor integer as a sum] (N ¥PLUS 1) = #next(N)

(364) Theorem 317: [The successor integer as a sum, 2] (N in Za) ¥imp ((next(N) in Za) & ((N ¥PLUS 1) = next(N)))

(365) Theorem 318: [To witness that $n$ sets are different, fewer than $n$ elements suffice] (Finite(F) & (F /= 0)) ¥imp (EXISTS d ¥incin Un(F) | (#d in #F) & (FORALL w in F, y in F | (w * d = y * d) ¥imp (w = y)))

(366) Theorem 319: [To witness that $n$ sets are different, fewer than $n$ elements suffice, 2] (Finite(F) & (F /= 0)) ¥imp ({d ¥incin Un(F) | (#d in #F) & (#{w * d : w in F} = #F)} /= 0)

(367) Theorem 320: [The union set of a finite collection of integers is an integer] ((M ¥incin Za) & Finite(M)) ¥imp (((M /= 0) ¥imp (Un(M) in M)) & (Un(M) in Za))

(368) Theorem 321: [The union set of a set of integers is the least upper bound of its elements] (M in Za) ¥imp (((Un(M) in Za) & (Un(M) ¥incin M)) & ((M /= 0) ¥imp (Un(M) in M)))

(369) Theorem 322: [Every nonzero integer has a predecessor] ((M in Za) & (M /= 0)) ¥imp (M = (Un(M) ¥PLUS 1))

(370) Theorem 323: [The sum of integers as the union of smaller sums] ((X in Za) & (Y in Za)) ¥imp ((X ¥PLUS Y) = X + {(X ¥PLUS u): u in Y})

(371) Theorem 324: [The sum of integers as the union of smaller sums, 2] ((X in Za) & (Y in Za)) ¥imp ((X ¥PLUS Y) = X + {(u ¥PLUS X): u in Y})

(372) Theorem 325: [Subtraction reverses addition] ((X in Za) & (Y in Za) & (Y ¥incin X)) ¥imp (X = Y ¥PLUS (X ¥MINUS Y))

(373) Theorem 326: [Subtraction monotonicity lemma, 2] ((X in Za) & (Y in Za) & (U in (X ¥PLUS Y)) & (Y /= 0)) ¥imp ((U ¥MINUS X) in Y)

(374) Theorem 327: [The integer difference as a set of smaller differences] ((N in Za) & (M in Za)) ¥imp ((N ¥MINUS M) = {k ¥MINUS M: k in N | M ¥incin k})

(375) Theorem 328: [The integer difference as a set of smaller differences] ((N in Za) & (M in Za)) ¥imp ((N ¥MINUS M) = {k in Za | (k ¥PLUS M) in N})

(376) Theorem 329: ((J in Za - X) & (FORALL i | (next(i) in X) ¥imp (i in X))) ¥imp ({h in Za | (h notin J) & (h in X)} = 0)

(377) Theorem 330: ((X ¥incin Za) & (FORALL i | (next(i) in X) ¥imp (i in X))) ¥eq (X in next(Za))

(378) Theorem 331: (({X,Y} ¥incin next(Za)) & (#X in next(Y))) ¥imp (((X = Y) & (Y = Za)) or (X in (next(Y) * Za)))

(379) Theorem unsigned_integer_bynd.0: [Every finite set of unsigned integers has an upper bound] (bynd_thryvar in Za) & (FORALL i in Za | (Q1(i) ¥imp (i in bynd_thryvar)))

(380) Theorem unsigned_integer_bynd.1: [Every finite set of unsigned integers has an upper bound] (bynd_thryvar in Za) & (Za incs bynd_thryvar) & Ord(bynd_thryvar) & (FORALL i in Za | (Q1(i) ¥imp (i in bynd_thryvar))) & (not Finite(Za - bynd_thryvar))

(381) Theorem cauchyseq_lemma.1: (not Finite({i * j : i in (Za - n0), j in (Za - n0) | R(i,j)}))

(382) Theorem 332: [Ordinal member maximum and minimum] (Ord(U) & (S in U) & (T in U)) ¥imp ((S + T in U) & (S * T in U))

(383) Theorem 333: [Integer member maximum and minimum] ((S in Za) & (T in Za)) ¥imp ((S + T in Za) & (S * T in Za))

(384) Theorem cauchyseq_lemma2.1: (EXISTS k in Za | (FORALL i in Za, j in Za | ((i incs k) & (j incs k)) ¥imp (not (R(i,j)))))

(385) Theorem 334: ((N in Za) & (S ¥incin N) & (#S = N)) ¥imp (S = N)

(386) Theorem 335: [Finite sequences are single-valued maps with integer domains] (F in Fin_seqs(S)) ¥eq (Svm(F) & (domain(F) in Za) & (range(F) ¥incin S))

(387) Theorem 336: [Other properties of finite sequences] (F in Fin_seqs(S)) ¥imp ((domain(F) = #domain(F)) & (domain(F) = #F) & (#F in Za) & Finite(F))

(388) Theorem 337: [Two single-valued functions with common domain are equal if all their values are equal] (Svm(F) & Svm(G) & (domain(F) = S) & (domain(G) = S) & (FORALL n0 in S | F~[n0] = G~[n0])) ¥imp (F = G)

(389) Theorem 338: [Two functions from a collection of single-valued functions with common domain are equal if all their values are equal] ((S /= 0) & (FORALL h in Mapset | ((domain(h) = S) & Svm(h)))) ¥imp ((FORALL n in S | ((F in Mapset) & (G in Mapset) & (F~[n] = G~[n]))) ¥imp (F = G))

(390) Theorem 339: [The shift-map of an integer is single-valued and maps Za into Za] ((M in Za) & (N in Za)) ¥imp (Svm(Shift(M)) & (domain(Shift(M)) = Za) & (range(Shift(M)) ¥incin Za) & (Shift(M)~[N] = M ¥PLUS N))

(391) Theorem 340: [Composition of shift-maps yields a shift-map] ((M in Za) & (N in Za)) ¥imp (Shift(M) @ Shift(N) = Shift(M ¥PLUS N))

(392) Theorem 341: [Double shifting can be emulated by a single shift] ((M in Za) & (N in Za)) ¥imp (shifted_seq(shifted_seq(F,M),N) = shifted_seq(F,M ¥PLUS N))

(393) Theorem 342: [Shift(0) is the identity map on Za] (Shift(0) = {[n,n]: n in Za}) & ((Is_map(F) & (domain(F) ¥incin Za)) ¥imp (F @ Shift(0) = F))

(394) Theorem 343: [Shift-by-0 is the identity map on sequences] (Is_map(F) & (domain(F) ¥incin Za)) ¥imp (shifted_seq(F,0) = F)

(395) Theorem 344: [Form of a shifted sequence] ((M in Za) & (domain(F) ¥incin Za)) ¥imp (shifted_seq(F,M) = {[car(x) ¥MINUS M,cdr(x)]: x in F | car(x) incs M})

(396) Theorem 345: [Properties of finite and shifted finite sequences] ((F in Fin_seqs(S)) & (G in Fin_seqs(S))) ¥imp (Svm({[car(x) ¥PLUS #F, cdr(x)]: x in G}) & (domain(F) * domain({[car(x) ¥PLUS #F, cdr(x)]: x in G}) = 0))

(397) Theorem 346: ((F in Fin_seqs(S)) & (M in Za)) ¥imp (((F ¥ON M) in Fin_seqs(S)) & (shifted_seq(F,M) in Fin_seqs(S)) & (domain(shifted_seq(F,M)) = (#F ¥MINUS M)))

(398) Theorem 347: [Concatenation of finite sequences] ((F in Fin_seqs(S)) & (G in Fin_seqs(S))) ¥imp ((concat(F,G) in Fin_seqs(S)) & (domain(concat(F,G)) = domain(F) ¥PLUS domain(G)) & (range(concat(F,G)) = range(F) + range(G))) & ((U in domain(F) ¥PLUS domain(G)) ¥imp (concat(F,G)~[U] = if U in domain(F) then F~[U] else G~[U ¥MINUS domain(F)] end if))

(399) Theorem 348: [$0$ is bilateral unit for sequence concatenation] (F in Fin_seqs(S)) ¥imp ((concat(F,0) = F) & (concat(0,F) = F))

(400) Theorem 349: [Associativity of sequence concatenation] ((F in Fin_seqs(S)) & (G in Fin_seqs(S)) & (H in Fin_seqs(S))) ¥imp (concat(F,concat(G,H)) = concat(concat(F,G),H))

(401) Theorem 350: [Concatenation of shifted sequences] ((F in Fin_seqs(S)) & (M in domain(F))) ¥imp ((shifted_seq(F,M) in Fin_seqs(S)) & (F = concat((F ¥ON M), shifted_seq(F,M))))

(402) Theorem subseq.1: (g = (f @ h_thryvar)) & one_1_map(h_thryvar) & (domain(h_thryvar) in next(Za)) & (range(h_thryvar) ¥incin domain(f)) & (FORALL i in domain(h_thryvar), j in domain(h_thryvar) | (i in j) ¥imp ((h_thryvar~[i]) in (h_thryvar~[j])))

(403) Theorem subseq.2: {i in domain(h_thryvar) | i ¥nincin (h_thryvar~[i])} = 0

(404) Theorem subseq.3: Svm(g) & (g ¥incin (domain(f) ¥PROD range(f))) & (domain(g) in (next(Za) * next(domain(f))))

(405) Theorem subseq.4: (domain(h_thryvar) /= Za) ¥imp Finite(g)

(406) Theorem 351: ((F in Fin_seqs(S)) & (G in Subseqs(F))) ¥imp ((G in Fin_seqs(S)) & (domain(G) in next(domain(F))))

(407) Theorem 352: (M in Za) ¥imp (shifted_seq(F,M) in Subseqs(F))

(408) Theorem 353: ((F in Fin_seqs(S)) & (M in Za)) ¥imp ((shifted_seq(F,M) in Fin_seqs(S)) & (domain(shifted_seq(F,M)) in next(domain(F))))

(409) Theorem 354: ((domain(F) = Za) & (M in Za)) ¥imp (domain(shifted_seq(F,M)) = Za)

(410) Theorem ordval_fcn1: [An ordinal-valued function attains its minimum] (rng_thryvar /= 0) & (FORALL x in rng_thryvar, y in s | f(x) ¥incin f(y)) & (rng_thryvar = {x: x in s | f(x) = arb({f(u): u in s})})

(411) Theorem ordval_fcn2: rng_thryvar ¥incin s

(412) Theorem ordval_fcn3: (FORALL x in rng_thryvar, y in s | (f(x) = f(y)) ¥imp (y in rng_thryvar))

(413) Theorem well_founded_set.0: ((X in s) & (Y in s)) ¥imp ((not(arg1_bef_arg2(X,Y) & arg1_bef_arg2(Y,X))) & (not arg1_bef_arg2(X,X)))

(414) Theorem well_founded_set.00: Minrel1_thryvar(T) = if (T ¥incin s) & (T /= 0) then arb({m: m in T | (FORALL y in T | (not arg1_bef_arg2(y,m)))}) else s end if

(415) Theorem well_founded_set.0a: ((T ¥incin s) & (T /= 0)) ¥imp ((Minrel1_thryvar(T) in T) & (FORALL y in T | (not arg1_bef_arg2(y,Minrel1_thryvar(T)))))

(416) Theorem well_founded_set.0b: [Monotonicity of $Minrel1_thryvar$] ((R ¥incin s) & (T ¥incin R) & (T /= 0)) ¥imp (not(arg1_bef_arg2(Minrel1_thryvar(T),Minrel1_thryvar(R))))

(417) Theorem well_founded_set.0c: ((S incs T) & (T /= 0)) ¥imp (Minrel1_thryvar(T) in T)

(418) Theorem well_founded_set.1a: ordenm_thryvar(X) = Minrel1_thryvar(s - {ordenm_thryvar(y): y in X})

(419) Theorem well_founded_set.1: (not(s ¥incin {ordenm_thryvar(y): y in X})) ¥imp ((ordenm_thryvar(X) in (s - {ordenm_thryvar(y): y in X})) & (FORALL y in (s - {ordenm_thryvar(y): y in X}) | not(arg1_bef_arg2(y,ordenm_thryvar(X)))))

(420) Theorem well_founded_set.2: (s ¥incin {ordenm_thryvar(y): y in X}) ¥eq (ordenm_thryvar(X) = s)

(421) Theorem well_founded_set.3: (ordenm_thryvar(X) /= s) ¥imp (ordenm_thryvar(X) in s)

(422) Theorem well_founded_set.5: [Ordinal enumeration is monotone on ordinals] (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & arg1_bef_arg2(ordenm_thryvar(U),ordenm_thryvar(V))) ¥imp (U in V)

(423) Theorem well_founded_set.6: {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} ¥incin {ordenm_thryvar(x): x in V}

(424) Theorem well_founded_set.7: [Well-ordering is initially 1-1] (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s) & (U /= V)) ¥imp (ordenm_thryvar(U) /= ordenm_thryvar(V))

(425) Theorem well_founded_set.8: (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o})))

(426) Theorem well_founded_set.9: (ord_thryvar in next(#pow(s))) & Ord(ord_thryvar) & (s = {ordenm_thryvar(x): x in ord_thryvar}) & (FORALL x in ord_thryvar | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in ord_thryvar})

(427) Theorem well_ordered_set.0: ((X in s) & (Y in s)) ¥imp (arg1_bef_arg2(X,Y) or arg1_bef_arg2(Y,X) or (X = Y))

(428) Theorem well_ordered_set.0a: ((T ¥incin s) & (T /= 0)) ¥imp (EXISTS x in T | (FORALL y in T | (not arg1_bef_arg2(y,x))))

(429) Theorem well_ordered_set.100: (FORALL x,y | ((x in s) & (y in s)) ¥imp ((not (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,x))) & (not arg1_bef_arg2(x,x)))) & (FORALL x | (not(s ¥incin {ordenm_thryvar(y): y in x})) ¥imp ((ordenm_thryvar(x) in (s - {ordenm_thryvar(y): y in x})) & (FORALL y in (s - {ordenm_thryvar(y): y in x}) | not(arg1_bef_arg2(y,ordenm_thryvar(x)))))) & (FORALL x | (s ¥incin {ordenm_thryvar(y): y in x}) ¥eq (ordenm_thryvar(x) = s)) & (FORALL x | (ordenm_thryvar(x) /= s) ¥imp (ordenm_thryvar(x) in s)) & (FORALL u, v | (Ord(u) & Ord(v) & (ordenm_thryvar(u) /= s) & arg1_bef_arg2(ordenm_thryvar(u),ordenm_thryvar(v))) ¥imp (u in v)) & (FORALL v | {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(v))} ¥incin {ordenm_thryvar(x): x in v}) & (FORALL u, v | (Ord(u) & Ord(v) & (ordenm_thryvar(u) /= s) & (ordenm_thryvar(v) /= s) & (u /= v)) ¥imp (ordenm_thryvar(u) /= ordenm_thryvar(v))) & (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))) & (FORALL x | ordenm_thryvar(x) = Minrel2_thryvar(s - {ordenm_thryvar(y): y in x})) & (FORALL t | Minrel2_thryvar(t) = if (t ¥incin s) & (t /= 0) then arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) else s end if)

(429+) Theorem well_ordered_set.10: ((X in s) & (Y in s)) ¥imp ((arg1_bef_arg2(X,Y) ¥imp (not arg1_bef_arg2(Y,X))) & (not arg1_bef_arg2(X,X)))

(430) Theorem well_ordered_set.1: (not(s ¥incin {ordenm_thryvar(y): y in X})) ¥imp ((ordenm_thryvar(X) in (s - {ordenm_thryvar(y): y in X})) & (FORALL y in (s - {ordenm_thryvar(y): y in X}) | not(arg1_bef_arg2(y,ordenm_thryvar(X)))))

(431) Theorem well_ordered_set.2: ((s ¥incin {ordenm_thryvar(y): y in X}) ¥eq (ordenm_thryvar(X) = s))

(432) Theorem well_ordered_set.3: ((ordenm_thryvar(X) /= s) ¥imp (ordenm_thryvar(X) in s))

(433) Theorem well_ordered_set.5a: (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & arg1_bef_arg2(ordenm_thryvar(U),ordenm_thryvar(V))) ¥imp (U in V)

(434) Theorem well_ordered_set.6a: ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} ¥incin {ordenm_thryvar(x): x in V})

(435) Theorem well_ordered_set.7: ((Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s) & (U /= V)) ¥imp (ordenm_thryvar(U) /= ordenm_thryvar(V)))

(436) Theorem well_ordered_set.8: (EXISTS o | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o})))

(437) Theorem well_ordered_set.8a: ordenm_thryvar(X) = Minrel2_thryvar(s - {ordenm_thryvar(y): y in X})

(438) Theorem well_ordered_set.8b: Minrel2_thryvar(T) = if (T ¥incin s) & (T /= 0) then arb({m: m in T | (FORALL y in T | (not arg1_bef_arg2(y,m)))}) else s end if

(439) Theorem well_ordered_set.5: [Any well-ordering is isomorphic to an ordinal enumeration] (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s)) ¥imp (arg1_bef_arg2(ordenm_thryvar(U),ordenm_thryvar(V)) ¥eq (U in V))

(440) Theorem well_ordered_set.6: (Ord(V) & (ordenm_thryvar(V) /= s)) ¥imp ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} = {ordenm_thryvar(x): x in V})

(441) Theorem well_ordered_set.9: (Ord(V) & (ordenm_thryvar(V) /= s)) ¥imp ( one_1_map({[x,ordenm_thryvar(x)]: x in V}) & (domain({[x,ordenm_thryvar(x)]: x in V}) = V) & (range({[x,ordenm_thryvar(x)]: x in V}) = {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))}) & ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} = {ordenm_thryvar(x): x in V}))

(442) Theorem inh_well_founded_set1: ((T ¥incin sp) & (T /= 0)) ¥imp (EXISTS w in T | (FORALL v in T | (not arg1_bef_arg2(displace(v),displace(w)))))

(443) Theorem product_order_1: [The first component of any member of a Cartesian product of ordinals is an ordinal] (X in o1 ¥PROD o2) ¥imp Ord(car(X))

(444) Theorem product_order_2: [The second component of any member of a Cartesian product of ordinals is an ordinal] (X in o1 ¥PROD o2) ¥imp Ord(cdr(X))

(445) Theorem product_order_3: [The maximum of the components of any member of a Cartesian product of ordinals is an ordinal] (X in o1 ¥PROD o2) ¥imp Ord(car(X) + cdr(X))

(446) Theorem product_order_4: ((X in o1 ¥PROD o2) & (Y in o1 ¥PROD o2)) ¥imp ((Ord1p2_thryvar(X,Y) or Ord1p2_thryvar(Y,X) or X = Y) & (not Ord1p2_thryvar(X,X)))

(447) Theorem product_order_5: ((X in o1 ¥PROD o2) & (Y in o1 ¥PROD o2) & (Z in o1 ¥PROD o2) & Ord1p2_thryvar(X,Y) & Ord1p2_thryvar(Y,Z)) ¥imp Ord1p2_thryvar(X,Z)

(448) Theorem product_order_6: ((T ¥incin (o1 ¥PROD o2)) & (T /= 0)) ¥imp (EXISTS x in T | (FORALL y in t | (Ord1p2_thryvar(x,y) or (x = y))))

(449) Theorem 355: ['One-more' lemma] (not Finite(S)) ¥imp (#S = #(S + {C}))

(450) Theorem 356: ['Few-more' lemma] ((not Finite(S)) & Finite(T)) ¥imp (#S = #(S + T))

(451) Theorem 357: [Any infinite cardinal is a limit ordinal] ((not Finite(S)) & (X in #S)) ¥imp (X + {X} in #S)

(452) Theorem 358: [If ordinal $S$ dominates the members of an ordinal $T$, $#S$ is no less than $#T$] (Ord(S) & Ord(T) & (not Finite(S)) & (FORALL u in T | #u in #S)) ¥imp (#T ¥incin #S)

(453) Theorem 359: [The cardinality of a non-null Cartesian product is at least the cardinality of its first factor] (T /= 0) ¥imp (#S ¥incin #(S ¥PROD T))

(454) Theorem 360: (Ord(O1) & Ord(O2)) ¥imp (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (O1 ¥PROD O2)) & (FORALL x in domain(f), y in domain(f) | (x in y) ¥eq (((car(f~[x]) + cdr(f~[x])) in (car(f~[y]) + cdr(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) in car(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) = car(f~[y])) & (cdr(f~[x]) in cdr(f~[y]))))))

(455) Theorem 361: (Card(O1) & Card(O2) & (not Finite(O1 + O2))) ¥imp (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (O1 ¥PROD O2)) & (FORALL x in domain(f) | (EXISTS y in (O1 + O2) | range(f ¥ON x) ¥incin (y ¥PROD y))))

(456) Theorem 362: [Cardinal Doubling Theorem] (not Finite(S)) ¥imp (#(S ¥PROD {0,1}) = #S)

(457) Theorem 363: [The sum of two infinite quantities is their maximum] (not Finite(S)) ¥imp ((S ¥PLUS T) = #S + #T)

(458) Theorem 364: [The cardinality of the union of two infinite quantities is the cardinality of the larger] (not Finite(S)) ¥imp (#(S + T) = #S + #T)

(459) Theorem 365: [Cardinal Square Theorem] (not Finite(S)) ¥imp (#(S ¥PROD S) = #S)

(460) Theorem 366: [Reduced form of an integer pair] ((M in Za) & (N in Za)) ¥imp ((Red([M,N]) in Si) & (M * N in Za))

(461) Theorem 367: [Embedding of integers in the signed integers] (N in Za) ¥imp (([N,0] in Si) & ([0,N] in Si))

(462) Theorem 368: [Basic properties of the signed integers 0,1, and -1] ([0,0] in Si) & ([1,0] in Si) & ([0,1] in Si) & ([1,0] /= [0,0]) & ([0,1] /= [0,0]) & ([1,0] /= [0,1])

(463) Theorem 369: [The signed integers as integer pairs with one component equal to 0] (N in Si) ¥imp ((N = [car(N),cdr(N)]) & (car(N) = 0 or cdr(N) = 0) & (car(N) in Za) & (cdr(N) in Za) & (Red(N) = N) & (car(N) * cdr(N) = 0))

(464) Theorem 370: [Signed integers as integer pairs, 2] (N in Si) ¥imp ((N = [car(N),0] or N = [0,cdr(N)]) & (car(N) = 0 or cdr(N) = 0) & (car(N) in Za) & (cdr(N) in Za) & (Red(N) = N) & (car(N) * cdr(N) = 0))

(465) Theorem 371: ((N in Si) & (M in Si)) ¥imp ((N ¥S_PLUS M in Si) & (N ¥S_TIMES M in Si))

(466) Theorem 372: [Sign reversal and subtraction for signed integers] ((N in Si) & (M in Si)) ¥imp ((S_Rev(M) in Si) & (N ¥S_MINUS M in Si))

(467) Theorem 373: [Reduction of an integer pair $(n,n)$ always gives the signed 0 value] (N in Za) ¥imp (Red([N,N]) = [0,0])

(468) Theorem 374: [Reduction removes any common value added to the components of an integer pair] ((J in Za) & (K in Za) & (M in Za)) ¥imp (Red([J ¥PLUS M,K ¥PLUS M]) = Red([J,K]))

(469) Theorem 375: [The intersection of two unsigned integers is the smaller of the two] ((N in Za) & (M in Za)) ¥imp (((N * M) in Za) & ((N * M) in {N,M}) & ((N ¥MINUS (N * M)) in Za) & ((M ¥MINUS (N * M)) in Za))

(470) Theorem 376: [The signed sum of two integer pairs is the sum of the first with the reduced form of the second] ((J in Za) & (K in Za) & (N in Za) & (M in Za)) ¥imp ([J,K] ¥S_PLUS [N,M] = [J,K] ¥S_PLUS Red([N,M]))

(471) Theorem 377: [The sum of a signed integer and an integer pair remains the same if the pair is reduced] ((K in Si) & (N in Za) & (M in Za)) ¥imp (K ¥S_PLUS [N,M] = K ¥S_PLUS Red([N,M]))

(472) Theorem 378: [The product of a signed integer and an integer pair remains the same if the pair is reduced] ((K in Si) & (N in Za) & (M in Za)) ¥imp (K ¥S_TIMES [N,M] = K ¥S_TIMES Red([N,M]))

(473) Theorem 379: [Commutativity lemma for signed integers] ((K in Si) & (N in Za) & (M in Za)) ¥imp (K ¥S_PLUS [N,M] = [N,M] ¥S_PLUS K)

(474) Theorem 380: [Commutativity lemma for signed integers, 2] ((J in Za) & (K in Za) & (N in Za) & (M in Za)) ¥imp ([J,K] ¥S_PLUS [N,M] = [N,M] ¥S_PLUS [J,K])

(475) Theorem 381: [Commutative law for signed integer addition] ((N in Si) & (M in Si)) ¥imp (N ¥S_PLUS M = M ¥S_PLUS N)

(476) Theorem 382: [The sum of two integer pairs remains the same if the first is reduced] ((J in Za) & (K in Za) & (N in Za) & (M in Za)) ¥imp ([J,K] ¥S_PLUS [N,M] = Red([J,K]) ¥S_PLUS [N,M])

(477) Theorem 383: [The sum of two integer pairs remains the same if both are reduced] ((J in Za) & (K in Za) & (N in Za) & (M in Za)) ¥imp ([J,K] ¥S_PLUS [N,M] = Red([J,K]) ¥S_PLUS Red([N,M]))

(478) Theorem 384: [Commutative law for signed integer multiplication] ((N in Si) & (M in Si)) ¥imp (N ¥S_TIMES M = M ¥S_TIMES N)

(479) Theorem 385: [Associative law for signed integer addition] ((K in Si) & (N in Si) & (M in Si)) ¥imp (N ¥S_PLUS (M ¥S_PLUS K) = (N ¥S_PLUS M) ¥S_PLUS K)

(480) Theorem 386: [Distributive law for signed integers] ((K in Si) & (N in Si) & (M in Si)) ¥imp (N ¥S_TIMES (M ¥S_PLUS K) = (N ¥S_TIMES M) ¥S_PLUS (N ¥S_TIMES K))

(481) Theorem 387: [Reduction of a pair $(N,0)$ gives $(N,0)$] (N in Za) ¥imp (Red([N,0]) = [N,0])

(482) Theorem 388: [Embedding of Integers in Signed Integers] ((N in Za) & (M in Za)) ¥imp (([N ¥PLUS M,0] = [N,0] ¥S_PLUS [M,0] & [N ¥TIMES M,0] = [N,0] ¥S_TIMES [M,0]) & ((N incs M) ¥imp ([N,0] ¥S_MINUS [M,0] = [N ¥MINUS M,0])))

(483) Theorem 389: [Sign-reversal of signed integers] ((N in Za) & (M in Za)) ¥imp (S_Rev(Red([M,N])) = Red([N,M]))

(484) Theorem 390: [$n*-m=-(n*m)$ for signed integers] ((N in Si) & (M in Si)) ¥imp (N ¥S_TIMES S_Rev(M) = S_Rev(N ¥S_TIMES M))

(485) Theorem 391: [Basic properties of the signed negative] (N in Si) ¥imp ((S_Rev(N) in Si) & (S_Rev(N) ¥S_PLUS N = [0,0]) & (S_Rev(S_Rev(N)) = N))

(486) Theorem 392: [Inversion lemma] ((N in Si) & (M in Si)) ¥imp ((S_Rev(N ¥S_TIMES M) = S_Rev(N) ¥S_TIMES M) & (S_Rev(N ¥S_TIMES M) = N ¥S_TIMES S_Rev(M)))

(487) Theorem 393: [Inversion lemma II] (N in Si) ¥imp (S_Rev(S_Rev(N)) = N)

(488) Theorem 394: [Associativity lemma] ((N in Za) & (M in Za) & (K in Za)) ¥imp ([N,0] ¥S_TIMES ([M,0] ¥S_TIMES [K,0]) = ([N,0] ¥S_TIMES [M,0]) ¥S_TIMES [K,0])

(489) Theorem 395: [Associativity lemma] ((K in Si) & (N in Za) & (M in Za)) ¥imp ([N,0] ¥S_TIMES ([M,0] ¥S_TIMES K) = ([N,0] ¥S_TIMES [M,0]) ¥S_TIMES K)

(490) Theorem 396: [Associativity lemma II] ((K in Si) & (N in Za) & (M in Si)) ¥imp ([N,0] ¥S_TIMES (M ¥S_TIMES K) = ([N,0] ¥S_TIMES M) ¥S_TIMES K)

(491) Theorem 397: [Associative law] ((K in Si) & (N in Si) & (M in Si)) ¥imp (N ¥S_TIMES (M ¥S_TIMES K) = (N ¥S_TIMES M) ¥S_TIMES K)

(492) Theorem 398: [Subtraction is addition of the negative] ((N in Si) & (M in Si)) ¥imp ((N ¥S_MINUS M) = (N ¥S_PLUS S_Rev(M)))

(493) Theorem 399: [Subtraction reverses signed integer addition] ((N in Si) & (M in Si)) ¥imp (N = M ¥S_PLUS (N ¥S_MINUS M))

(494) Theorem 400: [The negative of a sum is the sum of the negatives] ((N in Si) & (M in Si)) ¥imp (S_Rev(N ¥S_PLUS M) = S_Rev(N) ¥S_PLUS S_Rev(M))

(495) Theorem 401: [Basic properties of the signed integers 0 and 1] (([0,1] ¥S_TIMES [0,1]) = [1,0]) & ((X in Si) ¥imp ((([1,0] ¥S_TIMES X) = X) & (([0,0] ¥S_TIMES X) = [0,0])))

(496) Theorem 402: [1 is the multiplicative unit for signed integers] (K in Si) ¥imp (K ¥S_TIMES [1,0] = K)

(497) Theorem 403: [The negative of a signed integer is its product by -1] ((K in Si) & (M in Si)) ¥imp (K ¥S_MINUS M = K ¥S_PLUS (M ¥S_TIMES [0,1]))

(498) Theorem 404: [A signed integer minus itself gives 0] (K in Si) ¥imp (K ¥S_MINUS K = [0,0])

(499) Theorem 405: [0 is the right additive identity for signed integers] (K in Si) ¥imp (K ¥S_PLUS [0,0] = K)

(500) Theorem 406: [0 is the left additive identity for signed integers] (K in Si) ¥imp ([0,0] ¥S_PLUS K = K)

(501) Theorem 407: [$Si$ is an Integral Domain] ((N in Si) & (M in Si) & ((M ¥S_TIMES N) = [0,0])) ¥imp ((M = [0,0]) or (N = [0,0]))

(502) Theorem 408: [Distributivity of multiplication over subtraction] ((N in Si) & (M in Si) & (K in Si)) ¥imp ((m ¥S_TIMES n) ¥S_MINUS (k ¥S_TIMES n) = (m ¥S_MINUS k) ¥S_TIMES n)

(503) Theorem 409: [$Si$ multiplicative cancellation] ((N in Si) & (M in Si) & (K in Si) & (M ¥S_TIMES N = K ¥S_TIMES N) & (N /= [0,0])) ¥imp (M = K)

(504) Theorem 410: [Multiplication by -1] (N in Si) ¥imp (S_Rev(N) = [0,1] ¥S_TIMES N)

(505) Theorem mathematical_induction00: [Basic assumption for proofs by mathematical induction] (n in Za) & P(n)

(506) Theorem mathematical_induction0: [The minimum integer having a given property, preliminary version] (FORALL k | ((m2_thryvar in Za) & P(m2_thryvar)) & ((k in m2_thryvar) ¥imp (not ((k in Za) & P(k)))))

(507) Theorem mathematical_induction1: [The minimum integer having a given property] (m2_thryvar in Za) & P(m2_thryvar) & (FORALL k in m2_thryvar | not P(k))

(507+) Theorem double_transfinite_induction.0: [Basic assumption for proofs by double transfinite induction] (EXISTS i | R(n,i))

(508) Theorem double_transfinite_induction.1: [Minimum first element in a double transfinite induction] (FORALL k | ((EXISTS i | R(m3_thryvar,i)) & ((k in m3_thryvar) ¥imp (not (EXISTS i | R(k,i))))))

(509) Theorem double_transfinite_induction.2: [Existence of a second element corresponding to the minimum first element] (EXISTS i | R(m3_thryvar,i))

(510) Theorem double_transfinite_induction.3: [Minimum second element in a double transfinite induction] R(m3_thryvar,ei1)

(510+) Theorem double_transfinite_induction.4: [Minimal element properties in a double transfinite induction] (FORALL k | R(m3_thryvar,j1_thryvar) & ((k in j1_thryvar) ¥imp (not R(m3_thryvar,k))))

(511) Theorem double_transfinite_induction.5: [Minimal element properties in a double transfinite induction, 2] R(m3_thryvar,j1_thryvar) & ((K in m3_thryvar) ¥imp (not R(K,I))) & ((I in j1_thryvar) ¥imp (not R(m3_thryvar,I)))

(512) Theorem double_mathematical_induction.0: [Basic assumption for double integer induction] (EXISTS i | (i in Za) & R(n,i))

(512+) Theorem double_mathematical_induction.1: [Minimum first element for a double integer induction] (mm_thryvar in Za) & (EXISTS i | (i in Za) & R(mm_thryvar,i)) & (FORALL k in mm_thryvar | not (EXISTS i | (i in Za) & R(k,i)))

(513) Theorem double_mathematical_induction.2: (EXISTS i | (i in Za) & R(mm_thryvar,i))

(513+) Theorem double_mathematical_induction.3: (ei2 in Za) & R(mm_thryvar,ei2)

(514) Theorem double_mathematical_induction.4: (FORALL i | (j2_thryvar in Za) & R(mm_thryvar,j2_thryvar) & ((i in j2_thryvar) ¥imp (not ((i in Za) & R(mm_thryvar,i)))))

(515) Theorem double_mathematical_induction.5: (mm_thryvar in Za) & (j2_thryvar in Za) & R(mm_thryvar,j2_thryvar) & (((K in mm_thryvar) & (I in Za)) ¥imp (not R(K,I))) & ((I in j2_thryvar) ¥imp (not R(mm_thryvar,I)))

(516) Theorem confinedIncrSeq1: [global increase of a stepwise increasing sequence] ((I in J) & (J in Za)) ¥imp (e(I) ¥incin e(J))

(516+) Theorem confinedIncrSeq2: [position of first repetition in confined increasing sequence] (m5_thryvar in Za) & (e(next(m5_thryvar)) = e(m5_thryvar)) & ((m5_thryvar * {i in Za | e(next(i)) ¥incin e(i)}) = 0)

(517) Theorem wellfounded_recursive_fcn.100: (FORALL u, v | (Ord(u) & Ord(v) & (orden(u) /= s) & arg1_bef_arg2(orden(u),orden(v))) ¥imp (u in v)) & (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {orden(x): x in o}) & (FORALL x in o | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o})))

(518) Theorem wellfounded_recursive_fcn.100a: (EXISTS o | (Ord(o) & (s = {orden(x): x in o}) & (FORALL x in o | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o})))

(518+) Theorem wellfounded_recursive_fcn.101: (Ord(o2) & (s = {orden(x): x in o2}) & (FORALL x in o2 | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o2}))

(519) Theorem wellfounded_recursive_fcn.1: (V in s) ¥imp ((index(V) in o2) & Ord(index(V)) & (orden(index(V)) = V))

(519+) Theorem wellfounded_recursive_fcn.2: (V in s) ¥imp ({j: j in index(V) | arg1_bef_arg2(orden(j),V)} = {index(w): w in s | arg1_bef_arg2(w,V)})

(520) Theorem wellfounded_recursive_fcn.3: (X in s) ¥imp (wfh2_thryvar(X,T) = f3({g4(wfh2_thryvar(y,T),y,X,T): y in s | arg1_bef_arg2(y,X) & P4(wfh2_thryvar(y,T),y,X,T)},X,T))

(521) Theorem wellfounded_recursive_fcn.4: (FORALL x, t | (x in s) ¥imp (rk_thryvar(x,t) = Un({next(rk_thryvar(y,t)): y in s | arg1_bef_arg2(y,x) & ([y,x] in t)})))

(522) Theorem 411: [well-foundedness of inclusion between finite sets] ((FORALL v in X | Finite(v)) & (U ¥incin X) & (U /= 0)) ¥imp (EXISTS w in U | (FORALL y in U | not((y ¥incin w) & (y /= w))))

(523) Theorem finite_recursion_coherence.1: ((X in q) & (X in r)) ¥imp (h_q(X,T) = h_r(X,T))

(523+) Theorem fin_well_founded.1: ((V ¥incin s) & (V /= 0)) ¥imp (EXISTS m in V | (FORALL y in V | not(arg1_bef_arg2(y,m))))

(524) Theorem finite_recursive_fcn.0: ((T ¥incin {y: y ¥incin S | Finite(y)}) & (T /= 0)) ¥imp (EXISTS x in T | (FORALL y in T | not((y ¥incin x) & (y /= x))))

(525) Theorem finite_recursive_fcn.1: (FORALL s,t | (EXISTS h | (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (h~[x] = f3({g4(h~[y],y,x,t): y ¥incin x | (y /= x) & P4(h~[y],y,x,t)},x,t)))))

(525+) Theorem finite_recursive_fcn.a: (FORALL s,t | (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (hsko(s,t)~[x] = f3({g4(hsko(s,t)~[y],y,x,t): y ¥incin x | (y /= x) & P4(hsko(s,t)~[y],y,x,t)},x,t))))

(526) Theorem finite_recursive_fcn.2: (FORALL x | ((x ¥incin S) & Finite(x)) ¥imp (hsko(S,T)~[x] = f3({g4(hsko(S,T)~[y],y,x,T): y ¥incin x | (y /= x) & P4(hsko(S,T)~[y],y,x,T)},x,T)))

(527) Theorem finite_recursive_fcn.3: Finite(S) ¥imp (rech2_thryvar(S,T) = f3({g4(rech2_thryvar(y,T),y,S,T): y ¥incin S | (y /= S) & P4(rech2_thryvar(y,T),y,S,T)},S,T))

(528) Theorem finite_tailrecursive_fcn.0: (FORALL s,t | Finite(s) ¥imp (trech2_thryvar(s,t) = if ({g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))} = 0) then f(t) else arb({g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))}) end if))

(529) Theorem finite_tailrecursive_fcn.1: Finite(S) ¥imp (trech2_thryvar(S,T) = if (S = 0) then f(T) else g3(trech2_thryvar(sl(S), T), S,T) end if)

(529+) Theorem finite_tailrecursive_fcn1.0: ((X - {arb(X)}) ¥incin X) & ((X /= 0) ¥imp ((X - {arb(X)}) /= X))

(530) Theorem finite_tailrecursive_fcn1.1: (FORALL s,t | Finite(s) ¥imp (trech_thryvar(s,t) = if (s = 0) then f(t) else g3(trech_thryvar(s - {arb(s)}, t), s,t) end if))

(531) Theorem finite_tailrecursive_fcn2.0: (FORALL s,t | Finite(s) ¥imp (h(s,t) = if s = 0 then f0 else g2(h(s - {arb(s)},t),s) end if))

(532) Theorem finite_tailrecursive_fcn2.1: Finite(S) ¥imp (h1_thryvar(S) = if S = 0 then f0 else g2(h1_thryvar(S - {arb(S)}),S) end if)

(533) Theorem sigma_theory0: [Recursive formula for generalized sum] (FORALL x | Finite(x) ¥imp (sigma_thryvar(x) = if x = 0 then e else pluz(sigma_thryvar(x - {arb(x)}),cdr(arb(x))) end if))

(534) Theorem sigma_theory1: [Summation of null map is zero] sigma_thryvar(0) = e

(535) Theorem sigma_theory2: [Summation of singleton map is range element] (cdr(X) in s) ¥imp (sigma_thryvar({X}) = cdr(X))

(535+) Theorem sigma_theory3: [Sum value belongs to closed range of map] (Finite(F) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) in s)

(536) Theorem sigma_theory4: [Removal of single element from domain of a sum] ((C in F) & Finite(F) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) = pluz(sigma_thryvar(F - {C}),cdr(C)))

(537) Theorem sigma_theory5: [The generalized sum of a union map is a sum of sums] (Finite(F) & Is_map(F) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) = pluz(sigma_thryvar(F ¥ON (domain(F) * T)), sigma_thryvar(F ¥ON (domain(F) - T))))

(538) Theorem sigma_theory6: [Rearrangement-of-sums theorem] (Finite(F) & Svm(F) & Svm(G) & (domain(F) = domain(G)) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) = sigma_thryvar({[y,sigma_thryvar(F ¥ON (G ¥INV_IM {y}))]: y in range(G)}))

(538+) Theorem sigma_theory7: [Sum permutation theorem] (Finite(F) & Svm(F) & one_1_map(G) & (domain(F) = domain(G)) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) = sigma_thryvar({[y,F~[inv(G)~[y]]]: y in range(G)}))

(539) Theorem equivalence_classes1: [Elements are equivalent if and only if their equivalence classes are equal] ((X in s) & (Y in s)) ¥imp (R(X,Y) ¥eq (f1_thryvar(X) = f1_thryvar(Y)))

(540) Theorem equivalence_classes2: [The equivalence class of any element is an equivalence class] (X in s) ¥imp (f1_thryvar(X) in Eqc_thryvar)

(541) Theorem equivalence_classes2b: [Any element of an equivalence class can represent the class] ((X in Eqc_thryvar) ¥imp ((arb(X) in s) & (f1_thryvar(arb(X)) = X)))

(541+) Theorem equivalence_classes3: [Any two elements of an equivalence class are equivalent] (X in s) ¥imp R(x,arb(f1_thryvar(x)))

(542) Theorem linear_order_1: (({U,V,W} ¥incin s0) & (U ¥le_thryvar V) & (V ¥le_thryvar W)) ¥imp (U ¥le_thryvar W)

(542+) Theorem linear_order_2: (({U,V} ¥incin s0) & (U ¥le_thryvar V) & (V ¥le_thryvar U)) ¥imp (U = V)

(543) Theorem linear_order_3: smaller_thryvar(X,Y) = smaller_thryvar(Y,X)

(544) Theorem linear_order_4: ({U,V} ¥incin s0) ¥imp ((U ¥le_thryvar V) or (V ¥le_thryvar U))

(544+) Theorem linear_order_5: ({U,V,W} ¥incin s0) ¥imp (((U ¥le_thryvar V) & (U ¥le_thryvar W)) or ((V ¥le_thryvar U) & (V ¥le_thryvar W)) or ((W ¥le_thryvar U) & (W ¥le_thryvar V)))

(545) Theorem linear_order_6: ({X,Y} ¥incin s0) ¥imp (smaller_thryvar(X,Y) in {X,Y})

(546) Theorem linear_order_7: (({X,Y} ¥incin s0) & (arg1_bef_arg2(X,Y) or (X = Y))) ¥imp ((smaller_thryvar(X,Y) = X) & (smaller_thryvar(Y,X) = X))

(547) Theorem linear_order_8: (X in next(s0)) ¥imp (smaller_thryvar(X,s0) = X)

(548) Theorem linear_order_9: smaller_thryvar(X,smaller_thryvar(Y,W)) = smaller_thryvar(smaller_thryvar(X,Y),W)

(549) Theorem linear_order_10: ((X in next(s0)) & (Y in next(s0))) ¥imp (smaller_thryvar(X,Y) in next(s0))

(550) Theorem linear_order_11: (s0 in next(s0)) & (FORALL x,y,z | ((x in next(s0)) & (y in next(s0)) & (z in next(s0))) ¥imp (smaller_thryvar(x,smaller_thryvar(y,z)) = smaller_thryvar(smaller_thryvar(x,y),z))) & (FORALL x,y | ((x in next(s0)) & (y in next(s0))) ¥imp (smaller_thryvar(x,y) = smaller_thryvar(y,x)))

(551) Theorem linear_order_12: (FORALL f | (Finite(f) & (range(f) ¥incin next(s0))) ¥imp (min_over_thryvar(f) in next(s0))) & (FORALL x | (cdr(x) in next(s0)) ¥imp (min_over_thryvar({x}) = cdr(x))) & (FORALL f,t | (Finite(f) & Is_map(f) & (range(f) ¥incin next(s0))) ¥imp (min_over_thryvar(f) = smaller_thryvar(min_over_thryvar(f ¥ON (domain(f) * t)),min_over_thryvar(f ¥ON (domain(f) - t))))) & (FORALL c,f | ((c in f) & Finite(f) & (range(f) ¥incin next(s0))) ¥imp (min_over_thryvar(f) = smaller_thryvar(min_over_thryvar(f - {c}),cdr(c))))

(552) Theorem linear_order_13: (Svm(F) & (range(F) ¥incin s0) & Finite(F)) ¥imp (((P in F) ¥imp (min_over_thryvar({P}) = (F~[car(P)]))) & (min_over_thryvar(F) = smaller_thryvar(min_over_thryvar(F ¥ON (domain(F) * A)),min_over_thryvar(F ¥ON (domain(F) - A)))))

(553) Theorem linear_order_14: (Svm(F) & (range(F) ¥incin s0) & Finite(F) & (F /= 0)) ¥imp (min_over_thryvar(F) in range(F))

(554) Theorem linear_order_15: ({X,Y} ¥incin s0) ¥imp ((smaller_thryvar(X,Y) = X) ¥eq (arg1_bef_arg2(X,Y) or (X = Y)))

(555) Theorem linear_order_16: (ubs_thryvar(0) = s0) & (max_thryvar(0) = s0)

(556) Theorem linear_order_17: (ubs_thryvar(T) ¥incin s0) & (ubs_thryvar(T) = ubs_thryvar(T * s0)) & (max_thryvar(T) = max_thryvar(T * s0))

(557) Theorem linear_order_18: (Finite(T) & (X in T) & (T ¥incin s0)) ¥imp ((max_thryvar(T) in T) & ((X = max_thryvar(T)) or (arg1_bef_arg2(X,max_thryvar(T)))))

(558) Theorem linear_order_19: (FORALL x in s0, y in s0, z in s0 | (arg1_aft_arg2(x,y) & arg1_aft_arg2(y,z)) ¥imp arg1_aft_arg2(x,z)) & (FORALL x in s0 | not(arg1_aft_arg2(x,x))) & (FORALL x in s0, y in s0 | arg1_aft_arg2(x,y) or (x = y) or arg1_aft_arg2(y,x))

(559) Theorem linear_order_20: (FORALL x, y | larger_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_aft_arg2(x,y) then x else y end if) & (FORALL x, y | larger_thryvar(x,y) = larger_thryvar(y,x)) & (FORALL x, y | ({x,y} ¥incin s0) ¥imp (larger_thryvar(x,y) in {x,y})) & (FORALL x | (x in next(s0)) ¥imp (larger_thryvar(x,s0) = x)) & (FORALL x, y, z | larger_thryvar(x,larger_thryvar(y,z)) = larger_thryvar(larger_thryvar(x,y),z)) & (FORALL x, y | ((x in next(s0)) & (y in next(s0))) ¥imp (larger_thryvar(x,y) in next(s0))) & (FORALL f,p,a | (Svm(f) & (range(f) ¥incin s0) & Finite(f)) ¥imp (((p in f) ¥imp (max_over_thryvar({p}) = (f~[car(p)]))) & (max_over_thryvar(f) = larger_thryvar(max_over_thryvar(f ¥ON (domain(f) * a)),max_over_thryvar(f ¥ON (domain(f) - a)))))) & (FORALL f | (Svm(f) & (range(f) ¥incin s0) & Finite(f) & (f /= 0)) ¥imp (max_over_thryvar(f) in range(f))) & (FORALL x, y | ({x,y} ¥incin s0) ¥imp ((larger_thryvar(x,y) = x) ¥eq (arg1_aft_arg2(x,y) or (x = y)))) & (FORALL t | lbs_thryvar(t) = {x in s0 | (FORALL y in (t * s0) | larger_thryvar(y,x) = y)}) & (FORALL t | min_thryvar(t) = arb({s0} + (t * lbs_thryvar(t)))) & (FORALL t | glb_thryvar(t) = arb({s0} + {x in lbs_thryvar(t) | lbs_thryvar(t) ¥incin lbs_thryvar({x})})) & (lbs_thryvar(0) = s0) & (min_thryvar(0) = s0) & (FORALL t | (lbs_thryvar(t) ¥incin s0) & (lbs_thryvar(t) = lbs_thryvar(t * s0)) & (min_thryvar(t) = min_thryvar(t * s0))) & (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin s0)) ¥imp ((min_thryvar(t) in t) & ((x = min_thryvar(t)) or (arg1_aft_arg2(x,min_thryvar(t))))))

(560) Theorem transfinite_definition_0_params1: [One-parameter transfinite recursive function definition] f_thryvar(X) = g({h1(f_thryvar(t)): t in X})

(561) Theorem transfinite_definition_1_params1: [Recursive transfinite function definition with auxilliary parameter] f2_thryvar(X,A) = g2({h(f2_thryvar(t,A),A): t in X},A)

(562) Theorem 412: [Zorn's lemma] (FORALL x ¥incin T | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in T | (FORALL y in x | w incs y)))) ¥imp (EXISTS y in T | (FORALL x in T | not ((x incs y) & (x /= y))))

(563) Theorem 413: [Zorn's lemma generalized form] (FORALL x ¥incin T | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in T | (FORALL y in x | w incs y)))) ¥imp (FORALL u in T | (EXISTS y in T | (y incs u) & (FORALL x in T | not ((x incs y) & (x /= y)))))

(564) Theorem 414: [Zorn's lemma for union-closed collections] (FORALL x ¥incin T | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (Un(x) in T))) ¥imp (FORALL u in T | (EXISTS y in T | (y incs u) & (FORALL x in T | not ((x incs y) & (x /= y)))))

(565) Theorem 415: ((FORALL t in TP | Filter(t,S)) & (FORALL u in TP, v in TP | (u incs v or v incs u))) ¥imp Filter(Un(TP),S)

(566) Theorem 416: (S /= 0) ¥imp ((Filter(T,S) & (FORALL x ¥incin pow(S) | ((x incs T) & Filter(x,S)) ¥imp (x = T))) ¥eq Ultrafilter(T,S))

(567) Theorem 417: [Every filter on a set $S$ can be extended to an ultrafilter on $S$] (Filter(T,S) & (S /= 0)) ¥imp (EXISTS u | ((u incs T) & Ultrafilter(u,S)))

(567+) Theorem 418: [Equivalence of fractions is reflexive and symmetric] (FORALL x in Fr,y in Fr | (Same_frac(x,y) ¥eq Same_frac(y,x)) & Same_frac(x,x))

(568) Theorem 419: [Equivalence of fractions is transitive] (FORALL x in Fr, y in Fr, wz in Fr | (Same_frac(x,y) & Same_frac(y,wz)) ¥imp Same_frac(x,wz))

(569) Theorem 420: [Fractions are equivalent if and only if the rational numbers they define are equal] (FORALL x, y | ((x in Fr) & (y in Fr)) ¥imp ((Same_frac(x,y) ¥eq (Fr_to_Ra(x) = Fr_to_Ra(y))))) & (FORALL x | (x in Ra) ¥imp ((arb(x) in Fr) & (Fr_to_Ra(arb(x)) = x))) & (FORALL x | (x in Fr) ¥imp (Fr_to_Ra(x) in Ra)) & (FORALL x | (x in Fr) ¥imp Same_frac(x,arb(Fr_to_Ra(x))))

(570) Theorem 421: [Every fraction is equivalent to every member of its rational number class] (X in Fr) ¥imp ((Fr_to_Ra(X) in Ra) & Same_frac(X,arb(Fr_to_Ra(X))))

(571) Theorem 422: [Alternate version of Theorem 420] ((X in Fr) & (Y in Fr)) ¥imp (Same_frac(X,Y) ¥eq (Fr_to_Ra(X) = Fr_to_Ra(Y)))

(572) Theorem 423: [Alternate version of Theorem 421] (Y in Ra) ¥imp ((arb(Y) in Fr) & (Fr_to_Ra(arb(Y)) = Y))

(573) Theorem Ordered_add.0: [Echo of relator definitions] (GE_thryvar(X,Y) ¥eq nneg(pluz(X,rvz(Y)))) & (LE_thryvar(X,Y) ¥eq GE_thryvar(Y,X)) & (GT_thryvar(X,Y) ¥eq (GE_thryvar(X,Y) & (X /= Y))) & (LT_thryvar(X,Y) ¥eq GT_thryvar(Y,X))

(574) Theorem Ordered_add.1: [Interface to Otter-based THEORY of orderedGroups] (LE_thryvar(X,Y) ¥eq nneg(pluz(Y,rvz(X)))) & (((X in g) & (Y in g)) ¥imp (GT_thryvar(X,Y) ¥eq (nneg(pluz(X,rvz(Y))) & (X /= Y)))) & (((X in g) & (Y in g)) ¥imp (GT_thryvar(X,Y) ¥eq (nneg(minz(X,Y)) & (X /= Y))))

(575) Theorem Ordered_add.2: [The ordering by $GE_thryvar$ is a linear ordering] ((X in g) & (Y in g) & ((X = Y) or (not GE_thryvar(X,Y)))) ¥imp GE_thryvar(Y,X)

(575+) Theorem 424: [If a signed integer and its additive inverse are both nonnegative, the signed integer is zero] (X in Si) ¥imp ((is_nonneg(X) or is_nonneg(S_Rev(X))) & ((is_nonneg(X) & is_nonneg(S_Rev(X))) ¥imp (X = [0,0])))

(576) Theorem 425: [The sum of two non-negative signed integers is non-negative] (((X in Si) & (Y in Si) & is_nonneg(X) & is_nonneg(Y))) ¥imp (is_nonneg(X ¥S_PLUS Y) & is_nonneg(X ¥S_TIMES Y))

(577) Theorem 426: ([0,0] in Si) & (FORALL x in Si | ((x ¥S_PLUS [0,0]) = x) & ((x ¥S_PLUS S_Rev(x)) = [0,0]) & (S_Rev(x) in Si)) & (FORALL x in Si, y in Si | ((x ¥S_PLUS y) in Si) & ((x ¥S_PLUS y) = (y ¥S_PLUS x)) & ((x ¥S_PLUS S_Rev(y)) = (x ¥S_MINUS y))) & (FORALL x in Si, y in Si, z in Si | ((x ¥S_PLUS y) ¥S_PLUS z) = (x ¥S_PLUS (y ¥S_PLUS z))) & (FORALL x in Si, y in Si | (is_nonneg(x) & is_nonneg(y)) ¥imp is_nonneg(x ¥S_PLUS y)) & (FORALL x in Si | (is_nonneg(x) or is_nonneg(S_Rev(x))) & ((is_nonneg(x) & is_nonneg(S_Rev(x))) ¥imp (x = [0,0])))

(578) Theorem 427: [The ordering of two signed integers is defined by the sign of their differences] (FORALL x, y | (S_GE(x,y) ¥eq is_nonneg(x ¥S_PLUS S_Rev(y))) & (S_LE(x,y) ¥eq S_GE(y,x)) & (S_GT(x,y) ¥eq (S_GE(x,y) & (x /= y))) & (S_LT(x,y) ¥eq S_GT(y,x)))

(579) Theorem 428: [The ordering of two signed integers is defined by the sign of their differences] ((X ¥S_GE Y) ¥eq is_nonneg(X ¥S_PLUS S_Rev(Y))) & ((X ¥S_LE Y) ¥eq (Y ¥S_GE X)) & ((X ¥S_GT Y) ¥eq ((X ¥S_GE Y) & (X /= Y))) & ((X ¥S_LT Y) ¥eq (Y ¥S_GT X))

(580) Theorem 429: [The square of any signed integer is non-negative] (X in Si) ¥imp is_nonneg(X ¥S_TIMES X)

(581) Theorem 430: [The product of signed integers $x,y$ of which $x$ is positive is non-negative iff $y$ is non-negative] ((X in Si) & (Y in Si) & (X /= [0,0]) & is_nonneg(X)) ¥imp (is_nonneg(X ¥S_TIMES Y) ¥eq is_nonneg(Y))

(582) Theorem 431: [Fractions are pairs of signed integers with non-zero denominator] (X in Fr) ¥eq ((X = [car(X),cdr(X)]) & (car(X) in Si) & (cdr(X) in Si) & (cdr(X) /= [0,0]))

(583) Theorem 432: [Fractions are pairs of signed integers with non-zero denominator, 2] ((X in Si) & (Y in Si)) ¥imp (([X,Y] in Fr) ¥eq (Y /= [0,0]))

(584) Theorem 433: [Rational numbers are classes of pairs of signed integers] (N in Ra) ¥imp ((arb(N) in Fr) & (arb(N) = [car(arb(N)),cdr(arb(N))]) & (car(arb(N)) in Si) & (cdr(arb(N)) in Si) & (cdr(arb(N)) /= [0,0]))

(585) Theorem 434: [Fractions are equivalent if their cross-products are equal] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & (W in Fr) & (Z in Fr) & Same_frac(W,Z)) ¥imp Same_frac([(car(X) ¥S_TIMES cdr(W)) ¥S_PLUS (car(W) ¥S_TIMES cdr(X)),cdr(X) ¥S_TIMES cdr(W)], [(car(Y) ¥S_TIMES cdr(Z)) ¥S_PLUS (car(Z) ¥S_TIMES cdr(Y)),cdr(Y) ¥S_TIMES cdr(Z)])

(586) Theorem 435: [If two pair of fractions are equivalent, their formal sums are also equivalent] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & (W in Fr) & (Z in Fr) & Same_frac(W,Z)) ¥imp (Fr_to_Ra([(car(X) ¥S_TIMES cdr(W)) ¥S_PLUS (car(W) ¥S_TIMES cdr(X)),cdr(X) ¥S_TIMES cdr(W)]) = Fr_to_Ra([(car(Y) ¥S_TIMES cdr(Z)) ¥S_PLUS (car(Z) ¥S_TIMES cdr(Y)),cdr(Y) ¥S_TIMES cdr(Z)]))

(586+) Theorem 436: [If two pairs of fractions are equivalent, their formal products are also equivalent] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & (W in Fr) & (Z in Fr) & Same_frac(W,Z)) ¥imp Same_frac([car(X) ¥S_TIMES car(W),cdr(X) ¥S_TIMES cdr(W)],[car(Y) ¥S_TIMES car(Z),cdr(Y) ¥S_TIMES cdr(Z)])

(587) Theorem 437: [If two pairs of fractions are equivalent, their formal sums define the same rational number] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & (W in Fr) & (Z in Fr) & Same_frac(W,Z)) ¥imp (Fr_to_Ra([car(X) ¥S_TIMES car(W),cdr(X) ¥S_TIMES cdr(W)]) = Fr_to_Ra([car(Y) ¥S_TIMES car(Z),cdr(Y) ¥S_TIMES cdr(Z)]))

(588) Theorem 438: [The sum of a rational number and a formal fraction can be expressed as a sum of formal fractions] ((X in Ra) & (Y in Si) & (Z in Si) & (Z /= [0,0])) ¥imp (X ¥Ra_PLUS Fr_to_Ra([Y,Z]) = Fr_to_Ra([(car(arb(X)) ¥S_TIMES Z) ¥S_PLUS (cdr(arb(X)) ¥S_TIMES Y),(cdr(arb(X)) ¥S_TIMES Z)]))

(589) Theorem 439: [The product of a rational number and a formal fraction can be expressed as a product of formal fractions] ((X in Ra) & (Y in Si) & (Z in Si) & (Z /= [0,0])) ¥imp (X ¥Ra_TIMES Fr_to_Ra([Y,Z]) = Fr_to_Ra([car(arb(X)) ¥S_TIMES Y,cdr(arb(X)) ¥S_TIMES Z]))

(590) Theorem 440: [Reversing both the numerator and denominator of a formal fraction does not change the rational it represents] (X in Fr) ¥imp Same_frac(X,[S_Rev(car(X)),S_Rev(cdr(X))])

(591) Theorem 441: [?] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & is_nonneg(cdr(X)) & is_nonneg(cdr(Y))) ¥imp ((is_nonneg(car(X)) or car(X) = [0,0]) ¥eq (is_nonneg(car(Y)) or car(Y) = [0,0]))

(592) Theorem 442: [The sign of the product of the numerator and denominator of a fraction defines the sign of the rational number which it represents] ((X in Fr) & (Y in Fr) & Same_frac(X,Y)) ¥imp (is_nonneg(car(X) ¥S_TIMES cdr(X)) ¥eq is_nonneg(car(Y) ¥S_TIMES cdr(Y)))

(593) Theorem 443: [?] (X in Fr) ¥imp (Fr_is_nonneg(X) ¥eq Fr_is_nonneg([S_Rev(car(X)),S_Rev(cdr(X))]))

(594) Theorem 444: [?] ((X in Fr) & (Y in Fr) & Same_frac(X,Y)) ¥imp (Fr_is_nonneg(X) ¥eq Fr_is_nonneg(Y))

(595) Theorem 445: [Commutativity of rational addition] ((N in Ra) & (M in Ra)) ¥imp ((N ¥Ra_PLUS M in Ra) & (N ¥Ra_PLUS M = M ¥Ra_PLUS N))

(596) Theorem 446: [?] ((X in Ra) & (Y in Si) & (Z in Si) & (Z /= [0,0])) ¥imp (Fr_to_Ra([Y,Z]) ¥Ra_PLUS X = Fr_to_Ra([(car(arb(X)) ¥S_TIMES Z) ¥S_PLUS (cdr(arb(X)) ¥S_TIMES Y),(cdr(arb(X)) ¥S_TIMES Z)]))

(596+) Theorem 447: [?] ((X in Si) & (Y in Si) & (Z in Si) & (W in Si) & (Y /= [0,0]) & (W /= [0,0])) ¥imp (Fr_to_Ra([X,Y]) ¥Ra_PLUS Fr_to_Ra([Z,W]) = Fr_to_Ra([(X ¥S_TIMES W) ¥S_PLUS (Z ¥S_TIMES Y),Y ¥S_TIMES W]))

(597) Theorem 448: [Commutativity of rational multiplication] ((N in Ra) & (M in Ra)) ¥imp ((N ¥Ra_TIMES M in Ra) & (N ¥Ra_TIMES M = M ¥Ra_TIMES N))

(598) Theorem 449: [?] ((X in Ra) & (Y in Si) & (Z in Si) & (Z /= [0,0])) ¥imp ((Fr_to_Ra([Y,Z]) ¥Ra_TIMES X) = Fr_to_Ra([car(arb(X)) ¥S_TIMES Y,cdr(arb(X)) ¥S_TIMES Z]))

(599) Theorem 450: [Associative law for rational addition] ((K in Ra) & (N in Ra) & (M in Ra)) ¥imp (N ¥Ra_PLUS (M ¥Ra_PLUS K) = (N ¥Ra_PLUS M) ¥Ra_PLUS K)

(600) Theorem 451: [The zero rational is the identity for rational addition] (Ra_0 in Ra) & (Ra_1 in Ra) & ((M in Ra) ¥imp (M = M ¥Ra_PLUS Ra_0))

(601) Theorem 452: [The sum of a rational number and its additive inverse is zero] (M in Ra) ¥imp ((Ra_Rev(M) in Ra) & ((M ¥Ra_PLUS Ra_Rev(M)) = Ra_0))

(602) Theorem 453: [The sum of a rational number and its additive inverse is zero, 2] (M in Ra) ¥imp ((Ra_Rev(M) in Ra) & ((Ra_Rev(M) ¥Ra_PLUS M) = Ra_0))

(603) Theorem 454: [The difference of two rationals is rational] ((N in Ra) & (M in Ra)) ¥imp ((N ¥Ra_MINUS M) in Ra)

(604) Theorem 455: [Rational subtraction is equivalent to addition of the rational negative] ((N in Ra) & (M in Ra)) ¥imp (N = M ¥Ra_PLUS (N ¥Ra_MINUS M))

(605) Theorem 456: [Associative law for rational multiplication] ((K in Ra) & (N in Ra) & (M in Ra)) ¥imp (N ¥Ra_TIMES (M ¥Ra_TIMES K) = (N ¥Ra_TIMES M) ¥Ra_TIMES K)

(606) Theorem 457: [Muliplication of numerator and denominator by a common nonzero function does not change the rational number it represents] ((K in Si) & (N in Si) & (M in Si) & (K /= [0,0]) & (M /= [0,0])) ¥imp (Fr_to_Ra([N,M]) = Fr_to_Ra([K ¥S_TIMES N,K ¥S_TIMES M]))

(607) Theorem 458: [Distributive law for rationals] ((K in Ra) & (N in Ra) & (M in Ra)) ¥imp (N ¥Ra_TIMES (M ¥Ra_PLUS K) = (N ¥Ra_TIMES M) ¥Ra_PLUS (N ¥Ra_TIMES K))

(608) Theorem 459: [Expressing the sign of a rational in terms of the numerator and denominator of any representing fraction] ((X in Si) & (Y in Si) & (Y /= [0,0])) ¥imp (Ra_is_nonneg(Fr_to_Ra([X,Y])) ¥eq is_nonneg(X ¥S_TIMES Y))

(609) Theorem 460: [The unit and zero signed signed integers addition] ([1,0] in Si) & ([0,0] in Si) & ([1,0] /= [0,0]) & ([[0,0],[1,0]] in Fr) & ([[1,0],[1,0]] in Fr)

(610) Theorem 461: [The unit rational is the rational multiplicative identity] (M in Ra) ¥imp (M = M ¥Ra_TIMES Ra_1)

(611) Theorem 462: [Multiplication of a rational by its reciprocal gives 1] ((M in Ra) & (M /= Ra_0)) ¥imp ((Recip(M) in Ra) & (M ¥Ra_TIMES Recip(M) = Ra_1))

(612) Theorem 463: ((N in Ra) & (M in Ra) & (M /= Ra_0)) ¥imp (((N ¥Ra_TIMES (M ¥Ra_TIMES M)) ¥Ra_TIMES (Recip(M) ¥Ra_TIMES Recip(M))) = N)

(613) Theorem 464: [Rational division is multiplication by the reciprocal] ((N in Ra) & (M in Ra) & (M /= Ra_0)) ¥imp (N = M ¥Ra_TIMES (N ¥Ra_OVER M))

(614) Theorem 465: [0 and 1 have non-negative rationals] Ra_is_nonneg(Ra_0) & Ra_is_nonneg(Ra_1)

(615) Theorem 466: [One of a rational and its additive inverse is always non-negative, and both are non-negative only if the rational is zero] (X in Ra) ¥imp ((Ra_is_nonneg(X) or Ra_is_nonneg(Ra_Rev(X))) & ((Ra_is_nonneg(X) & Ra_is_nonneg(Ra_Rev(X))) ¥imp (X = Ra_0)))

(616) Theorem 467: [The unit rational is the identity for multiplication] (X in Ra) ¥imp (X = X ¥Ra_TIMES Ra_1)

(617) Theorem 468: [The zero rational is represented by any fraction whose numerator is 0] (X in Ra) ¥imp ((X = Ra_0) ¥eq (car(arb(X)) = [0,0]))

(618) Theorem 469: [The sum and product of two non-negative rationals is non-negative] ((X in Ra) & (Y in Ra) & Ra_is_nonneg(X) & Ra_is_nonneg(Y)) ¥imp (Ra_is_nonneg(X ¥Ra_PLUS Y) & Ra_is_nonneg(X ¥Ra_TIMES Y))

(619) Theorem 470: (Ra_0 in Ra) & (FORALL x in Ra | ((x ¥Ra_PLUS Ra_0) = x) & ((x ¥Ra_PLUS Ra_Rev(x)) = Ra_0) & (Ra_Rev(x) in Ra)) & (FORALL x in Ra, y in Ra | ((x ¥Ra_PLUS y) in Ra) & ((x ¥Ra_PLUS y) = (y ¥Ra_PLUS x)) & ((x ¥Ra_PLUS Ra_Rev(y)) = (x ¥Ra_MINUS y))) & (FORALL x in Ra, y in Ra, z in Ra | ((x ¥Ra_PLUS y) ¥Ra_PLUS z) = (x ¥Ra_PLUS (y ¥Ra_PLUS z))) & (FORALL x in Ra, y in Ra | (Ra_is_nonneg(x) & Ra_is_nonneg(y)) ¥imp Ra_is_nonneg(x ¥Ra_PLUS y)) & (FORALL x in Ra | (Ra_is_nonneg(x) or Ra_is_nonneg(Ra_Rev(x))) & ((Ra_is_nonneg(x) & Ra_is_nonneg(Ra_Rev(x))) ¥imp (x = Ra_0)))

(620) Theorem 471: [The ordering of two rationals is defined by the sign of their differences, 0] (FORALL x, y | (Ra_GE(x,y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y))) & (Ra_LE(x,y) ¥eq Ra_GE(y,x)) & (Ra_GT(x,y) ¥eq (Ra_GE(x,y) & (x /= y))) & (Ra_LT(x,y) ¥eq Ra_GT(y,x))) & (FORALL x, y | (Ra_LE(x,y) ¥eq Ra_is_nonneg((y ¥Ra_PLUS Ra_Rev(x)))) & (((x in Ra) & (y in Ra)) ¥imp (Ra_GT(x,y) ¥eq (Ra_is_nonneg((x ¥Ra_PLUS Ra_Rev(y))) & (x /= y)))) & (((x in Ra) & (y in Ra)) ¥imp (Ra_GT(x,y) ¥eq (Ra_is_nonneg((x ¥Ra_MINUS y)) & (x /= y))))) & (FORALL x, y | ((x in Ra) & (y in Ra) & ((x = y) or (not Ra_GE(x,y)))) ¥imp Ra_GE(y,x))

(621) Theorem 472: [The ordering of two rationals is defined by the sign of their differences] (FORALL x,y | ((x ¥Ra_GE y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)))) & (FORALL x,y | (x ¥Ra_LE y) ¥eq (y ¥Ra_GE x)) & (FORALL x,y | ((x ¥Ra_GT y) ¥eq ((x ¥Ra_GE y) & (x /= y)))) & (FORALL x,y | ((x ¥Ra_LT y) ¥eq (y ¥Ra_GT x))) & (FORALL x,y | ((x ¥Ra_LE y) ¥eq Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(x)))) & (FORALL x,y | (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) & (x /= y))))) & (FORALL x,y | (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_MINUS y) & (x /= y))))) & (FORALL x,y | (((x in Ra) & (y in Ra) & ((x = y) or (not(x ¥Ra_GE y)))) ¥imp (y ¥Ra_GE x)))

(622) Theorem 473: [Various basic properties of rational comparison] ((X ¥Ra_GE Y) ¥eq Ra_is_nonneg(X ¥Ra_PLUS Ra_Rev(Y))) & ((X ¥Ra_LE Y) ¥eq (Y ¥Ra_GE X)) & ((X ¥Ra_GT Y) ¥eq ((X ¥Ra_GE Y) & (X /= Y))) & ((X ¥Ra_LT Y) ¥eq (Y ¥Ra_GT X)) & ((X ¥Ra_LE Y) ¥eq Ra_is_nonneg(Y ¥Ra_PLUS Ra_Rev(X))) & (((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GT Y) ¥eq (Ra_is_nonneg(X ¥Ra_PLUS Ra_Rev(Y)) & (X /= Y)))) & (((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GT Y) ¥eq (Ra_is_nonneg(X ¥Ra_MINUS Y) & (X /= Y)))) & (((X in Ra) & (Y in Ra) & ((X = Y) or (not(X ¥Ra_GE Y)))) ¥imp (Y ¥Ra_GE X))

(623) Theorem 474: [Greater_than_equal is greater-than and equal] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GE Y) ¥eq ((X ¥Ra_GT Y) or (X = Y)))

(624) Theorem 475: [Less_than_equal is less-than and equal] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_LE Y) ¥eq ((X ¥Ra_LT Y) or (X = Y)))

(625) Theorem 476: [The rationals are a linearly ordered set] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GT Y) or (X = Y) or (Y ¥Ra_GT X))

(626) Theorem 477: [The rationals are a linearly ordered set, 2] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_LT Y) or (X = Y) or (Y ¥Ra_LT X))

(627) Theorem 478: [The rationals are a linearly ordered set,3] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GT Y) or (Y ¥Ra_GE X))

(628) Theorem 479: [The rationals are a linearly ordered set,4] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_LT Y) or (Y ¥Ra_LE X))

(629) Theorem 480: [Transitivity of ordering] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_GE Y) & (Y ¥Ra_GE Z)) ¥imp (X ¥Ra_GE Z))

(630) Theorem 481: [Properties of the rational zero and unit] (Ra_Rev(Ra_0) = Ra_0) & (Ra_1 /= Ra_0) & (Ra_1 ¥Ra_GT Ra_0)

(631) Theorem 482: [Alternate characterization of non-negativity for rationals] (X in Ra) ¥imp ((Ra_is_nonneg(X) ¥eq (X ¥Ra_GE Ra_0)) & ((X ¥Ra_GT Ra_0) ¥imp Ra_is_nonneg(X)))

(632) Theorem 483: [Reversing the numerators of two equivalent rational fractions leaves them equivalent] ((X in Si) & (Y in Si) & (XP in Si) & (YP in Si) & Same_frac([X,Y],[XP,YP])) ¥imp Same_frac([S_Rev(X),Y],[S_Rev(XP),YP])

(633) Theorem 484: [Alternate form of Theorem 483] ((X in Si) & (Y in Si) & (Y /= [0,0])) ¥imp (Ra_Rev(Fr_to_Ra([X,Y])) = Fr_to_Ra([S_Rev(X),Y]))

(634) Theorem 485: [First law of signs for rational multiplication] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_TIMES Ra_Rev(Y)) = Ra_Rev(X ¥Ra_TIMES Y))

(635) Theorem 486: [The reverse of a rational $X$ is the reverse of 1, times $X$] (X in Ra) ¥imp (Ra_Rev(X) = (Ra_Rev(Ra_1) ¥Ra_TIMES X))

(636) Theorem 487: ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp ((X ¥Ra_TIMES (Y ¥Ra_MINUS Z)) = (X ¥Ra_TIMES Y) ¥Ra_MINUS (X ¥Ra_TIMES Z))

(637) Theorem 488: [Strict monotonicity of rational multiplication over 1st argument] ((X in Ra) & (Y in Ra) & (X1 in Ra) & (X ¥Ra_GT Y) & (X1 ¥Ra_GT Ra_0)) ¥imp ((X ¥Ra_TIMES X1) ¥Ra_GT (Y ¥Ra_TIMES X1))

(638) Theorem 489: (X in Ra) ¥imp (X ¥Ra_TIMES Ra_0 = Ra_0)

(639) Theorem 490: ((X in Ra) & (Y in Ra) & (X ¥Ra_GT Ra_0) & (Y ¥Ra_GT Ra_0)) ¥imp ((X ¥Ra_TIMES Y) ¥Ra_GT Ra_0)

(640) Theorem 491: ((X in Ra) & (X ¥Ra_GT Ra_0)) ¥imp (Recip(X) ¥Ra_GT Ra_0)

(640+) Theorem 492: ((X in Ra) & (Y in Ra)) ¥imp (Ra_Rev(X ¥Ra_PLUS Y) = (Ra_Rev(X) ¥Ra_PLUS Ra_Rev(Y)))

(641) Theorem 493: [Monotonicity of rational addition] ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GE Y) & (XP ¥Ra_GE YP)) ¥imp ((X ¥Ra_PLUS XP) ¥Ra_GE (Y ¥Ra_PLUS YP))

(642) Theorem 494: (X in Ra) ¥imp (Ra_Rev(Ra_Rev(X)) = X)

(643) Theorem 495: ((X in Ra) & (Y in Ra)) ¥imp (((X ¥Ra_GE Y) or (Y ¥Ra_GE X)) & (((X ¥Ra_GE Y) & (Y ¥Ra_GE X)) ¥imp (X = Y)))

(644) Theorem 496: [Transitivity of ordering, strict case] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_GE Y) & (Y ¥Ra_GT Z)) ¥imp (X ¥Ra_GT Z))

(645) Theorem 497: [Transitivity of ordering, strict case 2] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_GT Y) & (Y ¥Ra_GE Z)) ¥imp (X ¥Ra_GT Z))

(646) Theorem 498: [Transitivity of ordering, strict case 3] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_GT Y) & (Y ¥Ra_GT Z)) ¥imp (X ¥Ra_GT Z))

(647) Theorem 499: [Transitivity of ordering by 'less than'] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_LE Y) & (Y ¥Ra_LT Z)) ¥imp (X ¥Ra_LT Z))

(648) Theorem 500: [Transitivity of ordering by 'less than', 2] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_LT Y) & (Y ¥Ra_LE Z)) ¥imp (X ¥Ra_LT Z))

(649) Theorem 501: [Transitivity of ordering by 'less than', 3] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_LT Y) & (Y ¥Ra_LT Z)) ¥imp (X ¥Ra_LT Z))

(650) Theorem 502: ((X in Ra) & (Y in Ra) & (X ¥Ra_GE Y)) ¥imp (Ra_Rev(Y) ¥Ra_GE Ra_Rev(X))

(651) Theorem 503: ((X in Ra) & (Y in Ra) & (X ¥Ra_GT Y)) ¥imp (Ra_Rev(Y) ¥Ra_GT Ra_Rev(X))

(652) Theorem 504: ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GE Y) & (XP ¥Ra_GT YP)) ¥imp ((X ¥Ra_PLUS XP) ¥Ra_GT (Y ¥Ra_PLUS YP))

(653) Theorem 505: ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GT Y) & (XP ¥Ra_GE YP)) ¥imp ((X ¥Ra_PLUS XP) ¥Ra_GT (Y ¥Ra_PLUS YP))

(654) Theorem 506: ((X in Ra) & (X /= Ra_0)) ¥imp ((Recip(X) /= Ra_0) & Recip(Recip(X)) = X)

(655) Theorem 507: ([2,0] in Si) & (is_nonneg([2,0])) & is_nonneg([1,0]) & (Fr_to_Ra([[1,0],[2,0]]) in Ra) & (Fr_to_Ra([[1,0],[2,0]]) ¥Ra_GT Ra_0)

(656) Theorem 508: [Transitivity of ordering by 'greater than'] ((X in Ra) & (Y in Ra) & (Z in Ra) & (X ¥Ra_GE Y) & (Y ¥Ra_GE Z)) ¥imp (X ¥Ra_GE Z)

(657) Theorem 509: [Transitivity of ordering, strict case] ((X in Ra) & (Y in Ra) & (Z in Ra) & (X ¥Ra_GT Y) & (Y ¥Ra_GE Z)) ¥imp (X ¥Ra_GT Z)

(658) Theorem 510: [Transitivity of ordering, strict case 2] ((X in Ra) & (Y in Ra) & (Z in Ra) & (X ¥Ra_GE Y) & (Y ¥Ra_GT Z)) ¥imp (X ¥Ra_GT Z)

(659) Theorem 511: ((X in Ra) & (Y in Ra) & (Z in Ra) & (X ¥Ra_GT Y) & (Y ¥Ra_GT Z)) ¥imp (X ¥Ra_GT Z)

(660) Theorem 512: (FORALL x in Ra, y in Ra, z in Ra | ((x ¥Ra_LT y) & (y ¥Ra_LT z)) ¥imp (x ¥Ra_LT z))

(661) Theorem 513: (FORALL x in Ra | not(x ¥Ra_LT x))

(662) Theorem 514: (FORALL x in Ra, y in Ra | (x ¥Ra_LT y) or (x = y) or (y ¥Ra_LT x))

(663) Theorem 515: (FORALL x, y | smaller_Ra(x,y) = if ((x notin Ra) & (y notin Ra)) then Ra elseif (x notin Ra) then y elseif (y notin Ra) then x elseif (x ¥Ra_LT y) then x else y end if) & (FORALL x, y | smaller_Ra(x,y) = smaller_Ra(y,x)) & (FORALL x, y | ({x,y} ¥incin Ra) ¥imp (smaller_Ra(x,y) in {x,y})) & (FORALL x | (x in next(Ra)) ¥imp (smaller_Ra(x,Ra) = x)) & (FORALL x, y, z | smaller_Ra(x,smaller_Ra(y,z)) = smaller_Ra(smaller_Ra(x,y),z)) & (FORALL x, y | ((x in next(Ra)) & (y in next(Ra))) ¥imp (smaller_Ra(x,y) in next(Ra))) & (FORALL f,p,a | (Svm(f) & (range(f) ¥incin Ra) & Finite(f)) ¥imp (((p in f) ¥imp (min_over_Ra({p}) = (f~[car(p)]))) & (min_over_Ra(f) = smaller_Ra(min_over_Ra(f ¥ON (domain(f) * a)),min_over_Ra(f ¥ON (domain(f) - a)))))) & (FORALL f | (Svm(f) & (range(f) ¥incin Ra) & Finite(f) & (f /= 0)) ¥imp (min_over_Ra(f) in range(f))) & (FORALL x, y | ({x,y} ¥incin Ra) ¥imp ((smaller_Ra(x,y) = x) ¥eq ((x ¥Ra_LT y) or (x = y)))) & (FORALL t | ubs_Ra(t) = {x in Ra | (FORALL y in (t * Ra) | smaller_Ra(y,x) = y)}) & (FORALL t | max_Ra(t) = arb({Ra} + (t * ubs_Ra(t)))) & (FORALL t | lub_Ra(t) = arb({Ra} + {x in ubs_Ra(t) | ubs_Ra(t) ¥incin ubs_Ra({x})})) & (ubs_Ra(0) = Ra) & (max_Ra(0) = Ra) & (FORALL t | (ubs_Ra(t) ¥incin Ra) & (ubs_Ra(t) = ubs_Ra(t * Ra)) & (max_Ra(t) = max_Ra(t * Ra))) & (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin Ra)) ¥imp ((max_Ra(t) in t) & ((x = max_Ra(t)) or ((x ¥Ra_LT max_Ra(t))))))

(664) Theorem 516: ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GE Y) & (Y ¥Ra_GE Ra_0) & (YP ¥Ra_GE Ra_0) & (XP ¥Ra_GE YP)) ¥imp ((X ¥Ra_TIMES XP) ¥Ra_GE (Y ¥Ra_TIMES YP))

(665) Theorem 517: ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GT Y) & (Y ¥Ra_GT Ra_0) & (YP ¥Ra_GT Ra_0) & (XP ¥Ra_GE YP)) ¥imp ((X ¥Ra_TIMES XP) ¥Ra_GT (Y ¥Ra_TIMES YP))

(666) Theorem 518: [The rational reciprocal is monotone decreasing for positive rationals] ((X in Ra) & (Y in Ra) & (X ¥Ra_GT Y) & (Y ¥Ra_GT Ra_0)) ¥imp (Recip(Y) ¥Ra_GT Recip(X))

(667) Theorem 519: [The average of two rational numbers lies between them] ((X in Ra) & (Y in Ra) & (X ¥Ra_GT Y)) ¥imp ((X ¥Ra_GT ((X ¥Ra_PLUS Y) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))) & (((X ¥Ra_PLUS Y) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT Y))

(668) Theorem 520: [Properties of the rational number 2] ((Ra_1 ¥Ra_PLUS Ra_1) in Ra) & ((Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT Ra_0) & (Recip(Ra_1 ¥Ra_PLUS Ra_1) in Ra) & ((X in Ra) ¥imp ((X ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) in Ra))

(669) Theorem 521: [Any rational number can be divided into two equal halves] (X in Ra) ¥imp (X = ((X ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_PLUS (X ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))))

(670) Theorem 522: [Every positive rational exceeds the sum of two smaller positive rationals] ((X in Ra) & (X ¥Ra_GT Ra_0)) ¥imp (EXISTS e in Ra, e0 in Ra | (X ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (X ¥Ra_GT (e ¥Ra_PLUS e0)))

(671) Theorem 523: [Every positive rational exceeds some smaller positive rational] ((X in Ra) & (X ¥Ra_GT Ra_0)) ¥imp (EXISTS e in Ra | (X ¥Ra_GT e) & (e ¥Ra_GT Ra_0))

(672) Theorem 524: [the squares of rational numbers are non-negative] (X in Ra) ¥imp ((X ¥Ra_TIMES X) ¥Ra_GE Ra_0)

(673) Theorem 525: [rational numbers meet facts known about ordered groups in general] (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_PLUS y) = (x ¥Ra_PLUS z)) ¥imp (y = z))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_Rev(x ¥Ra_PLUS Ra_Rev(y)) = (y ¥Ra_PLUS Ra_Rev(x)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_LE y) or (y ¥Ra_LE x))) & (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE x)) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (y ¥Ra_LE z)) ¥imp (x ¥Ra_LE z))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (x /= y) & (y ¥Ra_LE z)) ¥imp (x /= z))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (y ¥Ra_LE z) & (y /= z)) ¥imp (x /= z))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp ((x ¥Ra_LE y) ¥imp ((x ¥Ra_PLUS z) ¥Ra_LE (y ¥Ra_PLUS z)))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_PLUS z) = (y ¥Ra_PLUS z)) ¥imp (x = y))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (x /= y)) ¥imp ((x ¥Ra_PLUS z) /= (y ¥Ra_PLUS z)))) & (FORALL x | (x in Ra) ¥imp (Ra_ABS(x ¥Ra_PLUS Ra_Rev(x)) = Ra_0)) & (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE Ra_ABS(x))) & (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_ABS(x)) = Ra_ABS(x))) & (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) & (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_PLUS y) ¥Ra_LE (Ra_ABS(x) ¥Ra_PLUS Ra_ABS(y)))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp ((Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_LE z) ¥imp (y ¥Ra_LE (x ¥Ra_PLUS z)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(x ¥Ra_PLUS y) ¥Ra_LE (Ra_ABS(x) ¥Ra_PLUS Ra_ABS(y)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp ((not(Ra_is_nonneg(x))) ¥imp ((x ¥Ra_LE Ra_ABS(y)) & (x /= Ra_ABS(y))))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (Ra_ABS((x ¥Ra_PLUS Ra_Rev(z))) ¥Ra_LE (Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_PLUS Ra_ABS(y ¥Ra_PLUS Ra_Rev(z))))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_is_nonneg(y) ¥imp ((x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_LE (x ¥Ra_PLUS y)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(Ra_ABS(x) ¥Ra_PLUS Ra_Rev(Ra_ABS(y))) ¥Ra_LE Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(x) ¥Ra_PLUS Ra_Rev(Ra_ABS(Ra_ABS(y) ¥Ra_PLUS Ra_Rev(Ra_ABS(x)))) ¥Ra_LE Ra_ABS(y)))

(674) Theorem 526: ((X in Ra) & (Y in Ra) & (not(X ¥Ra_LE Y))) ¥imp (X ¥Ra_GT Y)

(675) Theorem 527: [The absolute value of a rational $x$ is a non-negative rational no smaller than $x$] (X in Ra) ¥imp ((Ra_ABS(X) in Ra) & (Ra_ABS(X) ¥Ra_GE Ra_0) & (Ra_ABS(X) ¥Ra_GE X))

(676) Theorem 528: [The absolute value of a non-negative rational $x$ is $x$] (X in Ra) ¥imp ((X ¥Ra_GE Ra_0) ¥eq (Ra_ABS(X) = X))

(677) Theorem 529: [The absolute value of a rational $x$ greater than $Ra_0$ is $x$] ((X in Ra) & (X ¥Ra_GT Ra_0)) ¥imp (Ra_ABS(X) = X)

(678) Theorem 530: [The absolute value of a rational product is the product of the absolute values] ((X in Ra) & (Y in Ra)) ¥imp (Ra_ABS(X ¥Ra_TIMES Y) = (Ra_ABS(X) ¥Ra_TIMES Ra_ABS(Y)))

(679) Theorem 531: [If the product of two rationals is 0, one of them is 0] ((X in Ra) & (Y in Ra)) ¥imp (((X ¥Ra_TIMES Y) = Ra_0) ¥eq ((X = Ra_0) or (Y = Ra_0)))

(680) Theorem 532: [Cancellation rule for rational multiplication] ((X in Ra) & (Y in Ra) & (U in Ra) & (X /= Ra_0) & ((X ¥Ra_TIMES Y) = (X ¥Ra_TIMES U))) ¥imp (Y = U)

(681) Theorem 533: [The reciprocal of a rational product is the product of the reciprocals] ((X in Ra) & (Y in Ra) & (X /= Ra_0) & (Y /= Ra_0)) ¥imp (Recip(X ¥Ra_TIMES Y) = (Recip(X) ¥Ra_TIMES Recip(Y)))

(682) Theorem 534: [Formula for the sum of two rational quotients] ((X in Ra) & (Y in Ra) & (U in Ra) & (V in Ra) & (X /= Ra_0) & (Y /= Ra_0)) ¥imp (((U ¥Ra_OVER X) ¥Ra_PLUS (V ¥Ra_OVER Y)) = (((Y ¥Ra_TIMES U) ¥Ra_PLUS (X ¥Ra_TIMES V)) ¥Ra_OVER (X ¥Ra_TIMES Y)))

(683) Theorem 535: ((X in Ra) & (Y in Ra) & (X /= Ra_0) & (Y /= Ra_0)) ¥imp ((Recip(X) ¥Ra_MINUS Recip(Y)) = ((Y ¥Ra_MINUS X) ¥Ra_OVER (X ¥Ra_TIMES Y)))

(684) Theorem 536: [The absolute value of the reciprocal equals the reciprocal of the absolute value] ((X in Ra) & (X /= Ra_0)) ¥imp (Ra_ABS(Recip(X)) = Recip(Ra_ABS(X)))

(684+) Theorem 537: ((X in Ra) & (Y in Ra)) ¥imp (Ra_ABS(X ¥Ra_MINUS Y) = Ra_ABS(Y ¥Ra_MINUS X))

(685) Theorem 538: ((X in Ra) & (Y in Ra) & (A in Ra) & (B in Ra) & (Ra_ABS(X) ¥Ra_GT A) & (Ra_ABS(Y) ¥Ra_GT B) & (A ¥Ra_GT Ra_0) & (B ¥Ra_GT Ra_0)) ¥imp (Ra_ABS(Recip(X) ¥Ra_MINUS Recip(Y)) ¥Ra_LE (Ra_ABS(X ¥Ra_MINUS Y) ¥Ra_TIMES (Recip(A) ¥Ra_TIMES Recip(B))))

(686) Theorem 539: [Every Rational Cauchy sequence is a rational sequence] RaCauchy ¥incin RaSeq

(687) Theorem 540: [The range of a rational sequence is included in the set of rationals] (F in RaSeq) ¥imp ((domain(F) = Za) & Svm(F) & (range(F) ¥incin Ra) & ((X in Za) ¥imp (F~[X] in Ra)))

(688) Theorem 541: [Reformulation of condition for sequence equivalence] ({F,G} ¥incin RaSeq) ¥imp (Ra_eqseq(F,G) ¥eq (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((F~[x]) ¥Ra_MINUS (G~[x])) ¥Ra_GT eps})))

(689) Theorem 542: [Condition for rational sequence equality] (FORALL n in Za | ((F in RaSeq) & (G in RaSeq) & (F~[n] = G~[n]))) ¥imp (F = G)

(690) Theorem pointwiseU.1: h = {[u,uop(fp~[u])]: u in d}

(691) Theorem pointwiseU.2: Svm(h) & (domain(h) = d) & (range(h) ¥incin r)

(692) Theorem pointwiseU.3: (FORALL x in d | h~[x] = uop(fp~[x]))

(693) Theorem pointwise.1: h = {[u,bop(fq~[u],fp~[u])]: u in d}

(694) Theorem pointwise.2: Svm(h) & (domain(h) = d) & (range(h) ¥incin r)

(694+) Theorem pointwise.3: (FORALL x in d | h~[x] = bop(fq~[x],fp~[x]))

(695) Theorem 543: (X in Ra) ¥imp ((Za ¥PROD {X}) in RaCauchy)

(696) Theorem 544: (X in Ra) ¥imp (Ras_ABS(Za ¥PROD {X}) = (Za ¥PROD {Ra_ABS(X)}))

(697) Theorem 545: {Ra0Seq,Ra1Seq} ¥incin RaCauchy

(698) Theorem 546: (F in RaSeq) ¥imp ((domain(F) = Za) & Svm(F) & (range(F) ¥incin Ra) & Ra_eqseq(F,F))

(699) Theorem 547: ((F in RaSeq) & (N in Za) & (I in Za)) ¥imp ((shifted_seq(F,N)~[I]) = (F~[N ¥PLUS I]))

(700) Theorem 548: (U in Za) ¥imp (((Ra0Seq~[U]) = Ra_0) & ((Ra1Seq~[U]) = Ra_1))

(701) Theorem 549: ((F in RaCauchy) & (G in Subseqs(F)) & (not Finite(G))) ¥imp ((G in RaCauchy) & Ra_eqseq(F,G))

(702) Theorem 550: (F in RaCauchy) ¥imp ((H in Za) ¥imp (F~[H] in Ra))

(703) Theorem 551: ((Eps in Ra) & (Eps ¥Ra_GT Ra_0) & (F in RaCauchy)) ¥imp (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (Ra_ABS((F~[i]) ¥Ra_MINUS (F~[j]))) ¥Ra_GT Eps)))

(704) Theorem 552: ((Eps in Ra) & (Eps ¥Ra_GT Ra_0) & (F in RaCauchy)) ¥imp (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (Eps ¥Ra_GT (Ra_ABS((F~[i]) ¥Ra_MINUS (F~[j])))) ))

(705) Theorem 553: (({F,G,H} ¥incin RaSeq) & Ra_eqseq(F,G) & Ra_eqseq(G,H)) ¥imp Ra_eqseq(H,F)

(706) Theorem 554: ({F,G} ¥incin RaSeq) ¥imp (((F ¥Ras_PLUS G) in RaSeq) & (Ras_ABS(G) in RaSeq) & (Ras_Rev(G) in RaSeq) & ((F ¥Ras_TIMES G) in RaSeq) & ((F ¥Ras_PLUS G) = {[u,((F~[u]) ¥Ra_PLUS (G~[u]))]: u in Za}) & (Ras_ABS(G) = {[u,Ra_ABS(G~[u])]: u in Za}) & (Ras_Rev(G) = {[u,Ra_Rev(G~[u])]: u in Za}) & ((F ¥Ras_TIMES G) = {[u,((F~[u]) ¥Ra_TIMES (G~[u]))]: u in Za}))

(707) Theorem 555: (({F1,G1} ¥incin RaSeq) & (N in Za)) ¥imp ((F1~[N] in Ra) & (G1~[N] in Ra) & ((F1 ¥Ras_PLUS G1 in RaSeq) & ((F1 ¥Ras_PLUS G1)~[N] = (F1~[N]) ¥Ra_PLUS (G1~[N]))) & (((Ras_ABS(G1) in RaSeq) & (Ras_ABS(G1)~[N] = Ra_ABS(G1~[N])))) & (((Ras_Rev(G1) in RaSeq) & (Ras_Rev(G1)~[N] = Ra_Rev(G1~[N])))) & (((F1 ¥Ras_TIMES G1 in RaSeq) & (F1 ¥Ras_TIMES G1)~[N] = ((F1~[N]) ¥Ra_TIMES (G1~[N])))))

(708) Theorem 556: ({F,G} ¥incin RaCauchy) ¥imp (((F ¥Ras_PLUS G) in RaCauchy) & (Ras_ABS(F) in RaCauchy) & (Ras_Rev(F) in RaCauchy))

(709) Theorem 557: ((S ¥incin Ra) & Finite(S)) ¥imp (EXISTS u in Ra | (FORALL y in S | u ¥Ra_GE y))

(710) Theorem 558: [Every finite set of integers has a strict upper bound] ((S ¥incin Za) & Finite(S)) ¥imp (EXISTS u in Za | (FORALL y in S | y in u))

(711) Theorem 559: [Every rational Cauchy sequence has an upper bound] (F in RaCauchy) ¥imp (EXISTS x in Ra | (FORALL y in range(F) | y ¥Ra_LE x))

(712) Theorem 560: (F in RaCauchy) ¥imp (EXISTS x in Ra | (FORALL y in range(F) | Ra_ABS(y) ¥Ra_LT x ))

(713) Theorem 561: ({F,G} ¥incin RaCauchy) ¥imp (((F ¥Ras_MINUS G) in RaCauchy) & ((F ¥Ras_TIMES G) in RaCauchy))

(714) Theorem 562: ((G in RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp (EXISTS eps in Ra | (eps ¥Ra_GT Ra_0) & Finite({i in Za | eps ¥Ra_GE Ra_ABS(G~[i])}))

(715) Theorem 563: ((G in RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(G~[i]) ¥Ra_GT eps) & (Ra_ABS(G~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(G~[n]) ¥Ra_GT Ra_0))

(716) Theorem 564: ((H in RaCauchy) & (not Ra_eqseq(H,Ra0Seq))) ¥imp (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | Ra_ABS(H~[i]) ¥Ra_GT eps) & (FORALL i in Za, j in Za | ((i notin n) & (j notin n)) ¥imp (eps ¥Ra_GT (Ra_ABS((H~[i]) ¥Ra_MINUS (H~[j]))))))

(717) Theorem 565: ((G in RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp ({h in Za | (FORALL i in (Za - h) | (G~[i]) /= Ra_0)} /= 0)

(718) Theorem 566: ((F in RaSeq) & (M = arb({h in Za | (FORALL i in (Za - h) | (F~[i]) /= Ra_0)}))) ¥imp (Ras_Recip(F) = Ras_Recip(shifted_seq(F,M)))

(719) Theorem 567: ((F in RaCauchy) & (M in Za)) ¥imp ((shifted_seq(F,M) in RaCauchy) & Ra_eqseq(F,shifted_seq(F,M)))

(720) Theorem 568: ((F in RaCauchy) & (not Ra_eqseq(F,Ra0Seq))) ¥imp (EXISTS g in RaCauchy | Ra_eqseq(F,g) & (Ras_Recip(F) = Ras_Recip(g)) & (FORALL i in Za | ((g~[i]) /= Ra_0) & (Ras_Recip(g)~[i] = Recip(g~[i]))))

(721) Theorem 569: [The reciprocal of a non-null rational sequence is a rational sequence] ((G in RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp (Ras_Recip(G) in RaSeq)

(722) Theorem 570: [Reciprocal and quotient of rational Cauchy sequences are, when defined, Cauchy sequences] (({F,G} ¥incin RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp ((Ras_Recip(G) in RaCauchy) & ((F ¥Ras_OVER G) in RaCauchy))

(723) Theorem 571: (({F,G,Fp,Gp} ¥incin RaSeq) & Ra_eqseq(F,G) & Ra_eqseq(Fp,Gp)) ¥imp Ra_eqseq(F ¥Ras_PLUS Fp, G ¥Ras_PLUS Gp)

(724) Theorem 572: (({F,G,Fp,Gp} ¥incin RaCauchy) & Ra_eqseq(F,G) & Ra_eqseq(Fp,Gp)) ¥imp Ra_eqseq(F ¥Ras_PLUS Fp, G ¥Ras_PLUS Gp)

(725) Theorem 573: (({F,Fp,G} ¥incin RaCauchy) & Ra_eqseq(F,Fp)) ¥imp Ra_eqseq(F ¥Ras_TIMES G, Fp ¥Ras_TIMES G)

(726) Theorem 574: (({F,G,Fp,Gp} ¥incin RaCauchy) & Ra_eqseq(F,G) & Ra_eqseq(Fp,Gp)) ¥imp Ra_eqseq(F ¥Ras_TIMES Fp, G ¥Ras_TIMES Gp)

(727) Theorem 575: (({F,G} ¥incin RaCauchy) & Ra_eqseq(F,G)) ¥imp Ra_eqseq(Ras_Rev(F),Ras_Rev(G))

(728) Theorem 576: (({F,G} ¥incin RaCauchy) & Ra_eqseq(F,G)) ¥imp Ra_eqseq(Ras_ABS(F),Ras_ABS(G))

(729) Theorem 577: (({F,G} ¥incin RaCauchy) & Ra_eqseq(F,G) & (not(Ra_eqseq(F,Ra0Seq)))) ¥imp Ra_eqseq(Ras_Recip(F),Ras_Recip(G))

(730) Theorem 578: ({F,G} ¥incin RaSeq) ¥imp (F ¥Ras_PLUS G = G ¥Ras_PLUS F)

(731) Theorem 579: ({F,G} ¥incin RaSeq) ¥imp (F ¥Ras_TIMES G = G ¥Ras_TIMES F)

(732) Theorem 580: ({F,G,H} ¥incin RaSeq) ¥imp ((F ¥Ras_PLUS G) ¥Ras_PLUS H = F ¥Ras_PLUS (G ¥Ras_PLUS H))

(733) Theorem 581: ({F,G,H} ¥incin RaSeq) ¥imp ((F ¥Ras_TIMES G) ¥Ras_TIMES H = F ¥Ras_TIMES (G ¥Ras_TIMES H))

(734) Theorem 582: [Double-inversion law for rational sequences] (X in RaSeq) ¥imp (Ras_Rev(Ras_Rev(X))=X)

(735) Theorem 583: [Distributive law for multiplication of rational sequences] ({X,Y,V} ¥incin RaSeq) ¥imp ((X ¥Ras_TIMES (Y ¥Ras_PLUS V)) = ((X ¥Ras_TIMES Y) ¥Ras_PLUS (X ¥Ras_TIMES V)))

(736) Theorem 584: [Law of signs for multiplication of rational sequences] ({X,Y} ¥incin RaSeq) ¥imp ((X ¥Ras_TIMES Ras_Rev(Y)) = Ras_Rev(X ¥Ras_TIMES Y))

(737) Theorem 585: [Law of signs for multiplication of rational sequences, 2] ({X,Y} ¥incin RaSeq) ¥imp (((Ras_Rev(X) ¥Ras_TIMES Y) = Ras_Rev(X ¥Ras_TIMES Y)) & ((Ras_Rev(X) ¥Ras_TIMES Ras_Rev(Y)) = (X ¥Ras_TIMES Y)))

(738) Theorem 586: [Any rational sequence times 0 is 0] (X in RaSeq) ¥imp ((X ¥Ras_TIMES Ra0Seq) = Ra0Seq)

(739) Theorem 587: [0 is a right additive identity for rational sequences] (X in RaSeq) ¥imp (X ¥Ras_PLUS Ra0Seq = X)

(740) Theorem 588: [1 is a left multiplicative identity for rational sequences] (X in RaSeq) ¥imp (X ¥Ras_TIMES Ra1Seq = X)

(741) Theorem 589: [0 is right subtractive identity for rational sequence subtraction] (X in RaSeq) ¥imp (X ¥Ras_MINUS Ra0Seq = X)

(742) Theorem 590: [Basic properties of the signed negative for rational sequences] (X in RaSeq) ¥imp ((Ras_Rev(X) in RaSeq) & ((Ras_Rev(X) ¥Ras_PLUS X) = Ra0Seq) & (Ras_Rev(Ras_Rev(X)) = X))

(743) Theorem 591: [Reciprocal sequence principle] ((X in RaCauchy) & (not Ra_eqseq(X,Ra0Seq))) ¥imp Ra_eqseq(X ¥Ras_TIMES Ras_Recip(X),Ra1Seq)

(744) Theorem 592: [The negative of a sum of rational sequences is the sum of the negatives] ((X in RaSeq) & (Y in RaSeq)) ¥imp (Ras_Rev(X ¥Ras_PLUS Y) = Ras_Rev(X) ¥Ras_PLUS Ras_Rev(Y))

(745) Theorem 593: [A rational sequence minus itself gives 0] (X in RaSeq) ¥imp ((X ¥Ras_MINUS X) = Ra0Seq)

(746) Theorem 594: [Multiplication by $Ras_Rev(Ra1Seq)$] (X in RaSeq) ¥imp (Ras_Rev(X) = (Ras_Rev(Ra1Seq) ¥Ras_TIMES X))

(747) Theorem 595: [The zero sequence is its own negative] Ras_Rev(Ra0Seq) = Ra0Seq

(748) Theorem 596: [The zero/unit sequence is its own absolute value] (Ras_ABS(Ra0Seq) = Ra0Seq) & (Ras_ABS(Ra1Seq) = Ra1Seq)

(749) Theorem 597: [?] ((H in RaCauchy) & Ra_eqseq(H,Ra0Seq)) ¥imp (Ra_eqseq(Ras_ABS(H),Ra0Seq) & (Ra_eqseq(Ras_Rev(H),Ra0Seq)))

(750) Theorem 598: [All terms of a Cauchy sequence not equivalent to zero have the same sign and have an absolute value bounded below beyond a certain point] ((F in RaCauchy) & (not Ra_eqseq(F,Ra0Seq))) ¥imp (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(F~[i]) ¥Ra_GT eps) & (Ra_ABS(F~[i]) = if ((F~[n]) ¥Ra_GE Ra_0) then (F~[i]) else Ra_Rev(F~[i]) end if) ))

(751) Theorem 599: [All terms of a Cauchy sequence not equivalent to zero have the same sign beyond a certain point] ((F in RaCauchy) & (not Ra_eqseq(F,Ra0Seq))) ¥imp (EXISTS n in Za | shifted_seq(Ras_ABS(F),n) = if ((F~[n]) ¥Ra_GE Ra_0) then shifted_seq(F,n) else shifted_seq(Ras_Rev(F),n) end if)

(752) Theorem 600: [A rational Cauchy sequence is equivalent to zero iff both it and its additive inverse are equivalent to its absolute value] (F in RaCauchy) ¥imp (Ra_eqseq(F,Ra0Seq) ¥eq (Ra_eqseq(Ras_ABS(F),F) & Ra_eqseq(Ras_ABS(F),Ras_Rev(F))))

(753) Theorem 601: [One of a Cauchy sequence and its additive inverse is always equivalent to a non-negative sequence] ((F in RaCauchy) & (not Ra_eqseq(F,Ra0Seq))) ¥imp (EXISTS n in Za | ((shifted_seq(Ras_ABS(F),n) = shifted_seq(F,n)) & Ra_eqseq(Ras_ABS(F),F)) or ((shifted_seq(Ras_ABS(F),n) = shifted_seq(Ras_Rev(F),n)) & Ra_eqseq(Ras_ABS(F),Ras_Rev(F))))

(754) Theorem 602: [One of a Cauchy sequence $F$ and its additive inverse is always equivalent to a non-negative sequence, and both are equivalent to non-negative sequences only if $F$ is equivalent to zero] (F in RaCauchy) ¥imp ((Ra_eqseq(Ras_ABS(F),F) or Ra_eqseq(Ras_ABS(F),Ras_Rev(F))) & (((Ra_eqseq(Ras_ABS(F),F) & Ra_eqseq(Ras_ABS(F),Ras_Rev(F)))) ¥imp Ra_eqseq(F,Ra0Seq)))

(755) Theorem 603: [The unit Cauchy sequences $Ra0Seq,Ra1Seq$ differ from one another] (not Ra_eqseq(Ra0Seq,Ra1Seq))

(756) Theorem 604: [A rational sequence F and its additive inverse have the same absolute value] (F in RaSeq) ¥imp (Ras_ABS(Ras_Rev(F)) = Ras_ABS(F))

(757) Theorem 605: (F in RaSeq) ¥imp (((F ¥Ras_PLUS Ra0Seq) = F) & ((F ¥Ras_TIMES Ra1Seq) = F))

(758) Theorem 606: (FORALL f in RaCauchy, g in RaCauchy | (Ra_eqseq(f,g) ¥eq Ra_eqseq(g,f)) & Ra_eqseq(f,f))

(759) Theorem 607: ((F in RaCauchy) & (G in RaCauchy)) ¥imp ((Ra_eqseq(F,G) ¥eq Ra_eqseq(G,F)) & Ra_eqseq(F,F))

(760) Theorem 608: (FORALL f in RaCauchy, g in RaCauchy, h in RaCauchy | (Ra_eqseq(f,g) & Ra_eqseq(g,h)) ¥imp Ra_eqseq(f,h))

(761) Theorem 609: (FORALL x, y | ((x in RaCauchy) & (y in RaCauchy)) ¥imp ((Ra_eqseq(x,y) ¥eq (Cauchy_to_Re(x) = Cauchy_to_Re(y))))) & (FORALL x | (x in Re) ¥imp ((arb(x) in RaCauchy) & (Cauchy_to_Re(arb(x)) = x))) & (FORALL x | (x in RaCauchy) ¥imp (Cauchy_to_Re(x) in Re)) & (FORALL x | (x in RaCauchy) ¥imp Ra_eqseq(x,arb(Cauchy_to_Re(x))))

(762) Theorem 610: ((X in RaCauchy) & (Y in RaCauchy)) ¥imp ((Ra_eqseq(X,Y) ¥eq (Cauchy_to_Re(X) = Cauchy_to_Re(Y))) & (Cauchy_to_Re(X) in Re) & Ra_eqseq(X,arb(Cauchy_to_Re(X))))

(763) Theorem 611: (X in Re) ¥imp ((arb(X) in RaCauchy) & (arb(X) in RaSeq) & (Cauchy_to_Re(arb(X)) = X))

(764) Theorem 612: (R_0 in Re) & (R_1 in Re)

(765) Theorem 613: ({X,Y} ¥incin Re) ¥imp (((X ¥R_PLUS Y) in Re) & (R_Rev(X) in Re))

(766) Theorem 614: ({X,Y} ¥incin Re) ¥imp (((X ¥R_MINUS Y) in Re) & ((X ¥R_TIMES Y) in Re))

(767) Theorem 615: [Commutative law for real addition] ({X,Y} ¥incin Re) ¥imp ((X ¥R_PLUS Y) = (Y ¥R_PLUS X))

(768) Theorem 616: [Elementary algebraic lemma for real addition] ((X in RaCauchy) & (Y in RaCauchy)) ¥imp (Cauchy_to_Re(X ¥Ras_PLUS Y) = (Cauchy_to_Re(X) ¥R_PLUS Cauchy_to_Re(Y)))

(769) Theorem 617: [Associative law for real addition] ({X,Y,V} ¥incin Re) ¥imp ((X ¥R_PLUS (Y ¥R_PLUS V)) = ((X ¥R_PLUS Y) ¥R_PLUS V))

(770) Theorem 618: [Commutative law for real multiplication] ({X,Y} ¥incin Re) ¥imp ((X ¥R_TIMES Y) = (Y ¥R_TIMES X))

(771) Theorem 619: [Elementary algebraic lemma for real multiplication] ((X in RaCauchy) & (Y in RaCauchy)) ¥imp (Cauchy_to_Re(X ¥Ras_TIMES Y) = (Cauchy_to_Re(X) ¥R_TIMES Cauchy_to_Re(Y)))

(772) Theorem 620: [Associative law for real multiplication] ({X,Y,V} ¥incin Re) ¥imp ((X ¥R_TIMES (Y ¥R_TIMES V)) = ((X ¥R_TIMES Y) ¥R_TIMES V))

(773) Theorem 621: [Distributive law for real multiplication] ({X,Y,V} ¥incin Re) ¥imp ((X ¥R_TIMES (Y ¥R_PLUS V)) = ((X ¥R_TIMES Y) ¥R_PLUS (X ¥R_TIMES V)))

(774) Theorem 622: [Lemma for law of signs] (X in RaCauchy) ¥imp (Cauchy_to_Re(Ras_Rev(X)) = R_Rev(Cauchy_to_Re(X)))

(775) Theorem 623: [Law of signs for real multiplication] ({X,Y} ¥incin Re) ¥imp (((X ¥R_TIMES R_Rev(Y)) = R_Rev(X ¥R_TIMES Y)) & ((R_Rev(X) ¥R_TIMES Y) = R_Rev(X ¥R_TIMES Y)) & ((R_Rev(X) ¥R_TIMES R_Rev(Y)) = (X ¥R_TIMES Y)))

(776) Theorem 624: [Any real times 0 is 0] (X in Re) ¥imp ((X ¥R_TIMES R_0) = R_0)

(777) Theorem 625: [0 times any real is 0] (X in Re) ¥imp (R_0 ¥R_TIMES X = R_0)

(778) Theorem 626: [0 is a right and left additive identity for reals] (X in Re) ¥imp ((X ¥R_PLUS R_0 = X) & (R_0 ¥R_PLUS X = X))

(779) Theorem 627: [1 is a right multiplicative identity for reals] (X in Re) ¥imp (X ¥R_TIMES R_1 = X)

(780) Theorem 628: [1 is a left multiplicative identity for reals] (X in Re) ¥imp (R_1 ¥R_TIMES X = X)

(781) Theorem 629: [The zero real is its own negative] R_Rev(R_0) = R_0

(782) Theorem 630: [0 is right identity for real subtraction] (X in Re) ¥imp (X ¥R_MINUS R_0 = X)

(783) Theorem 631: [Real subtraction principle] (X in Re) ¥imp (X ¥R_MINUS X = R_0)

(784) Theorem 632: [Basic properties of the signed negative for reals] (X in Re) ¥imp ((R_Rev(X) in Re) & ((R_Rev(X) ¥R_PLUS X) = R_0))

(784+) Theorem 633: [Basic properties of the signed negative for reals, 2] (X in Re) ¥imp (R_Rev(R_Rev(X)) = X)

(785) Theorem 634: [Real additive Cancellation] ((X in Re) & (Y in Re) & (V in Re) & (X ¥R_PLUS V = Y ¥R_PLUS V)) ¥imp (X = Y)

(786) Theorem 635: [Real subtraction is addition of the negative] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_MINUS Y) = (X ¥R_PLUS R_Rev(Y)))

(787) Theorem 636: [The sum of a real number and its additive inverse is zero] (X in Re) ¥imp ((R_Rev(X) in Re) & ((X ¥R_PLUS R_Rev(X)) = R_0))

(788) Theorem 637: [The negative of a real $x$ is zero iff $x$ is zero] (X in Re) ¥imp ((R_Rev(X) = R_0) ¥eq (X = R_0))

(789) Theorem 638: [The negative of a real sum is the sum of the negatives] ((X in Re) & (Y in Re)) ¥imp (R_Rev(X ¥R_PLUS Y) = R_Rev(X) ¥R_PLUS R_Rev(Y))

(790) Theorem 639: [Real addition-subtraction commutativity] ((X in Re) & (Y in Re) & (V in Re)) ¥imp (X ¥R_MINUS (Y ¥R_PLUS V) = (X ¥R_MINUS Y) ¥R_MINUS V)

(791) Theorem 640: [Real subtraction reverses addition] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_PLUS Y) ¥R_MINUS Y = X)

(792) Theorem 641: [Real subtraction reverses addition, 2] ((X in Re) & (Y in Re)) ¥imp (X = (Y ¥R_PLUS (X ¥R_MINUS Y)))

(793) Theorem 642: [Multiplication by $R_Rev(R_1)$] (X in Re) ¥imp (R_Rev(X) = R_Rev(R_1) ¥R_TIMES X)

(794) Theorem 643: [Distributivity of multiplication over subtraction] ((X in Re) & (Y in Re) & (V in Re)) ¥imp ((X ¥R_TIMES (Y ¥R_MINUS V)) = ((X ¥R_TIMES Y) ¥R_MINUS (X ¥R_TIMES V)))

(795) Theorem 644: [Additive inverse of real difference] ((X in Re) & (Y in Re)) ¥imp (R_Rev(X ¥R_MINUS Y) = (Y ¥R_MINUS X))

(796) Theorem 645: [Real reciprocal principle] ((X in Re) & (X /= R_0)) ¥imp (X ¥R_TIMES R_Recip(X) = R_1)

(797) Theorem 646: [Real division principle] ((X in Re) & (X /= R_0)) ¥imp (X ¥R_OVER X = R_1)

(798) Theorem 647: [Basic properties of the reciprocal for reals] ((X in Re) & (X /= R_0)) ¥imp ((R_Recip(X) in Re) & (R_Recip(X) /= R_0) & ((R_Recip(X) ¥R_TIMES X) = R_1))

(799) Theorem 648: [Basic properties of the reciprocal for reals, 2] ((X in Re) & (X /= R_0)) ¥imp (R_Recip(R_Recip(X)) = X)

(800) Theorem 649: [Reverse of real reciprocal] ((X in Re) & (X /= R_0)) ¥imp (R_Recip(R_Rev(X)) = R_Rev(R_Recip(X)))

(801) Theorem 650: [Real multiplicative Cancellation] ((X in Re) & (Y in Re) & (V in Re) & (X ¥R_TIMES V = Y ¥R_TIMES V) & (V /= R_0)) ¥imp (X = Y)

(802) Theorem 651: [Reals are closed under division] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp ((X ¥R_OVER Y in Re) & ((X /= R_0) ¥imp ((X ¥R_OVER Y /= R_0) & (X ¥R_TIMES Y /= R_0))))

(803) Theorem 652: [Real division is multiplication by the reciprocal] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp ((X ¥R_OVER Y) = (X ¥R_TIMES R_Recip(Y)))

(804) Theorem 653: [The reciprocal of a real product is the product of the reciprocals] ((X in Re) & (Y in Re) & (X /= R_0) & (Y /= R_0)) ¥imp ((X ¥R_TIMES Y /= R_0) & R_Recip(X ¥R_TIMES Y) = R_Recip(X) ¥R_TIMES R_Recip(Y))

(805) Theorem 654: [Real multiplication-division commutativity] ((X in Re) & (Y in Re) & (Y /= R_0) & (V in Re) & (V /= R_0)) ¥imp (X ¥R_OVER (Y ¥R_TIMES V) = (X ¥R_OVER Y) ¥R_OVER V)

(806) Theorem 655: [A real divided by itself gives 1] ((X in Re) & (X /= R_0)) ¥imp (X ¥R_OVER X = R_1)

(807) Theorem 656: [Real reciprocal as a quotient] ((X in Re) & (X /= R_0)) ¥imp (R_Recip(X) = R_1 ¥R_OVER X)

(808) Theorem 657: [Distributivity of division over addition] ((X in Re) & (Y in Re) & (V in Re) & (V /= R_0)) ¥imp ((X ¥R_PLUS Y) ¥R_OVER V = ((X ¥R_OVER V) ¥R_PLUS (Y ¥R_OVER V)))

(809) Theorem 658: [Real division reverses multiplication] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp ((X ¥R_TIMES Y) ¥R_OVER Y = X)

(810) Theorem 659: [Real division reverses multiplication,2] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp (X = (Y ¥R_TIMES (X ¥R_OVER Y)))

(811) Theorem 660: [Distributivity of division over subtraction] ((X in Re) & (Y in Re) & (V in Re) & (V /= R_0)) ¥imp (((X ¥R_MINUS Y) ¥R_OVER V) = ((X ¥R_OVER V) ¥R_MINUS (Y ¥R_OVER V)))

(812) Theorem 661: (X in Re) ¥imp ((R_Rev(X) = Cauchy_to_Re(arb(R_Rev(X)))) & Ra_eqseq(Ras_ABS(arb(X)),arb(Cauchy_to_Re(Ras_ABS(arb(X))))))

(813) Theorem 662: ((X in Re) & (Y in Re)) ¥imp Ra_eqseq((arb(X) ¥Ras_PLUS arb(Y)),arb(Cauchy_to_Re(arb(X) ¥Ras_PLUS arb(Y))))

(814) Theorem 663: [Any real $x$ or its reverse is non-negative, and if both are non-negative, then $x = 0$] (X in Re) ¥imp ((R_is_nonneg(X) or R_is_nonneg(R_Rev(X))) & ((R_is_nonneg(X) & R_is_nonneg(R_Rev(X))) ¥imp (X = R_0)))

(815) Theorem 664: [Each non-negative rational Cauchy sequences is equivalent to its own absolute value] (X in Re) ¥imp (R_is_nonneg(X) ¥eq Ra_eqseq(arb(X),Ras_ABS(arb(X))))

(816) Theorem 665: [The sum of two non-negative rational Cauchy sequences is equivalent to its own absolute value] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp Ra_eqseq(arb(X) ¥Ras_PLUS arb(Y),Ras_ABS(arb(X) ¥Ras_PLUS arb(Y)))

(817) Theorem 666: [The product of two non-negative rational Cauchy sequences is equivalent to its own absolute value] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp Ra_eqseq(arb(X) ¥Ras_TIMES arb(Y),Ras_ABS(arb(X) ¥Ras_TIMES arb(Y)))

(818) Theorem 667: [The sum and product of two non-negative reals is non-negative] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp (R_is_nonneg(X ¥R_PLUS Y) & R_is_nonneg(X ¥R_TIMES Y))

(819) Theorem 668: [Transitivity of ordering] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GE Y) & (Y ¥R_GE Z)) ¥imp (X ¥R_GE Z)

(820) Theorem 669: [The reals are a linearly ordered set] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_GT Y) or (X = Y) or (Y ¥R_GT X))

(821) Theorem 670: [The reals are a linearly ordered set, 2] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_LT Y) or (X = Y) or (Y ¥R_LT X))

(822) Theorem 671: [0 and 1 are non-negative reals] R_is_nonneg(R_0) & R_is_nonneg(R_1)

(823) Theorem 672: [The reals are a linearly ordered set, 3] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_GE Y) or (Y ¥R_GE X)) & (((X ¥R_GE Y) & (Y ¥R_GE X)) ¥imp (X = Y)))

(824) Theorem 673: [The ordering of reals is defined by the sign of their differences] ((((X in Re) & (Y in Re)) ¥imp ((X ¥R_GE Y) ¥eq R_is_nonneg(X ¥R_PLUS R_Rev(Y))))) & ((X ¥R_LE Y) ¥eq (Y ¥R_GE X)) & ((X ¥R_GT Y) ¥eq ((X ¥R_GE Y) & (X /= Y))) & ((X ¥R_LT Y) ¥eq (Y ¥R_GT X))

(825) Theorem 674: [Various basic properties of real comparison, quantified form] (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GE y) ¥eq R_is_nonneg(x ¥R_PLUS R_Rev(y)))) & (FORALL x, y | ((x ¥R_LE y) ¥eq (y ¥R_GE x))) & (FORALL x, y | ((x ¥R_GT y) ¥eq ((x ¥R_GE y) & (x /= y)))) & (FORALL x, y | ((x ¥R_LT y) ¥eq (y ¥R_GT x))) & (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq (R_is_nonneg(y ¥R_PLUS R_Rev(x))))) & (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_PLUS R_Rev(y)) & (x /= y)))) & (FORALL x, y | (((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_MINUS y) & (x /= y))))) & (FORALL x, y | ((x in Re) & (y in Re) & ((x = y) or (not(x ¥R_GE y)))) ¥imp (y ¥R_GE x))

(826) Theorem 675: [Various basic properties of real comparison] (((X in Re) & (Y in Re)) ¥imp ((X ¥R_GE Y) ¥eq R_is_nonneg(X ¥R_PLUS R_Rev(Y)))) & ((X ¥R_LE Y) ¥eq (Y ¥R_GE X)) & ((X ¥R_GT Y) ¥eq ((X ¥R_GE Y) & (X /= Y))) & ((X ¥R_LT Y) ¥eq (Y ¥R_GT X)) & (((X in Re) & (Y in Re)) ¥imp ((X ¥R_LE Y) ¥eq R_is_nonneg(Y ¥R_PLUS R_Rev(X)))) & (((X in Re) & (Y in Re)) ¥imp ((X ¥R_GT Y) ¥eq (R_is_nonneg(X ¥R_PLUS R_Rev(Y)) & (X /= Y)))) & (((X in Re) & (Y in Re)) ¥imp ((X ¥R_GT Y) ¥eq (R_is_nonneg(X ¥R_MINUS Y) & (X /= Y)))) & (((X in Re) & (Y in Re) & ((X = Y) or (not(X ¥R_GE Y)))) ¥imp (Y ¥R_GE X))

(827) Theorem 676: [Mutual exclusion of strict real comparators] ((X in Re) & (Y in Re) & (X ¥R_GT Y)) ¥imp (not(X ¥R_LT Y))

(828) Theorem 677: [Transitivity of ordering, strict case] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GT Y) & (Y ¥R_GE Z)) ¥imp (X ¥R_GT Z)

(829) Theorem 678: [Transitivity of ordering, strict case 2] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GE Y) & (Y ¥R_GT Z)) ¥imp (X ¥R_GT Z)

(830) Theorem 679: [Transitivity of ordering,strict case 3] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GT Y) & (Y ¥R_GT Z)) ¥imp (X ¥R_GT Z)

(831) Theorem 680: [Greater_than_equal is greater-than and equal] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_GE Y) ¥eq ((X ¥R_GT Y) or (X = Y)))

(832) Theorem 681: [Greater_than_equal is greater-than and equal] (X in Re) ¥imp ((X ¥R_GE R_0) ¥eq R_is_nonneg(X))

(833) Theorem 682: [Less_than_equal is less-than and equal] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_LE Y) ¥eq ((X ¥R_LT Y) or (X = Y)))

(834) Theorem 683: [Transitivity of ordering by 'less than'] ((X in Re) & (Y in Re) & (Z in Re)) ¥imp (((X ¥R_LE Y) & (Y ¥R_LT Z)) ¥imp (X ¥R_LT Z))

(835) Theorem 684: [Transitivity of ordering by 'less than', 2] ((X in Re) & (Y in Re) & (Z in Re)) ¥imp (((X ¥R_LT Y) & (Y ¥R_LE Z)) ¥imp (X ¥R_LT Z))

(836) Theorem 685: [Transitivity of ordering by 'less than', 3] ((X in Re) & (Y in Re) & (Z in Re)) ¥imp (((X ¥R_LT Y) & (Y ¥R_LT Z)) ¥imp (X ¥R_LT Z))

(837) Theorem 686: [No real is less than itself] not(X ¥R_LT X)

(838) Theorem 687: (FORALL x in Re, y in Re, z in Re | ((x ¥R_LT y) & (y ¥R_LT z)) ¥imp (x ¥R_LT z))

(839) Theorem 688: (FORALL x in Re | not(x ¥R_LT x))

(840) Theorem 689: (FORALL x in Re, y in Re | (x ¥R_LT y) or (x = y) or (y ¥R_LT x))

(841) Theorem 690: (FORALL x, y | smaller_Re(x,y) = if ((x notin Re) & (y notin Re)) then Re elseif (x notin Re) then y elseif (y notin Re) then x elseif (x ¥R_LT y) then x else y end if) & (FORALL x, y | smaller_Re(x,y) = smaller_Re(y,x)) & (FORALL x, y | ({x,y} ¥incin Re) ¥imp (smaller_Re(x,y) in {x,y})) & (FORALL x | (x in next(Re)) ¥imp (smaller_Re(x,Re) = x)) & (FORALL x, y, z | smaller_Re(x,smaller_Re(y,z)) = smaller_Re(smaller_Re(x,y),z)) & (FORALL x, y | ((x in next(Re)) & (y in next(Re))) ¥imp (smaller_Re(x,y) in next(Re))) & (FORALL f,p,a | (Svm(f) & (range(f) ¥incin Re) & Finite(f)) ¥imp (((p in f) ¥imp (min_over_Re({p}) = (f~[car(p)]))) & (min_over_Re(f) = smaller_Re(min_over_Re(f ¥ON (domain(f) * a)),min_over_Re(f ¥ON (domain(f) - a)))))) & (FORALL f | (Svm(f) & (range(f) ¥incin Re) & Finite(f) & (f /= 0)) ¥imp (min_over_Re(f) in range(f))) & (FORALL x, y | ({x,y} ¥incin Re) ¥imp ((smaller_Re(x,y) = x) ¥eq ((x ¥R_LT y) or (x = y)))) & (FORALL t | ubs_Re(t) = {x in Re | (FORALL y in (t * Re) | smaller_Re(y,x) = y)}) & (FORALL t | max_Re(t) = arb({Re} + (t * ubs_Re(t)))) & (FORALL t | lub_Re(t) = arb({Re} + {x in ubs_Re(t) | ubs_Re(t) ¥incin ubs_Re({x})})) & (ubs_Re(0) = Re) & (max_Re(0) = Re) & (FORALL t | (ubs_Re(t) ¥incin Re) & (ubs_Re(t) = ubs_Re(t * Re)) & (max_Re(t) = max_Re(t * Re))) & (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin Re)) ¥imp ((max_Re(t) in t) & ((x = max_Re(t)) or ((x ¥R_LT max_Re(t))))))

(842) Theorem 691: [Sign reversal inverts comparisons] ((X in Re) & (Y in Re) & (X ¥R_GE Y)) ¥imp (R_Rev(Y) ¥R_GE R_Rev(X))

(843) Theorem 692: [Sign reversal inverts comparisons,2] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_GE Y) ¥eq (R_Rev(Y) ¥R_GE R_Rev(X))) & ((X ¥R_GT Y) ¥eq (R_Rev(Y) ¥R_GT R_Rev(X))))

(844) Theorem 693: [Properties of the real zero and unit] (R_Rev(R_0) = R_0) & (R_1 /= R_0) & (R_1 ¥R_GT R_0) & (R_Recip(R_1) = R_1)

(845) Theorem 694: [Monotonicity of addition over 2nd argument] ((X in Re) & (XP in Re) & (YP in Re) & (XP ¥R_GE YP)) ¥imp ((X ¥R_PLUS XP) ¥R_GE (X ¥R_PLUS YP))

(846) Theorem 695: [Monotonicity of real addition] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE Y) & (XP ¥R_GE YP)) ¥imp ((X ¥R_PLUS XP) ¥R_GE (Y ¥R_PLUS YP))

(847) Theorem 696: [Strict monotonicity of addition] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE Y) & (XP ¥R_GT YP)) ¥imp ((X ¥R_PLUS XP) ¥R_GT (Y ¥R_PLUS YP))

(848) Theorem 697: [Strict monotonicity of addition] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GT Y) & (XP ¥R_GE YP)) ¥imp ((X ¥R_PLUS XP) ¥R_GT (Y ¥R_PLUS YP))

(849) Theorem 698: [Strict monotonicity of addition, 2] ((X in Re) & (Y in Re) & (V in Re) & (X ¥R_GE Y)) ¥imp (((Y ¥R_PLUS V) ¥R_GE (X ¥R_PLUS V)) ¥eq (X = Y))

(850) Theorem 699: ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y) & (X ¥R_PLUS Y = R_0)) ¥imp ((X = R_0) & (Y = R_0))

(851) Theorem 700: [The product of two reals is 0 if and only if one of them is 0] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_TIMES Y) = R_0) ¥eq ((X = R_0) or (Y = R_0)))

(852) Theorem 701: [Monotonicity of multiplication over 2nd argument] ((X in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE R_0) & (XP ¥R_GE YP)) ¥imp ((X ¥R_TIMES XP) ¥R_GE (X ¥R_TIMES YP))

(853) Theorem 702: [Monotonicity of multiplication] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE Y) & (Y ¥R_GE R_0) & (YP ¥R_GE R_0) & (XP ¥R_GE YP)) ¥imp ((X ¥R_TIMES XP) ¥R_GE (Y ¥R_TIMES YP))

(854) Theorem 703: [Strict monotonicity of multiplication over 2nd argument] ((X in Re) & (XP in Re) & (YP in Re) & (X ¥R_GT R_0) & (XP ¥R_GT YP)) ¥imp ((X ¥R_TIMES XP) ¥R_GT (X ¥R_TIMES YP))

(855) Theorem 704: [Strict monotonicity of multiplication] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE Y) & (Y ¥R_GT R_0) & (YP ¥R_GT R_0) & (XP ¥R_GT YP)) ¥imp ((X ¥R_TIMES XP) ¥R_GT (Y ¥R_TIMES YP))

(856) Theorem 705: [Multiplication by a positive real is strictly monotone] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GT Y) & (Z ¥R_GT R_0)) ¥imp ((X ¥R_TIMES Z) ¥R_GT (Y ¥R_TIMES Z))

(857) Theorem 706: [The product of reals $x,y$ of which $x$ is positive is non-negative iff $y$ is non-negative] ((X in Re) & (Y in Re) & (X /= R_0) & R_is_nonneg(X)) ¥imp (R_is_nonneg(X ¥R_TIMES Y) ¥eq R_is_nonneg(Y))

(858) Theorem 707: [The product of nonnegative reals is non-negative] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp R_is_nonneg(X ¥R_TIMES Y)

(859) Theorem 708: [Condition for positiveness of a product of reals] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_TIMES Y) ¥R_GT R_0) ¥eq (((X ¥R_GT R_0) & (Y ¥R_GT R_0)) or ((R_0 ¥R_GT X) & (R_0 ¥R_GT Y))))

(860) Theorem 709: [The reciprocal of a positive real is positive] ((X in Re) & (X ¥R_GT R_0)) ¥imp (R_Recip(X) ¥R_GT R_0)

(861) Theorem 710: [The sum of non-negative reals is at least as big at each addend] ((X in Re) & (Y in Re) & (X ¥R_GE R_0)) ¥imp ((X ¥R_PLUS Y) ¥R_GE Y)

(862) Theorem 711: [The sum of non-negative reals is zero only if the addends are zero] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y) & (X ¥R_PLUS Y = R_0)) ¥imp ((X = R_0) & (Y = R_0))

(863) Theorem 712: [The reciprocal is monotone decreasing for positive reals] ((X in Re) & (Y in Re) & (X ¥R_GT Y) & (Y ¥R_GT R_0)) ¥imp (R_Recip(Y) ¥R_GT R_Recip(X))

(864) Theorem 713: [Two non-null reals are equal iff their reciprocals are equal] ((X in Re) & (X /= R_0) & (Y in Re) & (Y /= R_0) & (R_Recip(X) = R_Recip(Y))) ¥imp (X = Y)

(865) Theorem 714: [The square of any real is non-negative] (X in Re) ¥imp R_is_nonneg(X ¥R_TIMES X)

(865+) Theorem 715: [Monotonicity of squaring] ((X in Re) & (Y in Re) & (X ¥R_GE R_0) & (Y ¥R_GE R_0)) ¥imp ((X ¥R_GE Y) ¥eq ((X ¥R_TIMES X) ¥R_GE (Y ¥R_TIMES Y)))

(866) Theorem 716: [Properties of the real number 2] ((R_1 ¥R_PLUS R_1) in Re) & ((R_1 ¥R_PLUS R_1) ¥R_GT R_0) & (R_Recip(R_1 ¥R_PLUS R_1) in Re) & (R_Recip(R_1 ¥R_PLUS R_1) /= R_0) & ((X in Re) ¥imp ((X ¥R_OVER (R_1 ¥R_PLUS R_1)) in Re))

(867) Theorem 717: [Any real number can be divided into two equal halves] (X in Re) ¥imp (X = (X ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_PLUS (X ¥R_OVER (R_1 ¥R_PLUS R_1)))

(868) Theorem 718: [The average of two real numbers lies between them] ((X in Re) & (Y in Re) & (X ¥R_GT Y)) ¥imp ((X ¥R_GT ((X ¥R_PLUS Y) ¥R_OVER (R_1 ¥R_PLUS R_1))) & (((X ¥R_PLUS Y) ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_GT Y))

(869) Theorem 719: [Every positive real exceeds the sum of two smaller positive reals] ((X in Re) & (X ¥R_GT R_0)) ¥imp (EXISTS e in Re , e0 in Re | (X ¥R_GT e) & (e ¥R_GT e0) & (e0 ¥R_GT R_0) & (e ¥R_GT R_0) & (X ¥R_GT (e ¥R_PLUS e0)))

(870) Theorem 720: [Every positive real exceeds some smaller positive real] ((X in Re) & (X ¥R_GT R_0)) ¥imp (EXISTS e in Re | (X ¥R_GT e) & (e ¥R_GT R_0))

(871) Theorem 721: [Trigger for Otter theory 'orderedGroups'] (R_0 in Re) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) in Re)) & (FORALL x | (x in Re) ¥imp (R_Rev(x) in Re)) & (FORALL x,y,z | ((x in Re) & (y in Re) & (z in Re)) ¥imp (((x ¥R_PLUS y) ¥R_PLUS z) = (x ¥R_PLUS (y ¥R_PLUS z)))) & (FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_0) = x)) & (FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_Rev(x)) = R_0)) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) = (y ¥R_PLUS x))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((R_is_nonneg(x) & R_is_nonneg(y)) ¥imp R_is_nonneg(x ¥R_PLUS y))) & (FORALL x | (x in Re) ¥imp (R_is_nonneg(x) or R_is_nonneg(R_Rev(x)))) & (FORALL x | (x in Re) ¥imp ((R_is_nonneg(x) & R_is_nonneg(R_Rev(x))) ¥imp (x = R_0))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq R_is_nonneg(y ¥R_PLUS R_Rev(x))))

(872) Theorem 722: [Basic properties of the absolute value function] (FORALL x | abs(x) = if R_is_nonneg(x) then x else R_Rev(x) end if) & (FORALL x | (x in Re) ¥imp (x ¥R_LE abs(x))) & (FORALL x | (x in Re) ¥imp (abs(abs(x)) = abs(x))) & (FORALL x | (x in Re) ¥imp ((abs(x) = R_0) ¥eq (x = R_0))) & (FORALL x | (x in Re) ¥imp (abs(R_Rev(x)) = abs(x))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) ¥R_LE (abs(x) ¥R_PLUS abs(y)))) & (FORALL x,y,z | ((x in Re) & (y in Re) & (z in Re)) ¥imp ((abs(x ¥R_PLUS R_Rev(y)) ¥R_LE z) ¥imp (y ¥R_LE (x ¥R_PLUS z)))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(x ¥R_PLUS y) ¥R_LE (abs(x) ¥R_PLUS abs(y)))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((not(R_is_nonneg(x))) ¥imp ((x ¥R_LE abs(y)) & (x /= abs(y))))) & (FORALL x,y,z | ((x in Re) & (y in Re) & (z in Re)) ¥imp (abs((x ¥R_PLUS R_Rev(z))) ¥R_LE (abs(x ¥R_PLUS R_Rev(y)) ¥R_PLUS abs(y ¥R_PLUS R_Rev(z))))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(abs(x) ¥R_PLUS R_Rev(abs(y))) ¥R_LE abs(x ¥R_PLUS R_Rev(y)))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(x) ¥R_PLUS R_Rev(abs(abs(y) ¥R_PLUS R_Rev(abs(x)))) ¥R_LE abs(y)))

(873) Theorem 723: [The absolute value of $x$ is a non-negative real no smaller than $x$] (X in Re) ¥imp ((abs(X) in Re) & (abs(X) ¥R_GE R_0) & (abs(X) ¥R_GE X) & (R_is_nonneg(abs(X))))

(874) Theorem 724: [The absolute value of $x$ is whichever of $x$ and $-x$ is non-negative] (X in Re) ¥imp (abs(X) = if R_is_nonneg(X) then X else R_Rev(X) end if)

(875) Theorem 725: [The absolute value of $x$ is whichever of $x$ and $-x$ is non-negative, 2] (X in Re) ¥imp (abs(X) = if R_is_nonneg(R_Rev(X)) then R_Rev(X) else X end if)

(876) Theorem 726: [The absolute value of a real product is the product of absolute values] ((X in Re) & (Y in Re)) ¥imp (abs(X ¥R_TIMES Y) = (abs(X) ¥R_TIMES abs(Y)))

(877) Theorem 727: [$x$ and $-x$ have the same absolute value] (X in Re) ¥imp (abs(X) = abs(R_Rev(X)))

(878) Theorem 728: [Monotonicity of addition, 2] ((X in Re) & (Y in Re) & R_is_nonneg(R_Rev(Y))) ¥imp ((X ¥R_GT (X ¥R_PLUS Y)) or (X = (X ¥R_PLUS Y)))

(879) Theorem 729: ((X in Re) & (Y in Re) & R_is_nonneg(X) & (not R_is_nonneg(Y))) ¥imp ((X ¥R_GE abs(X ¥R_PLUS Y)) or (R_Rev(Y) ¥R_GE abs(X ¥R_PLUS Y)))

(880) Theorem 730: ((X in Re) & (Y in Re)) ¥imp (((X ¥R_PLUS abs(Y)) ¥R_GE X))

(881) Theorem 731: ((X in Re) & (Y in Re)) ¥imp (((abs(X) ¥R_PLUS abs(Y)) ¥R_GT abs(X ¥R_PLUS Y)) or ((abs(X) ¥R_PLUS abs(Y)) = abs(X ¥R_PLUS Y)))

(882) Theorem 732: [The absolute value of a real quotient is the quotient of absolute values] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp ((abs(X) ¥R_OVER abs(Y)) = abs(X ¥R_OVER Y))

(883) Theorem 733: (X in Ra) ¥imp (Ra_is_nonneg(X) ¥eq Ra_eqseq(Za ¥PROD {Ra_ABS(X)},Za ¥PROD {X}))

(884) Theorem 734: (X in Ra) ¥imp (R_is_nonneg(Cauchy_to_Re(Za ¥PROD {X})) ¥eq (ReRa(Ra_ABS(X)) = ReRa(X)))

(885) Theorem 735: [The embedding of rationals into reals preserves all elementary algebraic operations, 1] (Y in Ra) ¥imp ((ReRa(Y) in Re) & (ReRa(Ra_Rev(Y)) = R_Rev(ReRa(Y))) & (R_is_nonneg(ReRa(Y)) ¥eq Ra_is_nonneg(Y)) & (ReRa(Ra_ABS(Y)) = abs(ReRa(Y))))

(886) Theorem 736: [The embedding of rationals into reals preserves all elementary algebraic operations, 2] ((X in Ra) & (Y in Ra)) ¥imp ((ReRa(X) in Re) & (ReRa(Y) in Re) & (ReRa(X ¥Ra_PLUS Y) = ReRa(X) ¥R_PLUS ReRa(Y)) & (ReRa(X ¥Ra_TIMES Y) = ReRa(X) ¥R_TIMES ReRa(Y)))

(887) Theorem 737: [The embedding of rationals into reals preserves all elementary algebraic operations, 3] ((X in Ra) & (Y in Ra)) ¥imp (ReRa(X ¥Ra_MINUS Y) = (ReRa(X) ¥R_MINUS ReRa(Y)))

(888) Theorem 738: [The embedding of rationals into reals is 1-1] ((X in Ra) & (Y in Ra)) ¥imp ((ReRa(X) = ReRa(Y)) ¥eq (X = Y))

(889) Theorem 739: [The embedding of rationals into reals preserves 0 and 1] (ReRa(Ra_0) = R_0) & (ReRa(Ra_1) = R_1)

(890) Theorem 740: [The embedding of rationals into reals preserves quotients by nonzero quantities] ((X in Ra) & (Y in Ra) & (Y /= Ra_0)) ¥imp ((R_Recip(ReRa(Y)) = ReRa(Recip(Y))) & ((ReRa(X) ¥R_OVER ReRa(Y)) = ReRa(X ¥Ra_OVER Y)))

(891) Theorem 741: [The embedding of rationals into reals preserves ordering] ((X in Ra) & (Y in Ra)) ¥imp (((ReRa(X) ¥R_GE ReRa(Y)) ¥eq (X ¥Ra_GE Y)) & ((ReRa(X) ¥R_GT ReRa(Y)) ¥eq (X ¥Ra_GT Y)) & ((ReRa(Y) ¥R_LE ReRa(X)) ¥eq (Y ¥Ra_LE X)) & ((ReRa(Y) ¥R_LT ReRa(X)) ¥eq (Y ¥Ra_LT X)))

(892) Theorem 742: [The images of rationals via the embedding form a dense subset of the reals, 1] ((X in Re) & (Eps in Ra) & (Eps ¥Ra_GT Ra_0)) ¥imp (EXISTS y in Ra | Finite({m in Za | Ra_ABS(((arb(X))~[m]) ¥Ra_MINUS y) ¥Ra_GE Eps}) )

(893) Theorem 743: [The embedding of signed integers into rationals preserves all elementary algebraic operations, 1] (X in Si) ¥imp ((RaSi(X) in Ra) & (Ra_is_nonneg(RaSi(X)) ¥eq is_nonneg(X)) & (RaSi(S_Rev(X)) = Ra_Rev(RaSi(X))) & (RaSi(S_ABS(X)) = Ra_ABS(RaSi(X))))

(894) Theorem 744: [The embedding of signed integers into rationals preserves all elementary algebraic operations, 2] ((X in Si) & (Y in Si)) ¥imp ((RaSi(X) in Ra) & (RaSi(Y) in Ra) & (RaSi(X ¥S_PLUS Y) = RaSi(X) ¥Ra_PLUS RaSi(Y)) & (RaSi(X ¥S_TIMES Y) = RaSi(X) ¥Ra_TIMES RaSi(Y)))

(895) Theorem 745: [The embedding of signed integers into rationals preserves all elementary algebraic operations, 3] ((X in Si) & (Y in Si)) ¥imp (RaSi(X ¥S_MINUS Y) = RaSi(X) ¥Ra_MINUS RaSi(Y))

(896) Theorem 746: [The embedding of signed integers into rationals is 1-1] ((X in Si) & (Y in Si)) ¥imp ((RaSi(X) = RaSi(Y)) ¥eq (X = Y))

(897) Theorem 747: [The embedding of signed integers into rationals preserves 0 and 1] RaSi([0,0]) = Ra_0 & RaSi([1,0]) = Ra_1

(897+) Theorem 748: [The embedding of signed integers into rationals preserves ordering] ((X in Si) & (Y in Si)) ¥imp (((RaSi(X) ¥Ra_GE RaSi(Y)) ¥eq (X ¥S_GE Y)) & ((RaSi(X) ¥Ra_GT RaSi(Y)) ¥eq (X ¥S_GT Y)) & ((RaSi(Y) ¥Ra_LE RaSi(X)) ¥eq (Y ¥S_LE X)) & ((RaSi(Y) ¥Ra_LT RaSi(X)) ¥eq (Y ¥S_LT X)))

(898) Theorem 749: [The embedding of integers into signed integers preserves all elementary algebraic operations on integers] ((X in Za) & (Y in Za)) ¥imp ((SiZa(X) in Si) & (SiZa(Y) in Si) & (SiZa(X ¥PLUS Y) = SiZa(X) ¥S_PLUS SiZa(Y)) & (SiZa(X ¥TIMES Y) = SiZa(X) ¥S_TIMES SiZa(Y)))

(899) Theorem 750: [The embedding of integers into signed integers is 1-1] ((X in Za) & (Y in Za) & (SiZa(X) = SiZa(Y))) ¥imp (X = Y)

(900) Theorem 751: [The embedding of integers into signed integers preserves 0 and 1] (SiZa(0) = [0,0]) & (SiZa(1) = [1,0])

(901) Theorem 752: [The embedding of integers into signed integers preserves ordering] ((X in Za) & (Y in Za)) ¥imp (((SiZa(X) ¥S_GE SiZa(Y)) ¥eq (X incs Y)) & ((SiZa(X) ¥S_GT SiZa(Y)) ¥eq (Y in X)) & ((SiZa(Y) ¥S_LE SiZa(X)) ¥eq (Y ¥incin X)) & ((SiZa(Y) ¥S_LT SiZa(X)) ¥eq (Y in X)))

(902) Theorem 753: [Elementary properties of the real absolute value] ((X in Re) & (Y in Re)) ¥imp ((abs(X) in Re) & (abs(Y) in Re) & (abs(X ¥R_TIMES Y) = (abs(X) ¥R_TIMES abs(Y))) & ((abs(X) ¥R_PLUS abs(Y)) ¥R_GE abs(X ¥R_PLUS Y) & (abs(R_Rev(X)) = abs(X))))

(903) Theorem 754: [Every real Cauchy sequence is a real sequence] ReCauchy ¥incin ReSeq

(904) Theorem 755: [The range of a real sequence is included in the set of reals] (F in ReSeq) ¥imp ((domain(F) = Za) & Svm(F) & (range(F) ¥incin Re) & ((X in Za) ¥imp (F~[X] in Re)))

(905) Theorem 756: ({F,G} ¥incin ReSeq) ¥imp (((F ¥Res_PLUS G) in ReSeq) & (Res_ABS(G) in ReSeq) & (Res_Rev(G) in ReSeq) & ((F ¥Res_TIMES G) in ReSeq) & ((F ¥Res_PLUS G) = {[u,((F~[u]) ¥R_PLUS (G~[u]))]: u in Za}) & (Res_ABS(G) = {[u,abs(G~[u])]: u in Za}) & (Res_Rev(G) = {[u,R_Rev(G~[u])]: u in Za}) & ((F ¥Res_TIMES G) = {[u,((F~[u]) ¥R_TIMES (G~[u]))]: u in Za}))

(906) Theorem 757: (({F1,G1} ¥incin ReSeq) & (N in Za)) ¥imp ((F1~[N] in Re) & (G1~[N] in Re) & ((F1 ¥Res_PLUS G1 in ReSeq) & ((F1 ¥Res_PLUS G1)~[N] = (F1~[N]) ¥R_PLUS (G1~[N]))) & (((Res_ABS(G1) in ReSeq) & (Res_ABS(G1)~[N] = abs(G1~[N])))) & (((Res_Rev(G1) in ReSeq) & (Res_Rev(G1)~[N] = R_Rev(G1~[N])))) & (((F1 ¥Res_TIMES G1 in ReSeq) & (F1 ¥Res_TIMES G1)~[N] = ((F1~[N]) ¥R_TIMES (G1~[N])))))

(907) Theorem 758: ({F,G} ¥incin ReCauchy) ¥imp (((F ¥Res_PLUS G) in ReCauchy) & (Res_ABS(F) in ReCauchy) & (Res_Rev(F) in ReCauchy))

(908) Theorem 759: ((Eps in Re) & (Eps ¥R_GT R_0) & (F in ReCauchy)) ¥imp (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (abs((F~[i]) ¥R_MINUS (F~[j]))) ¥R_GT Eps)))

(909) Theorem 760: ((Eps in Re) & (Eps ¥R_GT R_0) & (F in ReCauchy)) ¥imp (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (Eps ¥R_GT (abs((F~[i]) ¥R_MINUS (F~[j])))) ))

(910) Theorem 761: ((S ¥incin Re) & Finite(S)) ¥imp (EXISTS u in Re | (FORALL y in S | u ¥R_GE y))

(911) Theorem 762: [Every real Cauchy sequence has an upper bound] (F in ReCauchy) ¥imp (EXISTS x in Re | (FORALL y in range(F) | y ¥R_LE x))

(912) Theorem 763: (F in ReCauchy) ¥imp (EXISTS x in Re | (FORALL y in range(F) | abs(y) ¥R_LT x ))

(913) Theorem 764: ({F,G} ¥incin ReCauchy) ¥imp (((F ¥Res_MINUS G) in ReCauchy) & ((F ¥Res_TIMES G) in ReCauchy))

(914) Theorem 765: [Every real Cauchy sequence can be approximated by a rational sequence] (F in ReCauchy) ¥imp (0 /= {g in RaCauchy | Ra_apseq(F,g)})

(915) Theorem 766: [Every real Cauchy sequence has a real limit] (F in ReCauchy) ¥imp ((Ra_approx(F) in RaCauchy) & (Ra_approx(F) in RaSeq) & Ra_apseq(F,Ra_approx(F)) & (limit(F) in Re))

(916) Theorem 767: [The limit of a real Cauchy sequence is the real defined by any of its rational approximations] ((F in ReCauchy) & (G in RaSeq) & Ra_apseq(F,G)) ¥imp ((G in RaCauchy) & (Cauchy_to_Re(G) = limit(F)))

(917) Theorem 768: [The elementary operations on reals map Cauchy sequences into Cauchy sequences] ((F in ReCauchy) & (G in ReCauchy) & (Fp in RaCauchy) & (Gp in RaCauchy) & Ra_apseq(F,Fp) & Ra_apseq(G,Gp)) ¥imp ((((F ¥Res_PLUS G in ReCauchy) & Ra_apseq(F ¥Res_PLUS G,Fp ¥Ras_PLUS Gp))) & (((F ¥Res_MINUS G in ReCauchy) & Ra_apseq(F ¥Res_MINUS G,Fp ¥Ras_MINUS Gp))) & (((F ¥Res_TIMES G in ReCauchy) & Ra_apseq(F ¥Res_TIMES G,Fp ¥Ras_TIMES Gp))))

(918) Theorem 769: [The limit of a sum is the sum of limits] ((F in ReCauchy) & (G in ReCauchy)) ¥imp (limit(F ¥Res_PLUS G) = (limit(F) ¥R_PLUS limit(G)))

(919) Theorem 770: [The limit of a difference is the difference of limits] ((F in ReCauchy) & (G in ReCauchy)) ¥imp (limit(F ¥Res_MINUS G) = limit(F) ¥R_MINUS limit(G))

(920) Theorem 771: [The limit of a product is the product of limits] ((F in ReCauchy) & (G in ReCauchy)) ¥imp (limit(F ¥Res_TIMES G) = limit(F) ¥R_TIMES limit(G))

(921) Theorem 772: [The limit of a quotient is the quotient of limits, provided that the denominator limit is non-zero] ((F in ReCauchy) & (G in ReCauchy) & (limit(G) /= R_0)) ¥imp (limit(F ¥Res_OVER G) = limit(F) ¥R_OVER limit(G))

(922) Theorem 773: [Any real $x$ is included between two rationals which can be arbitrarily close together] ((X in Re) & (EPS in Re) & (EPS ¥R_GT R_0)) ¥imp (EXISTS r1 in Ra, r2 in Ra | ((ReRa(r1) ¥R_GT X) & (X ¥R_GT ReRa(r2)) & (ReRa(r1 ¥Ra_MINUS r2) ¥R_LE EPS)))

(923) Theorem 774: [For any real $x$, there exists a rational $r$ such that $r >= x$] (X in Re) ¥imp (EXISTS r in Ra | ReRa(r) ¥R_GT X)

(924) Theorem 775: [Any rational $r$ is the quotient of two signed integers, of which the second is positive] (x in Ra) ¥imp (EXISTS m in Si, n in Si | ((n ¥S_GE [1,0]) & (x = RaSi(m) ¥Ra_OVER RaSi(n))))

(925) Theorem 776: [For any rational $r$, there exists an integer $n$ such that $n >= r$] (R in Ra) ¥imp (EXISTS n in Za | RaSi(SiZa(n)) ¥Ra_GE R)

(926) Theorem 777: [For any real $x$, there exists an integer $n$ such that $n > x$] (X in Re) ¥imp (EXISTS n in Za | ReRa(RaSi(SiZa(n))) ¥R_GT X)

(927) Theorem 778: [For any real $x$ and $eps > 0$, there exists an integer $n$ such that $n ¥ eps > x$] ((X in Re) & (Eps in Re) & (Eps ¥R_GT R_0)) ¥imp (EXISTS n in Za | ((ReRa(RaSi(SiZa(n))) ¥R_TIMES Eps) ¥R_GT X))

(928) Theorem 779: [For any real $x$ and $eps > 0$, there exists an integer $n$ such that $eps > x/n$] ((X in Re) & (Eps in Re) & (Eps ¥R_GT R_0)) ¥imp (EXISTS n in Za | (Eps ¥R_GT (X ¥R_OVER ReRa(RaSi(SiZa(n))))))

(929) Theorem 780: [For any non-negative real $x$ and $eps > 0$, there exists an integer $n$ such that $n ¥R_TIMES eps > x$ and $(n - 1) ¥ eps <= x$] ((X in Re) & (Eps in Re) & (Eps ¥R_GT R_0)) ¥imp (EXISTS n in Za | (Eps ¥R_GT (X ¥R_OVER ReRa(RaSi(SiZa(n))))))

(930) Theorem 781: [Every positive real is bounded below by a rational fraction of the form $1/n$] ((X in Re) & (X ¥R_GT R_0)) ¥imp (EXISTS n in Za | (R_1 ¥R_OVER ReRa(RaSi(SiZa(n)))) ¥R_LT X)

(931) Theorem 782: [Every real Cauchy sequence is approximated by a rational Cauchy sequence] (F in ReCauchy) ¥imp (EXISTS g in RaCauchy | Ra_apseq(F,g))

(932) Theorem 783: [Any two approximating rational sequences for a given real Cauchy sequence are equivalent] ((F in ReCauchy) & Ra_apseq(F,G) & Ra_apseq(F,GP)) ¥imp ((G in RaCauchy) & (GP in RaCauchy) & (Cauchy_to_Re(G) = Cauchy_to_Re(GP)))

(933) Theorem 784: [For any non-empty set $s$ of reals which is bounded above, and for any positive real $eps$, there exists an $u in s$ such that $u + eps$ is an upper bound of $s$] ((S ¥incin Re) & (S /= 0) & (Eps in Re) & (Eps ¥R_GT R_0) & (Y in Re) & (FORALL x in S | Y ¥R_GE x)) ¥imp (EXISTS u in S | (FORALL x in S | u ¥R_GE x))

(934) Theorem 785: [Any bounded set of reals has a least upper bound] ((S ¥incin Re) & (S /= 0) & (EXISTS y in Re | (FORALL x in S | y ¥R_GE x))) ¥imp (EXISTS u in Re | ((FORALL x in S | u ¥R_GE x) & (FORALL v in Re | (v ¥R_LT u ¥imp (not (FORALL x in s | v ¥R_GE x))))))

(935) Theorem 786: (FORALL s, t | Finite(s) ¥imp (ToThe1(s,t) = if (s = 0) then R_1 else (ToThe1(s - {arb(s)},t) ¥R_TIMES t) end if))

(936) Theorem 787: ((N in Za) & (X in Re)) ¥imp (X ¥ToThe N = if (N = 0) then R_1 else X ¥R_TIMES (X ¥ToThe (N - 1)) end if)

(937) Theorem 788: (X in Re) ¥imp ((X ¥ToThe 0 = R_0) & (X ¥ToThe 1 = X) & (((M in Za) & (N in Za)) ¥imp (X ¥ToThe (M ¥PLUS N) = (X ¥ToThe M) ¥R_TIMES (X ¥ToThe N))))

(938) Theorem 789: ((X in Re) & (M in Za) & (N in Za)) ¥imp (((X ¥ToThe M) ¥ToThe N) = (X ¥ToThe (M ¥TIMES N)))

(939) Theorem 790: (R_SIGMA(0) = R_0) & (FORALL x in OM | (cdr(x) in Re) ¥imp (R_SIGMA({x}) = cdr(x))) & (FORALL f in OM | (Finite(f) & (range(f) ¥incin Re)) ¥imp (R_SIGMA(f) in Re)) & (FORALL f in OM, c in f | (Finite(f) & (range(f) ¥incin Re)) ¥imp (R_SIGMA(f) = R_SIGMA(f - {c}) ¥R_PLUS cdr(c))) & (FORALL f in OM | (Finite(f) & Is_map(f) & (range(f) ¥incin Re)) ¥imp (FORALL t | R_SIGMA(f) = R_SIGMA(f ¥ON (domain(f) * t)) ¥R_PLUS R_SIGMA(f ¥ON (domain(f) - t)))) & (FORALL f in OM, g | (Finite(f) & Svm(f) & Svm(g) & (domain(f) = domain(g)) & (range(f) ¥incin Re)) ¥imp (R_SIGMA(f) = R_SIGMA({[y,R_SIGMA(f ¥ON (g ¥INV_IM {y}))]: y in range(g)}))) & (FORALL f in OM, g | (Finite(f) & Svm(f) & one_1_map(g) & (domain(f) = domain(g)) & (range(f) ¥incin Re)) ¥imp (R_SIGMA(f) = R_SIGMA({[y,f~[inv(g)~[y]]]: y in range(g)})))

(940) Theorem 791: (R_SIGMA(0) = R_0) & ((cdr(X) in Re) ¥imp (R_SIGMA({X}) = cdr(X))) & ((Finite(F) & (range(F) ¥incin Re)) ¥imp (R_SIGMA(F) in Re)) & ((Finite(F) & (range(F) ¥incin Re)) ¥imp (R_SIGMA(F) = R_SIGMA(F - {c}) ¥R_PLUS cdr(c))) & ((Finite(F) & Is_map(F) & (range(F) ¥incin Re)) ¥imp R_SIGMA(F) = R_SIGMA(F ¥ON (domain(F) * T)) ¥R_PLUS R_SIGMA(F ¥ON (domain(F) - T))) & ((Finite(F) & Svm(F) & Svm(G) & (domain(F) = domain(G)) & (range(F) ¥incin Re)) ¥imp (R_SIGMA(F) = R_SIGMA({[y,R_SIGMA(F ¥ON (G ¥INV_IM {y}))]: y in range(G)}))) & ((Finite(F) & Svm(F) & one_1_map(G) & (domain(F) = domain(G)) & (range(F) ¥incin Re)) ¥imp (R_SIGMA(F) = R_SIGMA({[y,F~[inv(G)~[y]]]: y in range(G)})))

(941) Theorem 792: ((F in Fin_Seqs(Re)) & (G in Fin_Seqs(Re)) & (X in Re)) ¥imp (((Polval(F,X) ¥R_PLUS Polval(G,X)) = Polval(F ¥PolPlus G,X)) & ((Polval(F,X) ¥R_MINUS Polval(G,X)) = Polval(F ¥PolMinus G,X)) & ((Polval(F,X) ¥R_TIMES Polval(G,X)) = Polval(F ¥PolTimes G,X)))

(942) Theorem 793: ((F in Fin_Seqs(Re)) & (G in Fin_Seqs(Re))) ¥imp (((PolFcn(F) ¥F_PLUS PolFcn(G)) = PolFcn(F ¥PolPlus G)) & ((PolFcn(F) ¥F_MINUS PolFcn(G)) = PolFcn(F ¥PolMinus G)) & ((PolFcn(F) ¥F_TIMES PolFcn(G)) = PolFcn(F ¥PolTimes G)))

(943) Theorem 794: [Continuous functions map limits into limits] (Cf_RR(F,S) & (G in ReCauchy) & (range(G) ¥incin S)) ¥imp ((F @ G in ReCauchy) & (limit(F @ G) = F~[limit(G)]))

(944) Theorem 795: [The pointwise sum and product of two real continuous functions on two sets is continuous on their intersection] (Cf_RR(F,S) & Cf_RR(G,S2)) ¥imp (Cf_RR(F ¥Res_PLUS G,S * S2) & Cf_RR(F ¥Res_TIMES G,S * S2))

(945) Theorem 796: [The quotient of two real continuous functions on two sets is continuous on the set of points in their intersection at which the denominator is nonzero] (Cf_RR(F,S) & Cf_RR(G,S2)) ¥imp Cf_RR(F ¥Res_OVER G,{x in S * S2 | G~[x] /= R_0})

(946) Theorem 797: [The composition of two real continuous functions is continuous.] (Cf_RR(F,S) & Cf_RR(G,T) & (range(G ¥ON T) ¥incin S)) ¥imp Cf_RR(F @ G,T)

(947) Theorem 798: [Polynomial functions are continuous everywhere] (F in Fin_Seqs(Re)) ¥imp Cf_RR(PolFcn(F),Re)

(948) Theorem 799: [Polynomial quotients are continuous wherever their denominator is nonzero] ((F in Fin_Seqs(Re)) & (G in Fin_Seqs(Re))) ¥imp Cf_RR(F ¥F_OVER G,{x in Re | G~[x] /= R_0})

(949) Theorem 800: [Crossing-completness principle for the real numbers] ((Cf_RR(F,I(X,Y)) & (X in Re) & (Y in Re) & (R_0 ¥R_GE F~[X]) & (R_0 ¥R_LE F~[Y]) & (X ¥R_LE Y)) ¥imp (EXISTS v | ((X ¥R_LE v) & (v ¥R_LE Y) & (F~[v] = R_0))))

(950) Theorem 801: (Cf_RR(F,S) & BoundedClosedRe(S)) ¥imp (EXISTS u in S | (FORALL v in S | F~[u] ¥R_GE F~[v]))

(951) Theorem 802: (Cf_RR(F,S) & BoundedClosedRe(S)) ¥imp (EXISTS u in I(X,Y) | (FORALL v in S | F~[u] ¥R_LE F~[v]))

(952) Theorem 803: (Cf_RR(F,I(X,Y)) & (X in Re) & (Y in Re)) ¥imp (EXISTS u in I(X,Y), v in I(X,Y) | range(F ¥ON I(X,Y)) = I(f~[u],f~[v]))

(953) Theorem 804: (BoundedClosedRe(S) & (S ¥incin Un({OI(car(ends),cdr(ends)): ends in T})) & (FORALL ends in T | ends in (Re ¥PROD Re))) ¥imp (EXISTS t1 | (t1 ¥incin T) & Finite(t1) & (S ¥incin Un({OI(car(ends),cdr(ends)): ends in t1})))

(954) Theorem 805: [Square of binomials] ((X in Re) & (Y in Re)) ¥imp ( ((X ¥R_PLUS Y) ¥R_TIMES (X ¥R_PLUS Y)) = ((X ¥R_TIMES X) ¥R_PLUS (Y ¥R_TIMES Y)) ¥R_PLUS ((X ¥R_TIMES Y) ¥R_PLUS (X ¥R_TIMES Y)) )

(955) Theorem 806: [Square of binomials, 2] ((X in Re) & (Y in Re)) ¥imp ( ((X ¥R_MINUS Y) ¥R_TIMES (X ¥R_MINUS Y)) = ((X ¥R_TIMES X) ¥R_PLUS (Y ¥R_TIMES Y)) ¥R_MINUS ((X ¥R_TIMES Y) ¥R_PLUS (X ¥R_TIMES Y)) )

(956) Theorem 807: [Noticeable product of binomials] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_MINUS Y) ¥R_TIMES (X ¥R_PLUS Y)) = ((X ¥R_TIMES X) ¥R_MINUS (Y ¥R_TIMES Y)))

(957) Theorem 808: [The square of the square root of any positive $x$ is $x$] ((X in Re) & (R_is_nonneg(X))) ¥imp ((sqrt(X) in Re) & (R_is_nonneg(sqrt(X))) & ((sqrt(X) ¥R_TIMES sqrt(X)) = X))

(958) Theorem 809: [The positive square root is unique] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y) & ((Y ¥R_TIMES Y) = X)) ¥imp (Y = sqrt(X))

(959) Theorem 810: [The square root is monotone increasing for positive numbers] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y) & (X ¥R_GT Y)) ¥imp (sqrt(X) ¥R_GT sqrt(Y))

(960) Theorem 811: [The square root of a product is the product of the square roots] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp (sqrt(X ¥R_TIMES Y) = (sqrt(X) ¥R_TIMES sqrt(Y)))

(961) Theorem 812: [The square of the square root of any real $w=(x ¥R_TIMES x) ¥R_PLUS (y ¥R_TIMES y)$ is $w$] ((X in Re) & (Y in Re)) ¥imp (sqrt((X ¥R_TIMES X) ¥R_PLUS (Y ¥R_TIMES Y)) ¥R_TIMES sqrt((X ¥R_TIMES X) ¥R_PLUS (Y ¥R_TIMES Y)) = ((X ¥R_TIMES X) ¥R_PLUS (Y ¥R_TIMES Y)))

(961+) Theorem 813: ((N in Si) & (M in Si) & (M /= [0,0]) & is_nonneg(M)) ¥imp (EXISTS k in Si | is_nonneg(N ¥S_MINUS (k ¥S_TIMES M)) & is_nonneg(((k ¥S_PLUS [1,0])¥S_TIMES M)) ¥S_MINUS N)

(962) Theorem 814: ((N in Re) & (M in Re)) ¥imp (((abs(N) ¥R_PLUS abs(M)) ¥R_GT abs(N ¥R_MINUS M)) or ((abs(N) ¥R_PLUS abs(M)) = abs(N ¥R_MINUS M)))

(963) Theorem 815: ((X in Re) & (Y in Re)) ¥imp ([X,Y] in Cm)

(964) Theorem 816: (M in Cm) ¥eq ((M = [car(M),cdr(M)]) & (car(M) in Re) & (cdr(M) in Re))

(965) Theorem 817: (C_0 in Cm) & (C_1 in Cm)

(966) Theorem 818: ((N in Cm) & (M in Cm)) ¥imp ((N ¥C_PLUS M in Cm) & (N ¥C_TIMES M in Cm))

(967) Theorem 819: ((N in Cm) & (M in Cm)) ¥imp (N ¥C_PLUS M = M ¥C_PLUS N)

(968) Theorem 820: (N in Cm) ¥imp ((N = N ¥C_PLUS C_0) & (N = C_0 ¥C_PLUS N))

(969) Theorem 821: (N in Cm) ¥imp ((C_Rev(N) in Cm) & (C_Rev(C_Rev(N)) = N))

(970) Theorem 822: (N in Cm) ¥imp (C_Rev(N) ¥C_PLUS N = C_0)

(971) Theorem 823: ((N in Cm) & (M in Cm)) ¥imp (N = M ¥C_PLUS (N ¥C_MINUS M))

(972) Theorem 824: ((N in Cm) & (M in Cm)) ¥imp (N ¥C_TIMES M = M ¥C_TIMES N)

(973) Theorem 825: (N in Cm) ¥imp ((C_abs(N) in Re) & R_is_nonneg(C_abs(N)))

(974) Theorem 826: (N in Cm) ¥imp (C_abs(N) = C_abs(C_Rev(N)))

(975) Theorem 827: ((N in Cm) & (M in Cm)) ¥imp (((C_abs(N) ¥R_PLUS C_abs(M)) ¥R_GT C_abs(N ¥C_PLUS M)) or (C_abs(N) ¥R_PLUS C_abs(M) = C_abs(N ¥C_PLUS M)))

(976) Theorem 828: ((N in Cm) & (M in Cm)) ¥imp (((C_abs(N) ¥R_PLUS C_abs(M)) ¥R_GT C_abs(N ¥C_MINUS M)) or (C_abs(N) ¥R_PLUS C_abs(M) = C_abs(N ¥C_MINUS M)))

(977) Theorem 829: ((N in Cm) & (M in Cm)) ¥imp (C_abs(N) ¥R_TIMES C_abs(M) = C_abs(N ¥C_TIMES M))

(978) Theorem 830: ((N in Cm) & (M in Cm) & (M /= C_0)) ¥imp (C_abs(N) ¥R_OVER C_abs(M) = C_abs(N ¥C_OVER M))

(979) Theorem 831: ((K in Cm) & (N in Cm) & (M in Cm)) ¥imp (N ¥C_PLUS (M ¥C_PLUS K) = (N ¥C_PLUS M) ¥C_PLUS K)

(980) Theorem 832: ((K in Cm) & (N in Cm) & (M in Cm)) ¥imp ((N ¥C_TIMES (M ¥C_TIMES K)) = ((N ¥C_TIMES M) ¥C_TIMES K))

(981) Theorem 833: ((K in Cm) & (N in Cm) & (M in Cm)) ¥imp ((N ¥C_TIMES (M ¥C_PLUS K)) = ((N ¥C_TIMES M) ¥C_PLUS (N ¥C_TIMES K)))

(982) Theorem 834: (M in Cm) ¥imp ((M = (M ¥C_TIMES C_1)) & (M = (C_1 ¥C_TIMES M)))

(983) Theorem 835: ((M in Cm) & (M /= C_0)) ¥imp ((C_Recip(M) in Cm) & ((M ¥C_TIMES C_Recip(M)) = C_1))

(984) Theorem 836: ((N in Cm) & (M in Cm) & (M /= C_0)) ¥imp (N = M ¥C_TIMES (N ¥C_OVER M))

(985) Theorem 837: (R_0 in Re) & (FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_0) = x)) & (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) = (y ¥R_PLUS x))) & (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) in Re)) & (FORALL x, y, z | ((x in Re) & (y in Re) & (z in Re)) ¥imp (((x ¥R_PLUS y) ¥R_PLUS z) = (x ¥R_PLUS (y ¥R_PLUS z))))

(986) Theorem real_sigma0: (Sig(0) = R_0) & (FORALL x | (cdr(x) in Re) ¥imp (Sig({x}) = cdr(x))) & (FORALL f | (Finite(f) & (range(f) ¥incin Re)) ¥imp (Sig(f) in Re)) & (FORALL c,f | ((c in f) & Finite(f) & (range(f) ¥incin Re)) ¥imp (Sig(f) = Sig(f - {c}) ¥R_PLUS cdr(c))) & (FORALL f,t | (Finite(f) & Is_map(f) & (range(f) ¥incin Re)) ¥imp (Sig(f) = (Sig(f ¥ON (domain(f) * t)) ¥R_PLUS Sig(f ¥ON (domain(f) - t)))))

(987) Theorem real_sigma: (Svm(F) & (range(F) ¥incin Re) & Finite(F)) ¥imp ((Sig(F) in Re) & ((P in F) ¥imp (Sig({P}) = (F~[car(P)]))) & (Sig(F) = (Sig(F ¥ON (domain(F) * A)) ¥R_PLUS Sig(F ¥ON (domain(F) - A)))))

(988) Theorem 838: (RF_0 in RF)

(989) Theorem 839: (N in RF) ¥imp ((N ¥F_PLUS RF_0) = N)

(990) Theorem 840: ((N in RF) & (M in RF)) ¥imp ((N ¥F_PLUS M) = (M ¥F_PLUS N))

(991) Theorem 841: ((N in RF) & (M in RF)) ¥imp ((N ¥F_PLUS M) in RF)

(992) Theorem 842: ((N in RF) & (M in RF)) ¥imp (N ¥F_TIMES M = M ¥F_TIMES N)

(993) Theorem 843: ((N in RF) & (M in RF) & (K in RF)) ¥imp (N ¥F_PLUS (M ¥F_PLUS K) = (N ¥F_PLUS M) ¥F_PLUS K)

(994) Theorem 844: ((K in RF) & (N in RF) & (M in RF)) ¥imp (N ¥F_TIMES (M ¥F_TIMES K) = (N ¥F_TIMES M) ¥F_TIMES K)

(995) Theorem 845: ((K in RF) & (N in RF) & (M in RF)) ¥imp (N ¥F_TIMES (M ¥F_PLUS K) = (N ¥F_TIMES M) ¥F_PLUS (N ¥F_TIMES K))

(996) Theorem real_function_sigma: (FSig(0) = RF_0) & (FORALL x | (cdr(x) in RF) ¥imp (FSig({x}) = cdr(x))) & (FORALL ser | (Finite(ser) & (range(ser) ¥incin RF)) ¥imp (FSig(ser) in RF)) & (FORALL ser, a | (Finite(ser) & Is_map(ser) & (range(ser) ¥incin RF)) ¥imp (FSig(ser) = (FSig(ser ¥ON (domain(ser) * a)) ¥F_PLUS FSig(ser ¥ON (domain(ser) - a))))) & (FORALL p, ser | ((p in ser) & Finite(ser) & (range(ser) ¥incin RF)) ¥imp (FSig(ser) = FSig(ser - {p}) ¥F_PLUS cdr(p)))

(997) Theorem 846: [Cauchy integral theorem] is_analytic_CF(F) ¥imp (EXISTS eps in Re | (eps ¥R_GT R_0) & (FORALL crv1, crv2 | (is_CD_curv(crv1,R_0,R_1) & is_CD_curv(crv2,R_0,R_1) & ((crv1~[R_0]) = (crv1~[R_1])) & ((crv2~[R_0]) = (crv2~[R_1])) & (FORALL x in Interval(R_0,R_1) | eps ¥R_GE C_abs((crv1~[x]) ¥C_MINUS (crv2~[x])))) ¥imp (Line_Int(F,crv1,R_0,R_1) = Line_Int(F,crv2,R_0,R_1)) ))

(998) Theorem 847: [Cauchy integral formula] (is_analytic_CF(F) & (domain(F) incs {w in Cm | C_abs(w) ¥R_GE R_1})) ¥imp (FORALL w in Cm | (C_abs(w) ¥R_GT R_1) ¥imp ((F~[w]) = (Line_Int({[x,(F~[x]) ¥C_OVER (x ¥C_MINUS w)]: x in (Cm -{w})}, {[x,C_exp_fcn([R_0,x])]: x in Re}, R_0, pi ¥R_PLUS pi) ¥C_OVER ([R_0,pi ¥R_PLUS pi])) ))

(999) Theorem 848: (S = 0) ¥eq (rk(S) = 0)

(1000) Theorem 849: rk({X}) = next(rk(X))

(1001) Theorem 850: rk(X + Y) = rk(X) + rk(Y)

(1002) Theorem 851: rk({X,Y}) = next(rk(X)) + next(rk(Y))

(1003) Theorem 852: ((X ¥incin Y) ¥imp (rk(X) ¥incin rk(Y))) & ((X in Y) ¥imp (rk(X) in rk(Y)))

(1004) Theorem 853: rk(Un(X)) = Un({rk(y): y in X})

(1005) Theorem 854: [The values of the rank function are ordinals] Ord(rk(X))

(1006) Theorem 855: rk([X,Y]) = next(next(next(rk(X)))) + next(next(next(next(rk(Y)))))

(1007) Theorem 856: [Every ordinal equals its own rank] Ord(X) ¥imp (X = rk(X))

(1008) Theorem 857: [iterated singleton formation produces increasing ranks] (rk(V) in rk(snglIter(0,V))) & (((N in Za) & (M in Za) & (N in M)) ¥imp (rk(snglIter(N,V)) in rk(snglIter(M,V))))

(1009) Theorem 858: [the 0-th level of any cumulative structure equals the base] cumstr(B,0) = B

(1010) Theorem 859: [The constructor of the cumulative structure is monotone non-decreasing] cumstr(B,X) ¥incin cumstr(B,X + Y)

(1011) Theorem 860: [The constructor of the cumulative structure inserts 0 at all levels but the first] (0 notin B) ¥imp ((X /= 0) ¥eq (0 in cumstr(B,X)))

(1012) Theorem 861: [All subsets of each layer of a cumulative structure belong to its subsequent layers] ((Y in X) & (Z ¥incin cumstr(B,Y))) ¥imp (Z in cumstr(B,X))

(1013) Theorem 862: [Quasi-transitivity of the layers of a cumulative structure] Ord(X) ¥imp ((cumstr(B,X) - B) ¥incin pow(cumstr(B,X)))

(1013+) Theorem 863: [Transitivity of each layer in the von Neumann hierarchy] Ord(X) ¥imp ((cumstr(0,X) ¥incin pow(cumstr(0,X))) & (Un(cumstr(0,X)) ¥incin cumstr(0,X)))

(1014) Theorem 864: [closedness under dyadic union of the cumulative hierarchy $cumstr(B,Za)$] ((S in cumstr(B,Za) - B) & (T in cumstr(B,Za) - B)) ¥imp ((S + T) in cumstr(B,Za))

(1015) Theorem 865: [All sets of rank bounded by $X$ belong to $pow(cumstr(0,X))$] (rk(Y) ¥incin X) ¥imp (Y ¥incin cumstr(0,X))

(1016) Theorem 866: [The sets of rank bounded by $X$ form $pow(cumstr(0,X))$] Ord(X) ¥imp ((rk(Y) ¥incin X) ¥eq (Y ¥incin cumstr(0,X)))

(1017) Theorem 867: [All sets of rank $X$ belong to $cumstr(0,next(X))-cumstr(0,X)$] (X = rk(Y)) ¥imp (Y in (cumstr(0,next(X)) - cumstr(0,X)))

(1018) Theorem 868: [The rank of sets in $cumstr(0,next(X))-cumstr(0,X)$ does not exceed $X$] (Ord(X) & (Y in (cumstr(0,next(X)) - cumstr(0,X)))) ¥imp (rk(Y) ¥incin X)

(1019) Theorem 869: [The sets of rank $X$ form $cumstr(0,next(X))-cumstr(0,X)$] Ord(X) ¥imp ((rk(Y) = X) ¥eq (Y in (cumstr(0,next(X)) - cumstr(0,X))))

(1020) Theorem 870: [Sets whose rank belongs to an ordinal are those in its level] Ord(X) ¥imp ((rk(Y) in X) ¥eq (Y in cumstr(0,X)))

(1021) Theorem 871: Ord(X) ¥imp (rk(cumstr(0,X)) = X)

(1022) Theorem 872: (Ord(X) & Ord(Y) & (X in Y) & (Z notin cumstr(0,Y))) ¥imp (X in rk(Z))

(1023) Theorem 873: (N in Za) ¥imp Finite(cumstr(0,N))

(1023+) Theorem 874: (W = cumstr(0,rk({snglIter(n,X): n in Za}))) ¥imp ((X ¥incin W) & (not Finite(W - X)) & (1 in rk(W)))

(1024) Theorem superstructure.0: (EXISTS f | one_1_map(f) & (range(f) = b) & (domain(f) = #b))

(1025) Theorem superstructure.1: one_1_map(f) & (range(f) = b) & (domain(f) = #b)

(1026) Theorem superstructure.2: one_1_map(bij_thryvar) & (domain(bij_thryvar)=b) & (range(bij_thryvar)=ur_thryvar)

(1027) Theorem superstructure.3: supstr(ur_thryvar,sst_thryvar)

(1028) Theorem 875: [the null set is hereditarily finite] 0 in HF

(1029) Theorem 876: [transitivity of the collection of hereditarily finite sets] ((S in HF) & (X in S)) ¥imp (X in HF)

(1030) Theorem 877: [extensionality of membership over the hereditarily finite sets] ((S in HF) & (T in HF) & (FORALL x | (x in HF) ¥imp ((x in S) ¥eq (x in T)))) ¥imp (S = T)

(1031) Theorem 878: [closedness under powerset formation of the collection of hereditarily finite sets] (S in HF) ¥imp (pow(S) in HF)

(1032) Theorem 879: [closedness under singleton formation of the collection of hereditarily finite sets] (S in HF) ¥imp ({S} in HF)

(1033) Theorem 880: [closedness under dyadic union of the collection of hereditarily finite sets] ((S in HF) & (T in HF)) ¥imp ((S + T) in HF)

(1034) Theorem 881: [closedness under set difference of the collection of hereditarily finite sets] ((S in HF) & (T in HF)) ¥imp (((S - T) in HF) & ({S,T} in HF))

(1035) Theorem 882: [closedness under selection of the collection of hereditarily finite sets] (S in HF) ¥imp (arb(S) in HF)

(1036) Theorem 883: [all subsets of an hereditarily finite set are hereditarily finite] ((S in HF) & (T ¥incin S)) ¥imp (T in HF)

(1037) Theorem 884: [alternative characterization of hereditarily finite sets] (S in HF) ¥eq (Finite(S) & ({u in S | not (u in HF)} = 0))

(1038) Theorem 885: [closedness under unionset of the collection of hereditarily finite sets] (S in HF) ¥imp (Un(S) in HF)

(1039) Theorem herfin_induction0: [finiteness ensues from hereditary finiteness] Finite(s0)

(1040) Theorem herfin_induction1: [inclusion-minimal hereditarily finite set satisfying $P$] (hf0_thryvar ¥incin s0) & P(hf0_thryvar) & (FORALL k ¥incin hf0_thryvar | (k /= hf0_thryvar) ¥imp (not P(k)))

(1041) Theorem herfin_induction2: [rank-minimal hereditarily finite set satisfying $P$] (EXISTS x in cumstr(0,Za) | P(x) & (FORALL k | (rk(k) in rk(x)) ¥imp (not P(k))))

(1042) Theorem herfin_induction3: [existence of membership/inclusion-minimal hereditarily finite set satisfying $P$] (EXISTS x | (x in HF) & P(x) & (FORALL k | ((k in x) or ((k ¥incin x) & (k /= x))) ¥imp (not P(k))))

(1043) Theorem herfin_induction4: [membership/inclusion-minimal hereditarily finite set satisfying $P$] (hf1_thryvar in HF) & P(hf1_thryvar) & (FORALL k | ((k in hf1_thryvar) or ((k ¥incin hf1_thryvar) & (k /= hf1_thryvar))) ¥imp (not P(k)))

(1044) Theorem 886: [alternative characterization of hereditarily finite sets, 2] (S in HF) ¥eq (Finite(Ult_membs(S)))

(1045) Theorem based_maps.1: ((X in rr) & (Y in rr)) ¥imp ((X + Y) = (Y + X))

(1046) Theorem based_maps.2: ((X in rr) & (Y in rr) & (Z in rr)) ¥imp ((X + Y) + Z = X + (Y + Z))

(1047) Theorem based_maps.3: ((X in rr) & (Y in rr)) ¥imp (compl_thryvar(compl_thryvar(X + Y) + compl_thryvar(X + compl_thryvar(Y))) = X)

(1048) Theorem based_maps.4: ((X in rr) & (Y in rr) & (Z in rr)) ¥imp ((X @ Y) @ Z = X @ (Y @ Z))

(1049) Theorem based_maps.5: ((X in rr) & (Y in rr) & (Z in rr)) ¥imp (Z @ (X + Y) = (Z @ X) + (Z @ Y))

(1050) Theorem based_maps.6: (X in rr) ¥imp ((ident_thryvar @ X) = X)

(1051) Theorem based_maps.7: (X in rr) ¥imp (inv(inv(X)) = X)

(1052) Theorem based_maps.8: ((X in rr) & (Y in rr)) ¥imp (inv(X + Y) = inv(X) + inv(Y))

(1053) Theorem based_maps.9: ((X in rr) & (Y in rr)) ¥imp (inv(X @ Y) = inv(Y) @ inv(X))

(1054) Theorem based_maps.10: ((X in rr) & (Y in rr)) ¥imp ((compl_thryvar(Y @ X) @ inv(X)) + compl_thryvar(Y) = compl_thryvar(Y))

(1054+) Theorem nfa1: [transition triples are finitely many] Finite(d)

(1055) Theorem nfa2: [strict inclusion between strings is a well-founded relation] ((W ¥incin Fin_seqs(a)) & (W /= 0)) ¥imp (EXISTS m in W | (FORALL y in W | not((y ¥incin m) & (y /= m))))

(1056) Theorem nfa3: [consumption of a string over the alphabet] (FORALL w,q | (w in Fin_seqs(a)) ¥imp (nfa_thryvar(w,q) = (nfaEps_thryvar~[if w=0 then q else nfa1_thryvar(w~[#w ¥MINUS 1],arb({nfa_thryvar(wp,q): wp in Fin_seqs(a) | ((wp ¥incin w) & (wp /= w)) & (wp = w ¥ON (#w ¥MINUS 1))})) end if])))

(1057) Theorem nfa4: [consumption of a string over the alphabet, 2] (W in Fin_seqs(a)) ¥imp (nfa_thryvar(W,Q) = (nfaEps_thryvar~[if W = 0 then Q else nfa1_thryvar(W~[#W ¥MINUS 1],nfa_thryvar(W ¥ON (#W ¥MINUS 1),Q)) end if]))

(1058) Theorem nfa5: [consumption of a string leads to states] (W in Fin_seqs(a)) ¥imp (nfa_thryvar(W,Q) ¥incin v)

(1059) Theorem nfa6: [characterization of determinism, 1] ((#s = 1) & Svm(d) & (domain(d) ¥incin (v ¥PROD a))) ¥imp Is_dfa_thryvar

(1060) Theorem nfa7: Is_dfa_thryvar ¥imp (nfaNeighbor_thryvar(P,Q) ¥eq (P incs Q))

(1061) Theorem nfa8: Is_dfa_thryvar ¥imp (((Q ¥incin v) ¥imp ((nfaEps_thryvar~[Q]) = Q)) & ((Q ¥nincin v) ¥imp ((nfaEps_thryvar~[Q]) = 0)))

(1062) Theorem nfa9: [characterization of determinism, 2] (Is_dfa_thryvar & (W in Fin_seqs(a))) ¥imp (#nfa_thryvar(W,{Y}) in 2)

(1063) Theorem nfa10: [deterministic consumption of a string over the alphabet, 3] (Is_dfa_thryvar & (W in Fin_seqs(a)) & (Y in v)) ¥imp (nfa_thryvar(W,{Y}) = if W = 0 then {Y} elseif nfa_thryvar(W ¥ON (#W ¥MINUS 1),{Y}) = 0 then 0 elseif [arb(nfa_thryvar(W ¥ON (#W ¥MINUS 1),{Y})),W~[#W ¥MINUS 1]] notin domain(d) then 0 else {d~[[arb(nfa_thryvar(W ¥ON (#W ¥MINUS 1),{Y})),W~[#W ¥MINUS 1]]]} end if)

(1064) Theorem nfa11: [language accepted by a deterministic automaton] Is_dfa_thryvar ¥imp (nfaLang_thryvar = {z in Fin_seqs(a) | (#nfa_thryvar(z,s) = 1) & (nfa_thryvar(z,s) ¥incin t)})

(1065) Theorem nfa12: [preparation for self-application of this THEORY] (({dfaStart_thryvar} + dfaAccept_thryvar) ¥incin dfaStates_thryvar) & Finite(dfaStates_thryvar) & (dfaTrans_thryvar ¥incin ((dfaStates_thryvar ¥PROD next(a)) ¥PROD dfaStates_thryvar)) & Svm(dfaTrans_thryvar) & (domain(dfaTrans_thryvar) ¥incin (dfaStates_thryvar ¥PROD a)) & (range(dfaTrans_thryvar) ¥incin dfaStates_thryvar)

(1066) Theorem nfa13: Finite(dfaTrans_thryvar) & (((#{dfaStart_thryvar} = 1) & Svm(dfaTrans_thryvar) & (domain(dfaTrans_thryvar) ¥incin (dfaStates_thryvar ¥PROD a))) ¥imp Js_dfa_thryvar) & (FORALL w, y | (Js_dfa_thryvar & (w in Fin_seqs(a))) ¥imp (#dfa_thryvar(w,{y}) in 2)) & (FORALL w, y | (Js_dfa_thryvar & (w in Fin_seqs(a)) & (y in dfaStates_thryvar)) ¥imp (dfa_thryvar(w,{y}) = if w = 0 then {y} elseif dfa_thryvar(w ¥ON (#w ¥MINUS 1),{y}) = 0 then 0 elseif [arb(dfa_thryvar(W ¥ON (#W ¥MINUS 1),{Y})),W~[#W ¥MINUS 1]] notin domain(dfaTrans_thryvar) then 0 else {dfaTrans_thryvar~[[arb(dfa_thryvar(w ¥ON (#w ¥MINUS 1),{y})),w~[#w ¥MINUS 1]]]} end if)) & (Js_dfa_thryvar ¥imp (dfaLang_thryvar = {z in Fin_seqs(a) | (#dfa_thryvar(z,{dfaStart_thryvar}) = 1) & (dfa_thryvar(z,{dfaStart_thryvar}) ¥incin dfaAccept_thryvar)}))

(1067) Theorem nfa14: Js_dfa_thryvar

(1068) Theorem nfa15: (W in Fin_seqs(a)) ¥imp (#dfa_thryvar(W,{Y}) in 2)

(1069) Theorem nfa16: ((W in Fin_seqs(a)) & (Y in dfaStates_thryvar)) ¥imp (dfa_thryvar(W,{Y}) = if W = 0 then {Y} elseif dfa_thryvar(W ¥ON (#W ¥MINUS 1),{Y}) = 0 then 0 elseif [arb(dfa_thryvar(W ¥ON (#W ¥MINUS 1),{Y})),W~[#W ¥MINUS 1]] notin domain(dfaTrans_thryvar) then 0 else {dfaTrans_thryvar~[[arb(dfa_thryvar(W ¥ON (#W ¥MINUS 1),{Y})),W~[#W ¥MINUS 1]]]} end if)

(1069+) Theorem nfa17: dfaLang_thryvar = {z in Fin_seqs(a) | (#dfa_thryvar(z,{dfaStart_thryvar}) = 1) & (dfa_thryvar(z,{dfaStart_thryvar}) ¥incin dfaAccept_thryvar)}

(1070) Theorem collapse1: (W(C) & W(D) & (D in C)) ¥imp (Mostowski_thryvar(D) in Mostowski_thryvar(C))

(1071) Theorem collapse2: ((FORALL c, cp | (W(c) & W(cp) & (Mostowski_thryvar(cp) = Mostowski_thryvar(c))) ¥imp (cp = c) ) & W(C) & W(D)) ¥imp ((Mostowski_thryvar(D) in Mostowski_thryvar(C)) ¥eq (D in C))

(1072) Theorem mutual_climbing1: (Ord(I) & Ord(J)) ¥imp (car(om_thryvar(I)) /= cdr(om_thryvar(J)))

(1072+) Theorem mutual_climbing2: (Ord(I) & Ord(J) & (I /= J)) ¥imp ((car(om_thryvar(I)) /= car(om_thryvar(J))) & (cdr(om_thryvar(I)) /= cdr(om_thryvar(J))))

(1073) Theorem mutual_climbing3: ((X in om1_thryvar) & (Y in om2_thryvar)) ¥imp ((X in Y) or (Y in X))

(1074) Theorem mutual_climbing4: ((om1_thryvar * om2_thryvar) = 0) & (om1_thryvar /= om2_thryvar)

(1075) Theorem mutual_climbing5: (om1_thryvar notin om2_thryvar) & (om2_thryvar notin om1_thryvar)

(1076) Theorem mutual_climbing6: (Un(om1_thryvar) ¥incin om2_thryvar) & (Un(om2_thryvar) ¥incin om1_thryvar)

(1077) Theorem twin_infinities1: not(Finite(om1 + om2))

(1078) Theorem twin_infinities2: not(Finite(om1) or Finite(om2))

(1079) Theorem twin_infinities3: (om1 * om2) = 0

(1080) Theorem twin_infinities4: (om1 /= 0) & (om2 /= 0)

(1081) Theorem 887: (Is_tog(T) & (X in domain(T))) ¥imp (((T~[X]) /= X) & ((T~[T~[X]]) = X))

(1082) Theorem 888: (not Finite(S)) ¥imp (EXISTS f | Is_tog(f) & (domain(f) = S))

(1083) Theorem globalizeMap1: Finite(t) ¥imp ((range(t) = domain(t)) & (one_1_map(t)))

(1084) Theorem globalizeMap2: (EXISTS o | Ord(o) & (1 in o) & (domain(t) ¥incin cumstr(0,o)) & (not Finite(cumstr(0,o) - domain(t))))

(1085) Theorem globalizeMap3: Ord(rk_thryvar) & (1 in rk_thryvar) & (domain(t) ¥incin cumstr(0,rk_thryvar)) & (not Finite(cumstr(0,rk_thryvar) - domain(t)))

(1086) Theorem globalizeMap4: (EXISTS tp | Is_tog(tp) & (domain(tp) = cumstr(0,rk_thryvar) - domain(t)))

(1086+) Theorem globalizeMap5: Is_tog(tg_thryvar) & (domain(tg_thryvar) = cumstr(0,rk_thryvar) - domain(t))

(1087) Theorem globalizeMap6: [alternative characterization of formal negative, via toggling; symmetry and irreflexivity of toggling] ((((X - 1) = (Y - 1)) & ((X * 1) = (1 - Y))) ¥eq (Y = togg_thryvar(X))) & ((((X - 1) = (Y - 1)) & ((X * 1) = (1 - Y))) ¥imp ((((Y - 1) = (X - 1)) & ((Y * 1) = (1 - X))) & (X /= Y)))

(1088) Theorem globalizeMap7: [double negation affirms] (togg_thryvar(togg_thryvar(X)) = X) & (togg_thryvar(X) /= X)

(1089) Theorem globalizeMap8: [negation of special sets] (togg_thryvar(0) = 1) & (togg_thryvar(1) = 0) & (togg_thryvar({{X,Y}}) = {0,{X,Y}}) & ((X /= 0) ¥imp (togg_thryvar({0,X}) = {X}))

(1090) Theorem globalizeMap9: [global toggling preserves rank] (1 in rk(X)) ¥imp (rk(X) = rk((X - 1) + (1 - X)))

(1091) Theorem globalizeMap10: (X in domain(t)) ¥imp (qtog_thryvar(X) = t~[X])

(1092) Theorem globalizeMap11: (X notin range(t)) ¥imp ((qtog_thryvar(X) /= X) & (qtog_thryvar(qtog_thryvar(X)) = X))

(1093) Theorem globalizeTog0: Svm(t) & (range(t) = domain(t))

(1094) Theorem globalizeTog1: (FORALL x | (x in domain(t)) ¥imp (tog_thryvar(x) = t~[x])) & (FORALL x | (x notin range(t)) ¥imp ((tog_thryvar(x) /= x) & (tog_thryvar(tog_thryvar(x)) = x)))

(1095) Theorem globalizeTog2: (tog_thryvar(X) /= X) & (tog_thryvar(tog_thryvar(X)) = X)

(1096) Theorem 889: Svm(0) & (range(0) incs domain(0))

(1096+) Theorem 890: (FORALL x | togg(x) = ((x - 1) + (1 - x))) & (FORALL x | (togg(togg(x)) = x) & (togg(x) /= x)) & (FORALL x | (1 in rk(x)) ¥imp (rk(x) = rk((x - 1) + (1 - x)))) & (FORALL x, y | (togg(0) = 1) & (togg(1) = 0) & (togg({{x,y}}) = {0,{x,y}}) & ((x /= 0) ¥imp (togg({0,x}) = {x})))

(1097) Theorem 891: [specification of formal negative] togg(X) = ((X - 1) + (1 - X))

(1098) Theorem 892: [formal negative and affirmative have the same rank] (1 in rk(X)) ¥imp (rk(X) = rk((X - 1) + (1 - X)))

(1099) Theorem 893: [double negation affirms] (togg(togg(X)) = X) & (togg(X) /= X)

(1100) Theorem 894: [negation of special sets] (togg(0) = 1) & (togg(1) = 0) & (togg({{X,Y}}) = {0,{X,Y}}) & ((X /= 0) ¥imp (togg({0,X}) = {X}))

(1101) Theorem 895: [unsigned symbol retrieval from literal] (B ¥incin 1) ¥imp (atm(B + {{G}}) = G)

(1102) Theorem 896: [sign removal from literal] (atm(togg(X)) = atm(X)) & ((X in signedSymbs(C)) ¥imp (atm(X) in C))

(1103) Theorem 897: [equal literals share the same atom] (((B + {H}) = (D + {K})) & (B in {0,{0}}) & (K /= 0)) ¥imp (H = K)

(1104) Theorem 898: [literals associated with a singleton alphabet] (signedSymbs(0) = 0) & (signedSymbs({G}) = {{{G}},togg({{G}})})

(1105) Theorem 899: [literals over disjoint alphabets] ((C * D) = 0) ¥imp (((signedSymbs(C) * signedSymbs(D)) = 0) & ((signedSymbs(C) + signedSymbs(D)) = signedSymbs(C + D)))

(1106) Theorem 900: [decomposition of the set of all literals over a nonnull set] (C /= 0) ¥imp (signedSymbs(C) = {{{arb(C)}},togg({{arb(C)}})} + signedSymbs(C - {arb(C)}))

(1107) Theorem signedSymbols1: [affirmation is one-one] (X /= Y) ¥imp (aff_thryvar(x) /= aff_thryvar(y))

(1108) Theorem signedSymbols2: [negation is a Galois correspondence] (neg_thryvar(neg_thryvar(X)) = X) & (neg_thryvar(X) /= X)

(1109) Theorem signedSymbols3: [positive and negative literals do not intersect] aff_thryvar(X) /= neg_thryvar(aff_thryvar(Y))

(1110) Theorem signedSymbols4: [affirmation of an atom produced a literal] {aff_thryvar(x): x in atms} ¥incin lits_thryvar

(1111) Theorem signedSymbols5: [literals are closed under negation] {neg_thryvar(x): x in lits_thryvar} = lits_thryvar

(1112) Theorem signedSymbols6: false_thryvar notin lits_thryvar

(1113) Theorem signedSymbols7: {rk(x): x in lits_thryvar} ¥incin {rk(false_thryvar)}

(1114) Theorem signedSymbols8: (N in next(Za)) ¥imp (N in rk(false_thryvar))

(1115) Theorem signedSymbols9: (rk(X) notin rk(false_thryvar)) ¥imp (rk(neg_thryvar(X)) = rk(X))

(1116) Theorem cnfModels0: [assumption concerning tog] (tog(tog(X)) = X) & (tog(X) /= X)

(1117) Theorem cnfModels1: [property of the models of $0$] Has_cnfModel_thryvar(0,M) ¥eq ({h in M | tog(h) in M} = 0)

(1117+) Theorem cnfModels2: [blatant truth, manifest absurdity] Has_cnfModel_thryvar(0,0) & Is_cnfSat_thryvar(0) & ((0 in S) ¥imp (not(Is_cnfSat_thryvar(S))))

(1118) Theorem cnfModels3: [plain satisfiability] (({h in Un(S) | tog(h) in Un(S)} = 0) & (0 notin S)) ¥imp (Has_cnfModel_thryvar(S,Un(S)) & Is_cnfSat_thryvar(S))

(1119) Theorem cnfModels4: [plain satisfiability, 2] ({u: u in S, h in u | (u = {h}) & ({h,tog(h)} * Un(S - {u}) = 0)} incs S) ¥imp (Has_cnfModel_thryvar(S,Un(S)) & Is_cnfSat_thryvar(S))

(1119+) Theorem cnfModels5: [cnf model subsumption] ((T ¥incin S) & Has_cnfModel_thryvar(S,M)) ¥imp Has_cnfModel_thryvar(T,M)

(1120) Theorem cnfModels6: [cnf model subsumption,2] ((T ¥incin S) & Is_cnfSat_thryvar(S)) ¥imp Is_cnfSat_thryvar(T)

(1121) Theorem cnfModels7: [shrinking of cnf_model] Has_cnfModel_thryvar(S,M) ¥imp Has_cnfModel_thryvar(S, M * Un(S))

(1122) Theorem cnfModels8: [broadening of cnf-model] (Has_cnfModel_thryvar(S,M) & ({h in (N - M) | tog(h) in N} = 0) & (M ¥incin N)) ¥imp Has_cnfModel_thryvar(S,N)

(1123) Theorem cnfModels9: [broadening of cnf-model, 2] (Has_cnfModel_thryvar(S,M) & (N incs M) & Has_cnfModel_thryvar(T,N)) ¥imp Has_cnfModel_thryvar(S,N)

(1124) Theorem cnfModels10: [shrinking of cnf_model, 2] (Has_cnfModel_thryvar(S,M) & (H notin Un(S))) ¥imp (Has_cnfModel_thryvar(S, M - {H}))

(1125) Theorem cnfModels11: [broadening of cnf_model, 3] ({H,tog(H)} * M = 0) ¥imp (Has_cnfModel_thryvar(0,M) ¥eq Has_cnfModel_thryvar(0, M + {H}))

(1126) Theorem cnfModels12: [disjunctive tautology] {h in C | tog(h) in C} ¥incin {h in C | Has_cnfModel_thryvar({C},{h}) & Has_cnfModel_thryvar({C},{tog(h)})}

(1127) Theorem cnfModels13: [disjunctive tautology, 2] ((H in C) & (tog(H) in C)) ¥imp (Has_cnfModel_thryvar({C},{H}) & Has_cnfModel_thryvar({C},{tog(H)}))

(1127+) Theorem cnfModels14: [extensibility of models] Has_cnfModel_thryvar(S,M) ¥imp Has_cnfModel_thryvar(0, M + {arb({k,tog(k)}): c in T, k in (c - M) | tog(k) in (c - M)})

(1128) Theorem cnfModels15: [tautology withdrawal rule] Has_cnfModel_thryvar(S,M) ¥imp Has_cnfModel_thryvar(S + {c: c in T, h in c | tog(h) in c}, M + {arb({h,tog(h)}): c in T, h in (c - M) | tog(h) in (c - M)})

(1129) Theorem cnfModels16: [tautology withdrawal rule, 2] ({c: c in S, h in c | tog(h) in c} incs T) ¥imp (Is_cnfSat_thryvar(S) ¥eq Is_cnfSat_thryvar(S - T))

(1130) Theorem cnfModels17: [preliminary to splitting rule] (Has_cnfModel_thryvar(S,M) & (not Has_cnfModel_thryvar({{H}} + {c - {tog(H)}: c in S | H notin c}, M + {H}))) ¥imp (tog(H) in M)

(1130+) Theorem cnfModels18: [splitting rule] Has_cnfModel_thryvar(S,M) ¥imp (Has_cnfModel_thryvar({{H}} + {c - {tog(H)}: c in S | H notin c}, M + {H}) or Has_cnfModel_thryvar({{tog(H)}} + {c - {H}: c in S | tog(H) notin c}, M + {tog(H)}))

(1131) Theorem cnfModels19: [splitting rule, 2] Has_cnfModel_thryvar({{H}} + {c - {tog(H)}: c in S | H notin c}, M) ¥imp Has_cnfModel_thryvar(S,M)

(1132) Theorem cnfModels20: [preliminary to splitting rule, 2] Is_cnfSat_thryvar({{H}} + {c - {tog(H)}: c in S | H notin c}) ¥imp Is_cnfSat_thryvar(S)

(1133) Theorem cnfModels21: [splitting rule, 2] Is_cnfSat_thryvar(S) ¥eq (Is_cnfSat_thryvar({{H}} + {c - {tog(H)}: c in S | H notin c}) or Is_cnfSat_thryvar({{tog(H)}} + {c - {H}: c in S | tog(H) notin c}))

(1134) Theorem cnfModels22: [pure literal rule] ((H in Un(S)) & (tog(H) notin Un(S)) & Has_cnfModel_thryvar(0,M) & (not(Has_cnfModel_thryvar({{H,tog(H)}},M)))) ¥imp (Has_cnfModel_thryvar(S, M + {H}) ¥eq Has_cnfModel_thryvar({c in S | H notin c}, M))

(1135) Theorem cnfModels23: [pure literal rule, 2] (tog(H) notin Un(S)) ¥imp (Is_cnfSat_thryvar(S) ¥eq Is_cnfSat_thryvar({{H}} + {c in S | H notin c}))

(1136) Theorem cnfModels24: [unit literal rule, 0] (({H} in S) & Has_cnfModel_thryvar(S,M)) ¥imp ((H in M) & (tog(H) notin M))

(1137) Theorem cnfModels25: [unit literal rule] (({H} in S) & Has_cnfModel_thryvar(0,M) & ({H,tog(H)} * M = 0)) ¥imp (Has_cnfModel_thryvar(S, M + {H}) ¥eq Has_cnfModel_thryvar({c - {tog(H)}: c in S | H notin c}, M))

(1138) Theorem cnfModels26: [unit literal rule, 2] ({H} in S) ¥imp (Is_cnfSat_thryvar(S) ¥eq Is_cnfSat_thryvar({c - {tog(H)}: c in S | H notin c}))

(1139) Theorem cnfModels27: (Un(S) incs Un({c - {tog(H)}: c in S | H notin c})) & (H notin Un({c - {tog(H)}: c in S | H notin c}))

(1140) Theorem cnfModels28: (Is_cnfFinSat_thryvar(P) & (P incs Q)) ¥imp Is_cnfFinSat_thryvar(Q)

(1141) Theorem cnfModels29: Is_cnfFinSat_thryvar(P) ¥imp Is_cnfFinSat_thryvar(P + {{{X}}}) or Is_cnfFinSat_thryvar(P + {{{tog(X)}}})

(1142) Theorem cnfModels30: [compactness of classical propositional logic] (Is_cnfFinSat_thryvar(P) & (FORALL s in P, c in s | Finite(c))) ¥imp (EXISTS m | (FORALL s in P | Has_cnfModel_thryvar(s,m)))

(1143) Theorem davisPutnam0: (tog(tog(H)) = H) & (tog(H) /= H) &((tog(H) notin Un(S)) ¥imp ({c in S | H notin c} = {c - {tog(H)}: c in S | H notin c}))

(1144) Theorem davisPutnam1: (S in clauSets_thryvar) ¥imp (Finite(S) & Finite(Un(S)) & (Un(S) ¥incin lits) & (fail notin Un(S)) & (tog(fail) notin Un(S)))

(1145) Theorem davisPutnam2: ((S in clauSets_thryvar) & (C in S)) ¥imp Finite(C)

(1146) Theorem davisPutnam3: ((S in clauSets_thryvar) & ((T ¥incin S) or (Un(T) ¥incin Un(S)))) ¥imp (T in clauSets_thryvar)

(1147) Theorem davisPutnam4: (FORALL s | Is_dpSat_thryvar(s) = (EXISTS m | Has_dpModel_thryvar(s,m))) & (FORALL s | Has_dpModel_thryvar(0,0) & Is_dpSat_thryvar(0) & ((0 in s) ¥imp (not(Is_dpSat_thryvar(s))))) & (FORALL s | ({u: u in s, h in u | (u = {h}) & ({h,tog(h)} * Un(s - {u}) = 0)} incs s) ¥imp (Has_dpModel_thryvar(s,Un(s)) & Is_dpSat_thryvar(s))) & (FORALL s, h | Is_dpSat_thryvar(s) ¥eq (Is_dpSat_thryvar({{h}} + {c - {tog(h)}: c in s | h notin c}) or Is_dpSat_thryvar({{tog(h)}} + {c - {h}: c in s | tog(h) notin c}))) & (FORALL h, s | (tog(h) notin Un(s)) ¥imp (Is_dpSat_thryvar(s) ¥eq Is_dpSat_thryvar({{h}} + {c in s | h notin c}))) & (FORALL h, s, m | (({h} in s) & Has_dpModel_thryvar(s,m)) ¥imp ((h in m) & (tog(h) notin m))) & (FORALL h, s, m | Has_dpModel_thryvar({{h}} + {c - {tog(h)}: c in s | h notin c}, m) ¥imp Has_dpModel_thryvar(s,m)) & (FORALL s, m, t | Has_dpModel_thryvar(s,m) ¥imp Has_dpModel_thryvar(s + {c: c in t, h in c | tog(h) in c}, m + {arb({h,tog(h)}): c in t, h in (c - m) | tog(h) in (c - m)})) & (FORALL t,s | ((t ¥incin s) & Is_dpSat_thryvar(s)) ¥imp Is_dpSat_thryvar(t))

(1148) Theorem davisPutnam5: ((G ¥incin clauSets_thryvar) & (G /= 0)) ¥imp (EXISTS m in G | (FORALL v in G | not((Un(v - settled_thryvar(v)) ¥incin Un(m - settled_thryvar(m))) & (Un(v - settled_thryvar(v)) /= Un(m - settled_thryvar(m))))))

(1149) Theorem davisPutnam6: (FORALL x, p | (x in clauSets_thryvar) ¥imp (dp0_thryvar(x,p) = f3_dp_thryvar(x,{dp0_thryvar(y,p): y in clauSets_thryvar | ((Un(y - settled_thryvar(y)) ¥incin Un(x - settled_thryvar(x))) & (Un(y - settled_thryvar(y)) /= Un(x - settled_thryvar(x)))) & P3_dp_thryvar(x,y,p)},p)))

(1150) Theorem davisPutnam7: (X in clauSets_thryvar) ¥imp (#Un(X - settled_thryvar(X)) in Za)

(1151) Theorem davisPutnam8: ((X in clauSets_thryvar) & (H in Un(X - settled_thryvar(X))) & ((Y = {{H}} + {c - {tog(H)}: c in X | H notin c}))) ¥imp ((Y in clauSets_thryvar) & (Un(Y - settled_thryvar(Y)) /= Un(X - settled_thryvar(X))) & (Un(Y - settled_thryvar(Y)) ¥incin Un(X - settled_thryvar(X))))

(1152) Theorem davisPutnam9: ((S in clauSets_thryvar) & (0 notin S) & (S ¥nincin settled_thryvar(S))) ¥imp (((pk_thryvar~[S]) in Un(S - settled_thryvar(S))) & ((pk_thryvar~[S]) /= fail) & (tog(pk_thryvar~[S]) /= fail) & ((tog(pk_thryvar~[S]) in Un(S)) ¥imp (tog(pk_thryvar~[S]) in Un(S - settled_thryvar(S)))))

(1153) Theorem davisPutnam10: ((S in clauSets_thryvar) & ((0 in S) or (S ¥incin settled_thryvar(S)) or (#Un(S - settled_thryvar(S)) = 0))) ¥imp(if fail in dp0_thryvar(S,pk_thryvar) then (not Is_dpSat_thryvar(S)) else Has_dpModel_thryvar(S,dp0_thryvar(S,pk_thryvar)) end if)

(1154) Theorem davisPutnam11: (S in clauSets_thryvar) ¥imp(if fail in dp0_thryvar(S,pk_thryvar) then (not Is_dpSat_thryvar(S)) else Has_dpModel_thryvar(S,dp0_thryvar(S,pk_thryvar)) end if)

(1155) Theorem davisPutnam12: (S in clauSets_thryvar) ¥imp (Is_dpSat_thryvar(S) ¥eq (fail notin dp_thryvar(S)))

(1156) Theorem davisPutnam13: (S in clauSets_thryvar) ¥imp (Is_dpSat_thryvar(S) ¥eq Has_dpModel_thryvar(S,dp_thryvar(S)))

(1157) Theorem 901: (Svm(P) & Finite(P) & (range(P) incs domain(P))) ¥imp Is_perm(P)

(1158) Theorem 902: (Scycle(P) ¥imp ((P /= 0) & Is_perm(P) & Svm(P) & Finite(P))) & (Straight(P,X,Y) ¥imp (Svm(P) & Finite(P)))

(1159) Theorem 903: (Is_perm(P) & (P /= 0)) ¥imp (EXISTS c ¥incin P | Scycle(c))

(1160) Theorem 904: (Is_map(P) & Finite(P) & (range(P) ¥incin domain(P)) & (P /= 0)) ¥imp (EXISTS c ¥incin P | Scycle(c))

(1161) Theorem 905: Is_perm(0) & (Is_perm(P) ¥imp one_1_map(P))

(1162) Theorem 906: Acyclic(A) ¥imp (not Scycle(A))

(1163) Theorem 907: ((B incs A) & Acyclic(B)) ¥imp Acyclic(A)

(1164) Theorem 908: Acyclic(0) & Is_perm({[X,X]}) & Scycle({[X,X]}) & ((X /= Y) ¥eq Acyclic({[X,Y]}))

(1165) Theorem 909: Is_perm({[X,Y],[Y,X]}) & Scycle({[X,Y],[Y,X]}) & ((X /= Y) ¥imp Straight({[X,Y]},X,Y))

(1166) Theorem 910: Straight(0,X,Y) ¥eq (Y = X)

(1167) Theorem 911: ((X /= Y) & (Y /= Z)) ¥imp ((X /= Z) ¥eq Acyclic({[X,Y],[Y,Z]}))

(1168) Theorem 912: (Straight(Q,X,Y) & Is_perm(P) & (P /= 0)) ¥imp (P ¥nincin Q)

(1169) Theorem 913: Acyclic({[X,Y],[Y,Z]}) ¥imp Straight({[X,Y],[Y,Z]},X,Z)

(1170) Theorem 914: (Scycle(C) & (X in domain(C))) ¥imp Straight(C - {[X,C~[X]]}, C~[X], X)

(1171) Theorem 915: (Straight(P,X,Y) & (P /= 0)) ¥imp ((X in (domain(P) - range(P))) & (Y in (range(P) - domain(P))))

(1172) Theorem 916: (Straight(P,X,Y) & (P /= 0)) ¥imp (({Y} = (range(P) - domain(P))) & ({X} = (domain(P) - range(P))))

(1173) Theorem 917: Ord(N) ¥imp (segm(N,P,S) ¥incin segm(next(N),P,S))

(1174) Theorem 918: (Is_perm(C) & (S ¥incin C) & Ord(Y)) ¥imp (segm(Y,C,S) ¥incin C)

(1175) Theorem 919: (Straight(Q,X,Y) & (Q /= 0)) ¥imp ([X,Q~[X]] in prefix(Q,Q~[X]))

(1176) Theorem 920: (Straight(Q,X,Y) & (Q /= 0)) ¥imp (EXISTS p ¥incin (Q - {[X,Q~[X]]}) | Straight(p, Q~[X], Y))

(1177) Theorem 921: not(Acyclic(R) & Straight(P,Z,Y) & Straight(Q,Y,Z) & ((P + Q) ¥incin R) & ((P + Q) /= 0))

(1178) Theorem 922: (Acyclic(R) & Straight(P,Z,Y) & Straight(Q,X,Z) & ((P + Q) ¥incin R)) ¥imp (EXISTS s ¥incin (P + Q) | Straight(s,X,Y))

(1179) Theorem 923: Is_map(on(R,V)) & (on(R,V) ¥incin R) & (Is_map(R) ¥imp (on(R + inv(R),V) = (on(R,V) + inv(on(R,V)))))

(1180) Theorem 924: Is_map(transCl(R)) & Is_map(trans_reflCl(R,V)) & (trans_reflCl(R,V) ¥incin (V ¥PROD V))

(1181) Theorem 925: Is_map(R) ¥imp (R ¥incin transCl(R))

(1182) Theorem 926: (R ¥incin S) ¥imp (transCl(R) ¥incin transCl(S))

(1183) Theorem 927: ((R ¥incin S) & (N ¥incin M)) ¥imp (trans_reflCl(R,N) ¥incin trans_reflCl(S,M))

(1184) Theorem 928: (transCl(R) ¥incin (domain(R) ¥PROD range(R))) & (Finite(R) ¥imp Finite(transCl(R)))

(1185) Theorem 929: Acyclic(A) ¥imp (([X,X] notin transCl(A)) & (({[X,Y],[Y,Z]} ¥incin transCl(A)) ¥imp ([X,Z] in transCl(A))))

(1185+) Theorem 930: (Acyclic(F) & Finite(T) & (T /= 0)) ¥imp (EXISTS w in T | (FORALL v in T | [v,w] notin transCl(F)))

(1186) Theorem taggedGraph0: [association of its tag to each vertex] (FORALL v | Is_vertex(v) ¥imp (Is_tag(tag1_thryvar(v)) & (v in tag1_thryvar(v))))

(1187) Theorem taggedGraph1: SameTag_thryvar(X,X)

(1187+) Theorem taggedGraph2: (SameTag_thryvar(X,Y) & SameTag_thryvar(Y,Z)) ¥imp SameTag_thryvar(Z,X)

(1188) Theorem taggedGraph3: ((Q ¥incin (R + inv(R))) & Is_map(R) & (FORALL e in R | SameTag_thryvar(car(e),cdr(e))) & (X in domain(Q))) ¥imp SameTag_thryvar(X,(Q~[X]))

(1189) Theorem taggedGraph4: ((Q ¥incin (R + inv(R))) & Is_map(R) & (FORALL e in R | SameTag_thryvar(car(e),cdr(e))) & Straight(Q,X,Y)) ¥imp SameTag_thryvar(X,Y)

(1190) Theorem taggedGraph5: (Is_map(R) & (FORALL e in R | SameTag_thryvar(car(e),cdr(e))) & ([X,Y] in trans_reflCl(R + inv(R),V))) ¥imp SameTag_thryvar(X,Y)

(1191) Theorem acyclicFiniteGraph1: (FORALL t | ((t ¥incin vertices) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | not([v,w] in transCl(edges)))))

(1192) Theorem acyclicFiniteGraph2: (FORALL x, t | (x in vertices) ¥imp (rk2(x,t) = Un({next(rk2(y,t)): y in vertices | ([y,x] in transCl(edges)) & ([y,x] in t)})))

(1193) Theorem acyclicFiniteGraph3: (X in vertices) ¥imp (height_thryvar(X) = Un({next(height_thryvar(y)): y in vertices | [y,X] in edges}))

(1194) Theorem labeledGraph0: (E in edges) ¥imp ((E = [car(E),cdr(E)]) & (car(E) in vertices) & (cdr(E) in vertices))

(1195) Theorem labeledGraph1: (EXISTS y | (V in vertices) ¥imp ((y in tags) & (V in y)))

(1196) Theorem labeledGraph2: ((X in tags) & (Y in tags) & (X /= Y)) ¥imp ((X * Y) = 0)

(1197) Theorem labeledGraph3: [properties of labeled graphs inherited from tagged graphs] (FORALL v | (v in vertices) ¥imp ((tag2_thryvar(v) in tags) & (v in tag2_thryvar(v)))) & (FORALL v | block_thryvar(v) = if v in vertices then {w in tag2_thryvar(v) | w in vertices} else 0 end if) & (FORALL v, w | SameTag_thryvar(v,w) ¥eq (block_thryvar(v) = block_thryvar(w))) & (FORALL v | SameTag_thryvar(v,v)) & (FORALL q, r, x | ((q ¥incin (r + inv(r))) & Is_map(r) & (FORALL e in r | SameTag_thryvar(car(e),cdr(e))) & (x in domain(q))) ¥imp SameTag_thryvar(x,(q~[x]))) & (FORALL q, r, x, y | ((q ¥incin (r + inv(r))) & Is_map(r) & (FORALL e in r | SameTag_thryvar(car(e),cdr(e))) & Straight(q,x,y)) ¥imp SameTag_thryvar(x,y)) & (FORALL r, x, y, v | (Is_map(r) & (FORALL e in r | SameTag_thryvar(car(e),cdr(e))) & ([x,y] in trans_reflCl(r + inv(r),v))) ¥imp SameTag_thryvar(x,y))

(1198) Theorem labeledGraph4: (0 in bisim_thryvar) & (bisim_thryvar ¥incin sim_thryvar) & ((X in bisim_thryvar) ¥imp (X ¥incin (vertices ¥PROD vertices)))

(1199) Theorem labeledGraph5: (B in bisim_thryvar) ¥imp (B ¥incin bisimilar_thryvar)

(1200) Theorem labeledGraph6: (B in bisim_thryvar) ¥imp (inv(B) in bisim_thryvar)

(1201) Theorem labeledGraph7: bisimilar_thryvar ¥incin similar_thryvar

(1202) Theorem labeledGraph8: (B in sim_thryvar) ¥imp (trans_reflCl(B,vertices) in sim_thryvar)

(1203) Theorem labeledGraph9: (B in bisim_thryvar) ¥imp (trans_reflCl(B + inv(B), vertices) in bisim_thryvar)

(1204) Theorem labeledGraph10: ((R in sim_thryvar) & (S in sim_thryvar)) ¥imp ((R + S) in sim_thryvar)

(1205) Theorem labeledGraph11: ((R in bisim_thryvar) & (S in bisim_thryvar)) ¥imp ((R + S) in bisim_thryvar)

(1206) Theorem labeledGraph12: (R in bisim_thryvar) ¥imp (inv(R) in bisim_thryvar)

(1207) Theorem labeledGraph13: Transitive(bisimilar_thryvar) & Symmetric(bisimilar_thryvar) & Reflexive(bisimilar_thryvar,vertices)

(1208) Theorem labeledGraph14: Transitive(similar_thryvar) & Symmetric(similar_thryvar) & Reflexive(similar_thryvar,vertices)

(1209) Theorem 931: [Domains and ranges of direct image] range(G)=(G ¥IM D) + (G ¥IM (domain(G)-D))

(1210) Theorem 932: [Domain decomposition of a map range] ((D*E=0) & Inj(G)) ¥imp ((G ¥IM D) * (G ¥IM E) = 0)

(1211) Theorem 933: [Direct image of a domain element] (X in domain(G)) ¥imp (G ¥IM {X} /=0)

(1212) Theorem 934: [Range of a restricted direct map] G ¥IM D = range(G ¥ON D)

(1213) Theorem 935: [Monotonicity of direct image] (B ¥incin A) ¥imp ((G ¥IM B) ¥incin (G ¥IM A))

(1214) Theorem 936: (0 in Za) & (FORALL x | (x in Za) ¥imp ((x ¥PLUS 0) = x)) & (FORALL x,y | ((x in Za) & (y in Za)) ¥imp ((x ¥PLUS y) = (y ¥PLUS x))) & (FORALL x,y | ((x in Za) & (y in Za)) ¥imp ((x ¥PLUS y) in Za)) & (FORALL x,y,z | ((x in Za) & (y in Za) & (z in Za)) ¥imp (((x ¥PLUS y) ¥PLUS z) = (x ¥PLUS (y ¥PLUS z))))

(1215) Theorem 937: (FORALL f | (Finite(f) & (range(f) ¥incin Za)) ¥imp (sumZa(f) in Za)) & (FORALL x | (cdr(x) in Za) ¥imp (sumZa({x}) = cdr(x))) & (FORALL f,t | (Finite(f) & Is_map(f) & (range(f) ¥incin Za)) ¥imp (sumZa(f) = (sumZa(f ¥ON (domain(f) * t)) ¥PLUS sumZa(f ¥ON (domain(f) - t))))) & (FORALL c,f | ((c in f) & Finite(f) & (range(f) ¥incin Za)) ¥imp (sumZa(f) = (sumZa(f - {c}) ¥PLUS cdr(c)))) & (FORALL f,g | (Finite(f) & Svm(f) & Svm(g) & (domain(f) = domain(g)) & (range(f) ¥incin Za)) ¥imp (sumZa(f) = sumZa({[y,sumZa(f ¥ON (g ¥INV_IM {y}))]: y in range(g)}))) & (FORALL f,g | (Finite(f) & Svm(f) & one_1_map(g) & (domain(f) = domain(g)) & (range(f) ¥incin Za)) ¥imp (sumZa(f) = sumZa({[y,f~[inv(g)~[y]]]: y in range(g)})))

(1216) Theorem 938: [basic inclusion-exclusion lemma for two sets] (Finite(X + Y) ¥imp (#(X + Y) = ((#X ¥PLUS #Y) ¥MINUS #(X * Y)))) & ((#(X + Y) ¥PLUS #(X * Y)) = (#X ¥PLUS #Y))

(1217) Theorem 939: [basic inclusion-exclusion lemma for tuples of finite sets] ((domain(A) in Za) & Svm(A) & Finite(Un(range(A)))) ¥imp (#Un(range(A)) = sumZa({[g,#int(A ¥IM g)]: g ¥incin domain(A) | Odd(#g)}) ¥MINUS sumZa({[g,#int(A ¥IM g)]: g ¥incin domain(A) | (g /= 0) & (not Odd(#g))}))

(1218) Theorem 940: [basic inclusion-exclusion lemma for finitely many finite sets] (Finite(F) & Finite(Un(F))) ¥imp (#Un(F) = sumZa({[g,#int(g)]: g ¥incin F | Odd(#g)}) ¥MINUS sumZa({[g,#int(g)]: g ¥incin F | (g /= 0) & (not Odd(#g))}))

(1219) Theorem 941: [oddity-characterizing assertion] (FORALL s | Finite(s) ¥imp (oddity(s) = if s = 0 then R_0 elseif oddity(s - {arb(s)}) /= R_1 then R_1 else R_Rev(R_1) end if))

(1220) Theorem 942: [basic inclusion-exclusion lemma for finite real-valued maps] (Svm(F) & (F /= 0) & (range(F) ¥incin Re)) ¥imp (max_over_Re(F) = sumRe({[g,min_over_Re(g)]: g ¥incin F | oddity(g) = R_1}) ¥R_MINUS sumRe({[g,min_over_Re(g)]: g ¥incin F | oddity(g) = R_Rev(R_1)}))

(1221) Theorem 943: [basic inclusion-exclusion lemma for finite real-valued maps, 2] (Svm(F) & (F /= 0) & (range(F) ¥incin Re)) ¥imp (max_over_Re(F) = sumRe({[g,oddity(g) ¥R_TIMES min_over_Re(g)]: g ¥incin F | g /= 0}))

(1222) Theorem 944: (P in F) ¥imp (pow(F) = {0,{P}} + {g ¥incin (F - {P}) | g /= 0} + {g + {P} : g ¥incin (F - {P}) | g /= 0})

(1223) Theorem 945: (P in F) ¥imp (pow(F) = {g: g ¥incin (F - {P})} + {g + {P} : g ¥incin (F - {P})})

(1224) Theorem 946: ({[F,Fp],[G,Gp]} ¥incin samePath(S)) ¥imp ([concat(F,G),concat(Fp,Gp)] in samePath(S))

(1225) Theorem 947: (F in Fin_seqs(S) - {0}) ¥imp (Is_perm({[F~[i],F~[i ¥PLUS 1]]: i in #F ¥MINUS 1} + {[F~[#F ¥MINUS 1],F~[0]]}) ¥eq (0 = {p in redexLoops | car(p) = F}))

(1225+) Theorem 948: ({[F,Fp],[G,Gp]} ¥incin sameWord(S)) ¥imp ([concat(F,G),concat(Fp,Gp)] in sameWord(S))

(1226) Theorem 949: Ord(K) ¥imp divides(K,0)

(1227) Theorem 950: (Card(M) or (M in Za)) ¥imp (divides(1,M) & divides(M,M))

(1228) Theorem 951: (divides(K,I) & divides(I,N)) ¥imp divides(K,N)

(1229) Theorem 952: ((M in Za) & (1 in M)) ¥imp (Is_prime(smallest_factor(M)) & divides(smallest_factor(M),M))

(1230) Theorem 16500: (D in F) ¥imp (pow(F) = {g: g ¥incin (F - {D})} + {g + {D} : g ¥incin (F - {D})})

(1231) Theorem halvesPow1: ((D in s0) & (domain(F) = pow(s0 - {D})) & Is_oddPow(F) & (G = F + {[q + {D},R_Rev(F~[q])]: q in pow(s0 - {D})})) ¥imp ((domain(G) = pow(s0)) & Is_oddPow(G))

(1232) Theorem halvesPow2: ((domain(F) = pow(s0)) & Is_oddPow(F) & (R_0 notin range(F))) ¥imp (#{q: q ¥incin s0 | F~[q] ¥R_GT R_0} = #{q: q ¥incin s0 | F~[q] ¥R_LT R_0})

(1232+) Theorem halves0: Is_map(wholeP_thryvar) & Finite(wholeP_thryvar)

(1233) Theorem halves1: (H in halvesP_thryvar) ¥imp (sgg_thryvar(H) in oddFcn_thryvar)

(1234) Theorem halves2: (({H,G} ¥incin halvesP_thryvar) & (Q in wholeP_thryvar)) ¥imp ((sgg_thryvar(H)~[Q]) ¥R_OVER (sgg_thryvar(G)~[Q]) = (sgg_thryvar(H)~[Q]) ¥R_TIMES (sgg_thryvar(G)~[Q]))

(1235) Theorem halves3: ({H,G} ¥incin halvesP_thryvar) ¥imp ({[p,(sgg_thryvar(H)~[p]) ¥R_OVER (sgg_thryvar(G)~[p])]: p in wholeP_thryvar} in evenFcn_thryvar)

(1236) Theorem halves4: (({H,G} ¥incin halvesP_thryvar) & Is_even(E) & (domain(E) = wholeP_thryvar)) ¥imp (E ¥H_TIMES H = E ¥H_TIMES G)

(1237) Theorem halves5: ({H,G} ¥incin halvesP_thryvar) ¥imp ((sign_thryvar~[[G,H]] in {R_1,R_Rev(R_1)}) & (sign_thryvar~[[G,H]] = R_1))

(1237+) Theorem halves6: (Is_perm(F) & (domain(F) = s0) & (H in halvesP_thryvar)) ¥imp ((F ¥H_PROD H) in halvesP_thryvar)

(1238) Theorem halves7: (Is_perm(F) & (domain(F) = s0) & ({H,G} ¥incin halvesP_thryvar)) ¥imp (sign_thryvar~[[F ¥H_PROD G,F ¥H_PROD H]] = sign_thryvar~[[G,H]])

(1239) Theorem halves8: (Is_perm(F) & (domain(F) = s0) & (H in halvesP_thryvar)) ¥imp ((sgn_thryvar~[F] in {R_1,R_Rev(R_1)}) & (sgn_thryvar~[F] = sign_thryvar~[[F ¥H_PROD H,H]]))

(1240) Theorem halves9: (Is_perm(D) & Is_perm(F) & (domain(D) = s0) & (domain(F) = s0) & (H in halvesP_thryvar)) ¥imp (Is_perm(D @ F) & (domain(D @ F) = s0) & ((D @ F) ¥H_PROD H) = (D ¥H_PROD (F ¥H_PROD H)))

(1241) Theorem halves10: (Is_perm(D) & Is_perm(F) & (domain(D) = s0) & (domain(F) = s0)) ¥imp (sgn_thryvar~[D @ F] = (sgn_thryvar~[D]) ¥R_TIMES (sgn_thryvar~[F]))

-- --BEGIN HERE ---------------------------------------------------------------------------------------------------- -- -- ************************************************************************************************ -- The Formal Foundations of Mathematical Analysis -- ************************************************************************************************ -- -- The text which follows is a mixture of formulae and comments, acceptable to the Referee proof verifier -- and verified thereby, which gives a sequence of formal definitions and proofs covering the foundations of -- mathematical analysis from its set theoretic roots. These definitions and proofs are expected to -- extend in time to culminate in a proof of the Cauchy integral theorem of complex analysis. -- -- The verifier uses an extended form of natural deduction, in which each inference -- within a proof consists of a 'hint' part defining the inference primitive used to -- derive a statement, followed (after an occurrence of the separator "$==>$") by -- the statement itself. Just 18 inference primitives, are used, namely -- \nextline \begin{tabular}{ll} -- ELEM \nextitem extended mlss inference \nextline -- Suppose \nextitem open natural deduction context \nextline -- Suppose_not \nextitem open proof-by-contradiction argument \nextline -- Discharge \nextitem close natural deduction context if current context is contradictory \nextline -- Citation \nextitem statement citation followed by extended mlss inference \nextline -- Tcitation \nextitem theorem citation followed by extended mlss inference \nextline -- EQUAL \nextitem use of equalities during blobbing, followed by extended mlss inference \nextline -- ALGEBRA \nextitem use of algebraic identities during blobbing, followed by extended mlss inference \nextline -- SIMPLF \nextitem simplify nested setformers \nextline -- Set_monot \nextitem handle quantifiers and exploit set-theoretic monotonicity relationships \nextline -- Def \nextitem make a (possibly recursive) definition \nextline -- Use_def \nextitem cite and use a definition \nextline -- Loc_def \nextitem make a local definition of some auxiliary constant \nextline -- THEORY \nextitem introduce a new named theory \nextline -- ENTER_THEORY \nextitem enter the context defined by a theory \nextline -- Assump \nextitem cite a theory assumption \nextline -- APPLY \nextitem apply a theory -- QED \nextitem terminate the proof of a theorem --\end{tabular} -- The formal material presented falls into various sections, each roughly corresponding to some -- recognized area of mathematics. -- -- ************************************************************************************************ -- Section 1: Basic Operations of set theory and the theory of ordinals -- ************************************************************************************************ -- -- Our first step is to recast the axioms of choice and of infinity, which are built-in -- assumptions of set theory, as the two following small utility theorems. -- Theorem 0: [Axiom of Choice] ((S = 0) & (arb(S) = 0)) or ((arb(S) in S) & (arb(S) * S = 0)). Proof: Suppose_not(s) ==> AUTO Assump ==> Stat1: (FORALL s in OM | (((s = 0) & (arb(s) = 0)) or ((arb(s) in s) & (arb(s) * s = 0)))) s-->Stat1 ==> false; Discharge ==> QED -- -- The following theorem simply restates the axiom of infinity. -- Theorem 00: [Axiom of Infinity] (s_inf /= 0) & (FORALL x in s_inf | {x} in s_inf). Proof: Suppose_not ==> AUTO Assump ==> (s_inf /= 0) & (FORALL x in s_inf | {x} in s_inf) Discharge ==> QED -- -- After this, we begin by making a trick, purely set-theoretic definition of the notion of ordered pair, -- and proving a few simple lemmas which tell us how to extract the first and second components of a pair. -- Def 1: [Ordered pair] Def([X,Y]) := {{X},{{X},{{Y},Y}}} -- -- Our first result is a lemma stating a basic property of 'arb'. -- Its proof is elementary. -- Theorem 1: [Choice from singleton] arb({X}) = X. Proof: Suppose_not(c) ==> AUTO Discharge ==> QED -- -- Next we give a lemma which prepares for definition of the first-component extractor -- from an ordered pair. Its proof is elementary. -- Theorem 2: [Choice from set of 2] (X in Y) ¥imp (arb({Y,X}) = X). Proof: Suppose_not(c,d) ==> AUTO Discharge ==> QED -- -- The following lemma also prepares for definition of the first-component extractor -- from an ordered pair. Its proof is elementary. -- Theorem 3: [Choice from pair] arb([X,Y]) = {X}. Proof: Suppose_not(c,d) ==> AUTO Use_def([]) ==> Stat1: arb({{c},{{c},{{d},d}}}) /= {c} ({c},{{c},{{d},d}})-->T2(Stat1*) ==> false; Discharge ==> QED -- -- The following is a third lemma which prepares for definition of the first-component extractor -- from an ordered pair. Its proof is elementary. -- Theorem 4: [Choice from special set of 2] arb({X,{X,Y}}) = X. Proof: Suppose_not(x,y) ==> AUTO Discharge ==> QED -- -- Finally, we give the formula for the first-component extractor -- from an ordered pair, along with its proof, which remains elementary. -- Theorem 5: [Choice from pair, 2] arb(arb([X,Y])) = X. Proof: Suppose_not(c,d) ==> arb(arb([c,d])) /= c Use_def([]) ==> Stat1: arb(arb({{c},{{c},{{d},d}}})) /= c ()ELEM ==> (arb({{c},{{c},{{d},d}}}) = {c}) & (arb({c}) = c) EQUAL(Stat1) ==> false; Discharge ==> QED -- -- Next we give a lemma which prepares for definition of the second-component extractor -- from an ordered pair. Its proof is elementary. -- Theorem 6: [cdr choice] arb(arb(arb([X,Y] - {arb([X,Y])}) - {arb([X,Y])})) = Y. Proof: Suppose_not(c,d) ==> arb(arb(arb([c,d] - {arb([c,d])}) - {arb([c,d])})) /= d (c,d)-->T3 ==> arb([c,d]) = {c} EQUAL ==> arb(arb(arb([c,d] - {{c}}) - {{c}})) /= d Use_def([]) ==> arb(arb(arb({{c},{{c},{{d},d}}} - {{c}}) - {{c}})) /= d -- Use_def([](c,d)->Stat1) ==> AUTO TELEM ==> arb({{c},{{c},{{d},d}}} - {{c}}) = {{c},{{d},d}} EQUAL ==> Stat2: arb(arb({{c},{{d},d}} - {{c}})) /= d (Stat2)Discharge ==> QED -- -- Now we can give formal definitions of both ordered-pair component extractor functions. -- Def 2: [First component of ordered pair] car(X) := arb(arb(X)) Def 3: [Second component of ordered pair] cdr(X) := arb(arb(arb(X - {arb(X)}) - {arb(X)})) -- -- The following basic property of the first-component extractor function -- is an elementary consequence of the preceding lemmas. -- Theorem 7: [car of pair] car([X,Y]) = X. Proof: Suppose_not(x,y) ==> car([x,y]) /= x Use_def(car) ==> arb(arb([x,y])) /= x (x,y)-->T5 ==> false; Discharge ==> QED -- -- Similarly, the basic property of the second-component extractor function -- is an elementary consequence of the preceding lemmas. -- Theorem 8: [cdr of pair] cdr([X,Y]) = Y. Proof: Suppose_not(x,y) ==> cdr([x,y]) /= y Use_def(cdr) ==> arb(arb(arb([x,y] - {arb([x,y])}) - {arb([x,y])})) /= y (x,y)-->T6 ==> false; Discharge ==> QED -- -- The following basic relationship between ordered pair formation and component extraction -- is also an elementary consequence of the preceding lemmas. -- Theorem 9: [Ordered pair property] (car([X,Y]) = X) & (cdr([X,Y]) = Y). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T7 ==> AUTO (x,y)-->T8 ==> AUTO Discharge ==> QED -- Theorem 10: [Ordered pair property, 2] [X,Y] = [car([X,Y]),cdr([X,Y])]. Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T9 ==> AUTO EQUAL ==> false; Discharge ==> QED -- -- The fact that any pair is the pair of its first and second components is equally elementary. -- Theorem 11: [Pair reconstruction lemma] (U = [A,B]) ¥imp (U = [car(U),cdr(U)]). Proof: Suppose_not(u,a,b) ==> AUTO (a,b)-->T7 ==> AUTO (a,b)-->T8 ==> AUTO Discharge ==> QED -- -- Next we introduce a first 'THEORY', which simply encapsulates the fact that -- the 'if ... then ... else ... end if' -- term constructor commutes with any monadic term constructor. -- THEORY if_then_else(p,a,b,f(x)) [Elementary properties of if_then_else] END if_then_else -- ENTER_THEORY if_then_else -- Theorem if_then_else.1: [commutativity property of if_then_else] f(if p then a else b end if) = if p then f(a) else f(b) end if. Proof: Suppose_not ==> AUTO Suppose ==> p ELEM ==> (a = if p then a else b end if) & (f(a) = if p then f(a) else f(b) end if) EQUAL ==> false; Discharge ==> (b = if p then a else b end if) & (f(b) = if p then f(a) else f(b) end if) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY if_then_else -- --THEORY if_then_else(p,a,b,f(x)) [Elementary properties of if_then_else] --==> --f(if p then a else b end if) = if p then f(a) else f(b) end if --END if_then_else -- -- Next we introduce a second 'THEORY', which regards nested occurrences -- of the 'if ... then ... else ... end if' -- term constructor. -- THEORY if_then_else2(q,p,a,b,c,pp,ap,bp,cp) [Conditioned interchange of nested occurrences of if_then_else] (q ¥imp (p & (a = ap))) (not q) ¥imp (p ¥eq pp) ((not q) & p) ¥imp (b = bp) ((not q) & (not p)) ¥imp (c = cp) END if_then_else2 -- ENTER_THEORY if_then_else2 -- Theorem if_then_else2.1: [Conditioned interchange of nested occurrences of if_then_else] if p then if q then a else b end if else c end if = if q then ap else if pp then bp else cp end if end if. Proof: Suppose_not ==> AUTO Suppose ==> q Assump ==> (q ¥imp (p & (a = ap))) Discharge ==> (not q) Assump ==> (not q) ¥imp (p ¥eq pp) Suppose ==> p Assump ==> ((not q) & p) ¥imp (b = bp) Discharge ==> (not p) Assump ==> ((not q) & (not p)) ¥imp (c = cp) Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY if_then_else2 -- --THEORY if_then_else2(q,p,a,b,c,pp,ap,bp,cp) [Conditioned interchange of nested occurrences of if_then_else] -- (q ¥imp (p & (a = ap))) -- (not q) ¥imp (p ¥eq pp) -- ((not q) & p) ¥imp (b = bp) -- ((not q) & (not p)) ¥imp (c = cp) --==> -- if p then if q then a else b end if else c end if = if q then ap else if pp then bp else cp end if end if --END if_then_else2 -- -- Next we introduce a third 'THEORY', which simply encapsulates the fact that the value of -- a set former is defined uniquely by the expression and predicate it contains. -- THEORY setformer(e(x),ep1(x),s,p(x),pp1(x)) [Elementary properties of setformers] END setformer; -- ENTER_THEORY setformer -- -- The following theorem results easily by use of our mechanism of -- variable substitution into setformers known to be different. -- Def setformer.0: [Witness to difference of two setformers] x1_thryvar := arb({x in s | (e(x) /= e0(x) or (not(P(x) ¥eq PP(x))))}) -- Theorem setformer.1: [Equality of setformers] ((x1_thryvar notin s) or ((e(x1_thryvar) = e0(x1_thryvar)) & (P(x1_thryvar) ¥eq PP(x1_thryvar)))) ¥imp ({e(x): x in s | P(x)} = {e0(x): x in s | PP(x)}). Proof: Suppose_not ==> ((x1_thryvar notin s) or ((e(x1_thryvar) = e0(x1_thryvar)) & (P(x1_thryvar) ¥eq PP(x1_thryvar)))) & Stat1: ({e(x): x in s | P(x)} /= {e0(x): x in s | PP(x)}) -- -- For let $s$ be a counterexample to our assertion, and let $c$ be some element of one of the sets -- ${e(x): x in s | P(x)}$ and ${e0(x): x in s | PP(x)}$ but not the other. -- Supposing that $c$ belongs to the first of these sets but not the second, a -- contradiction results immediately from the axiom of choice, and similarly in -- the symmetric case. So the negative of our assertion leads to a contradiction in every case, -- proving the present theorem. -- c-->Stat1 ==> (c in s) & ((e(c) /= e0(c)) or ((P(c) and (not PP(c))) or ((not P(c)) and PP(c)))) Suppose ==> Stat2: c notin {x in s | (e(x) /= e0(x) or (not(P(x) ¥eq PP(x))))} c-->Stat2 ==> false; Discharge ==> {x in s | (e(x) /= e0(x) or (not(P(x) ¥eq PP(x))))} /= 0 {x in s | (e(x) /= e0(x) or (not(P(x) ¥eq PP(x))))}-->T0 ==> arb({x in s | (e(x) /= e0(x) or (not(P(x) ¥eq PP(x))))}) in {x in s | (e(x) /= e0(x) or (not(P(x) ¥eq PP(x))))} Use_def(x1_thryvar) ==> Stat3: x1_thryvar in {x in s | (e(x) /= e0(x) or (not(P(x) ¥eq PP(x))))} ()-->Stat3 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The following small utility theory describes a few elementary cases -- in which we can be sure that a set is non-null -- THEORY setformer0(e(x),s,P(x)) [More elementary properties of setformers] END setformer0; -- ENTER_THEORY setformer0 -- -- The following theorem results easily by use of our mechanism of -- variable substitution into a setformer known to be non-null. -- Theorem setformer01: [Empty setformer lemma] (s /= 0) ¥imp ({e(x): x in s} /= 0). Proof: Suppose_not ==> Stat1: (s /= 0) & Stat2: ({e(x): x in s} = 0) c-->Stat1 ==> AUTO c-->Stat2 ==> AUTO Discharge ==> QED -- -- The following theorem also results easily by use of our mechanism of -- variable substitution into a setformer known to be non-null. -- Theorem setformer02: [Empty setformer lemma 2] ({x in s | P(x)} /= 0) ¥imp ({e(x): x in s | P(x)} /= 0). Proof: Suppose_not ==> Stat1: AUTO (c)-->Stat1 ==> AUTO ELEM ==> Stat2: e(c) notin {e(x): x in s | P(x)} c-->Stat2 ==> AUTO Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The following utility theory is the two-variable analog of the 'setformer' -- theory given above. It encapsulates the fact that the value of -- a two-variable set former is defined uniquely by the expression and predicate it contains. -- THEORY setformer2(e2(x,y),ep2(x,y),f(x),fp(x),s,R(x,y),PQ(x,y)) END setformer2; -- ENTER_THEORY setformer2 -- Def setformer2.0a: [Witness to difference of two setformers, two-variable case] xy1_thryvar := arb({[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))}) Def setformer2.0b: [First component of difference witness] x2_thryvar := car(xy1_thryvar) Def setformer2.0c: [Second component of difference witness] y2_thryvar := cdr(xy1_thryvar) -- -- The following theorem results easily along the same line of proof used in proving Theorem setformer.1. -- Theorem setformer2_1: [Equality of mapformers] (((x2_thryvar notin s) or (y2_thryvar notin (f(x2_thryvar) + fp(x2_thryvar)))) or (((f(x2_thryvar) = fp(x2_thryvar)) & (e2(x2_thryvar,y2_thryvar) = ep2(x2_thryvar,y2_thryvar)) & (R(x2_thryvar,y2_thryvar) ¥eq PQ(x2_thryvar,y2_thryvar))))) ¥imp ({e2(x,y): x in s, y in f(x) | R(x,y)} = {ep2(x,y): x in s, y in fp(x) | PQ(x,y)}). Proof: -- -- For let $s$ be a counterexample to our assertion, and let $c$ be some element of one of the sets -- ${e2(x,y): x in s, y in f(x) | R(x,y)}$ and ${ep2(x,y): x in s, y in fp(x) | PQ(x,y)}$ but not the other. -- Supposing that $c$ belongs to the first of these sets but not the second, a -- contradiction results easily from the axiom of choice. -- Suppose_not ==> (((x2_thryvar notin s) or (y2_thryvar notin (f(x2_thryvar) + fp(x2_thryvar)))) or (((f(x2_thryvar) = fp(x2_thryvar)) & (e2(x2_thryvar,y2_thryvar) = ep2(x2_thryvar,y2_thryvar)) & (R(x2_thryvar,y2_thryvar) ¥eq PQ(x2_thryvar,y2_thryvar))))) & Stat1: ({e2(x,y): x in s, y in f(x) | R(x,y)} /= {ep2(x,y): x in s, y in fp(x) | PQ(x,y)}) c-->Stat1 ==> (c in {e2(x,y): x in s, y in f(x) | R(x,y)}) ¥eq (c notin {ep2(x,y): x in s, y in fp(x) | PQ(x,y)}) Suppose ==> Stat2: (c in {e2(x,y): x in s, y in f(x) | R(x,y)}) & (c notin {ep2(x,y): x in s, y in fp(x) | PQ(x,y)}) -- -- Indeed, there must exist $x$ and $y$ in $s$ and $f(x)$ respectively for which $c = e2(x,y)$ -- but for which one of the clauses of $(y in fp(x)) & PQ(x,y) & (c = ep2(x,y))$ is false. -- (x,y,x,y)-->Stat2 ==> (x in s) & (y in f(x)) & R(x,y) & (c = e2(x,y)) & (not((x in s) & (y in fp(x)) & PQ(x,y) & (c = ep2(x,y)))) Suppose ==> Stat3: [x,y] notin {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))} (x,y)-->Stat3 ==> false; Discharge ==> {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))} /= 0 -- -- This is easily seen to imply that the set -- -- ${[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))}$ -- -- is non-null, so that by the axiom of choice $xy1_thryvar$ is a member of it. -- But then the components $x2_thryvar$ and $y2_thryvar$ of $xy1_thryvar$ plainly -- violate the hypotheses of the present theorem, and so rule out our initial supposition. -- {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))}-->T0 ==> arb({[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))}) in {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))} Use_def(xy1_thryvar) ==> Stat4: xy1_thryvar in {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))} (x2,y2)-->Stat4 ==> (xy1_thryvar = [x2,y2]) & (x2 in s) & (y2 in (f(x2) + fp(x2))) & ((f(x2) /= fp(x2)) or e2(x2,y2) /= ep2(x2,y2) or (not(R(x2,y2) ¥eq PQ(x2,y2)))) ELEM ==> (x2 = car(xy1_thryvar)) & (y2 = cdr(xy1_thryvar)) Use_def(x2_thryvar) ==> x2_thryvar = x2 Use_def(y2_thryvar) ==> y2_thryvar = y2 EQUAL ==> false; Discharge ==> Stat5: (c in {ep2(x,y): x in s, y in fp(x) | PQ(x,y)}) & (c notin {e2(x,y): x in s, y in f(x) | R(x,y)}) -- -- The same argument can be given in the symmetric case, -- and so the negative of our assertion leads to a contradiction in every case, -- proving the present theorem. -- (xx,yy,xx,yy)-->Stat5 ==> (xx in s) & (yy in fp(xx)) & PQ(xx,yy) & (c = ep2(xx,yy)) & (not((xx in s) & (yy in f(xx)) & R(xx,yy) & (c = e2(xx,yy)))) Suppose ==> Stat6: [xx,yy] notin {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))} (xx,yy)-->Stat6 ==> false; Discharge ==> {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))} /= 0 {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))}-->T0 ==> arb({[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))}) in {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))} Use_def(xy1_thryvar) ==> Stat7: xy1_thryvar in {[x,y]: x in s, y in (f(x) + fp(x)) | ((f(x) /= fp(x)) or e2(x,y) /= ep2(x,y) or (not(R(x,y) ¥eq PQ(x,y))))} (x3,y3)-->Stat4 ==> (xy1_thryvar = [x3,y3]) & (x3 in s) & (y3 in (f(x3) + fp(x3))) & ((f(x3) /= fp(x3)) or e2(x3,y3) /= ep2(x3,y3) or (not(R(x3,y3) ¥eq PQ(x3,y3)))) ELEM ==> (x3 = car(xy1_thryvar)) & (y3 = cdr(xy1_thryvar)) Use_def(x2_thryvar) ==> x2_thryvar = x3 Use_def(y2_thryvar) ==> y2_thryvar = y3 EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The following utility theory encapsulates the fact that given any set and predicate $P(x)$, -- one can always obtain a (generally smaller) set consisting of precisely -- those entities which satisfy $P$. -- THEORY comprehension(s,P(x)) END comprehension; -- ENTER_THEORY comprehension -- -- We begin by defining the element considered in the proof which follows. -- Def 00g: [Set former] tt_thryvar := {x in s | P(x)} -- Theorem comprehension1: [Setformer existence] (X in tt_thryvar) ¥eq ((X in s) & P(X)). Proof: Suppose_not(x) ==> not(((x in S) & P(x)) ¥eq (x in tt_thryvar)) -- -- For the contrary assumption would lead to the following contradiction: -- Use_def(tt_thryvar) ==> not(((x in s) & P(x)) ¥eq (x in {u in s | P(u)})) Suppose ==> (x in s) & P(x) & Stat1: (x notin {u in s | P(u)}) x-->Stat1 ==> false; Discharge ==> (not ((x in S) & P(x))) & Stat2: (x in {u in s | P(u)}) ()-->Stat2 ==> false; Discharge ==> QED -- Theorem comprehension2: [Setformer inclusion lemma] {x in s | P(x)} ¥incin s. Proof: Suppose_not ==> Stat1: not({x in s | P(x)} ¥incin s) x-->Stat1 ==> Stat2: (x in {x in s | P(x)}) & (x notin s) ()-->Stat2 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The following summarizes what has just been proved. -- --DISPLAY comprehension -- --THEORY comprehension(s,P(x)) --==>(tt_thryvar) -- (X in tt_thryvar) ¥eq ((X in s) & P(X)) -- {x in s | P(x)} ¥incin s --END comprehension; -- -- Our more serious work now begins with proofs of the basic properties -- of ordinals. Our first step is to give von Neumann's -- definition of ordinals: an ordinal is a set which is transitively closed -- and totally ordered under membership. -- Def 10: [Is-an-ordinal predicate] Ord(S) := (FORALL x in S | x ¥incin S) & (FORALL x in S, y in S | (x in y or y in x or x = y)) -- -- Next we prove a first basic property of ordinals: any member of an ordinal is an ordinal. -- Theorem 12: [Members of ordinals are ordinals] (Ord(S) & (T in S)) ¥imp Ord(T). Proof: Suppose_not(s,t) ==> AUTO -- -- We proceed by contradiction. If our theorem is false, there is an ordinal $s$ -- having a member $t$ which is not an ordinal. -- Use_def(Ord) ==> Stat1: not((FORALL x in t | x ¥incin t) & (FORALL x in t, y in t | (x in y or y in x or x = y))) -- -- Hence, by definition of ordinal, $t$ must either have a member a not included in $t$, -- or a pair $b, c$ of distinct members not related by membership. -- (a,b,c)-->Stat1 ==> AUTO -- -- But since $s$ is an ordinal, it must include its member $t$, so that the second case is impossible. -- Use_def(Ord) ==> Stat2: (FORALL x in s | x ¥incin s) & Stat3: (FORALL x in s, y in s | (x in y or y in x or x = y)) t-->Stat2 ==> AUTO Suppose ==> (b in t) & (c in t) & (not(b in c or c in b or b = c)) (b,c)-->Stat3 ==> AUTO Discharge ==> Stat4: (not(a ¥incin t)) & (a in t) -- -- Thus we need only consider the first case, in which $a$ is a member but not a subset of $t$. -- In this case there plainly exists a $d$ in $a$ but not in $t$. Plainly $a$ is a member of $s$, -- and thus a subset of $s$; so $d$ is also a member of $s$. -- (d)-->Stat4 ==> (d in a) & (not(d in t)) a-->Stat2 ==> a ¥incin s ELEM ==> d in s -- -- By definition of ordinal, it follows that $d$ either equals $t$, is a member of $t$, or that -- $t$ is a member of $d$. But all three of these cases are impossible, since any would imply the -- existence of a membership cycle. This contradiction proves our theorem. -- (d,t)-->Stat3 ==> (d in t or t in d or t = d) (Stat4)Discharge ==> QED -- -- The following property of ordinals follows directly from their definition. -- Theorem 13: [Ordinal membership implies inclusion] (Ord(S) & (T in S)) ¥imp (T ¥incin S). Proof: Suppose_not(s,t) ==> Ord(s) & (t in s) & (not (t ¥incin s)) Use_def(Ord) ==> Stat1: (FORALL x in s | x ¥incin s) t-->Stat1 ==> false; Discharge ==> QED -- -- We continue by considering and proving various useful forms of the principle of transfinite -- induction, formulating these as a succession of utility theories. We begin with an induction -- principle for ordinals. This tells us that if an ordinal has a certain property, it must -- include some subset which is an ordinal with this same property, but which contains no member -- that has the property in question. In fact, this subset can be defined as $arb(aux_set)$, where -- $aux_set := {x ¥incin o | Ord(x) & P(x)}$. -- THEORY ordinal_induction(o,P(x)) Ord(o) & P(o) END ordinal_induction; -- ENTER_THEORY ordinal_induction -- -- We begin by defining the element considered in the proof which follows. -- Def ordinal_induction.0: [Witness for ordinal induction arguments] t_thryvar := arb({x ¥incin o | Ord(x) & P(x)}) -- Theorem ord_ind1: [Transfinite induction principle] Ord(t_thryvar) & P(t_thryvar) & (t_thryvar ¥incin o) & (FORALL x in t_thryvar | not P(x)). Proof: Suppose_not ==> Stat1: not((FORALL x in t_thryvar | not P(x)) & Ord(t_thryvar) & P(t_thryvar) & (t_thryvar ¥incin o)) c-->Stat1 ==> AUTO -- -- We proceed by contradiction, and begin by noting that the set $aux_set$ -- displayed above is not empty. Indeed, $o$ is obviously a member of it. -- Suppose ==> Stat2: {x ¥incin o | Ord(x) & P(x)} = 0 ELEM ==> Stat3: o notin {x ¥incin o | Ord(x) & P(x)} o-->Stat3 ==> AUTO Assump ==> Ord(o) & P(o) Discharge ==> {x ¥incin o | Ord(x) & P(x)} /= 0 -- -- The axiom of choice now tells us that $t_thryvar$ as defined above must be a minimal element of $aux_set$, -- and so must clearly satisfy $Ord(t_thryvar) & P(t_thryvar) & (t_thryvar ¥incin o)$. -- This rules out the first of the two cases listed above, leaving only the second. -- Use_def(t_thryvar) ==> t_thryvar = arb({x ¥incin o | Ord(x) & P(x)}) {x ¥incin o | Ord(x) & P(x)}-->T0 ==> Stat4: (t_thryvar in {x ¥incin o | Ord(x) & P(x)}) & (t_thryvar * {x ¥incin o | Ord(x) & P(x)} = 0) t_thryvar-->Stat4 ==> AUTO ELEM ==> (c in t_thryvar) & P(c) -- -- Since $t_thryvar$ is an ordinal, it must by definition include its member $c$, -- which must therefore also be a subset of $o$ and an ordinal. -- (t_thryvar,c)-->T13 ==> c ¥incin t_thryvar ELEM ==> c ¥incin o (t_thryvar,c)-->T12 ==> Ord(c) -- -- Thus $c$ has the properties required to make it an element of $aux_set$. -- But this contradicts the minimality of $t_thryvar$, and so proves our theorem. -- Suppose ==> Stat5: c notin {x ¥incin o | Ord(x) & P(x)} (c)-->Stat5 ==> false; Discharge ==> c in {x ¥incin o | Ord(x) & P(x)} Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The following small THEORY summarizes what has just been proved. -- --DISPLAY ordinal_induction -- --THEORY ordinal_induction(o,P(x)) -- Ord(o) & P(o) --==>(t_thryvar) -- Ord(t_thryvar) & P(t_thryvar) & (t_thryvar ¥incin o) & (FORALL x in t_thryvar | not P(x)) --END ordinal_induction; -- -- ************************************************************************************************ -- Section 2: Other versions of the principle of transfinite induction -- ************************************************************************************************ -- -- Next we consider and prove several other forms of the principle of transfinite -- induction which are sometimes easier to use. -- We aim to show that if a set has a specified property, it contains -- a subset having this property, none of whose members have the property. -- The following definition, of the set of all elements which are linked to -- a set $s$ by a chain of memberships, and so are its 'ultimate members', -- starts to prepare for this. -- Def 35a: [Transitive membership closure of $S$] Ult_membs(S) := S + {y: u in {Ult_membs(x): x in S}, y in u} -- -- Our goal is to prove that $Ult_membs(S)$ includes $S$, and that $Ult_membs(S)$ is -- transitively closed under membership. The proof of this -- second fact, which is given somewhat below, will involve use of the axiom of infinity. -- The first of these facts, captured in the following lemma, is an immediate -- consequence of the definition of $Ult_membs$. -- Theorem 14: [Ultimate members lemma] S ¥incin Ult_membs(S). Proof: Suppose_not(s) ==> AUTO Use_def(Ult_membs) ==> Ult_membs(s) = s + {y: u in {Ult_membs(x): x in s}, y in u} Discharge ==> QED -- -- Our next small lemma simply reformulates the definition of $Ult_membs$ as an identity. -- Theorem 15: [Ultimate members lemma 2] Ult_membs(S) = S + {v: x in S, v in Ult_membs(x)}. Proof: Suppose_not(s) ==> AUTO Use_def(Ult_membs) ==> Ult_membs(s) = s + {v: u in {Ult_membs(x): x in s}, v in u} SIMPLF ==> false; Discharge ==> QED -- -- It follows immediately from the definition of $Ult_membs$ that $Ult_membs$ -- includes all the members of its members. -- Theorem 16: [Key property of ultimate members set] ((X in S) & (Y in X)) ¥imp (Y in Ult_membs(S)). Proof: Suppose_not(x,s,y) ==> AUTO s-->T15 ==> Stat1: y notin {v: x in s, v in Ult_membs(x)} (x,y)-->Stat1 ==> y notin Ult_membs(x) x-->T15 ==> y notin x Discharge ==> QED -- -- For the special case of an ordinal $s$ we can show, using the -- principle of ordinal induction established above, that $Ult_membs(s) = s$. -- Theorem 17: [An ordinal is its own set of ultimate members] (Ord(S)) ¥imp (Ult_membs(S) = S). Proof: -- -- We proceed by contradiction. If our theorem is false, there is an ordinal $s$ -- which is not identical to $Ult_membs(s)$, and so, by Theorem 14, is not included in $s$. -- Suppose_not(s) ==> AUTO s-->T14 ==> Ord(s) & (not(Ult_membs(s) ¥incin s)) -- -- Thus the principle of ordinal induction tells us that $s$ contains -- a minimal ordinal $t$ with this property. -- APPLY(t_thryvar:t) ordinal_induction(o->s,P(x)->not(Ult_membs(x) ¥incin x)) ==> Stat1: Ord(t) & (not(Ult_membs(t) ¥incin t)) & Stat2: (FORALL x in t | not(not(Ult_membs(x) ¥incin x))) a0-->Stat1 ==> Ord(t) & Stat3: (not(Ult_membs(t) ¥incin t)) -- -- It follows that $Ult_membs(t)$ has an element $c$ which does not belong to $t$. -- By Theorem 15, $c$ must belong to ${v: x in t, v in Ult_membs(x)}$, and so -- there must exist an $x in t$ such that $c in Ult_membs(x)$. -- c-->Stat3 ==> AUTO t-->T15 ==> Stat4: c in {v: x in t, v in Ult_membs(x)} (x,v)-->Stat4 ==> AUTO -- -- By Stat2 above, $x$ must satisfy $Ult_membs(x) ¥incin x$, so $c$ must belong to $x$. -- x-->Stat2 ==> (Ult_membs(x) ¥incin x) & (c in x) -- -- Since $t$ is an ordinal, its member $x$ must be included in it; so $c$ must be a member of $t$, -- contrary to what has been proved above. This contradiction proves our theorem. -- (t,x)-->T13 ==> x ¥incin t Discharge ==> QED -- -- Our next small lemma expresses $Ult_membs({s})$ in terms of $Ult_membs(s)$. -- Theorem 18: [Ultimate members of a singleton] Ult_membs({S}) = {S} + Ult_membs(S). Proof: Suppose_not(s) ==> Ult_membs({s}) /= {s} + Ult_membs(s) Use_def(Ult_membs) ==> Ult_membs({s}) = {s} + {y: u in {Ult_membs(x): x in {s}}, y in u} ELEM ==> {s} + {y: u in {Ult_membs(x): x in {s}}, y in u} /= {s} + Ult_membs(s) -- -- If our theorem were false, we could use the definition of $Ult_membs$ to obtain the -- set inequality displayed above, which simplifies to an impossibility: -- SIMPLF ==> {y: u in {Ult_membs(x): x in {s}}, y in u} = {y: x in {s}, y in Ult_membs(x)} SIMPLF ==> {y: x in {s}, y in Ult_membs(x)} = {y: y in Ult_membs(s)} SIMPLF ==> {y: y in Ult_membs(s)} = Ult_membs(s) Discharge ==> QED -- -- We also note the following elementary consequence of Theorem 17 and Theorem 18, -- which tells us that the set of ultimate members of a singleton -- consisting of just one ordinal is its successor ordinal. -- Theorem 19: [Ultimate members of an ordinal singleton] Ord(S) ¥imp (Ult_membs({S}) = S + {S}). Proof: Suppose_not(s) ==> AUTO s-->T18 ==> AUTO s-->T17 ==> false; Discharge ==> QED -- -- The 'union set' of a set $s$ is the union of all its members, or, equivalently, -- the set of all members of members of $s$. For sets of ordinals, this is the least upper bound. -- Def 25: [Union Set] Un(S) := {x: y in S, x in y} -- -- Now we start to prepare more closely for the proof of a preliminary version of the principle -- of transfinite induction by making a few auxiliary definitions. -- First we introduce 'the set of all $x$ which are either members of $s$ or members of members of $s$:' -- Def 7g: [Set of members of members] membs2(S) := S + Un(S) -- -- Next, using the axiom of infinity and the set $s_inf$ which it provides, -- we extend this definition recursively. -- Def 7h: [Recursively defined iterated members] membs_x(S,X) := if X = arb(s_inf) then S else membs2(Un({membs_x(S,y): y in X})) end if -- -- This lets us define a set including $s$ which we will show to be transitively closed under membership. -- Def 7i: [Ultimate members of a set, first definition] Ult_memb1(S) := Un({membs_x(S,x): x in s_inf}) -- -- First we need the following simple lemma: -- Theorem 20: [Ultimate members of the basic infinite set] (X in s_inf) ¥imp (membs_x(S,{X}) = membs_x(S,X) + Un(membs_x(S,X))). Proof: Suppose_not(x,s) ==> (x in s_inf) & (membs_x(s,{x}) /= membs_x(s,x) + Un(membs_x(s,x))) -- -- Since $x in s_inf$, ${x} /= arb(s_inf)$, -- and so $membs_x(s,{x}) = membs2(Un({membs_x(s,y): y in {x}}))$ by definition. -- ELEM ==> {x} /= arb(s_inf) Use_def(membs_x) ==> membs_x(s,{x}) = if {x} = arb(s_inf) then s else membs2(Un({membs_x(s,y): y in {x}})) end if ELEM ==> membs2(Un({membs_x(s,y): y in {x}})) /= membs_x(s,x) + Un(membs_x(s,x)) -- -- This inequality simplifies to $membs2(membs_x(s,x)) /= membs_x(s,x) + Un(membs_x(s,x))$, -- which contradicts the definition of $membs2(membs_x(s,x))$, and so proves our lemma. -- SIMPLF ==> membs2(Un({membs_x(s,x)})) /= membs_x(s,x) + Un(membs_x(s,x)) Use_def(Un) ==> membs2({u: y in {membs_x(s,x)}, u in y}) /= membs_x(s,x) + Un(membs_x(s,x)) SIMPLF ==> {u: y in {membs_x(s,x)}, u in y} = {u: u in membs_x(s,x)} SIMPLF ==> {u: u in membs_x(s,x)} = membs_x(s,x) EQUAL ==> membs2(membs_x(s,x)) /= membs_x(s,x) + Un(membs_x(s,x)) Use_def(membs2) ==> false; Discharge ==> QED -- -- Now we can prove that, for any set $s$, $Ult_memb1(s)$ includes $s$ and is membership-transitive. -- Theorem 21: [Ultimate members lemma 3] (S ¥incin Ult_memb1(S)) & (((X in Ult_memb1(S)) & (Y in X)) ¥imp (Y in Ult_memb1(S))). Proof: -- -- We proceed by contradiction. Suppose that our theorem is false, and let $s$, $x$, and $y$ be a counterexample. -- Suppose_not(s,x,y) ==> ((not(s ¥incin Ult_memb1(s))) or ((x in Ult_memb1(s)) & (y in x) & (y notin Ult_memb1(s)))) -- -- The first of these cases is impossible, since an $xx$ in $s$ but not in $Ult_memb1(s)$ could not be in any -- of the sets $membs_x(s,v)$ where $v$ belongs to $s_inf$, contradicting the fact that $arb(s_inf)$ and ${arb(s_inf)}$ -- both belong to $s_inf$, while $membs_x(s,{arb(s_inf)}) incs membs_x(s,arb(s_inf))$ = $s$. -- Hence we need only consider the second case. -- Suppose ==> Stat1: not(s ¥incin Ult_memb1(s)) xx-->Stat1 ==> (xx in s) & (xx notin Ult_memb1(s)) Use_def(Ult_memb1) ==> xx notin Un({membs_x(s,v): v in s_inf}) Use_def(Un) ==> xx notin {y: u in {membs_x(s,v): v in s_inf}, y in u} SIMPLF ==> Stat2: xx notin {y: v in s_inf, y in membs_x(s,v)} T00 ==> s_inf /= 0 and Stat3: (FORALL v in s_inf | {v} in s_inf) s_inf-->T0 ==> arb(s_inf) in s_inf (arb(s_inf))-->Stat3 ==> {arb(s_inf)} in s_inf ({arb(s_inf)},xx)-->Stat2 ==> not(xx in membs_x(s,{arb(s_inf)})) (arb(s_inf),s)-->T20 ==> xx notin membs_x(s,arb(s_inf)) Use_def(membs_x) ==> membs_x(s,arb(s_inf)) = s Discharge ==> Stat4: (x in Ult_memb1(s)) & (y in x) & (y notin Ult_memb1(s)) -- -- But in this case there must exist some $d$ in $s_inf$ such that $x$ in $membs_x(s,d)$, -- and then $membs_x(s,{d}) = membs_x(s,d) + {w: v in membs_x(s,d), w in v}$ must have $y$ as a member. -- Since ${d}$ is a member of $s_inf$, this contradicts the fact that $y notin Ult_memb1(s)$, -- and so proves our theorem. -- Use_def(Ult_memb1) ==> x in Un({membs_x(s,v): v in s_inf}) Use_def(Un) ==> x in {w: u in {membs_x(s,v): v in s_inf}, w in u} SIMPLF ==> Stat5: x in {w: v in s_inf, w in membs_x(s,v)} (d,w)-->Stat5 ==> (d in s_inf) & (x in membs_x(s,d)) (d)-->Stat3 ==> {d} in s_inf Use_def(Ult_memb1) ==> y notin Un({membs_x(s,v): v in s_inf}) Use_def(Un) ==> y notin {w: u in {membs_x(s,v): v in s_inf}, w in u} SIMPLF ==> Stat6: y notin {w: v in s_inf, w in membs_x(s,v)} ({d},y)-->Stat6 ==> y notin membs_x(s,{d}) (d,s)-->T20 ==> membs_x(s,{d}) = membs_x(s,d) + Un(membs_x(s,d)) ELEM ==> y notin Un(membs_x(s,d)) Use_def(Un) ==> Stat7: y notin {u: v in membs_x(s,d), u in v} (x,y)-->Stat7 ==> not((x in membs_x(s,d)) & (y in x)) Discharge ==> QED -- -- Next we state a preliminary form of the principle of transfinite induction, -- which simply asserts that if there is any $n$ satisfying a predicate $P$, there is a minimal $m$ such $P(m)$. -- Since an 'arbitrary predicate' is involved, we formulate this as a theory providing just two theorems. -- THEORY transfinite_induction(n,P(x)) P(n) END transfinite_induction; -- ENTER_THEORY transfinite_induction -- Def transfinite_induction.0: [Witness for transfinite induction argument] mt1_thryvar := arb({m: m in Ult_memb1({n}) | P(m)}) -- Theorem transfinite_induction.1: [Transfinite membership induction] P(mt1_thryvar) & ((K in mt1_thryvar) ¥imp (not P(K))). Proof: Suppose_not(k) ==> (not P(mt1_thryvar)) or ((k in mt1_thryvar) & P(k)) -- -- Proceed by contradiction, first noting that ${m: m in Ult_memb1({n}) | P(m)}$ cannot be empty since -- $n$ belongs to it. -- Suppose ==> Stat1: {m: m in Ult_memb1({n}) | P(m)} = 0 ({n},junk,bunk)-->T21 ==> n in Ult_memb1({n}) Assump ==> P(n) n-->Stat1 ==> false; Discharge ==> {m: m in Ult_memb1({n}) | P(m)} /= 0 -- -- The axiom of choice now tells us that there is a minimal element $mt1_thryvar$ of ${m: m in Ult_memb1({n}) | P(m)}$ -- This necessarily satisfies $mt1_thryvar in Ult_memb1({n}) & P(m)$. -- ({m: m in Ult_memb1({n}) | P(m)})-->T0 ==> (arb({m: m in Ult_memb1({n}) | P(m)}) in {m: m in Ult_memb1({n}) | P(m)}) & ((arb({m: m in Ult_memb1({n}) | P(m)}) * {m: m in Ult_memb1({n}) | P(m)}) = 0) Use_def(mt1_thryvar) ==> Stat2: (mt1_thryvar in {u: u in Ult_memb1({n}) | P(u)}) & (mt1_thryvar * {u: u in Ult_memb1({n}) | P(u)} = 0) mt1_thryvar-->Stat2 ==> (mt1_thryvar in Ult_memb1({n})) & P(mt1_thryvar) -- -- The negative of our theorem now tells us that there is a $k in mt1_thryvar$ such that $P(k)$; but -- such a $k$ would clearly belong to ${u: Ult_memb1({n}) | P(u)}$, and so contradict the minimality of $mt1_thryvar$. -- This contradiction proves our theorem. ({n},mt1_thryvar,k)-->T21 ==> k in Ult_memb1({n}) Suppose ==> Stat3: k notin {u: u in Ult_memb1({n}) | P(u)} k-->Stat3 ==> false; Discharge ==> k in {u: u in Ult_memb1({n}) | P(u)} Discharge ==> QED -- ENTER_THEORY Set_theory -- -- Now we have a preliminary form of the principle of transfinite induction, -- which is given by the following theory: -- --DISPLAY transfinite_induction -- --THEORY transfinite_induction(n,P(x)) -- P(n) --==>(mt1_thryvar) -- (FORALL k | P(mt1_thryvar) & ((k in mt1_thryvar) ¥imp (not P(k)))) --END transfinite_induction; -- -- We go on to sharpen the preceding results by proving that the minimal element -- whose existence is asserted in the preceding theory can actually be taken to be -- an element of $Ult_membs({n})$. For this, a few preparatory results are needed. -- The first of these applies $transfinite_induction$ to show that $Ult_membs(S)$ itself -- is transitively closed under membership. -- Theorem 22: [Monotonicity of ultimate members set] (Y in Ult_membs(S)) ¥imp (Ult_membs(Y) ¥incin Ult_membs(S)). Proof: Suppose_not(yy,s) ==> (yy in Ult_membs(s)) & (not(Ult_membs(yy) ¥incin Ult_membs(s))) -- -- We proceed by contradiction. If our theorem is false, there exist an $s$ and a $yy in Ult_membs(s)$ -- which contradict it, which therefore have the property stated above. But, by -- $transfinite_induction$, this implies the existence of a minimal $t$ with the property -- that there exists a $y in Ult_membs(t)$ such that $(not(Ult_membs(y) ¥incin Ult_membs(t)))$. -- Consider a $y$ related in this way to $t$. -- Suppose ==> Stat1: not(EXISTS y | (y in Ult_membs(s)) & (not(Ult_membs(y) ¥incin Ult_membs(s)))) yy-->Stat1 ==> false; Discharge ==> (EXISTS y | (y in Ult_membs(s)) & (not(Ult_membs(y) ¥incin Ult_membs(s)))) APPLY(mt1_thryvar:t) transfinite_induction(n->s,P(x)->(EXISTS y | (y in Ult_membs(x)) & (not(Ult_membs(y) ¥incin Ult_membs(x))))) ==> Stat2: (FORALL x | (EXISTS y | (y in Ult_membs(t)) & (not(Ult_membs(y) ¥incin Ult_membs(t)))) & ((x in t) ¥imp (not(EXISTS y | (y in Ult_membs(x)) & (not(Ult_membs(y) ¥incin Ult_membs(x))))))) a0-->Stat2 ==> Stat3: (EXISTS y | (y in Ult_membs(t)) & (not(Ult_membs(y) ¥incin Ult_membs(t)))) y-->Stat3 ==> (y in Ult_membs(t)) & Stat4: (not(Ult_membs(y) ¥incin Ult_membs(t))) -- -- Plainly, there must exist a $c in Ult_membs(y)$ which is not in $Ult_membs(t)$. -- Since $Ult_membs(t) incs {v: u in t, v in Ult_membs(u)}$ by Theorem 15, -- it follows that c is not in this latter set either. -- t-->T15 ==> Ult_membs(t) = t + {v: u in t, v in Ult_membs(u)} c-->Stat4 ==> (c in Ult_membs(y)) & (c notin Ult_membs(t)) & Stat5: (c notin {v: u in t, v in Ult_membs(u)}) -- -- $y$ cannot be in $t$, since this would contradict Stat6 -- hence $y$ must be in ${v: u in t, v in Ult_membs(u)}$, -- and so there must exist a $u in t$ such that $y in Ult_membs(u)$. -- Suppose ==> y in t (y,c)-->Stat5 ==> c notin Ult_membs(y) Discharge ==> Stat7: y in {v: u in t, v in Ult_membs(u)} (u,v)-->Stat7 ==> (u in t) & (y in Ult_membs(u)) -- -- But now, by the minimality of $t$, $Ult_membs(y)$ must be included in $Ult_membs(u)$, -- and therefore $Ult_membs(u)$ cannot be included in $Ult_membs(t)$, -- from which it follows that there must exist a $d in Ult_membs(u)$ -- which is not in ${v: w in t, v in Ult_membs(w)}$; hence, since $u in t$, -- $d$ cannot be in $Ult_membs(u)$, contradicting its definition. -- This contradiction proves our theorem. -- u-->Stat2 ==> Stat8: (not(EXISTS y | (y in Ult_membs(u)) & (not(Ult_membs(y) ¥incin Ult_membs(u))))) y-->Stat8 ==> Ult_membs(y) ¥incin Ult_membs(u) ELEM ==> Stat9: not(Ult_membs(u) ¥incin Ult_membs(t)) d-->Stat9 ==> (d in Ult_membs(u)) & Stat10: (d notin {v: w in t, v in Ult_membs(w)}) (u,d)-->Stat10 ==> not(u in t & d in Ult_membs(u)) Discharge ==> QED -- -- Since we know by Theorem 15 that $s ¥incin Ult_membs(s)$, it follows -- immediately from the preceding theorem that $Ult_membs(s)$ includes every one of its members. -- Theorem 23: [Members of ultimate members are also subsets] (Y in Ult_membs(S)) ¥imp (Y ¥incin Ult_membs(S)). Proof: Suppose_not(y,s) ==> (y in Ult_membs(s)) & (not (y ¥incin Ult_membs(s))) (y,s)-->T22 ==> Ult_membs(y) ¥incin Ult_membs(s) y-->T15 ==> false; Discharge ==> QED -- -- The preceding results easily yield the fact, captured in the following theory, -- that if there exists an $n$ with a given property $P$ then either $n$ (if it is minimal) or -- some other minimal element of the set of ultimate members of $n$ has the property $P$. -- THEORY transfinite_member_induction(n,P(x)) P(n) END transfinite_member_induction; -- ENTER_THEORY transfinite_member_induction -- -- To derive the result stated just below, we first define -- the minimal element that we want, whose properties -- are then established in the theorem following the definition. -- Def 00h: [Restricted witness for transfinite induction argument] mt2_thryvar := arb({k in Ult_membs({n}) | P(k)}) -- Theorem transfinite_member_induction1: [Ultimate members and transfinite induction] P(mt2_thryvar) & (mt2_thryvar in Ult_membs({n})) & ((K in mt2_thryvar) ¥imp (not P(K))). Proof: Suppose_not(k) ==> Stat1: (not P(mt2_thryvar)) or (mt2_thryvar notin Ult_membs({n})) or ((k in mt2_thryvar) & P(k)) -- -- We proceed by contradiction. If our theorem is false, there exists a $k in m$ such that $P(k)$. -- But, since $n$ is clearly a member of ${j: j in Ult_membs({n}) | P(j)}$, this set cannot be null, so -- by the axiom of choice $mt2_thryvar$ must belong to it, but not intersect it. -- Suppose ==> Stat2: {j in Ult_membs({n}) | P(j)} = 0 n-->T18(*) ==> Stat3: n in Ult_membs({n}) Assump ==> P(n) n-->Stat2(Stat3*) ==> false; Discharge ==> Stat4: {j in Ult_membs({n}) | P(j)} /= 0 Use_def(mt2_thryvar)(Stat4*) ==> mt2_thryvar = arb({k in Ult_membs({n}) | P(k)}) {j in Ult_membs({n}) | P(j)}-->T0(Stat4*) ==> Stat5: (mt2_thryvar in {j in Ult_membs({n}) | P(j)}) & (mt2_thryvar * {j in Ult_membs({n}) | P(j)} = 0) mt2_thryvar-->Stat5(Stat5*) ==> Stat6: (mt2_thryvar in Ult_membs({n})) & P(mt2_thryvar) -- -- Thus $P(mt2_thryvar)$ and $(mt2_thryvar in Ult_membs({n}))$ are both true, so that $k in mt2_thryvar$ and $P(k)$ must both be true. -- Since $Ult_membs(mt2_thryvar) incs mt2_thryvar$ by definition, $k$ must belong to $Ult_membs(mt2_thryvar)$, and hence to -- $Ult_membs({n})$ by Theorem 23, which tells us that $Ult_membs(mt2_thryvar)$ is a subset of $Ult_membs({n})$ -- (Stat1,Stat6*)ELEM ==> Stat7: (k in mt2_thryvar) & P(k) Suppose ==> k notin Ult_membs(mt2_thryvar) Use_def(Ult_membs) ==> Ult_membs(mt2_thryvar) = (mt2_thryvar + {w: u in {Ult_membs(v): v in mt2_thryvar}, w in u}) (Stat7*)Discharge ==> k in Ult_membs(mt2_thryvar) (mt2_thryvar,{n})-->T23(Stat6,Stat7*) ==> Stat8: k in Ult_membs({n}) Suppose ==> Stat9: k notin {j in Ult_membs({n}) | P(j)} -- -- Hence $k$ belongs to ${j in Ult_membs({n}) | P(j)}$, a contradiction which proves our theorem. -- ()-->Stat9(Stat8,Stat7*) ==> false; Discharge ==> Stat10: k in {j in Ult_membs({n}) | P(j)} (Stat7,Stat10,Stat5*)Discharge ==> QED -- ENTER_THEORY Set_theory -- -- Formulated as a theory, the preceding result appears as follows. -- --DISPLAY transfinite_member_induction -- --THEORY transfinite_member_induction(n,P(x)) -- P(n) --==>(mt2_thryvar) -- (FORALL k | P(mt2_thryvar) & (mt2_thryvar in Ult_membs({n})) & ((k in mt2_thryvar) ¥imp (not P(k)))) --END transfinite_member_induction; -- THEORY_otter orderedGroups(In_domain(x),pluz(x,y),e,rvz(x),nneg(x),leq(x,y)) In_domain(e) -- closure axiom (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp In_domain(pluz(x,y))) -- closure axiom (FORALL x | In_domain(x) ¥imp In_domain(rvz(x))) -- closure axiom (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp (pluz(pluz(x,y),z) = pluz(x,pluz(y,z)))) -- associativity (FORALL x | In_domain(x) ¥imp (pluz(x,e) = x)) -- right unit (FORALL x | In_domain(x) ¥imp (pluz(x,rvz(x)) = e)) -- right inverse (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (pluz(x,y) = pluz(y,x))) -- commutativity (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp ((nneg(x) & nneg(y)) ¥imp nneg(pluz(x,y)))) (FORALL x | In_domain(x) ¥imp (nneg(x) or nneg(rvz(x)))) (FORALL x | In_domain(x) ¥imp ((nneg(x) & nneg(rvz(x))) ¥imp (x = e))) (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (leq(x,y) = nneg(pluz(y,rvz(x))))) ExtDef abs_thryvar(x) := if nneg(x) then x else rvz(x) end if ==> (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp ((pluz(x,y) = pluz(x,z)) ¥imp (y = z))) [A1] -- cancellation law (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (rvz(pluz(x,rvz(y))) = pluz(y,rvz(x)))) [B] (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (leq(x,y) or leq(y,x))) [C] -- totality (FORALL x | In_domain(x) ¥imp (leq(x,x))) [D] -- reflexivity (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp ((leq(x,y) & leq(y,z)) ¥imp leq(x,z))) [E] -- transitivity (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp ((leq(x,y) & (x /= y) & leq(y,z)) ¥imp (x /= z))) [E1] -- transitivity (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp ((leq(x,y) & leq(y,z) & (y /= z)) ¥imp (x /= z))) [E2] -- transitivity (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp (leq(x,y) ¥imp leq(pluz(x,z),pluz(y,z)))) [F] -- isotony (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp ((pluz(x,z) = pluz(y,z)) ¥imp (x = y))) [A2] -- cancellation law (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp ((leq(x,y) & (x /= y)) ¥imp (pluz(x,z) /= pluz(y,z)))) [F1] -- strictness of isotony (FORALL x | In_domain(x) ¥imp (abs_thryvar(pluz(x,rvz(x))) = e)) [1] (FORALL x | In_domain(x) ¥imp (leq(x,abs_thryvar(x)))) [2] (FORALL x | In_domain(x) ¥imp (abs_thryvar(abs_thryvar(x)) = abs_thryvar(x))) [3] (FORALL x | In_domain(x) ¥imp ((abs_thryvar(x) = e) ¥eq (x = e))) [4] (FORALL x | In_domain(x) ¥imp (abs_thryvar(rvz(x)) = abs_thryvar(x))) [5] (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (leq(pluz(x,y),pluz(abs_thryvar(x),abs_thryvar(y))))) [6] (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (leq(abs_thryvar(pluz(x,y)),pluz(abs_thryvar(x),abs_thryvar(y))))) [7] (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp ((not(nneg(x))) ¥imp (leq(x,abs_thryvar(y)) & (x /= abs_thryvar(y))))) [8] (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp (leq(abs_thryvar(pluz(x,rvz(y))),z) ¥imp leq(y,pluz(x,z)))) [9] -- $(FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp (pluz(x,z) = pluz(pluz(x,rvz(y)),pluz(y,z))))$ [10a] (FORALL x,y,z | (In_domain(x) & In_domain(y) & In_domain(z)) ¥imp (leq(abs_thryvar(pluz(x,rvz(z))),pluz(abs_thryvar(pluz(x,rvz(y))),abs_thryvar(pluz(y,rvz(z))))))) [10] -- (proved sans axioms) (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (nneg(y) ¥imp leq(pluz(x,rvz(y)),pluz(x,y)))) [11] -- $(FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp ((nneg(x) & (not(nneg(y)))) ¥imp leq(abs_thryvar(pluz(abs_thryvar(x),rvz(abs_thryvar(y)))),abs_thryvar(pluz(x,rvz(y))))))$ [12a] -- $(FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp ((nneg(x) & nneg(y)) ¥imp (abs_thryvar(pluz(abs_thryvar(x),rvz(abs_thryvar(y)))) = abs_thryvar(pluz(x,rvz(y))))))$ [12b] -- $(FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (((not(nneg(x))) & (not(nneg(y)))) ¥imp (abs_thryvar(pluz(abs_thryvar(rvz(x)),rvz(abs_thryvar(rvz(y))))) = abs_thryvar(pluz(rvz(x),y)))))$ [12c] (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (leq(abs_thryvar(pluz(abs_thryvar(x),rvz(abs_thryvar(y)))),abs_thryvar(pluz(x,rvz(y)))))) [12] (FORALL x,y | (In_domain(x) & In_domain(y)) ¥imp (leq(pluz(abs_thryvar(x),rvz(abs_thryvar(pluz(abs_thryvar(y),rvz(abs_thryvar(x)))))),abs_thryvar(y)))) [13] END orderedGroups; -- -- -- ************************************************************************************************ -- Section 3: Additional basic operations of set theory; properties of setformers -- ************************************************************************************************ -- -- Next we define various familiar notions of set theory: (possibly multivalued) maps, -- their ranges and domains, and the subclasses of single valued and 1-1 maps. -- After giving these definitions we build up a few small utility theories which -- ease subsequent work with these predicates. -- Def 4: [Is-a-map predicate] Is_map(F) := F = {[car(x),cdr(x)]: x in F} Def 5: [Map domain] domain(F) := {car(x): x in F} Def 6: [Map range] range(F) := {cdr(x): x in F} Def 7: [Single-valued map predicate] Svm(F) := Is_map(F) & (FORALL x in F, y in F | (car(x) = car(y)) ¥imp (x = y)) Def 8: [One-one map predicate] one_1_map(F) := Svm(F) & (FORALL x in F, y in F | (cdr(x) = cdr(y)) ¥imp (x = y)) -- -- A set has a null range or a null domain if and oly if it is null. -- Theorem 24: [Only the null set has a null domain] (S = 0) ¥eq (domain(S) = 0). Proof: Suppose_not(s) ==> AUTO Suppose ==> (s = 0) & (domain(s) /= 0) Use_def(domain) ==> Stat1: {car(x): x in s} /= 0 c-->Stat1 ==> Stat2: c in {car(x): x in s} x-->Stat2 ==> false; Discharge ==> (domain(s) = 0) & Stat3: (s /= 0) x2-->Stat3 ==> x2 in s Use_def(domain) ==> Stat4: car(x2) notin {car(x): x in s} x2-->Stat4 ==> false; Discharge ==> QED -- Theorem 25: [Only the null set has a null range] (S = 0) ¥eq (range(S) = 0). Proof: Suppose_not(s) ==> AUTO Suppose ==> (s = 0) & (range(s) /= 0) Use_def(range) ==> Stat1: {cdr(x): x in s} /= 0 c-->Stat1 ==> Stat2: c in {cdr(x): x in s} x-->Stat2 ==> false; Discharge ==> (range(s) = 0) & Stat3: (s /= 0) x2-->Stat3 ==> x2 in s Use_def(range) ==> Stat4: cdr(x2) notin {cdr(x): x in s} x2-->Stat4 ==> false; Discharge ==> QED -- -- Our next elementary result states that a set $f$ is a map if and only if -- every element in it is an ordered pair. -- Theorem 26: [Maps are mapformers] Is_map(F) ¥eq (F ¥incin {[car(x),cdr(x)]: x in F}). Proof: Suppose_not(f) ==> not(Is_map(f) ¥eq (f ¥incin {[car(x),cdr(x)]: x in f})) -- -- For if we suppose the contrary and use the definition of $Is_map$, we see that -- some element $c notin f$ must have the form $c = [car(d),cdr(d)]$, where $d in f$ and -- so in turn must have the form $d = [car(e),cdr(e)]$ with $e in f$, implying $d = e$ and so -- leading to an immediate contradiction. -- Use_def(Is_map) ==> Stat1: (f ¥incin {[car(x),cdr(x)]: x in f}) & Stat2: (f /= {[car(x),cdr(x)]: x in f}) c-->Stat2(Stat1*) ==> Stat3: (c notin f) & Stat4: (c in {[car(x),cdr(x)]: x in f}) d-->Stat4(Stat3*) ==> Stat5: (d in f) & (c = [car(d),cdr(d)]) (Stat5,Stat1*)ELEM ==> Stat6: (d in {[car(x),cdr(x)]: x in f}) e-->Stat6(Stat6) ==> Stat7: d = [car(d),cdr(d)] (Stat3,Stat5,Stat7*)Discharge ==> QED -- -- The next small theory simply tells us that any setformer of the form ${[a(x),b(x)]: x in s}$ -- is a map. The proof of the one theorem it provides is an elementary consequence -- of the definition of 'Is_map' -- THEORY Iz_map(a(x),b(x),s) END Iz_map; -- ENTER_THEORY Iz_map -- Theorem iz_map.1: [Mapformers are maps] Is_map({[a(x),b(x)]: x in s}) & (domain({[a(x),b(x)]: x in s}) = {a(x): x in s}) & (range({[a(x),b(x)]: x in s}) = {b(x): x in s}). Proof: Suppose_not ==> AUTO Use_def(domain) ==> domain({[a(x),b(x)]: x in s}) = {car(y): y in {[a(x),b(x)]: x in s}} SIMPLF ==> domain({[a(x),b(x)]: x in s}) = {car([a(x),b(x)]): x in s} Suppose ==> Stat1: {car([a(x),b(x)]): x in s} /= {a(x): x in s} c1-->Stat1 ==> false; Discharge ==> domain({[a(x),b(x)]: x in s}) = {a(x): x in s} Use_def(range) ==> range({[a(x),b(x)]: x in s}) = {cdr(y): y in {[a(x),b(x)]: x in s}} SIMPLF ==> range({[a(x),b(x)]: x in s}) = {cdr([a(x),b(x)]): x in s} Suppose ==> Stat2: {cdr([a(x),b(x)]): x in s} /= {b(x): x in s} c2-->Stat2 ==> false; Discharge ==> range({[a(x),b(x)]: x in s}) = {b(x): x in s} Use_def(Is_map) ==> {[a(x),b(x)]: x in s} /= {[car(x),cdr(x)]: x in {[a(x),b(x)]: x in s}} SIMPLF ==> Stat3: {[a(x),b(x)]: x in s} /= {[car([a(x),b(x)]),cdr([a(x),b(x)])]: x in s} c-->Stat3 ==> AUTO Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Iz_map -- --THEORY Iz_map(a(x),b(x),s) --==> -- Is_map({[a(x),b(x)]: x in s}) & (domain({[a(x),b(x)]: x in s}) = {a(x): x in s}) & (range({[a(x),b(x)]: x in s}) = {b(x): x in s}) --END Iz_map; -- -- The two small theories which follow extend 'Iz_map' to the 2- and 3-variable cases respectively. -- THEORY Iz_map_2(a2(x,y),b2(x,y),s,t,P2(x,y)) END Iz_map_2; -- ENTER_THEORY Iz_map_2 -- -- The proof of the one theorem of this theory is very close to, and just as elementary as, -- the corresponding one-variable result. -- Theorem iz_map_2.1: [Two-variable mapformers] Is_map({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}). Proof: Suppose_not ==> AUTO Use_def(Is_map) ==> {[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)} /= {[car(x),cdr(x)]: x in {[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}} SIMPLF ==> Stat1: {[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)} /= {[car([a2(x,y),b2(x,y)]),cdr([a2(x,y),b2(x,y)])]: x in s, y in t | P2(x,y)} (c,d)-->Stat1 ==> AUTO Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Iz_map_2 -- --THEORY Iz_map_2(a2(x,y),b2(x,y),s,t,P2(x,y)) --==> -- Is_map({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}) --END Iz_map_2; -- THEORY Iz_map_3(a3(x,y,z),b3(x,y,z),s,t,u,P3(x,y,z)) END Iz_map_3; -- ENTER_THEORY Iz_map_3 -- -- The proof of the one theorem of this theory is very close to, and just as elementary as, -- the corresponding one-variable result. -- Theorem iz_map_3.1: [Three-variable mapformers] Is_map({[a3(x,y,yy),b3(x,y,yy)]: x in s, y in t, yy in u | P3(x,y,yy)}). Proof: Suppose_not ==> AUTO Use_def(Is_map) ==> {[a3(x,y,yy),b3(x,y,yy)]: x in s, y in t, yy in u | P3(x,y,yy)} /= {[car(x),cdr(x)]: x in {[a3(x,y,yy),b3(x,y,yy)]: x in s, y in t, yy in u | P3(x,y,yy)}} SIMPLF ==> Stat1: {[a3(x,y,yy),b3(x,y,yy)]: x in s, y in t, yy in u | P3(x,y,yy)} /= {[car([a3(x,y,yy),b3(x,y,yy)]),cdr([a3(x,y,yy),b3(x,y,yy)])]: x in s, y in t, yy in u | P3(x,y,yy)} (c,d,dd)-->Stat1 ==> AUTO Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Iz_map_3 -- --THEORY Iz_map_3(a3(x,y,yy),b3(x,y,yy),s,t,u,P3(x,y,yy)) --==> -- Is_map({[a3(x,y,yy),b3(x,y,yy)]: x in s, y in t, yy in u | P3(x,y,yy)}) --END Iz_map_3; -- -- Our next utility theory tells us that a setformer of the form ${[a(x),b(x)]: x in s}$ is a single -- valued map unless there are $x$ and $y$ in $s$ such that $a(x) = a(y)$ does not imply $b(x) = b(y)$, -- and that ${[x,b(x)]: x in s}$ is always a single valued map. -- THEORY Svm_test(a(x),b(x),s) END Svm_test; -- ENTER_THEORY Svm_test -- Def Svm_test.0a: [Witness to non-singlevaluedness] xy2_thryvar := arb({[x,y]: x in s, y in s | (a(x) = a(y)) & (b(x) /= b(y))}) Def Svm_test.0b: [First component of witness to non-singlevaluedness] x3_thryvar := car(xy2_thryvar) Def Svm_test.0c: [Second component of witness to non-singlevaluedness] y3_thryvar := cdr(xy2_thryvar) -- Theorem Svm_test.1: [Single-valuedness test] ((x3_thryvar in s) & (y3_thryvar in s) & (a(x3_thryvar) = a(y3_thryvar)) & (b(x3_thryvar) /= b(y3_thryvar))) or Svm({[a(x),b(x)]: x in s}). Proof: Suppose_not ==> (not ((x3_thryvar in s) & (y3_thryvar in s) & (a(x3_thryvar) = a(y3_thryvar)) & (b(x3_thryvar) /= b(y3_thryvar)))) & (not Svm({[a(x),b(x)]: x in s})) -- -- By definition, the contrary of our assertion can only be true if ${[a(x),b(x)]: x in s}$ -- is either not a map or fails the single-valuedness test. But the preceding theory $Iz_map$ -- tells us that the first case is impossible, and an elementary simplification shows -- that the second case is impossible also. -- Use_def(Svm) ==> not(Is_map({[a(x),b(x)]: x in s})) or (not (FORALL u in {[a(x),b(x)]: x in s}, v in {[a(x),b(x)]: x in s} | (car(u) = car(v)) ¥imp (u = v))) APPLY() Iz_map(a(x)->a(x),b(x)->b(x),s->s) ==> Is_map({[a(x),b(x)]: x in s}) SIMPLF ==> Stat1: (not (FORALL x in s, y in s | (car([a(x),b(x)]) = car([a(y),b(y)])) ¥imp ([a(x),b(x)] = [a(y),b(y)]))) (x,y)-->Stat1 ==> (x in s) & (y in s) & (car([a(x),b(x)]) = car([a(y),b(y)])) & ([a(x),b(x)] /= [a(y),b(y)]) Suppose ==> Stat2: {[x,y]: x in s, y in s | (a(x) = a(y)) & (b(x) /= b(y))} = 0 (x,y)-->Stat2 ==> not((x in s) & (y in s) & (a(x) = a(y)) & (b(x) /= b(y))) Discharge ==> {[x,y]: x in s, y in s | (a(x) = a(y)) & (b(x) /= b(y))} /= 0 ({[x,y]: x in s, y in s | (a(x) = a(y)) & (b(x) /= b(y))})-->T0 ==> arb({[x,y]: x in s, y in s | (a(x) = a(y)) & (b(x) /= b(y))}) in {[x,y]: x in s, y in s | (a(x) = a(y)) & (b(x) /= b(y))} Use_def(xy2_thryvar) ==> Stat3: xy2_thryvar in {[x,y]: x in s, y in s | (a(x) = a(y)) & (b(x) /= b(y))} (xx,yy)-->Stat3 ==> Stat4: (xx in s) & (yy in s) & (xy2_thryvar = [xx,yy]) & (a(xx) = a(yy)) & (b(xx) /= b(yy)) (Stat4)ELEM ==> (xx = car(xy2_thryvar)) & (yy = cdr(xy2_thryvar)) Use_def(x3_thryvar) ==> x3_thryvar = car(xy2_thryvar) Use_def(y3_thryvar) ==> y3_thryvar = cdr(xy2_thryvar) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Svm_test -- --THEORY Svm_test(a,b,s) --==> -- ((x3_thryvar in s) & (y3_thryvar in s) & (a(x3_thryvar) = a(y3_thryvar)) & (b(x3_thryvar) /= b(y3_thryvar))) or -- Svm({[a(x),b(x)]: x in s}) --END Svm_test; -- -- As in the case of $Iz_map$, we give the 2-variable and 3-variable versions of the preceding theory. -- THEORY Svm_test_2(a2(x,y),b2(x,y),s,t,P2(x,y)) END Svm_test_2; -- ENTER_THEORY Svm_test_2 -- Def Svm_test.2a: [Witness to non-singlevaluedness, two-variable case] xy3_thryvar := arb({[[x,y],[xp,yp]]: x in s, y in t, xp in s, yp in t | P2(x,y) & P2(xp,yp) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp))}) Def Svm_test.2b: [1,1 component of witness to non-singlevaluedness, two-variable case] x4_thryvar := car(car(xy3_thryvar)) Def Svm_test.2c: [1,2 component of witness to non-singlevaluedness, two-variable case] y4_thryvar := cdr(car(xy3_thryvar)) Def Svm_test.2d: [2,1 component of witness to non-singlevaluedness, two-variable case] xp1_thryvar := car(cdr(xy3_thryvar)) Def Svm_test.2h: [2,2 component of witness to non-singlevaluedness, two-variable case] yp1_thryvar := cdr(cdr(xy3_thryvar)) -- Theorem Svm_test_2.1: [Single-valuedness test, two-variable case] ((x4_thryvar in s) & (y4_thryvar in t) & (xp1_thryvar in s) & (yp1_thryvar in t) & (a2(x4_thryvar,y4_thryvar) = a2(xp1_thryvar,yp1_thryvar)) & (b2(x4_thryvar,y4_thryvar) /= b2(xp1_thryvar,yp1_thryvar))) or Svm({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}). Proof: Suppose_not ==> Stat1: (not((x4_thryvar in s) & (y4_thryvar in t) & (xp1_thryvar in s) & (yp1_thryvar in t) & (a2(x4_thryvar,y4_thryvar) = a2(xp1_thryvar,yp1_thryvar)) & (b2(x4_thryvar,y4_thryvar) /= b2(xp1_thryvar,yp1_thryvar)))) & (not Svm({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)})) -- -- By definition, the negative of our assertion can only be true if -- ${[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}$ -- is either not a map or fails the single-valuedness test. But $Iz_map_2$ tells us -- that the first case is impossible, so that this set must fail the single-valuedness test. -- Use_def(Svm) ==> not(Is_map({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)})) or (not (FORALL u in {[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}, v in {[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)} | (car(u) = car(v)) ¥imp (u = v))) APPLY() Iz_map_2(a2(x,y)->a2(x,y),b2(x,y)->b2(x,y),s->s,t->t,P2(x,y)->P2(x,y)) ==> Is_map({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}) ELEM ==> Stat2: not (FORALL u in {[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}, v in {[a2(xx,yy),b2(xx,yy)]: xx in s, yy in t | P2(xx,yy)} | (car(u) = car(v)) ¥imp (u = v)) -- -- Hence there must exist elements $x$, $y$, $xx$, $yy$ violating the single-valuedness condition, -- and so implying that the set -- -- ${[[x,y],[xp,yp]]: x in s, y in t, xp in s, yp in t | (P2(x,y) & P2(xp,yp) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp)))}$ -- -- is non-empty, which by the axiom of choice and definition of $xy3_thryvar$ implies that $xy3_thryvar$ -- belongs to this set. -- SIMPLF(Stat2) ==> Stat3: not (FORALL x in s, y in t, xx in s, yy in t | ((P2(x,y) & P2(xx,yy)) ¥imp ((car([a2(x,y),b2(x,y)]) = car([a2(xx,yy),b2(xx,yy)])) ¥imp ([a2(x,y),b2(x,y)] = [a2(xx,yy),b2(xx,yy)])))) (x,y,xx,yy)-->Stat3 ==> (x in s) & (y in t) & (xx in s) & (yy in t) & P2(x,y) & P2(xx,yy) & (a2(x,y) = a2(xx,yy)) & (b2(x,y) /= b2(xx,yy)) Suppose ==> Stat4: {[[x,y],[xp,yp]]: x in s, y in t, xp in s, yp in t | P2(x,y) & P2(xp,yp) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp))} = 0 (x,y,xx,yy)-->Stat4 ==> false; Discharge ==> {[[x,y],[xp,yp]]: x in s, y in t, xp in s, yp in t | P2(x,y) & P2(xp,yp) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp))} /= 0 ({[[x,y],[xp,yp]]: x in s, y in t, xp in s, yp in t | P2(x,y) & P2(xp,yp) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp))})-->T0 ==> arb({[[x,y],[xp,yp]]: x in s, y in t, xp in s, yp in t | P2(x,y) & P2(xp,yp) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp))}) in {[[x,y],[xp,yp]]: x in s, y in t, xp in s, yp in t | P2(x,y) & P2(xp,yp) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp))} Use_def(xy3_thryvar) ==> Stat5: xy3_thryvar in {[[x,y],[xp,yp]]: x in s, y in t, xp in s, yp in t | P2(x,y) & P2(xp,yp) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp))} -- -- Hence there exist elements $x2$, $y2$, $xp2$, $yp2$ satisfying the condition seen just below, and it -- is an elementary consequence of the definition of $x4_thryvar$, $y4_thryvar$,etc. that these must be -- $x4_thryvar$, $y4_thryvar$, $xp1_thryvar$, $yp1_thryvar$, leading to an immediate contradiction with our -- hypothesis, and so proving our theorem. -- (x2,y2,xp2,yp2)-->Stat5 ==> Stat6: (x2 in s) & (y2 in t) & (xp2 in s) & (yp2 in t) & P2(x2,y2) & P2(xp2,yp2) & (xy3_thryvar = [[x2,y2],[xp2,yp2]]) & (a2(x2,y2) = a2(xp2,yp2)) & (b2(x2,y2) /= b2(xp2,yp2)) (Stat6)ELEM ==> (x2 = car(car(xy3_thryvar))) (Stat6)ELEM ==> (y2 = cdr(car(xy3_thryvar))) (Stat6)ELEM ==> (xp2 = car(cdr(xy3_thryvar))) (Stat6)ELEM ==> (yp2 = cdr(cdr(xy3_thryvar))) Use_def(x4_thryvar) ==> x4_thryvar = car(car(xy3_thryvar)) Use_def(y4_thryvar) ==> y4_thryvar = cdr(car(xy3_thryvar)) Use_def(xp1_thryvar) ==> xp1_thryvar = car(cdr(xy3_thryvar)) Use_def(yp1_thryvar) ==> yp1_thryvar = cdr(cdr(xy3_thryvar)) EQUAL(Stat6) ==> Stat7: (x4_thryvar in s) & (y4_thryvar in t) & (xp1_thryvar in s) & (yp1_thryvar in t) & P2(x4_thryvar,y4_thryvar) & P2(xp1_thryvar,yp1_thryvar) & (xy3_thryvar = [[x4_thryvar,y4_thryvar],[xp1_thryvar,yp1_thryvar]]) & (a2(x4_thryvar,y4_thryvar) = a2(xp1_thryvar,yp1_thryvar)) & (b2(x4_thryvar,y4_thryvar) /= b2(xp1_thryvar,yp1_thryvar)) (Stat7,Stat1*)Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Svm_test_2 -- --THEORY Svm_test_2(a2(x,y),b2(x,y),s,t,P2(x,y)) --==> -- ((x4_thryvar in s) & (y4_thryvar in t) & (xp1_thryvar in s) & (yp1_thryvar in t) & -- (a2(x4_thryvar,y4_thryvar) = a2(xp1_thryvar,yp1_thryvar)) & (b2(x4_thryvar,y4_thryvar) /= b2(xp1_thryvar,yp1_thryvar))) or -- Svm({[a2(x,y),b2(x,y)]: x in s, y in t | P2(x,y)}) --END Svm_test_2; -- -- We will occasionally require the three-variable version of the single-valued map principle, -- which is given by the following variant THEORY. -- THEORY Svm_test_3(a3(x,y,z),b3(x,y,z),s,t,u,P3(x,y,z)) END Svm_test_3; -- ENTER_THEORY Svm_test_3 -- Def Svm_test.3a: [Witness to non-singlevaluedness, three-variable case] xy4_thryvar := arb({[[x,[y,wz]],[xp,[yp,wzp]]]: x in s, y in t, wz in u, xp in s, yp in t, wzp in u | (a3(x,y,wz) = a3(xp,yp,wzp)) & (b3(x,y,wz) /= b3(xp,yp,wzp)) & P3(x,y,wz) & P3(xp,yp,wzp)}) Def Svm_test.3b: [1,1-component of witness to non-singlevaluedness, three-variable case] x5_thryvar := car(car(xy4_thryvar)) Def Svm_test.3c: [1,2,1-component of witness to non-singlevaluedness, three-variable case] y5_thryvar := car(cdr(car(xy4_thryvar))) Def Svm_test.3e: [1,2,2-component of witness to non-singlevaluedness, three-variable case] z1_thryvar := cdr(cdr(car(xy4_thryvar))) Def Svm_test.3d: [2,1-component of witness to non-singlevaluedness, three-variable case] xp2_thryvar := car(cdr(xy4_thryvar)) Def Svm_test.3h: [2,2,1-component of witness to non-singlevaluedness, three-variable case] yp2_thryvar := car(cdr(cdr(xy4_thryvar))) Def Svm_test.3f: [2,2,2-component of witness to non-singlevaluedness, three-variable case] zp1_thryvar := cdr(cdr(cdr(xy4_thryvar))) -- Theorem Svm_test_3.1: [Single-valuedness test, three-variable case] ((x5_thryvar in s) & (y5_thryvar in t) & (z1_thryvar in u) & (xp2_thryvar in s) & (yp2_thryvar in t) & (zp1_thryvar in u) & P3(x5_thryvar,y5_thryvar,z1_thryvar) & P3(xp2_thryvar,yp2_thryvar,zp1_thryvar) & (a3(x5_thryvar,y5_thryvar,z1_thryvar) = a3(xp2_thryvar,yp2_thryvar,zp1_thryvar)) & (b3(x5_thryvar,y5_thryvar,z1_thryvar) /= b3(xp2_thryvar,yp2_thryvar,zp1_thryvar))) or Svm({[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)}). Proof: Suppose_not ==> Stat1: (not((x5_thryvar in s) & (y5_thryvar in t) & (z1_thryvar in u) & (xp2_thryvar in s) & (yp2_thryvar in t) & (zp1_thryvar in u) & P3(x5_thryvar,y5_thryvar,z1_thryvar) & P3(xp2_thryvar,yp2_thryvar,zp1_thryvar) & (a3(x5_thryvar,y5_thryvar,z1_thryvar) = a3(xp2_thryvar,yp2_thryvar,zp1_thryvar)) & (b3(x5_thryvar,y5_thryvar,z1_thryvar) /= b3(xp2_thryvar,yp2_thryvar,zp1_thryvar)))) & (not Svm({[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)})) -- -- By definition, the negative of our assertion can only be true if -- ${[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)}$ -- is either not a map or fails the single-valuedness test. But Iz_map_3 tells us -- that the first case is impossible, so that this set must fail the single-valuedness test. -- -- Use_def(Svm) ==> not(Is_map({[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)})) or (not (FORALL z1 in {[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)}, z2 in {[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)} | (car(z1) = car(z2)) ¥imp (z1 = z2))) APPLY() Iz_map_3(a3(x,y,w)->a3(x,y,w),b3(x,y,w)->b3(x,y,w),s->s,t->t,u->u,P3(x,y,w)->P3(x,y,w)) ==> Is_map({[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)}) ELEM ==> not (FORALL z1 in {[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)}, z2 in {[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)} | (car(z1) = car(z2)) ¥imp (z1 = z2)) SIMPLF ==> Stat2: not (FORALL x in s, y in t, wz in u, xp in s, yp in t, wz0 in u | (P3(x,y,wz) & P3(xp,yp,wz0)) ¥imp ((car([a3(x,y,wz),b3(x,y,wz)]) = car([a3(xp,yp,wz0),b3(xp,yp,wz0)])) ¥imp ([a3(x,y,wz),b3(x,y,wz)] = [a3(xp,yp,wz0),b3(xp,yp,wz0)]))) -- -- Hence there must exist elements $x$, $y$, $wz$, $xp$, $yp$, $wz0$ violating the single-valuedness condition, -- and so implying that the set -- -- ${[[x,[y,wz]],[xp,[yp,wz0]]]: x in s, y in t, wz in u, xp in s, yp in t, wz0 in u | ((a3(x,y,wz) = a3(xp,yp,wz0)) & (b3(x,y,wz) /= b3(xp,yp,wz0)) & P3(x,y,wz) & P3(xp,yp,wz0))} /= 0$ -- -- is non-empty, which by the axiom of choice and definition of $xy4_thryvar$ implies that $xy4_thryvar$ -- belongs to this set. -- (x,y,wz,xp,yp,wz0)-->Stat2 ==> Stat3: (x in s) & (y in t) & (wz in u) & (xp in s) & (yp in t) & (wz0 in u) & P3(x,y,wz) & P3(xp,yp,wz0) & (car([a3(x,y,wz),b3(x,y,wz)]) = car([a3(xp,yp,wz0),b3(xp,yp,wz0)])) & (b3(x,y,wz) /= b3(xp,yp,wz0)) (Stat3)ELEM ==> a3(x,y,wz) = a3(xp,yp,wz0) Suppose ==> Stat4: {[[x,[y,wz]],[xp,[yp,wz0]]]: x in s, y in t, wz in u, xp in s, yp in t, wz0 in u | (a3(x,y,wz) = a3(xp,yp,wz0)) & (b3(x,y,wz) /= b3(xp,yp,wz0)) & P3(x,y,wz) & P3(xp,yp,wz0)} = 0 (x,y,wz,xp,yp,wz0)-->Stat4 ==> false; Discharge ==> {[[x,[y,wz]],[xp,[yp,wz0]]]: x in s, y in t, wz in u, xp in s, yp in t, wz0 in u | (a3(x,y,wz) = a3(xp,yp,wz0)) & (b3(x,y,wz) /= b3(xp,yp,wz0)) & P3(x,y,wz) & P3(xp,yp,wz0)} /= 0 ({[[x,[y,wz]],[xp,[yp,wz0]]]: x in s, y in t, wz in u, xp in s, yp in t, wz0 in u | (a3(x,y,wz) = a3(xp,yp,wz0)) & (b3(x,y,wz) /= b3(xp,yp,wz0)) & P3(x,y,wz) & P3(xp,yp,wz0)})-->T0 ==> arb({[[x,[y,wz]],[xp,[yp,wz0]]]: x in s, y in t, wz in u, xp in s, yp in t, wz0 in u | (a3(x,y,wz) = a3(xp,yp,wz0)) & (b3(x,y,wz) /= b3(xp,yp,wz0)) & P3(x,y,wz) & P3(xp,yp,wz0)}) in {[[x,[y,wz]],[xp,[yp,wz0]]]: x in s, y in t, wz in u, xp in s, yp in t, wz0 in u | (a3(x,y,wz) = a3(xp,yp,wz0)) & (b3(x,y,wz) /= b3(xp,yp,wz0)) & P3(x,y,wz) & P3(xp,yp,wz0)} Use_def(xy4_thryvar) ==> Stat5: xy4_thryvar in {[[x,[y,wz]],[xp,[yp,wz0]]]: x in s, y in t, wz in u, xp in s, yp in t, wz0 in u | (a3(x,y,wz) = a3(xp,yp,wz0)) & (b3(x,y,wz) /= b3(xp,yp,wz0)) & P3(x,y,wz) & P3(xp,yp,wz0)} -- -- Hence there exist elements $x2$, $y2$, $z2$, $xp2$, $yp2$, $zp2$ satisfying the condition seen just below, and it -- is an elementary consequence of the definition of $x5_thryvar$, $y5_thryvar$,etc. that these must be -- $x5_thryvar$, $y5_thryvar$, $z1_thryvar$, $xp2_thryvar$, $yp2_thryvar$, $zp1_thryvar$, leading to an immediate contradiction with our -- hypothesis, and so proving our theorem. -- (x2,y2,z2,xp2,yp2,zp2)-->Stat5 ==> Stat6: (x2 in s) & (y2 in t) & (z2 in u) & (xp2 in s) & (yp2 in t) & (zp2 in u) & P3(x2,y2,z2) & P3(xp2,yp2,zp2) & (xy4_thryvar = [[x2,[y2,z2]],[xp2,[yp2,zp2]]]) & (a3(x2,y2,z2) = a3(xp2,yp2,zp2)) & (b3(x2,y2,z2) /= b3(xp2,yp2,zp2)) (Stat6)ELEM ==> x2 = car(car(xy4_thryvar)) (Stat6)ELEM ==> y2 = car(cdr(car(xy4_thryvar))) (Stat6)ELEM ==> z2 = cdr(cdr(car(xy4_thryvar))) (Stat6)ELEM ==> xp2 = car(cdr(xy4_thryvar)) (Stat6)ELEM ==> yp2 = car(cdr(cdr(xy4_thryvar))) (Stat6)ELEM ==> zp2 = cdr(cdr(cdr(xy4_thryvar))) Use_def(x5_thryvar) ==> x5_thryvar = car(car(xy4_thryvar)) Use_def(y5_thryvar) ==> y5_thryvar = car(cdr(car(xy4_thryvar))) Use_def(z1_thryvar) ==> z1_thryvar = cdr(cdr(car(xy4_thryvar))) Use_def(xp2_thryvar) ==> xp2_thryvar = car(cdr(xy4_thryvar)) Use_def(yp2_thryvar) ==> yp2_thryvar = car(cdr(cdr(xy4_thryvar))) Use_def(zp1_thryvar) ==> zp1_thryvar = cdr(cdr(cdr(xy4_thryvar))) EQUAL(Stat6) ==> Stat7: (x5_thryvar in s) & (y5_thryvar in t) & (z1_thryvar in u) & (xp2_thryvar in s) & (yp2_thryvar in t) & (zp1_thryvar in u) & P3(x5_thryvar,y5_thryvar,z1_thryvar) & P3(xp2_thryvar,yp2_thryvar,zp1_thryvar) & (xy4_thryvar = [[x5_thryvar,[y5_thryvar,z1_thryvar]],[xp2_thryvar,[yp2_thryvar,zp1_thryvar]]]) & (a3(x5_thryvar,y5_thryvar,z1_thryvar) = a3(xp2_thryvar,yp2_thryvar,zp1_thryvar)) & (b3(x5_thryvar,y5_thryvar,z1_thryvar) /= b3(xp2_thryvar,yp2_thryvar,zp1_thryvar)) (Stat7,Stat1*)Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Svm_test_3 -- --THEORY Svm_test_3(a3(x,y,z),b3(x,y,z),s,t,u,P3(x,y,z)) --==>(x5_thryvar,y5_thryvar,z1_thryvar,xp2_thryvar,yp2_thryvar,zp1_thryvar) -- ((x5_thryvar in s) & (y5_thryvar in t) & (z1_thryvar in u) & (xp2_thryvar in s) & (yp2_thryvar in t) & -- (zp1_thryvar in u) & P3(x5_thryvar,y5_thryvar,z1_thryvar) & P3(xp2_thryvar,yp2_thryvar,zp1_thryvar) & -- (a3(x5_thryvar,y5_thryvar,z1_thryvar) = a3(xp2_thryvar,yp2_thryvar,z1_thryvar)) -- & (b3(x5_thryvar,y5_thryvar,z1_thryvar) /= b3(xp2_thryvar,yp2_thryvar,z1_thryvar))) or -- Svm({[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in u | P3(x,y,w)}) --END Svm_test_3; -- -- The next mini-theory simply specializes $Svm_test$ to the form in which it is most commonly used. -- The proof required is completely elementary. -- The following final small theories in the present utility series adapt -- $Svm_test$ and its multivariable analogs to the form more conveniently used in proving -- that a map is 1-1. Once more the sole theorem provided has an easy proof. -- THEORY one_1_test(a(x),b(x),s) END one_1_test; -- ENTER_THEORY one_1_test -- Def one_1_test.0a: [Witness to non-one-oneness of a map] xy5_thryvar := arb({[x,y]: x in s, y in s | ((a(x) = a(y)) ¥neq (b(x) = b(y)))}) Def one_1_test.0b: [First component of witness to map non-one-oneness] x6_thryvar := car(xy5_thryvar) Def one_1_test.0c: [Second component of witness to map non-one-oneness] y6_thryvar := cdr(xy5_thryvar) -- Theorem one_1_test.1: [One-one map former test] ((x6_thryvar in s) & (y6_thryvar in s) & (((a(x6_thryvar) = a(y6_thryvar)) ¥neq (b(x6_thryvar) = b(y6_thryvar))))) or one_1_map({[a(x),b(x)]: x in s}). Proof: Suppose_not ==> (not((x6_thryvar in s) & (y6_thryvar in s) & (((a(x6_thryvar) = a(y6_thryvar)) ¥neq (b(x6_thryvar) = b(y6_thryvar)))))) & (not one_1_map({[a(u),b(u)]: u in s})) -- -- For let $s$ be a counterexample to our assertion. Then the set -- -- (*) ${[x,y]: x in s, y in s | ((a(x) = a(y)) ¥neq (b(x) = b(y)))}$ -- -- cannot be empty, since if it were ${[a(x),b(x)]: x in s}$ would necessarily be single valued, -- in which case there would have to exist two elements $xx$, $yy$ of $s$ for which $((b(xx) = b(yy)) & (a(xx) /= a(yy)))$, -- an impossibility given that the set (*) seen above is empty. -- Use_def(one_1_map) ==> Stat1: (not Svm({[a(u),b(u)]: u in s})) or (not (FORALL x in {[a(u),b(u)]: u in s}, y in {[a(v),b(v)]: v in s} | (cdr(x) = cdr(y)) ¥imp (x = y))) Suppose ==> Stat2: {[x,y]: x in s, y in s | ((a(x) = a(y)) ¥neq (b(x) = b(y)))} = 0 Suppose ==> not Svm({[a(x),b(x)]: x in s}) APPLY(x3_thryvar:x,y3_thryvar:y) Svm_test(a(x)->a(x),b(x)->b(x),s->s) ==> ((x in s) & (y in s) & (a(x) = a(y)) & (b(x) /= b(y))) or Svm({[a(x),b(x)]: x in s}) ELEM ==> (x in s) & (y in s) & (a(x) = a(y)) & (b(x) /= b(y)) (x,y)-->Stat2 ==> (a(x) = a(y)) ¥eq (b(x) = b(y)) ELEM ==> false; Discharge ==> (not (FORALL x in {[a(u),b(u)]: u in s}, y in {[a(v),b(v)]: v in s} | (cdr(x) = cdr(y)) ¥imp (x = y))) SIMPLF ==> Stat3: (not (FORALL u in s, v in s | (cdr([a(u),b(u)]) = cdr([a(v),b(v)])) ¥imp ([a(u),b(u)] = [a(v),b(v)]))) (xx,yy)-->Stat3 ==> (xx in s) & (yy in s) & (cdr([a(xx),b(xx)]) = cdr([a(yy),b(yy)])) & ([a(xx),b(xx)] /= [a(yy),b(yy)]) ELEM ==> (xx in s) & (yy in s) & (b(xx) = b(yy)) & (a(xx) /= a(yy)) (xx,yy)-->Stat2 ==> (a(xx) = a(yy)) ¥eq (b(xx) = b(yy)) ELEM ==> false; Discharge ==> {[x,y]: x in s, y in s | ((a(x) = a(y)) ¥neq (b(x) = b(y)))} /= 0 -- -- It therefore follows by the axiom of choice that $xy5_thryvar$, as defined above, is an element of the set (*), -- and thus its two components $x6_thryvar$ and $y6_thryvar$ stand in contradiction to the hypotheses of the -- present theorem. This contradiction proves our assertion. -- ({[x,y]: x in s, y in s | ((a(x) = a(y)) ¥neq (b(x) = b(y)))})-->T0 ==> arb({[x,y]: x in s, y in s | ((a(x) = a(y)) ¥neq (b(x) = b(y)))}) in {[x,y]: x in s, y in s | ((a(x) = a(y)) ¥neq (b(x) = b(y)))} Use_def(xy5_thryvar) ==> Stat4: xy5_thryvar in {[x,y]: x in s, y in s | ((a(x) = a(y)) ¥neq (b(x) = b(y)))} (x2,y2)-->Stat4 ==> (xy5_thryvar = [x2,y2]) & (x2 in s) & (y2 in s) & (((a(x2) = a(y2)) ¥neq (b(x2) = b(y2)))) ELEM ==> (car(xy5_thryvar) = x2) & (cdr(xy5_thryvar) = y2) Use_def(x6_thryvar) ==> x6_thryvar = car(xy5_thryvar) Use_def(y6_thryvar) ==> y6_thryvar = cdr(xy5_thryvar) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The utility theory just developed can be summarized as follows. --DISPLAY one_1_test -- --THEORY one_1_test(a(x),b(x),s) --==>(x6_thryvar,y6_thryvar) -- ((x6_thryvar in s) & (y6_thryvar in s) & (not((a(x6_thryvar) = a(y6_thryvar)) ¥eq (b(x6_thryvar) = b(y6_thryvar))))) or -- one_1_map({[a(x),b(x)]: x in s}) --END one_1_test; -- THEORY one_1_test_2(a2(x,y),b2(x,y),s,t) END one_1_test_2; -- ENTER_THEORY one_1_test_2 -- -- Next we give the two variable analog of the THEORY given just above. -- The proof of the one theorem it provides differs little from that seen above. -- Def one_1_test_2.0a: [Witness to map non-one-oneness, two-variable case] xy6_thryvar := arb({[[x,y],[x2,y2]]: x in s, y in t, x2 in s, y2 in t | not((a2(x,y) = a2(x2,y2)) ¥eq (b2(x,y) = b2(x2,y2)))}) Def one_1_test_2.0b: [1,1-component of witness to map non-one-oneness, two-variable case] x7_thryvar := car(car(xy6_thryvar)) Def one_1_test_2.0c: [1-2-component of witness to map non-one-oneness, two-variable case] y7_thryvar := cdr(car(xy6_thryvar)) Def one_1_test_2.0d: [2,1-component of witness to map non-one-oneness, two-variable case] x2_thryvar := car(cdr(xy6_thryvar)) Def one_1_test_2.0h: [2,1-component of witness to map non-one-oneness, two-variable case] y2_thryvar := cdr(cdr(xy6_thryvar)) -- Theorem one_1_test_2.1: [One-one map former test, two-variable case] ((x7_thryvar in s) & (y7_thryvar in t) & (x2_thryvar in s) & (y2_thryvar in t) & (not((a2(x7_thryvar,y7_thryvar) = a2(x2_thryvar,y2_thryvar)) ¥eq (b2(x7_thryvar,y7_thryvar) = b2(x2_thryvar,y2_thryvar))))) or one_1_map({[a2(x,y),b2(x,y)]: x in s, y in t}). Proof: Suppose_not ==> (not((x7_thryvar in s) & (y7_thryvar in t) & (x2_thryvar in s) & (y2_thryvar in t) & (not((a2(x7_thryvar,y7_thryvar) = a2(x2_thryvar,y2_thryvar)) ¥eq (b2(x7_thryvar,y7_thryvar) = b2(x2_thryvar,y2_thryvar)))))) & (not one_1_map({[a2(x,y),b2(x,y)]: x in s, y in t})) -- -- For let $s$ be a counterexample to our assertion. Then the set -- -- (*) ${[[x,y],[x2,y2]]: x in s, y in t, x2 in s, y2 in t | not((a2(x,y) = a2(x2,y2)) ¥eq (b2(x,y) = b2(x2,y2)))}$ -- -- cannot be empty, since if it were ${[a(u,v),b2(u,v)]: u in s, v in t}$ would necessarily be single valued, -- in which case there would have to exist elements $x$, $xp$ of $s$ and elements $y$, $yp$ of $t$ for which -- $((a2(x,y) = a2(xp,yp)) ¥eq (b2(x,y) = b2(xp,yp)))$, an impossibility given that the set (*) seen above is empty. -- Use_def(one_1_map) ==> Stat1: (not Svm({[a2(u,v),b2(u,v)]: u in s, v in t})) or (not (FORALL x in {[a2(u,v),b2(u,v)]: u in s,v in t}, y in {[a2(up,vp),b2(up,vp)]: up in s,vp in t} | (cdr(x) = cdr(y)) ¥imp (x = y))) Suppose ==> Stat2: {[[x,y],[x2,y2]]: x in s, y in t, x2 in s, y2 in t | not((a2(x,y) = a2(x2,y2)) ¥eq (b2(x,y) = b2(x2,y2)))} = 0 Suppose ==> not Svm({[a2(u,v),b2(u,v)]: u in s, v in t}) APPLY(x4_thryvar:x,y4_thryvar:y,xp1_thryvar:xp,yp1_thryvar:yp) Svm_test_2(a2(x,y)->a2(x,y),b2(x,y)->b2(x,y),s->s,t->t,P2(x,y)->true) ==> ((x in s) & (y in t) & (xp in s) & (yp in t) & (a2(x,y) = a2(xp,yp)) & (b2(x,y) /= b2(xp,yp))) or Svm({[a2(u,v),b2(u,v)]: u in s, v in t | true}) (x,y,xp,yp)-->Stat2 ==> (a2(x,y) = a2(xp,yp)) ¥eq (b2(x,y) = b2(xp,yp)) ELEM ==> false; Discharge ==> not (FORALL x in {[a2(u,v),b2(u,v)]: u in s,v in t}, y in {[a2(u,v),b2(u,v)]: u in s,v in t} | (cdr(x) = cdr(y)) ¥imp (x = y)) SIMPLF ==> Stat3: not (FORALL u in s, v in t, up in s, vp in t | (cdr([a2(u,v),b2(u,v)]) = cdr([a2(up,vp),b2(up,vp)])) ¥imp ([a2(u,v),b2(u,v)] = [a2(up,vp),b2(up,vp)])) (xx,yy,xxp,yyp)-->Stat3 ==> (xx in s) & (yy in t) & (xxp in s) & (yyp in t) & (cdr([a2(xx,yy),b2(xx,yy)]) = cdr([a2(xxp,yyp),b2(xxp,yyp)])) & ([a2(xx,yy),b2(xx,yy)] /= [a2(xxp,yyp),b2(xxp,yyp)]) (xx,yy,xxp,yyp)-->Stat2 ==> (a2(xx,yy) = a2(xxp,yyp)) ¥eq (b2(xx,yy) = b2(xxp,yyp)) ELEM ==> false; Discharge ==> {[[x,y],[x2,y2]]: x in s, y in t, x2 in s, y2 in t | not((a2(x,y) = a2(x2,y2)) ¥eq (b2(x,y) = b2(x2,y2)))} /= 0 -- -- It therefore follows by the axiom of choice that $xy6_thryvar$, as defined above, is an element of the set (*), -- and thus its subcomponents $x7_thryvar$, $y7_thryvar$, $x2_thryvar$, $y2_thryvar$ stand in contradiction -- to the hypotheses of the present theorem. This contradiction proves our assertion. -- ({[[x,y],[x2,y2]]: x in s, y in t, x2 in s, y2 in t | not((a2(x,y) = a2(x2,y2)) ¥eq (b2(x,y) = b2(x2,y2)))})-->T0 ==> arb({[[x,y],[x2,y2]]: x in s, y in t, x2 in s, y2 in t | not((a2(x,y) = a2(x2,y2)) ¥eq (b2(x,y) = b2(x2,y2)))}) in {[[x,y],[x2,y2]]: x in s, y in t, x2 in s, y2 in t | not((a2(x,y) = a2(x2,y2)) ¥eq (b2(x,y) = b2(x2,y2)))} Use_def(xy6_thryvar) ==> Stat4: xy6_thryvar in {[[x,y],[x2,y2]]: x in s, y in t, x2 in s, y2 in t | not((a2(x,y) = a2(x2,y2)) ¥eq (b2(x,y) = b2(x2,y2)))} (x2,y2,xp2,yp2)-->Stat4 ==> (x2 in s) & (y2 in t) & (xp2 in s) & (yp2 in t) & (not((a2(x2,y2) = a2(xp2,yp2)) ¥eq (b2(x2,y2) = b2(xp2,yp2)))) & (xy6_thryvar = [[x2,y2],[xp2,yp2]]) ELEM ==> (car(car([[x2,y2],[xp2,yp2]])) = x2) & (cdr(car([[x2,y2],[xp2,yp2]])) = y2) ELEM ==> (car(cdr([[x2,y2],[xp2,yp2]])) = xp2) & (cdr(cdr([[x2,y2],[xp2,yp2]])) = yp2) EQUAL ==> (car(car(xy6_thryvar)) = x2) & (cdr(car(xy6_thryvar)) = y2) EQUAL ==> (car(cdr(xy6_thryvar)) = xp2) & (cdr(cdr(xy6_thryvar)) = yp2) Use_def(x7_thryvar) ==> x7_thryvar = car(car(xy6_thryvar)) Use_def(y7_thryvar) ==> y7_thryvar = cdr(car(xy6_thryvar)) Use_def(x2_thryvar) ==> x2_thryvar = car(cdr(xy6_thryvar)) Use_def(y2_thryvar) ==> y2_thryvar = cdr(cdr(xy6_thryvar)) (x2,y2,xp2,yp2)-->Stat2 ==> (a2(x2,y2) = a2(xp2,yp2)) ¥eq (b2(x2,y2) = b2(xp2,yp2)) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The utility theory just developed can be summarized as follows. --DISPLAY one_1_test_2 -- --THEORY one_1_test_2(a2(x,y),b2(x,y),s,t) --==>(x7_thryvar,y7_thryvar,x2_thryvar,y2_thryvar) --((x7_thryvar in s) & (y7_thryvar in t) & (x2_thryvar in s) & (y2_thryvar in t) & -- (not((a2(x7_thryvar,y7_thryvar) = a2(x2_thryvar,y2_thryvar)) ¥eq (b2(x7_thryvar,y7_thryvar) = b2(x2_thryvar,y2_thryvar))))) or -- one_1_map({[a2(x,y),b2(x,y)]: x in s, y in t}) --END one_1_test_2; -- -- THEORY one_1_test_3(a3(x,y,wz),b3(x,y,wz),s,t,r,P3(x,y,wz)) END one_1_test_3; -- ENTER_THEORY one_1_test_3 -- -- Next we give the three variable analog of the THEORY given just above. -- The proof of the one theorem it provides differs little from that seen above. -- Def one_1_test_3.0a: [Witness to map non one-ness, three-variable case] xyz_thryvar := arb({[[x,[y,wz]],[x2,[y2,z2]]]: x in s, y in t, wz in r, x2 in s, y2 in t, z2 in r | P3(x,y,wz) & P3(x2,y2,z2) & ((a3(x,y,wz) /= a3(x2,y2,z2)) ¥eq (b3(x,y,wz) = b3(x2,y2,z2)))}) Def one_1_test_3.0b: [1,1-component of witness to map non one-ness, three-variable case] x8_thryvar := car(car(xyz_thryvar)) Def one_1_test_3.0c: [1,2,1-component of witness to map non one-ness, three-variable case] y8_thryvar := car(cdr(car(xyz_thryvar))) Def one_1_test_3.0e: [1,2,2-component of witness to map non one-ness, three-variable case] z2_thryvar := cdr(cdr(car(xyz_thryvar))) Def one_1_test_3.0d: [2,1-component of witness to map non one-ness, three-variable case] xp3_thryvar := car(cdr(xyz_thryvar)) Def one_1_test_3.0h: [2,2,1-component of witness to map non one-ness, three-variable case] yp3_thryvar := car(cdr(cdr(xyz_thryvar))) Def one_1_test_3.0f: [2,2,2-component of witness to map non one-ness, three-variable case] zp2_thryvar := cdr(cdr(cdr(xyz_thryvar))) -- Theorem one_1_test_3.1: [Single-valued map former, three-variable case] ((x8_thryvar in s) & (y8_thryvar in t) & (z2_thryvar in r) & (xp3_thryvar in s) & (yp3_thryvar in t) & (zp2_thryvar in r) & P3(x8_thryvar,y8_thryvar,z2_thryvar) & P3(xp3_thryvar,yp3_thryvar,zp2_thryvar) & (((a3(x8_thryvar,y8_thryvar,z2_thryvar) /= a3(xp3_thryvar,yp3_thryvar,zp2_thryvar)) ¥eq (b3(x8_thryvar,y8_thryvar,z2_thryvar) = b3(xp3_thryvar,yp3_thryvar,zp2_thryvar))))) or one_1_map({[a3(x,y,wz),b3(x,y,wz)]: x in s, y in t,wz in r | P3(x,y,wz)}). Proof: Suppose_not ==> (not((x8_thryvar in s) & (y8_thryvar in t) & (z2_thryvar in r) & (xp3_thryvar in s) & (yp3_thryvar in t) & (zp2_thryvar in r) & P3(x8_thryvar,y8_thryvar,z2_thryvar) & P3(xp3_thryvar,yp3_thryvar,zp2_thryvar) & (((a3(x8_thryvar,y8_thryvar,z2_thryvar) /= a3(xp3_thryvar,yp3_thryvar,zp2_thryvar)) ¥eq (b3(x8_thryvar,y8_thryvar,z2_thryvar) = b3(xp3_thryvar,yp3_thryvar,zp2_thryvar)))))) & (not one_1_map({[a3(x,y,wz),b3(x,y,wz)]: x in s, y in t,wz in r | P3(x,y,wz)})) -- -- For let $s$ be a counterexample to our assertion. Then the set -- -- (*) ${[[x,[y,wz]],[x2,[y2,z2]]]: x in s, y in t, wz in r, x2 in s, y2 in t, z2 in r | P3(x,y,wz) & P3(x2,y2,z2) & (not((a(x,y) = a(x2,y2)) ¥eq (b(x,y) = b(x2,y2))))}$ -- -- -- cannot be empty, since if it were ${[a3(u,v,w),b3(u,v,w)]: u in s, v in t, w in r | P3(u,v,w)}$ would -- necessarily be single valued, -- in which case there would have to exist elements $x$, $xp$ of $s$, elements $y$, $yp$ of $t$, and -- elements $z$, $zp$ of $w$ for which $((a3(x,y,w) = a3(xp,yp,wp)) ¥eq (b3(x,y,w) = b3(xp,yp,w)))$ and -- $P3(x,y,wz)$, $P3(x2,y2,z2)$ an impossibility given that the set (*) seen above is empty. -- Use_def(one_1_map) ==> Stat1: (not Svm({[a3(u,v,w),b3(u,v,w)]: u in s, v in t, w in r | P3(u,v,w)})) or (not (FORALL x in {[a3(u,v,w),b3(u,v,w)]: u in s,v in t,w in r | P3(u,v,w)}, y in {[a3(up,vp,wp),b3(up,vp,wp)]: up in s,vp in t,wp in r | P3(up,vp,wp)} | (cdr(x) = cdr(y)) ¥imp (x = y))) Suppose ==> Stat2: {[[x,[y,wz]],[x2,[y2,z2]]]: x in s, y in t, wz in r, x2 in s, y2 in t, z2 in r | P3(x,y,wz) & P3(x2,y2,z2) & ((a3(x,y,wz) /= a3(x2,y2,z2)) ¥eq (b3(x,y,wz) = b3(x2,y2,z2)))} = 0 Suppose ==> not Svm({[a3(u,v,w),b3(u,v,w)]: u in s, v in t, w in r | P3(u,v,w)}) APPLY(x5_thryvar:x,y5_thryvar:y,z1_thryvar:z1,xp2_thryvar:xp,yp2_thryvar:yp,zp1_thryvar:zp) Svm_test_3(a3(x,y,wz)->a3(x,y,wz),b3(x,y,wz)->b3(x,y,wz),s->s,t->t,u->r,P3(x,y,wz)->P3(x,y,wz)) ==> ((x in s) & (y in t) & (z1 in r) & (xp in s) & (yp in t) & (zp in r) & P3(x,y,z1) & P3(xp,yp,zp) & (a3(x,y,z1) = a3(xp,yp,zp)) & (b3(x,y,z1) /= b3(xp,yp,zp))) or Svm({[a3(x,y,w),b3(x,y,w)]: x in s, y in t, w in r | P3(x,y,w)}) (x,y,z1,xp,yp,zp)-->Stat2 ==> (a3(x,y,z1) = a3(xp,yp,zp)) ¥eq (b3(x,y,z1) = b3(xp,yp,zp)) & P3(x,y,z1) & P3(xp,yp,zp) ELEM ==> false; Discharge ==> not (FORALL x in {[a3(u,v,w),b3(u,v,w)]: u in s,v in t,w in r | P3(u,v,w)}, y in {[a3(u,v,w),b3(u,v,w)]: u in s,v in t,w in r | P3(u,v,w)} | (cdr(x) = cdr(y)) ¥imp (x = y)) SIMPLF ==> Stat3: not(FORALL u in s, v in t, w in r, up in s, vp in t, wp in r | (P3(u,v,w) & P3(up,vp,wp)) ¥imp ((cdr([a3(u,v,w),b3(u,v,w)]) = cdr([a3(up,vp,wp),b3(up,vp,wp)])) ¥imp ([a3(u,v,w),b3(u,v,w)] = [a3(up,vp,wp),b3(up,vp,wp)]))) (xx,yy,wz,xxp,yyp,wz0)-->Stat3 ==> (xx in s) & (yy in t) & (wz in r) & (xxp in s) & (yyp in t) & (wz0 in r) & P3(xx,yy,wz) & P3(xxp,yyp,wz0) & (cdr([a3(xx,yy,wz),b3(xx,yy,wz)]) = cdr([a3(xxp,yyp,wz0),b3(xxp,yyp,wz0)])) & ([a3(xx,yy,wz),b3(xx,yy,wz)] /= [a3(xxp,yyp,wz0),b3(xxp,yyp,wz0)]) (xx,yy,wz,xxp,yyp,wz0)-->Stat2 ==> (a3(xx,yy,wz) = a3(xxp,yyp,wz0)) ¥eq (b3(xx,yy,wz) = b3(xxp,yyp,wz0)) or (not(P3(xx,yy,wz))) or (not(P3(xxp,yyp,wz0))) ELEM ==> false; Discharge ==> {[[x,[y,wz]],[x2,[y2,z2]]]: x in s, y in t, wz in r, x2 in s, y2 in t, z2 in r | P3(x,y,wz) & P3(x2,y2,z2) & ((a3(x,y,wz) /= a3(x2,y2,z2)) ¥eq (b3(x,y,wz) = b3(x2,y2,z2)))} /= 0 -- -- It therefore follows by the axiom of choice that $xy6_thryvar$, as defined above, is an element of the set (*), -- and thus its subcomponents $x8_thryvar$, $y8_thryvar$, $xp3_thryvar$, $yp3_thryvar$ stand in contradiction -- to the hypotheses of the present theorem. This contradiction proves our assertion. -- ({[[x,[y,wz]],[x2,[y2,z2]]]: x in s, y in t, wz in r, x2 in s, y2 in t, z2 in r | P3(x,y,wz) & P3(x2,y2,z2) & ((a3(x,y,wz) /= a(x2,y2,z2)) ¥eq (b3(x,y,wz) = b3(x2,y2,z2)))})-->T0 ==> arb({[[x,[y,wz]],[x2,[y2,z2]]]: x in s, y in t, wz in r, x2 in s, y2 in t, z2 in r | P3(x,y,wz) & P3(x2,y2,z2) & ((a3(x,y,wz) /= a3(x2,y2,z2)) ¥eq (b3(x,y,wz) = b3(x2,y2,z2)))}) in {[[x,[y,wz]],[x2,[y2,z2]]]: x in s, y in t, wz in r, x2 in s, y2 in t, z2 in r | P3(x,y,wz) & P3(x2,y2,z2) & ((a3(x,y,wz) /= a3(x2,y2,z2)) ¥eq (b3(x,y,wz) = b3(x2,y2,z2)))} Use_def(xyz_thryvar) ==> Stat4: xyz_thryvar in {[[x,[y,wz]],[x2,[y2,z2]]]: x in s, y in t, wz in r, x2 in s, y2 in t, z2 in r | P3(x,y,wz) & P3(x2,y2,z2) & ((a3(x,y,wz) /= a3(x2,y2,z2)) ¥eq (b3(x,y,wz) = b3(x2,y2,z2)))} (x2,y2,z2,xp2,yp2,zp2)-->Stat4 ==> (x2 in s) & (y2 in t) & (z2 in r) & (xp2 in s) & (yp2 in t) & (zp2 in r) & P3(x2,y2,z2) & P3(xp2,yp2,zp2) & ((a3(x2,y2,z2) /= a3(xp2,yp2,zp2)) ¥eq (b3(x2,y2,z2) = b3(xp2,yp2,zp2))) & (xyz_thryvar = [[x2,[y2,z2]],[xp2,[yp2,zp2]]]) (x2,y2,z2,xp2,yp2,zp2)-->Stat2 ==> (a3(x2,y2,z2) = a3(xp2,yp2,zp2)) ¥eq (b3(x2,y2,z2) = b3(xp2,yp2,zp2)) ELEM ==> (car(car([[x2,[y2,z2]],[xp2,[yp2,zp2]]])) = x2) & (car(cdr(car([[x2,[y2,z2]],[xp2,[yp2,zp2]]]))) = y2) & (cdr(cdr(car([[x2,[y2,z2]],[xp2,[yp2,zp2]]]))) = z2) ELEM ==> (car(cdr([[x2,[y2,z2]],[xp2,[yp2,zp2]]])) = xp2) & (car(cdr(cdr([[x2,[y2,z2]],[xp2,[yp2,zp2]]]))) = yp2) & (cdr(cdr(cdr([[x2,[y2,z2]],[xp2,[yp2,zp2]]]))) = zp2) EQUAL ==> (car(car(xyz_thryvar)) = x2) & (car(cdr(car(xyz_thryvar))) = y2) & (cdr(cdr(car(xyz_thryvar))) = z2) EQUAL ==> (car(cdr(xyz_thryvar)) = xp2) & (car(cdr(cdr(xyz_thryvar))) = yp2) & (cdr(cdr(cdr(xyz_thryvar))) = zp2) Use_def(x8_thryvar) ==> x8_thryvar = car(car(xyz_thryvar)) Use_def(y8_thryvar) ==> y8_thryvar = car(cdr(car(xyz_thryvar))) Use_def(z2_thryvar) ==> z2_thryvar = cdr(cdr(car(xyz_thryvar))) Use_def(xp3_thryvar) ==> xp3_thryvar = car(cdr(xyz_thryvar)) Use_def(yp3_thryvar) ==> yp3_thryvar = car(cdr(cdr(xyz_thryvar))) Use_def(zp2_thryvar) ==> zp2_thryvar = cdr(cdr(cdr(xyz_thryvar))) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The utility theory just developed can be summarized as follows. --DISPLAY one_1_test_3 -- --THEORY one_1_test_3(a3(x,y,wz),b3(x,y,wz),s,t,r,P3(x,y,wz)) --==>(x8_thryvar,y8_thryvar,z2_thryvar,xp3_thryvar,yp3_thryvar,zp2_thryvar) --((x8_thryvar in s) & (y8_thryvar in t) & (z2_thryvar in u) & -- (xp3_thryvar in s) & (yp3_thryvar in t) & (zp2_thryvar in u) & -- P3(x8_thryvar,y8_thryvar,z2_thryvar) & P3(xp3_thryvar,yp3_thryvar,zp2_thryvar) & -- (not((a3(x8_thryvar,y8_thryvar,z2_thryvar) = a3(xp3_thryvar,yp3_thryvar,zp2_thryvar)) ¥eq (b3(x8_thryvar,y8_thryvar,z2_thryvar) = b3(xp3_thryvar,yp3_thryvar,zp2_thryvar))))) or -- one_1_map({[a3(x,y,wz),b3(x,y,wz)]: x in s, y in t,wz in u}) --END one_1_test_3; -- -- -- ************************************************************************************************ -- Section 4: The ordinal enumerability theorem -- ************************************************************************************************ -- -- Now we begin more serious development of the theory of ordinals, along von Neumann's line. -- Our first theorem uses induction to show that if one ordinal $t$ is included in another -- ordinal $s$ but not equal to $s$, then $t$ must be a member of $s$, and in fact must be -- the smallest element of $s - t$. -- Theorem 27: [Ordinal comparison lemma] (Ord(S) & Ord(T) & (T ¥incin S)) ¥imp ((T = S) or (T = arb(S - T))). Proof: Suppose_not(s,t) ==> Ord(s) & Ord(t) & (t ¥incin s) & (t /= s) & (t /= arb(s - t)) -- -- For if our assertion is false, $s$ must have a proper subset $t$, -- in which case the axiom of choice tells us that $s - t$ has a minimal element $arb(s - t)$ -- disjoint from $s - t$. Plainly $arb(s - t)$ is also a member of the superset $s$ of $s - t$. -- ELEM ==> (arb(s - t) in s) & (arb(s - t) * (s - t) = 0) Use_def(Ord) ==> Stat1: (FORALL x in s| x ¥incin s) & Stat2: (FORALL x in s, y in s | (x in y or y in x or x = y)) -- -- But then, by definition of ordinal, $arb(s - t)$ must be a subset of $s * t$, -- since it is disjoint from $s - t$. Therefore $arb(s - t)$ cannot include $t$, otherwise the initial -- assumption $t /= arb(s - t)$ would be contradicted. -- (arb(s - t))-->Stat1 ==> arb(s - t) ¥incin s ELEM ==> (arb(s - t) ¥incin s * t) & Stat3: (not(arb(s - t) incs t)) -- -- Since $arb(s - t)$ fails to include $t$, there must be some $b$ in $t$ but not in $arb(s - t)$. -- By the definition of ordinals, this implies that $arb(s - t) = b or arb(s - t) in b$. -- (b)-->Stat3 ==> (b in t) & (not (b in arb(s - t))) (arb(s - t),b)-->Stat2 ==> (arb(s - t) in b or arb(s - t) = b) Use_def(Ord) ==> Stat4: (FORALL x in t| x ¥incin t) & (FORALL x in t, y in t | (x in y or y in x or x = y)) -- -- Using the definition of ordinals once more, this time for $t$, we see that $b$ must be a subset of $t$, -- which rules out both $arb(s - t) in b$ and $arb(s - t) = b$, because either of these would yield -- $arb(s - t) in t$ which is impossible. We have contradicted our original assumption, and so proved our theorem. -- (b)-->Stat4 ==> b ¥incin t Discharge ==> QED -- -- Next we show that the intersection of any two ordinals is an ordinal. -- (Indeed, as Theorem 29 shows, this intersection must be the smaller of the two ordinals.) -- Theorem 28: [Ordinal intersection] (Ord(S) & Ord(T)) ¥imp Ord(S * T). Proof: Suppose_not(s,t) ==> Ord(s) & Ord(t) & (not Ord(s * t)) -- -- For suppose the contrary. Then by definition of ordinals there must exist $a$, $b$, $c$ -- such that $a$ is a member of $s * t$ but not included in it, or $b$ and $c$ are both -- members or $s * t$, but are unrelated by membership. -- Use_def(Ord) ==> Stat1: not(((FORALL x in s * t | x ¥incin s * t)) & (FORALL x in s * t, y in s * t | (x in y or y in x or x = y))) (a,b,c)-->Stat1 ==> Stat2: ((a in s * t) & (not(a ¥incin s * t))) or ((b in s * t) & (c in s * t) & (not(b in c or c in b or c = b))) -- -- However, since $s$ and $t$ are both ordinals the first case is clearly impossible, -- so we need only consider the second case. -- Suppose ==> Stat3: (a in s * t) & (not(a ¥incin s * t)) Use_def(Ord) ==> Stat4: (FORALL x in s | x ¥incin s) & Stat5: (FORALL x in s, y in s | (x in y or y in x or x = y)) Use_def(Ord) ==> Stat6: (FORALL x in t | x ¥incin t) a-->Stat4 ==> Stat7: (a in s) ¥imp (a ¥incin s) a-->Stat6 ==> Stat8: (a in t) ¥imp (a ¥incin t) (Stat3,Stat7,Stat8*)Discharge ==> Stat9: (b in s) & (c in s) & (not(b in c or c in b or c = b)) -- -- But using the definition of ordinal once more we see that this case is impossible also. -- (b,c)-->Stat5(Stat9,Stat9) ==> ((b in s) & (c in s)) ¥imp (b in c or c in b or c = b) (Stat9)Discharge ==> QED -- -- Now we prove the related but slightly less elementary result that -- one of any pair of ordinals must include the other. -- Theorem 29: [Second order comparison lemma] (Ord(S) & Ord(T)) ¥imp ((S ¥incin T) or (T ¥incin S)). Proof: Suppose_not(s,t) ==> Stat1: Ord(s) & Ord(t) & (not(s ¥incin t)) & (not(t ¥incin s)) -- -- For if not, neither of these ordinals is included in the other, so neither can equal -- the intersection of the two, which is an ordinal by Theorem 28. -- (s,t)-->T28 ==> Ord(s * t) -- -- It now follows, using Theorem 27 twice, that s * t is equal to both $arb(s - (s * t))$ and $arb(t - (s * t))$, -- and so, since neither of these sets is empty, is a member of both -- $s - (s * t)$ and $t - (s * t)$, which is impossible since the intersection of these two sets is empty. -- This contradiction proves our theorem. -- (s,s*t)-->T27(Stat1*) ==> s * t = arb(s - (s * t)) (t,s*t)-->T27(Stat1*) ==> s * t = arb(t - (s * t)) ELEM ==> s - (s * t) /= 0 ELEM ==> t - (s * t) /= 0 (s - (s * t))-->T0 ==> (((s - (s * t)) = 0) & (arb(s - (s * t)) = 0)) or ((arb(s - (s * t)) in s - (s * t)) & (arb(s - (s * t)) * (s - (s * t)) = 0)) ELEM ==> s * t in s (t - (s * t))-->T0 ==> (((t - (s * t)) = 0) & (arb(t - (s * t)) = 0)) or ((arb(t - (s * t)) in t - (s * t)) & (arb(t - (s * t)) * (t - (s * t)) = 0)) Discharge ==> QED -- -- The following corollary to the preceding theorem asserts that the union of two ordinals is an ordinal -- and that the intersection of two ordinals is an ordinal. -- Theorem 30: [Ordinal maximum and minimum] (Ord(S) & Ord(T)) ¥imp (Ord(S + T) & Ord(S * T)). Proof: Suppose_not(s,t) ==> Ord(s) & Ord(t) & (not (Ord(s + t) & Ord(s * t))) (s,t)-->T29 ==> (s ¥incin t) or (t ¥incin s) Suppose ==> s ¥incin t ELEM ==> (s + t = t) & (s * t = s) EQUAL ==> false; Discharge ==> (s + t = s) & (s * t = t) EQUAL ==> false; Discharge ==> QED -- -- Next we show that the family of all ordinals (we will see shortly that this is not a set) -- is linearly ordered by membership. -- Theorem 31: [Ordinal membership comparison] (Ord(S) & Ord(T)) ¥imp ((S in T) or (T in S) or (S = T)). Proof: Suppose_not(s,t) ==> Ord(s) & Ord(t) & (not(s in t or t in s or s = t)) -- -- For if we suppose the contrary, and note that by Theorem 29 one must include the other -- but not be equal to it, it follows (by the axiom of choice) -- that one must be a member of the other, a contradiction which proves our theorem. -- (s,t)-->T29 ==> Stat1: (s ¥incin t) or (t ¥incin s) (s,t)-->T27 ==> (t ¥incin s) ¥imp (t = arb(s - t)) (t,s)-->T27 ==> (s ¥incin t) ¥imp (s = arb(t - s)) Discharge ==> QED -- -- The successor of an ordinal has a simple and very general definition: -- Def 11: [successor (defined for any set, including ordinals and integers)] next(s) := s + {s} -- -- It is easy to show that this successor is an ordinal. -- Theorem 32: [Successor ordinal] Ord(S) ¥imp Ord(next(S)). Proof: Suppose_not(s) ==> AUTO -- -- For if we suppose the contrary, and use the definition of ordinals, -- we see that there must exist $a$, $b$, $c$ -- such that $a$ is a member of $s + {s}$ but not included in it, or $b$ and $c$ are both -- members of $s + {s}$, but are unrelated by membership. -- Use_def(next) ==> Ord(s) & (not(Ord(s + {s}))) Use_def(Ord) ==> Stat1: (not((FORALL x in (s + {s}) | x ¥incin (s + {s})) & (FORALL x in (s + {s}), y in (s + {s}) | (x in y or y in x or x = y)))) (a,b,c)-->Stat1 ==> AUTO -- (a,b,c)-->Stat1 ==> ((a in s + {s}) & (not(a ¥incin (s + {s})))) or -- ((b in s + {s}) & (c in s + {s}) & (not(b in c or c in b or b = c))) -- -- Since the cases $a = s$, $b = s$, and $c = s$ are all impossible, -- we must either have $a in s$ or $b in s$ and $c in s$. -- ELEM ==> ((a in s) & (not(a ¥incin s))) or ((b in s) & (c in s) & (not(b in c or c in b or b = c))) -- -- But both of these cases are impossible since $s$ is an ordinal, a contradiction proving our theorem. -- Use_def(Ord) ==> Stat2: (FORALL x in s | x ¥incin s) & (FORALL x in s, y in s | (x in y or y in x or x = y)) (a,b,c)-->Stat2 ==> AUTO Discharge ==> QED -- -- Sometimes it is useful to have the preceding theorem in the following more direct form. -- Theorem 33: [Successor ordinal 2] Ord(S) ¥imp Ord(S + {S}). Proof: Suppose_not(s) ==> AUTO Use_def(next) ==> Ord(s) & (not(Ord(next(s)))) s-->T32 ==> false; Discharge ==> QED -- -- Our next theorem shows that for ordinals inclusion is equivalent to the disjunction of identity and membership. -- Theorem 34: [Third ordinal comparison lemma] (Ord(S) & Ord(T)) ¥imp ((T ¥incin S) ¥eq ((T in S) or (T = S))). Proof: Suppose_not(s,t) ==> AUTO -- -- For in the contrary case there must exist two ordinals $s$ and $t$ such that either -- $t$ is a member but not a subset of $s$, or $t$ is a subset of $s$ but neither a member of, or equal to, $s$; -- ELEM ==> (((not(t ¥incin s)) & (t in s)) or ((t ¥incin s) & (not(t in s or t = s)))) -- -- but the first case is ruled out by definition of ordinal and the second case by Theorem 27, -- proving our theorem. -- (s,t)-->T13 ==> (t ¥incin s) & (t notin s) & (t /= s) (s,t)-->T27 ==> t = arb(s - t) Discharge ==> QED -- -- It is sometimes convenient to use this theorem in the following modified form. -- Theorem 35: [Ordinal membership and comparison] (Ord(S) & Ord(T)) ¥imp ((T notin S) ¥eq (S ¥incin T)). Proof: Suppose_not(s,t) ==> Ord(s) & Ord(t) & (t notin s) & (not(s ¥incin t)) -- -- Since $(t in s) & (s ¥incin t)$ is impossible, a counterexample to our assertion must satisfy -- $(t notin s) & (not(s ¥incin t))$. But by Theorem 31 we then have $s ¥incin t$, -- a contradiction which proves the present corollary. -- (s,t)-->T31 ==> (s in t) or (s = t) (t,s)-->T34 ==> false; Discharge ==> QED -- -- Our next lemma tells us that for ordinals membership in the successor of an ordinal s is equivalent to inclusion in s. -- Theorem 36: [Membership in the successor of an ordinal $s$] Ord(S) ¥imp ((T in next(S)) ¥eq ((T ¥incin S) & Ord(T))). Proof: Suppose_not(s,t) ==> AUTO Use_def(next) ==> Stat1: Ord(s) & (not((t in (s + {s})) ¥eq ((t ¥incin s) & Ord(t)))) Suppose ==> Stat2: ((t in s) or (t = s)) & (not((t ¥incin s) & Ord(t))) Suppose ==> Stat3: t = s EQUAL(Stat1,Stat3) ==> Stat4: false; (Stat4)Discharge ==> Stat5: t in s (s,t)-->T12(Stat1,Stat5) ==> Stat6: Ord(t) (s,t)-->T34(Stat1,Stat2,Stat5,Stat6) ==> Stat7: false; (Stat7)Discharge ==> Stat8: not(((t in s) or (t = s)) & (not((t ¥incin s) & Ord(t)))) (s,t)-->T34(Stat1,Stat8) ==> Stat9: false; (Stat9)Discharge ==> QED -- Theorem 37: [Membership of $s$ in an ordinal $t$ implies inclusion of $next(s)$ in $t$] (Ord(T) & (S in T)) ¥imp (next(S) ¥incin T). Proof+: Suppose_not(m,i) ==> Ord(m) & (i in m) & Stat1: (not(next(i) ¥incin m)) j-->Stat1 ==> (j in next(i)) & (j notin m) Use_def(next) ==> j in i (j,m)-->T34 ==> not(m ¥incin j) (m,j)-->T35 ==> false; Discharge ==> QED -- -- Now we start to prepare for proof of the basic ordinal enumerability theorem, -- Theorem 46 below. Our first step is to prove that both the collection of all -- sets and the collection of all ordinals are 'too large' to be sets. -- The following theorem gives the first of these results. -- Theorem 38: [The class of all sets is not a set] not(EXISTS x | (FORALL y | y in x)). Proof: Suppose_not ==> Stat1: (EXISTS x | (FORALL y | y in x)) u-->Stat1 ==> Stat2: (FORALL y | (y in u)) -- -- For, in the contrary case, consider the set $u$ of all sets. This $u$ would be -- a member of itself, whereas the axiom of choice forbids membership loops. -- A derivation of this fact from 'first principles' would be: -- \nextline -- $({u})$-->T0 ==> $(arb({u}) in {u}) & (arb({u}) * {u}) = 0$ \nextline -- ELEM ==> $(arb({u}) = u) & (u notin u)$ \nextline -- $u$-->Stat2 ==> $false$; Discharge ==> QED \nextline -- \nextline -- In our inference environment, the following abridged proof suffices: -- u-->Stat2 ==> u in u Discharge ==> QED -- Theorem 39: [There is no antinomic Russell's set] not(EXISTS x | (FORALL y | (y in x) ¥eq (y notin y))). Proof: Suppose_not ==> Stat1: (EXISTS x | (FORALL y | (y in x) ¥eq (y notin y))) a-->Stat1 ==> Stat2: (FORALL y | (y in a) ¥eq (y notin y)) -- -- For in the contrary case consider the set $a$ of all sets which are not members of themselves. -- Then $a$ cannot be a member of itself, or fail to be a member of itself. -- This impossibility proves our theorem. -- a-->Stat2 ==> (a in a) ¥eq (a notin a) Discharge ==> QED -- -- Next we show that the class of ordinals is not a set -- Theorem 40: [The class of ordinals is not a set] not (FORALL x | ((x in OS) ¥eq Ord(x))). Proof+: Suppose_not(o) ==> Stat1: AUTO -- -- For suppose the contrary, so that there is a set $o$ consisting of all ordinals. -- But we can show that $o$ must be an ordinal. Indeed, if it were not, -- then by the definition of ordinals there would exist $a$, $b$, $c$ -- such that either $a$ was a member but not a subset of $o$, -- or $b$ and $c$ are two members of $o$ not related by membership. -- Suppose ==> not Ord(o) Use_def(Ord) ==> Stat2: not((FORALL x in o | x ¥incin o) & (FORALL x in o, y in o | (x in y) or (y in x) or (x = y))) (a,b,c)-->Stat2 ==> ((a in o) & (not(a ¥incin o))) or ((b in o) & (c in o) & (not((b in c) or (c in b) or (b = c)))) -- -- In the second of these cases $b$ and $c$ are both plainly ordinals. -- so that this case is ruled out by Theorem 31. Hence only the first case need be considered. -- Suppose ==> (b in o) & (c in o) & (not((b in c) or (c in b) or (b = c))) b-->Stat1 ==> Ord(b) c-->Stat1 ==> Ord(c) (b,c)-->T31 ==> false; Discharge ==> Stat3: (a in o) & (not(a ¥incin o)) -- -- In this case the set $a$, which must plainly be an ordinal, -- must have a member $d$ which is not in $o$, and hence not an ordinal -- by Stat1 above, which is impossible, so our theorem is proved. -- a-->Stat1 ==> Ord(a) (d)-->Stat3 ==> (d in a) & (d notin o) d-->Stat1 ==> false; Discharge ==> Ord(o) o-->Stat1 ==> false; Discharge ==> QED -- -- We now give the following transfinite recursive definition, which introduces the -- function that will be shown to put every set in 1-1 correspondence with some ordinal. -- Def 9: [The enumeration of a set] enum(X,S) := if S ¥incin {enum(y,S): y in X} then S else arb(S - {enum(y,S): y in X}) end if -- -- To begin our work toward the culminating Theorem 46 seen below, we first show -- that if a set $s$ is a member of $b := {enum(y,s): y in x}$ for some ordinal $x$, -- so is every one of the members of $s$. -- Theorem 41: [Enumerability principle] ((Ord(X) & S in {enum(y,S): y in X})) ¥imp (S ¥incin {enum(y,S): y in X}). Proof: Suppose_not(x,s) ==> Ord(x) & Stat1: (s in {enum(y,s): y in x}) & (not(s ¥incin {enum(u,s): u in x})) -- -- For suppose not. Then there is a $v$ in $x$ such that $s = enum(v,s)$, but $s$ cannot be a subset -- of ${enum(u,s): u in v}$; so by definition of $enum$, -- $enum(v,s) = arb(s - {enum(z,s): z in v})$, which is impossible, since it wold imply $s in s$. -- v-->Stat1 ==> (s = enum(v,s)) & (v in x) (x,v)-->T13 ==> v ¥incin x Set_monot ==> {enum(u,s): u in x} incs {enum(u,s): u in v} ELEM ==> not(s ¥incin {enum(z,s): z in v}) Use_def(enum) ==> enum(v,s) = if s ¥incin {enum(z,s): z in v} then s else arb(s - {enum(z,s): z in v}) end if ELEM ==> enum(v,s) = arb(s - {enum(z,s): z in v}) Discharge ==> QED -- -- It is also easy to show that for any $x$, $enum(x,s)$ is either $s$ or a member of $s$. -- Theorem 42: [Enumeration membership lemma] (enum(X,S) = S) or (enum(X,S) in S). Proof: Suppose_not(x,s) ==> (enum(x,s) /= s) & (enum(x,s) notin s) -- -- For in the contrary case, $s ¥incin {enum(y,s): y in x}$ must be false, so $enum(x,s) in s$ -- must be true by definition of $enum$ and by the axiom of choice. -- Use_def(enum) ==> enum(x,s) = if s ¥incin {enum(y,s): y in x} then s else arb(s - {enum(y,s): y in x}) end if ELEM ==> s - {enum(y,s): y in x} /= 0 ELEM ==> enum(x,s) = arb(s - {enum(y,s): y in x}) (s - {enum(y,s): y in x})-->T0 ==> arb(s - {enum(y,s): y in x}) in s - {enum(y,s): y in x} Discharge ==> QED -- -- Next we show that if $enum(x,s)$ equals $s$ for any $x$, it also equals $s$ for any larger $y$: -- Theorem 43: [Enumeration inclusion lemma] ((enum(X,S) = S) & (Y incs X)) ¥imp (enum(Y,S) = S). Proof: Suppose_not(x,s,w) ==> Stat1: (enum(x,s) = s) & (w incs x) & (enum(w,s) /= s) -- -- For in the contrary case, we must have $s ¥incin {enum(u,s): u in x}$ by definition of enum -- and the axiom of choice. -- Use_def(enum) ==> Stat2: enum(x,s) = if s ¥incin {enum(u,s): u in x} then s else arb(s - {enum(u,s): u in x}) end if Suppose ==> not (s ¥incin {enum(u,s): u in x}) ELEM ==> Stat3: s - {enum(y,s): y in x} /= 0 (s - {enum(u,s): u in x})-->T0 ==> Stat4: arb(s - {enum(u): u in x}) in s - {enum(u,s): u in x} Discharge ==> AUTO -- -- Thus $s ¥incin {enum(u,s): u in w}$ by set monotonicity, and so $enum(w,s) = s$, -- a contradiction which proves our theorem. -- Set_monot ==> {enum(u,s): u in x} ¥incin {enum(u,s): u in w} ELEM ==> s ¥incin {enum(u,s): u in w} Use_def(enum) ==> enum(w,s) = if s ¥incin {enum(u,s): u in w} then s else arb(s - {enum(u,s): u in w}) end if Discharge ==> QED -- -- The following result tells us that, if we confine ourselves to the range of ordinals $x$ for which -- $s notin {enum(u,s): u in x}$, the map $x$->$enum(x,s)$ is one-to-one: -- Theorem 44: [The enumeration of a set is 1-1] (Ord(X) & Ord(W) & (X /= W)) ¥imp ((S in {enum(u,S): u in X}) or (S in {enum(u,S): u in W}) or (enum(X,S) /= enum(W,S))). Proof: Suppose_not(x,wz,s) ==> Ord(x) & Ord(wz) & (x /= wz) & Stat1: (s notin {enum(u,s): u in x}) & Stat2: (s notin {enum(u,s): u in wz}) & (enum(x,s) = enum(wz,s)) -- -- For if not, there are two distinct ordinals $x$ and $wz$ in the stated range -- such that $enum(x,s) = enum(wz,s)$. Theorem 31 tells us that -- one of the ordinals $x$ and $wz$ must be a member of the other. First suppose that $wz in x$, -- so that, by Stat1, $enum(wz,s) /= s$, and therefore $enum(x,s) /= s$. -- (x,wz)-->T31 ==> (x in wz) or (wz in x) Suppose ==> wz in x wz-->Stat1 ==> enum(wz,s) /= s -- -- Then it follows from the definition of $enum$ that $s$ cannot be a member of ${enum(u,s): u in x}$, -- so that $enum(x,s) = arb(s - {enum(y,s): y in x})$, in which case the axiom of choice tells us that -- $enum(x,s)$ is in $s - {enum(y,s): y in x}$. But then, since $enum(wz,s)$ is clearly -- a member of ${enum(y,s): y in x}$, $enum(x,s)$ and $enum(wz,s)$ must be different, contrary to assumption. -- Use_def(enum) ==> enum(x,s) = if s ¥incin {enum(u,s): u in x} then s else arb(s - {enum(y,s): y in x}) end if ELEM ==> (not(s ¥incin {enum(u,s): u in x})) & (enum(x,s) = arb(s - {enum(y,s): y in x})) (s - {enum(u,s): u in x})-->T0 ==> arb(s - {enum(u,s): u in x}) in s - {enum(u,s): u in x} Suppose ==> Stat3: enum(wz,s) notin {enum(y,s): y in x} wz-->Stat3 ==> false; Discharge ==> enum(wz,s) in {enum(u,s): u in x} Discharge ==> x in wz -- -- This leaves us with the case $x in wz$ to consider: this can be treated symmetrically, -- and another contradiction derived, thereby proving the present theorem. -- x-->Stat2 ==> enum(x,s) /= s Use_def(enum) ==> enum(wz,s) = if s ¥incin {enum(u,s): u in wz} then s else arb(s - {enum(y,s): y in wz}) end if ELEM ==> (not(s ¥incin {enum(u,s): u in wz})) & (enum(wz,s) = arb(s - {enum(y,s): y in wz})) (s - {enum(u,s): u in wz})-->T0 ==> arb(s - {enum(u,s): u in wz}) in s - {enum(u,s): u in wz} Suppose ==> Stat4: enum(x,s) notin {enum(y,s): y in wz} x-->Stat4 ==> false; Discharge ==> enum(x,s) in {enum(u,s): u in wz} Discharge ==> QED -- -- Next we prove that, for each set $s$, there must exist some ordinal $x$ for which $s$ -- belongs to ${enum(y,s): y in x}$. This is done by showing that in the contrary case -- the collection of all ordinals would be a set, which we have already shown to be false. -- Theorem 45: [Enumeration lemma] (EXISTS x | (Ord(x) & (S in {enum(y,S): y in x}))). Proof: Suppose_not(s) ==> Stat1: not(EXISTS x | (Ord(x) & (s in {enum(u,S): u in x}))) -- -- We proceed by contradiction. If our theorem is false, there must exist a set $s$ such that -- $s notin {enum(y,s): y in x}$ for every ordinal $x$. In this case, Theorem 44 tells us that -- $enum(x,s) /= enum(y,s)$ for every distinct pair $x,y$ of ordinals. -- Suppose ==> Stat2: not((FORALL x, y | ((Ord(x) & Ord(y)) ¥imp (((enum(x,s) in s) & (enum(y,s) in s) & (x /= y)) ¥imp (enum(x,s) /= enum(y,s)))))) (x,y)-->Stat2 ==> Ord(x) & Ord(y) & (enum(x,s) in s) & (enum(y,s) in s) & (x /= y) & (enum(x,s) = enum(y,s)) x-->Stat1 ==> s notin {enum(u,s): u in x} y-->Stat1 ==> s notin {enum(u,s): u in y} (x,y,s)-->T44 ==> false Discharge ==> Stat3: (FORALL x, y | ((Ord(x) & Ord(y)) ¥imp (((enum(x,s) in s) & (enum(y,s) in s) & (x /= y)) ¥imp (enum(x,s) /= enum(y,s))))) -- -- We shall now show that $s$ is not a subset of ${enum(y,s): y in o1}$ for any ordinal $o1$. -- For if $s ¥incin {enum(y,s): y in o1}$, then by definition of $enum$, $enum(o1,s) = s$, and hence -- s in ${enum(x,s): s in next(o1)}$, contradicting Stat4 above. -- It follows by a second use of the definition of $enum$ that $enum(o1,s) = arb(s - {{enum(y,s): y in o1}})$, -- so that $enum(o1,s) in s$ for every ordinal $o1$. -- Suppose ==> Stat5: not(FORALL o1 | Ord(o1) ¥imp (not(s ¥incin {enum(y,s): y in o1}))) o2-->Stat5 ==> Ord(o2) & (s ¥incin {enum(y,s): y in o2}) Use_def(enum) ==> enum(o2,s) = if s ¥incin {enum(y,s): y in o2} then s else arb(s - {enum(y,s): y in o2}) end if ELEM ==> enum(o2,s) = s (next(o2))-->Stat1 ==> not(Ord(next(o2)) & (s in {enum(u,S): u in next(o2)})) o2-->T32 ==> Stat6: s notin {enum(u,S): u in next(o2)} o2-->Stat6 ==> o2 notin next(o2) Use_def(next) ==> false; Discharge ==> Stat7: (FORALL o1 | Ord(o1) ¥imp (not(s ¥incin {enum(y,s): y in o1}))) Suppose ==> Stat8: not(FORALL o1 | Ord(o1) ¥imp (enum(o1,s) in s)) o3-->Stat8 ==> Ord(o3) & (not(enum(o3,s) in s)) o3-->Stat7 ==> not(s ¥incin {enum(y,s): y in o3}) Use_def(enum) ==> enum(o3,s) = if s ¥incin {enum(y,s): y in o3} then s else arb(s - {enum(y,s): y in o3}) end if ELEM ==> enum(o3,s) = arb(s - {enum(y,s): y in o3}) (s - {enum(y,s): y in o3})-->T0 ==> false Discharge ==> Stat9: (FORALL o1 | Ord(o1) ¥imp (enum(o1,s) in s)) -- -- Now consider the set $t$ of all $x in s$ having the form $enum(o,s)$ for some ordinal $o$, so that -- for each $x in t$ there is an ordinal $o$ such that $x = enum(o,s)$. -- Loc_def ==> t = {x in s | (EXISTS o | Ord(o) & (enum(o,s) = x))} Suppose ==> Stat10: not (FORALL x | ((x in t) ¥imp (EXISTS o | (Ord(o) & (enum(o,s) = x))))) a-->Stat10 ==> (a in t) & (not(EXISTS o | (Ord(o) & (enum(o,s) = a)))) ELEM ==> Stat11: a in {x in s | (EXISTS o | Ord(o) & (enum(o,s) = x))} ()-->Stat11 ==> false; Discharge ==> Stat12: (FORALL x | ((x in t) ¥imp (EXISTS o | Ord(o) & (enum(o,s) = x)))) Suppose ==> Stat13: not(FORALL x | (EXISTS o | ((x in t) ¥imp (Ord(o) & (enum(o,s) = x))))) xa-->Stat13 ==> Stat14: not(EXISTS o | ((xa in t) ¥imp (Ord(o) & (enum(o,s) = xa)))) xa-->Stat12 ==> Stat15: (xa in t) ¥imp (EXISTS o | Ord(o) & (enum(o,s) = xa)) oa-->Stat14 ==> not((xa in t) ¥imp (Ord(oa) & (enum(oa,s) = xa))) (Stat15)ELEM ==> (xa in t) & Stat16: (EXISTS o | Ord(o) & (enum(o,s) = xa)) ob-->Stat16 ==> Ord(ob) & (enum(ob,s) = xa) ob-->Stat14 ==> false; Discharge ==> Stat17: (FORALL x | (EXISTS o | ((x in t) ¥imp (Ord(o) & (enum(o,s) = x))))) -- -- Skolemize this last statement, rewriting it in the following form: -- APPLY(v1_thryvar:ord_for) Skolem() ==> Stat18: (FORALL x | ((x in t) ¥imp (Ord(ord_for(x)) & (enum(ord_for(x),s) = x)))) -- -- We will show that every ordinal belongs to the set ${ord_for(x): x in t}$. For suppose the contrary, -- and consider an ordinal $o$ not in this set, which then plainly differs from $ord_for(enum(o,s))$; -- Suppose ==> Stat19: not(FORALL o in OM |(Ord(o) ¥imp (o in {ord_for(x): x in t}))) o-->Stat19 ==> Ord(o) & Stat20: (o notin {ord_for(x): x in t}) o-->Stat3 ==> not (EXISTS y | (not ((Ord(o) & Ord(y)) ¥imp (((((enum(o,s) in s) & (enum(y,s) in s)) & (o /= y)) ¥imp ((enum(o,s) /= enum(y,s)))))))) o-->Stat9 ==> Stat21: enum(o,s) in s Suppose ==> enum(o,s) notin t ELEM ==> Stat22: enum(o,s) notin {x in s | (EXISTS oo | Ord(oo) & (enum(oo,s) = x))} ()-->Stat22 ==> Stat23: not(EXISTS oo | Ord(oo) & (enum(oo,s) = enum(o,s))) o-->Stat23 ==> not (Ord(o) & (enum(o,s) = enum(o,s))) Discharge ==> enum(o,s) in t (enum(o,s))-->Stat20 ==> o /= ord_for(enum(o,s)) -- -- by definition of the set $t$, $enum(o,s)$ must belong to it, and hence to $s$. -- Suppose ==> enum(o,s) notin t ELEM ==> Stat24: enum(o,s) notin {x in s | (EXISTS o | (Ord(o) & (enum(o,s) = x)))} (enum(o,s))-->Stat24 ==> Stat25: not((enum(o,s) in s) & (EXISTS oo | (Ord(oo) & (enum(oo,s) = enum(o,s))))) (Stat21,Stat25*)ELEM ==> Stat26: not((EXISTS oo | (Ord(oo) & (enum(oo,s) = enum(o,s))))) o-->Stat26 ==> false; Discharge ==> enum(o,s) in t ELEM ==> Stat27: enum(o,s) in {x in s | (EXISTS o | Ord(o) & (enum(o,s) = x))} ()-->Stat27 ==> enum(o,s) in s -- -- Since the definition of $ord_for$ implies the following formula, -- the fact that $enum$ is one-to-one on ordinals (Stat3) -- implies that $ord_for(enum(o,s)) = o$. -- (enum(o,s))-->Stat18 ==> Ord(ord_for(enum(o,s))) & (enum(ord_for(enum(o,s)),s) = enum(o,s)) (ord_for(enum(o,s)),o)-->Stat3 ==> ord_for(enum(o,s)) = o -- -- This contradiction shows that every ordinal belongs to the set ${ord_for(x): x in t}$, -- contradicting the fact, proved as Theorem 40, that there can be no set to which all -- ordinals belong. This final contradiction proves the present theorem. -- Discharge ==> Stat28: (FORALL o in OM | (Ord(o) ¥imp (o in {ord_for(u): u in t}))) Suppose ==> Stat29: not(FORALL o | (Ord(o) ¥eq (o in {ord_for(x): x in t}))) os-->Stat29 ==> not(Ord(os) ¥eq (os in {ord_for(x): x in t})) os-->Stat28 ==> Stat30: (os in {ord_for(x): x in t}) & (not Ord(os)) xx-->Stat30 ==> (xx in t) & (os = ord_for(xx)) xx-->Stat18 ==> Ord(ord_for(xx)) EQUAL ==> false; Discharge ==> (FORALL o | (Ord(o) ¥eq (o in {ord_for(u): u in t}))) ({ord_for(x): x in t})-->T40 ==> false; Discharge ==> QED -- -- We are now in position to prove the key fact that the function $enum(x,s)$ puts any -- set $s$ in one-to-one correspondence with an ordinal. -- The following theorem states this result formally. -- Theorem 46: [Main enumeration theorem] (EXISTS x | Ord(x) & (S = {enum(y,S): y in x}) & (FORALL y in x, z0 in x | ((y /= z0) ¥imp (enum(y,S) /= enum(z0,S))))). Proof+: Suppose_not(s) ==> Stat1: (not(EXISTS x | Ord(x) & (s = {enum(y,s): y in x}) & (FORALL y in x, z0 in x | ((y /= z0) ¥imp ((enum(y,s) /= enum(z0,s))))))) -- -- We proceed by contradiction. Suppose that our theorem is false, so that no ordinal having the properties -- considered in the theorem exists. By Theorem 45, there exists an ordinal $x$ such that $s$ is in ${enum(y,s): y in x}$, -- and hence an ordinal $y$ such that $s = enum(y,s)$. -- (s)-->T45 ==> Stat2: (EXISTS x | (Ord(x) & (s in {enum(y,s): y in x}))) x-->Stat2 ==> Ord(x) & Stat3: (s in {enum(y,s): y in x}) w-->Stat3 ==> (s = enum(w,s)) & (w in x) -- -- By definition of $enum$, $enum(w,s)$ is a member of $s$ unless $s ¥incin {enum(u,s): u in w}$ is true; -- since $s = {enum(u,s): u in w}$ this is impossible, so we must have $s ¥incin {enum(u,s): u in w}$. -- Use_def(enum) ==> Stat4: enum(w,s) = if s ¥incin {enum(u,s): u in w} then s else arb(s - {enum(u,s): u in w}) end if Suppose ==> not(s ¥incin {enum(u,s): u in w}) (s - {enum(u,s): u in w})-->T0(Stat4*) ==> enum(w,s) in s - {enum(u,s): u in w} Discharge ==> s ¥incin {enum(u,s): u in w} -- -- The principle of transfinite induction now tells us that there exists -- a minimal ordinal $b$ such that $s ¥incin {enum(y,s): y in b}$. Since our theorem is false, -- either $s$ must be different from ${enum(y,s): y in b}$, or the function -- $enum(.,s)$ cannot be 1-1 on $b$. -- APPLY(mt1_thryvar:b) transfinite_induction(n->w,P(x)->(Ord(x) & (s ¥incin {enum(u,s): u in x}))) ==> Stat5: (FORALL u | (Ord(b) & (s ¥incin {enum(y,s): y in b})) & ((u in b) ¥imp (not (Ord(u)) & (s ¥incin {enum(vv,s): vv in u})))) a0-->Stat5 ==> Ord(b) & (s ¥incin {enum(y,s): y in b}) b-->Stat1 ==> (s /= {enum(y,s): y in b}) or not(FORALL y in b, z0 in b | ((y /= z0) ¥imp (enum(y,s) /= enum(z0,s)))) -- -- First suppose that ${enum(y,s): y in b} /= s$, i.e. that the second of these sets -- does not include the first, so that there is a $c$ in the first but not the second, -- and so a $d in b$ such that $c = enum(d,s)$. -- Suppose ==> Stat6: not({enum(y,s): y in b} ¥incin s) c-->Stat6 ==> Stat7: (c in {enum(y,s): y in b}) & (c notin s) d-->Stat7 ==> (c = enum(d,s)) & (d in b) & (c notin s) -- -- Since $b$ is an ordinal, $d$ is also an ordinal, so Stat5 tells us -- that $s$ is not a subset of ${enum(y,s): y in d}$, and thus by definition -- $c = enum(d,s)$ must be a member of $s$, a contradiction which tells us that -- ${enum(y,s): y in b}$ must be equal to $s$. -- d-->Stat5 ==> (not Ord(d)) or (not s ¥incin {enum(y,s): y in d}) (b,d)-->T12 ==> Stat8: (not s ¥incin {enum(y,s): y in d}) & (s - {enum(y,s): y in d} /= 0) Use_def(enum) ==> enum(d,s) = if s ¥incin {enum(u,s): u in d} then s else arb(s - {enum(u,s): u in d}) end if (s - {enum(u,s): u in d})-->T0(Stat8*) ==> enum(d,s) in s Discharge ==> s = {enum(y,s): y in b} -- -- This leaves only the possibility that the function $enum(.,s)$ is not 1-1 on $b$, -- in which case there must exist two distinct ordinals $v$ and $wp$, both in $b$, such that $enum(v,s) = enum(wp,s)$. -- ELEM ==> Stat9: not(FORALL y in b, wz in b | ((y /= wz) ¥imp (enum(y,s) /= enum(wz,s)))) (v,wp)-->Stat9 ==> (v in b) & (wp in b) & (v /= wp) & (enum(v,s) = enum(wp,s)) -- -- But, by Theorem 44, this can only happen if $s$ is in one of the sets -- ${enum(y,s): y in v}$ and ${enum(y,s): y in wp}$. However, both of these possibilities -- are ruled out by Stat5 if we take Theorem 41 into account. -- So we have a contradiction proving our theorem. -- (v,wp,s)-->T44 ==> (s in {enum(y,s): y in v}) or (s in {enum(y,s): y in wp}) v-->Stat5 ==> not (s ¥incin {enum(x,s): x in v}) wp-->Stat5 ==> not (s ¥incin {enum(x,s): x in wp}) (v,s)-->T41 ==> (s in {enum(y,s): y in v}) ¥imp (s ¥incin {enum(y,s): y in v}) (wp,s)-->T41 ==> (s in {enum(y,s): y in wp}) ¥imp (s ¥incin {enum(y,s): y in wp}) Discharge ==> QED -- -- ************************************************************************************************ -- Section 5: Maps, map restrictions, and Cardinality -- ************************************************************************************************ -- -- Our next main goal is to introduce the notion of cardinality and prove its properties. -- In working with this notion we will find use for the familiar mathematical ideas appearing -- in the following auxiliary definitions. -- Def 12: [Map Restriction] Def(f ¥ON a) := {p in f | car(p) in a} Def 13: [Value of single-valued function] Def(f~[x]) := cdr(arb(f ¥ON {x})) -- Def 14: [Map Product] Def(F @ G) := {[car(x),cdr(y)]: x in G, y in F | cdr(x) = car(y)} Def 14a: [Inverse Map] inv(F) := {[cdr(x),car(x)]: x in F} Def 14b: [Identity Map on a set $S$] ident(S) := {[x,x]: x in S} -- -- We define the notion of 'the enumerating ordinal of a set' by Skolemizing Theorem 46. -- The formal definition is as follows. APPLY(v1_thryvar:enum_Ord) Skolem() ==> Theorem 47: [Enumeration single-valuedness principle] (FORALL s | (Ord(enum_Ord(s)) & (s = {enum(y,s): y in enum_Ord(s)}) & (FORALL y in enum_Ord(s), z0 in enum_Ord(s) | ((y /= z0) ¥imp (enum(y,s) /= enum(z0,s)))))) -- -- Using the preceding definition, we can define the Cardinality $#s$ of a set $s$ -- as the smallest ordinal in one-one correspondence with $s$. (The existence of such an ordinal -- follows from the fact that the set $next(enum_Ord(s))$ must contain at least one such.) -- Def 15: [Cardinality] Def(#S) := arb({x: x in next(enum_Ord(S)) | (EXISTS f in OM | (one_1_map(f) & (domain(f) = x) & (range(f) = S)))}) -- -- An ordinal $c$ is said to be a cardinal if it cannot be seen as the range of any -- single valued map on a smaller ordinal. We shall see below that this -- is equivalent to the condition that $c$ cannot be put into -- 1-1 correspondence with any smaller ordinal. -- Def 16: [Is-a-cardinal predicate] Card(C) := Ord(C) & (FORALL y in C, f in OM | (not(domain(f) = y) or not(range(f) = C) or not(Svm(f)))) -- -- In preparation with our work with cardinals we prove various small -- utility lemmas having to do with map restrictions, single-valued maps, 1-1 maps, -- map products and inverses, identity maps, etc. -- -- The first of these simply says that a restriction of a map $f$ is a subset of $f$, -- a fact immediate if we use proof by monotonicity. -- Theorem 48: [Map restriction lemma] (F ¥ON A) ¥incin F. Proof: Suppose_not(f,a) ==> not((f ¥ON a) ¥incin f) Use_def(¥ON) ==> not({p: p in f | car(p) in a} ¥incin f) Set_monot ==> {p: p in f | car(p) in a} ¥incin {p: p in f} Discharge ==> QED -- -- Next we note the even more elementary fact that the intersection -- of two sets can be written as a setformer. -- Theorem 49: [Set intersection formula] S * T = {x in S | x in T}. Proof: Suppose_not(s,t) ==> Stat1: s * t /= {x in s | x in t} c-->Stat1 ==> ((c in s * t) & (c notin {x in s | x in t})) or ((c notin s * t) & (c in {x in s | x in t})) Suppose ==> Stat2: (c notin {x in s | x in t}) & (c in s * t) c-->Stat2 ==> false; Discharge ==> Stat3: (c in {x in s | x in t}) & (c notin s * t) ()-->Stat3 ==> false; Discharge ==> QED -- -- The existence of a similar setformer defining the difference of two sets is equally elementary. -- Theorem 50: [Set difference formula] S - T = {x in S | x notin T}. Proof: Suppose_not(s,t) ==> Stat1: s - t /= {x in s | x notin t} c-->Stat1 ==> (((c in s - t) & (c notin {x in s | x notin t})) or ((c notin s - t) & (c in {x in s | x notin t}))) Suppose ==> Stat2: (c notin {x in s | x notin t}) & (c in s - t) c-->Stat2 ==> false; Discharge ==> (c notin s - t) & Stat3: (c in {x in s | x notin t}) ()-->Stat3 ==> false; Discharge ==> QED -- -- Our next utility lemma puts the definition of the $Is_map$ predicate -- into a sightly more convenient form by showing that every element of a map $f$ is a pair, -- and that every set all of whose elements are pairs must be a map. -- Theorem 51: [Map members are pairs] (Is_map(F) ¥imp ((X in F) ¥imp (X = [car(X),cdr(X)]))) & ((FORALL x in F | x = [car(x),cdr(x)]) ¥imp Is_map(F)). Proof: Suppose_not(f,x) ==>(Is_map(f) & (x in f) & (x /= [car(x),cdr(x)])) or (not((FORALL x in f | x = [car(x),cdr(x)]) ¥imp Is_map(f))) -- -- We must consider one of two contrary cases. Start with the first, -- in which a map has an element which is not a pair. -- This is impossible by definition; only the second case need be considered. -- Suppose ==> Stat1: Is_map(f) & (x in f) & (x /= [car(x),cdr(x)]) Use_def(Is_map) ==> Stat2: x in {[car(y),cdr(y)]: y in f} c-->Stat2(Stat2*) ==> Stat3: x = [car(c),cdr(c)] (Stat3)ELEM ==> (car(x) = car(c)) (Stat3)ELEM ==> (cdr(x) = cdr(c)) EQUAL(Stat3) ==> x = [car(x),cdr(x)] (Stat1*)Discharge ==> Stat4: not(Is_map(f)) -- -- In this second case we have a set of pairs, which by definition -- differs from the collection of all pairs in it, another impossibility. -- So our theorem is proved. -- f-->T26(Stat4) ==> Stat5: not(f ¥incin {[car(x),cdr(x)]: x in f}) & Stat6: (FORALL x in f | x = [car(x),cdr(x)]) d-->Stat5(Stat5) ==> Stat7: (d in f) & Stat8: (d notin {[car(x),cdr(x)]: x in f}) Suppose ==> Stat9: not(FORALL x in f | d /= [car(x),cdr(x)]) dd-->Stat9(Stat9) ==> Stat10: (dd in f) & (d = [car(dd),cdr(dd)]) dd-->Stat8(Stat10) ==> false; Discharge ==> Stat11: (FORALL x in f | d /= [car(x),cdr(x)]) d-->Stat11(Stat7,Stat7) ==> Stat12: d /= [car(d),cdr(d)] d-->Stat6(Stat7,Stat12) ==> false; Discharge ==> QED -- -- As stated next, any subset of a map is a map. -- Once more we have only to use the definition, and then monotonicity. -- Theorem 52: [Map subsets are maps] (G ¥incin F & Is_map(F)) ¥imp Is_map(G). Proof: Suppose_not(g,f) ==> AUTO Suppose ==> Stat1: not(FORALL x in f | x = [car(x),cdr(x)]) y-->Stat1 ==> AUTO (f,y)-->T51 ==> false; Discharge ==> AUTO (g,junk)-->T51 ==> (not(FORALL x in g | x = [car(x),cdr(x)])) Pred_monot ==> (FORALL x in f | x = [car(x),cdr(x)]) ¥imp (FORALL x in g | x = [car(x),cdr(x)]) Discharge ==> QED -- -- Similarly, any subset of a single-valued map is a single-valued map. -- Again, the proof is by monotonicity. -- Theorem 53: [Single-valued map subsets are single-valued] ((G ¥incin F) & Svm(F)) ¥imp Svm(G). Proof: Suppose_not(g,f) ==> (g ¥incin f) & Svm(f) & (not Svm(g)) Use_def(Svm) ==> Is_map(f) & (FORALL x in f, y in f | ((car(x) = car(y)) ¥imp (x = y))) & (not(Is_map(g) & (FORALL x in g, y in g | ((car(x) = car(y)) ¥imp (x = y))))) (g,f)-->T52 ==> (not((FORALL x in g, y in g | ((car(x) = car(y)) ¥imp (x = y))))) Pred_monot ==> ((FORALL x in f, y in f | ((car(x) = car(y)) ¥imp (x = y)))) ¥imp (FORALL x in g, y in g | ((car(x) = car(y)) ¥imp (x = y))) Discharge ==> QED -- -- Proof by monotonicity also suffices to show that any subset of a 1-1 map is also a 1-1 map. -- Theorem 54: [One-one map subsets are one-one] ((G ¥incin F) & one_1_map(F)) ¥imp one_1_map(G). Proof: Suppose_not(g,f) ==> (g ¥incin f) & one_1_map(f) & (not one_1_map(g)) Use_def(one_1_map) ==> Svm(f) & (FORALL x in f, y in f | ((cdr(x) = cdr(y)) ¥imp (x = y))) & (not(Svm(g) & (FORALL x in g, y in g | ((cdr(x) = cdr(y)) ¥imp (x = y))))) (g,f)-->T53 ==> (not(FORALL x in g, y in g | ((cdr(x) = cdr(y)) ¥imp (x = y)))) Pred_monot ==> (FORALL x in f, y in f | ((cdr(x) = cdr(y)) ¥imp (x = y))) ¥imp (FORALL x in g, y in g | ((cdr(x) = cdr(y)) ¥imp (x = y))) Discharge ==> QED -- -- To show that a map product is always a map, we have only to expand the definition and simplify. -- Theorem 55: [Map compositions are maps] Is_map(F @ G). Proof: Suppose_not(f,g) ==> not Is_map(f @ g) Use_def(@) ==> not Is_map({[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}) Use_def(Is_map) ==> {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)} /= {[car(u),cdr(u)]: u in {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}} SIMPLF ==> {[car(u),cdr(u)]: u in {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}} = {[car([car(x),cdr(y)]),cdr([car(x),cdr(y)])]: x in g, y in f | cdr(x) = car(y)} Set_monot ==> {[car([car(x),cdr(y)]),cdr([car(x),cdr(y)])]: x in g, y in f | cdr(x) = car(y)} = {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)} Discharge ==> QED -- -- The next three theorems are simple corollaries of Theorem 48 and of Theorem 52, Theorem 53, and Theorem 54 respectively. -- Theorem 56: [Map restrictions are maps] Is_map(F) ¥imp Is_map(F ¥ON S). Proof: Suppose_not(f,s) ==> Is_map(f) & (not Is_map(f ¥ON s)) (f,s)-->T48 ==> (f ¥ON s) ¥incin f (f ¥ON s,f)-->T52 ==> false; Discharge ==> QED -- Theorem 57: [Restrictions of single-valed maps are single-valued] Svm(F) ¥imp Svm(F ¥ON S). Proof: Suppose_not(f,s) ==> Svm(f) & (not Svm(f ¥ON s)) (f,s)-->T48 ==> (f ¥ON s) ¥incin f (f ¥ON s,f)-->T53 ==> false; Discharge ==> QED -- Theorem 58: [Restrictions of one-one maps are one-one] one_1_map(F) ¥imp one_1_map(F ¥ON S). Proof: Suppose_not(f,s) ==> AUTO (f,s)-->T48 ==> (f ¥ON s) ¥incin f (f ¥ON s,f)-->T54 ==> false; Discharge ==> QED -- -- Next we note the elementary fact that the empty set is a single-valued map, -- a 1-1 map, and that its domain and range are both the empty set. -- Theorem 59: [The null set as a map] Is_map(0) & Svm(0) & (one_1_map(0)) & (range(0) = 0) & (domain(0) = 0). Proof: Suppose_not ==> AUTO -- -- Indeed, all the facts follow immediately by application of our utility -- $fcn_symbol$ THEORY to $0 = {[x,x]: x in 0}$. -- Use_def(Svm(0)) ==> AUTO -- Use_def(Svm) ==> Svm(0) ¥eq (Is_map(0) & -- (FORALL x in 0, y in 0 | ((car(x) = car(y)) ¥imp (x = y)))) ELEM ==> not (Svm(0) & (one_1_map(0)) & (range(0) = 0) & (domain(0) = 0)) Loc_def ==> g = {[x,x]: x in 0} APPLY(x9_thryvar:a,y9_thryvar:b) fcn_symbol(f(x)->x,g->g,s->0) ==> Svm(g) & (domain(g) = 0) & (range(g) = {x: x in 0}) & (((a in 0) & (b in 0)) or one_1_map(g)) Suppose ==> Stat1: not(FORALL x in 0, y in 0 | ((x = x) ¥imp (x = y))) c-->Stat1 ==> false; Discharge ==> one_1_map(g) Set_monot ==> {x: x in 0} = {[x,x]: x in 0} Set_monot ==> 0 = {x: x in 0} EQUAL ==> Svm(0) & (domain(0) = 0) & (range(0) = 0) & one_1_map(0) Discharge ==> QED -- -- Next we state two entirely elementary facts concerning the range and domain of a map $f$: -- for each $x in f$, $car(x)$ is in $domain(f)$ and $cdr(x)$ is in $range(f)$. -- Theorem 60: [Domain membership lemma] (X in F) ¥imp (car(X) in domain(F)). Proof: Suppose_not(c,f) ==> AUTO Use_def(domain) ==> Stat1: not car(c) in {car(x): x in f} c-->Stat1 ==> AUTO Discharge ==> QED -- Theorem 61: [Range membership lemma] (X in F) ¥imp (cdr(X) in range(F)). Proof: Suppose_not(c,f) ==> AUTO Use_def(range) ==> Stat1: not(cdr(c) in {cdr(x): x in f}) c-->Stat1 ==> AUTO Discharge ==> QED -- -- It is also an elementary consequence of the definition that the union of two maps is a map. -- Theorem 62: [Map unions are maps] (Is_map(F) & Is_map(G)) ¥imp Is_map(F + G). Proof: Suppose_not(f,g) ==> AUTO Use_def(Is_map) ==> (f = {[car(x),cdr(x)]: x in f}) & (g = {[car(x),cdr(x)]: x in g}) & (f + g /= {[car(x),cdr(x)]: x in f + g}) Set_monot ==> {[car(x),cdr(x)]: x in f + g} = {[car(x),cdr(x)]: x in f} + {[car(x),cdr(x)]: x in g} Discharge ==> QED -- -- Next we show that the map restriction operation is additive in its second argument. -- Again, this is an entirely elementary consequence of the definition, by set monotonicity. -- Theorem 63: [Map restriction is additive] F ¥ON (A + B) = (F ¥ON A) + (F ¥ON B). Proof: Suppose_not(f,a,b) ==> AUTO Use_def(¥ON) ==> {p in f | car(p) in a + b} /= {p in f | car(p) in a} + {p in f | car(p) in b} Set_monot ==> {p in f | car(p) in a + b} = {p in f | (car(p) in a) or (car(p) in b)} Set_monot ==> {p in f | (car(p) in a) or (car(p) in b)} = {p in f | car(p) in a} + {p in f | car(p) in b} Discharge ==> QED -- -- The map restriction operation is also additive in its first argument -- the argument being similar and equally elementary. -- Theorem 64: [Restriction of union maps] (F + G) ¥ON A = (F ¥ON A) + (G ¥ON A). Proof: Suppose_not(f,g,a) ==> ((f + g) ¥ON a) /= (f ¥ON a) + (g ¥ON a) Use_def(¥ON) ==> {p in (f + g) | car(p) in a} /= {p in f | car(p) in a} + {p in g | car(p) in a} Set_monot ==> {p in (f + g) | car(p) in a} = {p in f | car(p) in a} + {p in g | car(p) in a} Discharge ==> QED -- -- The fact that the range and domain of a map $f$ are both monotone increasing functions of $f$ -- also follows immediately by set monotonicity. -- Theorem 65: [Monotonicity of range and domain sets] (F ¥incin G) ¥imp ((range(F) ¥incin range(G)) & (domain(F) ¥incin domain(G))). Proof: Suppose_not(f,g) ==> (f ¥incin g) & (not((range(f) ¥incin range(g)) & (domain(f) ¥incin domain(g)))) Suppose ==> not(range(f) ¥incin range(g)) Use_def(range) ==> not({cdr(x): x in f} ¥incin {cdr(x): x in g}) Set_monot ==> {cdr(x): x in f} ¥incin {cdr(x): x in g} Discharge ==> not(domain(f) ¥incin domain(g)) Use_def(domain) ==> not({car(x): x in f} ¥incin {car(x): x in g}) Set_monot ==> {car(x): x in f} ¥incin {car(x): x in g} Discharge ==> QED -- -- Our next theorem states the important but elementary fact that map composition is associative. -- Theorem 66: [Associativity of map multiplication] F @ (G @ H) = (F @ G) @ H. Proof: Suppose_not(f,g,h) ==> f @ (g @ h) /= (f @ g) @ h Use_def(@) ==> f @ (g @ h) = {[car(x),cdr(v)]: x in {[car(x),cdr(y)]: x in h, y in g | cdr(x) = car(y)}, v in f | cdr(x) = car(v)} Use_def(@) ==> (f @ g) @ h = {[car(x),cdr(y)]: x in h, y in {[car(y),cdr(v)]: y in g, v in f | cdr(y) = car(v)} | cdr(x) = car(y)} ELEM ==> {[car(x),cdr(v)]: x in {[car(x),cdr(y)]: x in h, y in g | cdr(x) = car(y)}, v in f | cdr(x) = car(v)} /= {[car(x),cdr(y)]: x in h, y in {[car(y),cdr(v)]: y in g, v in f | cdr(y) = car(v)} | cdr(x) = car(y)} -- -- For if not, simplification after using the definition of map composition -- gives us the following inequality, and so the elementary inequality seen just below it. -- But since this is impossible our lemma follows. -- SIMPLF ==> Stat1: {[car([car(x),cdr(y)]),cdr(v)]: x in h, y in g, v in f | (cdr(x) = car(y)) & (cdr([car(x),cdr(y)]) = car(v))} /= {[car(x),cdr([car(y),cdr(v)])]: x in h, y in g , v in f | (cdr(y) = car(v)) & (cdr(x) = car([car(y),cdr(v)]))} (x,y,v)-->Stat1 ==> ([car([car(x),cdr(y)]),cdr(v)] /= [car(x),cdr([car(y),cdr(v)])]) or (not(((cdr(x) = car(y)) & (cdr([car(x),cdr(y)]) = car(v))) ¥eq ((cdr(y) = car(v)) & (cdr(x) = car([car(y),cdr(v)]))))) Discharge ==> QED -- -- Now we show that the restriction of a map $f$ to its own domain is simply $f$. -- Theorem 67: [Restriction of a map to its own domain] F ¥ON domain(F) = F. Proof: Suppose_not(f) ==> not((f ¥ON domain(f)) = f) -- -- For if not, it follows by Theorem 48 that there must be -- some element $a in f$ which is not in ${p in f | car(p) in domain(f)}$, -- which is clearly impossible by Theorem 60. -- (f,domain(f))-->T48 ==> (f ¥ON domain(f)) ¥incin f ELEM ==> not((f ¥ON domain(f)) incs f) Use_def(¥ON) ==> Stat1: not({p in f | car(p) in domain(f)} incs f) (a)-->Stat1 ==> (a in f) & Stat2: (not(a in {p in f | car(p) in domain(f)})) (a)-->Stat2 ==> car(a) notin domain(f) (a,f)-->T60 ==> false; Discharge ==> QED -- -- The following easy lemma generalizes the fact that the restriction of any map $f$ -- to its own domain is $f$ itself. -- Theorem 68: [Restriction to an intersection set] F ¥ON (domain(F) * T) = F ¥ON T. Proof: Suppose_not(f,t) ==> f ¥ON (domain(f) * t) /= f ¥ON t -- -- For if not, the additivity of map restriction would imply that -- $f ¥ON (t - domain(f)) /= 0$, which is easily seen to be imposible. -- TELEM ==> t = (domain(f) * t) + (t - domain(f)) EQUAL ==> f ¥ON t = f ¥ON ((domain(f) * t) + (t - domain(f))) (f,(domain(f) * t), (t - domain(f)))-->T63 ==> f ¥ON (t - domain(f)) /= 0 Use_def(¥ON) ==> Stat1: {p in f | car(p) in (t - domain(f))} /= 0 a-->Stat1 ==> (a in f) & (car(a) in (t - domain(f))) (a,f)-->T60 ==> false; Discharge ==> QED -- -- The preceding lemma can be put more generally. -- Theorem 69: [Double restriction] F ¥ON (S * T) = (F ¥ON S) ¥ON T. Proof: Suppose_not(f,s,t) ==> f ¥ON (s * t) /= (f ¥ON s) ¥ON t Use_def(¥ON) ==> f ¥ON s = {q in f | car(q) in s} Use_def(¥ON) ==> (f ¥ON s) ¥ON t = {p in {q in f | car(q) in s} | car(p) in t} SIMPLF ==> (f ¥ON s) ¥ON t = {q in f | (car(q) in t) & (car(q) in s)} Use_def(¥ON) ==> (f ¥ON (s * t)) = {q in f | car(q) in s * t} ELEM ==> not(({q in f | (car(q) in t) & (car(q) in s)} ¥incin {q in f | car(q) in s * t}) & ({q in f | (car(q) in t) & (car(q) in s)} incs {q in f | car(q) in s * t})) Suppose ==> Stat1: not({q in f | (car(q) in t) & (car(q) in s)} ¥incin {q in f | car(q) in s * t}) c-->Stat1 ==> (c in f) & (car(c) in t) & (car(c) in s) & (car(c) notin s * t) ELEM ==> false; Discharge ==> Stat2: not({q in f | (car(q) in t) & (car(q) in s)} incs {q in f | car(q) in s * t}) c1-->Stat1 ==> (c1 in f) & (not((car(c1) in t) & (car(c1) in s))) & (car(c1) in s * t) Discharge ==> QED -- -- The following triviality is sometimes useful. Theorem 70: [Null restriction] F ¥ON 0 = 0. Proof: Suppose_not(f) ==> AUTO Use_def(¥ON) ==> Stat1: {q in f | car(q) in 0} /= 0 c-->Stat1 ==> false; Discharge ==> QED -- -- The following theorem tells us that, as we have defined it, -- the map value $f~[x]$ always belongs to the range of $f$, -- provided that $x$ belongs to the domain of $f$; -- this is true even if $f$ is not single-valued, or even if $f$ is not a map. -- Theorem 71: [Map image elements belong to the map range] (X in domain(F)) ¥imp ((F~[X]) in range(F)). Proof: Suppose_not(x,f) ==> (x in domain(f)) & (not((f~[x]) in range(f))) -- -- For if not, then by definition there must be some $c in f$ -- such that $cdr(arb({p in f | car(p) in {car(c)}}))$ does not belong to ${cdr(y): y in f}$. -- Use_def(range) ==> not((f~[x]) in {cdr(y): y in f}) Use_def(~) ==> not(cdr(arb(f ¥ON {x})) in {cdr(y): y in f}) Use_def(¥ON) ==> Stat1: cdr(arb({p in f | car(p) in {x}})) notin {cdr(y): y in f} Use_def(domain) ==> Stat2: x in {car(y): y in f} c-->Stat2 ==> (x = car(c)) & (c in f) -- -- But $c$ clearly belongs to the set ${p in f | car(p) in {car(c)}}$, -- which is therefore nonempty, from which it follows by the axiom of choice -- that $arrb := arb({p in f | car(p) in {x}})$ belongs to this same set. -- Suppose ==> Stat3: not(c in {p in f | car(p) in {x}}) Suppose ==> Stat4: not(FORALL p in f | ((car(p) in {x}) ¥imp (p /= c))) q-->Stat4 ==> (q in f) & (car(q) in {x}) & (q = c) q-->Stat3 ==> false; Discharge ==> Stat5: (FORALL p in f | ((car(p) in {x}) ¥imp (p /= c))) c-->Stat5 ==> (car(c) in {x}) ¥imp (c /= c) Discharge ==> c in {p in f | car(p) in {x}} ({p in f | car(p) in {x}})-->T0 ==> arb({p in f | car(p) in {x}}) in {p in f | car(p) in {x}} -- -- Hence $arrb$ must belong to the larger set $f$. By Stat1, this implies -- the impossible inequality seen below, proving our theorem. -- Set_monot ==> {p in f | car(p) in {x}} ¥incin {p: p in f} ELEM ==> arb({p in f | car(p) in {x}}) in {p: p in f} SIMPLF ==> arb({p in f | car(p) in {x}}) in f (arb({p in f | car(p) in {x}}))-->Stat1 ==> cdr(arb({p in f | car(p) in {x}})) /= cdr(arb({p in f | car(p) in {x}})) Discharge ==> QED -- -- It is convenient to summarize some of the key results derived above -- in the following auxiliary THEORY, which specializes them and eases their use. -- We focus on maps of the form ${[x,f(x)]: x in s}$, which are always single-valued. -- THEORY fcn_symbol(f(x),g,s) [Contains some elementary lemmas about single-valued functions] g = {[x,f(x)]: x in s} END fcn_symbol; -- ENTER_THEORY fcn_symbol -- Note: till we return from 'fcn_symbol' to set theory, we are -- reasoning within the theory, so $g = {[x,f(x)]: x in s}$ is available -- as an axiom, and all theorems proved are added to the set -- of conclusions of the theory, rather than to the set of conclusions -- of the top-level set-theory. -- -- First we show that the domain of $g$ is simply $s$. -- Theorem fcn_symbol.1: [Mapformer domain] domain(g) = s. Proof: Suppose_not ==> domain(g) /= s -- -- For in the contrary case we would have ${car(x): x in {[x,f(x)]: x in s}} /= s$ -- by definition, so there would exist an $x in s$ such that $car([x,f(x)]) /= x$, -- which is impossible. -- Use_def(domain) ==> {car(x): x in g} /= s Assump ==> g = {[y,f(y)]: y in s} EQUAL ==> {car(x): x in g} = {car(x): x in {[y,f(y)]: y in s}} ELEM ==> {car(x): x in {[y,f(y)]: y in s}} /= s SIMPLF ==> {car([y,f(y)]): y in s} /= {x: x in s} Set_monot ==> {car([y,f(y)]): y in s} = {y: y in s} Discharge ==> QED -- -- Next we show that $g~[x] = f(x)$ for any $x in s$. -- Theorem fcn_symbol.2: [Image by a mapformer] (XX in s) ¥imp (g~[XX] = f(XX)). Proof: Suppose_not(c) ==> (c in s) & (g~[c] /= f(c)) -- -- For suppose not, and let $c in s$ be a counterexample, so that by definition -- of functional application (and map restriction) we would have -- $cdr(arb({[x,f(x)]: x in s | car([x,f(x)]) in {c}})) /= f(c)$. -- Use_def(~) ==> cdr(arb(g ¥ON {c})) /= f(c) Use_def(¥ON) ==> cdr(arb({p in g | car(p) in {c}})) /= f(c) Assump ==> g = {[x,f(x)]: x in s} EQUAL ==> cdr(arb({p in {[x,f(x)]: x in s} | car(p) in {c}})) /= f(c) SIMPLF ==> cdr(arb({[x,f(x)]: x in s | car([x,f(x)]) in {c}})) /= f(c) -- -- We can simplify ${[x,f(x)]: x in s | car([x,f(x)]) in {c}}$ to ${[x,f(x)]: x in s | x in {c}}$, -- for if these sets were different there would be a $d in s$ such that the conditions -- $car([d,f(d)]) in {c}$ and $d in c$ were inequivalent, which is impossible. -- Suppose ==> Stat1: {[x,f(x)]: x in s | car([x,f(x)]) in {c}} /= {[x,f(x)]: x in s | x in {c}} d-->Stat1 ==> (d in s) & (not ((car([d,f(d)]) in {c}) ¥eq (d in {c}))) Discharge ==> {[x,f(x)]: x in s | car([x,f(x)]) in {c}} = {[x,f(x)]: x in s | x in {c}} -- -- But ${[x,f(x)]: x in s | x in {c}}$ simplifies in two steps to ${[x,f(x)]: x in {c}}$, -- which is the same as ${[c,f(c)]}$. Hence if our theorem is false we would have -- $cdr(arb({[c,f(c)]})) /= f(c)$, a contradiction proving the theorem. -- Suppose ==> Stat2: {[x,f(x)]: x in s | x in {c}} /= {[x,f(x)]: x in {c}} e-->Stat2 ==> ((e in {[x,f(x)]: x in s | x in {c}}) & (e notin {[x,f(x)]: x in {c}})) or ((e notin {[x,f(x)]: x in s | x in {c}}) & (e in {[x,f(x)]: x in {c}})) Suppose ==> Stat3: (e in {[x,f(x)]: x in s | x in {c}}) & Stat4: (e notin {[x,f(x)]: x in {c}}) e1-->Stat3 ==> (e = [e1,f(e1)]) & (e1 in s) & (e1 in {c}) e1-->Stat4 ==> false; Discharge ==> Stat5: (e notin {[x,f(x)]: x in s | x in {c}}) & Stat6: (e in {[x,f(x)]: x in {c}}) e2-->Stat6 ==> (e = [e2,f(e2)]) & (e2 in {c}) e2-->Stat5 ==> false; Discharge ==> {[x,f(x)]: x in s | x in {c}} = {[x,f(x)]: x in {c}} SIMPLF ==> {[x,f(x)]: x in {c}} = {[c,f(c)]} EQUAL ==> cdr(arb({[c,f(c)]})) /= f(c) Discharge ==> QED -- -- We reformulate the preceding theorem in quantified form. -- Theorem fcn_symbol.2a: [Image by a mapformer, quantified form] (FORALL x in s | g~[x] = f(x)). Proof: Suppose_not ==> Stat1: AUTO x-->Stat1 ==> (x in s) & (g~[x] /= f(x)) x-->Tfcn_symbol.2 ==> false; Discharge ==> QED -- -- Our next theorem rounds out the preceding result by showing that $g~[x] = 0$ for $x notin s$. -- Theorem fcn_symbol.3: [Elements not in a mapformer domain] (XX notin s) ¥imp (g~[XX] = 0). Proof: Suppose_not(c) ==> Stat1: ((c notin s) & g~[c] /= 0) -- -- For suppose not, and let $c$ in $s$ be a counterexample. Then by definition -- of functional application (and map restriction) the value -- $arb({[x,f(x)]: x in s | car([x,f(x)]) in {c}})$ must be nonzero, -- and then by the axiom of choice so is the set ${[x,f(x)]: x in s | car([x,f(x)]) in {c}}$. -- Use_def(~) ==> (c notin s) & cdr(arb(g ¥ON {c})) /= 0 Suppose ==> arb(g ¥ON {c}) = 0 EQUAL ==> cdr(0) /= 0 Use_def(cdr) ==> arb(arb(arb(0 - {arb(0)}) - {arb(0)})) /= 0 TELEM ==> 0 - {arb(0)} = 0 EQUAL ==> arb(arb(arb(0) - {arb(0)})) /= 0 0-->T0(*) ==> arb(0) = 0 TELEM ==> arb(0) - {arb(0)} = 0 EQUAL ==> arb(arb(0)) /= 0 EQUAL ==> arb(0) /= 0 EQUAL ==> false; Discharge ==> arb(g ¥ON {c}) /= 0 Use_def(¥ON) ==> (g ¥ON {c}) = {p in g | car(p) in {c}} EQUAL ==> arb({p in g | car(p) in {c}}) /= 0 Assump ==> g = {[x,f(x)]: x in s} EQUAL ==> arb({p in {[x,f(x)]: x in s} | car(p) in {c}}) /= 0 SIMPLF ==> Stat2: arb({[x,f(x)]: x in s | car([x,f(x)]) in {c}}) /= 0 {[x,f(x)]: x in s | car([x,f(x)]) in {c}}-->T0(Stat2*) ==> Stat3: {[x,f(x)]: x in s | car([x,f(x)]) in {c}} /= 0 -- -- Hence there would exist a $d in s$ such that $car([d,f(d)]) in {c}$, implying $c in s$, -- a contradiction which proves our assertion. -- d-->Stat3() ==> Stat4: (d in s) & (car([d,f(d)]) in {c}) (Stat1,Stat4)Discharge ==> QED -- -- The following result summarizes the two which precede it. -- Theorem fcn_symbol.4: [Mapformer image in general] g~[XX] = if XX in s then f(XX) else 0 end if. Proof: Suppose_not(c) ==> g~[c] /= if c in s then f(c) else 0 end if c-->Tfcn_symbol.3 ==> c in s c-->Tfcn_symbol.2 ==> false; Discharge ==> QED -- -- We reformulate the preceding theorem in quantified form. -- Theorem fcn_symbol.4a: [Image by a mapformer, quantified form] (FORALL x | g~[x] = if x in s then f(x) else 0 end if). Proof: Suppose_not ==> Stat1: AUTO x-->Stat1 ==> g~[x] /= if x in s then f(x) else 0 end if (g,x)-->Tfcn_symbol.4 ==> false; Discharge ==> QED -- -- It is easy to derive the following formula for the range of a map $g$: -- Theorem fcn_symbol.5: [Range of a mapformer] range(g) = {f(xx) : xx in s}. Proof: Suppose_not ==> range(g) /= {f(x) : x in s} -- -- For if not, it follows by definition of range that -- ${cdr([x,f(x)]): x in s} /= {f(x) : x in s}$, -- implying the existence of an x such that $cdr([x,f(x)]) /= f(x)$, -- which is impossible. -- Use_def(range) ==> range(g) = {cdr(x): x in g} Assump ==> g = {[x,f(x)]: x in s} EQUAL ==> {cdr(x): x in {[x,f(x)]: x in s}} /= {f(x) : x in s} SIMPLF ==> {cdr([x,f(x)]): x in s} /= {f(x) : x in s} Set_monot ==> {cdr([x,f(x)]): x in s} = {f(x) : x in s} Discharge ==> QED -- -- And it is also easy to derive the following criterion for a map $g$ to be 1-1: -- Def fcn_symbol.0a: [Witness to non-singlevaluedness of map inverse] xy7_thryvar := arb({[xx,yy]: xx in s, yy in s | (f(xx) = f(yy)) & (xx /= yy)}) Def fcn_symbol.0b: [First component of witness to non-singlevaluedness of map inverse] x9_thryvar := car(xy7_thryvar) Def fcn_symbol.0c: [Second component of witness to non-singlevaluedness of map inverse] y9_thryvar := cdr(xy7_thryvar) -- Theorem fcn_symbol.6: [Mapformer one-to-oneness test] ((x9_thryvar in s) & (y9_thryvar in s) & (f(x9_thryvar) = f(y9_thryvar)) & (x9_thryvar /= y9_thryvar)) or one_1_map(g). Proof: Suppose_not ==> (not((x9_thryvar in s) & (y9_thryvar in s) & (f(x9_thryvar) = f(y9_thryvar)) & (x9_thryvar /= y9_thryvar))) & (not one_1_map(g)) -- -- For if not, then it easily follows using our previously derived $one_1_test$ THEORY -- that the set ${[x,y]: x in s, y in s | (f(x) = f(y)) & (x /= y)}$ must be non-null, -- so that by the axiom of choice and the definition of $x9_thryvar$, $y9_thryvar$ -- the pair $x9_thryvar,y9_thryvar$ must belong to it. -- APPLY(x6_thryvar:x,y6_thryvar:y) one_1_test(a(x)->x,b(x)->f(x),s->s) ==> ((x in s) & (y in s) & (not((x = y) ¥eq (f(x) = f(y))))) or one_1_map({[x,f(x)]: x in s}) Assump ==> g = {[x,f(x)]: x in s} EQUAL ==> not one_1_map({[x,f(x)]: x in s}) Suppose ==> Stat1: {[x,y]: x in s, y in s | (f(x) = f(y)) & (x /= y)} = 0 (x,y)-->Stat1 ==> not((x in s) & (y in s) & (f(x) = f(y)) & (x /= y)) Suppose ==> x = y EQUAL ==> f(x) = f(y) Discharge ==> x /= y ELEM ==> false; Discharge ==> {[x,y]: x in s, y in s | (f(x) = f(y)) & (x /= y)} /= 0 ({[x,y]: x in s, y in s | (f(x) = f(y)) & (x /= y)})-->T0 ==> arb({[x,y]: x in s, y in s | (f(x) = f(y)) & (x /= y)}) in {[x,y]: x in s, y in s | (f(x) = f(y)) & (x /= y)} Use_def(xy7_thryvar) ==> Stat2: xy7_thryvar in {[x,y]: x in s, y in s | (f(x) = f(y)) & (x /= y)} -- -- Hence there must exist elements $xx$ and $yy$ satisfying the condition seen below, -- and since it is easily seen that these must be the two components $x9_thryvar$, $y9_thryvar$ of $xy7_thryvar$, -- we have a contradiction with our hypothesis and so a proof of our assertion. -- (xx,yy)-->Stat2 ==> (xx in s) & (yy in s) & (xy7_thryvar = [xx,yy]) & (f(xx) = f(yy)) & (xx /= yy) ELEM ==> (xx = car(xy7_thryvar)) & (yy = cdr(xy7_thryvar)) Use_def(x9_thryvar) ==> x9_thryvar = xx Use_def(y9_thryvar) ==> y9_thryvar = yy EQUAL ==> false; Discharge ==> QED -- -- It follows immediately using our previously derived $Svm_test$ THEORY that $g$ must be single-valued. -- Theorem fcn_symbol.7: [?] Svm(g). Proof: Suppose_not ==> not Svm(g) APPLY(x3_thryvar:x,y3_thryvar:y) Svm_test(a(x)->x,b(x)->f(x),s->s) ==> (((x = y) & (f(x) /= f(y))) or Svm({[x,f(x)]: x in s})) Assump ==> g = {[x,f(x)]: x in s} EQUAL ==> (((x = y) & (f(x) /= f(y))) or Svm(g)) ELEM ==> (x = y) & (f(x) /= f(y)) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- Note: this exits the subtheory 'fcn_symbol', and re-enters the main Set_theory. -- Note: if we used 'DISPLAY fcn_symbol' at this point, the result would be as follows: -- --DISPLAY fcn_symbol -- --THEORY fcn_symbol(f(x),g,s) -- g = {[x,f(x)]: x in s} --==>(x9_thryvar,y9_thryvar) -- domain(g) = s -- (FORALL x | (x in s) ¥imp (g~[x] = f(x))) -- (FORALL x | (x notin s) ¥imp (g~[x] = 0)) -- (FORALL x | g~[x] = if x in s then f(x) else 0 end if) -- range(g) = {f(x) : x in s} -- ((x9_thryvar in s) & (y9_thryvar in s) & (f(x9_thryvar) = f(y9_thryvar)) & (x9_thryvar /= y9_thryvar)) or -- one_1_map(g) -- Svm(g) --END fcn_symbol; -- -- Single valued maps can always be represented in the convenient form -- required by the preceding theory and repeated in the following theorem. -- Conversely, the preceding theory tells us that any set of this form is a single-valued map. -- Theorem 72: [Form of a single-valued map] Svm(F) ¥eq (F = {[x,F~[x]]: x in domain(F)}). Proof: Suppose_not(f) ==> (Svm(f) & (f /= {[x,f~[x]]: x in domain(f)})) or ((not Svm(f)) & (f = {[x,f~[x]]: x in domain(f)})) -- -- For the preceding theory tells us that ${[x,f~[x]]: x in domain(f)}$ -- is single valued, leaving only the first of the two above contrary possibilities. -- Suppose ==> Stat1: (not Svm(f)) & (f = {[x,f~[x]]: x in domain(f)}) APPLY() fcn_symbol(f(x)->f~[x],g->f,s->domain(f)) ==> Svm(f) (Stat1)Discharge ==> Svm(f) & (f /= {[x,f~[x]]: x in domain(f)}) -- -- By definition of domain, map application, and map restriction, -- the preceding inequality simplifies to -- $f /= {[car(y),cdr(arb({u in f | car(u) in {car(y)}}))]: y in f}$. -- Use_def(domain) ==> f /= {[x,f~[x] ]: x in {car(y): y in f}} SIMPLF ==> f /= {[car(y),f~[car(y)]]: y in f} Use_def(~) ==> f /= {[car(y),cdr(arb(f ¥ON {car(y)}))]: y in f} Use_def(¥ON) ==> f /= {[car(y),cdr(arb({u in f | car(u) in {car(y)}}))]: y in f} -- -- Since $f$ is a single-valued map and hence a map, this implies the inequality seen below: -- Use_def(Svm) ==> Is_map(f) & Stat2: (FORALL x in f, y1 in f | ((car(x) = car(y1)) ¥imp (x = y1))) Use_def(Is_map) ==> f = {[car(y),cdr(y)]: y in f} EQUAL ==> Stat3: {[car(y),cdr(y)]: y in f} /= {[car(y),cdr(arb({u in f | car(u) in {car(y)}}))]: y in f} -- -- Hence there must exist a $y in f$ for which $cdr(y)$ and $cdr(arb({u in f | car(u) in {car(y)}}))$ -- are different, -- y-->Stat3 ==> Stat4: (y in f) & ([car(y),cdr(y)] /= [car(y),cdr(arb({u in f | car(u) in {car(y)}}))]) -- -- But it is easily seen that ${u in f | car(u) in {car(y)}} = {y}$. -- Suppose ==> Stat5: {u in f | car(u) in {car(y)}} /= {y} d-->Stat5(*) ==> Stat6: not((d in {u in f | car(u) in {car(y)}}) ¥eq (d in {y})) Set_monot ==> {u in f | car(u) in {car(y)}} = {u in f | car(u) = car(y)} (Stat6*)ELEM ==> not((d in {u in f | car(u) = car(y)}) ¥eq (d = y)) Suppose ==> Stat7: (d = y) & Stat8: (d notin {u in f | car(u) = car(y)}) d-->Stat8(Stat7,Stat4) ==> false; Discharge ==> Stat9: d in {u in f | car(u) = car(y)} ()-->Stat9() ==> (d in f) & (car(d) = car(y)) (d,y)-->Stat2 ==> false; Discharge ==> {u in f | car(u) in {car(y)}} = {y} EQUAL ==> Stat10: {[car(y),cdr(y)]: y in f} /= {[car(y),cdr(arb({y}))]: y in f} e-->Stat10 ==> false; Discharge ==> QED -- -- The following corollary simply adds the formula for $range(f)$ to the preceding result. -- Theorem 73: [Form of a single-valued map range] Svm(F) ¥imp (F = {[x,F~[x]]: x in domain(F)} & (range(F) = {F~[x]: x in domain(F)})). Proof: Suppose_not(f) ==> Svm(f) & (not((f = {[x,f~[x]]: x in domain(f)}) & (range(f) = {f~[x]: x in domain(f)}))) f-->T72 ==> (f = {[x,f~[x]]: x in domain(f)}) & (range(f) /= {f~[x]: x in domain(f)}) Use_def(range) ==> {cdr(x): x in f} /= {f~[x]: x in domain(f)} EQUAL ==> {cdr(x): x in {[x,f~[x]]: x in domain(f)}} /= {f~[x]: x in domain(f)} SIMPLF ==> Stat1: {cdr([x,f~[x]]): x in domain(f)} /= {f~[x]: x in domain(f)} x-->Stat1 ==> cdr([x,f~[x]]) /= f~[x] Discharge ==> QED -- -- The following is a variant of Theorem 72. -- Theorem 74: [Map image formula] (Svm(F) & (X in F)) ¥imp (F~[car(X)] = cdr(X)). Proof: Suppose_not(f,a) ==> AUTO -- -- For if our theorem is false, then by Theorem 72 there is an $a$ in ${[car(x),f~[car(x)]]: x in f}$ -- such that $f~[car(a)] /= cdr(a)$. -- f-->T72 ==> a in {[x,f~[x]]: x in domain(f)} Use_def(domain) ==> a in {[x,f~[x]]: x in {car(x): x in f}} SIMPLF ==> Stat1: a in {[car(x),f~[car(x)]]: x in f} -- -- Such an $a$ must have the form $[car(b),f~[car(b)]]$ where $b in f$, so that $car(a) = car(b)$; -- but then, since $f$ is single valued, we must have $a = b$, so$ cdr(a) = f~[car(a)]$. -- b-->Stat1 ==> AUTO ELEM ==> car(a) = car(b) Use_def(Svm) ==> Stat2: (FORALL x in f, y in f | ((car(x) = car(y)) ¥imp (x = y))) (a,b)-->Stat2 ==> a = b EQUAL ==> f~[car(b)] = f~[car(a)] Discharge ==> QED -- -- The following elementary lemma, related to that just stated, is sometimes useful. -- Theorem 75: (X in domain(F)) ¥imp (F~[X] in range(F)). Proof: Suppose_not(x,f) ==> AUTO Use_def(domain) ==> Stat1: x in {car(y): y in f} y-->Stat1 ==> (x = car(y)) & (y in f) Use_def(~) ==> f~[x] = cdr(arb(f ¥ON {x})) Use_def(¥ON) ==> arb(f ¥ON {x}) = arb({u in f | car(u) in {x}}) Suppose ==> Stat2: y notin {u in f | car(u) in {x}} y-->Stat2 ==> false; Discharge ==> {u in f | car(u) in {x}} /= 0 ({u in f | car(u) in {x}})-->T0 ==> Stat3: arb(f ¥ON {x}) in {u in f | car(u) in {x}} ()-->Stat3 ==> arb(f ¥ON {x}) in f Suppose ==> cdr(arb(f ¥ON {x})) notin range(f) Use_def(range) ==> Stat4: cdr(arb(f ¥ON {x})) notin {cdr(y): y in f} (arb(f ¥ON {x}))-->Stat4 ==> false; Discharge ==> cdr(arb(f ¥ON {x})) in range(f) Discharge ==> QED -- -- The following lemma simply states the elementary fact that every element of a map is a pair. -- Theorem 76: [Map members are pairs, 2] (Is_map(F) & (U in F)) ¥imp (U = [car(U),cdr(U)]). Proof: Suppose_not(g,u) ==> Is_map(g) & (u in g) & (u /= [car(u),cdr(u)]) Use_def(Is_map) ==> Stat1: u in {[car(x),cdr(x)]: x in g} a-->Stat1 ==> (a in g) & (u = [car(a),cdr(a)]) EQUAL ==> Stat2: ([car(a),cdr(a)] /= [car([car(a),cdr(a)]),cdr([car(a),cdr(a)])]) (Stat2)Discharge ==> QED -- -- The following is another lemma sometimes useful in connection with maps. -- Theorem 77: [Map domain member lemma] Is_map(F) ¥imp ((X in domain(F)) ¥eq ([X,F~[X]] in F)). Proof: Suppose_not(f,x) ==> Is_map(f) & (not((x in domain(f)) ¥eq ([x,f~[x]] in f))) -- -- For suppose the contrary, and first consider the case $x in domain(f)$, -- so that there exists a $y in f$ such that $x = car(y)$. -- Suppose ==> (x in domain(f)) & ([x,f~[x]] notin f) Use_def(domain) ==> Stat1: (x in {car(y): y in f}) & ([x,f~[x]] notin f) y-->Stat1 ==> (x = car(y)) & (y in f) -- -- By definition of the operators involved, $f~[x] is cdr(yy)$ for some $yy in f$ -- such that $car(yy) = x$. -- Use_def(~) ==> f~[x] = cdr(arb(f ¥ON {x})) Use_def(¥ON) ==> f~[x] = cdr(arb({u: u in f | car(u) in {x}})) Suppose ==> Stat2: y notin {u: u in f | car(u) in {x}} y-->Stat2 ==> false; Discharge ==> y in {u: u in f | car(u) in {x}} {u: u in f | car(u) in {x}}-->T0 ==> Stat3: arb({u: u in f | car(u) in {x}}) in {u: u in f | car(u) in {x}} yy-->Stat3 ==> (arb({u: u in f | car(u) in {x}}) = yy) & (yy in f) & (car(yy) = x) EQUAL ==> (f~[x] = cdr(yy)) & (yy in f) & (car(yy) = x) -- -- But by Theorem 76, this implies that $yy notin f$, a contradiction which excludes -- the case $x in domain(f)$ of our initial assumption, leaving only the case $[x,f~[x]] in f$. -- EQUAL ==> [car(yy),cdr(yy)] notin f (f,yy)-->T76 ==> yy notin f Discharge ==> (x notin domain(f)) & ([x,f~[x]] in f) -- -- But then by definition we have an immediate contradiction which proves our theorem. -- Use_def(domain) ==> Stat4: x notin {car(v): v in f} [x,f~[x]]-->Stat4 ==> false; Discharge ==> QED -- -- THEORY Must_be_svm(b(x),s,u) END Must_be_svm; -- ENTER_THEORY Must_be_svm -- Theorem Must_be_svm.1: [Single-valued map former] Svm({[x,b(x)]: x in s}) & (domain({[x,b(x)]: x in s}) = s) & (range({[x,b(x)]: x in s}) = {b(x): x in s}) & ((u in s) ¥imp ({[x,b(x)]: x in s}~[u] = b(u))). Proof: Suppose_not() ==> not(Svm({[x,b(x)]: x in s}) & (domain({[x,b(x)]: x in s}) = s) & (range({[x,b(x)]: x in s}) = {b(x): x in s}) & ((u in s) ¥imp ({[x,b(x)]: x in s}~[u] = b(u)))) APPLY() Iz_map(a(x)->x,b(x)->b(x),s->s) ==> (domain({[x,b(x)]: x in s}) = {x: x in s}) & (range({[x,b(x)]: x in s}) = {b(x): x in s}) SIMPLF ==> {x: x in s} = s Suppose ==> not Svm({[x,b(x)]: x in s}) APPLY(x3_thryvar:x,y3_thryvar:y) Svm_test(a(x)->x,b(x)->b(x),s->s) ==> ((x in s) & (y in s) & (x = y) & (b(x) /= b(y))) or Svm({[x,b(x)]: x in s}) ELEM ==> ((x in s) & (y in s) & (x = y) & (b(x) /= b(y))) EQUAL ==> b(x) = b(y) Discharge ==> (u in s) & ({[x,b(x)]: x in s}~[u] /= b(u)) APPLY(x9_thryvar:junk1,y9_thryvar:junk2) fcn_symbol(f(x)->b(x),g->{[y,b(y)]: y in s},s->s) ==> Stat1: (FORALL u in s | {[y,b(y)]: y in s}~[u] = b(u)) u-->Stat1 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Must_be_svm -- --THEORY Must_be_svm(b(x),s,u) --==> -- Svm({[x,b(x)]: x in s}) & (domain({[x,b(x)]: x in s}) = s) & (range({[x,b(x)]: x in s}) = {b(x): x in s}) & ((u in s) ¥imp ({[x,b(x)]: x in s}~[u] = b(u))) --END Must_be_svm; -- -- The preceding mini-theory has the following obvious 2-variable analog. -- The proof of the one theorem it provides is completely elementary. -- THEORY Must_be_svm_2(b2(x,y),s,t,P2(x,y)) END Must_be_svm_2; -- ENTER_THEORY Must_be_svm_2 -- Theorem Must_be_svm_2.1: [Single-valued map former, two-variable case] Svm({[[x,y],b2(x,y)]: x in s, y in t | P2(x,y)}). Proof: Suppose_not ==> not Svm({[[x,y],b2(x,y)]: x in s, y in t | P2(x,y)}) APPLY(x4_thryvar:x,y4_thryvar:y,xp1_thryvar:xx,yp1_thryvar:yy) Svm_test_2(a2(x,y)->[x,y],b2(x,y)->b2(x,y),P2(x,y)->P2(x,y),s->s,t->t) ==> (((x in s) & (y in t) & (xx in s) & (yy in t) & ([x,y] = [xx,yy]) & (b2(x,y) /= b2(xx,yy))) or Svm({[[x,y],b2(x,y)]: x in s, y in t | P2(x,y)})) ELEM ==> (x = xx) & (y = yy) EQUAL ==> b2(x,y) = b2(xx,yy) ELEM ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Must_be_svm_2 -- --THEORY Must_be_svm_2(b2(x,y),s,t,P2(x,y)) --==> -- Svm({[[x,y],b2(x,y)]: x in s, y in t | P2(x,y)}) --END Must_be_svm_2; -- -- The additivity of domain and range, stated in the following theorems, -- both follow immediately by application of set monotonicity. -- Theorem 78: [Map domains are additive] domain(F + G) = domain(F) + domain(G). Proof: Suppose_not(f,g) ==> domain(f + g) /= domain(f) + domain(g) Use_def(domain) ==> {car(x): x in f + g} /= {car(x): x in f} + {car(x): x in g} Set_monot ==> {car(x): x in f + g} = {car(x): x in f} + {car(x): x in g} Discharge ==> QED -- Theorem 79: [Map ranges are additive] range(F + G) = range(F) + range(G). Proof: Suppose_not(f,g) ==> range(f + g) /= range(f) + range(g) Use_def(range) ==> {cdr(x): x in f + g} /= {cdr(x): x in f} + {cdr(x): x in g} Set_monot ==> {cdr(x): x in f + g} = {cdr(x): x in f} + {cdr(x): x in g} Discharge ==> QED -- -- The following is a corollary of Theorem 48 and Theorem 79. -- Theorem 80: [Range of a restriction map] range(F ¥ON S) ¥incin range(F). Proof: Suppose_not(f,s) ==> not(range(f ¥ON s) ¥incin range(f)) (f,s)-->T48 ==> f = (f ¥ON s) + (f - (f ¥ON s)) (f ¥ON s,f - (f ¥ON s))-->T79 ==> range((f ¥ON s) + (f - (f ¥ON s))) = range(f ¥ON s) + range(f - (f ¥ON s)) EQUAL ==> range(f) = range(f ¥ON s) + range(f - (f ¥ON s)) ELEM ==> false; Discharge ==> QED -- -- The following elementary lemmas concerning the additivity, monotonicity of the range function, -- and some easy additional properties specific to 1-1 maps, are also useful. -- Theorem 81: [Range of restriction to a union] range(F ¥ON (S + T)) = range(F ¥ON S) + range(F ¥ON T). Proof: Suppose_not(f,s,t) ==> range(f ¥ON (s + t)) /= range(f ¥ON s) + range(f ¥ON t) (f,s,t)-->T63 ==> (f ¥ON (s + t)) = (f ¥ON s) + (f ¥ON t) (f ¥ON s,f ¥ON t)-->T79 ==> range((f ¥ON s) + (f ¥ON t)) = range(f ¥ON s) + range(f ¥ON t); EQUAL ==> false; Discharge ==> QED -- Theorem 82: [Restriction to a subset] (S incs T) ¥imp (range(F ¥ON S) incs range(F ¥ON T)). Proof: Suppose_not(s,t,f) ==> (s incs t) & (not(range(f ¥ON s) incs range(f ¥ON t))) (f,t,s - t)-->T81 ==> range(f ¥ON (t + (s - t))) incs range(f ¥ON t) ELEM ==> t + (s - t) = s EQUAL ==> false; Discharge ==> QED -- -- Next we prove that the range of a 1-1 map $f$ on the intersection of two sets -- is the intersection of the restrictions of $f$ to each of these two sets. -- Theorem 83: [One-one map-restriction to an intersection] one_1_map(F) ¥imp (range(F ¥ON (S * T)) = range(F ¥ON S) * range(F ¥ON T)). Proof: Suppose_not(f,s,t) ==> one_1_map(f) & (range(f ¥ON (s * t)) /= range(f ¥ON s) * range(f ¥ON t)) -- -- For suppose that $f$, $s$, and $t$ are a counterexample to our assertion. -- Since by monotonicity $range(f ¥ON (s * t))$ must be a subset of -- both $range(f ¥ON s)$ and $range(f ¥ON t)$, and hence of their intersection, -- it follows that the intersection $I$ of these two latter sets must contain $range(f ¥ON (s * t))$, -- and so if our theorem is false $range(f ¥ON (s * t))$ cannot be a subset of $I$. -- (s,s * t,f)-->T82 ==> range(f ¥ON s) incs range(f ¥ON (s * t)) (t,s * t,f)-->T82 ==> range(f ¥ON t) incs range(f ¥ON (s * t)) ELEM ==> Stat1: not(range(f ¥ON (s * t)) incs range(f ¥ON s) * range(f ¥ON t)) -- -- Hence there must exist an element $c$ of $I$ which does not belong to $range(f ¥ON (s * t))$, -- and therefore elements $d in f$, $d in f$ such that $c = cdr(d)$, $c = cdr(e)$ such that -- $car(d)$ and $car(e)$ are members of $s$, $t$ respectively. -- c-->Stat1 ==> (c in range(f ¥ON s) * range(f ¥ON t)) & (c notin range(f ¥ON (s * t))) Use_def(range) ==> (c in {cdr(x): x in (f ¥ON s)}) & (c in {cdr(x): x in (f ¥ON t)}) & (c notin {cdr(x): x in (f ¥ON (s * t))}) Use_def(¥ON) ==> (c in {cdr(x): x in {y in f | car(y) in s}}) & (c in {cdr(x): x in {y in f | car(y) in t}}) & (c notin {cdr(x): x in {y in f | car(y) in (s * t)}}) SIMPLF ==> Stat2: (c in {cdr(x): x in f | car(x) in s}) & Stat3: (c in {cdr(x): x in f | car(x) in t}) & Stat4: (c notin {cdr(x): x in f | car(x) in (s * t)}) d-->Stat2 ==> (c = cdr(d)) & (d in f) & (car(d) in s) e-->Stat3 ==> (c = cdr(e)) & (e in f) & (car(e) in t) -- -- But now, since $f$ is 1-1, we must have $d = e$, so that $car(d) in (s * t)$, -- which contradicts $c notin range(f ¥ON (s * t))$ and so proves our theorem. -- Use_def(one_1_map) ==> Stat5: (FORALL x in f, y in f | (cdr(x) = cdr(y)) ¥imp (x = y)) (d,e)-->Stat5 ==> d = e ELEM ==> car(d) in (s * t) d-->Stat4 ==> false; Discharge ==> QED -- -- Our next lemma gives the entirely elementary fact that the restriction of a map to the null set, -- and the range of this restriction, are both null. -- Theorem 84: [Restriction to the null set] ((F ¥ON 0) = 0) & (range(F ¥ON 0) = 0). Proof: Suppose_not(f) ==> (f ¥ON 0 /= 0) or (range(f ¥ON 0) /= 0) Suppose ==> f ¥ON 0 /= 0 Use_def(¥ON) ==> Stat1: {y in f | car(y) in 0} /= 0 d-->Stat1 ==> false; Discharge ==> f ¥ON 0 = 0 EQUAL ==> range(0) /= 0 T59 ==> false; Discharge ==> QED -- Theorem 85: [One-one map restriction to disjoint sets] (one_1_map(F) & (S * T = 0)) ¥imp (range(F ¥ON S) * range(F ¥ON T) = 0). Proof: Suppose_not(f,s,t) ==> one_1_map(f) & (s * t = 0) & (range(f ¥ON s) * range(f ¥ON t) /= 0) (f,s,t)-->T83 ==> range(f ¥ON (s * t)) /= 0 EQUAL ==> range(f ¥ON 0) /= 0 f-->T84 ==> false; Discharge ==> QED -- -- Next we show that if either of the domain and range of a set $f$ is empty, so is the other -- (either of these conditions is equivalent to the condition that $f$ is empty). -- Theorem 86: [Domain is null only when range is null] (domain(F) = 0) ¥eq (range(F) = 0). Proof: Suppose_not(f) ==> not((domain(f) = 0) ¥eq (range(f) = 0)) Use_def(domain) ==> not(({car(x): x in f} = 0) ¥eq (range(f) = 0)) Use_def(range) ==> not(({car(x): x in f} = 0) ¥eq ({cdr(x): x in f} = 0)) -- -- For if not, one of these sets must be empty and the other not. -- Suppose first that ${cdr(x): x in f}$ is nonempty, so that there exists a $d$ in $f$. -- Then the first set must also be nonempty. The same argument applies in the -- case that ${car(x): x in f}$ is nonempty, and so our assertion holds in each case. -- Suppose ==> Stat1: ({car(x): x in f} = 0) & Stat2: ({cdr(x): x in f} /= 0) d-->Stat2 ==> d in f d-->Stat1 ==> false; Discharge ==> Stat3: ({car(x): x in f} /= 0) & Stat4: ({cdr(x): x in f} = 0) a-->Stat3 ==> a in f a-->Stat4 ==> false; Discharge ==> QED -- -- The union of two single valued maps need not always be single valued, -- but the following theorem tells us that it is if the domains of the two maps are disjoint. -- Theorem 87: [Union of single-valued maps] (Svm(F) & Svm(G) & (domain(F) * domain(G) = 0)) ¥imp Svm(F + G). Proof: Suppose_not(f,g) ==> Svm(f) & Svm(g) & (domain(f) * domain(g) = 0) & (not(Svm(f + g))) -- -- For suppose not, use the definition of '$Svm$' to expand the negative of our theorem, -- and use the fact, which follows from Theorem 62, that $f + g$ must be a map. -- from which it follows that $f + g$ must have two distinct elements $a$ and $b$ -- such that $car(a) = car(b)$. -- Use_def(Svm) ==> Is_map(f) & Stat1: (FORALL x in f, y in f | ((car(x) = car(y)) ¥imp (x = y))) Use_def(Svm) ==> Is_map(g) & Stat2: (FORALL x in g, y in g | ((car(x) = car(y)) ¥imp (x = y))) Use_def(Svm) ==> not(Is_map(f + g)) or not(FORALL x in f + g, y in f + g | ((car(x) = car(y)) ¥imp (x = y))) (f,g)-->T62 ==> Stat3: not(FORALL x in f + g, y in f + g | ((car(x) = car(y)) ¥imp (x = y))) (a,b)-->Stat3 ==> (a in f + g) & (b in f + g) & (car(a) = car(b)) & (a /= b) -- -- Then, since $f$ and $g$ are both single valued, it follows that one of $a$ and $b$ -- must belong to $f$ and the other to $g$. -- Suppose for definiteness that $a$ belongs to $f$ and $b$ to $g$. -- Then by Theorem 60 $car(a)$ belongs to $domain(f)$ and $car(b)$ to the disjoint set $domain(g)$, -- which is impossible since $car(a) = car(b)$. -- (a,b)-->Stat1 ==> ((a in f) & (b in f)) ¥imp ((car(a) = car(b)) ¥imp (a = b)) (a,b)-->Stat2 ==> ((a in g) & (b in g)) ¥imp ((car(a) = car(b)) ¥imp (a = b)) ELEM ==> (((a in f) & (b in g)) or ((a in g) & (b in f))) Suppose ==> (a in f) & (b in g) (a,f)-->T60 ==> car(a) in domain(f) (b,g)-->T60 ==> car(b) in domain(g) ELEM ==> false; Discharge ==> (a in g) & (b in f) -- -- This leaves only the symmetric case $(a in g) & (b in f)$, -- which can be treated in the same way, proving our theorem. -- (a,g)-->T60 ==> car(a) in domain(g) (b,f)-->T60 ==> car(b) in domain(f) Discharge ==> QED -- -- A very similar argument shows that the union of two 1-1 maps -- with disjoint ranges and domains must be 1-1. -- Theorem 88: [Union of 1-1 maps] (one_1_map(F) & one_1_map(G) & (range(F) * range(G) = 0) & (domain(F) * domain(G) = 0)) ¥imp one_1_map(F + G). Proof: Suppose_not(f,g) ==> (one_1_map(f) & one_1_map(g) & (range(f) * range(g) = 0) & (domain(f) * domain(g) = 0)) & (not(one_1_map(f + g))) -- -- For suppose not, use the definition of 'one_1_map' to expand the negative of our theorem, -- and use the fact, following by Theorem 87, that $f + g$ must be a single valued map. -- from which it follows that $f + g$ must have two distinct elements $a$ and $b$ -- such that $cdr(a) = cdr(b)$. -- Use_def(one_1_map) ==> Svm(f) & Stat1:(FORALL x in f, y in f | ((cdr(x) = cdr(y)) ¥imp (x = y))) & Svm(g) & Stat2:(FORALL x in g, y in g | ((cdr(x) = cdr(y)) ¥imp (x = y))) & ((not(Svm(f + g))) or not(FORALL x in f + g, y in f + g | ((cdr(x) = cdr(y)) ¥imp (x = y)))) (f,g)-->T87 ==> Stat3: not(FORALL x in f + g, y in f + g |((cdr(x) = cdr(y)) ¥imp (x = y))) (a,b)-->Stat3 ==> Stat4: (a in f + g) & (b in f + g) & (cdr(a) = cdr(b)) & (not(a = b)) -- -- Then, since $f$ and $g$ are both 1-1 maps, it follows that one of $a$ and $b$ -- must belong to $f$ and the other to $g$. -- Suppose for definiteness that $a$ belongs to $f$ and $b$ to $g$. -- Then by Theorem 61 $cdr(a)$ belongs to $range(f)$ and $cdr(a)$ to the disjoint set $range(g)$, -- which is impossible since $cdr(a) = cdr(b)$. -- (a,b)-->Stat1 ==> ((a in f) & (b in f)) ¥imp ((cdr(a) = cdr(b)) ¥imp (a = b)) (a,b)-->Stat2 ==> ((a in g) & (b in g)) ¥imp ((cdr(a) = cdr(b)) ¥imp (a = b)) ELEM ==> (((a in f) & (b in g)) or ((a in g) & (b in f))) Suppose ==> (a in f) & (b in g) (a,f)-->T61 ==> cdr(a) in range(f) (b,g)-->T61 ==> cdr(b) in range(g) Discharge ==> (a in g) & (b in f) -- -- This leaves only the symmetric case $(a in g) & (b in f)$, -- which can be treated in the same way, proving our theorem. -- (a,g)-->T61 ==> cdr(a) in range(g) (b,f)-->T61 ==> cdr(b) in range(f) Discharge ==> QED -- -- -- Theorem 89: [Union of 1-1 maps, 2] (one_1_map(F + G) & ((G * F) = 0)) ¥imp ((domain(G) = (domain(F + G) - domain(F))) & (range(G) = (range(F + G) - range(F)))). Proof: Suppose_not(f0,g0) ==> AUTO -- -- For, assuming the contrary, we would get a contradiction. -- Indeed, $domain$ and $range$ are additive operators. -- Hence, the negation of the statement we want to prove -- implies that either the intersection of the domains -- or the intersection of the ranges would be non-void. -- Single-valuedness would be contradicted in the former case, -- injectivity would be contradicted in the latter case. -- Use_def(one_1_map)(*) ==> Svm(f0 + g0) & Stat1: (FORALL x in (f0 + g0), y in (f0 + g0) | (cdr(x) = cdr(y)) ¥imp (x = y)) Suppose ==> Stat2: domain(g0) /= (domain(f0 + g0) - domain(f0)) (f0,g0)-->T78(Stat2*) ==> Stat3: (domain(f0) * domain(g0)) /= 0 d-->Stat3(Stat3*) ==> (d in domain(f0)) & (d in domain(g0)) Use_def(domain)(Stat3*) ==> Stat4: (d in {car(x): x in f0}) & (d in {car(x): x in g0}) (x0,y0)-->Stat4(Stat4*) ==> (d = car(x0)) & (x0 in f0) & (d = car(y0)) & (y0 in g0) Use_def(Svm)(*) ==> Stat5: (FORALL x in (f0 + g0), y in (f0 + g0) | (car(x) = car(y)) ¥imp (x = y)) (x0,y0)-->Stat5(Stat4*) ==> x0 = y0 Discharge ==> Stat6: range(g0) /= (range(f0 + g0) - range(f0)) (f0,g0)-->T79(Stat6*) ==> Stat7: (range(f0) * range(g0)) /= 0 r-->Stat7(Stat7*) ==> (r in range(f0)) & (r in range(g0)) Use_def(range)(Stat6*) ==> Stat8: (r in {cdr(x): x in f0}) & (r in {cdr(x): x in g0}) (x1,y1)-->Stat8(Stat8*) ==> (r = cdr(x1)) & (x1 in f0) & (r = cdr(y1)) & (y1 in g0) (x1,y1)-->Stat1(Stat8*) ==> x1 = y1 Discharge ==> QED -- -- The following simple lemma will be useful in our later work with map inverses. -- Theorem 90: [Members of the inverse map] Is_map(F) ¥imp (([X,Y] in F) ¥eq ([Y,X] in inv(F))). Proof: Suppose_not(f,x,y) ==> Is_map(f) & (not(([x,y] in f) ¥eq ([y,x] in inv(f)))) -- -- In the contrary case, and first considering the subcase in which $[x,y]$ belongs to $f$, -- use of the definition leads to an immediate contradiction, so that we must have -- $[x,y] notin f$ and $[y,x] in inv(f)$. -- Suppose ==> ([x,y] in f) & ([y,x] notin inv(f)) Use_def(inv) ==> Stat1: [y,x] notin {[cdr(u),car(u)]: u in f} ([x,y])-->Stat1 ==> [y,x] /= [cdr([x,y]),car([x,y])] Discharge ==> ([x,y] notin f) & ([y,x] in inv(f)) -- -- But in this case use of the definition also leads, via Theorem 76, -- to an immediate contradiction, which completes the proof of the present lemma. -- Use_def(inv) ==> ([x,y] notin f) & Stat2: ([y,x] in {[cdr(u),car(u)]: u in f}) u-->Stat2 ==> ([y,x] = [cdr(u),car(u)]) & (u in f) ELEM ==> [car(u),cdr(u)] /= u; (f,u)-->T76 ==> false; Discharge ==> QED -- -- The two following elementary lemmas note other ways in which -- small 1-1 maps can be constructed. -- First we observe that the singleton ${[x,y]}$ is always a 1-1 map. -- Theorem 91: [Singletons as maps] Svm({[X,Y]}) & one_1_map({[X,Y]}) & (({[X,Y]}~[X]) = Y). Proof: Suppose_not(x1,y1) ==> not(Svm({[x1,y1]}) & one_1_map({[x1,y1]}) & (({[x1,y1]}~[x1]) = y1)) -- -- We prove the various clauses of this theorem successively. -- The fact that ${[x1,y1]}$ is a map follows readily by use of our utility $Iz_map$ theory, -- and by simplification. -- SIMPLF ==> {[car(u),cdr(u)]: u in {[x1,y1]}} = {[car([x1,y1]),cdr([x1,y1])]} ELEM ==> {[car(u),cdr(u)]: u in {[x1,y1]}} = {[x1,y1]} APPLY() Iz_map(a(u)->car(u),b(u)->cdr(u),s->{[x1,y1]}) ==> Is_map({[car(u),cdr(u)]: u in {[x1,y1]}}) EQUAL ==> Is_map({[x1,y1]}) -- -- Likewise, to prove that ${[x1,y1]}$ is a single valued map we have only to use the definition of $Svm$. -- Suppose ==> not Svm({[x1,y1]}) Use_def(Svm) ==> not(Is_map({[x1,y1]}) & (FORALL u in {[x1,y1]}, v in {[x1,y1]} | (car(u) = car(v)) ¥imp (u = v))) ELEM ==> Stat1: not (FORALL u in {[x1,y1]}, v in {[x1,y1]} | (car(u) = car(v)) ¥imp (u = v)) (a,b)-->Stat1 ==> (a in {[x1,y1]}) & (b in {[x1,y1]}) & (car(a) = car(b)) & (a /= b) ELEM ==> (a = [x1,y1]) & (b = [x1,y1]) Discharge ==> Svm({[x1,y1]}) -- -- The proof that ${[x1,y1]}$ is 1-1 is equally elementary. Once this is done it only remains -- to prove the final clause of our theorem. -- Suppose ==> not one_1_map({[x1,y1]}) Use_def(one_1_map) ==> not (Svm({[x1,y1]}) & (FORALL u in {[x1,y1]}, v in {[x1,y1]} | ((cdr(u) = cdr(v)) ¥imp (u = v)))) ELEM ==> Stat2: not(FORALL u in {[x1,y1]}, v in {[x1,y1]} | ((cdr(u) = cdr(v)) ¥imp (u = v))) (c,d)-->Stat2 ==> Stat3: (c in {[x1,y1]}) & (d in {[x1,y1]}) & (cdr(c) = cdr(d)) & (c /= d) (Stat3)Discharge ==> Stat4: {[x1,y1]}~[x1] /= y1 -- -- For this we simply use the definitions of map application, restriction, and range successively, -- and simplify the resulting formula, to obtain a final contradiction which proves our theorem. -- Use_def(~) ==> {[x1,y1]}~[x1] = cdr(arb({[x1,y1]} ¥ON {x1})) Use_def(¥ON) ==> {[x1,y1]}~[x1] = cdr(arb({u in {[x1,y1]} | car(u) in {x1}})) SIMPLF ==> {[x1,y1]}~[x1] = cdr(arb(if car([x1,y1]) in {x1} then {[x1,y1]} else 0 end if)) ELEM ==> if car([x1,y1]) in {x1} then {[x1,y1]} else 0 end if = {[x1,y1]} EQUAL ==> cdr(arb({[x1,y1]})) = cdr(arb(if car([x1,y1]) in {x1} then {[x1,y1]} else 0 end if)) ELEM ==> {[x1,y1]}~[x] = cdr(arb({[x1,y1]})) ELEM ==> cdr(arb({[x1,y1]})) = y1 Discharge ==> QED -- -- Next we observe that the doubleton ${[x,y],[z,w]}$ is a single-valued map if -- $x /= z$, in which case ${[x,y],[z,w]}~[x] = y$. -- Theorem 92: [Doubletons as maps] Is_map({[X,Y],[Z,W]}) & (domain({[X,Y],[Z,W]}) = {X,Z}) & (range({[X,Y],[Z,W]}) = {Y,W}) & ((X /= Z) ¥imp Svm({[X,Y],[Z,W]})). Proof: Suppose_not(x0,y0,z0,w0) ==> AUTO TELEM ==> Is_map({[x0,y0],[z0,w0]}) TELEM ==> domain({[x0,y0],[z0,w0]}) = {x0,z0} TELEM ==> range({[x0,y0],[z0,w0]}) = {y0,w0} Use_def(Svm) ==> Stat1: (not(FORALL x in {[x0,y0],[z0,w0]}, y in {[x0,y0],[z0,w0]} | (car(x) = car(y)) ¥imp (x = y))) & (x0 /= z0) (x0,y0)-->T9(Stat1*) ==> car([x0,y0]) = x0 (z0,w0)-->T9(Stat1*) ==> car([z0,w0]) = z0 (p,q)-->Stat1(Stat1*) ==> Stat2: (p in {[x0,y0],[z0,w0]}) & (q in {[x0,y0],[z0,w0]}) & (car(p) = car(q)) & (p /= q) Suppose ==> (p = [x0,y0]) & (q = [z0,w0]) EQUAL(Stat1) ==> false Discharge ==> AUTO (Stat2*)ELEM ==> (q = [x0,y0]) & (p = [z0,w0]) EQUAL(Stat1) ==> false Discharge ==> QED -- -- -- Theorem 93: [Doubletons as maps, 2] (X /= Z) ¥imp ({[X,Y],[Z,W]}~[X] = Y). Proof: Suppose_not(x,wz,y,w) ==> Stat1: (x /= wz) & ({[x,y],[wz,w]}~[x] /= y) -- -- To show this, use the definitions of map application, restriction, and range, and then -- simplify, obtaining the equality seen below: -- Use_def(~) ==> {[x,y],[wz,w]}~[x] = cdr(arb({[x,y],[wz,w]} ¥ON {x})) Use_def(¥ON) ==> {[x,y],[wz,w]}~[x] = cdr(arb({v in {[x,y],[wz,w]} | car(v) in {x}})) -- -- It is now easy to see, since $x /= wz$, that ${v in {[x,y],[wz,w]} | car(v) in {x}} /= {[x,y]}$ -- Suppose ==> Stat2: {v in {[x,y],[wz,w]} | car(v) in {x}} /= {[x,y]} ww-->Stat2 ==> Stat3: (ww in {v in {[x,y],[wz,w]} | (car(v) in {x})}) ¥eq (ww /= [x,y]) Suppose ==> Stat4: ww in {v in {[x,y],[wz,w]} | (car(v) in {x})} ()-->Stat4(Stat3) ==> Stat5: (ww = [wz,w]) & (car(ww) = x) (Stat1,Stat5)Discharge ==> Stat6: (ww = [x,y]) & Stat7: (ww notin {v in {[x,y],[wz,w]} | (car(v) in {x})}) (Stat6)ELEM ==> car(ww) in {x} ww-->Stat7 ==> not ((ww in {[x,y],[wz,w]}) & (car(ww) in {x})) (Stat6)Discharge ==> {v in {[x,y],[wz,w]} | car(v) in {x}} = {[x,y]} -- -- Hence, substituting into the third line of our proof, we find that ${[x,y],[wz,w]}~[x] = cdr(arb({[x,y]}))$, -- which simplifies easily to the assertion of our theorem. -- EQUAL ==> {[x,y],[wz,w]}~[x] = cdr(arb({[x,y]})) ELEM ==> arb({[x,y]}) = [x,y] EQUAL ==> {[x,y],[wz,w]}~[x] = cdr([x,y]) Discharge ==> QED -- -- Next we give a simple formula for the restriction of a map. -- Theorem 94: [Domain of restriction] domain(F ¥ON S) = domain(F) * S. Proof: Suppose_not(f,s) ==> not(domain(f ¥ON s) = domain(f) * s) -- -- For if we expand the negative of our theorem using the definitions -- of the functions involved, we see that the two sets displayed below must differ: -- Use_def(domain) ==> {car(x): x in (f ¥ON s)} /= {car(x): x in f} * s Use_def(¥ON) ==> {car(x): x in {x in f | car(x) in s}} /= {car(x): x in f} * s SIMPLF ==> Stat1: {car(x): x in f | car(x) in s} /= {car(x): x in f} * s c-->Stat1 ==> ((c in {car(x): x in f | car(x) in s}) & (c notin {car(x): x in f} * s)) or ((c notin {car(x): x in f | car(x) in s}) & (c in {car(x): x in f} * s)) -- -- This is a disjunction. The first of its cases is impossible, since it would imply that -- $c$ had the form $car(d)$ and was both in $s$ and not in $s$. -- Suppose ==> Stat2: (c in {car(x): x in f | car(x) in s}) & Stat3: (c notin {car(x): x in f} or c notin s) d-->Stat2 ==> (c = car(d)) & (d in f) & (car(d) in s) d-->Stat3 ==> false -- -- Hence we need only consider the second case, but this leads immediately to a similar impossibility, proving our theorem. -- Discharge ==> Stat4: (c notin {car(x): x in f | car(x) in s}) & Stat5: (c in {car(x): x in f}) & (c in s) e-->Stat5 ==> (c = car(e)) & (e in f) e-->Stat4 ==> false; Discharge ==> QED -- -- The following theorem gives formulae for the range and domain of a product map $f @ g$, -- under the simplifying hypothesis that the range of $g$ is included in the domain of $f$. -- Theorem 95: [Range and domain of map product] (range(F @ G) = range(F ¥ON range(G))) & ((range(G) ¥incin domain(F)) ¥imp (domain(F @ G) = domain(G))). Proof: Suppose_not(f,g) ==> Stat1: (range(f @ g) /= range(f ¥ON range(g))) or ((range(g) ¥incin domain(f)) & (domain(f @ g) /= domain(g))) -- -- Proceeding by contradiction, we have two cases to consider. First suppose that the two ranges -- appearing in the theorem are different. Use the definitions -- of the functions involved and simplify. -- Suppose ==> range(f @ g) /= range(f ¥ON range(g)) Use_def(range) ==> range(f @ g) = {cdr(x): x in f @ g} Use_def(@) ==> range(f @ g) = {cdr(x): x in {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}} SIMPLF ==> range(f @ g) = {cdr([car(x),cdr(y)]): x in g, y in f | cdr(x) = car(y)} -- -- But $range(f @ g)$ can be simplified further to ${cdr(x): x in f | car(x) in range(g)}$. -- Suppose ==> Stat2: {cdr([car(x),cdr(y)]): x in g, y in f | cdr(x) = car(y)} /= {cdr(y): x in g, y in f | cdr(x) = car(y)} (ap,bp)-->Stat2 ==> cdr([car(ap),cdr(bp)]) /= cdr(bp) Discharge ==> range(f @ g) = {cdr(y): x in g, y in f | cdr(x) = car(y)} -- -- From this, using the definitions of '$range$' and '$¥ON$', we get the set inequality seen below. -- Use_def(range) ==> range(f ¥ON range(g)) = {cdr(x): x in f ¥ON range(g)} Use_def(¥ON) ==> range(f ¥ON range(g)) = {cdr(x): x in {x in f | car(x) in range(g)}} SIMPLF ==> range(f ¥ON range(g)) = {cdr(x): x in f | car(x) in range(g)} ELEM ==> Stat3: {cdr(y): x in g, y in f | cdr(x) = car(y)} /= {cdr(x): x in f | car(x) in range(g)} -- -- Hence there is a $c$ which is in one of these sets but not the other. -- Suppose first that $c$ is in the first of these sets, and so has the form seen below. -- c-->Stat3 ==> ((c in {cdr(y): x in g, y in f | cdr(x) = car(y)}) & (c notin {cdr(x): x in f | car(x) in range(g)})) or ((c notin {cdr(y): x in g, y in f | cdr(x) = car(y)}) & (c in {cdr(x): x in f | car(x) in range(g)})) Suppose ==> Stat4: (c in {cdr(y): x in g, y in f | cdr(x) = car(y)}) & Stat5: (c notin {cdr(x): x in f | car(x) in range(g)}) (a,b)-->Stat4 ==> (c = cdr(b)) & (a in g) & (b in f) & (cdr(a) = car(b)) -- -- Then by Stat5 $car(b)$ is not in $range(g)$, which, using the definition of $range$, -- leads to an immediate contradiction with Stat6 -- b-->Stat5 ==> car(b) notin range(g) Use_def(range) ==> Stat7: not (car(b) in {cdr(x): x in g}) a-->Stat7 ==> false; -- -- Hence $c$ must be in the second of the sets considered above, -- but not in the first, and so must have the form seen below. -- Discharge ==> Stat8: (c notin {cdr(y): x in g, y in f | cdr(x) = car(y)}) & Stat9: (c in {cdr(x): x in f | car(x) in range(g)}) u-->Stat9 ==> (c = cdr(u)) & (u in f) & (car(u) in range(g)) Use_def(range) ==> Stat10: car(u) in {cdr(x): x in g} v-->Stat10 ==> (car(u) = cdr(v)) & (v in g) -- -- But this leads to an immediate contradiction with Stat8, -- and so rules out the first of our two main cases, -- leaving the only case $domain(f @ g) /= domain(g)$ to be considered. -- (v,u)-->Stat8 ==> not(c = cdr(u) & (u in f) & (v in g) & (cdr(v) = car(u))) Discharge ==> Stat11: range(f @ g) = range(f ¥ON range(g)) (Stat11,Stat1)ELEM ==> domain(f @ g) /= domain(g) -- -- This can be handled in much the same way as the case just analyzed. Using the definitions -- of the functions involved, we see that the two sets displayed below must differ. -- Use_def(domain) ==> {car(x): x in f @ g} /= {car(x): x in g} Use_def(@) ==> {car(x): x in {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}} /= {car(x): x in g} SIMPLF ==> {car([car(x),cdr(y)]): x in g, y in f | cdr(x) = car(y)} /= {car(x): x in g} (car(X),cdr(Y))-->T7 ==> car([car(X),cdr(Y)]) = car(X) EQUAL ==> Stat12: {car(x): x in g, y in f | cdr(x) = car(y)} /= {car(x): x in g} -- -- Hence there is a $ca$ which is in one of these sets but not the other. -- Suppose first that $ca$ is in the first of these sets, and so has the form seen below. -- ca-->Stat12 ==> ((ca in {car(x): x in g, y in f | cdr(x) = car(y)}) & (ca notin {car(x): x in g})) or ((ca notin {car(x): x in g, y in f | cdr(x) = car(y)}) & (ca in {car(x): x in g})) Suppose ==> Stat13: (ca in {car(x): x in g, y in f | cdr(x) = car(y)}) & Stat14: (ca notin {car(x): x in g}) -- -- Then by Stat15 $car(ba)$ is not in ${car(x): x in f}$, -- which leads to an immediate contradiction. -- (aa,ba)-->Stat13 ==> (ca = car(aa)) & (aa in g) & (ba in f) & (cdr(aa) = car(ba)) aa-->Stat14 ==> false Discharge ==> Stat16: (ca notin {car(x): x in g, y in f | cdr(x) = car(y)}) & Stat17: (ca in {car(x): x in g}) -- -- Hence $ca$ must be in the second of the sets considered above, -- but not in the first. Thus $ca$ must have the form $car(x)$ for some $x in g$. -- Since $cdr(x)$ belongs to $range(g) ¥incin domain(f)$, it follows that -- $cdr(x) = car(y)$ for some $y in f$. Substitution of $x$ and $y$ into -- Stat18 31 now leads immediately to a contradiction which completes our proof. -- x-->Stat17 ==> (ca = car(x)) & (x in g) Suppose ==> Stat19: cdr(x) notin {cdr(x): x in g} x-->Stat19 ==> false; Discharge ==> cdr(x) in {cdr(x): x in g} Use_def(range) ==> cdr(x) in range(g) ELEM ==> cdr(x) in domain(f) Use_def(domain) ==> Stat20: cdr(x) in {car(y): y in f} y-->Stat20 ==> (cdr(x) = car(y)) & (y in f) (x,y)-->Stat16 ==> false; Discharge ==> QED -- -- If the range of $g$ equals the domain of $f$, the following slightly stronger corollary -- to the preceding result applies. The proof simply combines Theorem 95 and Theorem 67. -- Theorem 96: [Range and domain of map product, 2] (range(G) = domain(F)) ¥imp ((range(F @ G) = range(F)) & (domain(F @ G) = domain(G))). Proof: Suppose_not(g,f) ==> (range(g) = domain(f)) & (not((range(f @ g) = range(f)) & (domain(f @ g) = domain(g)))) (f,g)-->T95 ==> (range(f @ g) = range(f ¥ON range(g))) & (domain(f @ g) = domain(g)) EQUAL ==> (range(f @ g) = range(f ¥ON domain(f))) & (domain(f @ g) = domain(g)) f-->T67 ==> (f ¥ON domain(f)) = f EQUAL ==> range(f ¥ON domain(f)) = range(f) Discharge ==> QED -- -- It is sometimes convenient to use the following corollary of Theorem 95 -- rather than the theorem itself. -- Theorem 97: [Range and domain of map product, 3] (range(G) ¥incin domain(F)) ¥imp ((range(F @ G) ¥incin range(F)) & (domain(F @ G) = domain(G))). Proof: Suppose_not(g,f) ==> Stat1: (range(g) ¥incin domain(f)) & ((not(range(f @ g) ¥incin range(f))) or domain(f @ g) /= domain(g)) (f,g)-->T95 ==> (range(f @ g) = range(f ¥ON range(g))) & (domain(f @ g) = domain(g)) ELEM ==> not(range(f ¥ON range(g)) ¥incin range(f)) (f,range(g))-->T80 ==> false; Discharge ==> QED -- -- Our next easy theorem tells us that a 1-1 map, combined with the 'range' operator, -- induces a 1-1 map on the set of subsets of its domain. -- Theorem 98: [Range of restriction of one-one map] (one_1_map(F) & (S ¥incin domain(F)) & (S /= domain(F))) ¥imp ((range(F ¥ON S) ¥incin range(F)) & (range(F ¥ON S) /= range(F))). Proof: Suppose_not(f,s) ==> one_1_map(f) & (s ¥incin domain(f)) & Stat1: (s /= domain(f)) & (not((range(f ¥ON s) ¥incin range(f)) & (range(f ¥ON s) /= range(f)))) (f,s)-->T80 ==> range(f ¥ON s) = range(f) c-->Stat1 ==> (c in domain(f)) & (c notin s) Use_def(domain) ==> Stat2: c in {car(x): x in f} x-->Stat2 ==> (c = car(x)) & (x in f) Use_def(range) ==> range(f) = {cdr(x): x in f} Suppose ==> cdr(x) notin range(f) ELEM ==> Stat3: cdr(x) notin {cdr(x): x in f} x-->Stat3 ==> false; Discharge ==> cdr(x) in range(f ¥ON s) Use_def(range) ==> cdr(x) in {cdr(x): x in (f ¥ON s)} Use_def(¥ON) ==> cdr(x) in {cdr(x): x in {y in f | car(y) in s}} SIMPLF ==> Stat4: cdr(x) in {cdr(y): y in f | car(y) in s} y-->Stat4 ==> (cdr(x) = cdr(y)) & (y in f) & (car(y) in s) Use_def(one_1_map) ==> Stat5: (FORALL x in f, y in f | (cdr(x) = cdr(y)) ¥imp (x = y)) (x,y)-->Stat5 ==> x = y Discharge ==> QED -- -- Next we turn to a discussion of map inverses. The following theorem tells us that -- the inverse of a map $f$ is always a map, whose range and domain are respectively the domain and range of $f$. -- Theorem 99: [Inverse map basic properties] Is_map(inv(F)) & range(inv(F)) = domain(F) & domain(inv(F)) = range(F). Proof: Suppose_not(f) ==> not(Is_map(inv(f)) & range(inv(f)) = domain(f) & domain(inv(f)) = range(f)) -- -- For by our utility $Iz_map$ theory $inv(f)$ must clearly be a map. -- Use_def(inv) ==> inv(f) = {[cdr(x),car(x)]: x in f} APPLY() Iz_map(a(x)->cdr(x),b(x)->car(x),s->f) ==> Is_map({[cdr(x),car(x)]: x in f}) EQUAL ==> Is_map(inv(f)) ELEM ==> not((range(inv(f)) = domain(f)) & (domain(inv(f)) = range(f))) -- -- If $range(inv(f))$ and $domain(f)$ are different, then by definition the two sets -- seen below are different, so that there exists a $y$ such that -- $cdr([cdr(y),car(y)]) /= car(y)$, another impossibility, leaving only the -- third alternative $domain(inv(f)) /= range(f)$ to be considered. -- Suppose ==> range(inv(f)) /= domain(f) Use_def(range) ==> {cdr(x): x in inv(f)} /= domain(f) Use_def(domain) ==> {cdr(x): x in inv(f)} /= {car(x): x in f} EQUAL ==> {cdr(x): x in {[cdr(x),car(x)]: x in f}} /= {car(x): x in f} SIMPLF ==> Stat1: {cdr([cdr(x),car(x)]): x in f} /= {car(x): x in f} y-->Stat1 ==> (y in f) & (cdr([cdr(y),car(y)]) /= car(y)) Discharge ==> domain(inv(f)) /= range(f) -- -- But $domain(inv(f)) /= range(f)$ leads to the third set inequality seen below, and through it to -- the impossible inequality $car([cdr(u),car(u)]) /= cdr(u)$, -- a contradiction which proves our theorem. -- Use_def(range) ==> domain(inv(f)) /= {cdr(x): x in f} Use_def(domain) ==> {car(x): x in inv(f)} /= {cdr(x): x in f} EQUAL ==> {car(x): x in {[cdr(x),car(x)]: x in f}} /= {cdr(x): x in f} SIMPLF ==> Stat2: {car([cdr(x),car(x)]): x in f} /= {cdr(x): x in f} u-->Stat2 ==> car([cdr(u),car(u)]) /= cdr(u) Discharge ==> QED -- -- Next we show that the iterated inverse of a map is the map itself. -- This follows in an elementary way from the definitions involved, -- by an evident set-theoretic simplification. -- Theorem 100: [Double inverse map] Is_map(F) ¥imp (F = inv(inv(F))). Proof: Suppose_not(f) ==> Is_map(f) & (f /= inv(inv(f))) Use_def(Is_map) ==> (f = {[car(x),cdr(x)]: x in f}) & (f /= inv(inv(f))) Use_def(inv) ==> (f = {[car(x),cdr(x)]: x in f}) & (f /= {[cdr(x),car(x)]: x in {[cdr(y),car(y)]: y in f}}) SIMPLF ==> {[cdr(x),car(x)]: x in {[cdr(y),car(y)]: y in f}} = {[cdr([cdr(y),car(y)]),car([cdr(y),car(y)])]: y in f} Set_monot ==> {[cdr([cdr(y),car(y)]),car([cdr(y),car(y)])]: y in f} = {[car(y),cdr(y)]: y in f} ELEM ==> f /= {[car(x),cdr(x)]: x in f} Discharge ==> QED -- -- The following theorem tells us that if a map is one-to-one, so is its inverse. -- The result follows easily by use of the two preceding theorems and use of the $one_1_test$ -- THEORY given earlier. -- Theorem 101: [Inverse of a one-one map] one_1_map(F) ¥imp (one_1_map(inv(F)) & (F = inv(inv(F))) & (range(inv(F)) = domain(F)) & (domain(inv(F)) = range(F))). Proof: Suppose_not(f) ==> Stat1: one_1_map(f) & (not ((one_1_map(inv(f)) & (f = inv(inv(f))) & (range(inv(f)) = domain(f)) & (domain(inv(f)) = range(f))))) Use_def(one_1_map) ==> Svm(f) Use_def(Svm) ==> Is_map(f) -- -- Suppose that one of the assertions of our theorem is false. Theorem 99 and Theorem 100 -- this can only be the assertion concerning one-to-one-ness of $inv(f)$. -- f-->T99 ==> not (one_1_map(inv(f)) & (f = inv(inv(f)))) Suppose ==> one_1_map(inv(f)) Use_def(one_1_map) ==> Svm(inv(f)) f-->T100 ==> f = inv(inv(f)) Discharge ==> not one_1_map(inv(f)) Use_def(inv) ==> not one_1_map({[cdr(x),car(x)]: x in f}) -- -- Since $inv(f)$ can be expressed as a setformer, the $one_1_test$ theory given earlier -- tells us that $f$ must have elements $x$ and $y$ for which -- $cdr(x) = cdr(y)$ and $x = y$ are inequivalent. -- APPLY(x6_thryvar:x,y6_thryvar:y) one_1_test(a(x)->car(x),b(x)->cdr(x),s->f) ==> (((x in f) & (y in f) & (not((cdr(x) = cdr(y)) ¥eq (car(x) = car(y))))) or one_1_map({[cdr(x),car(x)]: x in f})) ELEM ==> not((cdr(x) = cdr(y)) ¥eq (car(x) = car(y))) -- -- But using the definition of $one_1_map$ we see at once that this is impossible, -- a contradiction which proves our theorem. -- Use_def(one_1_map) ==> Svm(f) & Stat2: (FORALL x in f, y in f | (cdr(x) = cdr(y)) ¥imp (x = y)) Use_def(Svm) ==> Is_map(f) & Stat3: (FORALL x in f, y in f | (car(x) = car(y)) ¥imp (x = y)) (x,y)-->Stat2 ==> (cdr(x) = cdr(y)) ¥imp (x = y) (x,y)-->Stat3 ==> (car(x) = car(y)) ¥imp (x = y) EQUAL ==> (x = y) ¥imp (car(x) = car(y)) Discharge ==> QED -- -- Next we prove that for any one-to-one map, the inverse map is a functional left inverse. -- Theorem 102: [Inverse image of an element] (one_1_map(F) & (X in domain(F))) ¥imp (inv(F)~[F~[X]] = X). Proof: Suppose_not(f,x) ==> one_1_map(f) & (x in domain(f)) & (inv(f)~[f~[x]] /= x) -- -- We proceed by contradiction. Suppose that the 1-1 map $f$ has a domain element -- $car(c)$ such that $inv(f)~[f~[car(c)]]$ = $inv(f)~[cdr(c)] /= car(c)$, where $c in f$. -- Use_def(domain) ==> Stat1: x in {car(y): y in f} c-->Stat1 ==> (c in f) & (x = car(c)) Use_def(one_1_map) ==> Svm(f) (f,c)-->T74 ==> f~[car(c)] = cdr(c) EQUAL ==> Stat2: inv(f)~[cdr(c)] /= car(c) -- -- Theorem 101 tells us that $inv(f)$ is a 1-1 map, and thus single-valued. -- $[cdr(c),car(c)]$ must clearly belong to $inv(f)$. But then Theorem 74 tells us that -- $(inv(f)~[car([cdr(c),car(c)])]) = cdr([cdr(c),car(c)])$. -- This simplifies to $inv(f)~[cdr(c)] = car(c)$, contradicting our initial assumption, -- and so proving the present theorem. -- f-->T101 ==> one_1_map(inv(f)) Use_def(one_1_map) ==> Svm(inv(f)) Suppose ==> [cdr(c),car(c)] notin inv(f) Use_def(inv) ==> Stat3: [cdr(c),car(c)] notin {[cdr(x),car(x)]: x in f} c-->Stat3 ==> (not c in f) or [cdr(c),car(c)] /= [cdr(c),car(c)] Discharge ==> [cdr(c),car(c)] in inv(f) (inv(f),[cdr(c),car(c)])-->T74 ==> (inv(f)~[car([cdr(c),car(c)])]) = cdr([cdr(c),car(c)]) ELEM ==> car([cdr(c),car(c)]) = cdr(c) EQUAL ==> inv(f)~[cdr(c)] = cdr([cdr(c),car(c)]) (Stat2)Discharge ==> QED -- -- Our next theorem extends the preceding result by showing that -- for elements in the range of $f$, the inverse map is a functional right inverse. -- Theorem 103: [Inverse image of an element's map image] one_1_map(F) ¥imp (((X in domain(F)) ¥imp (inv(F)~[F~[X]] = X)) & ((X in range(F)) ¥imp (F~[inv(F)~[X]] = X))). Proof: Suppose_not(f,c) ==> one_1_map(f) & Stat1: (((c in domain(f)) & (inv(f)~[f~[c]] /= c)) or ((c in range(f)) & (f~[inv(f)~[c]] /= c))) -- -- For, supposing the contrary, there must either be a $c$ in the domain of $f$ -- for which $inv(f)~[f~[c]] /= c$, or a $c$ in the range of $f$ for which $f~[inv(f)~[c]] /= c$. -- (f,c)-->T102 ==> (c in domain(f)) ¥imp (inv(f)~[f~[c]] = c) -- -- However, Theorem 102 rules out the first possibility, and, -- combined with Theorem 101, rules out the second possibility also, -- thereby proving our theorem. -- f-->T101 ==> one_1_map(inv(f)) & (domain(inv(f)) = range(f)) & (f = inv(inv(f))) (inv(f),c)-->T102 ==> (c in domain(inv(f))) ¥imp (inv(inv(f))~[inv(f)~[c]] = c) EQUAL ==> one_1_map(inv(f)) ¥imp ((c in range(f)) ¥imp (f~[inv(f)~[c]] = c)) Discharge ==> QED -- -- Our next small theory captures a simplification of nested setformer -- similar to the one performed by SIMPLF inference, but where iterators -- occur in inverse order. -- THEORY setformer_unravel(e(f),s,g(y)) END setformer_unravel -- ENTER_THEORY setformer_unravel -- Theorem setformer_unravel1: {x: y in {e(f): f in s}, x in g(y)} = {x: f in s, x in g(e(f))}. Proof: Suppose_not ==> Stat1: {x: y in {e(f): f in s}, x in g(y)} /= {x: f in s, x in g(e(f))} u-->Stat1 ==> (u in {x: y in {e(f): f in s}, x in g(y)}) ¥neq (u in {x: f in s, x in g(e(f))}) Suppose ==> Stat2: (u in {x: y in {e(f): f in s}, x in g(y)}) & Stat3: (u notin {x: f in s, x in g(e(f))}) (y,x)-->Stat2(Stat2*) ==> Stat4: (y in {e(f): f in s}) & (x in g(y)) & (u = x) f-->Stat4(Stat2*) ==> (y = e(f)) & (f in s) EQUAL(Stat4*) ==> u in g(e(f)) (f,u)-->Stat3(Stat2*) ==> false; Discharge ==> Stat5: (u in {x: f in s, x in g(e(f))}) & (u notin {x: y in {e(f): f in s}, x in g(y)}) (fp,xp,e(fp),xp)-->Stat5(Stat5*) ==> Stat6: (fp in s) & Stat7: (e(fp) notin {e(f): f in s}) fp-->Stat7(Stat6*) ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The following summarizes what has just been proved. -- --DISPLAY setformer_unravel -- --THEORY setformer_unravel(e(f),s,g(y)) --==> -- {x: y in {e(f): f in s}, x in g(y)} = {x: f in s, x in g(e(f))} --END setformer_unravel -- -- ================ Basic laws concerning union-set ================================== -- Theorem 104: [binary intersection distributes over monadic union] Un(F) * X = Un({y * X : y in F}). Proof: Suppose_not(f,c) ==> Stat1: Un(f) * c /= Un({y * c : y in f}) e-->Stat1 ==> (e in Un(f) * c) ¥neq (e in Un({y * c : y in f})) -- -- Arguing by contradiction, assume that $f,c$ are a counterexample to -- the desired conclusion, so that we can choose a differentiator $e$ of -- $Un({y * c : y in f})$ and $Un(f)$; recall, then, the definitions of -- $Un({y * c : y in f}),Un(f)$, and simplify the formulation of the -- former. -- Use_def(Un({y * c : y in f})) ==> AUTO SIMPLF ==> Un({y * c : y in f}) = {u: y in f, u in y * c} Use_def(Un(f)) ==> AUTO Suppose ==> Stat2: (e in {u: y in f, u in y * c}) & (e notin {u: v in f, u in v} * c) -- -- If we suppose that the above-chosen differentiator $e$ belongs to -- $Un({y * c : y in f})$, we reach a contradiction. -- (y0,u0)-->Stat2(Stat2*) ==> Stat3: (e notin {u: v in f, u in v}) & (y0 in f) & (e in y0) (y0,e)-->Stat3(Stat3*) ==> false Discharge ==> Stat4: (e in {u: v in f, u in v}) & (e notin {u: y in f, u in y * c}) & (e in c) -- -- Even more readily we get a contradiction if we assume that the -- differentiator belongs to $Un(f) + c$. -- (v1,u1,v1,u1)-->Stat4(Stat4*) ==> false Discharge ==> QED -- Theorem 105: [membership in unionset] (X in Un(Y)) ¥eq ({v in Y | X in v} /= 0). Proof: Suppose_not(x0,y0) ==> AUTO Use_def(Un) ==> (x0 in {u: v in y0, u in v}) ¥eq ({v in y0 | x0 in v} = 0) Suppose ==> Stat1: (x0 in {u: v in y0, u in v}) & ({v in y0 | x0 in v} = 0) (v,u,v)-->Stat1(Stat1*) ==> false Discharge ==> Stat2: ({v in y0 | x0 in v} /= 0) & (x0 notin {u: v in y0, u in v}) (w,w,x0)-->Stat2(Stat2*) ==> false Discharge ==> QED -- Theorem 106: [Union set of a doubleton] Un({X,Y}) = (X + Y). Proof: Suppose_not(u,v) ==> AUTO Use_def(Un) ==> Stat1: {x: y in {u,v}, x in y} /= (u + v) c-->Stat1 ==> (c in {x: y in {u,v}, x in y}) ¥neq (c in (u+v)) Suppose ==> Stat2: c in {x: y in {u,v}, x in y} (y,x)-->Stat2 ==> (y in {u,v}) & (c in y) Suppose ==> y = u Discharge ==> y = v Discharge ==> Stat3: c notin {x: y in {u,v}, x in y} Suppose ==> c in u (u,c)-->Stat3(Stat3*) ==> false; Discharge ==> c in v (v,c)-->Stat3(Stat3*) ==> false; Discharge ==> QED -- Theorem 107: [Union set of a singleton] Un({X}) = X. Proof: Suppose_not(x) ==> AUTO (x,x)-->T106 ==> (Un({x,x}) = x) & ({x,x} = {x}) EQUAL ==> false; Discharge ==> QED -- Theorem 108: [Recursive relationship for the union set] (Un(0) = 0) & ((X in M) ¥imp (Un(M) = (X + Un(M - {X})))). Proof: -- -- For, if not, there would be a counterexample $m$ to the second part of the -- statement, since the first part of the statement trivially follows from -- the very definition of the union-set operator. -- Suppose_not(x0,m) ==> AUTO Suppose ==> Un(0) /= 0 Use_def(Un) ==> Stat1: {x: y in 0, x in y} /= 0 (c,y)-->Stat1 ==> Stat2: y in 0 -- -- Every non-null set $m$, and in particular our counterexample, can be -- decomposed as disjoint union $m = {x} + (m - {x})$, where $x$ is any -- member of $m$. -- (Stat2)Discharge ==> Stat3: (m = ({x0} + (m - {x0}))) & (Un(m) /= (x0 + Un(m - {x0}))) -- -- However, the union-set of the union of two disjoint sets equals the union of their -- respective union-sets; in our case, when one of the two sets is singleton and hence -- its member equals its union-set, this tells us that $Un(m) = x0 + Un(m-{x0})$ -- and hence leads to a contradiction. -- Use_def(Un)(Stat3*) ==> Stat4: {x: y in m, x in y} /= (x0 + {x: y in (m - {x0}), x in y}) b-->Stat4(Stat4*) ==> Stat5: ((b notin {x: y in m, x in y}) ¥eq ((b in x0) or (b in {x: y in (m - {x0}), x in y}))) Suppose ==> Stat6: (b in {x: y in m, x in y}) & (b notin x0) & (b notin {x: y in (m - {x0}), x in y}) (u,x)-->Stat6(Stat6) ==> Stat7: (u in m) & (b in u) & (u in (m - {x0})) (w,v,u,b)-->Stat6 ==> Stat8: b notin u (Stat7,Stat8*)Discharge ==> Stat9: (b notin {x: y in m, x in y}) & ((b in x0) or (b in {x: y in (m - {x0}), x in y})) Suppose ==> Stat10: b in x0 (x0,b)-->Stat9(Stat3,Stat10*) ==> false; Discharge ==> Stat11: b in {x: y in (m - {x0}), x in y} (ww,xx)-->Stat11(Stat11*) ==> (ww in (m - {x0})) & (b in ww) (ww,b)-->Stat9(Stat9*) ==> false Discharge ==> QED -- Theorem 109: [Recursive relationship for the union set, 2] (Un(0) = 0) & ((M /= 0) ¥imp (Un(M) = (arb(M) + Un(M - {arb(M)})))). Proof: Suppose_not(m) ==> AUTO (arb(m),m)-->T108 ==> false Discharge ==> QED -- THEORY unionset_commuter(e(x),s) END unionset_commuter -- ENTER_THEORY unionset_commuter -- Theorem unionset_commuter1: [Set separation and unionset formation commute] {e(x): x in Un(s)} = Un({{e(x): x in f}: f in s}). Proof: Suppose_not ==> Stat1: {e(x): x in Un(s)} /= Un({{e(x): x in f}: f in s}) p-->Stat1 ==> (p in {e(x): x in Un(s)}) ¥neq (p in Un({{e(u): u in f}: f in s})) Use_def(Un) ==> (p in {e(x): x in {q: f in s, q in f}}) ¥neq (p in {x: y in {{e(u): u in f}: f in s}, x in y}) APPLY() setformer_unravel(e(f)->{e(u): u in f},s->s,g(y)->y) ==> {x: y in {{e(u): u in f}: f in s}, x in y} = {x: f in s, x in {e(u): u in f}} SIMPLF ==> {x: y in {{e(u): u in f}: f in s}, x in y} = {e(u): f in s, u in f} SIMPLF ==> {e(x): x in {q: f in s, q in f}} = {e(q): f in s, q in f} Discharge ==> QED -- Theorem unionset_commuter2: [Set formation and set enumeration commute] {e(x): x in s} = Un({{e(x)}: x in s}). Proof: Suppose_not ==> Stat1: {e(x): x in s} /= Un({{e(x)}: x in s}) p-->Stat1 ==> (p in {e(x): x in s}) ¥neq (p in Un({{e(f)}: f in s})) Use_def(Un) ==> (p in {e(x): x in s}) ¥neq (p in {x: y in {{e(f)}: f in s}, x in y}) APPLY() setformer_unravel(e(f)->{e(f)},s->s,g(y)->y) ==> {x: y in {{e(f)}: f in s}, x in y} = {x: f in s, x in {e(f)}} SIMPLF ==> {x: y in {{e(f)}: f in s}, x in y} = {x: f in s, x in {e(f)}} SIMPLF ==> {x: f in s, x in {e(f)}} = {e(f): f in s} Discharge ==> QED -- Theorem unionset_commuter3: [setformers whose iteration variable is bounded by 0 designate 0] {e(x): x in 0} = 0. Proof: Suppose_not ==> Stat1: {e(x): x in 0} /= 0 c-->Stat1 ==> Stat2: c in {e(x): x in 0} d-->Stat2 ==> false; Discharge ==> QED -- Theorem unionset_commuter4: [setformers whose iteration variable is bounded by a doubleton designate doubletons] {e(x): x in {s,T}} = {e(s),e(T)}. Proof: Suppose_not(t) ==> AUTO Suppose ==> Stat1: e(s) notin {e(x): x in {s,t}} s-->Stat1 ==> false; Discharge ==> AUTO Suppose ==> Stat2: e(t) notin {e(x): x in {s,t}} t-->Stat2 ==> false; Discharge ==> Stat3: not({e(x): x in {s,t}} ¥incin {e(s),e(t)}) c-->Stat3(Stat3*) ==> Stat4: (c in {e(x): x in {s,t}}) & (c /= e(s)) & (c /= e(t)) x-->Stat4(Stat4*) ==> (x in {s,t}) & (c = e(x)) Suppose ==> x = s EQUAL(Stat4) ==> false; Discharge ==> x = t EQUAL(Stat4) ==> false; Discharge ==> QED -- Theorem unionset_commuter5: [setformers whose iteration variable is bounded by a singleton designate singletons] {e(x): x in {s}} = {e(s)}. Proof: Suppose_not ==> AUTO (s,s)-->Tunionset_commuter4 ==> {e(x): x in {s,s}} = {e(s),e(s)} ELEM ==> ({s,s} = {s}) & ({e(s),e(s)} = {e(s)}) EQUAL ==> false; Discharge ==> QED -- Theorem unionset_commuter6: [split of setformer over union-bounded iterator] {e(x): x in (s + T)} = {e(x): x in s} + {e(x): x in T}. Proof: Suppose_not(t) ==> AUTO APPLY() unionset_commuter(e(x)->e(x),s->{s,t}) ==> {e(x): x in Un({s,t})} = Un({{e(x): x in f}: f in {s,t}}) APPLY() unionset_commuter(e(f)->{e(u): u in f},s->s) ==> Stat1: (FORALL t | {{e(u): u in f}: f in {s,t}} = {{e(u): u in s},{e(u): u in t}}) t-->Stat1(Stat1*) ==> {{e(u): u in f}: f in {s,t}} = {{e(u): u in s},{e(u): u in t}} ({e(x): x in s},{e(x): x in t})-->T106 ==> Un({{e(x): x in s},{e(x): x in t}}) = ({e(x): x in s} + {e(x): x in t}) (s,t)-->T106 ==> Un({s,t}) = (s + t) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY unionset_commuter -- --THEORY unionset_commuter(e(x),s) -- {e(x): x in Un(s)} = Un({{e(x): x in f}: f in s}) -- {e(x): x in s} = Un({{e(x)}: x in s}) -- {e(x): x in 0} = 0 -- (FORALL t | {e(x): x in {s,t}} = {e(s),e(t)}) -- {e(x): x in {s}} = {e(s)} -- (FORALL t | {e(x): x in (s + t)} = {e(x): x in s} + {e(x): x in t}) --END unionset_commuter -- -- Our next theorems state that the unionset operator -- commutes with the map inversion operator, and with -- range and domain operations. -- Theorem 110: [Map inversion and unionset formation commute] inv(Un(S)) = Un({inv(f): f in S}). Proof: Suppose_not(s) ==> AUTO APPLY() unionset_commuter(e(x)->[cdr(x),car(x)],s->s) ==> {[cdr(x),car(x)]: x in Un(s)} = Un({{[cdr(x),car(x)]: x in f}: f in s}) Use_def(inv) ==> false Discharge ==> QED -- Theorem 111: [Map inversion and the union operation commute] inv(X + Y) = inv(X) + inv(Y). Proof: Suppose_not(x0,y0) ==> AUTO Use_def(inv) ==> Stat1: {[cdr(v),car(v)]: v in (x0 + y0)} /= ({[cdr(v),car(v)]: v in x0} + {[cdr(v),car(v)]: v in y0}) u-->Stat1(Stat1*) ==> (u in {[cdr(v),car(v)]: v in (x0 + y0)}) ¥neq (u in ({[cdr(v),car(v)]: v in x0} + {[cdr(v),car(v)]: v in y0})) Suppose ==> Stat2: (u in {[cdr(v),car(v)]: v in x0}) & (u notin {[cdr(v),car(v)]: v in (x0 + y0)}) (v0,v0)-->Stat2(Stat2*) ==> false Discharge ==> AUTO Suppose ==> Stat3: (u in {[cdr(v),car(v)]: v in y0}) & (u notin {[cdr(v),car(v)]: v in (x0 + y0)}) (v1,v1)-->Stat3(Stat3*) ==> false Discharge ==> AUTO (Stat1*)ELEM ==> Stat4: (u in {[cdr(v),car(v)]: v in (x0 + y0)}) & (u notin {[cdr(v),car(v)]: v in x0}) & (u notin {[cdr(v),car(v)]: v in y0}) (v2,v2,v2)-->Stat4(Stat4*) ==> false Discharge ==> QED -- Theorem 112: [Range formation and unionset formation commute] range(Un(S)) = Un({range(f): f in S}). Proof: Suppose_not(s) ==> AUTO APPLY() unionset_commuter(e(x)->cdr(x),s->s) ==> {cdr(x): x in Un(s)} = Un({{cdr(x): x in f}: f in s}) Use_def(range) ==> false Discharge ==> QED -- Theorem 113: [Domain formation and unionset formation commute] domain(Un(S)) = Un({domain(f): f in S}). Proof: Suppose_not(s) ==> AUTO APPLY() unionset_commuter(e(x)->car(x),s->s) ==> {car(x): x in Un(s)} = Un({{car(x): x in f}: f in s}) Use_def(domain) ==> false Discharge ==> QED -- -- Also note that the domain and range of ${[x,y],[u,v]}$ are ${x,u}$ and ${y,v}$, respectively. -- Theorem 114: [Domain and range of singleton and doubleton maps] (domain({[X,Y]}) = {X}) & (range({[X,Y]}) = {Y}) & (domain({[X,Y],[U,V]}) = {X,U}) & (range({[X,Y],[U,V]}) = {Y,V}). Proof: Suppose_not(x0,y0,u,v) ==> AUTO APPLY() unionset_commuter(e(x)->car(x),s->([x0,y0])) ==> Stat1: {car(x): x in {[x0,y0]}} = {car([x0,y0])} TELEM ==> Stat2: car([x0,y0]) = x0 Use_def(domain)(Stat3*) ==> Stat3: domain({[x0,y0]}) = {car(x): x in {[x0,y0]}} EQUAL(Stat1) ==> domain({[x0,y0]}) = {x0} APPLY() unionset_commuter(e(x)->cdr(x),s->([x0,y0])) ==> Stat4: {cdr(x): x in {[x0,y0]}} = {cdr([x0,y0])} TELEM ==> Stat5: cdr([x0,y0]) = y0 Use_def(range)(Stat6*) ==> Stat6: range({[x0,y0]}) = {cdr(x): x in {[x0,y0]}} EQUAL(Stat4) ==> range({[x0,y0]}) = {y0} APPLY() unionset_commuter(e(x)->car(x),s->([x0,y0])) ==> Stat7: (FORALL t | {car(x): x in {[x0,y0],t}} = {car([x0,y0]),car(t)}) ([u,v])-->Stat7(Stat7*) ==> Stat8: {car(x): x in {[x0,y0],[u,v]}} = {car([x0,y0]),car([u,v])} TELEM ==> Stat9: car([u,v]) = u Use_def(domain)(Stat10*) ==> Stat10: domain({[x0,y0],[u,v]}) = {car(x): x in {[x0,y0],[u,v]}} EQUAL(Stat8,Stat9,Stat10,Stat2) ==> domain({[x0,y0],[u,v]}) = {x0,u} APPLY() unionset_commuter(e(x)->cdr(x),s->([x0,y0])) ==> Stat11: (FORALL t | {cdr(x): x in {[x0,y0],t}} = {cdr([x0,y0]),cdr(t)}) ([u,v])-->Stat11(Stat11*) ==> Stat12: {cdr(x): x in {[x0,y0],[u,v]}} = {cdr([x0,y0]),cdr([u,v])} TELEM ==> Stat13: cdr([u,v]) = v Use_def(range)(Stat14*) ==> Stat14: range({[x0,y0],[u,v]}) = {cdr(x): x in {[x0,y0],[u,v]}} EQUAL(Stat12,Stat13,Stat14,Stat5) ==> range({[x0,y0],[u,v]}) = {y0,v} Discharge ==> QED -- -- -- Inverse maps often occur together with identity maps, -- whose (entirely elementary) properties are collected in the following theorem. -- Theorem 115: [Elementary properties of identity maps] one_1_map(ident(S)) & (domain(ident(S)) = S) & (range(ident(S)) = S) & (inv(ident(S)) = ident(S)) & ((X in S) ¥imp (ident(S)~[X] = X)) & (Is_map(F) ¥imp (((domain(F) ¥incin S) ¥imp (F @ ident(S) = F)) & ((range(F) ¥incin S) ¥imp (ident(S) @ F = F)))). Proof: Suppose_not(s,x,f) ==> Stat1: (not one_1_map(ident(s))) or (domain(ident(s)) /= s) or (range(ident(s)) /= s) or (inv(ident(s)) /= ident(s)) or ((x in s) & (ident(s)~[x] /= x)) or (Is_map(f) & (domain(f) ¥incin s) & ((f @ ident(s)) /= f)) or (Is_map(f) & (range(f) ¥incin s) & ((ident(s) @ f) /= f)) -- -- Proceeding by contradiction, we shall show successively -- that none of the clauses of our theorem can be false. -- Indeed, it follows immediately using the $one_1_test$ developed -- earlier that the first clause cannot be false. -- Use_def(ident) ==> ident(s) = {[x,x]: x in s} APPLY(x6_thryvar:xx,y6_thryvar:y) one_1_test(a(x)->x,b(x)->x,s->s) ==> ((not((xx = y) ¥eq (xx = y))) or one_1_map({[x,x]: x in s})) ELEM ==> one_1_map({[x,x]: x in s}) EQUAL ==> Stat2: one_1_map(ident(s)) -- -- In equally direct fashion, our 'fcn_symbol' theory tells us that neither the second, the -- third, or the fifth clause of our theorem can be false. -- -- (FORALL x in OM | (x in s) ¥imp (g~[x] = f(x))) -- (FORALL x in OM | (x notin s) ¥imp (g~[X] = 0)) -- (FORALL x in OM | g~[x] = if x in s then f(x) else 0 end if) -- APPLY(x9_thryvar:u,y9_thryvar:v) fcn_symbol(f(x)->x,g->ident(s),s->s) ==> Svm(ident(s)) & (range(ident(s)) = {x: x in s}) & (domain(ident(s)) = s) & Stat3: (FORALL x | (x in s) ¥imp (ident(s)~[x] = x)) & (((u in s) & (v in s) & (u = v) & (v /= v)) or one_1_map(ident(s))) x-->Stat3 ==> (x in s) ¥imp (ident(s)~[x] = x) SIMPLF ==> Stat4: (range(ident(s))) = s (Stat2)ELEM ==> (range(ident(s)) = s) & (domain(ident(s)) = s) & ((x in domain(ident(s))) ¥imp (ident(s)~[x] = x)) & one_1_map(ident(s)) -- -- We hence see that the only clauses of our original assumption which could be false are -- the fourth clause and the two final clauses. -- (Stat2)ELEM ==> Stat5: (range(ident(s)) = s) & (domain(ident(s)) = s) & ((x in domain(ident(s))) ¥imp (ident(s)~[x] = x)) & one_1_map(ident(s)) EQUAL ==> Stat6: (range(ident(s)) = s) & (domain(ident(s)) = s) & ((x in s) ¥imp (ident(s)~[x] = x)) & one_1_map(ident(s)) (Stat1,Stat6)ELEM ==> Stat7: ((inv(ident(s)) /= ident(s)) or (Is_map(f) & (domain(f) ¥incin s) & ((f @ ident(s)) /= f)) or (Is_map(f) & (range(f) ¥incin s) & ((ident(s) @ f) /= f))) -- -- Use of the definition of $inv$ and an elementary simplification -- shows immediately that the fourth clause cannot be false. -- Suppose ==> inv(ident(s)) /= ident(s) Use_def(ident) ==> inv({[x,x]: x in s}) /= {[x,x]: x in s} Use_def(inv) ==> {[cdr(y),car(y)]: y in {[x,x]: x in s}} /= {[x,x]: x in s} SIMPLF ==> Stat8: {[cdr([x,x]),car([x,x])]: x in s} /= {[x,x]: x in s} d-->Stat8 ==> Stat9: [cdr([d,d]),car([d,d])] /= [d,d] (Stat9)Discharge ==> inv(ident(s)) = ident(s) -- -- Thus only one of the last two of our original clauses need be considered. -- In both of these cases $f$ is a map. -- (Stat7)ELEM ==> Stat10: (Is_map(f) & (domain(f) ¥incin s) & ((f @ ident(s)) /= f)) or (Is_map(f) & (range(f) ¥incin s) & ((ident(s) @ f) /= f)) (Stat10)ELEM ==> Stat11: Is_map(f) -- -- Consider the first of these possibilities, and expand the definitions involved, -- thereby showing that there exists a $c$ for which the conditions $c in f$ -- and $c in {[z,cdr(y)]: z in s, y in f | z = car(y)}$ are inequivalent. -- Suppose ==> Stat12: ((domain(f) ¥incin s) & (f @ ident(s) /= f)) Use_def(@) ==> {[car(x),cdr(y)]: x in ident(s), y in f | cdr(x) = car(y)} /= f Use_def(ident) ==> {[car(x),cdr(y)]: x in {[z,z]: z in s}, y in f | cdr(x) = car(y)} /= f SIMPLF ==> {[car(x),cdr(y)]: x in {[z,z]: z in s}, y in f | cdr(x) = car(y)} = {[car([z,z]),cdr(y)]: z in s, y in f | cdr([z,z]) = car(y)} Set_monot ==> {[car([z,z]),cdr(y)]: z in s, y in f | cdr([z,z]) = car(y)} = {[z,cdr(y)]: z in s, y in f | z = car(y)} ELEM ==> Stat13: {[z,cdr(y)]: z in s, y in f | z = car(y)} /= f c-->Stat13 ==> ((c in {[z,cdr(y)]: z in s, y in f | z = car(y)}) & (c notin f)) or ((c notin {[z,cdr(y)]: z in s, y in f | z = car(y)}) & (c in f)) -- -- In the first of the two resulting cases it follows, using Theorem 51, that -- $c$ is both a member and not a member of $f$, a contradiction which rules out this case, -- leaving only the case $c in f$. -- Suppose ==> Stat14: (c in {[z,cdr(y)]: z in s, y in f | z = car(y)}) & (c notin f) (a,b)-->Stat14 ==> Stat15: (c = [a,cdr(b)]) & (a in s) & (b in f) & (a = car(b)) & (c notin f) (f,b)-->T51 ==> b = [car(b),cdr(b)] (Stat15)Discharge ==> Stat16: (c notin {[z,cdr(y)]: z in s, y in f | z = car(y)}) & (c in f) -- -- But in this case a contradiction follows immediately from Theorem 51, -- leaving out for final consideration only the case $(range(f) ¥incin s) & ((ident(s) @ f) /= f)$. -- (f,c)-->T51 ==> c = [car(c),cdr(c)] (car(c),c)-->Stat16 ==> Stat17: (c in f) & (car(c) notin s) (Stat17,Stat12)ELEM ==> Stat18: (c in f) & (car(c) notin domain(f)) Use_def(domain) ==> Stat19: car(c) notin {car(x): x in f} c-->Stat19 ==> not((c in f) & (car(c)= car(c))) Discharge ==> Stat20: (range(f) ¥incin s) & ((ident(s) @ f) /= f) -- -- By expanding the definitions involved, we see that there must exist an element $e$ for which -- the conditions $e in f$ and $e in {[car(x),z]: x in f, z in s | cdr(x) = z}$ are inequivalent. -- Use_def(@) ==> {[car(x),cdr(y)]: x in f, y in ident(s) | cdr(x) = car(y)} /= f Use_def(ident) ==> {[car(x),cdr(y)]: x in f, y in {[z,z]: z in s} | cdr(x) = car(y)} /= f SIMPLF ==> {[car(x),cdr(y)]: x in f, y in {[z,z]: z in s} | cdr(x) = car(y)} = {[car(x),cdr([z,z])]: x in f, z in s | cdr(x) = car([z,z])} Set_monot ==> {[car(x),cdr([z,z])]: x in f, z in s | cdr(x) = car([z,z])} = {[car(x),z]: x in f, z in s | cdr(x) = z} ELEM ==> Stat21: {[car(x),z]: x in f, z in s | cdr(x) = z} /= f e-->Stat21 ==> ((e in {[car(x),z]: x in f, z in s | cdr(x) = z}) & (e notin f)) or ((e notin {[car(x),z]: x in f, z in s | cdr(x) = z}) & (e in f)) -- -- In the first of the two resulting cases it follows, using Theorem 51, that -- $e$ is both a member and not a member of $f$, a contradiction which rules out this case, -- leaving only the case $e in f$. -- Suppose ==> Stat22: (e in {[car(x),z]: x in f, z in s | cdr(x) = z}) & (e notin f) (aa,bb)-->Stat22 ==> (e = [car(aa),bb]) & (aa in f) & (bb in s) & (cdr(aa)=bb) & (e notin f) (f,aa)-->T51 ==> aa = [car(aa),cdr(aa)] (Stat22)Discharge ==> Stat23: (e notin {[car(x),z]: x in f, z in s | cdr(x) = z}) & (e in f) -- -- But in this case a contradiction follows immediately from Theorem 51, -- proving our theorem. -- (f,e)-->T51 ==> e = [car(e),cdr(e)] (e,cdr(e))-->Stat23 ==> Stat24: (e in f) & (cdr(e) notin s) (Stat24,Stat20)ELEM ==> (e in f) & (cdr(e) notin range(f)) Use_def(range) ==> Stat25: cdr(e) notin {cdr(x): x in f} e-->Stat25 ==> not((e in f) & (cdr(e)= cdr(e))) Discharge ==> QED -- Theorem 116: [Composition with an identity map is restriction] (Is_map(F)) ¥imp (F @ ident(S) = F ¥ON S). Proof: Suppose_not(f,s) ==> Is_map(f) & (f @ ident(s) /= f ¥ON s) Use_def(ident) ==> f @ ident(s) = f @ {[u,u]: u in s} Use_def(@) ==> {[car(x),cdr(y)]: x in {[u,u]: u in s}, y in f | cdr(x) = car(y)} = f @ {[u,u]: u in s} SIMPLF ==> {[car([u,u]),cdr(y)]: u in s, y in f | cdr([u,u]) = car(y)} = {[car(x),cdr(y)]: x in {[u,u]: u in s}, y in f | cdr(x) = car(y)} Suppose ==> Stat1: {[car([u,u]),cdr(y)]: u in s, y in f | cdr([u,u]) = car(y)} /= {[u,cdr(y)]: u in s, y in f | cdr([u,u]) = car(y)} (u,y)-->Stat1 ==> false; Discharge ==> {[car([u,u]),cdr(y)]: u in s, y in f | cdr([u,u]) = car(y)} = {[u,cdr(y)]: u in s, y in f | cdr([u,u]) = car(y)} Suppose ==> Stat2: {[u,cdr(y)]: u in s, y in f | cdr([u,u]) = car(y)} /= {[u,cdr(y)]: u in s, y in f | u = car(y)} (u1,y1)-->Stat2 ==> false; Discharge ==> {[u,cdr(y)]: u in s, y in f | cdr([u,u]) = car(y)} = {[u,cdr(y)]: u in s, y in f | u = car(y)} ELEM ==> {[u,cdr(y)]: u in s, y in f | u = car(y)} /= f ¥ON s Suppose ==> Stat3: {[u,cdr(y)]: u in s, y in f | u = car(y)} /= {[car(y),cdr(y)]: y in f | car(y) in s} c-->Stat3 ==> not((c in {[u,cdr(y)]: u in s, y in f | u = car(y)}) ¥eq (c in {[car(y),cdr(y)]: y in f | car(y) in s})) Suppose ==> Stat4: (c in {[u,cdr(y)]: u in s, y in f | u = car(y)}) & Stat5: (not(c in {[car(y),cdr(y)]: y in f | car(y) in s})) (u2,y2)-->Stat4 ==> (u2 in s) & (y2 in f) & (c = [u2,cdr(y2)]) & (u2 = car(y2)) ELEM ==> (car(y2) in s) & (y2 in f) & (c = [car(y2),cdr(y2)]) y2-->Stat5 ==> false; Discharge ==> Stat6: (not(c in {[u,cdr(y)]: u in s, y in f | u = car(y)})) & Stat7: (c in {[car(y),cdr(y)]: y in f | car(y) in s}) y3-->Stat7 ==> (y3 in f) & (c = [car(y3),cdr(y3)]) & (car(y3) in s) (car(y3),y3)-->Stat6(Stat6) ==> false; Discharge ==> Stat8: {[car(y),cdr(y)]: y in f | car(y) in s} /= f ¥ON s Use_def(Is_map) ==> f = {[car(y),cdr(y)]: y in f} EQUAL ==> Stat9: f ¥ON s = {[car(y),cdr(y)]: y in f} ¥ON s Use_def(¥ON) ==> Stat10: {[car(y),cdr(y)]: y in f} ¥ON s = {u in {[car(y),cdr(y)]: y in f} | car(u) in s} SIMPLF ==> {u in {[car(y),cdr(y)]: y in f} | car(u) in s} = {[car(y),cdr(y)]: y in f | car([car(y),cdr(y)]) in s} ELEM ==> Stat11: {[car(y),cdr(y)]: y in f | car([car(y),cdr(y)]) in s} /= {[car(y),cdr(y)]: y in f | car(y) in s} y4-->Stat11 ==> car([car(y),cdr(y)]) /= car(y) Discharge ==> QED -- -- Next we prove that the product of the inverse of a single-valued map $f$ -- by the map itself is the identity map on the range of $f$. -- Theorem 117: [Composition with the inverse map] Svm(F) ¥imp (F @ inv(F) = ident(range(F))). Proof: Suppose_not(f) ==> Svm(f) & (f @ inv(f) /= ident(range(f))) -- -- For suppose that there is a counterexample to our theorem, and then expand and simplify -- all the definitions involved, getting the set-theoretic inequality seen below. -- Use_def(ident) ==> f @ inv(f) /= {[x,x]: x in range(f)} Use_def(range) ==> f @ inv(f) /= {[x,x]: x in {cdr(y): y in f}} SIMPLF ==> f @ inv(f) /= {[cdr(x),cdr(x)]: x in f} Use_def(@) ==> {[car(x),cdr(y)]: x in inv(f), y in f | cdr(x) = car(y)} /= {[cdr(x),cdr(x)]: x in f} Use_def(inv) ==> {[car(x),cdr(y)]: x in {[cdr(u),car(u)]: u in f}, y in f | cdr(x) = car(y)} /= {[cdr(x),cdr(x)]: x in f} SIMPLF ==> {[car(x),cdr(y)]: x in {[cdr(u),car(u)]: u in f}, y in f | cdr(x) = car(y)} = {[car([cdr(u),car(u)]),cdr(y)]: u in f, y in f | cdr([cdr(u),car(u)]) = car(y)} Set_monot ==> {[car([cdr(u),car(u)]),cdr(y)]: u in f, y in f | cdr([cdr(u),car(u)]) = car(y)} = {[cdr(u),cdr(y)]: u in f, y in f | car(u) = car(y)} ELEM ==> Stat1: {[cdr(x),cdr(y)]: x in f, y in f | car(x) = car(y)} /= {[cdr(x),cdr(x)]: x in f} -- -- Since the sets displayed are not equal, there is a $c$ that is in one but not the other. -- If it is in the first of these two sets but not the second, a contradiction results from -- the assumed single-valuedness of $f$, ruling out this case. -- c-->Stat1 ==> Stat2: (((c in {[cdr(x),cdr(y)]: x in f, y in f | car(x) = car(y)}) & (c notin {[cdr(x),cdr(x)]: x in f})) or ((c notin {[cdr(x),cdr(y)]: x in f, y in f | car(x) = car(y)}) & (c in {[cdr(x),cdr(x)]: x in f}))) Suppose ==> Stat3: (c in {[cdr(x),cdr(y)]: x in f, y in f | car(x) = car(y)}) & Stat4: (c notin {[cdr(x),cdr(x)]: x in f}) (a,b)-->Stat3 ==> Stat5: (a in f) & (b in f) & (c = [cdr(a),cdr(b)]) & (car(a) = car(b)) b-->Stat4(Stat5*) ==> Stat6: (c /= [cdr(b),cdr(b)]) & (c = [cdr(a),cdr(b)]) (Stat6)ELEM ==> a /= b Use_def(Svm) ==> Stat7: (FORALL x in f, y in f | (car(x) = car(y)) ¥imp (x = y)) (a,b)-->Stat7 ==> false; Discharge ==> Stat8: (c notin {[cdr(x),cdr(y)]: x in f, y in f | car(x) = car(y)}) & Stat9: (c in {[cdr(x),cdr(x)]: x in f}) -- -- But in the remaining case $c$ has the form $[cdr(d),cdr(d)]$ for some $d in f$, -- and a contradiction results in much the same way, proving our theorem. -- (d)-->Stat9 ==> (c = [cdr(d),cdr(d)]) & (d in f) (d,d)-->Stat8 ==> false; Discharge ==> QED -- -- Next we extend Theorem 117: if a single-valued map $f$ is 1-1, the product of -- its inverse by $f$ is also the identity map on the domain of $f$. -- Theorem 118: [Inverses of one-one maps] one_1_map(F) ¥imp (((F @ inv(F)) = ident(range(F))) & ((inv(F) @ F) = ident(domain(F)))). Proof: Suppose_not(f) ==> one_1_map(f) & ((f @ inv(f)) /= ident(range(f)) or ((inv(f) @ f) /= ident(domain(f)))) -- -- This follows by simple algebraic reasoning using Theorem 99, Theorem 100, Theorem 101, and Theorem 117. -- Use_def(one_1_map) ==> Svm(f) Use_def(Svm) ==> Is_map(f) f-->T117 ==> inv(f) @ f /= ident(domain(f)) f-->T101 ==> one_1_map(inv(f)) f-->T99 ==> range(inv(f)) = domain(f) f-->T100 ==> inv(inv(f)) = f Use_def(one_1_map) ==> Svm(inv(f)) (inv(f))-->T117 ==> inv(f) @ inv(inv(f)) = ident(range(inv(f))) EQUAL ==> inv(f) @ f = ident(domain(f)) Discharge ==> QED -- -- Our next aim, which we will reach in several steps, is to prove a kind of converse to Theorem 118: -- mutually inverse maps are each other's inverses. -- Theorem 119: [Product of inverses lemma] (Is_map(F) & Is_map(G) & (domain(F) ¥incin range(G)) & Svm(F @ G)) ¥imp Svm(F). Proof: Suppose_not(f,g) ==> Stat1: Is_map(f) & Is_map(g) & (domain(f) ¥incin range(g)) & Svm(f @ g) & (not(Svm(f))) -- -- First we show that if the product $f @ g$ of two maps is single valued, -- and if the range of $g$ includes the domain of $f$, then the map $f$ must be single valued. -- For suppose that a counterexample exists, and apply the utility theory $Svm_test$. -- Use_def(Is_map) ==> f = {[car(x),cdr(x)]: x in f} APPLY(x3_thryvar:x,y3_thryvar:y) Svm_test(a(x)->car(x),b(x)->cdr(x),s->f) ==> (((x in f) & (y in f) & (car(x) = car(y)) & (cdr(x) /= cdr(y))) or Svm({[car(x),cdr(x)]: x in f})) EQUAL ==> (((x in f) & (y in f) & (car(x) = car(y)) & (cdr(x) /= cdr(y))) or Svm(f)) -- -- This tells us that there are elements $x$, $y$ in $f$ with $car(x) = car(y)$ -- such that $cdr(x) /= cdr(y)$. -- ELEM ==> Stat2: (x in f) & (y in f) & (car(x) = car(y)) & (cdr(x) /= cdr(y)) Suppose ==> car(x) notin domain(f) Use_def(domain) ==> Stat3: car(x) notin {car(u): u in f} x-->Stat3 ==> false; Discharge ==> car(x) in range(g) -- -- Therefore $car(x) = car(y)$ must have the form $cdr(u)$, where $u$ belongs to $g$. -- It follows that $[car(u),cdr(x)]$ and $[car(u),cdr(y)]$ both belong to $f @ g$. -- Use_def(range) ==> Stat4: (car(x) in {cdr(u): u in g}) u-->Stat4 ==> Stat5: (car(x) = cdr(u)) & (u in g) Suppose ==> [car(u),cdr(x)] notin (f @ g) Use_def(@) ==> Stat6: [car(u),cdr(x)] notin {[car(v),cdr(w)]: v in g, w in f | cdr(v) = car(w)} (u,x)-->Stat6 ==> Stat7: (u notin g or x notin f or [car(u),cdr(x)] /= [car(u),cdr(x)] or cdr(u) /= car(x)) (Stat7,Stat2,Stat5*)Discharge ==> [car(u),cdr(x)] in (f @ g) Suppose ==> [car(u),cdr(y)] notin (f @ g) Use_def(@) ==> Stat8: [car(u),cdr(y)] notin {[car(v),cdr(w)]: v in g, w in f | cdr(v) = car(w)} (u,y)-->Stat8 ==> Stat9: (u notin g or y notin f or [car(u),cdr(y)] /= [car(u),cdr(y)] or cdr(u) /= car(y)) (Stat9,Stat2,Stat5*)Discharge ==> [car(u),cdr(y)] in (f @ g) -- -- But now, since $f @ g$ is single-valued, it follows that $[car(u),cdr(x)] = [car(u),cdr(y)]$ -- contrary to our initial assumption. This contradiction proves the present theorem. -- Use_def(Svm) ==> Stat10: (FORALL x in (f @ g), y in (f @ g) | ((car(x) = car(y)) ¥imp (x = y))) ([car(u),cdr(x)],[car(u),cdr(y)])-->Stat10 ==> Stat11: (car(x) = car(y)) ¥imp (x = y) (Stat2,Stat11)Discharge ==> QED -- -- The following proof shows that the inverse of a product map is the -- product of the inverses, taken in the reverse order. -- Theorem 120: [Product of Inverses] (Is_map(F) & Is_map(G)) ¥imp (inv(F @ G) = inv(G) @ inv(F)). Proof: Suppose_not(f,g) ==> Is_map(f) & Is_map(g) & (inv(f @ g) /= inv(g) @ inv(f)) -- -- For if we expand all the definitions involved, simplify, and reverse the order of the bound -- variables in the setformers which appear, we get the set inequality seen below. -- Use_def(Is_map) ==> (f = {[car(x),cdr(x)]: x in f}) & (g = {[car(x),cdr(x)]: x in g}) & (inv(f @ g) /= inv(g) @ inv(f)) Use_def(@) ==> inv({[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}) /= {[car(x),cdr(y)]: x in inv(f), y in inv(g) | cdr(x) = car(y)} Use_def(inv) ==> {[cdr(u),car(u)]: u in {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}} /= {[car(x),cdr(y)]: x in {[cdr(u),car(u)]: u in f}, y in {[cdr(v),car(v)]: v in g} | cdr(x) = car(y)} SIMPLF ==> {[cdr([car(x),cdr(y)]),car([car(x),cdr(y)])]: x in g, y in f | cdr(x) = car(y)} /= {[car([cdr(u),car(u)]),cdr([cdr(v),car(v)])]: u in f, v in g | cdr([cdr(u),car(u)]) = car([cdr(v),car(v)])} Set_monot ==> {[cdr([car(x),cdr(y)]),car([car(x),cdr(y)])]: x in g, y in f | cdr(x) = car(y)} = {[cdr(y),car(x)]: x in g, y in f | cdr(x) = car(y)} Set_monot ==> {[car([cdr(u),car(u)]),cdr([cdr(v),car(v)])]: u in f, v in g | cdr([cdr(u),car(u)]) = car([cdr(v),car(v)])} = {[cdr(u),car(v)]: u in f, v in g | car(u) = cdr(v)} ELEM ==> Stat1: {[cdr(y),car(x)]: x in g, y in f | cdr(x) = car(y)} /= {[cdr(u),car(v)]: u in f, v in g | car(u) = cdr(v)} -- -- Thus there must exist an element $c$ which belongs to one of these two last sets but not the other, -- say the first but not the second. his leads immediately to an elementary contradiction, ruling out this case. -- c-->Stat1 ==> ((c in {[cdr(y),car(x)]: x in g, y in f | cdr(x) = car(y)}) & (c notin {[cdr(u),car(v)]: u in f, v in g | car(u) = cdr(v)})) or ((c notin {[cdr(y),car(x)]: x in g, y in f | cdr(x) = car(y)}) & (c in {[cdr(u),car(v)]: u in f, v in g | car(u) = cdr(v)})) Suppose ==> Stat2: (c in {[cdr(y),car(x)]: x in g, y in f | cdr(x) = car(y)}) & (c notin {[cdr(u),car(v)]: u in f, v in g | car(u) = cdr(v)}) (x,y,y,x)-->Stat2 ==> (x in g) & (y in f) & (c = [cdr(y),car(x)]) & (not((x in g) & (y in f) & (c = [cdr(y),car(x)]))) Discharge ==> Stat3: (c in {[cdr(u),car(v)]: u in f, v in g | car(u) = cdr(v)}) & (c notin {[cdr(y),car(x)]: x in g, y in f | cdr(x) = car(y)}) -- -- But the case in which $c$ belongs to the second but not the first leads to an exactly similar contradiction, -- thereby proving that our assertion holds in every possible case. -- (x2,y2,y2,x2)-->Stat3 ==> (x2 in f) & (y2 in g) & (c = [cdr(x2),car(y2)]) & (not((x2 in f) & (y2 in g) & (c = [cdr(x2),car(y2)]))) Discharge ==> QED -- -- Next we prove that a map is 1-1 if and only if it and its inverse are both single-valued. -- Theorem 121: [One-one-ness and singlevaluedness] one_1_map(F) ¥eq (Svm(F) & Svm(inv(F))). Proof: Suppose_not(f) ==> Stat1: not(one_1_map(f) ¥eq (Svm(f) & Svm(inv(f)))) -- -- Suppose the contrary, and first consider the case in which $f$ and $inv(f)$ -- are both single-valued, but f is not 1-1, so that by definition there exist -- distinct elements of the form $[car(u),cdr(u)]$ with $u in f$ having identical -- second components but different first components. -- Suppose ==> Svm(f) & Svm(inv(f)) Use_def(one_1_map) ==> Stat2: not (FORALL x in f, y in f | (cdr(x) = cdr(y)) ¥imp (x = y)) (x,y)-->Stat2 ==> Stat3: (x in f) & (y in f) & (cdr(x) = cdr(y)) & (x /= y) Use_def(Svm) ==> Is_map(f) Use_def(Is_map) ==> Stat4: x in {[car(u),cdr(u)]: u in f} Use_def(Is_map) ==> Stat5: y in {[car(u),cdr(u)]: u in f} u-->Stat4 ==> Stat6: (x = [car(u),cdr(u)]) & (u in f) v-->Stat5 ==> Stat7: (y = [car(v),cdr(v)]) & (v in f) (Stat3,Stat6,Stat7*)ELEM ==> (cdr(x) = cdr(y)) & (x /= y) & (x = [car(u),cdr(u)]) & (y = [car(v),cdr(v)]) EQUAL ==> Stat8: (cdr([car(u),cdr(u)]) = cdr([car(v),cdr(v)])) & ([car(u),cdr(u)] /= [car(v),cdr(v)]) (Stat8)ELEM ==> Stat9: (cdr(u) = cdr(v)) Suppose ==> car(u) = car(v) EQUAL ==> [car(u),cdr(u)] = [car(v),cdr(v)] (Stat8*)Discharge ==> Stat10: (car(u) /= car(v)) -- -- But then, by Theorem 90, $[cdr(u),car(u)]$ and $[cdr(v),car(v)]$ -- both belong to $inv(f)$, contradicting its single-valuedness. -- (f,car(u),cdr(u))-->T90 ==> Stat11: [cdr(u),car(u)] in inv(f) (f,car(v),cdr(v))-->T90 ==> Stat12: [cdr(v),car(v)] in inv(f) Use_def(Svm) ==> Stat13: (FORALL x in inv(f), y in inv(f) | (car(x) = car(y)) ¥imp (x = y)) ([cdr(u),car(u)],[cdr(v),car(v)])-->Stat13 ==> Stat14: not(([cdr(u),car(u)] in inv(f)) & ([cdr(v),car(v)] in inv(f)) & (car([cdr(u),car(u)]) = car([cdr(v),car(v)])) & ([cdr(u),car(u)] /= [cdr(v),car(v)])) -- -- The single, direct step -- (Stat9,Stat10,Stat11,Stat12,Stat14)ELEM ==> false; Discharge ==> (not(Svm(f) & Svm(inv(f)))) & one_1_map(f) -- takes very long, and therefore we expand it into the following five steps. -- (Stat11,Stat12,Stat14*)ELEM ==> Stat15: (car([cdr(u),car(u)]) /= car([cdr(v),car(v)])) or ([cdr(u),car(u)] = [cdr(v),car(v)]) Suppose ==> Stat16: car([cdr(u),car(u)]) /= car([cdr(v),car(v)]) (Stat9,Stat16)Discharge ==> Stat17: car([cdr(u),car(u)]) = car([cdr(v),car(v)]) (Stat15,Stat17*)ELEM ==> Stat18: [cdr(u),car(u)] = [cdr(v),car(v)] (Stat10,Stat18)ELEM ==> false; Discharge ==> (not(Svm(f) & Svm(inv(f)))) & one_1_map(f) -- -- Next consider the case in which $f$ is 1-1, but $f$ and $inv(f)$ are not both single-valued. -- By definition of 'one_1_map', it must be $inv(f)$ that is not single valued, -- so that there must exist distinct $xx$ and $yy$ in $inv(f)$ with identical first components. -- Since these are in effect distinct elements of $f$ with identical second components, -- they violate the fact that $f$ is 1-1, a contradiction which -- completes the proof of the present theorem. -- Use_def(one_1_map) ==> not(Svm(inv(f))) & Stat19: (FORALL x in f, y in f | ((cdr(x) = cdr(y)) ¥imp (x = y))) Use_def(Svm) ==> not(Is_map(inv(f)) & (FORALL x in inv(f), y in inv(f) | ((car(x) = car(y)) ¥imp (x = y)))) f-->T99 ==> Stat20: not(FORALL x in inv(f), y in inv(f) | ((car(x) = car(y)) ¥imp (x = y))) (xx,yy)-->Stat20 ==> Stat21: (xx in inv(f)) & (yy in inv(f)) & (car(xx) = car(yy)) & (xx /= yy) Use_def(inv) ==> Stat22: xx in {[cdr(u),car(u)]: u in f} vv-->Stat22 ==> (xx = [cdr(vv),car(vv)]) & (vv in f) Use_def(inv) ==> Stat23: yy in {[cdr(u),car(u)]: u in f} w-->Stat23 ==> (yy = [cdr(w),car(w)]) & (w in f) (Stat21*)ELEM ==> Stat24: (xx /= yy) & (xx = [cdr(vv),car(vv)]) & (yy = [cdr(w),car(w)]) Suppose ==> vv = w EQUAL ==> yy = [cdr(vv),car(vv)] (Stat24*)Discharge ==> vv /= w (Stat21*)ELEM ==> (car(xx) = car(yy)) & (xx = [cdr(vv),car(vv)]) & (yy = [cdr(w),car(w)]) EQUAL ==> Stat25: car([cdr(vv),car(vv)]) = car([cdr(w),car(w)]) (Stat25)ELEM ==> (cdr(vv) = cdr(w)) (vv,w)-->Stat19 ==> false; Discharge ==> QED -- -- The following theorem completes our proof that a pair of -- mutually inverse maps are each other's inverses. -- Theorem 122: [An inverse pair of maps must be 1-1 and must be each other's inverses] (Is_map(F) & Is_map(G) & (domain(F) = range(G)) & (range(F) = domain(G)) & (F @ G = ident(range(F))) & (G @ F = ident(domain(F)))) ¥imp (one_1_map(F) & (G = inv(F))) Proof: Suppose_not(f,g) ==> Stat1: (Is_map(f) & Is_map(g) & (domain(f) = range(g)) & (range(f) = domain(g)) & (f @ g = ident(range(f))) & (g @ f = ident(domain(f)))) & (not(one_1_map(f) & (g = inv(f)))) -- -- For consider a counterexample $f$, $g$. By Theorem 119, $f$ and $g$ must both must be single-valued, -- so either $f$ is not 1-1, or $g$ is not its inverse. -- But by Theorem 99, $g$ has the same range and domain as the inverse of $f$, -- (range(f))-->T115 ==> one_1_map(ident(range(f))) (domain(f))-->T115 ==> one_1_map(ident(domain(f))) EQUAL ==> one_1_map(f @ g) & one_1_map(g @ f) Use_def(one_1_map) ==> Svm(f @ g) & Svm(g @ f) (f,g)-->T119 ==> Svm(f) (g,f)-->T119 ==> Svm(g) EQUAL ==> ident(range(f)) = ident(domain(g)) EQUAL ==> ident(domain(f)) = ident(range(g)) f-->T99 ==> Is_map(inv(f)) & (domain(inv(f)) = range(f)) g-->T99 ==> Is_map(inv(g)) & (range(inv(g)) = domain(g)) -- -- and by Theorem 120 $inv(f)$ has $inv(g)$ as a right inverse, -- so that by Theorem 119 $inv(f)$ must also be single-valued. -- Use_def(Svm) ==> Is_map(f) Use_def(Svm) ==> Is_map(g) (g,f)-->T120 ==> inv(g @ f) = inv(f) @ inv(g) (range(g))-->T115 ==> one_1_map(ident(range(g))) & (inv(ident(range(g))) = ident(range(g))) EQUAL ==> inv(f) @ inv(g) = ident(range(g)) Use_def(one_1_map) ==> Svm(ident(range(g))) EQUAL ==> Svm(inv(f) @ inv(g)) & (domain(inv(f)) = range(inv(g))) (inv(f),inv(g))-->T119 ==> Svm(inv(f)) -- -- Theorem 121 tells us that $f$ must be 1-1, so only the possibility that $g /= inv(f)$ needs -- to be considered. But since $f @ inv(f)$ and $g @ f$ are both identity maps, we can reassociate -- to show that the triple product $g @ f @ inv(f)$ is equal to both $g$ and $inv(f)$, -- a contradiction which proves our theorem -- f-->T121 ==> Stat2: one_1_map(f) & (g /= inv(f)) f-->T118 ==> f @ inv(f) = ident(range(f)) (range(f),junk,g)-->T115 ==> (Is_map(g) & (domain(g) ¥incin range(f))) ¥imp (g @ ident(range(f)) = g) EQUAL ==> g @ (f @ inv(f)) = g (g,f,inv(f))-->T66 ==> (g @ f) @ inv(f) = g EQUAL ==> Stat3: ident(domain(f)) @ inv(f) = g f-->T99 ==> Stat4: range(inv(f)) = domain(f) (domain(f),junk,inv(f))-->T115 ==> Stat5: ((range(inv(f)) ¥incin domain(f)) ¥imp (ident(domain(f)) @ inv(f) = inv(f))) (Stat1,Stat3,Stat4,Stat5*)ELEM ==> Stat6: inv(f) = g (Stat1,Stat2,Stat6*)Discharge ==> QED -- -- The following elementary lemma expresses the restriction of a single-valued map as a setformer. -- Theorem 123: [Single-valued map restrictions as setformers] Svm(F) ¥imp (((F ¥ON S) = {[x,F~[x]]: x in domain(F) | x in S}) & (domain(F ¥ON S) = {x: x in domain(F) | x in S}) & (range(F ¥ON S) = {F~[x]: x in domain(F) | x in S})). Proof: Suppose_not(f,s) ==> Svm(f) & ((f ¥ON s) /= {[x,f~[x]]: x in domain(f) | x in s} or domain(f ¥ON s) /= {x: x in domain(f) | x in s} or range(f ¥ON s) /= {f~[x]: x in domain(f) | x in s}) -- -- For if we suppose the first clause of our theorem to be false, use the definitions of the operators involved, -- and simplify, we are led to the impossible inequalities seen below. Thus only the second and third -- conclusion of the theorem need be considered. -- f-->T72 ==> f = {[u,f~[u]]: u in domain(f)} Use_def(¥ON) ==> (f ¥ON s) = {x: x in f | car(x) in s} EQUAL ==> (f ¥ON s) = {x: x in {[u,f~[u]]: u in domain(f)} | car(x) in s} SIMPLF ==> (f ¥ON s) = {[x,f~[x]]: x in domain(f) | car([x,f~[x]]) in s} Suppose ==> (f ¥ON s) /= {[x,f~[x]]: x in domain(f) | x in s} ELEM ==> Stat1: {[x,f~[x]]: x in domain(f) | x in s} /= {[x,f~[x]]: x in domain(f) | car([x,f~[x]]) in s} x-->Stat1 ==> (x in domain(f)) & (not ((x in s) ¥eq (car([x,f~[x]]) in s))) Discharge ==> f ¥ON s = {[x,f~[x]]: x in domain(f) | x in s} -- -- Next suppose that our theorem's second conclusion is false. Using the relevant definitions -- and simplifying much as above, we are led to a second impossible inequality. Hence only the -- third conclusion of our theorem could be false. -- Suppose ==> range(f ¥ON s) /= {f~[x]: x in domain(f) | x in s} Use_def(range) ==> range(f ¥ON s) = {cdr(x): x in (f ¥ON s)} EQUAL ==> range(f ¥ON s) = {cdr(x): x in {[x,f~[x]]: x in domain(f) | x in s}} SIMPLF ==> range(f ¥ON s) = {cdr([x,f~[x]]): x in domain(f) | x in s} ELEM ==> Stat2: {f~[x]: x in domain(f) | x in s} /= {cdr([x,f~[x]]): x in domain(f) | x in s} Set_monot ==> {f~[x]: x in domain(f) | x in s} = {cdr([x,f~[x]]): x in domain(f) | x in s} Discharge ==> domain(f ¥ON s) /= {x: x in domain(f) | x in s} -- -- But the domain can be handled in much the same way as the range, and so leads us to a final -- contradiction which completes the proof of the present theorem. -- Use_def(domain) ==> domain(f ¥ON s) = {car(x): x in (f ¥ON s)} EQUAL ==> domain(f ¥ON s) = {car(x): x in {[x,f~[x]]: x in domain(f) | x in s}} SIMPLF ==> domain(f ¥ON s) = {car([x,f~[x]]): x in domain(f) | x in s} ELEM ==> Stat3: {x: x in domain(f) | x in s} /= {car([x,f~[x]]): x in domain(f) | x in s} Set_monot ==> {x: x in domain(f) | x in s} = {car([x,f~[x]]): x in domain(f) | x in s} Discharge ==> QED -- -- The following elementary property of f~[x] is sometimes useful. -- Theorem 124: [Image of a non-domain element] (X notin domain(F)) ¥imp ((F~[X]) = 0). Proof: Suppose_not(x,f) ==> (x notin domain(f)) & ((f~[x]) /= 0) Use_def(~) ==> cdr(arb(f ¥ON {x})) /= 0 Suppose ==> f ¥ON {x} = 0 EQUAL ==> cdr(arb(0)) /= 0 0-->T0(Stat1*) ==> Stat1: (arb(0) = 0) & ((0 - {arb(0)}) = 0) EQUAL ==> cdr(0) /= 0 Use_def(cdr)(Stat1*) ==> arb(arb(arb(0 - {arb(0)}) - {arb(0)})) /= 0 EQUAL(Stat1) ==> false; Discharge ==> f ¥ON {x} /= 0 Use_def(¥ON) ==> Stat2: {p in f | car(p) in {x}} /= 0 Use_def(domain) ==> Stat3: x notin {car(p): p in f} c--> Stat2 ==> (c in f) & (car(c) in {x}) (Stat3)ELEM ==> car(c) = x c-->Stat3 ==> false; Discharge ==> QED -- -- Our next elementary lemma generalizes the preceding to a useful relationship for (f ¥ON s1)~[x] -- Theorem 125: [Value of a restriction map] (F ¥ON S)~[X] = if X in domain(F ¥ON S) then F~[X] else 0 end if. Proof: Suppose_not(f,s,x) ==> Stat1: (f ¥ON s)~[x] /= if x in domain(f ¥ON s) then f~[x] else 0 end if --?? 0-->T0(Stat1*) ==> (arb(0) = 0) & & ((0 - {arb(0)}) = 0) 0-->T0(Stat1*) ==> (arb(0) = 0) & ((0 - {arb(0)}) = 0) Use_def(cdr)(Stat1*) ==> cdr(0) = arb(arb(arb(0 - {arb(0)}) - {arb(0)})) EQUAL(Stat1) ==> cdr(0) = 0 Use_def(~) ==> (f ¥ON s)~[x] = cdr(arb((f ¥ON s) ¥ON {x})) Use_def(~) ==> f~[x] = cdr(arb(f ¥ON {x})) (f,s,{x})-->T69 ==> (f ¥ON (s * {x})) = ((f ¥ON s) ¥ON {x}) EQUAL ==> Stat2: (f ¥ON s)~[x] = cdr(arb(f ¥ON (s * {x}))) (f,s)-->T94 ==> Stat3: domain(f ¥ON s) = domain(f) * s Suppose ==> Stat4: x notin s (Stat3)ELEM ==> Stat5: (s * {x} = 0) & (x notin domain(f ¥ON s)) (Stat5,Stat1)ELEM ==> Stat6: (f ¥ON s)~[x] /= 0 (Stat6,Stat2)ELEM ==> (cdr(arb(f ¥ON (s * {x})))) /= 0 EQUAL ==> cdr(arb(f ¥ON 0)) /= 0 f-->T70 ==> f ¥ON 0 = 0 EQUAL ==> cdr(arb(0)) /= 0 EQUAL ==> cdr(0) /= 0 Discharge ==> x in s ELEM ==> s * {x} = {x} EQUAL ==> cdr(arb(f ¥ON {x})) = cdr(arb(f ¥ON (s * {x}))) ELEM ==> Stat7: ((f ¥ON s)~[x]) = (f~[x]) Suppose ==> Stat8: x notin domain(f ¥ON s) ELEM ==> x notin domain(f) (Stat1,Stat8)ELEM ==> (f ¥ON s)~[x] /= 0 (x,f ¥ON s)-->T124 ==> false; Discharge ==> Stat9: x in domain(f ¥ON s) (Stat1,Stat9,Stat7)ELEM ==> false; Discharge ==> QED -- -- The following form of theorem 123 is sometimes more convenient. -- Theorem 126: [Single-valued map restrictions as setformers, 2] Svm(F) ¥imp (((F ¥ON S) = {[x,F~[x]]: x in domain(F ¥ON S)}) & (range(F ¥ON S) = {F~[x]: x in domain(F ¥ON S)})). Proof: Suppose_not(f,s1) ==> AUTO (f,s1)-->T57 ==> Svm(f ¥ON s1) (f ¥ON s1)-->T73 ==> ((f ¥ON s1) = {[x,(f ¥ON s1)~[x]]: x in domain(f ¥ON s1)}) & (range(f ¥ON s1) = {(f ¥ON s1)~[x]: x in domain(f ¥ON s1)}) ELEM ==> ({[x,f~[x]]: x in domain(f ¥ON s1)} /= {[x,(f ¥ON s1)~[x]]: x in domain(f ¥ON s1)}) or ({f~[x]: x in domain(f ¥ON s1)} /= {(f ¥ON s1)~[x]: x in domain(f ¥ON s1)}) Suppose ==> Stat1: {f~[x]: x in domain(f ¥ON s1)} /= {(f ¥ON s1)~[x]: x in domain(f ¥ON s1)} ELEM ==> not (({f~[x]: x in domain(f ¥ON s1)} ¥incin {(f ¥ON s1)~[x]: x in domain(f ¥ON s1)}) & ({f~[x]: x in domain(f ¥ON s1)} incs {(f ¥ON s1)~[x]: x in domain(f ¥ON s1)})) Suppose ==> Stat2: not({f~[x]: x in domain(f ¥ON s1)} ¥incin {(f ¥ON s1)~[x]: x in domain(f ¥ON s1)}) y-->Stat2 ==> (y in domain(f ¥ON s1)) & (((f ¥ON s1)~[y]) /= (f~[y])) (f,s1,y)-->T125 ==> false; Discharge ==> Stat3: not({f~[x]: x in domain(f ¥ON s1)} incs {(f ¥ON s1)~[x]: x in domain(f ¥ON s1)}) y1-->Stat3 ==> Stat4: (y1 in domain(f ¥ON s1)) & (((f ¥ON s1)~[y1]) /= (f~[y1])) (f,s1,y1)-->T125 ==> false; Discharge ==> {[x,f~[x]]: x in domain(f ¥ON s1)} /= {[x,(f ¥ON s1)~[x]]: x in domain(f ¥ON s1)} ELEM ==> not (({[x,f~[x]]: x in domain(f ¥ON s1)} ¥incin {[x,(f ¥ON s1)~[x]]: x in domain(f ¥ON s1)}) & ({[x,f~[x]]: x in domain(f ¥ON s1)} incs {[x,(f ¥ON s1)~[x]]: x in domain(f ¥ON s1)})) Suppose ==> Stat5: not({[x,f~[x]]: x in domain(f ¥ON s1)} ¥incin {[x,(f ¥ON s1)~[x]]: x in domain(f ¥ON s1)}) y2-->Stat5 ==> Stat6: (y2 in domain(f ¥ON s1)) & (([y2,(f ¥ON s1)~[y2]]) /= ([y2,f~[y2]])) EQUAL ==> (f ¥ON s1)~[y2] /= f~[y2] (f,s1,y2)-->T125 ==> false; Discharge ==> {[x,f~[x]]: x in domain(f ¥ON s1)} ¥incin {[x,(f ¥ON s1)~[x]]: x in domain(f ¥ON s1)} ELEM ==> Stat7: not({[x,f~[x]]: x in domain(f ¥ON s1)} incs {[x,(f ¥ON s1)~[x]]: x in domain(f ¥ON s1)}) y3-->Stat7 ==> Stat8: (y3 in domain(f ¥ON s1)) & (((f ¥ON s1)~[y3]) /= (f~[y3])) EQUAL ==> (f ¥ON s1)~[y3] /= f~[y3] (f,s1,y3)-->T125 ==> false; Discharge ==> QED -- -- Our next lemma simply re-expresses the condition that a map should be 1-1 -- in terms of the element-mapping operator $f~[x]$: -- Theorem 127: [Images under one-one maps] (one_1_map(F) & (X in domain(F)) & (Y in domain(F)) & (F~[X] = F~[Y])) ¥imp (X = Y). Proof: Suppose_not(f,x,y) ==> one_1_map(f) & (x in domain(f)) & (y in domain(f)) & (f~[x] = f~[y]) & (x /= y) -- -- For suppose the contrary, and let $f$ be a 1-1 map, with distinct elements $x$, $y$ in its domain such that -- $f~[x] = f~[y]$. Since it is easily seen that $[x,f~[x]]$ and $[y,f~[y]]$ both belong to $f$, -- this would violate the definition of '$one_1_map$', a contradiction which completes our proof. -- Use_def(one_1_map) ==> Svm(f) & Stat1: (FORALL x in f, y in f | ((cdr(x) = cdr(y)) ¥imp (x = y))) f-->T72 ==> f = {[x,f~[x]]: x in domain(f)} Suppose ==> Stat2: [x,f~[x]] notin {[x,f~[x]]: x in domain(f)} x-->Stat2 ==> false; Discharge ==> [x,f~[x]] in f Suppose ==> Stat3: [y,f~[y]] notin {[x,f~[x]]: x in domain(f)} y-->Stat3 ==> false; Discharge ==> [y,f~[y]] in f ([x,f~[x]],[y,f~[y]])-->Stat1 ==> (cdr([x,f~[x]]) = cdr([y,f~[y]])) ¥imp (x = y) Discharge ==> QED -- -- Next we show that the composition of two single-valued maps is single valued. -- Theorem 128: [Composition of single-valued maps] (Svm(F) & Svm(G)) ¥imp Svm(F @ G). Proof: Suppose_not(f,g) ==> Svm(f) & Svm(g) & (not Svm(f @ g)) -- -- For suppose the contrary. Then by definition and using Theorem 55 it follows that -- there exist $a$, $b$ in $f @ g$ with identical first components but distinct second components: -- Use_def(Svm) ==> Is_map(f) & Stat1: (FORALL x in f, y in f | ((car(x) = car(y)) ¥imp (x = y))) & Is_map(g) & Stat2: (FORALL x in g, y in g | ((car(x) = car(y)) ¥imp (x = y))) & (not(Is_map(f @ g) & (FORALL x in (f @ g), y in (f @ g) | ((car(x) = car(y)) ¥imp (x = y))))) (f,g)-->T55 ==> Is_map(f @ g) ELEM ==> Stat3: not(FORALL x in (f @ g), y in (f @ g)| ((car(x) = car(y)) ¥imp (x = y))) (a,b)-->Stat3 ==> (a in (f @ g)) & (b in (f @ g)) & (car(a) = car(b)) & (a /= b) -- -- Thus, by definition of map multiplication, there exist $c$, $d$, $u$, $v$, with $c$, $u$ in $g$ and $d$, $v$ in $f$, -- satisfying the condition displayed below. -- Use_def(@) ==> Stat4: (a in {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}) & (b in {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)}) (c,d,u,v)-->Stat4 ==> Stat5: (c in g) & (d in f) & (a = [car(c),cdr(d)]) & (cdr(c) = car(d)) & (u in g) & (v in f) & (b = [car(u),cdr(v)]) & (cdr(u) = car(v)) & (car(a) = car(b)) & (a /= b) -- -- But then $car(c) = car(u)$, so by Stat5 we have $car(d) = car(v)$. -- (Stat5*)ELEM ==> Stat6: (c in g) & (u in g) & (car(a) = car(b)) & (a = [car(c),cdr(d)]) & (b = [car(u),cdr(v)]) EQUAL ==> Stat7: car([car(c),cdr(d)]) = car([car(u),cdr(v)]) (Stat7)ELEM ==> Stat8: car(c) = car(u) (c,u)-->Stat2 ==> Stat9: ((c in g) & (u in g) & (car(c) = car(u))) ¥imp (c = u) (Stat6,Stat9,Stat8*)ELEM ==> Stat10: c = u EQUAL ==> cdr(c) = cdr(u) (Stat5*)ELEM ==> car(d) = car(v) -- -- It follows by Stat5 that $cdr(d) = cdr(v)$, contradicting $a /= b$ and so proving our theorem. -- (d,v)-->Stat1 ==> Stat11: d = v (Stat5*)ELEM ==> Stat12: [car(c),cdr(d)] /= [car(u),cdr(v)] EQUAL ==> false; Discharge ==> QED -- -- Our next theorem gives a standard elementary formula for $(f @ g)~[x]$. -- Theorem 129: [Images under single-valued map composition] (Svm(F) & Svm(G) & (X in domain(G)) & (range(G) ¥incin domain(F))) ¥imp ((F @ G)~[X] = F~[G~[X]]). Proof: Suppose_not(f,g,x) ==> Svm(f) & Svm(g) & (x in domain(g)) & (range(g) ¥incin domain(f)) & ((f @ g)~[x] /= f~[g~[x]]) -- -- For suppose the contrary. By Theorem 77, we have $[x,g~[x]] in g$ and $[g~[x],f~[g~[x]]] in f$. -- Use_def(Svm) ==> Is_map(g) (g,x)-->T77 ==> [x,g~[x]] in g Suppose ==> g~[x] notin range(g) Use_def(range) ==> Stat1: g~[x] notin {cdr(u): u in g} [x,g~[x]]-->Stat1 ==> not((g~[x] = cdr([x,g~[x]])) & ([x,g~[x]] in g)) Discharge ==> g~[x] in range(g) ELEM ==> g~[x] in domain(f) Use_def(Svm) ==> Is_map(f) (f,g~[x])-->T77 ==> [g~[x],f~[g~[x]]] in f -- -- It follows that $[x,f~[g~[x]]]$ belongs to $f @ g$, and so, since $f @ g$ is single valued by -- Theorem 128, we have $f~[g~[x]] = (f @ g)~[x]$. -- Suppose ==> [x,f~[g~[x]]] notin (f @ g) Use_def(@) ==> Stat2: [x,f~[g~[x]]] notin {[car(u),cdr(v)]: u in g, v in f | cdr(u) = car(v)} ([x,g~[x]],[g~[x],f~[g~[x]]])-->Stat2 ==> Stat3: not (([x,f~[g~[x]]] = [car([x,g~[x]]),cdr([g~[x],f~[g~[x]]])]) & (cdr([x,g~[x]]) = car([g~[x],f~[g~[x]]])) & ([x,g~[x]] in g) & ([g~[x],f~[g~[x]]] in f)) Discharge ==> [x,f~[g~[x]]] in (f @ g) (f,g)-->T128 ==> Svm(f @ g) (f @ g,[x,f~[g~[x]]])-->T74 ==> (f @ g)~[car([x,f~[g~[x]]])] = cdr([x,f~[g~[x]]]) ELEM ==> car([x,f~[g~[x]]]) = x EQUAL ==> (f @ g)~[x] = cdr([x,f~[g~[x]]]) Discharge ==> QED -- -- Our next result is a corollary of Theorem 129 which adds several useful clauses to it. -- Theorem 130: [Single-valued map ranges and domains as set formers] (Svm(F) & Svm(G) & (X in domain(G)) & (range(G) ¥incin domain(F))) ¥imp (((F @ G)~[X] = F~[G~[X]]) & (F @ G = {[x,F~[G~[x]]]: x in domain(G)}) & (range(F @ G) = {F~[G~[x]]: x in domain(G)})). Proof: Suppose_not(f,g,x) ==> Svm(f) & Svm(g) & (x in domain(g)) & (range(g) ¥incin domain(f)) & (not(((f @ g)~[x] = f~[g~[x]]) & (f @ g = {[x,f~[g~[x]]]: x in domain(g)}) & (range(f @ g) = {f~[g~[x]]: x in domain(g)}))) -- -- For suppose that our statement is false, and let $f$, $g$ be a counterexample. It follows immediately -- from Theorem 128, Theorem 73, and Theorem 95 that the two final clauses of our assertion must be true if -- the expression $f~[g~[x]]$ appearing in the setformers seen there are replaced by $(f @ g)~[x]$. -- (f,g)-->T128 ==> Svm(f @ g) (f @ g)-->T73 ==> (f @ g = {[x,(f @ g)~[x]]: x in domain(f @ g)}) & (range(f @ g) = {(f @ g)~[x]: x in domain(f @ g)}) (f,g)-->T95 ==> domain(f @ g) = domain(g) EQUAL ==> (f @ g = {[x,(f @ g)~[x]]: x in domain(g)}) & (range(f @ g) = {(f @ g)~[x]: x in domain(g)}) -- -- However, Theorem 129 lets us replace $(f @ g)~[x]$ by $f~[g~[x]]$, after which our assertion is immediate. -- (f,g,x)-->T129 ==> (f @ g)~[x] = f~[g~[x]] ELEM ==> ({[x,(f @ g)~[x]]: x in domain(g)} /= {[x,f~[g~[x]]]: x in domain(g)}) or ({(f @ g)~[x]: x in domain(g)} /= {f~[g~[x]]: x in domain(g)}) Suppose ==> Stat1: {[x,(f @ g)~[x]]: x in domain(g)} /= {[x,f~[g~[x]]]: x in domain(g)} xp-->Stat1 ==> ((f @ g)~[xp] /= f~[g~[xp]]) & (xp in domain(g)) (f,g,xp)-->T129 ==> false; Discharge ==> Stat2: {(f @ g)~[x]: x in domain(g)} /= {f~[g~[x]]: x in domain(g)} xq-->Stat2 ==> ((f @ g)~[xq] /= f~[g~[xq]]) & (xq in domain(g)) (f,g,xq)-->T129 ==> false; Discharge ==> QED -- Theorem 131: [Image under single-valued map] (Svm(F) & (G ¥incin F) & (X in domain(G))) ¥imp (F~[X]=G~[X]). Proof: Suppose_not(f,g,x) ==> Stat1: Svm(f) & (g ¥incin f) & (x in domain(g)) & (f~[x] /= g~[x]) Use_def(~) ==> cdr(arb(f ¥ON {x})) /= cdr(arb(g ¥ON {x})) Use_def(¥ON) ==> cdr(arb({q: q in f | car(q) in {x}})) /= cdr(arb({q: q in g | car(q) in {x}})) Use_def(domain) ==> Stat2: x in {car(p): p in g} q-->Stat2 ==> (q in g) & (x = car(q)) Set_monot ==> {p: p in g | car(p) in {x}} ¥incin {p: p in f | car(p) in {x}} Suppose ==> Stat3: q notin {p: p in g | car(p) in {x}} q-->Stat3 ==> false; Discharge ==> Stat4: (q in {p: p in g | car(p) in {x}}) Suppose ==> Stat5: not( {p: p in g | car(p) in {x}} incs {p: p in f | car(p) in {x}} ) y-->Stat5 ==> Stat6: (y in {p: p in f | car(p) in {x}}) & (y notin {p: p in g | car(p) in {x}}) (p,p)-->Stat6 ==> Stat7: (p in f) & (car(p) = x) & (p notin g) q1-->Stat4 ==> Stat8: (q1 in g) & (car(q1) = x) Use_def(Svm) ==> Stat9: (FORALL x in f, y in f | (car(x) = car(y)) ¥imp (x = y)) (p,q1)-->Stat9(Stat7,Stat8,Stat1) ==> false; Discharge ==> {p: p in g | car(p) in {x}} = {p: p in f | car(p) in {x}} Discharge ==> QED -- -- The fact that a map $f$ and its inverse are both 1-1 if either is -- results easily from Theorem 121. -- Theorem 132: [Single-valued and one-one maps] Is_map(F) ¥imp (one_1_map(F) ¥eq one_1_map(inv(F))). Proof: Suppose_not(f) ==> Is_map(f) & ( not(one_1_map(f) ¥eq one_1_map(inv(f)))) (f)-->T121 ==> one_1_map(f) ¥eq (Svm(f) & Svm(inv(f))) (inv(f))-->T121 ==> one_1_map(inv(f)) ¥eq (Svm(inv(f)) & Svm(inv(inv(f)))) ELEM ==> not(Svm(f) ¥eq Svm(inv(inv(f)))) f-->T100 ==> f = inv(inv(f)) Suppose ==> Svm(f) EQUAL ==> Svm(inv(inv(f))) Discharge ==> Svm(inv(inv(f))) & (not Svm(f)) EQUAL ==> Svm(f) Discharge ==> QED -- -- Theorem 121 also lets us give a purely algebraic argument to show that -- the product of one-to-one mappings is one-to-one. -- Theorem 133: [Composition of one-one maps] (one_1_map(F) & one_1_map(G)) ¥imp one_1_map(F @ G). Proof: Suppose_not(f,g) ==> one_1_map(f) & one_1_map(g) & (not one_1_map(f @ g)) -- -- For suppose the contrary, in which case it follows by Theorem 121 that -- $f$, $g$ and their inverses are single-valued, but $f @ g$ is not. -- f-->T121 ==> Svm(f) & Svm(inv(f)) g-->T121 ==> Svm(g) & Svm(inv(g)) (f @ g)-->T121 ==> not(Svm(f @ g) & Svm(inv(f @ g))) -- -- But Theorem 128 tells us that $f @ g$ is single-valued, and Theorem 120 allows -- $inv(f @ g)$ to be rewritten as a product of inverses which must be single-valued, -- proving the present theorem. -- (f,g)-->T128 ==> Svm(f @ g) Use_def(Svm) ==> Is_map(f) Use_def(Svm) ==> Is_map(g) (f,g)-->T120 ==> inv(f @ g) = inv(g) @ inv(f) (inv(g),inv(f))-->T128 ==> Svm(inv(g) @ inv(f)) EQUAL ==> false; Discharge ==> QED -- -- The following slight variant of the definition of 'one_1_map' is sometimes useful. -- Theorem 134: [Elements are defined uniquely by their one-one images] Svm(F) ¥imp (one_1_map(F) ¥eq (FORALL x in domain(F), y in domain(F) | ((F~[x] = F~[y]) ¥imp (x = y)))). Proof: Suppose_not(f) ==> Svm(f) & (not(one_1_map(f) ¥eq (FORALL x in domain(f), y in domain(f) | ((f~[x] = f~[y]) ¥imp (x = y))))) -- -- We argue by contradiction, and so suppose that $f$ is a counterexample to our theorem. -- Since $f$ is single-valued, Theorem 72 lets us represent it by the set expression -- $f = {[x,f~[x]]: x in domain(f)}$. -- f-->T72 ==> f = {[x,f~[x]]: x in domain(f)} -- -- We can easily show that $f$ is 1-1. For suppose the contrary. -- Then the $fcn_symbol$ theory given previously tells us the quantified clause -- of our theorem must be false, a contradiction which proves our claim. -- Suppose ==> not one_1_map(f) ELEM ==> Stat1: (FORALL x in domain(f), y in domain(f) | ((f~[x] = f~[y]) ¥imp (x = y))) APPLY(x9_thryvar:x,y9_thryvar:y) fcn_symbol(f(x)->f~[x],g->f,s->domain(f)) ==> ((x in domain(f)) & (y in domain(f)) & (f~[x] = f~[y]) & (x /= y)) or one_1_map(f) ELEM ==> (x in domain(f)) & (y in domain(f)) & (f~[x] = f~[y]) & (x /= y) (x,y)-->Stat1 ==> false; Discharge ==> one_1_map(f) & Stat2: (not(FORALL x in domain(f), y in domain(f) | ((f~[x] = f~[y]) ¥imp (x = y)))) -- -- But an elementary contradiction with the definition of 1-1 map follows easily -- in this case also, so our theorem is proved. -- (u,v)-->Stat2 ==> (u in domain(f)) & (v in domain(f)) & (f~[u] = f~[v]) & (u /= v) Suppose ==> [u,f~[u]] notin f ELEM ==> Stat3: [u,f~[u]] notin {[x,f~[x]]: x in domain(f)} u-->Stat3 ==> false; Discharge ==> [u,f~[u]] in f Suppose ==> [v,f~[v]] notin f ELEM ==> Stat4: [v,f~[v]] notin {[x,f~[x]]: x in domain(f)} v-->Stat4 ==> false; Discharge ==> [v,f~[v]] in f Use_def(one_1_map) ==> Stat5: (FORALL x in f, y in f | (cdr(x) = cdr(y)) ¥imp (x = y)) ([u,f~[u]],[v,f~[v]])-->Stat5 ==> false; Discharge ==> QED -- -- Next we show that a 1-1 map on a set $u$ induces a 1-1 map on the power set of $u$. -- Theorem 135: [A 1-1 map on a set $u$ induces a 1-1 map on the power set of $u$] (one_1_map(F) & (S ¥incin domain(F)) & (T ¥incin domain(F)) & (S /= T)) ¥imp (range(F ¥ON S) /= range(F ¥ON T)). Proof: Suppose_not(f,s,t) ==> one_1_map(f) & (s ¥incin domain(f)) & (t ¥incin domain(f)) & Stat1: (s /= t) & (range(f ¥ON s) = range(f ¥ON t)) c-->Stat1 ==> ((c in s) & (c notin t)) or ((c notin s) & (c in t)) -- -- For let $f$ be 1-1, and suppose that there are distinct subsets $s$ and $t$ of its domain such that -- $range(f ¥ON s)$ = $range(f ¥ON t)$. Then there is an element $c$ of $domain(f)$ which is in -- one of $s$ and $t$ but not the other. Using the definitions of the functions involved and simplifying, -- we can rewrite the equality $range(f ¥ON s) = range(f ¥ON t)$ as follows: -- Use_def(one_1_map) ==> Svm(f) & Stat2: (FORALL x in f, y in f | (cdr(x) = cdr(y)) ¥imp (x = y)) f-->T72 ==> Stat3: f = {[x,f~[x]]: x in domain(f)} Use_def(range) ==> Stat4: {cdr(x): x in (f ¥ON s)} = {cdr(x): x in (f ¥ON t)} Use_def(¥ON) ==> {cdr(x): x in {x in f | car(x) in s}} = {cdr(x): x in {x in f | car(x) in t}} SIMPLF ==> {cdr(x): x in f | car(x) in s} = {cdr(x): x in f | car(x) in t} EQUAL ==> {cdr(x): x in {[x,f~[x]]: x in domain(f)} | car(x) in s} = {cdr(x): x in {[x,f~[x]]: x in domain(f)} | car(x) in t} SIMPLF ==> {cdr([x,f~[x]]): x in domain(f) | car([x,f~[x]]) in s} = {cdr([x,f~[x]]): x in domain(f) | car([x,f~[x]]) in t} -- -- Suppose for definiteness sake that $c in s$, $c notin t$. Since $f~[c]$ must be in -- $range(f ¥ON s) = range(f ¥ON t)$, it must have the form $f~[d]$ where $d in t$ and so $d /= c$. -- Suppose ==> Stat5: [c,f~[c]] notin {[x,f~[x]]: x in domain(f)} c-->Stat5 ==> false; Discharge ==> [c,f~[c]] in f Suppose ==> (c in s) & (c notin t) Suppose ==> Stat6: f~[c] notin {cdr([x,f~[x]]): x in domain(f) | car([x,f~[x]]) in s} c-->Stat6 ==> (f~[c] /= cdr([c,f~[c]]) or c notin domain(f) or car([c,f~[c]]) notin s) Discharge ==> Stat7: f~[c] in {cdr([x,f~[x]]): x in domain(f) | car([x,f~[x]]) in t} d-->Stat7 ==> (f~[c] = cdr([d,f~[d]])) & ((d in domain(f)) & (car([d,f~[d]]) in t)) ELEM ==> (f~[c] = f~[d]) & ((d in domain(f)) & (d in t)) ELEM ==> c /= d -- -- But since $f~[c] = f~[d]$, this contradicts the fact that $f$ is 1-1, and so we must have -- $(c notin s) & (c in t)$. -- Suppose ==> Stat8: [d,f~[d]] notin {[x,f~[x]]: x in domain(f)} d-->Stat8 ==> false; Discharge ==> [d,f~[d]] in f ([c,f~[c]],[d,f~[d]])-->Stat2 ==> (cdr([c,f~[c]]) = cdr([d,f~[d]])) ¥imp ([c,f~[c]] = [d,f~[d]]) ELEM ==> false; Discharge ==> (c notin s) & (c in t) -- -- However, the case $c notin s$, $c in t$ leads to an exactly similar contradiction, thus completing our proof. -- Suppose ==> Stat9: f~[c] notin {cdr([x,f~[x]]): x in domain(f) | car([x,f~[x]]) in t} c-->Stat9 ==> (f~[c] /= cdr([c,f~[c]]) or c notin domain(f) or car([c,f~[c]]) notin t) Discharge ==> Stat10: f~[c] in {cdr([x,f~[x]]): x in domain(f) | car([x,f~[x]]) in s} dd-->Stat10 ==> Stat11: (f~[c] = cdr([dd,f~[dd]])) & ((dd in domain(f)) & (car([dd,f~[dd]]) in s)) (Stat11)ELEM ==> (f~[c] = f~[dd]) & ((dd in domain(f)) & (dd in s)) ELEM ==> c /= dd Suppose ==> Stat12: [dd,f~[dd]] notin {[x,f~[x]]: x in domain(f)} dd-->Stat12 ==> false; Discharge ==> [dd,f~[dd]] in f ([c,f~[c]],[dd,f~[dd]])-->Stat2 ==> (cdr([c,f~[c]]) = cdr([dd,f~[dd]])) ¥imp ([c,f~[c]] = [dd,f~[dd]]) Discharge ==> QED -- -- The two following results, both elementary consequences by set monotonicity of the definitions -- of the functions involved, show that map composition is distributive over map union, -- both on the left and the right. -- Theorem 136: [Union of map composition] (F + FF) @ G = (F @ G) + (FF @ G). Proof: Suppose_not(f,ff,g) ==> (f + ff) @ g /= (f @ g) + (ff @ g) Use_def(@) ==> {[car(x),cdr(y)]: x in g, y in (f + ff) | cdr(x) = car(y)} /= {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)} + {[car(x),cdr(y)]: x in g, y in ff | cdr(x) = car(y)} Set_monot ==> {[car(x),cdr(y)]: x in g, y in (f + ff) | cdr(x) = car(y)} = {[car(x),cdr(y)]: x in g, y in f | cdr(x) = car(y)} + {[car(x),cdr(y)]: x in g, y in ff | cdr(x) = car(y)} Discharge ==> QED -- Theorem 137: [Union of map composition, 2] G @ (F + FF) = (G @ F) + (G @ FF). Proof: Suppose_not(g,f,ff) ==> g @ (f + ff) /= (g @ f) + (g @ ff) Use_def(@) ==> {[car(x),cdr(y)]: x in (f + ff), y in g | cdr(x) = car(y)} /= {[car(x),cdr(y)]: x in f, y in g | cdr(x) = car(y)} + {[car(x),cdr(y)]: x in ff, y in g | cdr(x) = car(y)} Set_monot ==> {[car(x),cdr(y)]: x in (f + ff), y in g | cdr(x) = car(y)} = {[car(x),cdr(y)]: x in f, y in g | cdr(x) = car(y)} + {[car(x),cdr(y)]: x in ff, y in g | cdr(x) = car(y)} Discharge ==> QED -- -- The theorem that now follows tells us that a 1-1 partial inverse can be defined for -- any single-valued map. -- Theorem 138: [Single-valued maps have 1-1 partial inverses] Svm(F) ¥imp (EXISTS h | ((domain(h) = range(F)) & (range(h) ¥incin domain(F)) & one_1_map(h)) & (FORALL x in range(F) | (F~[h~[x]] = x))). Proof: Suppose_not(f) ==> Svm(f) & Stat1: (not(EXISTS h | ((domain(h) = range(f)) & (range(h) ¥incin domain(f)) & one_1_map(h) & (FORALL x in range(f) | f~[h~[x]] = x)))) -- -- We will refute the contrary supposition by giving the following -- explicit definition of the partial inverse whose existence is asserted. -- Loc_def ==> h = {[x,arb({car(u): u in f | cdr(u) = x})]: x in range(f)} -- -- The 'fcn_symbol' theory tells us immediately that this $h$ is a single-valued map with -- domain equal to $range(f)$. Thus we have only to consider the three last clauses of our theorem. -- APPLY(x9_thryvar:x2,y9_thryvar:y2) fcn_symbol(f(x)->arb({car(u): u in f | cdr(u) = x}),g->h,s->range(f)) ==> Stat2: (domain(h) = range(f)) & Svm(h) & Stat3: (FORALL x | h~[x] = if x in range(f) then arb({car(u): u in f | cdr(u) = x}) else 0 end if) & (range(h) = {arb({car(u): u in f | cdr(u) = x}): x in range(f)}) & (((x2 in range(f)) & (y2 in range(f)) & (arb({car(u): u in f | cdr(u) = x2}) = arb({car(u): u in f | cdr(u) = y2})) & (x2 /= y2)) or one_1_map(h)) -- -- We first show that $(FORALL x in range(f) | h~[x] in {car(u): u in f | cdr(u) = x})$, -- from which it will follow easily that $range(h) ¥incin domain(f)$. -- Indeed, if we suppose the existence of an $x in range(f)$ for which -- $h~[x] notin {car(u): u in f | cdr(u) = x}$, -- use of the axiom of choice leads to an immediate contradiction. -- Suppose ==> Stat4: not(FORALL v in range(f) | arb({car(u): u in f | cdr(u) = v}) in {car(u): u in f | cdr(u) = v}) v-->Stat4 ==> (v in range(f)) & (not(arb({car(u): u in f | cdr(u) = v}) in {car(u): u in f | cdr(u) = v})) {car(u): u in f | cdr(u) = v}-->T0 ==> Stat5: {car(u): u in f | cdr(u) = v} = 0 Use_def(range) ==> Stat6: v in {cdr(x): x in f} vv-->Stat6 ==> (v = cdr(vv)) & (vv in f) vv-->Stat5 ==> false; Discharge ==> Stat7: (FORALL v in range(f) | arb({car(u): u in f | cdr(u) = v}) in {car(u): u in f | cdr(u) = v}) -- -- Next we show (by contradiction) that $range(h) ¥incin domain(f)$. -- Suppose ==> Stat8: not(range(h) ¥incin domain(f)) w-->Stat8 ==> Stat9: (w in range(h)) & (w notin domain(f)) (Stat2,Stat9)ELEM ==> Stat10: w in {arb({car(u): u in f | cdr(u) = x}): x in range(f)} ww-->Stat10 ==> (w = arb({car(u): u in f | cdr(u) = ww})) & (ww in range(f)) ww-->Stat7 ==> w in {car(u): u in f | cdr(u) = ww} Use_def(domain) ==> w notin {car(u): u in f} Set_monot ==> {car(u): u in f} incs {car(u): u in f | cdr(u) = ww} Discharge ==> range(h) ¥incin domain(f) -- -- The fact that $h$ is 1-1 also follows readily, since by repeated use of Stat11 10 -- its negative would imply the existence of $u1$ and $u2$ in $f$ with $car(u1) = car(u2)$ but -- $cdr(u1) /= cdr(u2)$, contradicting the single-valuedness of $f$. -- Suppose ==> Stat12: not one_1_map(h) ELEM ==> Stat13: (x2 in range(f)) & (y2 in range(f) & arb({car(u): u in f | cdr(u) = x2}) = arb({car(u): u in f | cdr(u) = y2})) & (x2 /= y2) x2-->Stat7 ==> Stat14: arb({car(u): u in f | cdr(u) = x2}) in {car(u): u in f | cdr(u) = x2} y2-->Stat7 ==> Stat15: arb({car(u): u in f | cdr(u) = y2}) in {car(u): u in f | cdr(u) = y2} u1-->Stat14 ==> Stat16: (u1 in f) & (arb({car(u): u in f | cdr(u) = x2}) = car(u1)) & (cdr(u1) = x2) u2-->Stat15 ==> Stat17: (u2 in f) & (arb({car(u): u in f | cdr(u) = y2}) = car(u2)) & (cdr(u2) = y2) (Stat13,Stat16,Stat17)ELEM ==> (u1 in f) & (u2 in f) & (car(u1) = car(u2)) & (cdr(u1) /= cdr(u2)) (f,u1)-->T74 ==> f~[car(u1)] = cdr(u1) (f,u2)-->T74 ==> f~[car(u2)] = cdr(u2) EQUAL ==> f~[car(u1)] = f~[car(u2)] Discharge ==> one_1_map(h) -- -- It only remains to show that $f~[h~[x]] = x$ for all $x in range(f)$. -- but it is easily seen that any counterexample $t$ to this assertion -- would have to satisfy $h~[t] = car(tt)$ where $tt in f$ and $cdr(tt) = t$, -- and hence $f~[car(tt)] = t$, contradicting $f~[h~[t]] /= t$, -- and so completing the proof of the present theorem. -- Suppose ==> Stat18: not (FORALL x in range(f) | f~[h~[x]] = x) t-->Stat18 ==> (t in range(f)) & (f~[h~[t]] /= t) t-->Stat7 ==> arb({car(u): u in f | cdr(u) = t}) in {car(u): u in f | cdr(u) = t} t-->Stat3 ==> Stat19: h~[t] in {car(u): u in f | cdr(u) = t} tt-->Stat19 ==> (h~[t] = car(tt)) & (tt in f) & (cdr(tt) = t) (f,tt)-->T74 ==> f~[car(tt)] = t EQUAL ==> f~[h~[t]] = t Discharge ==> (FORALL x in range(f) | f~[h~[x]] = x) h-->Stat1 ==> false; Discharge ==> QED -- -- The definition of the very useful Cartesian product operator is as follows: -- Def 17: [Cartesian Product] Def(s ¥PROD t) := {[x,y]: x in s, y in t} -- -- We begin our discussion of this important operator by proving the elementary fact -- that a Cartesian product is empty if either of its factors is empty. -- The equally easy converse of this result will be proved later. -- Theorem 139: [Cartesian product with a null set] (N ¥PROD 0 = 0) & (0 ¥PROD N = 0). Proof: Suppose_not(n) ==> (n ¥PROD 0 /= 0) or (0 ¥PROD n /= 0) -- -- For supposing the negative of either of our conclusions leads immediately -- to an elementary contradiction: -- Use_def(¥PROD) ==> ({[x,y]: x in n, y in 0} /= 0) or ({[x,y]: x in 0, y in n} /= 0) Suppose ==> Stat1: {[x,y]: x in n, y in 0} /= 0 (c,d)-->Stat1 ==> (c in n) & (d in 0) Discharge ==> Stat2: {[x,y]: x in 0, y in n} /= 0 dp-->Stat2 ==> Stat3: dp in {[x,y]: x in 0, y in n} (x1,y1)-->Stat3 ==> (dp = [x1,y1]) & (y1 in n) & (x1 in 0) Discharge ==> QED -- -- ================ Additional laws concerning Cartesian product ========================== -- -- It is easy to show that the first component of any member of the Cartesian product $s ¥PROD t$ -- belongs to $s$, and its second component to $t$: -- Theorem 140: [Members of Cartesian products] (X in (S ¥PROD T)) ¥imp ((car(X) in S) & (cdr(X) in T)). Proof: -- -- This follows trivially from the very definition of Cartesian product. -- Suppose_not(x,s,t) ==> Stat1: (x in (s ¥PROD t)) & (not( car(x) in s & cdr(x) in t)) Use_def(¥PROD) ==> Stat2: x in {[u,v]: u in s, v in t} (a,b)-->Stat2 ==> Stat3: (a in s) & (b in t) & (x = [a,b]) (Stat1,Stat3)Discharge ==> QED -- -- Next we show that every subset of a Cartesian $S ¥PROD T$ product is a map -- whose domain and range are included in $S$ and $T$, respectively: -- Theorem 141: [Subsets of Cartesian products] (Y ¥incin (S ¥PROD T)) ¥eq (Is_map(Y) & (domain(Y) ¥incin S) & (range(Y) ¥incin T)). Proof: -- -- This follows trivially from the fact that a map is a set each -- of whose elements $x$ is a pair $[car(x),cdr(x)]$ -- Suppose_not(y,s,t) ==> AUTO Suppose ==> Stat1: ((y ¥incin (s ¥PROD t)) & ((not Is_map(y)) or (domain(y) ¥nincin s) or (range(y) ¥nincin t))) Use_def(¥PROD) ==> Stat2: y ¥incin {[u,v]: u in s, v in t} Suppose ==> Stat3: not(Is_map(y)) y-->T51(Stat3*) ==> Stat4: not(FORALL x in y | x = [car(x),cdr(x)]) c-->Stat4(Stat4*) ==> Stat5: (c in y) & (c /= [car(c),cdr(c)]) (Stat2,Stat5*)ELEM ==> Stat6: c in {[u,v]: u in s, v in t} (d,e)-->Stat6(Stat6*) ==> Stat7: c=[d,e] (Stat5,Stat7)Discharge ==> (domain(y) ¥nincin s) or (range(y) ¥nincin t) Suppose ==> Stat8: range(y) ¥nincin t Use_def(range(y)) ==> AUTO e0-->Stat8(Stat8*) ==> Stat9: (e0 in {cdr(w): w in y}) & (e0 notin t) w-->Stat9(Stat2,Stat2*) ==> Stat10: (e0 = cdr(w)) & Stat11: (w in {[u,v]: u in s, v in t}) (u,v)-->Stat11(Stat10*) ==> (w = [u,v]) & (v in t) (Stat8)Discharge ==> Stat12: domain(y) ¥nincin s Use_def(domain(y)) ==> AUTO dp-->Stat12(Stat12*) ==> Stat13: (dp in {car(z): z in y}) & (dp notin s) z-->Stat13(Stat13,Stat2*) ==> Stat14: (dp = car(z)) & Stat15: (z in {[u,v]: u in s, v in t}) (up,vp)-->Stat15(Stat14*) ==> (z = [up,vp]) & (up in s) (Stat12)Discharge ==> Stat16: Is_map(y) & (domain(y) ¥incin s) & (range(y) ¥incin t) & Stat17: (y ¥nincin (s ¥PROD t)) cp-->Stat17(Stat16*) ==> (cp in y) & (cp notin (s ¥PROD t)) Use_def(Is_map(y)) ==> AUTO Use_def(¥PROD)(Stat16*) ==> Stat18: (cp in {[car(w),cdr(w)]: w in y}) & Stat19: (cp notin {[u,v]: u in s, v in t}) wp-->Stat18(Stat18*) ==> Stat20: (cp = [car(wp),cdr(wp)]) & (wp in y) Use_def(domain(y)) ==> AUTO Suppose ==> Stat21: car(wp) notin {car(w): w in y} wp-->Stat21(Stat20,Stat20*) ==> false; Discharge ==> car(wp) in s Use_def(range(y)) ==> AUTO Suppose ==> Stat22: cdr(wp) notin {cdr(w): w in y} wp-->Stat22(Stat20,Stat20*) ==> false; Discharge ==> cdr(wp) in t (car(wp),cdr(wp))-->Stat19(Stat18*) ==> false; Discharge ==> QED -- -- -- Theorem 142: [Image of Cartesian product by a singleton] (U in Z) ¥imp (((Z ¥PROD {V})~[U]) = V). Proof: Suppose_not(u,z,v) ==> AUTO Use_def(¥PROD) ==> (z ¥PROD {v}) = {[w,t]: w in z, t in {v}} SIMPLF ==> (z ¥PROD {v}) = {[w,v]: w in z} APPLY() fcn_symbol(f(w)->v,g->(z ¥PROD {v}),s->z) ==> Stat1: (FORALL w | (w in z) ¥imp (((z ¥PROD {v})~[w]) = v)) u-->Stat1 ==> false; Discharge ==> QED -- -- ======================================================================================= -- -- Our next result states another elementary property of the Cartesian product: -- two such products are disjoint if their second factors are disjoint. -- (The reader will readily perceive that the same is true for two Cartesian products -- whose first factors are disjoint). -- Theorem 143: [Cartesian product disjointness] (A * B = 0) ¥imp ((X ¥PROD A) * (Y ¥PROD B) = 0). Proof: Suppose_not(a,b,xx,yy) ==> (a * b = 0) & Stat1: ((xx ¥PROD a) * (yy ¥PROD b) /= 0) c-->Stat1 ==> (c in (xx ¥PROD a)) & (c in (yy ¥PROD b)) Use_def(¥PROD) ==> Stat2: (c in {[u,v]: u in xx, v in a}) & (c in {[u,v]: u in yy, v in b}) (a1,b1,a2,b2)-->Stat2 ==> (c = [a1,b1]) & (a1 in xx) & (b1 in a) & (c = [a2,b2]) & (a2 in yy) & (b2 in b) Discharge ==> QED -- -- The following theorem shows that even though the Cartesian product operator -- is not associative, there always exists a natural 1-1 correspondence between -- $((A ¥PROD B) ¥PROD C)$ and $(A ¥PROD (B ¥PROD C))$. -- Theorem 144: [Cartesian modified associativity] (F = {[[[x,y],z],[x,[y,z]]]: x in A, y in B, z in C}) ¥imp (one_1_map(F) & (domain(F) = ((A ¥PROD B) ¥PROD C)) & (range(F) = (A ¥PROD (B ¥PROD C)))). Proof: Suppose_not(f,a,b,c) ==> (f = {[[[x,y],z],[x,[y,z]]]: x in a, y in b, z in c}) & ((not one_1_map(f)) or (domain(f) /= ((a ¥PROD b) ¥PROD c)) or (range(f) /= (a ¥PROD (b ¥PROD c)))) -- -- For suppose the contrary. Since we can apply one_1_test_3 to show that $f$ must be 1-1, -- only the theorem clauses concerning the range and domain of f can be false. -- Suppose ==> not one_1_map(f) EQUAL ==> not one_1_map({[[[x,y],z],[x,[y,z]]]: x in a, y in b, z in c | true}) Discharge ==> one_1_map(f) -- -- Next suppose that the clause concerning $domain(f)$ is false. -- Using the definitions of the operators involved we find that -- there must exist elements x,y,u satisfying the impossible inequality seen below, -- a contradiction leaving only the case $range(f) /= (a ¥PROD (b ¥PROD c))$ to be considered. -- Suppose ==> domain(f) /= ((a ¥PROD b) ¥PROD c) Use_def(domain) ==> {car(x): x in f} /= ((a ¥PROD b) ¥PROD c) EQUAL ==> {car(x): x in {[[[x,y],z],[x,[y,z]]]: x in a, y in b, z in c}} /= ((a ¥PROD b) ¥PROD c) SIMPLF ==> {car([[[x,y],z],[x,[y,z]]]): x in a, y in b, z in c} /= ((a ¥PROD b) ¥PROD c) Use_def(¥PROD) ==> {car([[[x,y],z],[x,[y,z]]]): x in a, y in b, z in c} /= {[u,z]: u in {[x,y]: x in a, y in b}, z in c} SIMPLF ==> Stat1: {car([[[x,y],z],[x,[y,z]]]): x in a, y in b, z in c} /= {[[x,y],z]: x in a, y in b, z in c} (x,y,u)-->Stat1 ==> Stat2: car([[[x,y],u],[x,[y,u]]]) /= [[x,y],u] (Stat2)Discharge ==> range(f) /= (a ¥PROD (b ¥PROD c)) -- -- Expanding this last case using the definitions of the operators involved we see just as easily -- that it leads to an impossible elementary inequality, -- a final contradiction which completes the proof of our theorem. -- Use_def(range) ==> {cdr(x): x in f} /= (a ¥PROD (b ¥PROD c)) EQUAL ==> {cdr(x): x in {[[[x,y],z],[x,[y,z]]]: x in a, y in b, z in c}} /= (a ¥PROD (b ¥PROD c)) SIMPLF ==> {cdr([[[x,y],z],[x,[y,z]]]): x in a, y in b, z in c} /= (a ¥PROD (b ¥PROD c)) Use_def(¥PROD) ==> {cdr([[[x,y],z],[x,[y,z]]]): x in a, y in b, z in c} /= {[x,v]: x in a, v in {[y,z]: y in b, z in c}} SIMPLF ==> Stat3: {cdr([[[x,y],z],[x,[y,z]]]): x in a, y in b, z in c} /= {[x,[y,z]]: x in a, y in b, z in c} (xx,yy,uu)-->Stat3 ==> Stat4: cdr([[[xx,yy],uu],[xx,[yy,uu]]]) /= [xx,[yy,uu]] (Stat4)Discharge ==> QED -- -- Moreover, even though the Cartesian product operator -- is not commutative, there always exists a natural 1-1 correspondence between -- $A ¥PROD B$ and $B ¥PROD A$. -- Theorem 145: [Cartesian modified commutativity] (F = {[[x,y],[y,x]]: x in A, y in B}) ¥imp (one_1_map(F) & (domain(F) = (A ¥PROD B)) & (range(F) = (B ¥PROD A))). Proof: Suppose_not(f,a,b) ==> (f = {[[x,y],[y,x]]: x in a, y in b}) & ((not one_1_map(f)) or domain(f) /= (a ¥PROD b) or range(f) /= (b ¥PROD a)) -- -- For suppose the contrary. Since we can apply $one_1_test_2$ to show that $f$ must be 1-1, -- only the theorem clauses concerning the range and domain of $f$ can be false. -- Suppose ==> not one_1_map(f) APPLY(x6_thryvar:x,y6_thryvar:y,x2_thryvar:xx,y2_thryvar:yy) one_1_test_2(a2(x,y)->[x,y],b2(x,y)->[y,x],s->a,t->b) ==> not(([x,y] = [xx,yy]) ¥eq ([y,x] = [yy,xx])) or one_1_map({[[x,y],[y,x]]: x in a, y in b}) EQUAL ==> Stat1: not(([x,y] = [xx,yy]) ¥eq ([y,x] = [yy,xx])) (Stat1)Discharge ==> one_1_map(f) -- -- Next suppose that the clause concerning $domain(f)$ is false. -- Using the definitions of the operators involved we find that -- there must exist elements $x,y,u$ satisfying the impossible inequality seen below, -- a contradiction leaving only the case $range(f) /= (a ¥PROD (b ¥PROD c))$ to be considered. -- Suppose ==> domain(f) /= (a ¥PROD b) Use_def(domain) ==> {car(x): x in f} /= (a ¥PROD b) EQUAL ==> {car(u): u in {[[x,y],[y,x]]: x in a, y in b}} /= (a ¥PROD b) SIMPLF ==> {car([[x,y],[y,x]]): x in a, y in b} /= (a ¥PROD b) Use_def(¥PROD) ==> Stat2: {car([[x,y],[y,x]]): x in a, y in b} /= {[x,y]: x in a, y in b} (xp,yp)-->Stat2 ==> Stat3: car([[xp,yp],[yp,xp]]) /= [xp,yp] (Stat3)Discharge ==> range(f) /= (b ¥PROD a) -- -- Expanding this last case using the definitions of the operators involved, -- we see just as easily that it leads to an impossible elementary inequality, -- a final contradiction which completes the proof of our theorem. -- Use_def(range) ==> {cdr(x): x in f} /= (b ¥PROD a) EQUAL ==> {cdr(u): u in {[[x,y],[y,x]]: x in a, y in b}} /= (b ¥PROD a) SIMPLF ==> {cdr([[x,y],[y,x]]): x in a, y in b} /= (b ¥PROD a) Use_def(¥PROD) ==> {cdr([[x,y],[y,x]]): x in a, y in b} /= {[x,y]: x in b, y in a} Suppose ==> Stat4: {[x,y]: x in b, y in a} /= {[y,x]: x in a, y in b} c-->Stat4 ==> Stat5: ((c in {[x,y]: x in b, y in a}) & (c notin {[y,x]: x in a, y in b})) or ((c notin {[x,y]: x in b, y in a}) & (c in {[y,x]: x in a, y in b})) Suppose ==> Stat6: (c in {[x,y]: x in b, y in a}) & (c notin {[y,x]: x in a, y in b}) (x1,y1,y1,x1)-->Stat6 ==> Stat7: (x1 in b) & (y1 in a) & (c = [x1,y1]) & (not((y1 in a) & (x1 in b) & (c = [x1,y1]))) (Stat7)Discharge ==> Stat8: (c in {[y,x]: x in a, y in b}) & (c notin {[x,y]: x in b, y in a}) (x2,y2,y2,x2)-->Stat8 ==> Stat9: (x2 in a) & (y2 in b) & (c = [y2,x2]) & (not((x2 in a) & (y2 in b) & (c = [y2,x2]))) (Stat9)Discharge ==> Stat10: {cdr([[x,y],[y,x]]): x in a, y in b} /= {[y,x]: x in a, y in b} (x3,y3)-->Stat10 ==> Stat11: cdr([[x3,y3],[y3,x3]]) /= [y3,x3] (Stat11)Discharge ==> QED -- -- The preceding preliminaries now being completed, we return to -- a more serious discussion of results on cardinality. -- Our first, preparatory result states that the restriction of the previously introduced -- enumerating function $enum(x,s)$ to any ordinal $s$ is the identity function on $s$. -- Theorem 146: [Enumeration of an ordinal] (Ord(S) & X in S) ¥imp (enum(X,S) = X). Proof: Suppose_not(s,a) ==> Ord(s) & (a in s) & (enum(a,s) /= a) -- -- For, supposing the contrary, there would necessarily exist a minimal ordinal -- $b in s$ such that $enum(b,s) /= b$. -- APPLY(mt1_thryvar:b) transfinite_induction (n->a,P(x)->(x in s) & (enum(x,s) /= x)) ==> Stat1: (FORALL x | ((b in s) & (enum(b,s) /= b)) & (((x in b) ¥imp (not ((x in s) & (enum(x,s) /= x)))))) a0-->Stat1 ==> Stat2: (b in s) & (enum(b,s) /= b) (s,b)-->T13 ==> Stat3: b ¥incin s Use_def(enum) ==> Stat4: enum(b,s) = if (s ¥incin {enum(y,s): y in b}) then s else arb(s - {enum(y,s): y in b}) end if -- -- But we can show that such a $b$ must satisfy ${enum(y,s): y in b} = b$. -- Indeed, supposing the contrary, there would exist a $c$ -- which was in one of these sets but not the other. -- Suppose first that $c notin b$, so that $c$ must be of the form $enum(d,s)$ where $d in b$, -- and so $d in s$ since the ordinal $s$ includes each of its members. -- Suppose ==> Stat5: {enum(y,s): y in b} /= b c-->Stat5 ==> ((c in {enum(y,s): y in b}) & (c notin b)) or ((c notin {enum(y,s): y in b}) & (c in b)) Suppose ==> Stat6: (c in {enum(y,s): y in b}) & (c notin b) d-->Stat6 ==> (c = enum(d,s)) & (d in b) ELEM ==> d in s -- -- However the minimality of $b$ then implies that $enum(d,s) = d$, and so $d = c$ -- which is impossible since $c notin b$. This contradiction proves that -- we need only consider the second of our two original cases, that in which -- $c$ belongs to $b$ and $c /= enum(c,s)$. -- d-->Stat1 ==> enum(d,s) = d Discharge ==> Stat7: (c notin {enum(y,s): y in b}) & (c in b) c-->Stat7 ==> not((c in b) & (c = enum(c,s))) ELEM ==> c /= enum(c,s) -- -- However in this case Stat8 0 leads immediately to the contradiction $c notin s$, -- completing the proof of our claim ${enum(y,s): y in b} = b$. -- Therefore since $b in s$ and so $not(b incs s) and s - b /= 0$, the -- previously cited definition of '$enum$' tells us that $enum(b,s) = arb(s - b)$, -- and so using the axiom of choice we must have $arb(s - b) in s - b$, which implies -- $arb(s - b) in s$. -- c-->Stat1 ==> c notin s Discharge ==> Stat8: {enum(y,s): y in b} = b (Stat2,Stat4,Stat8*)ELEM ==> Stat9: (enum(b,s) = arb(s - {enum(y,s): y in b})) & (not(s ¥incin b)) EQUAL(Stat8) ==> enum(b,s) = arb(s - b) (s - b)-->T0(Stat3,Stat9) ==> Stat10: (arb(s - b) in s - b) & (arb(s - b) * (s - b) = 0) (Stat10*)ELEM ==> Stat11: (arb(s - b) in s - b) & (arb(s - b) * (s - b) = 0) & (arb(s - b) in s) -- -- But since $s$ is an ordinal, its elements $b$ and $arb(s - b)$ are ordered by membership, -- and since $arb(s - b) in (s - b)$ we must have $b in arb(s - b)$ and hence $b notin s - b$ -- implying $b in b$, which is impossible. -- Use_def(Ord) ==> Stat12: (FORALL x in s, y in s | ((x in y) or (y in x) or (x = y))) (b,arb(s - b))-->Stat12(Stat2*) ==> Stat13: (b in arb(s - b)) or (arb(s - b) = b) (Stat8,Stat2,Stat9,Stat13*)Discharge ==> QED -- -- Next we prove various key properties of the cardinality $#s$ of a set $s$, -- showing first that $#s$ is the smallest ordinal in 1-1 correspondence with $s$. -- Theorem 147: [Cardinality lemma] Ord(#S) & (EXISTS f in OM | (one_1_map(f) & (range(f) = S) & (domain(f) = #S))) & (not((EXISTS o in #S | (EXISTS g in OM | one_1_map(g) & (range(g) = S) & (domain(g) = o))))). Proof: -- -- We proceed by contradiction. Let $s$ be a counterexample to our theorem, and first suppose that -- either $#s$ is not an ordinal, or that there is no $f$ which puts $s$ into 1-1 correspondence -- with $#s$. But then consider the specific $f$ defined as $f = {[x,enum(x,s)]: x in enum_Ord(s)}$. -- Suppose_not(s) ==> (not Ord(#s)) or (not(EXISTS f in OM | (one_1_map(f) & (range(f) = s) & (domain(f) = #s)))) or (EXISTS o in #s | (EXISTS g in OM | one_1_map(g) & (range(g) = s) & (domain(g) = o))) Use_def(#) ==> #s = arb({x: x in next(enum_Ord(s)) | (EXISTS f in OM | (one_1_map(f) & (domain(f) = x) & (range(f) = s)))}) T47 ==> Stat1: (FORALL s | Ord(enum_Ord(s)) & (s = {enum(y,s): y in enum_Ord(s)}) & (FORALL y in enum_Ord(s), z in enum_Ord(s) | ((y /= z) ¥imp (enum(y,s) /= enum(z,s))))) s-->Stat1 ==> Ord(enum_Ord(s)) & (s = {enum(y,s): y in enum_Ord(s)}) (enum_Ord(s))-->T32 ==> Ord(next(enum_Ord(s))) Use_def(Ord) ==> Stat2: (FORALL x in next(enum_Ord(s)) | x ¥incin next(enum_Ord(s))) Suppose ==> (not Ord(#s)) or (not(EXISTS f in OM | (one_1_map(f) & (domain(f) = #s) & (range(f) = s)))) Loc_def ==> s1 = s Loc_def ==> f = {[x,enum(x,s1)]: x in enum_Ord(s1)} -- -- Our general '$fcn_symbol$' theory tells us that this has $enum_Ord(s)$ as range, -- and it is easily seen, using the definition of '$enum_Ord$' that it has domain $s$. -- APPLY(x9_thryvar:y,y9_thryvar:wz) fcn_symbol(f(x)->enum(x,s1),g->f,s->enum_Ord(s1)) ==> Svm(f) & (domain(f) = enum_Ord(s1)) & (range(f) = {enum(x,s1): x in enum_Ord(s1)}) & (((y in enum_Ord(s1)) & (wz in enum_Ord(s1)) & ((enum(y,s1) = enum(wz,s1)) & (y /= wz))) or one_1_map(f)) EQUAL ==> Svm(f) & (domain(f) = enum_Ord(s)) & (range(f) = {enum(x,s): x in enum_Ord(s)}) & Stat3: (((y in enum_Ord(s)) & (wz in enum_Ord(s)) & ((enum(y,s) = enum(wz,s)) & (y /= wz))) or one_1_map(f)) ELEM ==> Svm(f) & (domain(f) = enum_Ord(s)) & (range(f) = s) -- -- Next suppose that $f$ is not 1-1. Then, by Stat4 3, there would exist two distinct elements -- $y$ and $wz$ of $enum_Ord(s)$ such that $enum(y,s) = enum(wz,s)$, which is impossible -- by the definition of $enum_Ord$. -- Suppose ==> not one_1_map(f) ELEM ==> (y in enum_Ord(s)) & (wz in enum_Ord(s)) & (enum(y,s) = enum(wz,s)) & (y /= wz) s-->Stat1 ==> Stat5: (FORALL y in enum_Ord(s), z in enum_Ord(s) | (y /= z) ¥imp (enum(y,s) /= enum(z,s))) (y,wz)-->Stat5 ==> ((y in enum_Ord(s)) & (wz in enum_Ord(s)) & (y /= wz)) ¥imp (enum(y,s) /= enum(wz,s)) Discharge ==> one_1_map(f) -- -- We know at this point that there is a 1-1 mapping $f$ between $s$ and some ordinal; -- hence there is a least ordinal which can be mapped to $f$ in 1-1 fashion. -- Use_def(next) ==> next(enum_Ord(s)) = enum_Ord(s) + {enum_Ord(s)} Suppose ==> Stat6: enum_Ord(s) notin {x: x in next(enum_Ord(s)) | (EXISTS f in OM | (one_1_map(f) & (domain(f) = x) & (range(f) = s)))} (enum_Ord(s))-->Stat6 ==> (not ((enum_Ord(s) in next(enum_Ord(s))) & (EXISTS f in OM | (one_1_map(f) & (domain(f) = enum_Ord(s)) & (range(f) = s))))) ELEM ==> Stat7: not (EXISTS f in OM | (one_1_map(f) & (domain(f) = enum_Ord(s)) & (range(f) = s))) f-->Stat7 ==> false; Discharge ==> Stat8: enum_Ord(s) in {x: x in next(enum_Ord(s)) | (EXISTS f in OM | (one_1_map(f) & (domain(f) = x) & (range(f) = s)))} (Stat8)ELEM ==> {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff)) & (domain(ff) = x) & (range(ff) = s))} /= 0 {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))}-->T0 ==> Stat9: (arb({x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))}) in {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))}) & (arb({x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))}) * {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))} = 0) -- -- By definition, this least ordinal is the cardinality $#s$ of s, and so $#s$ is an ordinal, -- and is in 1-1 correspondence with $s$. Therefore our theorem can only be false if -- some smaller ordinal $o$ is also in 1-1 correspondence with $s$. -- ELEM ==> #s = arb({x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))}) (Stat9*)ELEM ==> Stat10: (#s in {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))}) & (#s * {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))} = 0) x1-->Stat10 ==> (#s = x1) & (#s in next(enum_Ord(s))) & (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x1) & (range(ff) = s))) EQUAL ==> (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = #s) & (range(ff) = s))) (next(enum_Ord(s)),#s)-->T12 ==> false; Discharge ==> Stat11: (EXISTS o in #s | (EXISTS g in OM | (one_1_map(g) & (range(g) = s) & (domain(g) = o)))) o-->Stat11 ==> Stat12: (o in #s) & (EXISTS g in OM | (one_1_map(g) & (domain(g) = o) & (range(g) = s))) -- -- But by definition $#s$ is the least ordinal in 1-1 correspondence with $s$, -- a final contradiction which completes the proof of the present theorem. -- ELEM ==> Stat13: (#s in {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))}) & (#s * {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))} = 0) ELEM ==> Stat14: o notin {x: x in next(enum_Ord(s)) | (EXISTS ff in OM | (one_1_map(ff) & (domain(ff) = x) & (range(ff) = s)))} o-->Stat14 ==> o notin next(enum_Ord(s)) x2-->Stat13 ==> #s in next(enum_Ord(s)) (#s)-->Stat2 ==> false; Discharge ==> QED -- -- Using Theorem 147 it is easy to prove that no set $s$ can be a member of its own cardinality. -- Theorem 148: [Cardinality minimum theorem] S notin #S. Proof: Suppose_not(s) ==> s in #s s-->T147 ==> Stat1: not((EXISTS o in #s | (EXISTS g in OM | one_1_map(g) & (range(g) = s) & (domain(g) = o)))) s-->Stat1 ==> Stat2: not(EXISTS g in OM | one_1_map(g) & (range(g) = s) & (domain(g) = s)) s-->T115 ==> one_1_map(ident(s)) & (domain(ident(s)) = s) & (range(ident(s)) = s) (ident(s))-->Stat2 ==> false; Discharge ==> QED -- -- The following theorem states a special property of the choice operator -- '$arb$' which is sometimes useful. -- Theorem 149: ['arb' is monotone decreasing for non-empty sets of ordinals] (Ord(R) & (R incs S) & (S incs T)) ¥imp (arb(S) in arb(T) or arb(S) = arb(T) or T = 0). Proof+: Suppose_not(o,s,t) ==> Ord(o) & (o incs s) & (s incs t) & (arb(s) notin arb(t)) & (arb(s) /= arb(t)) & (t /= 0) -- -- For consider a nonempty subset $t$ of a set $s$ of ordinals. -- Since $arb(t)$ is a member of $t$ and hence of $s$, -- it cannot be a member of $arb(s)$. Thus, since both $arb(t)$ and $arb(s)$ must be -- ordinals, our claim follows immediately from Theorem 31. -- s-->T0 ==> ((arb(s) in s) & (arb(s) * s = 0)) t-->T0 ==> arb(t) in t (arb(s),arb(t))-->T31 ==> arb(t) in arb(s) * s Discharge ==> QED -- -- Our next theorem, closely related to the preceding, tells us that '$arb$' selects the minimum -- element of any set of ordinals. -- Theorem 150: [Axiom of choice variant] ((S /= 0) & (FORALL x in S | Ord(x))) ¥imp (FORALL x in S | x incs arb(S)). Proof: Suppose_not(s) ==> (s /= 0) & Stat1: (FORALL x in s | Ord(x)) & Stat2: (not((FORALL x in s | x incs arb(s)))) -- -- For otherwise there is a non-null set $s$ of ordinals with a member $x$ not including $arb(s)$. -- But by the axiom of choice, $x$ cannot be a member of $arb(s)$, and so by Theorem 31 -- $s$ must be a member, and hence a subset, of $x$, contradicting the definition of $x$, -- and so proving our theorem. -- x-->Stat2 ==> (x in s) & (not(x incs arb(s))) x-->Stat1 ==> Ord(x) s-->T0 ==> (arb(s) in s) & (x notin arb(s)) (arb(s))-->Stat1 ==> Ord(arb(s)) (arb(s),x)-->T31 ==> arb(s) in x (x,arb(s))-->T34 ==> false; Discharge ==> QED -- -- Our next aim is to prove that the cardinality of any subset $t$ of a set $s$ is -- no more than the cardinality of $s$, This will be established by showing that -- the enumerating ordinal of $t$ is no larger than that of $s$. -- We prepare for this by showing that if $t$ is a subset of an ordinal $s$, -- then the function $enum(x,t)$ is nondecreasing in the variable $x$. -- Theorem 151: [Lemma for ordinal enumeration] (Ord(S) & (T ¥incin S) & (X in S) & (Y in X)) ¥imp (enum(Y,T) in enum(X,T) or enum(X,T) incs T). Proof+: Suppose_not(s,t,x,y2) ==> Stat1: Ord(s) & (t ¥incin s) & (x in s) & (y2 in x) & (enum(y2,t) notin enum(x,t)) & (not(enum(x,t) incs t)) -- -- For suppose the contrary. Then $enum(x,t)$ cannot be $t$, so by definition of '$enum$' -- it must be a member of $t$, hence of $s$, hence an ordinal. Likewise $x$ must be an ordinal, -- and so $y2$ must also be an ordinal. Moreover $t - {enum(u,t): u in x}$ must be nonempty. -- Use_def(enum) ==> enum(x,t) = if t ¥incin {enum(u,t): u in x} then t else arb(t - {enum(u,t): u in x}) end if ELEM ==> Stat2: ((t - {enum(u,t): u in x}) /= 0) & (enum(x,t) = arb(t - {enum(u,t): u in x})) (t - {enum(u,t): u in x})-->T0 ==> enum(x,t) in t - {enum(u,t): u in x} ELEM ==> enum(x,t) in s -- -- Thus $y2$ must be a subset of $x$, and so it follows by the principle of set monotonicity -- that ${enum(u,t): u in y2} ¥incin {enum(u,t): u in x}$. But then $t - {enum(u,t): u in y2}$ must be nonempty, -- and so, by definition of '$enum$', $enum(y2,t) = arb(t - {enum(u,t): u in y2})$ -- (x,y2)-->T13 ==> y2 ¥incin x ELEM ==> Ord(enum(x,t)) & Ord(x) & Ord(y2) & (y2 ¥incin x) Set_monot ==> Stat3: {enum(u,t): u in y2} ¥incin {enum(u,t): u in x} Use_def(enum) ==> Stat4: enum(y2,t) = if t ¥incin {enum(u,t): u in y2} then t else arb(t - {enum(u,t): u in y2}) end if (Stat2,Stat3)ELEM ==> Stat5: (t - {enum(u,t): u in y2} incs t - {enum(u,t): u in x}) & (t - {enum(u,t): u in y2} /= 0) (Stat4)ELEM ==> Stat6: ((t - {enum(u,t): u in y2}) /= 0) & (enum(y2,t) = arb(t - {enum(u,t): u in y2})) -- -- Thus, since we have seen that $t - {enum(u,t): u in y2} incs t - {enum(u,t): u in x}$, -- it follows by Theorem 149 that $enum(y2,t)$ is no larger than $enum(x,t)$, so it must equal $enum(x,t)$. -- But since $y2$ is in $x$ this is easily seen to be impossible, and so we have a contradiction -- which proves our theorem. -- (s, t - {enum(u,t): u in y2},t - {enum(u,t): u in x})-->T149(Stat1,Stat5,Stat2) ==> Stat7: (arb(t - {enum(u,t): u in y2}) in arb(t - {enum(u,t): u in x})) or (arb(t - {enum(u,t): u in y2}) = arb(t - {enum(u,t): u in x})) (Stat7,Stat2,Stat6)ELEM ==> Stat8: (enum(y2,t) in enum(x,t)) or (enum(y2,t) = enum(x,t)) (Stat1,Stat8*)ELEM ==> Stat9: enum(y2,t) = enum(x,t) t-->T46 ==> Stat10: (EXISTS u | (Ord(u) & (t = {enum(y2,t): y2 in u})) & (FORALL y in u, wz in u | (y /= wz) ¥imp (enum(y,t) /= enum(wz,t)))) u-->Stat10 ==> Ord(u) & (t = {enum(y,t): y in u}) & Stat11: (FORALL y in u, wz in u | (y /= wz) ¥imp (enum(y,t) /= enum(wz,t))) Suppose ==> y2 notin u (u,y2)-->T35 ==> u ¥incin y2 Set_monot ==> {enum(v,t): v in u} ¥incin {enum(v,t): v in y2} Discharge ==> Stat12: y2 in u Suppose ==> x notin u (u,x)-->T35 ==> u ¥incin x Set_monot ==> {enum(v,t): v in u} ¥incin {enum(v,t): v in x} Discharge ==> Stat13: x in u (x,y2)-->Stat11(Stat1,Stat12,Stat13,Stat9) ==> false; Discharge ==> QED -- -- We continue the sequence of steps which will lead us to a proof that the cardinality -- of a subset of a set $s$ is no greater than $#s$. Our plan is to prove this first for ordinals -- and then to generalize to arbitrary sets, using the fact that any set is in 1-1 -- correspondence with an ordinal. The following lemma states a related fact about -- the standard enumeration of ordinals. -- Theorem 152: [Subsets of an ordinal enumerate at least as rapidly as the ordinal] (Ord(S) & (T ¥incin S) & (X in S)) ¥imp (enum(X,T) incs X or enum(X,T) incs T). Proof+: Suppose_not(s,t,b) ==> Ord(s) & (t ¥incin s) & (b in s) & (not ((enum(b,t) incs b) or (enum(b,t) incs t))) -- -- For suppose the contrary, so that there is an ordinal $s$ with a subset $t$ for which there exists a $b in s$ -- such that $enum(b,t)$ fails to include $b$ and is not $t$. By the principle of transfinite induction, there -- exists a least such element of $s$, which we call $a$. -- APPLY(mt1_thryvar:a) transfinite_induction (n->b,P(x)->((x in s) & (not((enum(x,t) incs x) or (enum(x,t) incs t))))) ==> Stat1: (FORALL x | ((a in s) & (not((enum(a,t) incs a) or (enum(a,t) incs t)))) & ((x in a) ¥imp (not((x in s) & (not((enum(x,t) incs x) or (enum(x,t) incs t))))))) a0-->Stat1 ==> (a in s) & (not (enum(a,t) incs a)) & (not (enum(a,t) incs t)) -- -- It follows by definition of '$enum$' that $t$ cannot be a subset of ${enum(u,t): u in a}$, and that -- $enum(a,t)$ is a member of $t - {enum(y,t): y in a}$ -- Use_def(enum) ==> enum(a,t) = if t ¥incin {enum(u,t): u in a} then t else arb(t - {enum(u,t): u in a}) end if ELEM ==> (t - {enum(y,t): y in a}) /= 0 ELEM ==> enum(a,t) = arb(t - {enum(y,t): y in a}) (t - {enum(y,t): y in a})-->T0 ==> enum(a,t) in t - {enum(y,t): y in a} -- -- Since $a$ is a member of $s$, it must be an ordinal and a subset of $s$. -- Since $enum(a,t)$ belongs to $t$ it belongs to $s$, and so it is also an ordinal. -- Since $enum(a,t)$ is not larger than $a$, it must be a member of $a$, so Theorem 151 tells us that -- $enum(enum(a,t),t)$ is a member, and hence a subset, of $enum(a,t)$. -- (s,a)-->T34 ==> (a ¥incin s) ELEM ==> enum(a,t) in s (a,enum(a,t))-->T35 ==> (enum(a,t) in a) (s,t,a,enum(a,t))-->T151 ==> enum(enum(a,t),t) in enum(a,t) -- -- Since $enum(a,t)$ is a member of $t$, $enum(enum(a,t),t)$ cannot include $t$ since if it did we would have -- the membership cycle $enum(a,t)$ $in$ $enum(enum(a,t),t)$ $in$ $enum(a,t)$. -- Applying Stat2 1 we therefore find that $enum(enum(a,t),t) incs enum(a,t)$, -- and hence the same impossible membership cycle, a contradiction which proves our theorem. -- (enum(a,t))-->Stat1 ==> ((not (enum(a,t) in s)) or enum(enum(a,t),t) incs enum(a,t) or enum(enum(a,t),t) incs t) Discharge ==> QED -- -- It follows from the preceding theorem that ${enum(x,t): x in s} incs t$ for every subset -- $t$ of an ordinal $s$ -- Theorem 153: [Subset enumeration lemma] (Ord(S) & (T ¥incin S)) ¥imp ({enum(x,T): x in S} incs T). Proof: Suppose_not(s,t) ==> Ord(s) & (t ¥incin s) & (not({enum(x,t): x in S} incs t)) -- -- For suppose the contrary. Since by definition $s$ is both a member and a subset of $next(s)$, -- and since $next(s)$ is an ordinal by Theorem 32, it follows by the previous theorem that -- $enum(s,t) incs t$ -- s-->T32 ==> Ord(next(s)) Use_def(next) ==> next(s) = s + {s} ELEM ==> (s in next(s)) & (t ¥incin next(s)) (next(s),t,s)-->T152 ==> enum(s,t) incs t -- -- But since by assumption $t - {enum(y,t): y in s}$ is not empty, it follows by definition of '$enum$' -- and by the axiom of choice that $enum(s,t)$ is a member of $t$, and hence a member of itself, -- a contradiction which proves our theorem. -- Use_def(enum) ==> enum(s,t) = if t ¥incin {enum(y,t): y in s} then t else arb(t - {enum(y,t): y in s}) end if ELEM ==> t - {enum(y,t): y in s} /= 0 (t - {enum(y,t): y in s})-->T0 ==> enum(s,t) in t Discharge ==> QED -- -- Next we show that if $t$ is a subset of an ordinal $s$, there is an ordinal $x$ no larger than $s$ -- which 'enum' puts into 1-1 correspondence with $t$. -- Theorem 154: [Second subset enumeration lemma] (Ord(S) & (T ¥incin S)) ¥imp (EXISTS x ¥incin S | (Ord(x) & (T = {enum(y,T): y in x}) & (FORALL y in x, z in x | ((y /= z) ¥imp (enum(y,T) /= enum(z,T)))))). Proof+: Suppose_not(s,t) ==> Ord(s) & (t ¥incin s) & Stat1: (not(EXISTS x ¥incin s | (Ord(x) & (t = {enum(y,t): y in x}) & (FORALL y in x, z in x | ((y /= z) ¥imp (enum(y,t) /= enum(z,t))))))) -- -- Suppose the contrary: that the map $enum(.,t)$ does not put $t$ in 1-1 correspondence with -- the set ${enum(y,t): y in x}$ for any ordinal no larger than $s$. Since Theorem 153 tells us that -- ${enum(x,t): x in s} incs t$, we can use the principle of transfinite induction -- to find a smallest ordinal $u$ for which ${enum(x,t): x in u}$ includes $t$. -- (s,t)-->T153 ==> {enum(u,t): u in s} incs t ELEM ==> s ¥incin s APPLY(mt1_thryvar:u) transfinite_induction (n->s,P(x)->Ord(x) & (x ¥incin s) & ({enum(v,t): v in x} incs t)) ==> Stat2: (FORALL x | Ord(u) & (u ¥incin s) & ({enum(v,t): v in u} incs t) & ((x in u) ¥imp (not(Ord(x) & (x ¥incin s) & ({enum(w,t): w in x} incs t))))) x0-->Stat2 ==> Ord(u) & (u ¥incin s) & ({enum(v,t): v in u} incs t) -- -- We now aim to derive a contradiction. -- By Stat3, '$enum$' cannot map $u$ onto $t$ in 1-1 fashion. -- Thus it either (Case 1) does not map $u$ in 1-1 fashion, or (Case 2) maps $u$ onto a set different from $t$. -- First suppose that we are in Case 2, so that there exist distinct $y$ and $wz$ in $u$ -- such that $enum(y,t) = enum(wz,t)$ -- u-->Stat1 ==> not((t = {enum(y,t): y in u}) & (FORALL y in u, z in u | ((y /= z) ¥imp (enum(y,t) /= enum(z,t))))) Suppose ==> Stat4: not(FORALL y in u, z in u | ((y /= z) ¥imp (enum(y,t) /= enum(z,t)))) (y,wz)-->Stat4 ==> (y in u) & (wz in u) & (y /= wz) & (enum(y,t) = enum(wz,t)) -- -- Since $u$ is an ordinal, its members $y$ and $wz$ must also be ordinals, and must be subsets of $u$. -- (u,y)-->T13 ==> y ¥incin u (u,wz)-->T13 ==> wz ¥incin u -- -- Since $y$ is an ordinal, a member of $u$, and a subset of $s$, Stat3 3 tells us that -- ${enum(v,t): v in y}$ cannot include $t$. Also, since $enum(y,t) = enum(wz,t)$, it follows by -- Theorem 44 that $t$ must belong either to ${enum(v,t): v in y}$ or ${enum(v,t): v in wz}$. -- Suppose the former, so that there is an ordinal $a in y$ such that $t = enum(a,t)$. -- Plainly, $a$ is a subset of $y$. -- y-->Stat2 ==> Stat5: not({enum(v,t): v in y} incs t) (y,wz,t)-->T44 ==> (t in {enum(v,t): v in y}) or (t in {enum(v,t): v in wz}) Suppose ==> Stat6: t in {enum(v,t): v in y} a-->Stat6 ==> (t = enum(a,t)) & (a in y) (y,a)-->T34 ==> a ¥incin y -- -- Since $tv$ cannot be a member of $t$, it follows by definition of '$enum$' that $t$ must be a subset of -- ${enum(v,t): v in a}$, and therefore of the larger set ${enum(v,t): v in y}$. But it was shown above -- that ${enum(v,t): v in y}$ cannot include $t$. This contradiction excludes the possibility that -- $t$ is a member of ${enum(v,t): v in y}$, and so implies that $t$ is a member of ${enum(v,t): v in wz}$. -- Use_def(enum) ==> enum(a,t) = if t ¥incin {enum(v,t): v in a} then t else arb(t - {enum(v,t): v in a}) end if ELEM ==> t ¥incin {enum(v,t): v in a} Set_monot ==> {enum(v,t): v in a} ¥incin {enum(v,t): v in y} Discharge ==> Stat7: t in {enum(v,t): v in wz} -- -- However, an exactly similar argument refutes this possibility, implying that $t /= {enum(y,t): y in u}$. -- Also, as shown above, ${enum(v,t): v in u} incs t$, from which it is obvious that -- there is a $c in {enum(y,t): y in u}$, hence of the form $enum(d,t)$ with $d in u$, such that $c notin t$. -- b-->Stat7 ==> (t = enum(b,t)) & (b in wz) (wz,b)-->T34 ==> b ¥incin wz Use_def(enum) ==> enum(b,t) = if t ¥incin {enum(v,t): v in b} then t else arb(t - {enum(v,t): v in b}) end if ELEM ==> t ¥incin {enum(v,t): v in b} Set_monot ==> {enum(v,t): v in b} ¥incin {enum(v,t): v in wz} Set_monot ==> {enum(v,t): v in wz} ¥incin {enum(v,t): v in u} (Stat7)ELEM ==> t in {enum(v,t): v in u} (Stat7)ELEM ==> Stat8: (t /= {enum(y,t): y in u}) & (t ¥incin {enum(y,t): y in u}) (Stat8)ELEM ==> Stat9: not (t incs {enum(y,t): y in u}) c-->Stat9 ==> Stat10: (c in {enum(y,t): y in u}) & (c notin t) d-->Stat10 ==> (c = enum(d,t)) & (d in u) & (c notin t) -- -- Since $u$ is an ordinal, its member $d$ must also be an ordinal and a subset of $d$. -- Thus, by the minimality of $u$ (Stat3 3), ${enum(v,t): v in d}$ cannot include $t$, -- which, by definition of 'enum', tells us that c = enum(d,t) must be a member of $t$, -- contradicting what has just been proved. This excludes the case (Case 2) that we have had -- under consideration, and so leaves open only the possibility that $t /= {enum(y,t): y in u}$; -- but, since we have shown above that the second of these sets includes the first, if follows that -- the first does not include the second. -- (u,d)-->T13 ==> (d ¥incin u) d-->Stat2 ==> Stat11: not({enum(v,t): v in d} incs t) Use_def(enum) ==> enum(d,t) = if t ¥incin {enum(y,t): y in d} then t else arb(t - {enum(y,t): y in d}) end if ELEM ==> (t - {enum(y,t): y in d}) /= 0 (t - {enum(y,t): y in d})-->T0(Stat11) ==> enum(d,t) in t Discharge ==> Stat12: not (t incs {enum(w,t): w in u}) -- -- Hence there is a $v in u$ such that $enum(v,t) notin t$, so it follows by definition of 'enum' -- that $enum(v,t) notin t$, implying that ${enum(w): w in v} incs t$. Since the minimality -- of $u$ rules this out, we have a contradiction which completes the proof of the present theorem. -- dd-->Stat12 ==> Stat13: (dd in {enum(w,t): w in u}) & (dd notin t) v-->Stat13 ==> (v in u) & (enum(v,t) notin t) (u,v)-->T34 ==> v ¥incin u ELEM ==> v ¥incin s Use_def(enum) ==> enum(v,t) = if t ¥incin {enum(w,t): w in v} then t else arb(t - {enum(w,t): w in v}) end if Suppose ==> not({enum(w,t): w in v} incs t) ELEM ==> t - {enum(w,t): w in v} /= 0 (t - {enum(w,t): w in v})-->T0 ==> false; Discharge ==> {enum(w,t): w in v} incs t v-->Stat2 ==> false; Discharge ==> QED -- -- In proving Theorem 156 below we will want the following direct consequence of Theorem 154, -- which tells us that any subset of an ordinal $s$ is in 1-1 correspondence with an -- ordinal no greater than $s$. -- Theorem 155: [Enumerability lemma] (Ord(S) & (T ¥incin S)) ¥imp (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (domain(f) ¥incin S) & (range(f) = T)). Proof: Suppose_not(s,t) ==> Ord(s) & (t ¥incin s) & Stat1: (not(EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (domain(f) ¥incin s) & (range(f) = t))) -- -- For suppose the contrary, and let $t$ be a subset of an ordinal $s$ for which there is no -- 1-1 correspondence with an ordinal no larger than $s$. By Theorem 154 there is an ordinal $xx$ no larger than $s$ -- for which the map $y->enum(y,t)$ is a 1-1 mapping of $xx$ onto $t$, contradicting the statement we have just -- made and so proving our theorem. -- (s,t)-->T154 ==> Stat2: (EXISTS x ¥incin s | (Ord(x) & (t = {enum(y,t): y in x}) & (FORALL y in x, wz in x | ((y /= wz) ¥imp (enum(y,t) /= enum(wz,t)))))) x2-->Stat2 ==> Ord(x2) & (x2 ¥incin s) & (t = {enum(y,t): y in x2}) & Stat3: (FORALL y in x2, wz in x2 | ((y /= wz) ¥imp (enum(y,t) /= enum(wz,t)))) Loc_def ==> f = {[x,enum(x,t)]: x in x2} APPLY(x9_thryvar:x,y9_thryvar:y) fcn_symbol(f(x)->enum(x,t),g->f,s->x2) ==> Svm(f) & (domain(f) = x2) & (range(f) = {enum(x,t): x in x2}) & (((x in x2) & (y in x2) & (enum(x,t) = enum(y,t)) & (x /= y)) or one_1_map(f)) (x,y)-->Stat3 ==> one_1_map(f) EQUAL ==> Ord(domain(f)) f-->Stat1 ==> false; Discharge ==> QED -- -- A straightforward consequence of Theorem 155, which is stated in the following theorem, is that -- $#s$ is a cardinal in 1-1 correspondence with $s$ (rather than merely in the single-valued -- correspondence which the definition of cardinality requires.) -- This result has several easy but important corollaries which we then digress to prove. -- Theorem 156: [Cardinality theorem] Card(#S) & Ord(#S) & (EXISTS f in OM | one_1_map(f) & (range(f) = S) & (domain(f) = #S)). Proof: Suppose_not(s) ==> (not Card(#s)) or (not Ord(#s)) or (not (EXISTS f in OM | one_1_map(f) & (range(f) = s) & (domain(f) = #s))) -- -- For suppose the contrary, i.e. either $#s$ is not a cardinal or is not in 1-1 correspondence with $s$. -- Since by Theorem 147 $#s$ is an ordinal in 1-1 correspondence with $s$, it follows that -- $#s$ must not be a cardinal. Thus, by definition of 'cardinal', there must exist a member $c$ -- of $#s$ and a 1-1 map of $c$ onto $#s$. -- s-->T147 ==> Ord(#s) & Stat1: (EXISTS f in OM | one_1_map(f) & (range(f) = s) & (domain(f) = #s)) & Stat2: (not(EXISTS o in #s | (EXISTS g in OM | one_1_map(g) & (range(g) = s) & (domain(g) = o)))) ELEM ==> not Card(#s) Use_def(Card) ==> not (Ord(#s) & (FORALL y in #s, ff in OM | not(domain(ff) = y) or not(range(ff) = #s) or not(Svm(ff)))) ELEM ==> Stat3: not(FORALL y in #s, ff in OM | not(domain(ff) = y) or not(range(ff) = #s) or not(Svm(ff))) (c,g)-->Stat3 ==> (c in #s) & (domain(g) = c) & (range(g) = #s) & Svm(g) (#s,c)-->T12 ==> Ord(c) -- -- By Theorem 138, $g$ has a 1-1 partial inverse $h$, which maps $#s$ to a subset of $c$, so the inverse of -- $h$ is a 1-1 mapping of this subset $ssc$ onto $#s$. -- g-->T138 ==> Stat4: (EXISTS h | (domain(h) = range(g)) & (range(h) ¥incin domain(g)) & one_1_map(h) & (FORALL x in range(g) | g~[h~[x]] = x)) h-->Stat4 ==> (domain(h) = #s) & (range(h) ¥incin c) & one_1_map(h) h-->T101 ==> (range(inv(h)) = #s) & (domain(inv(h)) ¥incin c) & one_1_map(inv(h)) -- -- However, Theorem 155 tells us that there is a 1-1 map $f$ of an ordinal contained in $c$ onto $ssc$. -- By Theorem 34, this ordinal must either be $c$ or a member of $c$, and so must be a member of -- $#s$ in any case. -- (c,domain(inv(h)))-->T155 ==> Stat5: (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (domain(f) ¥incin c) & (range(f) = domain(inv(h)))) f-->Stat5 ==> one_1_map(f) & Ord(domain(f)) & (domain(f) ¥incin c) & (range(f) = domain(inv(h))) (c,domain(f))-->T34 ==> (domain(f) in c) or (domain(f) = c) (#s,c)-->T34 ==> c ¥incin #s ELEM ==> Stat6: domain(f) in #s -- -- But now the map product $inv(h) @ f$ is a 1-1 map of a member of $#s$ onto $#s$, so if we let $ff$ -- be a 1-1 map of $#s$ to $s$, $ff @ (inv(h) @ f)$ is a 1-1 map of a member of $#s$ onto $s$. -- (f,inv(h))-->T96 ==> (domain(inv(h) @ f) = domain(f)) & (range(inv(h) @ f) = #s) (inv(h),f)-->T133 ==> one_1_map(inv(h) @ f) ff-->Stat1 ==> one_1_map(ff) & (range(ff) = s) & (domain(ff) = #s) (inv(h) @ f,ff)-->T96 ==> (domain(ff @ (inv(h) @ f)) = domain(f)) & (range(ff @ (inv(h) @ f)) = s) (ff,inv(h) @ f)-->T133 ==> one_1_map(ff @ (inv(h) @ f)) -- -- By Stat7 7, this is impossible, a contradiction which proves our theorem. -- (domain(f))-->Stat2 ==> Stat8: (domain(f) in #s) ¥imp (not(EXISTS g in OM | one_1_map(g) & (range(g) = s) & (domain(g) = domain(f)))) (ff @ (inv(h) @ f))-->Stat8 ==> false; Discharge ==> QED -- -- Theorem 156 implies that any two sets which are in 1-1 correspondence have the same cardinality. -- Theorem 157: [One-one maps are cardinality preserving] one_1_map(F) ¥imp (#range(F) = #domain(F)). Proof: Suppose_not(h) ==> one_1_map(h) & (#range(h) /= #domain(h)) -- -- We proceed by contradiction, and so suppose that there exists -- a 1-1 map whose range and domain have different cardinalities. -- Since each of these two is are in 1-1 correspondence with its cardinality, -- $#range(h)$ and $#domain(h)$ are in 1-1 correspondence with each other. -- (range(h))-->T147 ==> Ord(#range(h)) & Stat1: (EXISTS f in OM | (one_1_map(f) and (range(f) = range(h)) and (domain(f) = #range(h)))) f-->Stat1 ==> one_1_map(f) & (range(f) = range(h)) & (domain(f) = #range(h)) (domain(h))-->T147 ==> Ord(#domain(h)) & Stat2: (EXISTS f in OM | (one_1_map(f) and (range(f) = domain(h)) and (domain(f) = #domain(h)))) g-->Stat2 ==> one_1_map(g) & (range(g) = domain(h)) & (domain(g) = #domain(h)) f-->T101 ==> one_1_map(inv(f)) & (range(inv(f)) = #range(h)) & (domain(inv(f)) = range(h)) (h,g)-->T133 ==> one_1_map(h @ g) (g,h)-->T96 ==> (range(h @ g) = range(h)) & (domain(h @ g) = #domain(h)) (inv(f),h @ g)-->T133 ==> one_1_map(inv(f) @ (h @ g)) (h @ g,inv(f))-->T96 ==> (range(inv(f) @ (h @ g)) = #range(h)) & (domain(inv(f) @ (h @ g)) = #domain(h)) (inv(f) @ (h @ g))-->T101 ==> one_1_map(inv(inv(f) @ (h @ g))) & (range(inv(inv(f) @ (h @ g))) = #domain(h)) & (domain(inv(inv(f) @ (h @ g))) = #range(h)) -- -- But by Theorem 31 one of the two distinct ordinals $#range(h)$ and $#domain(h)$, -- must be a member of the other, even though both are cardinals, so neither -- can be in 1-1 correspondence with anything smaller. This contradiction proves our theorem. -- (#range(h),#domain(h))-->T31 ==> (#range(h) in #domain(h) or #domain(h) in #range(h)) (#range(h))-->T156 ==> Card(#range(h)) (#domain(h))-->T156 ==> Card(#domain(h)) Suppose ==> #range(h) in #domain(h) Use_def(Card) ==> Stat3: (FORALL y in #domain(h), f in OM | (not(domain(f) = y) or not(range(f) = #domain(h)) or not(Svm(f)))) (#range(h),inv(inv(f) @ (h @ g)))-->Stat3 ==> not(Svm(inv(inv(f) @ (h @ g)))) Use_def(one_1_map) ==> false; Discharge ==> #domain(h) in #range(h) Use_def(Card) ==> Stat4: (FORALL y in #range(h), f in OM | (not(domain(f) = y) or not(range(f) = #range(h)) or not(Svm(f)))) (#domain(h),inv(f) @ (h @ g))-->Stat4 ==> not(Svm(inv(f) @ (h @ g))) Use_def(one_1_map) ==> false; Discharge ==> QED -- -- The following corollary rounds out Theorem 157 by proving that two sets -- can be in 1-1 correspondence if and only if they have the same cardinality. -- It is this result that captures the essence of the notion of cardinality. -- Theorem 158: [Equicardinality is equivalent to one-one correspondence] (EXISTS F in OM | (one_1_map(F) & (range(F) = S) & (domain(F) = T))) ¥eq (#S = #T). Proof: Suppose_not(s,t) ==> ((not(EXISTS f in OM | (one_1_map(f) & (range(f) = s) & (domain(f) = t))) & (#s = #t)) or ((EXISTS f in OM | (one_1_map(f) & (range(f) = s) & (domain(f) = t))) & (#s /= #t))) -- -- We proceed by contradiction. Since Theorem 157 implies that $s$ and $t$ cannot have -- different cardinalities if they are in 1-1 correspondence, it must be that -- they have the same cardinality but are not in 1-1 correspondence. -- Suppose ==> Stat1: (EXISTS f in OM | (one_1_map(f) & (range(f) = s) & (domain(f) = t))) & (#s /= #t) f-->Stat1 ==> one_1_map(f) & (range(f) = s) & (domain(f) = t) f-->T157 ==> #range(f) = #domain(f) EQUAL ==> false Discharge ==> Stat2: (not(EXISTS f in OM | (one_1_map(f) & (range(f) = s) & (domain(f) = t)))) & (#s = #t) -- -- But by Theorem 156, s and t are in 1-1 correspondence with their respective cardinalities $#s$ and $#t$, -- by mappings $g$ and $h$ respectively. -- s-->T156 ==> Stat3: (EXISTS f in OM | one_1_map(f) & (range(f) = s) & (domain(f) = #s)) t-->T156 ==> Stat4: (EXISTS f in OM | one_1_map(f) & (range(f) = t) & (domain(f) = #t)) g-->Stat3 ==> one_1_map(g) & (range(g) = s) & (domain(g) = #s) h-->Stat4 ==> one_1_map(h) & (range(h) = t) & (domain(h) = #t) -- -- Hence the map $(g @ inv(h))$, whose domain and range are $t$ and $s$ respectively, -- is 1-1, contradicting Stat5 5 and thereby proving our theorem. -- h-->T101 ==> one_1_map(inv(h)) & (range(inv(h)) = #t) & (domain(inv(h)) = t) (g,inv(h))-->T133 ==> one_1_map(g @ inv(h)) (inv(h),g)-->T96 ==> (range(g @ inv(h)) = range(g)) & (domain(g @ inv(h)) = t) (g @ inv(h))-->Stat2 ==> false; Discharge ==> QED -- -- It follows from Theorem 158 that the enumerating ordinal of a set $s$, like any other -- set $t$ in 1-1 correspondence with $s$, has the same cardinality as $s$. -- Theorem 159: [The enumerating ordinal of a set has the same cardinality as the set] (EXISTS o | Ord(o) & (S = {enum(x,S): x in o}) & (#o = #S)). Proof: Suppose_not(s1) ==> Stat1: not(EXISTS o | (Ord(o) & s1 = {enum(x,s1): x in o} & (#o = #s1))) -- -- Suppose the contrary, so that no ordinal which '$enum$' puts in 1-1 correspondence with $s$ -- has the same cardinality as $s1$. Theorem 46 tells us that there is some ordinal $o$ -- which '$enum$' puts in 1-1 correspondence with $s1$, i.e. '$enum$' defines a 1-1 function $f$ -- whose domain is $o$ and whose range is $s1$. Thus $o$ and $s1$ have the same cardinality, and so -- $o$ is a counterexample to Stat2 2, a contradiction which proves our theorem. -- s1-->T46 ==> Stat3: (EXISTS o | (Ord(o) & (s1 = {enum(x,s1): x in o})) & (FORALL y in o, z in o | ((y /= z) ¥imp (enum(y,s1) /= enum(z,s1))))) o-->Stat3 ==> Ord(o) & (s1 = {enum(x,s1): x in o}) & Stat4: (FORALL y in o, z in o | ((y /= z) ¥imp (enum(y,s1) /= enum(z,s1)))) Loc_def ==> f = {[x,enum(x,s1)]: x in o} APPLY(x9_thryvar:a,y9_thryvar:b) fcn_symbol(f(x)->enum(x,s1),g->f,s->o) ==> Svm(f) & (domain(f) = o) & (range(f) = {enum(x,s1): x in o}) & (((a in o) & (b in o) & (enum(a,s1) = enum(b,s1)) & (a /= b)) or one_1_map(f)) Suppose ==> Stat5: (a in o) & (b in o) & (enum(a,s1) = enum(b,s1)) & (a /= b) (a,b)-->Stat4 ==> false; Discharge ==> one_1_map(f) ELEM ==> one_1_map(f) & (domain(f) = o) & (range(f) = s1) (s1,o)-->T158 ==> Stat6: (EXISTS f in OM | (one_1_map(f) & (range(f) = s1) & (domain(f) = o))) ¥imp (#s1 = #o) f-->Stat6 ==> #o = #s1 o-->Stat1 ==> false; Discharge ==> QED -- -- Theorem 157 also has the two following corollaries, which state facts basic to the -- arithmetic theory of infinite cardinals. The first of these is the associative law -- for cardinal arithmetic, which follows as an elementary consequence of Theorem 144. -- Theorem 160: [Associative Law for Cardinals] #((A ¥PROD B) ¥PROD C) = #(A ¥PROD (B ¥PROD C)). Proof: Suppose_not(a,b,c) ==> #((a ¥PROD b) ¥PROD c) /= #(a ¥PROD (b ¥PROD c)) Loc_def ==> f = {[[[x,y],wz],[x,[y,wz]]]: x in a, y in b, wz in c} (f,a,b,c)-->T144 ==> one_1_map(f) & (domain(f) = ((a ¥PROD b) ¥PROD c)) & (range(f) = (a ¥PROD (b ¥PROD c))) EQUAL ==> #domain(f) /= #range(f) f-->T157 ==> false; Discharge ==> QED -- -- The following proof of the associative law for cardinal arithmetic is equally elementary, -- this time as a consequence of Theorem 145. -- Theorem 161: [Commutative Law for Cardinals] #(A ¥PROD B) = #(B ¥PROD A). Proof: Suppose_not(a,b) ==> #(a ¥PROD b) /= #(b ¥PROD a) Loc_def ==> f = {[[x,y],[y,x]]: x in a, y in b} (f,a,b)-->T145 ==> one_1_map(f) & (domain(f) = (a ¥PROD b)) & (range(f) = (b ¥PROD a)) EQUAL ==> (#domain(f) = #(a ¥PROD b)) & (#range(f) = #(b ¥PROD a)) f-->T157 ==> #(a ¥PROD b) = #(b ¥PROD a) Discharge ==> QED -- -- The following utility lemma simply notes that only the null set can have cardinality $0$. -- Theorem 162: [Sets of cardinality 0 must be null] (#S = 0) ¥eq (S = 0). Proof: Suppose_not(s) ==> not((#s = 0) ¥eq (s = 0)) -- -- For since any set $s$ is in 1-1 correspondence with its cardinality, -- our result follows immediately from Theorem 86 -- (s)-->T147 ==> Stat1: (EXISTS f in OM | (one_1_map(f) & (range(f) = s) & (domain(f) = #s))) (f)-->Stat1 ==> one_1_map(f) & (range(f) = s) & (domain(f) = #s) f-->T86 ==> (range(f) = 0) ¥eq (domain(f) = 0) Discharge ==> QED -- -- It is also useful to state the following variant of the preceding lemma, -- which notes that every nonzero cardinal is larger than $0$ -- Theorem 163: [Non-null sets have cardinality greater than 0] (0 in #S) ¥eq (S /= 0). Proof: Suppose_not(s) ==> (((0 in #s) & (s = 0)) or ((0 notin #s) & (s /= 0))) (s)-->T162 ==> (0 notin #s) & (#s /= 0) T147 ==> Ord(#s) Suppose ==> not Ord(0) Use_def(Ord) ==> (not(FORALL x in 0 | x ¥incin 0)) or (not(FORALL x in 0, y in 0 | x in y or y in x or x = y)) Suppose ==> Stat1: (not(FORALL x in 0 | x ¥incin 0)) c-->Stat1 ==> false; Discharge ==> Stat2: (not(FORALL x in 0, y in 0 | x in y or y in x or x = y)) d-->Stat2 ==> false; Discharge ==> Ord(0) (#s,0)-->T31 ==> false; Discharge ==> QED -- -- Next we show that a set $s$ is a cardinal if and only if it is its own cardinal. -- Theorem 164: [A cardinal is its own cardinality] Card(S) ¥eq (S = #S). Proof: Suppose_not(s) ==> (Card(s) & (not (s = #s))) or ((not Card(s)) & (s = #s)) -- -- We proceed by contradiction. Since Theorem 156 tells us that $#s$ is a cardinal with which -- $s$ is in 1-1 correspondence, only the first of the two cases displayed above need be considered. -- In this case $s$ and $#s$ are both cardinals, hence ordinals, so one must be a member of the other. -- s-->T156 ==> Card(#s) & Stat1: (EXISTS f in OM | one_1_map(f) & (range(f) = s) & (domain(f) = #s)) Suppose ==> (not Card(s)) & (s = #s) EQUAL ==> false; Discharge ==> s /= #s f-->Stat1 ==> one_1_map(f) & (range(f) = s) & (domain(f) = #s) Use_def(Card) ==> Ord(s) & Stat2: (FORALL y in s, f in OM | (not(domain(f) = y) or not(range(f) = s) or not(Svm(f)))) Use_def(Card) ==> Ord(#s) & Stat3: (FORALL y in #s, f in OM | (not(domain(f) = y) or not(range(f) = #s) or not(Svm(f)))) (s,#s)-->T31 ==> (s in #s or #s in s) -- -- But Stat4 4 (resp. Stat4 5) tells us that $#s$ cannot be a member of $s$ -- (resp. $s$ cannot be a member of $#s$), so we have a contradiction which proves our theorem. -- Suppose ==> #s in s (#s,f)-->Stat2 ==> not(Svm(f)) Use_def(one_1_map) ==> false; Discharge ==> s in #s f-->T101 ==> one_1_map(inv(f)) & (range(inv(f)) = #s) & (domain(inv(f)) = s) (s,inv(f))-->Stat3 ==> not(Svm(inv(f))) Use_def(one_1_map) ==> false; Discharge ==> QED -- -- In the following corollary we note that if $c$ is a cardinal -- and is in 1-1 correspondence with a set $s$, then $c$ is $#s$. -- Theorem 165: [Uniqueness of Cardinality] (Card(C) & (EXISTS f in OM | (one_1_map(f) & (range(f) = S) & domain(f) = C))) ¥imp (C = #S). Proof: Suppose_not(c,s) ==> Card(c) & Stat1: (EXISTS f in OM | (one_1_map(f) & (range(f) = S) & domain(f) = C)) & (c /= #s) f-->Stat1 ==> Card(c) & one_1_map(f) & (range(f) = s) & (domain(f) = c) & (c /= #s) -- -- Suppose the contrary, i.e. that there is a cardinal $c$ in 1-1 correspondence with $s$ -- which is different from $#s$. f-->T157 ==> #range(f) = #domain(f) EQUAL ==> #c /= c c-->T164 ==> false; Discharge ==> QED -- -- Our next two results are also simple corollaries of the foregoing: the cardinality operator -- "$\#$" is idempotent, and any two distinct cardinals are ordered by membership. -- Theorem 166: [The cardinality operator is idempotent] #S = ##S. Proof: Suppose_not(s) ==> #s /= ##s s-->T156 ==> Card(#s) (#s)-->T164 ==> false; Discharge ==> QED -- Theorem 167: [All cardinals are comparable] (#S in #T) or (#S = #T) or (#T in #S). Proof: Suppose_not(s,t) ==> not((#s in #t) or (#s = #t) or (#t in #s)) s-->T156 ==> Ord(#s) t-->T156 ==> Ord(#t) (#s,#t)-->T31 ==> false; Discharge ==> QED -- -- Next we note that the ordering of cardinals by membership is transitive, -- simply because cardinals must be ordinals and our claim holds for ordinals by Theorem 34. -- Theorem 168: [Cardinal comparison is transitive] ((#S in #T) & (#T in #R)) ¥imp (#S in #R). Proof: Suppose_not(s,t,r) ==> (#s in #t) & (#t in #r) & (#s notin #r) r-->T156 ==> Ord(#r) (#r,#t)-->T12 ==> Ord(#t) (#r,#t)-->T34 ==> (Ord(#r) & Ord(#t)) ¥imp ((#t ¥incin #r) ¥eq ((#t in #r) or (#t = #r))) ELEM ==> #s notin #r Discharge ==> QED -- -- We can use the preceding results to prove that subsets of an ordinal -- have a cardinality that is no larger than the ordinal. This is just a bit -- short of the more general result (which follows as Theorem 170) -- that subsets of a set $s$ can never have a cardinality greater than $#s$. -- Theorem 169: [Subsets of an ordinal have a cardinality that is no larger than the ordinal] (Ord(S) & (T ¥incin S)) ¥imp (#T ¥incin S). Proof: Suppose_not(s,t) ==> Ord(s) & (t ¥incin s) & (not(#t ¥incin s)) -- -- Proceeding by contradiction, let the ordinal $s$ and its subset $t$ be a counterexample. -- By the preceding theorem, there is an ordinal $u$ no larger than $s$ -- which '$enum$' puts into 1-1 correspondence with $t$. -- (s,t)-->T154 ==> Stat1: (EXISTS x ¥incin s | (Ord(x) & (t = {enum(y,t): y in x}) & (FORALL y in x, z in x | ((y /= z) ¥imp (enum(y,t) /= enum(z,t)))))) u-->Stat1 ==> Stat2: (u ¥incin s) & Ord(u) & (t = {enum(y,t): y in u}) & Stat3: (FORALL y in u, wz in u | ((y /= wz) ¥imp (enum(y,t) /= enum(wz,t)))) Loc_def ==> g = {[x,enum(x,t)]: x in u} APPLY(x9_thryvar:x,y9_thryvar:y) fcn_symbol(f(x)->enum(x,t),g->g,s->u) ==> Svm(g) & (range(g) = {enum(x,t): x in u}) & (domain(g) = u) & (((x in u) & (y in u) & (enum(x,t) = enum(y,t)) & (x /= y)) or one_1_map(g)) (x,y)-->Stat3 ==> one_1_map(g) -- -- Theorem 157 now tells us that $#t = #u$. But it is easy to see that $u incs #u$ for every ordinal $u$. -- g-->T157 ==> #range(g) = #domain(g) EQUAL ==> #t = #u Suppose ==> Stat4: not(u incs #u) u-->T156 ==> Stat5: Card(#u) & Ord(#u) & Stat6: (EXISTS f in OM | (one_1_map(f) & (range(f) = u) & (domain(f) = #u))) f-->Stat6 ==> Stat7: one_1_map(f) & (range(f) = u) & (domain(f) = #u) f-->T101(Stat7) ==> one_1_map(inv(f)) & (domain(inv(f)) = u) & (range(inv(f)) = #u) Use_def(one_1_map) ==> Stat8: Svm(inv(f)) (u,#u)-->T29(Stat4,Stat5,Stat2) ==> Stat9: #u incs u (#u,u)-->T34(Stat2,Stat5,Stat9,Stat4) ==> u in #u Use_def(Card) ==> Stat10: (FORALL y in #u, f in OM | (not(domain(f) = y) or not(range(f) = #u) or not(Svm(f)))) (u,inv(f))-->Stat10 ==> false; Discharge ==> u incs #u -- -- But now, since $s$ $incs$ $u$ $incs$ $#u = #t$, we must have $s incs #t$, contradicting our original -- assumption and thus proving our theorem. -- Discharge ==> QED -- -- The following theorem, which the preceding theorem anticipates, -- states the basic fact that the cardinality of a subset $t$ of $s$ -- can be no larger than the cardinality of $s$. -- Theorem 170: [Subset cardinality theorem] (T ¥incin S) ¥imp (#T ¥incin #S). Proof: Suppose_not(t,s) ==> Stat1: (t ¥incin s) & (not (#t ¥incin #s)) -- -- For suppose that $t$ is a subset of $s$ but has a larger cardinality. -- Then $s$ is in 1-1 correspondence with $#s$ by some map $f$, -- and so the inverse of $f$ maps $t$ to a subset of $#s$ in 1-1, and hence cardinality-preserving, fashion. -- (s)-->T156 ==> Stat2: Card(#s) and (EXISTS f in OM | one_1_map(f) & (range(f) = s) & (domain(f) = #s)) (f)-->Stat2 ==> one_1_map(f) & (range(f) = s) & (domain(f) = #s) f-->T101 ==> one_1_map(inv(f)) & (f = inv(inv(f))) & (range(inv(f)) = domain(f)) & (domain(inv(f)) = range(f)) (inv(f),t)-->T58 ==> one_1_map(inv(f) ¥ON t) (inv(f) ¥ON t)-->T157 ==> Stat3: #domain(inv(f) ¥ON t) = #range(inv(f) ¥ON t) (inv(f),t)-->T80 ==> range(inv(f) ¥ON t) ¥incin #s -- -- Since the cardinal $#s$ is an ordinal, it follows by Theorem 169 that $#range(inv(f) ¥ON t)$ -- is not larger than $#s$. But since $inv(f) ¥ON t$ is 1-1 and has domain $t$, $#range(inv(f) ¥ON t) = #t$; -- so $#t ¥incin #s$, a contradiction which proves our theorem. -- (s)-->T147 ==> Ord(#s) (#s,range(inv(f) ¥ON t))-->T169 ==> Stat4: #range(inv(f) ¥ON t) ¥incin #s (inv(f),t)-->T94 ==> domain(inv(f) ¥ON t) = t EQUAL ==> Stat5: #domain(inv(f) ¥ON t) = #t (Stat1,Stat3,Stat4,Stat5)Discharge ==> QED -- -- The following somewhat more general result tells us that the range of a single-valued map is -- never more numerous than its domain. -- Theorem 171: [Single-valued mapping cannot increase cardinality] Svm(F) ¥imp (#range(F) ¥incin #domain(F)). Proof: Suppose_not(f) ==> Svm(f) & (not (#range(f) ¥incin #domain(f))) f-->T138 ==> Stat1: (EXISTS h | ((domain(h) = range(f)) & (range(h) ¥incin domain(f)) & one_1_map(h)) & (FORALL x in range(f) | (f~[h~[x]] = x))) h-->Stat1 ==> (domain(h) = range(f)) & (range(h) ¥incin domain(f)) & one_1_map(h) (range(h),domain(f))-->T170 ==> #range(h) ¥incin #domain(f) EQUAL ==> #domain(h) = #range(f) h-->T157 ==> false; Discharge ==> QED -- -- Next we show that the domain and range of any map $f$ (and indeed of any set $f$) is no greater than $f$. -- Theorem 172: [The cardinality of a map is no smaller than the cardinality of its domain] #domain(F) ¥incin #F. Proof: Suppose_not(f) ==> not(#domain(f) ¥incin #f) -- -- For $domain(f)$ is a single-valued image of $f$ by the map ${[x,car(x)]: x in f}$, and so the -- present theorem is a corollary of Theorem 171. -- Loc_def ==> g = {[x,car(x)]: x in f} APPLY() fcn_symbol(f(x)->car(x),g->g,s->f) ==> Svm(g) & (domain(g) = f) & (range(g) = {car(x): x in f}) Use_def(domain) ==> range(g) = domain(f) g-->T171 ==> #range(g) ¥incin #domain(g) EQUAL ==> #domain(f) ¥incin #f Discharge ==> QED -- Theorem 173: [The cardinality of a map is no smaller than the cardinality of its range] #range(F) ¥incin #F. Proof: Suppose_not(f) ==> not (#range(f) ¥incin #f) -- -- For $range(f)$ is a single-valued image of $f$ by the map ${[x,cdr(x)]: x in f}$, and so the -- present theorem is a corollary of Theorem 171. -- Loc_def ==> g = {[x,cdr(x)]: x in f} APPLY() fcn_symbol(f(x)->cdr(x),g->g,s->f) ==> Svm(g) & (domain(g) = f) & (range(g) = {cdr(x): x in f}) Use_def(range) ==> range(g) = range(f) g-->T171 ==> #range(g) ¥incin #domain(g) EQUAL ==> #range(f) ¥incin #f Discharge ==> QED -- -- If the map $f$ is single-valued, the inequality given by Theorem 172 can be sharpened -- to an equality: -- Theorem 174: [The cardinality of a single-valued map equals the cardinality of its domain] Svm(F) ¥imp (#domain(F) = #F). Proof: Suppose_not(f) ==> Svm(f) & (#domain(f) /= #f) -- -- For in this case $domain(f)$ is easily seen to be a 1-1 image of $f$ by the map ${[x,car(x)]: x in f}$, -- and so the present theorem is a corollary of Theorem 157. -- Loc_def ==> g = {[u,car(u)]: u in f} APPLY(x9_thryvar:x,y9_thryvar:y) fcn_symbol(f(x)->car(x),g->g,s->f) ==> Svm(g) & (domain(g) = f) & (range(g) = {car(x): x in f}) & (((x in f) & (y in f) & (car(x) = car(y)) & (x /= y)) or one_1_map(g)) Use_def(domain) ==> range(g) = domain(f) Suppose ==> not one_1_map(g) ELEM ==> (x in f) & (y in f) & (car(x) = car(y)) & (x /= y) Use_def(Svm) ==> Stat1: (FORALL x in f, y in f | (car(x) = car(y)) ¥imp (x = y)) (x,y)-->Stat1 ==> false; Discharge ==> one_1_map(g) g-->T157 ==> #domain(g) = #range(g) EQUAL ==> #domain(f) = #f Discharge ==> QED -- -- Our next theorem states that the restriction of a -- single-valued map $f$ to any subset $a$ of $domain(f)$ -- has the same cardinality as $a$. -- Theorem 175: [Cardinality of restriction maps] (Svm(F) & (domain(F) incs A)) ¥imp (#(F ¥ON A) = #A). Proof: Suppose_not(f,a) ==> Svm(f) & (domain(f) incs a) & (#(f ¥ON a) /= #a) (f,a)-->T94 ==> domain(f ¥ON a) = a EQUAL ==> #domain(f ¥ON a) = #a (f,a)-->T57 ==> Svm(f ¥ON a) (f¥ON a)-->T174 ==> false; Discharge ==> QED -- -- The preceding theorems allow us to add an additional result to our utility fcn_symbol theory. -- This simply states the fact that the cardinality of a single-valued map is the cardinality -- of its domain, and is at least as large as the cardinality of its range. -- ENTER_THEORY fcn_symbol [Add an additional result to the fcn_symbol theory] -- Theorem fcn_symbol1: [Cardinality of mapformers and range formers] (#{[xx,f(xx)]: xx in s} = #s) & (#{f(xx): xx in s} ¥incin #s). Proof: Suppose_not ==> not((#{[x,f(x)]: x in s} = #s) & (#{f(x): x in s} ¥incin #s)) Assump ==> g = {[x,f(x)]: x in s} Tfcn_symbol.1 ==> domain(g) = s Tfcn_symbol.5 ==> range(g) = {f(x): x in s} Tfcn_symbol.7 ==> Svm(g) g-->T174 ==> #domain(g) = #g EQUAL ==> #{[x,f(x)]: x in s} = #s g-->T173 ==> #range(g) ¥incin #g EQUAL ==> #{f(x): x in s} ¥incin #{[x,f(x)]: x in s} Discharge ==> QED -- ENTER_THEORY Set_theory [Return to the top-level theory] -- -- Next we show that if $t$ is not null, the condition $(#s incs #t)$ is equivalent -- to the existence of a single-valued map of $s$ onto $t$. -- Theorem 176: [Condition for existence of a single-valued map between two sets] (#S incs #T) ¥eq (T = 0 or (EXISTS f in OM | Svm(f) & (domain(f) = S) & (range(f) = T))). Proof: Suppose_not(s,t) ==> ((#s incs #t) & (t /= 0) & (not(EXISTS f in OM | Svm(f) & (domain(f) = s) & (range(f) = t)))) or ((not (#s incs #t)) & (t = 0 or (EXISTS f in OM | Svm(f) & (domain(f) = s) & (range(f) = t)))) -- -- Proceed by contradiction, and so suppose that either (Case 1) $#s$ is at least as large as $#t$ -- but there exists no single-valued map of $s$ onto $t$, or that (Case 2) there exists such a map -- but that $#t$ is larger than $#s$. Consider Case 1 first. By Theorem 147, there are 1-1 maps $h$ and $g$ -- which respectively send $#s$ and $#t$ to $s$ and $t$. -- Suppose ==> (#s incs #t) & (t /= 0) & Stat1: (not(EXISTS ff in OM | Svm(ff) & (domain(ff) = s) & (range(ff) = t))) (s)-->T147 ==> Stat2: (EXISTS f in OM | (one_1_map(f) & (range(f) = s) & (domain(f) = #s))) (h)-->Stat2 ==> one_1_map(h) & (range(h) = s) & (domain(h) = #s) (t)-->T147 ==> Stat3: (EXISTS f in OM | (one_1_map(f) & (range(f) = t) & (domain(f) = #t))) (g)-->Stat3 ==> one_1_map(g) & (range(g) = t) & (domain(g) = #t) -- -- Moreover, we can easily define a single-valued map of $#s$ onto its subset $#t$. -- Simply note that $0$ is an element of $#t$, and map all elements of $#s$ which -- belong to $#t$ into themselves, and all other elements of $#s$ onto $0$. -- t-->T163 ==> 0 in #t Loc_def ==> f = {[x,if (x in (#t)) then x else 0 end if]: x in (#s)} APPLY() fcn_symbol(f(x)->if x in #t then x else 0 end if,g->f,s->#s) ==> Svm(f) & (domain(f) = #s) & (range(f) = {if x in #t then x else 0 end if: x in #s}) Suppose ==> Stat4: range(f) /= #t c-->Stat4 ==> ((c in {if x in #t then x else 0 end if: x in #s}) & (c notin #t)) or ((c notin {if x in #t then x else 0 end if: x in #s}) & (c in #t)) Suppose ==> Stat5: (c notin {if x in #t then x else 0 end if: x in #s}) & (c in #t) c-->Stat5 ==> (c /= if c in #t then c else 0 end if or c notin #s) Discharge ==> Stat6: (c in {if x in #t then x else 0 end if: x in #s}) & (c notin #t) d-->Stat6 ==> c = if d in #t then d else 0 end if Discharge ==> Svm(f) & (domain(f) = #s) & (range(f) = #t) -- -- Theorem 101 now tells us that h has a 1-1 inverse which maps $s$ onto $#s$. Hence -- $g @ (f @ inv(h))$ is a single-valued map of $s$ onto $t$, showing that Case 1 is impossible. -- h-->T101 ==> one_1_map(inv(h)) & (range(inv(h)) = #s) & (domain(inv(h)) = s) Use_def(one_1_map) ==> Svm(h) & Svm(g) & Svm(inv(h)) (f,inv(h))-->T128 ==> Svm(f @ inv(h)) (inv(h),f)-->T96 ==> (domain(f @ inv(h)) = s) & (range(f @ inv(h)) = #t) (g,f @ inv(h))-->T128 ==> Svm(g @ (f @ inv(h))) (f @ inv(h),g)-->T96 ==> (domain(g @ (f @ inv(h))) = s) & (range(g @ (f @ inv(h))) = t) (g @ (f @ inv(h)))-->Stat1 ==> false -- -- So only Case2 remains to be considered. But in this case there is a single-valued map $hh$ of $s$ onto $t$, -- and so Theorem 162, Theorem 174, and Theorem 173 lead to an immediate contradiction, proving our theorem. -- Discharge ==> (not #s incs #t) & (t = 0 or (EXISTS f in OM | Svm(f) & (domain(f) = s) & (range(f) = t))) ELEM ==> #t /= 0 t-->T162 ==> t /= 0 ELEM ==> Stat7: (EXISTS f in OM | Svm(f) & (domain(f) = s) & (range(f) = t)) hh-->Stat7 ==> Svm(hh) & (domain(hh) = s) & (range(hh) = t) hh-->T174 ==> #hh = #domain(hh) EQUAL ==> #hh = #s hh-->T173 ==> #hh incs #range(hh) EQUAL ==> #hh incs #t Discharge ==> QED -- -- The inverse image of a set under a map is the image of the set under the inverse of the map. -- This notion, which appears in many arguments, has the following direct definition. -- Def 14d: [Inverse Map Image] Def(G ¥INV_IM R) := {car(p): p in G | cdr(p) in R} -- -- We can use the foregoing defintion to prove various elementary properties of the inverse image, -- beginning with the following, which in effect tells us that the inverse image operation is additive. -- Theorem 177: [Domains and ranges of inverse] domain(G) = (G ¥INV_IM R) + (G ¥INV_IM (range(G) - R)). Proof: Suppose_not(g,r) ==> domain(g) /= (g ¥INV_IM r) + (g ¥INV_IM (range(g) - r)) -- -- For if not, expansion of the definitions involved brigns us to the inequality between setformers seen below. -- Use_def(domain) ==> {car(p): p in g} /= (g ¥INV_IM r) + (g ¥INV_IM (range(g) - r)) Use_def(¥INV_IM) ==> {car(p): p in g} /= {car(p): p in g | cdr(p) in r} + {car(p): p in g | cdr(p) in (range(g) - r)} -- -- But it is easily seen, using set monotonicity that the left side of this last inequality -- includes the right, and so the right side must fail to include the left. Hence here is a point q -- in the left-hand set but in neither of those on the right. -- Set_monot ==> {car(p): p in g} incs {car(p): p in g | cdr(p) in r} Set_monot ==> {car(p): p in g | cdr(p) in (range(g) - r)} ¥incin {car(p): p in g} ELEM ==> Stat1: not( {car(p): p in g} ¥incin ({car(p): p in g | cdr(p) in r} + {car(p): p in g | cdr(p) in (range(g) - r)})) q-->Stat1 ==> Stat2: (q in {car(p): p in g}) & Stat3: (q notin {car(p): p in g | cdr(p) in r}) & Stat4: (q notin {car(p): p in g | cdr(p) in (range(g) - r)}) -- -- It follows immediately that $q = car(p)$ for some $p in g$, but that $q notin range(g)$, -- an impossibility which completes our proof. -- p-->Stat2 ==> (q = car(p)) & (p in g) p-->Stat3 ==> cdr(p) notin r p-->Stat4 ==> cdr(p) notin range(g) Use_def(range) ==> Stat5: cdr(p) notin {cdr(p): p in g} p-->Stat5 ==> false; Discharge ==> QED -- -- Next we show that the inverse images of two disjoint sets by a single-valued map are disjoint. -- Theorem 178: [Range-decomposition of a map domain] ((S * R = 0) & Svm(G)) ¥imp (((G ¥INV_IM S) * (G ¥INV_IM R)) = 0). Proof: Suppose_not(s,r,g) ==> (s * r = 0) & Svm(g) & (((g ¥INV_IM s) * (g ¥INV_IM r)) /= 0) -- -- For if not there must exist points $p$ and $q$, in $s$ and $r$ respectively, such that $car(p) = car(q)$. -- Use_def(¥INV_IM) ==> Stat1: ({car(p): p in g | cdr(p) in s} * {car(p): p in g | cdr(p) in r}) /= 0 c-->Stat1 ==> Stat2: (c in {car(p): p in g | cdr(p) in s}) & Stat3: (c in {car(p): p in g | cdr(p) in r}) p-->Stat2 ==> (c = car(p)) & (p in g) & (cdr(p) in s) q-->Stat3 ==> (c = car(q)) & (q in g) & (cdr(q) in r) Use_def(Svm) ==> Stat4: (FORALL x in g, y in g | (car(x) = car(y)) ¥imp (x = y)) -- -- But then $p = q$, so that $cdr(p) = cdr(q)$ must belong to both $s$ and $r$, a contradiction -- which completes our proof. -- (p,q)-->Stat4 ==> p = q Discharge ==> QED -- -- The following entirely elementary lemma tells us that the inverse image by a map g -- of any element in the range of g is a nonempty set. -- Theorem 179: [Inverse image of a range element] (Y in range(G)) ¥imp ((G ¥INV_IM {Y}) /= 0). Proof: Suppose_not(y,g) ==> (y in range(g)) & ((g ¥INV_IM {y}) = 0) Use_def(range) ==> Stat1: y in {cdr(p): p in g} Use_def(¥INV_IM) ==> Stat2: {car(p): p in g | cdr(p) in {y}} = 0 p-->Stat1 ==> (y=cdr(p)) & (p in g) p-->Stat2 ==> false; Discharge ==> QED -- -- The following easy lemma tells us that the "$¥INV_IM$" operator instroduced above is the -- same as 'range of inverse', i.e. $f ¥INV_IM r /= range(inv(f) ¥ON r)$. -- Theorem 180: [Range of a restricted inverse map] G ¥INV_IM R = range(inv(G) ¥ON R). Proof: Suppose_not(f,r) ==> f ¥INV_IM r /= range(inv(f) ¥ON r) -- -- For the proof, we have only to expand our assertion using the defintions -- of the operators involved and simplify the resulting setformers. -- Use_def(range) ==> f ¥INV_IM r /= {cdr(q): q in inv(f) ¥ON r} Use_def(¥ON) ==> f ¥INV_IM r /= {cdr(q): q in {s in inv(f) | car(s) in r}} Use_def(inv) ==> f ¥INV_IM r /= {cdr(q): q in {s in {[cdr(t),car(t)]: t in f} | car(s) in r}} SIMPLF ==> {cdr(s): s in {[cdr(t),car(t)]: t in f} | car(s) in r} = {cdr(q): q in {s in {[cdr(t),car(t)]: t in f} | car(s) in r}} SIMPLF ==> {cdr([cdr(t),car(t)]): t in f | car([cdr(t),car(t)]) in r} = {cdr(s): s in {[cdr(t),car(t)]: t in f} | car(s) in r} ELEM ==> f ¥INV_IM r /= {cdr([cdr(t),car(t)]): t in f | car([cdr(t),car(t)]) in r} Use_def(¥INV_IM) ==> false; Discharge ==> QED -- -- Next we show that for single-valued maps, the inverse image $G ¥INV_IM R$ can be expressed -- in an evident way as the set of images of the individual members of $R$ under $G$. -- Theorem 181: [Single-valued inverse image as a setformer] Svm(inv(G)) ¥imp (G ¥INV_IM R = {inv(G)~[w]: w in (R * range(G))}). Proof: Suppose_not(f,r) ==> Svm(inv(f)) & (f ¥INV_IM r /= {inv(f)~[y]: y in (r * range(f))}) -- -- Suppose that $f$ and $r$ furnish a counterexample to our assertion. Since Theorem 180 and Theorem 73 -- allow us to write $f ¥INV_IM r$ as ${(inv(f) ¥ON r)~[y]: y in domain(inv(f) ¥ON r)}$, -- the setformer inequality seen below would follow, and so there would exist an element c -- in one of these sets but not the other. -- (f,r)-->T180 ==> range(inv(f) ¥ON r) /= {inv(f)~[y]: y in (r * range(f))} (inv(f),r)-->T48 ==> Stat1: inv(f) ¥ON r ¥incin inv(f) (inv(f),r)-->T57 ==> Svm(inv(f) ¥ON r) (inv(f) ¥ON r)-->T73 ==> Stat2: {inv(f)~[y]: y in (r * range(f))} /= {(inv(f) ¥ON r)~[y]: y in domain(inv(f) ¥ON r)} (inv(f),r)-->T94 ==> domain(inv(f) ¥ON r) = domain(inv(f)) * r f-->T99 ==> domain(inv(f) ¥ON r) = r * range(f) c-->Stat2 ==> (c in {inv(f)~[y]: y in (r * range(f))}) ¥eq (c notin {(inv(f) ¥ON r)~[y]: y in domain(inv(f) ¥ON r)}) -- -- If c is in the first set but not the second, it would follow since $domain(inv(f) ¥ON r) = r * range(f)$ -- that there was some $y$ in $domain(inv(f) ¥ON r)$ for which $inv(f)~[y] /= (inv(f) ¥ON r)~[y]$, which is impossible. -- Hence c must belong to the second of our two sets but not the first. -- Suppose ==> Stat3: (c in {inv(f)~[y]: y in (r * range(f))}) & (c notin {(inv(f) ¥ON r)~[y]: y in domain(inv(f) ¥ON r)}) (y,y)-->Stat3 ==> (y in domain(inv(f) ¥ON r)) & (inv(f)~[y] /= (inv(f) ¥ON r)~[y]) (inv(f),inv(f) ¥ON r,y)-->T131 ==> false; Discharge ==> Stat4: (c in {(inv(f) ¥ON r)~[y]: y in domain(inv(f) ¥ON r)}) & (c notin {inv(f)~[y]: y in (r * range(f))}) -- -- However an equally elementary contradiction results in this case also, completing our proof. -- (yp,yp)-->Stat4 ==> (yp in domain(inv(f) ¥ON r)) & (inv(f)~[yp] /= (inv(f) ¥ON r)~[yp]) (inv(f),inv(f) ¥ON r,yp)-->T131 ==> false; Discharge ==> QED -- -- It is equally easy to show that for 1-1 maps $g$ the inverse image under $g$ of a singleton set ${y}$ is -- the image of the point $y$ under the inverse map $inv(g)$. -- Theorem 182: [Inverse image of a range element] (one_1_map(G) & (Y in range(G))) ¥imp (G ¥INV_IM {Y} = {inv(G)~[Y]}). Proof: Suppose_not(g,y) ==> Stat1: one_1_map(g) & (y in range(g)) & ((g ¥INV_IM {y}) /= {inv(g)~[y]}) -- -- Indeed, the negative of our assertion reduces to the set theoretic inequality seen below, and -- since the first hand side of this inequality is plainly included in its left hand side, there -- would have to exist an element u in the first of these sets but not the second. -- g-->T101 ==> one_1_map(inv(g)) Use_def(one_1_map) ==> Stat2: Svm(inv(g)) (g,{y})-->T181(Stat1,Stat2) ==> ({inv(g)~[v] : v in ({y} * range(g))} /= {inv(g)~[y]}) Suppose ==> not({inv(g)~[v] : v in ({y} * range(g))} incs {inv(g)~[y]}) ELEM ==> Stat3: inv(g)~[y] notin {inv(g)~[v] : v in ({y} * range(g))} y-->Stat3 ==> false; Discharge ==> Stat4: not({inv(g)~[v] : v in ({y} * range(g))} ¥incin {inv(g)~[y]}) u-->Stat4 ==> Stat5: (u in {inv(g)~[v] : v in ({y} * range(g))}) & (u /= inv(g)~[y]) -- -- But this supposition immediately leads to a contradiction wihc proves our theorem. -- v-->Stat5 ==> (u = inv(g)~[v]) & (v=y) & (u /= inv(g)~[y]) EQUAL ==> false; Discharge ==> QED -- -- Next we show that the range of any map $g$ on the inverse image of a set $r$ by $g$ -- is the intersection of $r$ with the range of $g$. -- Theorem 183: [Range of a map restricted to an inverse image] range(G ¥ON (G ¥INV_IM R)) incs (range(G) * R). Proof: Suppose_not(g,r) ==> Stat1: not(range(g ¥ON (g ¥INV_IM r)) incs (range(g) * r)) -- -- For supposing the contrary and using the definitions of the operators involved we are led to the -- set-theoretic inequality seen below. -- c-->Stat1 ==> (c notin range(g ¥ON (g ¥INV_IM r))) & (c in range(g)) & (c in r) Use_def(¥ON) ==> c notin range({q: q in g | car(q) in (g ¥INV_IM r)}) Use_def(range) ==> (c notin {cdr(p): p in {q: q in g | car(q) in (g ¥INV_IM r)}}) & (c in {cdr(p): p in g}) SIMPLF ==> Stat2: (c in {cdr(p): p in g}) & (c notin {cdr(q): q in g | car(q) in (g ¥INV_IM r)}) (q1,q1)-->Stat2(Stat2*) ==> (c = cdr(q1)) & (q1 in g) & (car(q1) notin g ¥INV_IM r) Use_def(¥INV_IM) ==> Stat3: car(q1) notin {car(t): t in g | cdr(t) in r} q1-->Stat3 ==> false; Discharge ==> QED -- -- Next we show that for any single-valued map $g$ and set $a$, the range of $g$ on -- the inverse image of $a$ under $g$ is $range(g) * a$. -- Theorem 184: [Range of a single-valued map restricted to an inverse image] Svm(G) ¥imp (range(G ¥ON (G ¥INV_IM A)) = range(G) * A). Proof: Suppose_not(g,a) ==> AUTO -- -- For supposing the contrary and using the definitions of the operators involved we are led to the -- set-theoretic inequality seen below. -- (g,a)-->T183 ==> Svm(g) & (not(range(g ¥ON (g ¥INV_IM a)) ¥incin range(g) * a)) Use_def(range) ==> not({cdr(p): p in g ¥ON (g ¥INV_IM a)} ¥incin {cdr(p): p in g} * a) Use_def(¥ON) ==> not({cdr(p): p in {q: q in g | car(q) in (g ¥INV_IM a)}} ¥incin {cdr(p): p in g} * a) SIMPLF ==> not({cdr(p): p in g | car(p) in (g ¥INV_IM a)} ¥incin {cdr(p): p in g} * a) Use_def(¥INV_IM) ==> Stat1: not({cdr(p): p in g | car(p) in {car(q): q in g | cdr(q) in a}} ¥incin {cdr(p): p in g} * a) c-->Stat1 ==> Stat2: (c in {cdr(p): p in g | car(p) in {car(q): q in g | cdr(q) in a}}) & ((c notin {cdr(p): p in g}) or (c notin a)) p-->Stat2 ==> Stat3: (c = cdr(p)) & (p in g) & Stat4: (car(p) in {car(q): q in g | cdr(q) in a}) & ((c notin {cdr(p): p in g}) or (c notin a)) (q,p)-->Stat4 ==> Stat5: (c = cdr(p)) & (p in g) & (car(p) = car(q)) & (q in g) & (cdr(q) in a) & (c notin a) Use_def(Svm) ==> Stat6: (FORALL x in g, y in g | (car(x) = car(y)) ¥imp (x = y)) (p,q)-->Stat6(Stat3*) ==> p = q EQUAL(Stat5) ==> false; Discharge ==> QED -- -- The following simple lemma tells us that for single-valued maps $g$ and sets $a$, $b$, -- the inverse image of $b$ under the restriction of $g$ to the inverse image of $a$ is simply -- the intersection $(g ¥INV_IM a) * (g ¥INV_IM b)$. -- Theorem 185: [Inverse images by a single-valued map] Svm(G) ¥imp ((G ¥ON (G ¥INV_IM A)) ¥INV_IM B = (G ¥INV_IM A) * (G ¥INV_IM B)). Proof: Suppose_not(g,a,b) ==> Svm(g) & ((g ¥ON (g ¥INV_IM a)) ¥INV_IM b /= (g ¥INV_IM a) * (g ¥INV_IM b)) -- -- For supposing the contrary, and using the definitions of "$¥INV_IM$" and "$¥ON$", we are led to the setformer -- inequality seen below. -- Use_def(¥INV_IM) ==> {car(w): w in (g ¥ON (g ¥INV_IM a)) | cdr(w) in b} /= {car(w): w in g | cdr(w) in a} * {car(w): w in g | cdr(w) in b} Use_def(¥ON) ==> {car(w): w in (g ¥ON (g ¥INV_IM a)) | cdr(w) in b} = {car(w): w in {u: u in g | car(u) in (g ¥INV_IM a)} | cdr(w) in b} SIMPLF() ==> {car(w): w in {u: u in g | car(u) in (g ¥INV_IM a)} | cdr(w) in b} = {car(w): w in g | (car(w) in (g ¥INV_IM a)) & (cdr(w) in b)} ELEM ==> {car(w): w in g | (car(w) in (g ¥INV_IM a)) & (cdr(w) in b)} /= {car(w): w in g | cdr(w) in a} * {car(w): w in g | cdr(w) in b} -- -- One more use of the definitions of "$¥INV_IM$" reduces this last inequality to the following still more -- elementary form: -- Use_def(¥INV_IM) ==> {car(w): w in g | (car(w) in {car(u): u in g | cdr(u) in a}) & (cdr(w) in b)} /= {car(w): w in g | cdr(w) in a} * {car(w): w in g | cdr(w) in b} -- -- But it is easy to see that the condition appearing in the left-hand setformer in this last -- inequality can be replaced by the condition $(cdr(w) in a) & (cdr(w) in b)$. -- Use_def(Svm) ==> Stat1: (FORALL x in g, y in g | (car(x) = car(y)) ¥imp (x = y)) Suppose ==> Stat2: {car(w): w in g | (car(w) in {car(u): u in g | cdr(u) in a}) & (cdr(w) in b)} /= {car(w): w in g | (cdr(w) in a) & (cdr(w) in b)} c-->Stat2 ==> (c in g) & ((car(c) /= car(c) or (((car(c) in {car(u): u in g | (cdr(u) in a)}) & (cdr(c) in b)) & (not((cdr(c) in a) & (cdr(c) in b)))) or ((not((car(c) in {car(u): u in g | (cdr(u) in a)}) & (cdr(c) in b))) & (cdr(c) in a) & (cdr(c) in b)))) Suppose ==> Stat3: (((car(c) in {car(u): u in g | (cdr(u) in a)}) & (cdr(c) in b)) & (not((cdr(c) in a) & (cdr(c) in b)))) v-->Stat3 ==> (v in g) & (car(c) = car(v)) & (cdr(v) in a) (v,c)-->Stat1 ==> c = v Discharge ==> (not((car(c) in {car(u): u in g | (cdr(u) in a)}) & (cdr(c) in b))) & (cdr(c) in a) & (cdr(c) in b) ELEM ==> Stat4: not(car(c) in {car(u): u in g | (cdr(u) in a)}) & (cdr(c) in b) c-->Stat4 ==> false; Discharge ==> {car(w): w in g | (cdr(w) in a) & (cdr(w) in b)} /= {car(w): w in g | cdr(w) in a} * {car(w): w in g | cdr(w) in b} -- -- But it is easy to see that this last inequality is impossible. Indeed, by set monotonicity -- the left-hand side of this inequality is included in the right, so that the inequality would imply -- the existence of a point $u$ such that $cdr(u) in a$, $cdr(u) in b$, whiel the conjuction -- of these two conditions was false, and evident impossibility which completes the proof of our theorem. -- Set_monot() ==> {car(w): w in g | (cdr(w) in a) & (cdr(w) in b)} ¥incin {car(w): w in g | cdr(w) in a} Set_monot() ==> {car(w): w in g | (cdr(w) in a) & (cdr(w) in b)} ¥incin {car(w): w in g | cdr(w) in b} ELEM ==> Stat5: not({car(w): w in g | (cdr(w) in a) & (cdr(w) in b)} incs {car(w): w in g | cdr(w) in a} * {car(w): w in g | cdr(w) in b}) d-->Stat5 ==> (d in {car(w): w in g | cdr(w) in a} * {car(w): w in g | cdr(w) in b}) & Stat6: (d notin {car(w): w in g | (cdr(w) in a) & (cdr(w) in b)}) ELEM ==> Stat7: (d in {car(w): w in g | cdr(w) in a}) & Stat8: (d in {car(w): w in g | cdr(w) in b}) u1-->Stat7 ==> (u1 in g) & (d = car(u1)) & (cdr(u1) in a) u2-->Stat8 ==> (u2 in g) & (d = car(u2)) & (cdr(u2) in b) (u1,u2)-->Stat1 ==> u1 = u2 EQUAL ==> cdr(u1) in b u1-->Stat6 ==> false; Discharge ==> QED -- -- It follows trivially using the principle of set monotonicity that the expression $g ¥INV_IM a$ -- is monotone increasing in its second argument. -- Theorem 186: [Monotonicity of inverse image] (B ¥incin A) ¥imp ((G ¥INV_IM B) ¥incin (G ¥INV_IM A)). Proof: Suppose_not(b,a,g) ==> (b ¥incin a) & (not((g ¥INV_IM b) ¥incin (g ¥INV_IM a))) Set_monot ==> {car(p): p in g | cdr(p) in b} ¥incin {car(p): p in g | cdr(p) in a} Use_def(¥INV_IM) ==> false; Discharge ==> QED -- -- The following simple lemma tells us that successive restriction of a map $f$, first to a set -- $a$ and then to $b$, produces the same result as restriction of $f$ to the intersection set $a * b$ -- Theorem 187: [Successive map restrictions] (((F ¥ON A) ¥ON B) = (F ¥ON (A * B))). Proof: Suppose_not(f,a,b) ==> (f ¥ON a) ¥ON b /= f ¥ON (a * b) -- -- For a counterexample $f,a,b$ would imply the existence of a point $p$ which was in one -- of the two sets in the following inequality but not the other, and evident impossibility -- which proves our assertion. -- Use_def(¥ON) ==> {p: p in (f ¥ON a) | car(p) in b} /= {p: p in f | car(p) in (a * b)} Use_def(¥ON) ==> {p: p in (f ¥ON a) | car(p) in b} = {p: p in {q: q in f | car(q) in a} | car(p) in b} SIMPLF ==> Stat1: {p: p in f | (car(p) in a) & (car(p) in b)} /= {p: p in f | car(p) in (a * b)} Set_monot ==> {p: p in f | (car(p) in a) & (car(p) in b)} = {p: p in f | car(p) in (a * b)} Discharge ==> QED -- -- ************************************************************************************************ -- Section 6: Finiteness -- ************************************************************************************************ -- -- Our arguments till now have concerned ordinals and cardinals irrespective of whether they -- are finite or infinite. Now we introduce the concept of finiteness and prove -- its basic properties, in preparation for introduction of the set of integers and -- derivation of the basic properties of integers. -- Def 18: [Finiteness] Finite(s) := not(EXISTS f in OM | one_1_map(f) & (domain(f) = s) & (range(f) ¥incin s) & (s /= range(f))) -- -- We begin our work with the finiteness concept by proving the elementary but basic fact that -- the null set is a finite cardinal. -- Theorem 188: [0 is a finite cardinal] Ord(0) & Finite(0) & Card(0). Proof: Suppose_not ==> not(Ord(0) & Finite(0) & Card(0)) -- -- For the fact that $0$ is an ordinal is an immediate consequence of the definition of '$Ord$', -- Suppose ==> not Ord(0) Use_def(Ord) ==> (not(FORALL x in 0 | x ¥incin 0)) or (not(FORALL x in 0, y in 0 | x in y or y in x or x = y)) Suppose ==> Stat1: (not(FORALL x in 0 | x ¥incin 0)) c-->Stat1 ==> false; Discharge ==> Stat2: (not(FORALL x in 0, y in 0 | x in y or y in x or x = y)) d-->Stat2 ==> false; Discharge ==> Ord(0) -- -- Similarly, the fact that $0$ is a cardinal and is finite is an immediate consequence -- of the definitions involved. -- Suppose ==> not Finite(0) Use_def(Finite) ==> Stat3:(EXISTS f in OM | one_1_map(f) & (domain(f) = 0) & (range(f) ¥incin 0) & (0 /= range(f))) f-->Stat3 ==> (range(f) ¥incin 0) & (0 /= range(f)) Discharge ==> not Card(0) Use_def(Card) ==> (not Ord(0)) or (not(FORALL y in 0, f in OM | (not(domain(f) = y)) or (not(range(f) = 0)) or (not(Svm(f))))) ELEM ==> Stat4: not(FORALL y in 0, f in OM | (not(domain(f) = y)) or (not(range(f) = 0)) or (not(Svm(f)))) a-->Stat4 ==> false; Discharge ==> QED -- -- The following theorem states the important but elementary fact that subsets of a finite set are finite. -- Theorem 189: [A subset of a finite set is finite] (Finite(S) & (S incs T)) ¥imp Finite(T). Proof: Suppose_not(s,t) ==> Finite(s) & (s incs t) & (not Finite(t)) -- -- For suppose that there existed a finite set $s$ having an infinite subset $t$. -- Then by definition there would be a 1-1 map $f$ of $t$ into a proper subset of itself. -- This can be extended to a 1-1 map of $s$ into a proper subset of itself simply -- by setting the extension to the identity map on $s - t$. But since $s$ is finite by assumption, -- this is impossible. -- Use_def(Finite) ==> Stat1: (not(EXISTS g in OM | one_1_map(g) & (domain(g) = s) & (range(g) ¥incin s) & (s /= range(g)))) Use_def(Finite) ==> Stat2: (EXISTS h in OM | one_1_map(h) & (domain(h) = t) & (range(h) ¥incin t) & (t /= range(h))) h-->Stat2 ==> one_1_map(h) & (domain(h) = t) & (range(h) ¥incin t) & (t /= range(h)) (s - t)-->T115 ==> one_1_map(ident(s - t)) & (domain(ident(s - t)) = s - t) & (range(ident(s - t)) = s - t) (h,ident(s - t))-->T88 ==> one_1_map(h + ident(s - t)) (h,ident(s - t))-->T78 ==> domain(h + ident(s - t)) = domain(h) + (s - t) (h,ident(s - t))-->T79 ==> range(h + ident(s - t)) = range(h) + (s - t) (h + ident(s - t))-->Stat1 ==> false; Discharge ==> QED -- -- Our next theorem states that if the domain of a 1-1 map is finite, so is its range. -- This result is then easily generalized to single valued maps (Theorem 192 below). -- Theorem 190: [One-one maps preserve finiteness] one_1_map(F) ¥imp ((Finite(domain(F))) ¥imp (Finite(range(F)))). Proof: Suppose_not(f2) ==> one_1_map(f2) & Finite(domain(f2)) & (not Finite(range(f2))) -- -- If we suppose the contrary, then by definition there must exist a $g$ mapping $range(f2)$ -- into a proper subset of itself. But then $inv(f2) @ (g @ f2)$ is a 1-1 mapping of $domain(f2)$ -- into itself. -- Use_def(Finite) ==> Stat1: (not(EXISTS g in OM | one_1_map(g) & (domain(g) = domain(f2)) & (range(g) ¥incin domain(f2)) & (range(g) /= domain(f2)))) Use_def(Finite) ==> Stat2: (EXISTS g in OM | one_1_map(g) & (domain(g) = range(f2)) & (range(g) ¥incin range(f2)) & (range(g) /= range(f2))) g-->Stat2 ==> one_1_map(g) & (domain(g) = range(f2)) & (range(g) ¥incin range(f2)) & (range(g) /= range(f2)) f2-->T101 ==> one_1_map(inv(f2)) & (domain(f2) = range(inv(f2))) & (range(f2) = domain(inv(f2))) (g,f2)-->T133 ==> one_1_map(g @ f2) (inv(f2),g @ f2)-->T133 ==> one_1_map(inv(f2) @ (g @ f2)) Use_def(one_1_map) ==> Svm(f2) & Svm(g) & Svm(inv(f2)) (f2,g)-->T96 ==> (domain(g @ f2) = domain(f2)) & (range(g @ f2) = range(g)) (g @ f2,inv(f2))-->T97 ==> (domain(inv(f2) @ (g @ f2)) = domain(f2)) & (range(inv(f2) @ (g @ f2)) ¥incin domain(f2)) -- -- and it is easily seen that $range(inv(f2) @ (g @ f2))$ must be a proper subset of $domain(f2)$, -- contradicting the finiteness of $domain(f2)$, and so proving the present theorem. -- (inv(f2),g @ f2)-->T95 ==> range(inv(f2) @ (g @ f2)) = range(inv(f2) ¥ON range(g @ f2)) EQUAL ==> range(inv(f2) @ (g @ f2)) = range(inv(f2) ¥ON range(g)) (inv(f2),range(g))-->T98 ==> range(inv(f2)) /= range(inv(f2) ¥ON range(g)) (inv(f2))-->T67 ==> (inv(f2) ¥ON domain(inv(f2))) = inv(f2) EQUAL ==> range(inv(f2) ¥ON domain(inv(f2))) /= range(inv(f2) ¥ON range(g)) ELEM ==> range(inv(f2) @ (g @ f2)) /= domain(f2) (inv(f2) @ (g @ f2))-->Stat1 ==> false; Discharge ==> QED -- -- If $s$ is a 1-1 map, the implication given in the preceding theorem -- can be strengthened to an equivalence: -- Theorem 191: [One-one maps preserve finiteness, 2] one_1_map(F) ¥imp (Finite(domain(F)) ¥eq Finite(range(F))). Proof: Suppose_not(f) ==> one_1_map(f) & (not(Finite(domain(f)) ¥eq Finite(range(f)))) -- -- For in this case Theorem 190 applies to both $f$ and its inverse, -- giving us a pair of implications, and so yielding the asserted equivalence. -- f-->T190 ==> Finite(domain(f)) ¥imp Finite(range(f)) f-->T101 ==> one_1_map(inv(f)) & (domain(inv(f)) = range(f)) & (range(inv(f)) = domain(f)) (inv(f))-->T190 ==> Finite(domain(inv(f))) ¥imp Finite(range(inv(f))) EQUAL ==> Finite(range(f)) ¥imp Finite(domain(f)) Discharge ==> QED -- -- We can also extend Theorem 190 from 1-1 maps to single-valued maps in general: -- Theorem 192: [A single-valued map with finite domain has a finite range] (Svm(F) & Finite(domain(F))) ¥imp Finite(range(F)). Proof: Suppose_not(f) ==> Svm(f) & Finite(domain(f)) & (not Finite(range(f))) -- -- The result follows easily from Theorem 191 if we use Theorem 138, which tells us that -- there is a 1-1 map, partially inverse to $f$, which maps $range(f)$ into a subset of $domain(f)$. -- (f)-->T138 ==> Stat1: (EXISTS h | (domain(h) = range(f)) & (range(h) ¥incin domain(f)) & one_1_map(h) & (FORALL x in range(f) | f~[h~[X]] = X)) invm-->Stat1 ==> (domain(invm) = range(f)) & (range(invm) ¥incin domain(f)) & one_1_map(invm) EQUAL ==> not Finite(domain(invm)) -- -- At this point we have the desired contradiction, because $not Finite(range(invm))$ -- and hence $not Finite(domain(f))$. -- invm-->T191 ==> false Discharge ==> QED -- -- As an application of Theorem 192, we develop the following mini-theory -- showing that the image of any finite set is a finite set. -- THEORY finite_image(e(x),s0) Finite(s0) END finite_image -- ENTER_THEORY finite_image -- Theorem finite_image.1: [Any image of a finite set is finite] Finite({e(x): x in s0}). Proof: Suppose_not ==> AUTO ELEM ==> Svm({[x,e(x)]: x in s0}) & (domain({[x,e(x)]: x in s0}) = s0) & (range({[x,e(x)]: x in s0}) = {e(x): x in s0}) Assump ==> Finite(s0) EQUAL ==> Finite(domain({[x,e(x)]: x in s0})) ({[x,e(x)]: x in s0})-->T192 ==> Finite(range({[x,e(x)]: x in s0})) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY finite_image -- --THEORY finite_image(e(x),s0) -- Finite(s0) --==> -- Finite({e(x): x in s0}) --END finite_image -- -- -- The following corollary to Theorem 191 states that -- a set is finite if and only if its cardinality is finite. -- The proof merely applies Theorem 191 twice, once to a 1-1 map from $#s$ to $s$, -- and once to the inverse of this map. -- Theorem 193: [A set is finite if and only if its cardinality is finite] Finite(S) ¥eq Finite(#S). Proof: Suppose_not(s) ==> not(Finite(s) ¥eq Finite(#s)) (s)-->T156 ==> Stat1: Card(#s) and (EXISTS f in OM | one_1_map(f) and (range(f) = s) and (domain(f) = #s)) (f)-->Stat1 ==> one_1_map(f) & (domain(f) = s) & (range(f) = #s) f-->T191 ==> Finite(s) ¥imp Finite(#s) f-->T101 ==> one_1_map(inv(f)) & (range(inv(f)) = #s) & (domain(inv(f)) = s) f-->T191 ==> Finite(#s) ¥imp Finite(s) Discharge ==> QED -- -- Even if $t$ is a proper subset of a general set $s$ we can only assert that $#t$ is no greater than $#s$. -- But if $s$ is finite, then, as the following theorem shows, $#t$ must be less than $s$. -- Theorem 194: [Proper subsets of a finite set have fewer elements] (Finite(S) & (T ¥incin S) & (T /= S)) ¥imp (#T in #S). Proof: Suppose_not(s,t) ==> Finite(s) & (t ¥incin s) & (t /= s) & (#t notin #s) -- -- For, proceeding by contradiction, suppose that $t$ is a proper subset of the finite set $s$ and $#t notin #s$. -- By Theorem 156, there exist 1-1 maps $f$ and $g$ of $#s$ and $#t$ to $s$ and $t$ respectively, and then -- $inv(g)$ is a 1-1 map of $#s$ to $s$. -- t-->T156 ==> Stat1: Card(#t) & Ord(#t) & (EXISTS f in OM | (one_1_map(f) & (range(f) = t) & (domain(f) = #t))) f-->Stat1 ==> one_1_map(f) & (range(f) = t) & (domain(f) = #t) s-->T156 ==> Stat2: Card(#s) & Ord(#s) & (EXISTS f in OM | (one_1_map(f) & (range(f) = s) & (domain(f) = #s))) g-->Stat2 ==> Card(#s) & one_1_map(g) & (domain(g) = #s) & (range(g) = s) g-->T101 ==> one_1_map(inv(g)) & (domain(inv(g)) = s) & (range(inv(g)) = #s) -- -- Since $#t notin #s$ and both are ordinals, it follows by Theorem 170 and Theorem 34 that $#t = #s$, and so -- $f @ inv(g)$ is a 1-1 map of $s$ onto $t$. Thus by the definition of finiteness -- $t$ cannot be a proper subset of $s$, a contradiction proving our theorem. -- (t,s)-->T170 ==> #s incs #t (#s,#t)-->T34 ==> #t = #s (inv(g),f)-->T96 ==> (domain(f @ inv(g)) = s) & (range(f @ inv(g)) = t) (f,inv(g))-->T133 ==> one_1_map(f @ inv(g)) Use_def(Finite) ==> Stat3: not (EXISTS f in OM | one_1_map(f) & (domain(f) = s) & (range(f) ¥incin s) & (range(f) /= s)) (f @ inv(g))-->Stat3 ==> false; Discharge ==> QED -- -- Another property of finite sets (which could be used to define them) -- is stated in the following theorem: a finite set is not the image of any proper subset of -- itself by a single-valued map. -- Theorem 195: [A set is finite if and only if it is not the single-valued image of any of its finite subsets] Finite(S) ¥eq (not(EXISTS f in OM | (Svm(f) & (range(f) = S) & (domain(f) ¥incin S) & (S /= domain(f))))). Proof: Suppose_not(s) ==> not(Finite(s) ¥eq (not(EXISTS f in OM | (Svm(f) & (range(f) = s) & (domain(f) ¥incin s) & (s /= domain(f)))))) -- -- First suppose the contrary, and first consider the case in which $s$ is finite but there exists a -- single-valued map $f$ of a proper subset $s$ of onto $s$. By Theorem 138, -- this has a 1-1 partial inverse mapping $s$ to a proper subset of $s$, -- which is impossible by definition of finiteness. Hence we need only consider the -- case in which $s$ is not finite, but there exists no single-valued map $f$ of a proper subset of $s$ onto $s$. -- Suppose ==> Finite(s) & Stat1: (EXISTS f in OM | (Svm(f) & (range(f) = s) & (domain(f) ¥incin s) & (s /= domain(f)))) f-->Stat1 ==> Svm(f) & (range(f) = s) & (domain(f) ¥incin s) & (s /= domain(f)) f-->T138 ==> Stat2: (EXISTS h | ((domain(h) = range(f)) & (range(h) ¥incin domain(f)) & one_1_map(h)) & (FORALL x in range(f) | ((f~[h~[x]]) = x))) h-->Stat2 ==> (domain(h) = s) & (range(h) ¥incin s) & (s /= range(h)) & one_1_map(h) Use_def(Finite) ==> Stat3: not(EXISTS h in OM | ((one_1_map(h) & (domain(h) = s) & (range(h) ¥incin s) & (range(h) /= s)))) h-->Stat3 ==> false Discharge ==> (not(Finite(s))) & Stat4: (not(EXISTS f in OM | Svm(f) & (range(f) = s) & (domain(f) ¥incin s) & (s /= domain(f)))) -- -- Since by definition of finiteness there exists a 1-1 map $g$ of a proper subset of $s$ onto $s$, and -- since the inverse of $g$ is also a 1-1 map, we have a contradiction in this case also, and so -- our theorem is proved. -- Use_def(Finite) ==> Stat5: (EXISTS f in OM | (one_1_map(f) & (domain(f) = s) & (range(f) ¥incin s) & (s /= range(f)))) g-->Stat5 ==> one_1_map(g) & (domain(g) = s) & (range(g) ¥incin s) & (s /= range(g)) g-->T101 ==> one_1_map(inv(g)) & (range(inv(g)) = s) & (domain(inv(g)) ¥incin s) & (s /= domain(inv(g))) Use_def(one_1_map) ==> Svm(inv(g)) (inv(g))-->Stat4 ==> false; Discharge ==> QED -- -- Since members of an ordinal $s$ are also subsets of $s$, it follows immediately from Theorem 189 -- that any member of a finite ordinal is finite. -- Theorem 196: [Members of a finite ordinal are finite] (Ord(S) & Finite(S) & (T in S)) ¥imp Finite(T). Proof: Suppose_not(s,t) ==> AUTO (s,t)-->T13 ==> false; Discharge ==> QED -- -- A further corollary of Theorem 195 is that any infinite ordinal is larger than any finite ordinal: -- Theorem 197: [Any infinite ordinal is larger than any finite ordinal] (Ord(S) & Ord(T) & (not Finite(S)) & Finite(T)) ¥imp (T in S). Proof: Suppose_not(s,t) ==> Ord(s) & Ord(t) & (not Finite(s)) & Finite(t) & (not(t in s)) (s,t)-->T31 ==> (s in t) or (t in s) or (s = t) EQUAL ==> s /= t ELEM ==> s in t (t,s)-->T196 ==> false; Discharge ==> QED -- -- To exploit the fact that sets which are in 1-1 correspondence have the same cardinality, -- we sometimes need to make use of elementary constructions of such maps. -- The following lemma captures one such case: elements of a set $s$ can always be interchanged -- by some 1-1 map. -- Theorem 198: [Interchange lemma] ((X in S) & (Y in S)) ¥imp (EXISTS f | one_1_map(f) & (range(f) = S) & (domain(f) = S) & ((f~[X]) = Y) & ((f~[Y]) = X)). Proof: Suppose_not(a,s,b) ==> Stat1: (a in s) & (b in s) & Stat2: (not(EXISTS f | one_1_map(f) & (range(f) = s) & (domain(f) = s) & ((f~[a]) = b) & ((f~[b]) = a))) -- -- For the desired map $f$ can be defined by $(f~[x]) = if x = a then b elseif x = b then a else x end if$, -- Loc_def ==> f = {[x,if x = a then b elseif x = b then a else x end if]: x in s} -- -- and it is easily seen that the range of this map is $s$. -- APPLY(x9_thryvar:c2,y9_thryvar:d2) fcn_symbol(f(x)->if x = a then b elseif x = b then a else x end if,g->f,s->s) ==> Stat3: (((c2 in s) & (d2 in s) & (if c2 = a then b elseif c2 = b then a else c2 end if = if d2 = a then b elseif d2 = b then a else d2 end if) & (c2 /= d2)) or one_1_map(f)) APPLY() fcn_symbol(f(x)->if x = a then b elseif x = b then a else x end if,g->f,s->s) ==> Stat4: (FORALL x | (x in s) ¥imp ((f~[x]) = if x = a then b elseif x = b then a else x end if)) & Stat5: Svm(f) & (domain(f) = s) & (range(f) = {if x = a then b elseif x = b then a else x end if: x in s}) Suppose ==> Stat6: s /= {if x = a then b elseif x = b then a else x end if: x in s} c-->Stat6 ==> Stat7: (c in s) ¥eq (c notin {if x = a then b elseif x = b then a else x end if: x in s}) Suppose ==> Stat8: (c in s) & Stat9: (c notin {if x = a then b elseif x = b then a else x end if: x in s}) Suppose ==> c = b a-->Stat9 ==> false; Discharge ==> c /= b Suppose ==> c = a b-->Stat9 ==> false; Discharge ==> c /= a c-->Stat9 ==> false; Discharge ==> not((c in s) & (c notin {if x = a then b elseif x = b then a else x end if: x in s})) (Stat7*)ELEM ==> Stat10: (c notin s) & Stat11: (c in {if x = a then b elseif x = b then a else x end if: x in s}) d-->Stat11(Stat10*) ==> Stat12: (c = if d = a then b elseif d = b then a else d end if) & (d in s) & (c notin s) (Stat1,Stat12)Discharge ==> Stat13: range(f) = s -- -- The fact that $f$ is 1-1 is also elementary, so $f$ has all the properties which our theorem asserts. -- (Stat3*)ELEM ==> Stat14: one_1_map(f) b-->Stat4(Stat1,Stat1*) ==> Stat15: (f~[b]) = a a-->Stat4(Stat1,Stat1*) ==> Stat16: (f~[a]) = b f-->Stat2(Stat13,Stat4,Stat14,Stat16,Stat15) ==> false; Discharge ==> QED -- -- The following utility lemma gives us expressions for the map restriction of any single-valued map, -- and for the range and domain of this restriction. -- -- Using Theorem 198, we can easily prove that the successor set of any finite set is also finite. -- Theorem 199: [Adding one element to a finite set leaves it finite] Finite(S) ¥eq Finite(S + {X}). Proof: Suppose_not(s,a) ==> AUTO -- -- Since any subset of a finite set is finite, our theorem can only be false -- if $s$ is finite and $s + {a}$ is not, in which case $a$ is not in $s$ and there must exist -- a 1-1 map $g$ of $s + {a}$ into a subset of $s + {a}$ which omits some element $c$ of $s + {a}$. -- ELEM ==> Finite(s) & (not Finite(s + {a})) Suppose ==> s = s + {a} EQUAL ==> false; Discharge ==> a notin s Use_def(Finite) ==> Stat1: (EXISTS f in OM | one_1_map(f) & (domain(f) = s + {a}) & (range(f) ¥incin (s + {a})) & ((s + {a}) /= range(f))) & Stat2: (not(EXISTS f in OM | one_1_map(f) & (domain(f) = s) & (range(f) ¥incin s) & (s /= range(f)))) g-->Stat1 ==> one_1_map(g) & (domain(g) = s + {a}) & Stat3: (s + {a} /= range(g)) & (range(g) ¥incin (s + {a})) c-->Stat3 ==> (c in s + {a}) & (c notin range(g)) ELEM ==> (a notin s) & (a in domain(g)) & (c in domain(g)) & (c notin range(g)) -- -- But by Theorem 198 there is a 1-1 map $f$ of $s + {a}$ onto itself which interchanges $a$ and $c$. -- The product map $f @ g$ is therefore a 1-1 map $f$ of $s + {a}$ into itself whose range omits $a$. -- (a,domain(g),c)-->T198 ==> Stat4: (EXISTS f | one_1_map(f) & (range(f) = domain(g)) & (domain(f) = domain(g)) & (f~[a] = c) & (f~[c] = a)) f-->Stat4 ==> one_1_map(f) & (range(f) = domain(g)) & (domain(f) = domain(g)) & (f~[a] = c) & (f~[c] = a) (f,g)-->T95 ==> (range(f @ g) = range(f ¥ON range(g))) & (domain(f @ g) = s + {a}) Use_def(one_1_map) ==> Svm(f) Suppose ==> a in range(f ¥ON range(g)) (f,range(g))-->T123 ==> Stat5: a in {f~[x]: x in domain(f) | x in range(g)} e-->Stat5 ==> (a = f~[e]) & (e in domain(f)) & (e in range(g)) ELEM ==> (c in domain(f)) & (a = f~[c]) (f,e,c)-->T127 ==> false; Discharge ==> a notin range(f @ g) -- -- Hence the restriction of $f$ to $s$ is a 1-1 mapping of $s$ into itself. -- (f,range(g))-->T80 ==> range(f ¥ON range(g)) ¥incin (s + {a}) ELEM ==> range(f @ g) ¥incin s (f,g)-->T133 ==> one_1_map(f @ g) ((f @ g),s)-->T58 ==> one_1_map((f @ g) ¥ON s) (f @ g,s)-->T94 ==> domain((f @ g) ¥ON s) = s (f @ g,s)-->T80 ==> range((f @ g) ¥ON s) ¥incin s -- -- But it is easily seen that $(f @ g)~[a]$ must be an element of $s$, -- ELEM ==> a in domain(f @ g) Use_def(one_1_map) ==> Svm(f @ g) (a,f @ g)-->T71 ==> (f @ g)~[a] in s -- -- and that $(f @ g)~[a]$ is not a member of $range((f @ g) ¥ON s)$ -- (f @ g)-->T72 ==> f @ g = {[x,(f @ g)~[x]]: x in domain(f @ g)} EQUAL ==> f @ g = {[x,(f @ g)~[x]]: x in (s + {a})} Suppose ==> (f @ g)~[a] in range((f @ g) ¥ON s) Use_def(¥ON) ==> (f @ g)~[a] in range({x in (f @ g) | car(x) in s}) EQUAL ==> (f @ g)~[a] in range({x in {[x,(f @ g)~[x]]: x in (s + {a})} | car(x) in s}) SIMPLF ==> (f @ g)~[a] in range({[x,(f @ g)~[x]]: x in (s + {a}) | car([x,(f @ g)~[x]]) in s}) Use_def(range) ==> (f @ g)~[a] in {cdr(y): y in {[x,(f @ g)~[x]]: x in (s + {a}) | car([x,(f @ g)~[x]]) in s}} SIMPLF ==> Stat6: (f @ g)~[a] in {cdr([x,(f @ g)~[x]]): x in (s + {a}) | car([x,(f @ g)~[x]]) in s} b-->Stat6 ==> (b in s + {a}) & (car([b,(f @ g)~[b]]) in s) & ((f @ g)~[a] = cdr([b,(f @ g)~[b]])) ELEM ==> ((f @ g)~[a] = (f @ g)~[b]) & (b in s) (f @ g,a)-->T103 ==> inv(f @ g)~[(f @ g)~[a]] = a (f @ g,b)-->T103 ==> inv(f @ g)~[(f @ g)~[b]] = b EQUAL ==> a = b Discharge ==> range((f @ g) ¥ON s) /= s -- -- Therefore $(f @ g) ¥ON s$ is a 1-1 mapping of $s$ into a proper subset of itself, violating our -- assumption that $s$ is finite, and thereby proving the present theorem. -- Use_def(Finite) ==> Stat7: not(EXISTS f in OM | (one_1_map(f) & (domain(f) = s) & (range(f) ¥incin s) & (s /= range(f)))) ((f @ g) ¥ON s)-->Stat7 ==> false; Discharge ==> QED -- -- Theorem 199 has the following obvious corollary. -- Theorem 200: [Finiteness of successor set] Finite(S) ¥imp Finite(next(S)). Proof: Suppose_not(s) ==> Finite(s) & (not Finite(next(s))) Use_def(next) ==> next(s) = s + {s} (s,s)-->T199 ==> Finite(s + {s}) EQUAL ==> false; Discharge ==> QED -- -- The following equally obvious corollaries of Theorem 199 are also useful. -- The fist simply states that any singleton is finite. -- Theorem 201: [Singletons are finite] Finite({S}). Proof: Suppose_not(s) ==> not Finite({s}) T188 ==> Finite(0) (0,s)-->T199 ==> Finite(0 + {s}) ELEM ==> 0 + {s} = {s} EQUAL ==> false; Discharge ==> QED -- -- Our next elementary result states that any unordered pair is also a finite set. -- Theorem 202: [Doubletons are finite] Finite({S,T}). Proof: Suppose_not(s,t) ==> not Finite({s,t}) -- -- For assuming the contrary would lead to a contradiction, since -- prior theorems ensure that $Finite({s})$ and, consequently -- $Finite({s} + {t})$ -- --? T201 ==> Finite({s}) s-->T201 ==> AUTO ({s},t)-->T199 ==> AUTO TELEM ==> {s} + {t} = {s,t} EQUAL ==> false; Discharge ==> QED -- -- Next we show that the set whose existence is asserted by the Axiom of Infinity -- must actually be infinite. -- Theorem 203: [The basic infinite set is not finite] not(Finite(s_inf)). Proof: Suppose_not ==> Finite(s_inf) Loc_def ==> g = {[x,{x}]: x in s_inf} -- -- For by the axiomatic assumption defining $s_inf$, the single-valued map ${[x,{x}]: x in s_inf}$ -- sends $s_inf$ into itself. -- APPLY(x9_thryvar:a1,y9_thryvar:a2) fcn_symbol(f(x)->{x},g->g,s->s_inf) ==> Svm(g) & (domain(g) = s_inf) & (range(g) = {{x}: x in s_inf}) & ((((a1 in s_inf) & (a2 in s_inf)) & ({a1} = {a2}) & (a1 /= a2)) or one_1_map(g)) Suppose ==> Stat1: not (range(g) ¥incin s_inf) c-->Stat1 ==> Stat2: (c in {{x}: x in s_inf}) & (not c in s_inf) d-->Stat2 ==> (d in s_inf) & (c = {d}) & (not c in s_inf) T00 ==> (s_inf /= 0) & Stat3: (FORALL x in s_inf | {x} in s_inf) d-->Stat3 ==> (d in s_inf) ¥imp ({d} in s_inf) Discharge ==> range(g) ¥incin s_inf -- -- But it is easily seen using the axiom of choice that $arb(s_inf)$ cannot be in the range of the map $g$. -- Hence $g$ is a 1-1 map which maps $s_inf$ into a proper subset of itself, contradicting -- the definition of finiteness, and thereby proving our theorem -- T00 ==> s_inf /= 0 s_inf-->T0 ==> (arb(s_inf) in s_inf) & (arb(s_inf) * s_inf = 0) Suppose ==> range(g) = s_inf ELEM ==> Stat4: arb(s_inf) in {{x}: x in s_inf} e-->Stat4 ==> (e in s_inf) & (arb(s_inf) = {e}) Discharge ==> range(g) /= s_inf Suppose ==> not one_1_map(g) Discharge ==> one_1_map(g) Use_def(Finite) ==> Stat5: not(EXISTS f in OM | (one_1_map(f) & (domain(f) = s_inf) & (range(f) ¥incin s_inf) & (s_inf /= range(f)))) g-->Stat5 ==> false; Discharge ==> QED -- -- It follows as a corollary of the preceding theorem that $#s_inf$ is an infinite cardinal. -- Theorem 204: [Infinite cardinality theorem] not Finite(#s_inf). Proof: Suppose_not ==> Finite(#s_inf) s_inf-->T193 ==> Finite(#s_inf) ¥eq Finite(s_inf) T203 ==> not(Finite(s_inf)) Discharge ==> QED -- -- The next theorem tells us that for finite sets there is no difference -- between ordinals and cardinals, since all finite ordinals are cardinals. -- Theorem 205: [All finite ordinals are cardinals] (Ord(X) & Finite(X)) ¥imp Card(X). Proof+: Suppose_not(x) ==> Ord(x) & Finite(x) & (not Card(x)) -- -- For if $x$ is a finite ordinal which is not a cardinal, then by definition -- there must exist a single-valued map $f$ of a member $y$ of $x$ onto $x$. -- Plainly $y$ must be an ordinal and a proper subset of $x$. -- Use_def(Card) ==> Stat1: not(FORALL y in x, f in OM | (not(domain(f) = y)) or (not(range(f) = x)) or (not(Svm(f)))) (y,f)-->Stat1 ==> (domain(f) = y) & (y in x) & (range(f) = x) & Svm(f) (x,y)-->T34 ==> (y ¥incin x) ELEM ==> y /= x -- -- By Theorem 138, $f$ has a 1-1 partial inverse $h$, whose domain is $range(f)$ and whose range is -- a subset of $domain(f)$. Since $x$ is finite, this must map $x$ onto all of itself, -- contradicting the fact that $y = domain(f)$ is a proper subset of $x$. This contradiction proves our theorem. -- f-->T138 ==> Stat2: (EXISTS h | ((domain(h) = range(f)) & (range(h) ¥incin domain(f)) & one_1_map(h)) & (FORALL x in range(f) | f~[h~[x]] = x)) h-->Stat2 ==> (domain(h) = range(f)) & (range(h) ¥incin domain(f)) & one_1_map(h) Use_def(Finite) ==> Stat3: not(EXISTS p in OM | one_1_map(p) & (domain(p) = x) & (range(p) ¥incin x) & (x /= range(p))) h-->Stat3 ==> not(one_1_map(h) & (domain(h) = x) & (range(h) ¥incin x) & (x /= range(h))) Discharge ==> QED -- -- -- -- THEORY setformer_meet_join(s,t,h(u,v),R(u,v),Q(u,v)) END setformer_meet_join -- ENTER_THEORY setformer_meet_join -- Theorem setformer_meet_join.1: [Disjunction in a setformer] {h(u,v): u in s, v in t | R(u,v) or Q(u,v)} = ({h(u,v): u in s, v in t | R(u,v)} + {h(u,v): u in s, v in t | Q(u,v)}). Proof: Suppose_not ==> Stat1: {h(u,v): u in s, v in t | R(u,v) or Q(u,v)} /= ({h(u,v): u in s, v in t | R(u,v)} + {h(u,v): u in s, v in t | Q(u,v)}) c-->Stat1 ==> (c in {h(u,v): u in s, v in t | R(u,v) or Q(u,v)}) ¥eq (c notin ({h(u,v): u in s, v in t | R(u,v)} + {h(u,v): u in s, v in t | Q(u,v)})) Suppose ==> (c notin ({h(u,v): u in s, v in t | R(u,v)} + {h(u,v): u in s, v in t | Q(u,v)})) & Stat2: (c in {h(u,v): u in s, v in t | R(u,v) or Q(u,v)}) ELEM ==> Stat3: (c notin {h(u,v): u in s, v in t | Q(u,v)}) & (c notin {h(u,v): u in s, v in t | R(u,v)}) (u,v)-->Stat2 ==> (c = h(u,v)) & (u in s) & (v in t) & (R(u,v) or Q(u,v)) (u,v,u,v)-->Stat3 ==> false; Discharge ==> (c in ({h(u,v): u in s, v in t | R(u,v)} + {h(u,v): u in s, v in t | Q(u,v)})) & Stat4: (c notin {h(u,v): u in s, v in t | R(u,v) or Q(u,v)}) ELEM ==> (c in {h(u,v): u in s, v in t | R(u,v)}) or (c in {h(u,v): u in s, v in t | Q(u,v)}) Suppose ==> Stat5: c in {h(u,v): u in s, v in t | R(u,v)} (up,vp)-->Stat5 ==> (c = h(up,vp)) & (up in s) & (vp in t) & R(up,vp) (up,vp)-->Stat4 ==> false; Discharge ==> Stat6: c in {h(u,v): u in s, v in t | Q(u,v)} (uq,vq)-->Stat6 ==> (c = h(uq,vq)) & (uq in s) & (vq in t) & Q(uq,vq) (uq,vq)-->Stat4 ==> false; Discharge ==> QED -- Theorem setformer_meet_join.2: [Conjunction in a setformer] {h(u,v): u in s, v in t | R(u,v) & Q(u,v)} ¥incin ({h(u,v): u in s, v in t | R(u,v)} * {h(u,v): u in s, v in t | Q(u,v)}). Proof: Suppose_not ==> Stat1: not({h(u,v): u in s, v in t | R(u,v) & Q(u,v)} ¥incin ({h(u,v): u in s, v in t | R(u,v)} * {h(u,v): u in s, v in t | Q(u,v)})) c-->Stat1 ==> (c notin ({h(u,v): u in s, v in t | R(u,v)} * {h(u,v): u in s, v in t | Q(u,v)})) & Stat2: (c in {h(u,v): u in s, v in t | R(u,v) & Q(u,v)}) ELEM ==> Stat3: (c notin {h(u,v): u in s, v in t | Q(u,v)}) or (c notin {h(u,v): u in s, v in t | R(u,v)}) (u,v)-->Stat2 ==> (c = h(u,v)) & (u in s) & (v in t) & (R(u,v) & Q(u,v)) Suppose ==> Stat4: c notin {h(u,v): u in s, v in t | Q(u,v)} (u,v)-->Stat4 ==> false; Discharge ==> Stat5: c notin {h(u,v): u in s, v in t | R(u,v)} (u,v)-->Stat5 ==> false; Discharge ==> QED -- Theorem setformer_meet_join.3: [Implication in a setformer] (FORALL u in s, v in t | Q(u,v) ¥imp R(u,v)) ¥imp ({h(u,v): u in s, v in t | Q(u,v)} ¥incin {h(u,v): u in s, v in t | R(u,v)}). Proof: Suppose_not ==> Stat1: (FORALL u in s, v in t | Q(u,v) ¥imp R(u,v)) & Stat2: (not({h(u,v): u in s, v in t | Q(u,v)} ¥incin {h(u,v): u in s, v in t | R(u,v)})) (u,v)-->Stat2 ==> (u in s) & (v in t) & Q(u,v) & (not(R(u,v))) (u,v)-->Stat1 ==> false; Discharge ==> QED -- Theorem setformer_meet_join.4: [Setformer cardinality inclusion, two-variable case] #{[u,v]: u in s, v in t | R(u,v)} incs #{h(u,v): u in s, v in t | R(u,v)}. Proof: Suppose_not ==> not(#{[u,v]: u in s, v in t | R(u,v)} incs #{h(u,v): u in s, v in t | R(u,v)}) APPLY() Must_be_svm_2(b2(u,v)->h(u,v), s->s, t->t, P2(u,v)->R(u,v)) ==> Svm({[[u,v],h(u,v)]: u in s, v in t | R(u,v)}) & (domain({[[u,v],h(u,v)]: u in s, v in t | R(u,v)}) = {[u,v]: u in s, v in t | R(u,v)}) & (range({[[u,v],h(u,v)]: u in s, v in t | R(u,v)}) = {h(u,v): u in s, v in t | R(u,v)}) -- TELEM ==> Svm({[[u,v],h(u,v)]: u in s, v in t | R(u,v)}) -- TELEM ==> (domain({[[u,v],h(u,v)]: u in s, v in t | R(u,v)}) = {[u,v]: u in s, v in t | R(u,v)}) & -- (range({[[u,v],h(u,v)]: u in s, v in t | R(u,v)}) = {h(u,v): u in s, v in t | R(u,v)}) ({[[u,v],h(u,v)]: u in s, v in t | R(u,v)})-->T171 ==> #domain({[[u,v],h(u,v)]: u in s, v in t | R(u,v)}) incs #range({[[u,v],h(u,v)]: u in s, v in t | R(u,v)}) EQUAL ==> false; Discharge ==> QED -- Theorem setformer_meet_join.5: [Setformer finiteness implication, two-variable case] Finite({[u,v]: u in s, v in t | R(u,v)}) ¥imp Finite({h(u,v): u in s, v in t | R(u,v)}). Proof: Suppose_not ==> Finite({[u,v]: u in s, v in t | R(u,v)}) & (not Finite({h(u,v): u in s, v in t | R(u,v)})) Tsetformer_meet_join.4 ==> (#({[u,v]: u in s, v in t | R(u,v)})) incs (#({h(u,v): u in s, v in t | R(u,v)})) ({[u,v]: u in s, v in t | R(u,v)})-->T193 ==> Finite(#{[u,v]: u in s, v in t | R(u,v)}) (#({[u,v]: u in s, v in t | R(u,v)}),#({h(u,v): u in s, v in t | R(u,v)}))-->T189 ==> Finite(#({h(u,v): u in s, v in t | R(u,v)})) (#({h(u,v): u in s, v in t | R(u,v)}))-->T193 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY setformer_meet_join -- --THEORY setformer_meet_join(s,t,h(u,v),R(u,v),Q(u,v)) --==> -- {h(u,v): u in s, v in t | (R(u,v) or Q(u,v))} = ({h(u,v): u in s, v in t | R(u,v)} + {h(u,v): u in s, v in t | Q(u,v)}) -- {h(u,v): u in s, v in t | R(u,v) & Q(u,v)} ¥incin ({h(u,v): u in s, v in t | R(u,v)} * {h(u,v): u in s, v in t | Q(u,v)}) -- (FORALL u in s, v in t | Q(u,v) ¥imp R(u,v)) ¥imp ({h(u,v): u in s, v in t | Q(u,v)} ¥incin {h(u,v): u in s, v in t | R(u,v)}) -- #{[u,v]: u in s, v in t | R(u,v)} incs #{h(u,v): u in s, v in t | R(u,v)} -- Finite({[u,v]: u in s, v in t | R(u,v)}) ¥imp Finite({h(u,v): u in s, v in t | R(u,v)}) --END setformer_meet_join -- -- -- ************************************************************************************************ -- Section 7: The set of all Integers, basic arithmetic of integers and cardinals -- ************************************************************************************************ -- -- Now we can take a decisive step into the realm of traditional mathematics by defining the set of -- positive integers as the smallest infinite cardinal. These are the 'unsigned' integers, -- including $0$. The proofs of their properties with which we now continue prepare for -- subsequent introduction of the signed integers, from these the rational and real numbers, -- and finally the complex numbers. -- Def 18a: [The set of integers] Za := arb({x: x in next(#s_inf) | not Finite(x)}) -- -- The definition just given is justified by the following theorem, which tells us that $Za$ -- is in fact an infinite ordinal, whose members are exactly the finite ordinals. -- Theorem 206: [The set of integers is an infinite ordinal consisting of all finite ordinals] Ord(Za) & (not Finite(Za)) & ((Card(X) & Finite(X)) ¥eq (X in Za)). Proof+: Suppose_not(x) ==> (not Ord(Za)) or Finite(Za) or (not((Card(x) & Finite(x)) ¥eq (x in Za))) -- -- First we show that there exists an infinite ordinal, which will imply that -- there is a smallest infinite ordinal. This is done using the axiom of infinity: -- the cardinal of the infinite set which this axiom gives us must be infinite. -- T204 ==> not Finite(#s_inf) s_inf-->T156 ==> Ord(#s_inf) Use_def(next) ==> next(#s_inf) = #s_inf + {#s_inf} ELEM ==> #s_inf in next(#s_inf) Suppose ==> {x: x in next(#s_inf) | not Finite(x)} = 0 ELEM ==> Stat1: #s_inf notin {x: x in next(#s_inf) | not Finite(x)} (#s_inf)-->Stat1 ==> not(#s_inf in next(#s_inf)) or Finite(#s_inf) Discharge ==> Stat2: {x: x in next(#s_inf) | not Finite(x)} /= 0 -- -- Since we have just shown that there is some infinite ordinal, -- the axiom of choice tells us that $Za$ must be an infinite ordinal. -- {x: x in next(#s_inf) | not Finite(x)}-->T0 ==> (arb({x: x in next(#s_inf) | not Finite(x)}) in {x: x in next(#s_inf) | not Finite(x)}) & (arb({x: x in next(#s_inf) | not Finite(x)}) * {x: x in next(#s_inf) | not Finite(x)} = 0) Use_def(Za) ==> Stat3: (Za in {x: x in next(#s_inf) | not Finite(x)}) & (Za * {x: x in next(#s_inf) | not Finite(x)} = 0) Za-->Stat3 ==> (Za in next(#s_inf)) & (not Finite(Za)) (#s_inf)-->T32 ==> Ord(next(#s_inf)) (next(#s_inf),Za)-->T12 ==> Ord(Za) -- -- It follows from what has now been proved that only the third clause of our theorem can be false. -- Hence there exists an x for which $(Card(x) & Finite(x))$ and $(x in Za)$ are inequivalent. -- This inequivalence falls into two possible cases. -- ELEM ==> (Card(x) & Finite(x) & (not (x in Za))) or (((not Card(x)) or (not Finite(x))) & (x in Za)) -- -- The first of these cases is impossible, so the second must hold. -- Suppose ==> Card(x) & Finite(x) & (not (x in Za)) Use_def(Card) ==> Ord(x) & Finite(x) & (not (x in Za)) (Za,x)-->T197 ==> ((Ord(x) & Ord(Za) & (not Finite(Za)) & Finite(x))) ¥imp (x in Za) Discharge ==> ((not Card(x)) or (not Finite(x))) & (x in Za) -- -- But since $Za$ has been defined as the smallest infinite ordinal, -- each member of $Za$ is a finite ordinal, and hence a cardinal by Theorem 205. -- Suppose ==> not Finite(x) (next(#s_inf),Za)-->T34 ==> (x in next(#s_inf)) & (not Finite(x)) Suppose ==> Stat4: x notin {u: u in next(#s_inf) | not Finite(u)} x-->Stat4 ==> false; Discharge ==> x in {u: u in next(#s_inf) | not Finite(u)} Discharge ==> Finite(x) x-->T205 ==> (Ord(x) & Finite(x)) ¥imp Card(x) (Za,x)-->T12 ==> false Discharge ==> QED -- -- It follows trivially from Theorem 206 that every element of Za is its own cardinality. -- Theorem 207: [All integers are finite ordinals and cardinals] (X in Za) ¥imp ((X = #X) & Card(X) & Ord(X) & Finite(X)). Proof: -- -- Simply because every element of Za is finite and a cardinal, hence an ordinal. -- Suppose_not(m) ==> AUTO Use_def(Card(m)) ==> AUTO m-->T206 ==> Card(m) & Finite(m) & Ord(m) m-->T164 ==> m = #m Discharge ==> QED -- Theorem 208: [Transitivity of integer comparison] ((M in Za) & (N in Za) & (I in N)) ¥imp ((M in N) or (I in M)). Proof+: Suppose_not(m,n,i) ==> AUTO (m,n)-->T31 ==> AUTO (m,n)-->T13 ==> false; Discharge ==> QED -- -- The standard set-theoretic (von Neumann) definitions of -- the first few positive integers $1,2,3,...$ are as follows: -- --Def 18b: [Standard definitions of the integers, (1 is next(0)) & (2 is next(1)) & (3 is next(2)) &... ] one := next(0) -- Def 18b: [The integer 1] Def(1) := next(0) Def 18c: [The integer 2] Def(2) := next(1) Def 18d: [The integer 3] Def(3) := next(2) Def 18f: [The integer 4] Def(4) := next(3) -- -- We show next that the set of integers is not merely an ordinal, but is indeed a cardinal. -- Theorem 209: [The set of integers is a Cardinal] Card(Za). Proof: Suppose_not ==> not Card(Za) -- -- For in the contrary case there would exist an element $y$ of $Za$ and a 1-1 map $f$ of $y$ onto $Za$. -- Use_def(Card) ==> (not Ord(Za)) or not(FORALL y in Za, f in OM | (not(domain(f) = y)) or (not(range(f) = Za)) or (not(Svm(f)))) junk-->T206 ==> Ord(Za) ELEM ==> Stat1: not(FORALL y in Za, f in OM | (not(domain(f) = y)) or (not(range(f) = Za)) or (not(Svm(f)))) -- -- But then Theorem 192 would tell us that $Za$ is finite, a contradiction proving our theorem. -- (y,f)-->Stat1 ==> (y in Za) & (domain(f) = y) & (range(f) = Za) & Svm(f) f-->T192 ==> Finite(domain(f)) ¥imp Finite(range(f)) y-->T206 ==> Finite(y) & (not Finite(Za)) EQUAL ==> false; Discharge ==> QED -- -- -- Theorem 210: [The successor of an integer is an integer] (I in Za) ¥imp (Card(next(I)) & (next(I) in Za)). Proof+: Suppose_not(i0) ==> AUTO i0-->T32(*) ==> Ord(next(i0)) i0-->T200(*) ==> Finite(next(i0)) (next(i0))-->T205(*) ==> Card(next(i0)) (next(i0))-->T206(*) ==> false; Discharge ==> QED -- -- Our next aim is to define the first few integers and establish their elementary properties. -- This is done in the two following theorems. -- Theorem 211: [The first few integers are all cardinals] Ord(0) & (0 in Za) & (1 in Za) & (2 in Za) & (3 in Za) & Card(0) & Card(1) & Card(2) & Card(3). Proof: Suppose_not ==> AUTO -- -- All these statements are trivial corollaries of the fact that 0 is a cardinal, -- and of Theorem 188, Theorem 206, and Theorem 210. -- T188(*) ==> Finite(0) & Card(0) 0-->T206(*) ==> 0 in Za Use_def(Card)(*) ==> Ord(0) 0-->T210(*) ==> Card(next(0)) & (next(0) in Za) Use_def(1)(*) ==> Card(1) & (1 in Za) 1-->T210(*) ==> Card(next(1)) & (next(1) in Za) Use_def(2)(*) ==> Card(2) & (2 in Za) 2-->T210(*) ==> Card(next(2)) & (next(2) in Za) Use_def(3)(*) ==> false; Discharge ==> QED -- -- The following corollary to Theorem 211 merely adds the elementary fact -- that the first 3 integers are all different. -- Theorem 212: [The first few integers are all distinct] (0 in Za) & (1 in Za) & (2 in Za) & (3 in Za) & (1 /= 0) & (2 /= 0) & (3 /= 0) & (1 /= 2) & (1 /= 3) & (2 /= 3). Proof: Suppose_not ==> not((0 in Za) & (1 in Za) & (2 in Za) & (3 in Za) & (1 /= 0) & (2 /= 0) & (3 /= 0) & (1 /= 2) & (1 /= 3) & (2 /= 3)) T211 ==> (0 in Za) & (1 in Za) & (2 in Za) & (3 in Za) Use_def(1) ==> Stat1: 1 = next(0) Use_def(2) ==> 2 = next(1) Use_def(3) ==> 3 = next(2) Use_def(next) ==> false; Discharge ==> QED -- -- Next, in preparation for our account of integer arithmetic, -- we define the main arithmetic operators, -- not merely for integers, but for all cardinals, whether finite or infinite. -- Def 19: [Cardinal sum] Def(n ¥PLUS m) := #({[x,0]: x in n} + {[x,1]: x in m}) Def 20: [Cardinal product] Def(N ¥TIMES M) := #(N ¥PROD M) Def 21: [Powerset of a set] pow(S) := {x: x ¥incin S} Def 22: [Cardinal Difference] Def(N ¥MINUS M) := #(N - M) -- -- The quotient $m ¥OVER n$ is defined as the largest integer $k$ such that $k ¥TIMES n$ is -- no larger than $m$, and $m ¥MOD n$ is defined as the remainder $m ¥MINUS ((m ¥OVER n) ¥TIMES n)$. -- Def 23: [Integer Quotient; Note that $x/0$ is defined as $Za$ for $x in Za$] Def(M ¥OVER N) := Un({k in Za | (k ¥TIMES N) ¥incin M}) Def 24: [Integer Remainder] Def(M ¥MOD N) := M ¥MINUS ((M ¥OVER N) ¥TIMES N) -- -- The fact that the power set of the null set is the singleton whose sole member is the -- null set is an elementary consequence of the definition of 'pow'. -- Theorem 213: [Powerset of the null set] pow(0) = {0}. Proof: Suppose_not ==> Stat1: pow(0) /= {0} c-->Stat1 ==> ((c in pow(0)) & (c /= 0)) or ((c notin pow(0)) & (c = 0)) Use_def(pow) ==> ((c in {x: x ¥incin 0}) & (c /= 0)) or ((c notin {x: x ¥incin 0}) & (c = 0)) Suppose ==> Stat2: (c notin {x: x ¥incin 0}) & (c = 0) 0-->Stat2 ==> false; Discharge ==> Stat3: (c in {x: x ¥incin 0}) & (c /= 0) d-->Stat3 ==> false; Discharge ==> QED -- -- A set belongs to another if and only if its singleton belongs to the powerset of the other set. -- Theorem 214: [Membership, singleton, and powerset] (X in L) ¥eq ({X} in pow(L)). Proof: Suppose_not(x1,y1) ==> AUTO Use_def(pow)(*) ==> (x1 in y1) ¥neq ({x1} in {l1: l1 ¥incin y1}) Suppose ==> Stat1: ({x1} in {l1: l1 ¥incin y1}) & (x1 notin y1) (x0)-->Stat1(Stat1*) ==> false Discharge ==> Stat2: ({x1} notin {l1: l1 ¥incin y1}) & (x1 in y1) ({x1})-->Stat2(Stat2*) ==> false Discharge ==> QED -- -- The powerset of a singleton is a doubleton consisting of $0$ and a singleton. -- Theorem 215: [Singleton and powerset] ({0,X} ¥incin pow(X)) & ((X = {Y}) ¥imp (pow(X) = {0,X})). Proof: Suppose_not(x0,y0) ==> AUTO Use_def(pow(x0)) ==> AUTO Suppose ==> Stat1: {0,x0} ¥nincin {y: y ¥incin x0} a-->Stat1(Stat1*) ==> Stat2: (a notin {y: y ¥incin x0}) & ((a = 0) or (a = x0)) a-->Stat2(Stat2*) ==> false Discharge ==> Stat3: ({y: y ¥incin x0} ¥nincin {0,x0}) & (x0 = {y0}) b-->Stat3(Stat3*) ==> Stat4: (b in {y: y ¥incin x0}) & (b /= 0) & (b /= {y0}) c-->Stat4(Stat3*) ==> false Discharge ==> QED -- -- The following elementary lemma just tells us that the two sets entering into the -- definition of cardinal addition are always disjoint. -- Theorem 216: [Disjointness of simple Cartesian products] {[x,0]: x in N} * {[x,1]: x in M} = 0. Proof: Suppose_not(n,m) ==> Stat1: {[x,0]: x in n} * {[x,1]: x in m} /= 0 e-->Stat1 ==> Stat2: (e in {[x,0]: x in n}) & (e in {[x,1]: x in m}) (x,y)-->Stat2 ==> (e = [x,0]) & (e = [y,1]) T212 ==> 1 /= 0 Discharge ==> QED -- -- Next we show that the sum of two cardinalities $#n$, $#m$ can be computed using -- any pair of disjoint sets of which the first has cardinality $#n$ and the second has cardinality $#m$. -- Theorem 217: [First Disjoint sum lemma] ((N * M = 0) & (K * J = 0) & (#N = #K) & (#M = #J)) ¥imp (#(N + M) = #(K + J)). Proof: Suppose_not(n,m,k,j) ==> ((n * m = 0) & (k * j = 0) & (#n = #k) & (#m = #j)) & (#(n + m) /= #(k + j)) ELEM ==> Stat1: (n * m = 0) & (k * j = 0) -- -- For supposing the contrary, and noting that there exist 1-1 maps $f$ and $g$ of $n$ to $j$ and $m$ to $k$, -- we see immediately that $f + g$ is a 1-1 map of $m + n$ onto $j + k$, and so our claim follows using Theorem 88. -- (n,k)-->T158 ==> Stat2: (EXISTS f in OM | (one_1_map(f) & (range(f) = n) & (domain(f) = k))) f-->Stat2 ==> one_1_map(f) & (range(f) = n) & (domain(f) = k) (m,j)-->T158 ==> Stat3: (EXISTS f in OM | (one_1_map(f) & (range(f) = m) & (domain(f) = j))) g-->Stat3 ==> one_1_map(g) & (range(g) = m) & (domain(g) = j) (f,g)-->T88(Stat1) ==> one_1_map(f + g) (f,g)-->T79 ==> range(f + g) = range(f) + range(g) (f,g)-->T78 ==> domain(f + g) = domain(f) + domain(g) -- -- Our result now follows from Theorem 157. -- (f + g)-->T157 ==> #domain(f + g) = #range(f + g) EQUAL ==> #(domain(f) + domain(g)) = #(range(f) + range(g)) EQUAL ==> false; Discharge ==> QED -- -- The following lemma, which simply notes a consequence of the elementary fact --that ${[x,a]: x in n}$ and $n$ are in 1-1 correspondence, -- prepares for the proof of Theorem 221 below. -- Theorem 218: [Cardinality of Cartesian product by a singleton] (#{[x,A]: x in M} = #M). Proof: -- -- Since ${[x,[x,a]]: x in m}$ is clearly a 1-1 map, the present lemma is an obvious -- consequence of Theorem 157. -- Suppose_not(a,m) ==> #{[x,a]: x in m} /= #m Loc_def ==> f = {[x,[x,a]]: x in m} APPLY(x9_thryvar:x,y9_thryvar:y) fcn_symbol(g->f,f(x)->[x,a],s->m) ==> (domain(f) = m) & (range(f) = {[x,a]: x in m}) & (((x in m) & (y in m) & ([x,a] = [y,a]) & (x /= y)) or one_1_map(f)) ELEM ==> one_1_map(f) f-->T157 ==> #domain(f) = #range(f) EQUAL ==> false; Discharge ==> QED -- -- -- The monotonicity of arithmetic addition follows immediately from its definition. -- Theorem 219: [Monotonicity of arithmetic addition] ((N incs N1) and (M incs M1)) ¥imp (N ¥PLUS M incs N1 ¥PLUS M1). Proof: Suppose_not(n,n1,m,m1) ==> AUTO Use_def(¥PLUS) ==> (n ¥PLUS m) = #({[x,0]: x in n} + {[x,1]: x in m}) Use_def(¥PLUS) ==> not (#({[x,0]: x in n} + {[x,1]: x in m}) incs #({[x,0]: x in n1} + {[x,1]: x in m1})) ({[x,0]: x in n1} + {[x,1]: x in m1},{[x,0]: x in n} + {[x,1]: x in m})-->T170 ==> not (({[x,0]: x in n} + {[x,1]: x in m}) incs ({[x,0]: x in n1} + {[x,1]: x in m1})) Set_monot ==> ({[x,0]: x in n} + {[x,1]: x in m}) incs ({[x,0]: x in n1} + {[x,1]: x in m1}) Discharge ==> QED -- -- Next we show that the numerical sum $n ¥PLUS m$ of any two disjoint sets is simply -- the number of elements in their union. -- Theorem 220: [Disjoint sum lemma] (N * M = 0) ¥imp (N ¥PLUS M = #(N + M)). Proof: Suppose_not(n,m) ==> (n * m = 0) & ((n ¥PLUS m) /= #(n + m)) Use_def(¥PLUS) ==> #({[x,0]: x in n} + {[x,1]: x in m}) /= #(n + m) (0,n)-->T218 ==> #{[x,0]: x in n} = #n (1,m)-->T218 ==> #{[x,1]: x in m} = #m (n,m)-->T216 ==> {[x,0]: x in n} * {[x,1]: x in m} = 0 (n,m,{[x,0]: x in n},{[x,1]: x in m})-->T217 ==> false; Discharge ==> QED -- -- Our next theorem tells us that the sum of two cardinals $i$ and $j$ -- can be calculated using any two sets $n$ and $m$ whose cardinalities are n and m respectively. -- Theorem 221: [Arithmetic addition lemma] N ¥PLUS M = #N ¥PLUS #M. Proof: -- -- Supposing that our theorem is false and expanding the definition of '$¥PLUS$' brings us to -- the cardinal inequality seen just below. -- Suppose_not(n,m) ==> n ¥PLUS m /= #n ¥PLUS #m Use_def(¥PLUS) ==> #({[x,0]: x in n} + {[x,1]: x in m}) /= #({[x,0]: x in #n} + {[x,1]: x in #m}) -- -- But the pairs of sets appearing in this inequality are evidently disjoint, and -- have the respective cardinalities $#n$, $#m$, $##n$, $##m$. -- T212 ==> Stat1: 1 /= 0 Suppose ==> Stat2: {[x,0]: x in n} * {[x,1]: x in m} /= 0 c-->Stat2 ==> c in {[x,0]: x in n} * {[x,1]: x in m} ELEM ==> Stat3: (c in {[x,0]: x in n}) & (c in {[x,1]: x in m}) (d,e)-->Stat3() ==> Stat4: (d in n) & (c = [d,0]) & (e in m) & (c = [e,1]) (Stat4,Stat1)Discharge ==> {[x,0]: x in n} * {[x,1]: x in m} = 0 Suppose ==> Stat5: {[x,0]: x in #n} * {[x,1]: x in #m} /= 0 cc-->Stat5 ==> cc in {[x,0]: x in #n} * {[x,1]: x in #m} ELEM ==> Stat6: (cc in {[x,0]: x in #n}) & (cc in {[x,1]: x in #m}) (dd,ee)-->Stat6() ==> Stat7: (dd in #n) & (cc = [dd,0]) & (ee in #m) & (cc = [ee,1]) (Stat7,Stat1)Discharge ==> {[x,0]: x in #n} * {[x,1]: x in #m} = 0 (0,n)-->T218 ==> #{[x,0]: x in n} = #n (1,m)-->T218 ==> #{[x,1]: x in m} = #m (0,#n)-->T218 ==> #{[x,0]: x in #n} = ##n (1,#m)-->T218 ==> #{[x,1]: x in #m} = ##m -- -- Hence our assertion follows from Theorem 166 and Theorem 217. -- n-->T166 ==> #{[x,0]: x in n} = #{[x,0]: x in #n} m-->T166 ==> #{[x,1]: x in m} = #{[x,1]: x in #m} ({[x,0]: x in n},{[x,1]: x in m},{[x,0]: x in #n},{[x,1]: x in #m})-->T217 ==> false; Discharge ==> QED -- -- It is sometimes convenient to use Theorem 216 in the following variant form: -- Theorem 222: [Second Disjoint sum lemma] (N * M = 0) ¥imp (#N ¥PLUS #M = #(N + M)). Proof: Suppose_not(n,m) ==> (n * m = 0) & ((#n ¥PLUS #m) /= #(n + m)) (n,m)-->T221 ==> (n ¥PLUS m) /= #(n + m) (n,m)-->T220 ==> false; Discharge ==> QED -- -- The fact that cardinal multiplication of any $n$ by $1 $leaves $n$ unchanged -- will be derived from the corresponding fact for Cartesian products, as stated -- in the following theorem. -- Theorem 223: [Cardinality of Cartesian product by a singleton, 2] #({C} ¥PROD N) = #N. Proof: Suppose_not(c,n) ==> #({c} ¥PROD n) /= #n -- -- Make the contrary hypothesis, and use the definition of '$¥PROD$'. -- Use_def(¥PROD) ==> ({c} ¥PROD n) = {[x,y]: x in {c}, y in n} SIMPLF ==> ({c} ¥PROD n) = {[c,x]: x in n} EQUAL ==> #({c} ¥PROD n) = #{[c,x]: x in n} -- -- It is easily seen that {[x,[c,x]]: x in n} is a 1-1 map of n to {[c,x]: x in n} -- Loc_def ==> f = {[x,[c,x]]: x in n} APPLY(x9_thryvar:y,y9_thryvar:wz) fcn_symbol(f(x)->[c,x],g->f,s->n) ==> Svm(f) & (domain(f) = n) & (range(f) = {[c,x]: x in n}) & (((y in n) & (wz in n) & ([c,y] = [c,wz]) & (y /= wz)) or one_1_map(f)) ELEM ==> one_1_map(f) -- -- Thus the present theorem follows immediately from Theorem 157. -- f-->T157 ==> #domain(f) = #range(f) EQUAL ==> false; Discharge ==> QED -- -- The following minor variant of Theorem 223 has much the same proof. -- Theorem 224: [Cardinality of Cartesian product by a singleton, 3] #(N ¥PROD {C}) = #N. Proof: Suppose_not(n,c) ==> #(n ¥PROD {c}) /= #n -- -- Make the contrary hypothesis, and use the definition of '$¥PROD$'. -- Use_def(¥PROD) ==> (n ¥PROD {c}) = {[x,y]: x in n, y in {c}} SIMPLF ==> (n ¥PROD {c}) = {[x,c]: x in n} EQUAL ==> #(n ¥PROD {c}) = #{[x,c]: x in n} -- -- It is easily seen that {[x,[x,c]]: x in n} is a 1-1 map of n to {[x,c]: x in n} -- Loc_def ==> f = {[x,[x,c]]: x in n} APPLY(x9_thryvar:y,y9_thryvar:wz) fcn_symbol(f(x)->[x,c],g->f,s->n) ==> Svm(f) & (domain(f) = n) & (range(f) = {[x,c]: x in n}) & (((y in n) & (wz in n) & ([y,c] = [wz,c]) & (y /= wz)) or one_1_map(f)) ELEM ==> one_1_map(f) -- -- Thus the present theorem follows immediately from Theorem 157. -- f-->T157 ==> #domain(f) = #range(f) EQUAL ==> #n = #{[x,c]: x in n} Discharge ==> QED -- -- Theorem 222 has the following corollary, which restates the definition of the -- arithmetic sum in a more 'algebraic' form. -- Theorem 225: [Cardinality of a Cartesian product union] (A /= B) ¥imp (#N ¥PLUS #M = #((N ¥PROD {A}) + (M ¥PROD {B}))). Proof: Suppose_not(a,b,n,m) ==> (a /= b) & (#n ¥PLUS #m /= #((n ¥PROD {a}) + (m ¥PROD {b}))) ({a},{b},n,m)-->T143 ==> (n ¥PROD {a}) * (m ¥PROD {b}) = 0 (n ¥PROD {a},m ¥PROD {b})-->T222 ==> #((n ¥PROD {a}) + (m ¥PROD {b})) = (#(n ¥PROD {a}) ¥PLUS #((m ¥PROD {b}))) (n,a)-->T224 ==> #(n ¥PROD {a}) = #n (m,b)-->T224 ==> #(m ¥PROD {b}) = #m EQUAL ==> false; Discharge ==> QED -- -- The following easy corollaries of Theorem 221 generalize it slightly. -- The proofs, which use Theorem 168, have an elementary algebraic flavor. -- We show first that the arithmetic sum of any two sets is the sum of the first -- and the cardinality of the second. -- Theorem 226: [Arithmetic addition lemma 2] N ¥PLUS M = N ¥PLUS #M. Proof: Suppose_not(n,m) ==> n ¥PLUS m /= n ¥PLUS #m (n,m)-->T221 ==> n ¥PLUS m = #n ¥PLUS #m (n,#m)-->T221 ==> n ¥PLUS #m = #n ¥PLUS ##m m-->T166 ==> ##m = #m EQUAL ==> n ¥PLUS #m = #n ¥PLUS #m Discharge ==> QED -- -- Next we show that the arithmetic sum of any two sets is the sum of the second -- and the cardinality of the first. -- Theorem 227: [Arithmetic addition lemma 3] N ¥PLUS M = #N ¥PLUS M. Proof: Suppose_not(n,m) ==> n ¥PLUS m /= #n ¥PLUS m (n,m)-->T221 ==> n ¥PLUS m = #n ¥PLUS #m (#n,m)-->T221 ==> #n ¥PLUS m = ##n ¥PLUS #m m-->T166 ==> ##n = #n EQUAL ==> #n ¥PLUS m = #n ¥PLUS #m Discharge ==> QED -- -- The following 3-set variants of our earlier disjoint sum lemma are useful -- in proving the associativity of arithmetic addition. We first prove that -- the arithmetic sum of any three disjoint sets is the cardinality of their union. -- Theorem 228: [Arithmetic associativity lemma] ((N * M = 0) & (N * K = 0) & (M * K = 0)) ¥imp (((N ¥PLUS M) ¥PLUS K) = #((N + M) + K)). Proof: Suppose_not(n,m,k) ==> (n * m = 0) & (n * k = 0) & (m * k = 0) & (((n ¥PLUS m) ¥PLUS k) /= #((n + m) + k)) (n,m)-->T220 ==> (n ¥PLUS m) = #(n + m) EQUAL ==> ((n ¥PLUS m) ¥PLUS k) = ((#(n + m)) ¥PLUS k) (n + m,k)-->T227 ==> ((#(n + m)) ¥PLUS k) = ((n + m) ¥PLUS k) (n + m,k)-->T220 ==> false; Discharge ==> QED -- -- The following result also asserts that the arithmetic sum of any three disjoint sets -- is the cardinality of their union, but now with the arithmetic sum differently associated. -- Theorem 229: [Arithmetic associativity lemma 2] ((N * M = 0) & (N * K = 0) & (M * K = 0)) ¥imp ((N ¥PLUS (M ¥PLUS K)) = #(N + (M + K))). Proof: Suppose_not(n,m,k) ==> (n * m = 0) & (n * k = 0) & (m * k = 0) & ((n ¥PLUS (m ¥PLUS k)) /= #(n + (m + k))) (m,k)-->T220 ==> m ¥PLUS k = #(m + k) EQUAL ==> (n ¥PLUS (m ¥PLUS k)) = (n ¥PLUS #(m + k)) (n,m + k)-->T226 ==> (n ¥PLUS #(m + k)) = (n ¥PLUS (m + k)) (n,m + k)-->T220 ==> false; Discharge ==> QED -- -- Our next theorem tells us that the product of two cardinals $#n$ and $#m$ can also -- be calculated using any two sets $n$ and $m$ whose cardinalities are $#n$ and $#m$ respectively. -- Theorem 230: [Arithmetic multiplication lemma] (N ¥TIMES M) = (#N ¥TIMES #M). Proof: Suppose_not(n,m) ==> (n ¥TIMES m) /= (#n ¥TIMES #m) -- -- Supposing that our theorem is false and expanding the definition of '$¥TIMES$' brings us to -- the cardinal inequality seen just below. -- Use_def(¥TIMES) ==> #(n ¥PROD m) /= #(#n ¥PROD #m) -- -- Theorem 156 tells us that there always exist 1-1 maps of #n onto n and of #m onto m. -- (n)-->T156 ==> Stat1: Card(#n) & (EXISTS f in OM | one_1_map(f) & (range(f) = n) & (domain(f) = #n)) (f)-->Stat1 ==> Stat2: one_1_map(f) & (domain(f) = #n) & (range(f) = n) (m)-->T156 ==> Stat3: Card(#m) & (EXISTS f in OM | one_1_map(f) & (range(f) = m) & (domain(f) = #m)) (g)-->Stat3 ==> Stat4: one_1_map(g) & (domain(g) = #m) & (range(g) = m) Use_def(one_1_map) ==> Svm(f) Use_def(one_1_map) ==> Svm(g) Use_def(Svm) ==> Is_map(f) Use_def(Svm) ==> Is_map(g) Loc_def ==> g1 = g Loc_def ==> h = {[x,[f~[car(x)],g1~[cdr(x)]]]: x in {[x,y]: x in #n, y in #m}} -- -- Now consider the map $h$ defined by ${[x,[f~[car(x)],g~[cdr(x)]]]: x in (#n ¥PROD #m)}$. -- We will show that this is a 1-1 map of $#n ¥PROD #m$ onto $n ¥PROD m$. -- APPLY(x9_thryvar:x,y9_thryvar:y) fcn_symbol(f(x)->[f~[car(x)],g1~[cdr(x)]],g->h,s->{[x,y]: x in #n, y in #m}) ==> Svm(h) & (range(h) = {[f~[car(x)],g1~[cdr(x)]]: x in {[x,y]: x in #n, y in #m}}) & (domain(h) = {[x,y]: x in #n, y in #m}) & (((x in {[x,y]: x in #n, y in #m}) & (y in {[x,y]: x in #n, y in #m}) & ([f~[car(x)],g1~[cdr(x)]] = [f~[car(y)],g1~[cdr(y)]]) & (x /= y)) or one_1_map(h)) EQUAL ==> Stat5: Svm(h) & (range(h) = {[f~[car(x)],g~[cdr(x)]]: x in {[x,y]: x in #n, y in #m}}) & (domain(h) = {[x,y]: x in #n, y in #m}) & (((x in domain(h)) & (y in domain(h)) & ([f~[car(x)],g~[cdr(x)]] = [f~[car(y)],g~[cdr(y)]]) & (x /= y)) or one_1_map(h)) SIMPLF ==> range(h) = {[f~[car([x,y])],g~[cdr([x,y])]]: x in #n, y in #m} Use_def(¥PROD) ==> #n ¥PROD #m = {[x,y]: x in #n, y in #m} ELEM ==> domain(h) = #n ¥PROD #m -- -- Next we will show that $h$ is 1-1. Indeed, the distinct $x$ and $y$ which appear -- in the final clause of the conjunction appearing as Stat6 6 above -- must have the forms $[x1,y1]$ and $[x2,y2]$ respectively, and so either -- $(x1 /= x2)$ or $(y1 /= y2)$. -- Suppose ==> not one_1_map(h) ELEM ==> Stat7: x /= y ELEM ==> Stat8: x in {[u,y]: u in #n, y in #m} (x1,y1)-->Stat8 ==> Stat9: (x = [x1,y1]) & (x1 in #n) & (y1 in #m) ELEM ==> Stat10: y in {[u,v]: u in #n, v in #m} (x2,y2)-->Stat10 ==> Stat11: (y = [x2,y2]) & (x2 in #n) & (y2 in #m) (Stat9,Stat11*)ELEM ==> Stat12: (x = [x1,y1]) & (y = [x2,y2]) (Stat7,Stat12)ELEM ==> (x1 /= x2) or (y1 /= y2) -- -- If $x1 /= x2$, then since $f$ is 1-1 it follows that $f(x1) /= f(x2)$, contradicting -- $[f~[x1],g~[y1]] = [f~[x2],g~[y2]]$. Much the same argument applies if $y1 /= y2$. -- Thus $[x1,y1] = [x2,y2]$, i.e. $x = y$, implying that $h$ is 1-1. -- EQUAL ==> [f~[car(x)],g~[cdr(x)]] = [f~[car([x1,y1])],g~[cdr([x1,y1])]] ELEM ==> (car([x1,y1]) = x1) & (cdr([x1,y1]) = y1) EQUAL ==> [f~[car(x)],g~[cdr(x)]] = [f~[x1],g~[y1]] EQUAL ==> [f~[car(y)],g~[cdr(y)]] = [f~[car([x2,y2])],g~[cdr([x2,y2])]] ELEM ==> (car([x2,y2]) = x2) & (cdr([x2,y2]) = y2) EQUAL ==> [f~[car(y)],g~[cdr(y)]] = [f~[x2],g~[y2]] Use_def(one_1_map) ==> Stat13: (FORALL x in f, y in f | (cdr(x) = cdr(y)) ¥imp (x = y)) Use_def(one_1_map) ==> Stat14: (FORALL x in g, y in g | (cdr(x) = cdr(y)) ¥imp (x = y)) (f,x1)-->T77 ==> [x1,f~[x1]] in f (f,x2)-->T77 ==> [x2,f~[x2]] in f ([x1,f~[x1]],[x2,f~[x2]])-->Stat13 ==> (cdr([x1,f~[x1]]) = cdr([x2,f~[x2]])) ¥imp ([x1,f~[x1]] = [x2,f~[x2]]) ELEM ==> x1 = x2 -- -- Much the same argument applies if $y1 /= y2$. -- (g,y1)-->T77 ==> Stat15: [y1,g~[y1]] in g (g,y2)-->T77 ==> [y2,g~[y2]] in g ([y1,g~[y1]],[y2,g~[y2]])-->Stat14(Stat15) ==> (cdr([y1,g~[y1]]) = cdr([y2,g~[y2]])) ¥imp ([y1,g~[y1]] = [y2,g~[y2]]) ELEM ==> y1 = y2 EQUAL ==> [x1,y1] = [x2,y2] EQUAL ==> x = y Discharge ==> one_1_map(h) -- -- Finally, we show that the range of $h$ is $n ¥PROD m$. First suppose that $range(h)$ is not included -- in $n ¥PROD m$. Then there exists a $c = [f~[cx1],g~[cy1]]$, with $cx1 in #n$ and $cy1 in #m$, -- such that $c notin n ¥PROD m$, which is impossible since $f$ and $g$ map $#n$ and $#m$ into $n$ and $m$ -- respectively. -- Suppose ==> n ¥PROD m /= {[f~[car([x,y])],g~[cdr([x,y])]]: x in #n, y in #m} Use_def(¥PROD) ==> n ¥PROD m = {[x,y]: x in n, y in m} Suppose ==> Stat16: not({[x,y]: x in n, y in m} incs {[f~[car([x,y])],g~[cdr([x,y])]]: x in #n, y in #m}) c-->Stat16 ==> Stat17: (c in {[f~[car([x,y])],g~[cdr([x,y])]]: x in #n, y in #m}) & Stat18: (c notin {[x,y]: x in n, y in m}) (cx1,cy1)-->Stat17 ==> Stat19: (c = [f~[car([cx1,cy1])],g~[cdr([cx1,cy1])]]) & (cx1 in #n) & (cy1 in #m) (Stat2,Stat4,Stat19)ELEM ==> (cx1 in domain(f)) & (cy1 in domain(g)) (cx1,f)-->T71 ==> f~[cx1] in n (cy1,g)-->T71 ==> g~[cy1] in m ELEM ==> car([cx1,cy1]) = cx1 ELEM ==> cdr([cx1,cy1]) = cy1 EQUAL ==> c = [f~[cx1],g~[cy1]] (f~[cx1],g~[cy1])-->Stat18 ==> not ((f~[cx1] in n) & (g~[cy1] in m) & (c = [f~[cx1],g~[cy1]])) Discharge ==> Stat20: not({[x,y]: x in n, y in m} ¥incin {[f~[car([x,y])],g~[cdr([x,y])]]: x in #n, y in #m}) -- -- On the other hand, if $n ¥PROD m$ is not included in $range(h)$, -- there is an element $d = [dx1,dy1]$ in the first of these two sets but not in the second. -- but then there exist $ex1 in #n$ and $ey1 in #m$ such that $dx1 = f~[ex1]$ and $dy1 = g~[ey1]$, -- so $d$ does belong to the second set. -- d-->Stat20 ==> Stat21: (d in {[x,y]: x in n, y in m}) & Stat22: (d notin {[f~[car([x,y])],g~[cdr([x,y])]]: x in #n, y in #m}) (dx1,dy1)-->Stat21 ==> (dx1 in range(f)) & (dy1 in range(g)) & (d = [dx1,dy1]) f-->T72 ==> f = {[x,f~[x]]: x in domain(f)} g-->T72 ==> g = {[x,g~[x]]: x in domain(g)} APPLY(x9_thryvar:x3,y9_thryvar:x4) fcn_symbol(f(x)->g~[x],g->g,s->domain(g)) ==> range(g) = {g~[x]: x in domain(g)} APPLY(x9_thryvar:y3,y9_thryvar:y4) fcn_symbol(f(x)->f~[x],g->f,s->domain(f)) ==> range(f) = {f~[x]: x in domain(f)} ELEM ==> Stat23: dx1 in {f~[x]: x in domain(f)} ELEM ==> Stat24: dy1 in {g~[x]: x in domain(g)} ex1-->Stat23 ==> Stat25: (ex1 in #n) & (dx1 = f~[ex1]) ey1-->Stat24 ==> (ey1 in #m) & (dy1 = g~[ey1]) (ex1,ey1)-->Stat22 ==> not((ex1 in #n) & (ey1 in #m) & (d = [f~[car([ex1,ey1])],g~[cdr([ex1,ey1])]])) (Stat23*)ELEM ==> (car([ex1,ey1]) = ex1) & (cdr([ex1,ey1]) = ey1) (Stat25*)ELEM ==> d /= [f~[car([ex1,ey1])],g~[cdr([ex1,ey1])]] EQUAL ==> d /= [f~[ex1],g~[ey1]] EQUAL ==> d = [f~[ex1],g~[ey1]] Discharge ==> n ¥PROD m = {[f~[car([x,y])],g~[cdr([x,y])]]: x in #n, y in #m} ELEM ==> n ¥PROD m = range(h) h-->T157 ==> #range(h) = #domain(h) EQUAL ==> #(n ¥PROD m) = #(#n ¥PROD #m) -- -- This final contradiction completes the proof of our theorem. -- Discharge ==> QED -- -- The following corollary of Theorem 230 is the 'product' analog of Theorem 226. -- Its simple proof is algebraic in flavor. -- Theorem 231: [Arithmetic multiplication lemma 2] N ¥TIMES M = N ¥TIMES #M. Proof: Suppose_not(n,m) ==> n ¥TIMES m /= n ¥TIMES #m (n,m)-->T230 ==> n ¥TIMES m = #n ¥TIMES #m (n,#m)-->T230 ==> n ¥TIMES #m = #n ¥TIMES ##m m-->T166 ==> ##m = #m EQUAL ==> n ¥TIMES #m = #n ¥TIMES #m Discharge ==> QED -- -- it is also useful to state the following variants of the same fact. -- The first of these tells us that the arithmetic product of two sets is the same as -- the arithmetic product of their cardinalities. -- Theorem 232: [Arithmetic multiplication lemma 3] #(N ¥PROD M) = #(#N ¥PROD #M). Proof: Suppose_not(n,m) ==> #(n ¥PROD m) /= #(#n ¥PROD #m) Use_def(¥TIMES) ==> #(n ¥PROD m) = n ¥TIMES m Use_def(¥TIMES) ==> #(#n ¥PROD #m) = #n ¥TIMES #m (n,m)-->T230 ==> false; Discharge ==> QED -- -- Next we show that the arithmetic product of two sets is the same as -- the arithmetic product of the first by the cardinality of the second. -- Theorem 233: [Arithmetic multiplication lemma 4] #(N ¥PROD M) = #(N ¥PROD #M). Proof: Suppose_not(n,m) ==> #(n ¥PROD m) /= #(n ¥PROD #m) Use_def(¥TIMES) ==> #(n ¥PROD m) = n ¥TIMES m Use_def(¥TIMES) ==> #(n ¥PROD #m) = n ¥TIMES #m (n,m)-->T231 ==> false; Discharge ==> QED -- -- The final result in this smalls series show that the arithmetic product of two sets is the same as -- the arithmetic product of the cardinality of the first by the second. -- Theorem 234: [Arithmetic multiplication lemma 5] #(N ¥PROD M) = #(#N ¥PROD M). Proof: Suppose_not(n,m) ==> #(n ¥PROD m) /= #(#n ¥PROD m) (n,m)-->T161 ==> #(m ¥PROD n) /= #(#n ¥PROD m) (#n,m)-->T161 ==> #(m ¥PROD n) /= #(m ¥PROD #n) (m,n)-->T233 ==> false; Discharge ==> QED -- -- Next we note that a proper subset of a finite set $n$ has a cardinality which -- is definitely smaller than that of $n$. -- Theorem 235: [Strict monotonicity of finite cardinality] (Finite(N) & (M ¥incin N) & (M /= N)) ¥imp (#M in #N). Proof: Suppose_not(n,m) ==> Finite(n) & (m ¥incin n) & (m /= n) & (#m notin #n) -- -- Suppose than $n$ and $m$ constitute a counterexample to our theorem. -- Since $m ¥incin n$, $#m ¥incin #n$ and since both $#m$ and $#n$ are ordinals -- it follows by Theorem 170 that $#m = #n$. Thus $m$ and $n$ are in 1-1 correspondence, -- which is impossible by the definition of finiteness. -- n-->T156 ==> Ord(#n) m-->T156 ==> Ord(#m) (#n,#m)-->T35 ==> #m incs #n (m,n)-->T170 ==> #m = #n (m,n)-->T158 ==> Stat1: (EXISTS f in OM | one_1_map(f) & (range(f) = m) & (domain(f) = n)) g-->Stat1 ==> one_1_map(g) & (domain(g) = n) & (range(g) ¥incin n) & (range(g) /= n) Use_def(Finite) ==> Stat2: not (EXISTS f in OM | one_1_map(f) & (domain(f) = n) & (range(f) ¥incin n) & (range(f) /= n)) g-->Stat2 ==> false; Discharge ==> QED -- -- Using the result just proved, we can give the following variant -- of the standard theory of transfinite induction. -- THEORY finite_induction(n,P(x)) Finite(n) & P(n) END finite_induction; -- ENTER_THEORY finite_induction -- -- We show that if some finite set $n$ has a property $P$, there must exist a subset of $n$ -- which is finite, has property $P$, but has no strict subset also having property $P$. -- This refines the ordinary principle of induction, which would only tell us that -- $n$ has an element having property $P$, but itself having no element also having property $P$. -- Def finite_induction0: [Witness for finite induction argument by subset induction] m1_thryvar := arb({m: m ¥incin n | (P(m) & (FORALL k ¥incin m | ((k /= m) ¥imp (not P(k)))))}) -- Theorem finite_induction1: [Induction principle for finite sets] (m1_thryvar ¥incin n) & P(m1_thryvar) & (FORALL k ¥incin m1_thryvar | ((k /= m1_thryvar) ¥imp (not P(k)))). Proof: -- -- The proof works by applying standard transfinite induction to the cardinality $#m$ of sets $m$ -- having the property $P(m)$. Since by our hypothesis $#n$ is an integer for which there exists a set $y$ -- such that $(#y = #n) & (y ¥incin n) & P(y)$, the standard principle of induction tells us that -- there must exist a smallest integer $m$ with this property. -- Suppose_not ==> AUTO Assump ==> Finite(n) & P(n) n-->T193 ==> Finite(#n) n-->T156 ==> Card(#n) (#n)-->T206 ==> (#n in Za) & P(n) Suppose ==> Stat1: not(EXISTS y | (#y = #n) & (y ¥incin n) & P(y)) ELEM ==> (#n = #n) & (n ¥incin n) & P(n) n-->Stat1(Stat1*) ==> false Discharge ==> (#n in Za) & (EXISTS y | (#y = #n) & (y ¥incin n) & P(y)) Loc_def ==> nn = n EQUAL ==> (#n in Za) & (EXISTS y | (#y = #n) & (y ¥incin nn) & P(y)) APPLY(mt1_thryvar:j) transfinite_induction (n->#n,P(x)->((x in Za) & (EXISTS y | (#y = x) & (y ¥incin nn) & P(y)))) ==> (FORALL k | ((j in Za) & (EXISTS y | (#y = j) & (y ¥incin nn) & P(y))) & ((k in j) ¥imp (not ((k in Za) & (EXISTS y | (#y = k) & (y ¥incin nn) & P(y)))))) EQUAL ==> Stat2: (FORALL k | ((j in Za) & (EXISTS y | (#y = j) & (y ¥incin n) & P(y))) & ((k in j) ¥imp (not ((k in Za) & (EXISTS y | (#y = k) & (y ¥incin n) & P(y)))))) a-->Stat2 ==> (j in Za) & Stat3: (EXISTS y | (#y = j) & (y ¥incin n) & P(y)) m-->Stat3 ==> Stat4: (#m = j) & (m ¥incin n) & P(m) Pred_monot ==> Finite(#m) Pred_monot ==> Finite(m) m-->T156 ==> Stat5: Ord(#m) -- -- But now if the set $m$ has any proper subset $k$ such that $P(k)$, then by Theorem 194 $#k$ -- would be less than $#m$. Hence $m$ has the minimality property demanded by the present theorem. -- Suppose ==> Stat6: not ((FORALL k ¥incin m | ((k /= m) ¥imp (not P(k))))) k-->Stat6 ==> (k ¥incin m) & ((k /= m) & P(k)) Set_monot ==> #k ¥incin #m Pred_monot ==> Finite(#k) (m,k)-->T194 ==> #k /= #m k-->T156 ==> Card(#k) & Ord(#k) (#m,#k)-->T35(Stat5) ==> (#k in #m) (#k)-->T206 ==> #k in Za (#k)-->Stat2 ==> Stat7: not (EXISTS y | (#y = #k) & (y ¥incin n) & P(y)) k-->Stat7(Stat4) ==> false Discharge ==> Stat8: (FORALL k ¥incin m | ((k /= m) ¥imp (not P(k)))) Suppose ==> Stat9: {m: m ¥incin n | (P(m) & (FORALL k ¥incin m | ((k /= m) ¥imp (not P(k)))))} = 0 m-->Stat9(Stat4,Stat8*) ==> false Discharge ==> AUTO Use_def(m1_thryvar) ==> m1_thryvar = arb({m: m ¥incin n | (P(m) & (FORALL k ¥incin m | ((k /= m) ¥imp (not P(k)))))}) ({m: m ¥incin n | (P(m) & (FORALL k ¥incin m | ((k /= m) ¥imp (not P(k)))))})-->T0(Stat8*) ==> Stat10: m1_thryvar in {m ¥incin n | (P(m) & (FORALL k ¥incin m | ((k /= m) ¥imp (not P(k)))))} ()-->Stat10(*) ==> false Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY finite_induction -- --THEORY finite_induction(n,P(x)) -- Finite(n) & P(n) --==>(m1_thryvar) -- (m1_thryvar ¥incin n) & P(m1_thryvar) & (FORALL k ¥incin m1_thryvar | ((k /= m1_thryvar) ¥imp (not P(k)))) --END finite_induction; -- -- -- We can use the variant form of induction just derived to prove that the union of two sets is finite -- if and only if both of the sets are finite. -- Theorem 236: [The union of finite sets is finite] (Finite(N) & Finite(M)) ¥eq Finite(N + M). Proof: Suppose_not(n,m) ==> not((Finite(n) & Finite(m)) ¥eq Finite(n + m)) -- -- For if $n + m$ is finite, so are its subsets $m$ and $n$. -- ELEM ==> Finite(n) & Finite(m) & (not Finite(n + m)) -- -- Thus we only need to consider the possibility that $n$ and $m$ are finite, but $n + m$ is not. -- In this case, we can apply the theory of finite induction developed just above -- to show that there exists a finite set $nn$ such that $nn + m2$ is infinite, but $n2 + m$ is finite -- for every proper subset $n2$ of $nn$. -- ELEM ==> (EXISTS m | Finite(m) & (not Finite(n + m))) APPLY(m1_thryvar:nn) finite_induction(n->n,P(x)->(Finite(x) & (EXISTS m | Finite(m) & (not Finite(x + m))))) ==> Finite(nn) & Stat1: (EXISTS m | Finite(m) & (not Finite(nn + m))) & Stat2: (FORALL n2 ¥incin nn | ((n2 /= nn) ¥imp (not (Finite(n2) & (EXISTS m | Finite(m) & (not Finite(n2 + m))))))) m2-->Stat1 ==> Finite(m2) & (not Finite(nn + m2)) -- -- If $nn$ is nonempty, then we can remove one element $c$ from it, getting a proper subset -- $nn - {c}$ for which $(nn - {c}) + m2$ must therefore be finite. But then $nn + m2$ is also finite by Theorem 199, -- a contradiction. -- Suppose ==> Stat3: nn /= 0 c-->Stat3 ==> c in nn ELEM ==> ((nn - {c}) ¥incin nn) & ((nn - {c}) /= nn) & (nn = (nn - {c}) + {c}) (nn - {c})-->Stat2 ==> Stat4: (not (EXISTS m | Finite(m) & (not Finite(nn - {c} + m)))) m2-->Stat4 ==> Finite((nn - {c}) + m2) -- -- It follows that $nn$ must be empty. But this obviously contradicts the fact that $m2$ is finite, -- and so concludes the proof of the present theorem. -- ((nn - {c}) + m2,c)-->T199 ==> false; Discharge ==> nn = 0 Discharge ==> QED -- -- An easy corollary of the preceding theorem is that removal of an initial segment -- from the set $Za$ yields an infinite set. -- Theorem 237: [Removal of an initial segment from $Za$ yields an infinite set] (N in Za) ¥imp (not Finite(Za - N)). Proof: Suppose_not(n) ==> AUTO -- -- The key observation is that $n in Za$ implies that $n$ is finite; -- hence, if $Za - n$ could be finite, so would be the superset -- $(Za - n) + n$ of $Za$. -- n-->T206 ==> AUTO (Za - n, n)-->T236 ==> false; Discharge ==> QED -- -- The union-set of a finite set of finite sets is finite: -- Theorem 238: [The union of finitely many finite sets is finite] ((FORALL x in S | Finite(x)) & Finite(S)) ¥imp Finite(Un(S)). Proof: -- -- For if there were a counterexample $s$, then by the finite induction principle it would include an -- inclusion-minimal counterexample $t$. -- Suppose_not(s) ==> Stat1: (FORALL x in s | Finite(x)) & Finite(s) & (not(Finite(Un(s)))) APPLY(m1_thryvar:m) finite_induction(n->s,P(y)->(not(Finite(Un(y))))) ==> Stat2: (m ¥incin s) & (not(Finite(Un(m)))) & (FORALL k ¥incin m | ((k /= m) ¥imp Finite(Un(k)))) -- -- Such a counterexample $m$ cannot be $0$, because $Un(0) = 0$, which is finite. -- Consequently, the union set of $m$ can be decomposed as the -- disjoint union $Un(m) = arb(m) + Un(m-{arb(m)})$. -- m-->T109 ==> Stat3: (Un(0) = 0) & ((m /= 0) ¥imp (Un(m) = (arb(m) + Un(m - {arb(m)})))) T188 ==> Stat4: Finite(0) Suppose ==> Stat5: m = 0 EQUAL(Stat5,Stat3,Stat4) ==> Stat6: Finite(Un(m)) (Stat2,Stat6)Discharge ==> Stat7: m /= 0 -- -- Since $arb(m)$ belongs to $m$, it is finite; moreover, by the minimality of $m$, -- $Un(m - {arb(m)})$ is also finite. -- (Stat3,Stat7,Stat2)ELEM ==> Stat8: (Un(m) = (arb(m) + Un(m - {arb(m)}))) & (arb(m) in s) & ((m - {arb(m)}) ¥incin m) & ((m - {arb(m)}) /= m) (arb(m))-->Stat1(Stat8) ==> Stat9: Finite(arb(m)) (Stat2)ELEM ==> Stat10: (FORALL k ¥incin m | ((k /= m) ¥imp Finite(Un(k)))) (m - {arb(m)})-->Stat10 ==> Stat11: Finite(Un(m - {arb(m)})) (arb(m),Un(m - {arb(m)}))-->T236(Stat9,Stat11) ==> Stat12: Finite(arb(m) + Un(m - {arb(m)})) -- -- This implies that $Un(m)$ is finite, giving a contradiction which proves -- the desired conclusion. -- (Stat8,Stat12,Stat2)Discharge ==> QED -- Theorem 239: [Finite subsets of $Un(S)$ where $S$ is a nonvoid inclusion-chain] ((S /= 0) & (FORALL u in S, v in S | (u incs v) or (v incs u)) & Finite(Y) & (Un(S) incs Y)) ¥imp (EXISTS z in S | z incs Y). Proof: Suppose_not(s0,y1) ==> Stat1: (FORALL u in s0, v in s0 | (u incs v) or (v incs u)) & Finite(y1) & (Un(s0) incs y1) & (s0 /= 0) & (not(EXISTS z in s0 | z incs y1)) -- -- Arguing by contradiction, let $s0,y0$ be a counterexample, so that -- $s0$ is a nonvoid inclusion-chain and $y0$ is a finite subset of -- $Un(s0)$ which is not included in any element of $s0$. -- Finite induction enables us to assume that $y0$ is -- inclusion-minimal; i.e., $y0$ has no strict subset $k$ -- which is not included in some $z in s0$. -- APPLY(m1_thryvar:y0) finite_induction(n->y1,P(y)->(not(EXISTS z in s0 | z incs y))) ==> Stat2: (not(EXISTS z in s0 | z incs y0)) & Stat3: (FORALL k ¥incin y0 | ((k /= y0) ¥imp (not(not(EXISTS z in s0 | z incs k))))) & (y0 ¥incin y1) -- -- We readily exclude the equality $y0 = 0$ because, if it held, then -- we would have $arb(s0) in s0$ and $arb(s0) incs y0$, which -- conflicts with Stat4 Hence $arb(y0) in y0$. -- Observe that $arb(y0) in z0$ holds for some -- $z0 in s0$ (for, we have supposed $Un(s0) incs y0$); moreover, -- $z1 incs y0 - {arb(y0)}$ holds for some $z1 in s0$, in view of -- the supposed minimality of $y0$ in the counterexample. Both of -- $z0,z1$ belong to $s0$, and therefore either one must include -- the other; it is plain that the larger owns $arb(y0)$ as an -- element and includes $y0 - {arb(y0)}$ as one of its subsets, but -- then it includes the entire $y0$, which leads us to the sought -- contradiction. -- (arb(s0))-->Stat2(Stat1,Stat1) ==> Stat5: y0 /= 0 (Stat1,Stat2,Stat5)ELEM ==> arb(y0) in Un(s0) Use_def(Un)(Stat6*) ==> Stat7: arb(y0) in {u: v in s0, u in v} (z0,u0)-->Stat7(Stat7*) ==> (z0 in s0) & (arb(y0) in z0) (Stat5,Stat5)ELEM ==> (y0 incs (y0 - {arb(y0)})) & (y0 /= y0 - {arb(y0)}) (y0 - {arb(y0)})-->Stat3 ==> Stat8: (EXISTS z in s0 | z incs (y0 - {arb(y0)})) z1-->Stat8(Stat8*) ==> (z1 in s0) & (z1 incs (y0 - {arb(y0)})) (z0,z1)-->Stat1(Stat7) ==> (z0 incs z1) or (z1 incs z0) z0-->Stat2(Stat7*) ==> Stat9: z1 incs z0 z1-->Stat2(Stat7*) ==> false Discharge ==> QED -- -- ======================================================================================= -- -- Next we prove a variant Theorem 236 which states that the union of two sets is finite -- if and only if their arithmetic sum is finite. -- Theorem 240: [An arithmetic sum is finite if its two terms are finite] Finite(N ¥PLUS M) ¥eq Finite(N + M). Proof: Suppose_not(n,m) ==> Stat1: not(Finite(n ¥PLUS m) ¥eq Finite(n + m)) -- -- For suppose that $n$, $m$ give a counterexample. By Theorem 193 and Theorem 236 our assertion -- reduces to the pair of conditions $Finite(n) ¥eq Finite({[x,0]: x in n})$ and $Finite(m) ¥eq Finite({[x,1]: x in m})$. -- Use_def(¥PLUS) ==> Finite(n ¥PLUS m) ¥eq Finite(#({[x,0]: x in n} + {[x,1]: x in m})) ({[x,0]: x in n} + {[x,1]: x in m})-->T193 ==> Finite(#({[x,0]: x in n} + {[x,1]: x in m})) ¥eq (Finite({[x,0]: x in n} + {[x,1]: x in m})) ({[x,0]: x in n},{[x,1]: x in m})-->T236 ==> Finite({[x,0]: x in n} + {[x,1]: x in m}) ¥eq (Finite({[x,0]: x in n}) & Finite({[x,1]: x in m})) (n,m)-->T236(Stat2*) ==> Stat2: Finite(n + m) ¥eq (Finite(n) & Finite(m)) (Stat1*)ELEM ==> Stat3: not((Finite(n) ¥eq Finite({[x,0]: x in n})) & (Finite(m) ¥eq Finite({[x,1]: x in m}))) Loc_def ==> f = {[x,car(x)]: x in {[v,0]: v in n}} -- -- But $n$ and ${[x,0]: x in n}$ are plainly in 1-1 correspondence, and similarly for m. -- APPLY(x9_thryvar:a,y9_thryvar:b) fcn_symbol(f(x)->car(x),g->f,s->{[x,0]: x in n}) ==> Stat4: Svm(f) & (domain(f) = {[x,0]: x in n}) & (range(f) = {car(x): x in {[v,0]: v in n}}) & Stat5: (((a in {[x,0]: x in n}) & (b in {[y,0]: y in n}) & ((car(a) = car(b)) & (a /= b))) or one_1_map(f)) (aa,bb)--> Stat5(Stat4*) ==> Stat6: ((a = [aa,0]) & (b = [bb,0]) & (car(a) = car(b)) & (a /= b)) or one_1_map(f) (Stat6)ELEM ==> Stat7: one_1_map(f) Loc_def ==> g = {[x,car(x)]: x in {[x,1]: x in m}} APPLY(x9_thryvar:c,y9_thryvar:d) fcn_symbol(f(x)->car(x),g->g,s->{[x,1]: x in m}) ==> Stat8: Svm(g) & (domain(g) = {[x,1]: x in m}) & (range(g) = {car(x): x in {[v,1]: v in m}}) & Stat9: (((c in {[x,1]: x in m}) & (d in {[y,1]: y in m}) & (car(c) = car(d)) & (c /= d)) or one_1_map(g)) (cc,dd)--> Stat9(Stat8*) ==> Stat10: ((c = [cc,1]) & (d = [dd,1]) & (car(c) = car(d)) & (c /= d)) or one_1_map(g) (Stat10)ELEM ==> Stat11: one_1_map(g) SIMPLF ==> {car(x): x in {[v,0]: v in n}} = {car([v,0]): v in n} Set_monot ==> {car([v,0]): v in n} = {v: v in n} SIMPLF ==> {v: v in n} = n ELEM ==> Stat12: range(f) = n SIMPLF ==> {car(x): x in {[v,1]: v in m}} = {car([v,1]): v in m} Set_monot ==> {car([v,1]): v in m} = {v: v in m} SIMPLF(Stat13) ==> Stat13: {v: v in m} = m ELEM ==> range(g) = m f-->T191(Stat7*) ==> Stat14: Finite(range(f)) ¥eq Finite(domain(f)) -- -- From which our assertion is obvious. -- EQUAL(Stat4,Stat12,Stat14) ==> Stat15: Finite(n) ¥eq Finite({[x,0]: x in n}) g-->T191(Stat11*) ==> Finite(range(g)) ¥eq Finite(domain(g)) EQUAL(Stat8) ==> Stat16: Finite(m) ¥eq Finite({[x,1]: x in m}) (Stat3,Stat15,Stat16)Discharge ==> QED -- -- It follows as a corollary of the preceding theorem that the arithmetic sum of two sets is finite -- if and only if both of the sets are finite. -- Theorem 241: [An arithmetic sum is finite if and only if both its terms are finite] (Finite(N) & Finite(M)) ¥eq Finite(N ¥PLUS M). Proof: Suppose_not(n,m) ==> not((Finite(n) & Finite(m)) ¥eq Finite(n ¥PLUS m)) (n,m)-->T240 ==> Finite(n ¥PLUS m) ¥eq Finite(n + m) (n,m)-->T236 ==> false; Discharge ==> QED -- Theorem 242: [acyclicity of the closure of membership] X notin Ult_membs(X). Proof: Suppose_not(x) ==> AUTO APPLY(mt2_thryvar:m) transfinite_member_induction(n->x,P(x)->(x in Ult_membs(x))) ==> Stat1: (FORALL k | (m in Ult_membs(m)) & (m in Ult_membs({x})) & ((k in m) ¥imp (not (k in Ult_membs(k))))) 0-->Stat1(Stat1*) ==> Stat2: m in Ult_membs(m) m-->T15(Stat1,Stat1*) ==> Ult_membs(m) = m + {v: k in m, v in Ult_membs(k)} (Stat2*)ELEM ==> Stat3: m in {v: k in m, v in Ult_membs(k)} (k,v)-->Stat3(Stat3*) ==> Stat4: (k in m) & (m in Ult_membs(k)) (m,k)-->T22(Stat4*) ==> Ult_membs(m) ¥incin Ult_membs(k) Use_def(Ult_membs)(Stat4*) ==> Ult_membs(m) = (m + {y: u in {Ult_membs(x): x in m}, y in u}) (Stat4*)ELEM ==> Stat5: k in Ult_membs(k) k-->Stat1(Stat4,Stat5*) ==> false; Discharge ==> QED -- --Theorem OM: [one-one-ness of $Ult_membs$] (Ult_membs(X) = Ult_membs(Y)) ¥imp (X = Y). Proof: --Suppose_not(x,y) ==> AUTO --Tsomehow ==> false; Discharge ==> QED -- -- Theorem 243: [acyclicity of the closure of membership] ((X in Ult_membs({Y})) & (Y in Ult_membs({X}))) ¥imp (X = Y). Proof: Suppose_not(x,y) ==> AUTO -- -- (i) Suppose_not. Then $x /= y$. By Theorem 18, -- $Ult_membs({y}) = {y} + Ult_membs(y)$, -- so $x in Ult_membs(y)$, and similarly $y in Ult_membs(x)$. -- y-->T18 ==> Stat1: (x /= y) & (x in Ult_membs({y})) & (Ult_membs({y}) = ({y} + Ult_membs(y))) (Stat1*)ELEM ==> Stat2: x in Ult_membs(y) x-->T18 ==> Stat3: (y /= x) & (y in Ult_membs({x})) & (Ult_membs({x}) = ({x} + Ult_membs(x))) (Stat3*)ELEM ==> Stat4: y in Ult_membs(x) -- -- (ii) By T22 $Ult_membs(y) ¥incin Ult_membs(x)$, so $x in Ult_membs(x)$, -- and everything comes down to showing that this last is impossible. -- (y,x)-->T22(Stat4,Stat2*) ==> Stat5: x in Ult_membs(x) -- -- (iii) Supposing the contrary, consider -- $t = {a in Ult_membs({x}) | a in Ult_membs(a)}$. -- Plainly $x in t$ so $t$ is not null and we can consider -- (the rabbit!) $u = arb(t)$. Plainly $u in Ult_membs(u)$ and -- $u in Ult_membs({x})$. By Theorem 15 -- $Ult_membs(u) = u + {v: w in u, v in Ult_membs(w)}$, -- and since $u in u$ is impossible there must exist a $w in u$ -- such that $u in Ult_membs(w)$. But then $w in Ult_membs(w)$, -- and since $w in Ult_membs(x)$ this contradicts the minimality -- of $u$ (as a member of $t$) and proves our theorem. -- x-->T242(Stat5*) ==> false; Discharge ==> QED -- Theorem 244: [existence of an $in$-maximal set in any finite set] (EXISTS v | Finite(F) ¥imp (((F = 0) or (v in F)) & ({y in (F-{v}) | v in Ult_membs({y})} = 0))). Proof: Suppose_not(f0) ==> Stat1: not(EXISTS v | Finite(f0) ¥imp (((f0 = 0) or (v in f0)) & ({y in (f0-{v}) | v in Ult_membs({y})} = 0))) Suppose ==> not(Finite(f0)) 0-->Stat1(Stat1*) ==> false; Discharge ==> Finite(f0) APPLY(m1_thryvar:f) finite_induction(n->f0,P(x)->(not(EXISTS v | Finite(x) ¥imp (((x = 0) or (v in x)) & ({y in (x-{v}) | v in Ult_membs({y})} = 0))))) ==> Stat2: (not(EXISTS v | Finite(f) ¥imp (((f = 0) or (v in f)) & ({y in (f-{v}) | v in Ult_membs({y})} = 0)))) & Stat3: (FORALL k ¥incin f | (k /= f) ¥imp (not(not(EXISTS v | Finite(k) ¥imp (((k = 0) or (v in k)) & ({y in (k-{v}) | v in Ult_membs({y})} = 0)))))) Suppose ==> (not(Finite(f))) or (f = 0) 0-->Stat2(Stat2*) ==> Stat4: ((f-{0}) = 0) & ({y in (f-{0}) | 0 in Ult_membs({y})} /= 0) EQUAL(Stat4*) ==> Stat5: {y in 0 | 0 in Ult_membs({y})} /= 0 y0-->Stat5(Stat5*) ==> false; Discharge ==> Stat6: Finite(f) & (f /= 0) (f-{arb(f)})-->Stat3(Stat6) ==> Stat7: (EXISTS v | Finite(f-{arb(f)}) ¥imp ((((f-{arb(f)}) = 0) or (v in (f-{arb(f)}))) & ({y in ((f-{arb(f)})-{v}) | v in Ult_membs({y})} = 0))) (f,f-{arb(f)})-->T189(Stat6*) ==> Finite(f-{arb(f)}) v0-->Stat7(Stat7*) ==> Stat8: (((f-{arb(f)}) = 0) or (v0 in (f-{arb(f)}))) & ({y in ((f-{arb(f)})-{v0}) | v0 in Ult_membs({y})} = 0) Suppose ==> Stat9: (f-{arb(f)}) = 0 (Stat6,Stat9)ELEM ==> Stat10: f = {arb(f)} (arb(f))-->Stat2(Stat6,Stat10*) ==> Stat11: {y in (f-{arb(f)}) | arb(f) in Ult_membs({y})} /= 0 y1-->Stat11(Stat9*) ==> false; Discharge ==> Stat12: (f-{arb(f)}) /= 0 v0-->Stat2(Stat6,Stat8,Stat12*) ==> Stat13: {y in (f-{v0}) | v0 in Ult_membs({y})} /= 0 v1-->Stat13(Stat13*) ==> Stat14: (v1 in (f-{v0})) & (v0 in Ult_membs({v1})) v1-->T18(Stat14*) ==> Stat15: v0 in Ult_membs(v1) Suppose ==> v1 /= arb(f) (Stat8*)ELEM ==> (v1 in ((f-{arb(f)})-{v0})) & Stat16: (v1 notin {y in ((f-{arb(f)})-{v0}) | v0 in Ult_membs({y})}) v1-->Stat16(Stat14*) ==> false; Discharge ==> Stat17: v1 = arb(f) v1-->Stat2(Stat6,Stat12,Stat17) ==> Stat18: {y in (f-{v1}) | v1 in Ult_membs({y})} /= 0 v2-->Stat18(Stat18*) ==> Stat19: (v2 in (f-{v1})) & (v1 in Ult_membs({v2})) (v1,{v2})-->T22(Stat19,Stat15*) ==> v0 in Ult_membs({v2}) (Stat8*)ELEM ==> Stat20: v2 notin {y in ((f-{arb(f)})-{v0}) | v0 in Ult_membs({y})} ()-->Stat20(Stat14*) ==> (v2 = v0) & (v0 /= v1) EQUAL(Stat14*) ==> (v0 in Ult_membs({v1})) & (v1 in Ult_membs({v0})) (v0,v1)-->T243(Stat20*) ==> false; Discharge ==> QED -- -- The next two results, both trivial corollaries of Theorem 139, -- state that an arithmetic product is zero if either of its factors is zero. -- Theorem 245: [Anything times 0 is 0] (N ¥TIMES 0) = 0. Proof: Suppose_not(n) ==> (n ¥TIMES 0) /= 0 Use_def(¥TIMES) ==> (n ¥TIMES 0) = #(n ¥PROD 0) n-->T139 ==> (n ¥PROD 0) = 0 EQUAL ==> (n ¥TIMES 0) = #0 0-->T162 ==> false; Discharge ==> QED -- Theorem 246: [0 times anything is 0] (0 ¥TIMES N) = 0. Proof: Suppose_not(n) ==> (0 ¥TIMES n) /= 0 Use_def(¥TIMES) ==> (0 ¥TIMES n) = #(0 ¥PROD n) n-->T139 ==> (0 ¥PROD n) = 0 EQUAL ==> (0 ¥TIMES n) = #0 0-->T162 ==> false; Discharge ==> QED -- -- It is also trivial to show that arithmetic addition of $0$ to any $n$ leaves n unchanged. -- Theorem 247: [0 is a right additive identity] (#N ¥PLUS 0) = #N. Proof: Suppose_not(n) ==> (#n ¥PLUS 0) /= #n Use_def(¥PLUS) ==> (#n ¥PLUS 0) = #({[x,0]: x in #n} + {[x,1]: x in 0}) Set_monot ==> {[x,1]: x in 0} = {x: x in 0} SIMPLF ==> {[x,1]: x in 0} = 0 ELEM ==> {[x,0]: x in #n} + {[x,1]: x in 0} = {[x,0]: x in #n} EQUAL ==> (#n ¥PLUS 0) = #{[x,0]: x in #n} (0,#n)-->T218 ==> #{[x,0]: x in #n} = ##n n-->T166 ==> false; Discharge ==> QED -- -- The two following results simply translate Theorem 223 into -- a statement concerning integer multiplication. -- Theorem 248: [1 is a left multiplicative identity] (1 ¥TIMES N) = #N. Proof: Suppose_not(n) ==> (1 ¥TIMES n) /= #n Use_def(¥TIMES) ==> (1 ¥TIMES n) = #(1 ¥PROD n) Use_def(1) ==> 1 = next(0) Use_def(next) ==> 1 = 0 + {0} ELEM ==> 1 = {0} EQUAL ==> #n /= #({0} ¥PROD n) (0,n)-->T223 ==> false; Discharge ==> QED -- Theorem 249: [1 is a right multiplicative identity] (N ¥TIMES 1) = #N. Proof: Suppose_not(n) ==> (n ¥TIMES 1) /= #n Use_def(¥TIMES) ==> (n ¥TIMES 1) = #(n ¥PROD 1) Use_def(1) ==> 1 = next(0) Use_def(next) ==> 1 = 0 + {0} ELEM ==> 1 = {0} EQUAL ==> #n /= #(n ¥PROD {0}) (n,0)-->T224 ==> false; Discharge ==> QED -- -- Next we state and prove a result valid not only in integer but in cardinal arithmetic: -- the product of $n$ and $m$ is no smaller than $n$ if the cardinal $m$ is non-zero. -- Theorem 250: [Monotonicity of multiplication] (M /= 0) ¥imp (#(N ¥PROD M) incs #N). Proof: Suppose_not(m,n) ==> Stat1: (m /= 0) & (not #(n ¥PROD m) incs #n) -- -- For suppose that m and n are a counterexample to our assertion, and let d belong to m. -- Consider the single-valued map f defined by f = {[x,car(x)]: x in {[y,d]: y in n}}, -- whose range is easily seen to be n, while its domain is plainly a subset of n ¥PROD m. -- d-->Stat1 ==> (d in m) & ({d} ¥incin m) Loc_def ==> f = {[x,car(x)]: x in {[y,d]: y in n}} APPLY() fcn_symbol(f(x)->car(x),g->f,s->{[y,d]: y in n}) ==> Svm(f) & (domain(f) = {[y,d]: y in n}) & (range(f) = {car(x): x in {[y,d]: y in n}}) SIMPLF ==> range(f) = {car([y,d]): y in n} Set_monot ==> {car([y,d]): y in n} = {y: y in n} ELEM ==> range(f) = {y: y in n} SIMPLF ==> range(f) = n EQUAL ==> Stat2: #range(f) = #n SIMPLF ==> {[y,d]: y in n} = {[y,z]: y in n, z in {d}} Set_monot ==> {[y,z]: y in n, z in {d}} ¥incin {[y,z]: y in n, z in m} Use_def(¥PROD) ==> domain(f) ¥incin (n ¥PROD m) -- -- It follows by Theorem 170 and Theorem 171 that the cardinality of the domain of $f$ is no more than that of -- $n ¥PROD m$, while the cardinality of $range(f)$ is no more than that of $domain(f)$. -- (domain(f),n ¥PROD m)-->T170 ==> Stat3: #domain(f) ¥incin #(n ¥PROD m) (f)-->T171 ==> Stat4: #range(f) ¥incin #domain(f) (Stat1,Stat3,Stat4,Stat2*)Discharge ==> QED -- -- The following elementary lemma prepares for the proof of the -- commutative law for cardinal addition. -- Theorem 251: [Distributivity lemma] (A /= B) ¥imp (N ¥PLUS M = #((N ¥PROD {A}) + (M ¥PROD {B}))). Proof: Suppose_not(a,b,n,m) ==> (a /= b) & (n ¥PLUS m /= #((n ¥PROD {a}) + (m ¥PROD {b}))) -- -- For supposing the contrary we can derive a contradiction -- using Theorem 221, Theorem 143, Theorem 220, Theorem 221, and Theorem 224 in the following order: -- (n,m)-->T221 ==> n ¥PLUS m = #n ¥PLUS #m ({a},{b},n,m)-->T143 ==> (n ¥PROD {a}) * (m ¥PROD {b}) = 0 (n ¥PROD {a},m ¥PROD {b})-->T220 ==> (n ¥PROD {a}) ¥PLUS (m ¥PROD {b}) = #((n ¥PROD {a}) + (m ¥PROD {b})) (n ¥PROD {a},m ¥PROD {b})-->T221 ==> (n ¥PROD {a}) ¥PLUS (m ¥PROD {b}) = #(n ¥PROD {a}) ¥PLUS #(m ¥PROD {b}) ELEM ==> #(n ¥PROD {a}) ¥PLUS #(m ¥PROD {b}) = #((n ¥PROD {a}) + (m ¥PROD {b})) (n,a)-->T224 ==> #(n ¥PROD {a}) = #n (m,b)-->T224 ==> #(m ¥PROD {b}) = #m EQUAL ==> #n ¥PLUS #m = #((n ¥PROD {a}) + (m ¥PROD {b})) Discharge ==> QED -- -- Next we prove the commutative laws for cardinal arithmetic. -- For addition the proof results almost immediately from Theorem 251. -- Theorem 252: [Commutative law for addition] (N ¥PLUS M) = (M ¥PLUS N). Proof: Suppose_not(n,m) ==> (n ¥PLUS m) /= (m ¥PLUS n) T212 ==> 1 /= 0 (0,1,n,m)-->T251 ==> (n ¥PLUS m) = #((n ¥PROD {0}) + (m ¥PROD {1})) (1,0,m,n)-->T251 ==> (m ¥PLUS n) = #((m ¥PROD {1}) + (n ¥PROD {0})) ELEM ==> (n ¥PROD {0}) + (m ¥PROD {1}) = (m ¥PROD {1}) + (n ¥PROD {0}) EQUAL ==> false; Discharge ==> QED -- -- The commutative law for cardinal multiplication is -- an equally elementary consequence of Theorem 251. -- Theorem 253: [Commutative law for multiplication] N ¥TIMES M = M ¥TIMES N. Proof: Suppose_not(n,m) ==> n ¥TIMES m /= m ¥TIMES n Use_def(¥TIMES) ==> #(n ¥PROD m) /= #(m ¥PROD n) (n,m)-->T161 ==> false; Discharge ==> QED -- -- We can now slightly generalize Theorem 247 by stating that 0 is a bilateral identity. -- Theorem 254: [0 is bilateral additive identity] (X in Za) ¥imp (((X ¥PLUS 0) = X) & ((0 ¥PLUS X) = X)). Proof+: Suppose_not(x) ==> AUTO Suppose ==> (x ¥PLUS 0) /= x x-->T164 ==> x = #x EQUAL ==> ((#x) ¥PLUS 0) /= #x x-->T247 ==> false; Discharge ==> ((x ¥PLUS 0) = x) & ((0 ¥PLUS x) /= x) (x,0)-->T252 ==> (x ¥PLUS 0) = (0 ¥PLUS x) Discharge ==> QED -- -- The following lemma states several facts which can be regarded as modified -- 'distributive laws' for the Cartesian product. -- Theorem 255: [Rules for intersection and union of Cartesian products] ((A ¥PROD X) * (B ¥PROD X) = (A * B) ¥PROD X) & ((A ¥PROD X) + (B ¥PROD X) = (A + B) ¥PROD X) & (((X ¥PROD A) * (X ¥PROD B)) = X ¥PROD (A * B)) & (((X ¥PROD A) + (X ¥PROD B)) = X ¥PROD (A + B)). Proof: -- -- For suppose the contrary, and let a, b, and c be a counterexample to one of the four clauses of our theorem. -- Suppose_not(a,c,b) ==> ((a ¥PROD c) * (b ¥PROD c) /= ((a * b) ¥PROD c) or (a ¥PROD c) + (b ¥PROD c) /= ((a + b) ¥PROD c) or ((c ¥PROD a) * (c ¥PROD b)) /= (c ¥PROD (a * b)) or ((c ¥PROD a) + (c ¥PROD b)) /= c ¥PROD (a + b)) -- -- Use of the definition of the cartesian product and of its evident additivity in both its arguments -- tells us that neither the second or the fourth clause of our theorem can be violated. -- Suppose ==> ((a ¥PROD c) + (b ¥PROD c)) /= ((a + b) ¥PROD c) Use_def(¥PROD) ==> {[x,y]: x in a, y in c} + {[x,y]: x in b, y in c} /= {[x,y]: x in a + b, y in c} Set_monot ==> {[x,y]: x in a, y in c} + {[x,y]: x in b, y in c} = {[x,y]: x in a + b, y in c} Discharge ==> (a ¥PROD c) + (b ¥PROD c) = ((a + b) ¥PROD c) Suppose ==> ((c ¥PROD a) + (c ¥PROD b)) /= c ¥PROD (a + b) Use_def(¥PROD) ==> {[x,y]: x in c, y in a} + {[x,y]: x in c, y in b} /= {[x,y]: x in c, y in a + b} Set_monot ==> {[x,y]: x in c, y in a} + {[x,y]: x in c, y in b} = {[x,y]: x in c, y in a + b} Discharge ==> ((c ¥PROD a) + (c ¥PROD b)) = c ¥PROD (a + b) -- -- Next suppose that the second clause of the theorem is violated. Using the definition of Cartesian product, -- we see that there must exist an element $d$ which belongs to one of the two sets -- -- ${[x,y]: x in a, y in c} * {[x,y]: x in b, y in c}$ and ${[x,y]: x in a * b, y in c}$ -- -- but not the other. But if $d$ is in the first of these two sets but not the second we are led to the -- elementary contradiction seen below. -- Suppose ==> (a ¥PROD c) * (b ¥PROD c) /= (a * b) ¥PROD c Use_def(¥PROD) ==> Stat1: {[x,y]: x in a, y in c} * {[x,y]: x in b, y in c} /= {[x,y]: x in a * b, y in c} d-->Stat1 ==> ((not((d in {[x,y]: x in a, y in c}) & (d in {[x,y]: x in b, y in c})) & (d in {[x,y]: x in a * b, y in c})) or ((d in {[x,y]: x in a, y in c}) & (d in {[x,y]: x in b, y in c}) & (d notin {[x,y]: x in a * b, y in c}))) Suppose ==> Stat2: ((d in {[x,y]: x in a, y in c}) & (d in {[x,y]: x in b, y in c})) & Stat3: (d notin {[x,y]: x in a * b, y in c}) (a1,c1,b1,c2)-->Stat2 ==> Stat4: (d = [a1,c1]) & (a1 in a) & (c1 in c) & (d = [b1,c2]) & (b1 in b) & (c2 in c) (Stat4)ELEM ==> a1 in a * b (a1,c1)-->Stat3 ==> not(d = [a1,c1]) & (a1 in a * b) & (c1 in c) -- -- Thus $d$ must be in the second of the two sets displayed above, but not the first. However, this assertion -- is in evident contradiction with the monotone dependence of the cartesian product on its arguments. -- This shows that it is only the fourth clause of our theorem that could be false. -- Discharge ==> not((d in {[x,y]: x in a, y in c}) & (d in {[x,y]: x in b, y in c})) & (d in {[x,y]: x in a * b, y in c}) Set_monot ==> {[x,y]: x in a * b, y in c} ¥incin {[x,y]: x in a, y in c} Set_monot ==> {[x,y]: x in a * b, y in c} ¥incin {[x,y]: x in b, y in c} Discharge ==> ((c ¥PROD a) * (c ¥PROD b)) /= (c ¥PROD (a * b)) -- -- But an argument almost identical to that just given can be used to rule out this last possibility. -- For, using the definition of Cartesian product, -- we see that there must exist an element $d2$ which belongs to one of the two sets seen just below, but not the other. -- Use_def(¥PROD) ==> Stat5: {[x,y]: x in c, y in a} * {[x,y]: x in c, y in b} /= {[x,y]: x in c, y in a * b} d2-->Stat5 ==> (((not((d2 in {[x,y]: x in c, y in a}) & (d2 in {[x,y]: x in c, y in b}))) & (d2 in {[x,y]: x in c, y in a * b})) or ((d2 in {[x,y]: x in c, y in a}) & (d2 in {[x,y]: x in c, y in b}) & (d2 notin {[x,y]: x in c, y in a * b}))) -- -- If $d2$ is in the first of these two sets but not the second we are led to the -- elementary contradiction seen below. -- Suppose ==> Stat6: (d2 in {[x,y]: x in c, y in a}) & (d2 in {[x,y]: x in c, y in b}) & Stat7: (d2 notin {[x,y]: x in c, y in a * b}) (a21,c21,b21,c22)-->Stat6 ==> (d2 = [a21,c21]) & (a21 in c) & (c21 in a) & (d2 = [b21,c22]) & (b21 in c) & (c22 in b) ELEM ==> c21 in a * b (a21,c21)-->Stat7 ==> (not(d2 = [a21,c21])) & (a21 in c) & (c21 in a * b) -- -- Thus $d2$ must be in the second of the two sets seen just above, but not the first. However, this assertion -- is in contradiction with the monotone dependence of the cartesian product on its arguments. -- This shows that none of the clauses of our theorem can be false, which is what we wanted to prove. -- Discharge ==> ((not((d2 in {[x,y]: x in c, y in a}) & (d2 in {[x,y]: x in c, y in b}))) & (d2 in {[x,y]: x in c, y in a * b})) Set_monot ==> {[x,y]: x in c, y in a * b} ¥incin {[x,y]: x in c, y in a} Set_monot ==> {[x,y]: x in c, y in a * b} ¥incin {[x,y]: x in c, y in b} Discharge ==> QED -- -- The following 'monotonicity' consequence of Theorem 255 is often useful. -- Theorem 256: [Cartesian product monotonicity] ((A ¥incin B) & (C ¥incin D)) ¥imp ((A ¥PROD C) ¥incin (B ¥PROD D)). Proof: Suppose_not(a,b,c,d) ==> (a ¥incin b) & (c ¥incin d) & (not ((a ¥PROD c) ¥incin (b ¥PROD d))) -- -- For the proof we have only to use Theore 203 twice and the use the transitivity of inclusion. -- (c,a,d)-->T255 ==> (a ¥PROD c) * (a ¥PROD d) = (a ¥PROD (c * d)) (a,d,b)-->T255 ==> (a ¥PROD d) * (b ¥PROD d) = ((a * b) ¥PROD d) ELEM ==> (c * d = c) & (a * b = a) EQUAL ==> ((a ¥PROD c) * (a ¥PROD d) = (a ¥PROD c)) & ((a ¥PROD d) * (b ¥PROD d) = (a ¥PROD d)) Discharge ==> QED -- -- Sometimes one needs the following generalization of Theorem 255. -- Theorem 257: [Intersection of Cartesian products] ((A ¥PROD C) * (B ¥PROD D) = (A * B) ¥PROD (C * D)). Proof: Suppose_not(a,c,b,d) ==> (a ¥PROD c) * (b ¥PROD d) /= (a * b) ¥PROD (c * d) -- -- For suppose that $a$, $c$, $b$, $d$ form a counterexample to our assertion. -- (a * b,a,c * d,c)-->T256 ==> ((a * b) ¥PROD (c * d)) ¥incin (a ¥PROD c) (a * b,b,c * d,d)-->T256 ==>((a * b) ¥PROD (c * d)) ¥incin (b ¥PROD d) ELEM ==> Stat1: not(((a * b) ¥PROD (c * d)) incs ((a ¥PROD c) * (b ¥PROD d))) u-->Stat1 ==> (u in (a ¥PROD c)) & (u in (b ¥PROD d)) & (u notin ((a * b) ¥PROD (c * d))) Use_def(¥PROD) ==> Stat2: (u in {[x,y]: x in a,y in c}) & (u in {[x,y]: x in b,y in d}) & Stat3: (u notin {[x,y]: x in a * b,y in c * d}) (x1,y1,x2,y2)-->Stat2 ==> (x1 in a) & (y1 in c) & (u = [x1,y1]) & (x2 in b) & (y2 in d) & (u = [x2,y2]) ELEM ==> (x1 in b) & (y1 in d) (x1,y1)-->Stat3 ==> false; Discharge ==> QED -- -- Next we prove the associative law, first for cardinal addition, then for cardinal multiplication. -- Theorem 258: [Associativity of arithmetic addition] N ¥PLUS (M ¥PLUS K) = (N ¥PLUS M) ¥PLUS K. Proof: Suppose_not(n,m,k) ==> n ¥PLUS (m ¥PLUS k) /= (n ¥PLUS m) ¥PLUS k -- -- For let $n$, $m$, and $k$ be a counterexample to our assertion. It is clear that the sets -- $n ¥PROD {0}$, $m ¥PROD {1}$, and $k ¥PROD {2}$ are all disjoint, so that by Theorem 228 the sums -- $((m ¥PROD {1}) ¥PLUS (k ¥PROD {2})) ¥PLUS (n ¥PROD {0})$ and $((n ¥PROD {0}) + (m ¥PROD {1})) + (k ¥PROD {2})$ -- can both be written as the cardinality of their union and so are equal. -- T212 ==> Stat1: (1 /= 0) & (2 /= 0) & (1 /= 2) ELEM ==> Stat2: ({1} * {0} = 0) & ({2} * {0} = 0) & ({1} * {2} = 0) ({0},{1},n,m)-->T143 ==> (n ¥PROD {0}) * (m ¥PROD {1}) = 0 ({1},{2},m,k)-->T143 ==> (m ¥PROD {1}) * (k ¥PROD {2}) = 0 ({0},{2},n,k)-->T143 ==> (n ¥PROD {0}) * (k ¥PROD {2}) = 0 (n ¥PROD {0},m ¥PROD {1},k ¥PROD {2})-->T228 ==> ((n ¥PROD {0}) ¥PLUS (m ¥PROD {1})) ¥PLUS (k ¥PROD {2}) = #(((n ¥PROD {0}) + (m ¥PROD {1})) + (k ¥PROD {2})) (m ¥PROD {1},k ¥PROD {2},n ¥PROD {0})-->T228 ==> ((m ¥PROD {1}) ¥PLUS (k ¥PROD {2})) ¥PLUS (n ¥PROD {0}) = #(((m ¥PROD {1}) + (k ¥PROD {2})) + (n ¥PROD {0})) (Stat1,Stat2*)ELEM ==> ((m ¥PROD {1}) + (k ¥PROD {2})) + (n ¥PROD {0}) = ((n ¥PROD {0}) + (m ¥PROD {1})) + (k ¥PROD {2}) EQUAL ==> #(((m ¥PROD {1}) + (k ¥PROD {2})) + (n ¥PROD {0})) = #(((n ¥PROD {0}) + (m ¥PROD {1})) + (k ¥PROD {2})) ((m ¥PROD {1}) ¥PLUS (k ¥PROD {2}),n ¥PROD {0})-->T252 ==> ((m ¥PROD {1}) ¥PLUS (k ¥PROD {2})) ¥PLUS (n ¥PROD {0}) = (n ¥PROD {0}) ¥PLUS((m ¥PROD {1}) ¥PLUS (k ¥PROD {2})) ELEM ==> Stat3: ((n ¥PROD {0}) ¥PLUS (m ¥PROD {1})) ¥PLUS (k ¥PROD {2}) = (n ¥PROD {0}) ¥PLUS ((m ¥PROD {1}) ¥PLUS (k ¥PROD {2})) -- -- The cardinalities of the sets $n ¥PROD {0}$ etc. are clearly equal to $#n$, $#m$, and $#k$ respectively, -- and so the inner sums appearing in this last formula can be replaced by sums like $n ¥PLUS m$ etc. -- (n,0)-->T224 ==> #(n ¥PROD {0}) = #n (m,1)-->T224 ==> #(m ¥PROD {1}) = #m (k,2)-->T224 ==> #(k ¥PROD {2}) = #k (n ¥PROD {0},m ¥PROD {1})-->T221 ==> (n ¥PROD {0}) ¥PLUS (m ¥PROD {1}) = (#(n ¥PROD {0}) ¥PLUS (#(m ¥PROD {1}))) EQUAL ==> (n ¥PROD {0}) ¥PLUS (m ¥PROD {1}) = #n ¥PLUS #m (m ¥PROD {1},k ¥PROD {2})-->T221 ==> (m ¥PROD {1}) ¥PLUS (k ¥PROD {2}) = (#(m ¥PROD {1})) ¥PLUS (#(k ¥PROD {2})) EQUAL ==> (m ¥PROD {1}) ¥PLUS (k ¥PROD {2}) = (#m ¥PLUS #k) (n,m)-->T221 ==> #n ¥PLUS #m = n ¥PLUS m (m,k)-->T221 ==> #m ¥PLUS #k = m ¥PLUS k EQUAL ==> (n ¥PLUS m) ¥PLUS (k ¥PROD {2}) = (n ¥PROD {0}) ¥PLUS (m ¥PLUS k) -- -- However, we can replace the sets $k ¥PROD {2}$ and $n ¥PROD {0}$ appearing in this last formula by their cardinalities. -- (n ¥PLUS m,(k ¥PROD {2}))-->T226 ==> (n ¥PLUS m) ¥PLUS (k ¥PROD {2}) = (n ¥PLUS m) ¥PLUS #(k ¥PROD {2}) (n ¥PROD {0},m ¥PLUS k)-->T227 ==> (n ¥PROD {0}) ¥PLUS (m ¥PLUS k) = (#(n ¥PROD {0})) ¥PLUS (m ¥PLUS k) EQUAL ==> (n ¥PLUS m) ¥PLUS #k = #n ¥PLUS (m ¥PLUS k) -- -- And finally can use remove the two cardinality operators appearing in this last formula -- to obtain the assertion of the present theorem. -- (n ¥PLUS m,k)-->T226 ==> (n ¥PLUS m) ¥PLUS k = #n ¥PLUS (m ¥PLUS k) (n,m ¥PLUS k)-->T227 ==> false; Discharge ==> QED -- -- Our next two theorems respectively give the associative law for multiplication and the -- distributive law for multiplication over addition. -- Theorem 259: [Associativity of arithmetic multiplication] N ¥TIMES (M ¥TIMES K) = (N ¥TIMES M) ¥TIMES K. Proof: Suppose_not(n,m,k) ==> n ¥TIMES (m ¥TIMES k) /= (n ¥TIMES m) ¥TIMES k -- -- For suppose that $n$, $m$, and $k$ be a counterexample to the asserted associative law. -- Using the definition of '$¥TIMES$', we can easily see that #$(n ¥PROD (m ¥PROD k))$ -- and $#((n ¥PROD m) ¥PROD k)$ must then be different. -- Use_def(¥TIMES) ==> n ¥TIMES #(m ¥PROD k) /= #(n ¥PROD m) ¥TIMES k Use_def(¥TIMES) ==> #(n ¥PROD #(m ¥PROD k)) /= #(#(n ¥PROD m) ¥PROD k) (n,m ¥PROD k)-->T233 ==> #(n ¥PROD #(m ¥PROD k)) = #(n ¥PROD (m ¥PROD k)) (n ¥PROD m,k)-->T234 ==> #(#(n ¥PROD m) ¥PROD k) = #((n ¥PROD m) ¥PROD k) -- -- But this clearly violates Theorem 160. -- (n,m,k)-->T160 ==> #(n ¥PROD (m ¥PROD k)) = #((n ¥PROD m) ¥PROD k) Discharge ==> QED -- -- The following is the 'right-hand' version of the distributive law for integer multiplication over addition. -- Theorem 260: [Arithmetic distributive law] N ¥TIMES (M ¥PLUS K) = (N ¥TIMES M) ¥PLUS (N ¥TIMES K). Proof: Suppose_not(n,m,k) ==> n ¥TIMES (m ¥PLUS k) /= (n ¥TIMES m) ¥PLUS (n ¥TIMES k) -- -- For supposing the contrary, we can use the definition of '$¥PLUS$' on the left of the resulting inequality -- and of '$¥TIMES$' on the right, and then simplify further, removing superfluous cardinality operators to get -- the final inequality seen just before the next comment below. -- T212 ==> Stat1: 0 /= 1 (m,k)-->T221 ==> (m ¥PLUS k) = (#m ¥PLUS #k) (0,1,m,k)-->T225 ==> (#m ¥PLUS #k) = #((m ¥PROD {0}) + (k ¥PROD {1})) EQUAL ==> n ¥TIMES #((m ¥PROD {0}) + (k ¥PROD {1})) /= (n ¥TIMES m) ¥PLUS (n ¥TIMES k) Use_def(¥TIMES) ==> n ¥TIMES #((m ¥PROD {0}) + (k ¥PROD {1})) /= #(n ¥PROD m) ¥PLUS #(n ¥PROD k) (n,(m ¥PROD {0}) + (k ¥PROD {1}))-->T231 ==> n ¥TIMES ((m ¥PROD {0}) + (k ¥PROD {1})) /= #(n ¥PROD m) ¥PLUS #(n ¥PROD k) (#(n ¥PROD m),n ¥PROD k)-->T226 ==> n ¥TIMES ((m ¥PROD {0}) + (k ¥PROD {1})) /= #(n ¥PROD m) ¥PLUS (n ¥PROD k) (#(n ¥PROD m),n ¥PROD k)-->T252 ==> #(n ¥PROD m) ¥PLUS (n ¥PROD k) = (n ¥PROD k) ¥PLUS #(n ¥PROD m) (n ¥PROD k,n ¥PROD m)-->T226 ==> #(n ¥PROD m) ¥PLUS (n ¥PROD k) = (n ¥PROD k) ¥PLUS (n ¥PROD m) (n ¥PROD m,n ¥PROD k)-->T252 ==> #(n ¥PROD m) ¥PLUS (n ¥PROD k) = (n ¥PROD m) ¥PLUS (n ¥PROD k) Use_def(¥TIMES) ==> #(n ¥PROD ((m ¥PROD {0}) + (k ¥PROD {1}))) /= (n ¥PROD m) ¥PLUS (n ¥PROD k) -- -- The right-hand side of this last inequality can then be rewritten as follows -- using Theorem 225: -- (n ¥PROD m,n ¥PROD k)-->T221 ==> ((n ¥PROD m) ¥PLUS (n ¥PROD k)) = (#(n ¥PROD m) ¥PLUS #(n ¥PROD k)) (0,1,n ¥PROD m,n ¥PROD k)-->T225 ==> (#(n ¥PROD m) ¥PLUS #(n ¥PROD k)) = #(((n ¥PROD m) ¥PROD {0}) + ((n ¥PROD k) ¥PROD {1})) (m ¥PROD {0},n,k ¥PROD {1})-->T255 ==> (n ¥PROD ((m ¥PROD {0}) + (k ¥PROD {1}))) = ((n ¥PROD (m ¥PROD {0})) + (n ¥PROD (k ¥PROD {1}))) EQUAL ==> #((n ¥PROD (m ¥PROD {0})) + (n ¥PROD (k ¥PROD {1}))) /= #(((n ¥PROD m) ¥PROD {0}) + ((n ¥PROD k) ¥PROD {1})) -- -- But the pairs of terms in this last inequality are easily seen to be disjoint: -- ({0},{1},m,k)-->T143(Stat1,Stat1) ==> (m ¥PROD {0}) * (k ¥PROD {1}) = 0 (m ¥PROD {0},n,k ¥PROD {1})-->T255 ==> (n ¥PROD (m ¥PROD {0})) * (n ¥PROD (k ¥PROD {1})) = (n ¥PROD ((m ¥PROD {0}) * (k ¥PROD {1}))) EQUAL ==> (n ¥PROD (m ¥PROD {0})) * (n ¥PROD (k ¥PROD {1})) = (n ¥PROD 0) n-->T139 ==> (n ¥PROD (m ¥PROD {0})) * (n ¥PROD (k ¥PROD {1})) = 0 ({0},{1},n ¥PROD m,n ¥PROD k)-->T143 ==> ((n ¥PROD m) ¥PROD {0}) * ((n ¥PROD k) ¥PROD {1}) = 0 -- -- It now follows using Theorem 222 that the cardinalities of unions seen above -- can be rewritten as arithmetic sums: -- (n ¥PROD (m ¥PROD {0}),n ¥PROD (k ¥PROD {1}))-->T222 ==> #((n ¥PROD (m ¥PROD {0})) + (n ¥PROD (k ¥PROD {1}))) = #(n ¥PROD (m ¥PROD {0})) ¥PLUS #(n ¥PROD (k ¥PROD {1})) ((n ¥PROD m) ¥PROD {0},(n ¥PROD k) ¥PROD {1})-->T222 ==> #(((n ¥PROD m) ¥PROD {0}) + ((n ¥PROD k) ¥PROD {1})) = #((n ¥PROD m) ¥PROD {0}) ¥PLUS #((n ¥PROD k) ¥PROD {1}) ELEM ==> Stat2: #(n ¥PROD (m ¥PROD {0})) ¥PLUS #(n ¥PROD (k ¥PROD {1})) /= #((n ¥PROD m) ¥PROD {0}) ¥PLUS #((n ¥PROD k) ¥PROD {1}) -- -- But this last inequality is easily seen to be impossible: -- (n,m,{0})-->T160 ==> #(n ¥PROD (m ¥PROD {0})) = #((n ¥PROD m) ¥PROD {0}) (n,k,{1})-->T160 ==> #(n ¥PROD (k ¥PROD {1})) = #((n ¥PROD k) ¥PROD {1}) EQUAL(Stat2) ==> false; Discharge ==> QED -- -- Next we show that the product of two finite sets is finite. The proof uses -- the method of finite induction introduced above. -- Theorem 261: [The arithmetic product of two finite sets is finite] (Finite(N) & Finite(M)) ¥imp Finite(N ¥TIMES M). Proof: Suppose_not(n,m) ==> Finite(n) & Finite(m) & (not Finite(n ¥TIMES m)) -- -- For suppose that there exist finite $n$ and $m$ such that $n ¥PROD m$ is infinite. -- By our theory of finite induction, there exists finite $k$ and $mp$ such that $k ¥PROD mp$ is -- infinite, but $j ¥PROD m2$ is finite for every finite m and proper subset $j$ of $k$. -- Use_def(¥TIMES) ==> Finite(n) & Finite(m) & (not Finite(#(n ¥PROD m))) ({[x,y]: x in n & y in m})-->T193 ==> Finite(n) & Finite(m) & (not Finite(n ¥PROD m)) Suppose ==> Stat1: not(EXISTS m | Finite(m) & (not Finite(n ¥PROD m))) m-->Stat1 ==> false; Discharge ==> Finite(n) & (EXISTS m | Finite(m) & (not Finite(n ¥PROD m))) APPLY(m1_thryvar:k1) finite_induction (n->n,p(n)->Finite(n) & (EXISTS m | Finite(m) & (not Finite(n ¥PROD m)))) ==> Finite(k1) & (EXISTS m | Finite(m) & (not Finite(k1 ¥PROD m))) & (FORALL j ¥incin k1 | ((j /= k1) ¥imp (not(Finite(j) & (EXISTS m | Finite(m) & (not Finite(j ¥PROD m))))))) Loc_def ==> k = k1 EQUAL ==> Finite(k) & Stat2: (EXISTS m | Finite(m) & (not Finite(k ¥PROD m))) & Stat3: (FORALL j ¥incin k | ((j /= k) ¥imp (not(Finite(j) & (EXISTS m | Finite(m) & (not Finite(j ¥PROD m))))))) mp-->Stat2 ==> Stat4: Finite(mp) & (not Finite(k ¥PROD mp)) -- -- Since $0 ¥PROD mp$ is $0$, $k$ obviously cannot be empty, and so has a member $c$. -- Suppose ==> k = 0 EQUAL ==> k ¥PROD mp = 0 ¥PROD mp mp-->T139 ==> k ¥PROD mp = 0 EQUAL ==> not Finite(0) T188 ==> false; Discharge ==> Stat5: k /= 0 c-->Stat5 ==> Stat6: c in k -- -- But then $k - {c}$ is a proper subset of $k$, so $(k - {c}) ¥PROD m$ must be finite, and therefore -- $((k - {c}) ¥PROD m) + ({c} ¥PROD m) = k ¥PROD m$ must also be finite, a contradiction -- which proves the present theorem. -- (Stat6)ELEM ==> (k = (k - {c}) + {c}) & ((k - {c}) ¥incin k) & ((k - {c}) * {c} = 0) ELEM ==> Finite(k - {c}) (k - {c})-->Stat3 ==> Stat7: not(EXISTS m | Finite(m) & (not Finite((k - {c}) ¥PROD m))) mp-->Stat7 ==> Finite((k - {c}) ¥PROD mp) (k - {c},mp,{c})-->T255 ==> ((k - {c}) + {c}) ¥PROD mp = ((k - {c}) ¥PROD mp) + ({c} ¥PROD mp) ELEM ==> (k - {c}) + {c} = k EQUAL ==> k ¥PROD mp = ((k - {c}) ¥PROD mp) + ({c} ¥PROD mp) (mp)-->T193 ==> Finite(#mp) (c,mp)-->T223 ==> #({c} ¥PROD mp) = #mp EQUAL ==> Finite(#({c} ¥PROD mp)) ({c} ¥PROD mp)-->T193 ==> Finite({c} ¥PROD mp) ((k - {c}) ¥PROD mp,{c} ¥PROD mp)-->T236 ==> Finite(((k - {c}) ¥PROD mp) + ({c} ¥PROD mp)) EQUAL ==> Stat8: Finite(k ¥PROD mp) (Stat4,Stat8)Discharge ==> QED -- -- The following is a simple corollary of Theorem 261 -- Theorem 262: [The Cartesian product of two finite sets is finite] (Finite(N) & Finite(M)) ¥imp Finite(N ¥PROD M). Proof: Suppose_not(n,m) ==> Finite(n) & Finite(m) & (not Finite(n ¥PROD m)) (n ¥PROD m)-->T193 ==> not Finite(#(n ¥PROD m)) Use_def(¥TIMES) ==> not Finite(#(n ¥TIMES m)) (n,m)-->T261 ==> false; Discharge ==> QED -- -- The following result restates the preceding theorem as a statement about the arithmetic multiplication operator. -- Theorem 263: [If the product of two nonzero terms is finite, so are the terms] ((Finite(N) & Finite(M)) or N = 0 or M = 0) ¥eq Finite(N ¥TIMES M). Proof: Suppose_not(n,m) ==> Stat1: not(((Finite(n) & Finite(m)) or n = 0 or m = 0) ¥eq Finite(n ¥TIMES m)) -- -- For let $n$, $m$ be a counterexample to our assertion. It is easily seen that neither $n$ nor $m$ -- can be empty, so either both must be finite and $n ¥TIMES m$ infinite, or the revers. -- T188 ==> Finite(0) Suppose ==> n = 0 EQUAL ==> Finite(n ¥TIMES m) ¥eq Finite(0 ¥TIMES M) m-->T246 ==> 0 ¥TIMES m = 0 EQUAL ==> Finite(n ¥TIMES m) ¥eq Finite(0) Discharge ==> Stat2: n /= 0 Suppose ==> m = 0 EQUAL ==> Finite(n ¥TIMES m) ¥eq Finite(n ¥TIMES 0) n-->T245 ==> n ¥TIMES 0 = 0 EQUAL ==> Finite(n ¥TIMES 0) ¥eq Finite(0) Discharge ==> Stat3: m /= 0 (Stat1,Stat2,Stat3*)ELEM ==> not((Finite(n) & Finite(m)) ¥eq Finite(n ¥TIMES m)) -- -- Since $#(n ¥PROD m)$ is evidently no less than -- either $n$ and $m$, the second case is ruled out, so we have only to consider the first case. -- Suppose ==> Stat4: Finite(n ¥TIMES m) & (not(Finite(n) & Finite(m))) Use_def(¥TIMES) ==> Finite(#(n ¥PROD m)) (m,n)-->T250 ==> #(n ¥PROD m) incs #n (#(n ¥PROD m),#n)-->T189 ==> Finite(#n) n-->T193 ==> Stat5: Finite(n) (n,m)-->T253 ==> n ¥TIMES m = m ¥TIMES n EQUAL ==> Finite(m ¥TIMES n) Use_def(¥TIMES) ==> Finite(#(m ¥PROD n)) (n,m)-->T250 ==> #(m ¥PROD n) incs #m (#(m ¥PROD n),#m)-->T189 ==> Finite(#m) m-->T193 ==> Stat6: Finite(m) (Stat4,Stat5,Stat6*)Discharge ==> Finite(n) & Finite(m) & (not Finite(n ¥TIMES m)) -- -- But the preceding theorem rules out this case, so our proof is complete. -- Use_def(¥TIMES) ==> not Finite(#(n ¥PROD m)) (n ¥PROD m)-->T193 ==> not Finite(n ¥PROD m) (n,m)-->T262 ==> false; Discharge ==>QED -- -- We continue by proving that the power set of a finite set is also finite. -- Theorem 264: [A set is finite if and only if its powerset is finite] Finite(N) ¥eq Finite(pow(N)). Proof: Suppose_not(n) ==> (Finite(n) & (not Finite(pow(n)))) or ((not Finite(n)) & Finite(pow(n))) -- -- If the asserted equivalence is false, there must exist an either a finite $n$ with an infinite power set, -- or an infinite $n$ with a finite power set. Consider the second of these cases first. -- In this case ${arb(x): x in pow(n) - {0}}$, which is the range of the function $arb$ on the set $n$, must be finite. -- But since every singleton ${y}$, with $y in n$, belongs to $pow(n) - {0}$, -- it is plain that ${arb(x): x in pow(n) - {0}}$ includes $n$, ruling out this case. -- Suppose ==> (not Finite(n)) & Finite(pow(n)) Loc_def ==> f = {[x,arb(x)]: x in pow(n) - {0}} APPLY() fcn_symbol(f(x)->arb(x),g->f,s->pow(n) - {0}) ==> Svm(f) & (domain(f) = pow(n) - {0}) & (range(f) = {arb(x): x in pow(n) - {0}}) Suppose ==> Stat1: not (range(f) ¥incin n) cp-->Stat1 ==> (cp in range(f)) & (cp notin n) ELEM ==> Stat2: cp in {arb(x): x in pow(n) - {0}} d-->Stat2 ==> (cp = arb(d)) & (d in pow(n) - {0}) d-->T0 ==> cp in d Use_def(pow) ==> Stat3: d in {x: x ¥incin n} d1-->Stat3 ==> d ¥incin n Discharge ==> range(f) ¥incin n Suppose ==> Stat4: not (n ¥incin range(f)) a-->Stat4 ==> (a notin range(f)) & (a in n) ELEM ==> Stat5: a notin {arb(x): x in pow(n) - {0}} {a}-->Stat5 ==> not(({a} /= 0) & (a = arb({a})) & ({a} in pow(n))) ELEM ==> {a} notin pow(n) Use_def(pow) ==> Stat6: {a} notin {x: x ¥incin n} {a}-->Stat6 ==> not ({a} ¥incin n) Discharge ==> range(f) = n ELEM ==> Finite(pow(n) - {0}) EQUAL ==> Finite(domain(f)) f-->T192 ==> Finite(range(f)) Discharge ==> Finite(n) & (not Finite(pow(n))) -- -- Thus it follows that if our theorem is false there must exist a finite $n$ with an infinite power set, -- in which case the principle of finite induction tells us that there exists such a set $m$ with no -- proper subset having the same property. Since {0} is finite, $m$ cannot be 0, -- and therefore it must have some member $c$. -- APPLY(m1_thryvar:m) finite_induction(n->n,P(x)-> (not Finite(pow(x)))) ==> (m ¥incin n) & (not Finite(pow(m))) & Stat7: (FORALL k ¥incin m | ((k /= m) ¥imp Finite(pow(k)))) Suppose ==> m = 0 T213 ==> pow(0) = {0} EQUAL ==> pow(m) = {0} EQUAL ==> not Finite({0}) T188 ==> Finite(0) (0,0)-->T199 ==> Finite(0 + {0}) ELEM ==> 0 + {0} = {0} EQUAL ==> Finite({0}) Discharge ==> Stat8: m /= 0 c-->Stat8 ==> Stat9: c in m -- -- We can therefore decompose $pow(m)$ into (i) the collection of all subsets of $m$ which do contain $c$, -- and (ii) the collection of all subsets of $m$ which do not contain $c$. It is easily seen that collection $b$ -- is the power set of $m - {c}$, and so, by the minimality of $m$, collection $b$ must be finite, -- and therefore collection (i) must be infinite. -- Set_monot ==> {x: x in pow(m) | true} = {x: x in pow(m) | c in x or c notin x} SIMPLF ==> pow(m) = {x: x in pow(m) | c in x or c notin x} Set_monot ==> {x: x in pow(m) | c in x or c notin x} = {x: x in pow(m) | c in x} + {x: x in pow(m) | c notin x} ELEM ==> pow(m) = {x: x in pow(m) | c in x} + {x: x in pow(m) | c notin x} Use_def(pow) ==> {x: x in pow(m) | c notin x} = {x: x in {x: x ¥incin m} | c notin x} SIMPLF ==> Stat10: {x: x in pow(m) | c notin x} = {x: x ¥incin m | c notin x} Suppose ==> Stat11: {x: x ¥incin m | c notin x} /= {x: x ¥incin (m - {c})} dq-->Stat11 ==> (((dq in {x: x ¥incin m | c notin x}) & (dq notin {x: x ¥incin (m - {c})})) or ((dq notin {x: x ¥incin m | c notin x}) & (dq in {x: x ¥incin (m - {c})}))) Suppose ==> Stat12: (dq in {x: x ¥incin m | c notin x}) & Stat13: (dq notin {x: x ¥incin (m - {c})}) ap-->Stat12 ==> (dq = ap) & (ap ¥incin m) & (c notin ap) ap-->Stat13 ==> not((dq = ap) & (ap ¥incin (m - {c}))) Discharge ==> Stat14: (dq notin {x: x ¥incin m | c notin x}) & Stat15: (dq in {x: x ¥incin (m - {c})}) b-->Stat15 ==> (dq = b) & (b ¥incin (m - {c})) b-->Stat14 ==> not((dq ¥incin m) & (c notin dq)) Discharge ==> Stat16: {x: x ¥incin m | c notin x} = {x: x ¥incin (m - {c})} (Stat16,Stat10)ELEM ==> {x: x in pow(m) | c notin x} = {x: x ¥incin (m - {c})} Use_def(pow) ==> {x: x in pow(m) | c notin x} = pow(m - {c}) ELEM ==> (m - {c} ¥incin m) & (m - {c} /= m) (m - {c})-->Stat7 ==> Finite(pow(m - {c})) EQUAL ==> Finite({x: x ¥incin (m - {c})}) & Finite({x: x in pow(m) | c notin x}) ({x: x in pow(m) | c in x},{x: x in pow(m) | c notin x})-->T236(*) ==> (Finite({x: x in pow(m) | c in x}) & Finite({x: x in pow(m) | c notin x})) ¥eq Finite({x: x in pow(m) | c in x} + {x: x in pow(m) | c notin x}) EQUAL ==> (Finite({x: x in pow(m) | c in x}) & Finite({x: x in pow(m) | c notin x})) ¥eq Finite(pow(m)) ELEM ==> not Finite({x: x in pow(m) | c in x}) Use_def(pow) ==> not Finite({x: x in {y: y ¥incin m} | c in x}) SIMPLF ==> {x: x in {y: y ¥incin m} | c in x} = {y: y ¥incin m | c in y} EQUAL ==> not Finite({y: y ¥incin m | c in y}) -- -- But it is also easy to see that the single-valued map $ff(x)->x + {c}$ maps $pow(m - {c})$ onto the collection (i) -- of sets, and the domain $pow(m - {c})$ of this map, and hence its range, is plainly finite. -- Loc_def ==> ff = {[x,x + {c}]: x in {x: x ¥incin (m - {c})}} APPLY() fcn_symbol(f(x)->x + {c},g->ff,s->{x: x ¥incin (m - {c})}) ==> Svm(ff) & (domain(ff) = {x: x ¥incin (m - {c})}) & (range(ff) = {x + {c}: x in {x: x ¥incin (m - {c})}}) SIMPLF ==> range(ff) = {x + {c}: x ¥incin (m - {c})} EQUAL ==> Finite(domain(ff)) ff-->T192 ==> Finite(range(ff)) EQUAL ==> Finite({x + {c}: x ¥incin (m - {c})}) Suppose ==> Stat17: {x + {c}: x ¥incin (m - {c})} /= {x: x ¥incin m | c in x} e-->Stat17(*) ==> Stat18: ((e in {x + {c}: x ¥incin (m - {c})}) & (e notin {x: x ¥incin m | c in x})) or ((e notin {x + {c}: x ¥incin (m - {c})}) & (e in {x: x ¥incin m | c in x})) Suppose ==> Stat19: (e in {x + {c}: x ¥incin (m - {c})}) & Stat20: (e notin {x: x ¥incin m | c in x}) e1-->Stat19 ==> Stat21: (e = e1 + {c}) & (e1 ¥incin (m - {c})) (e1 + {c})-->Stat20 ==> Stat22: not((e = e1 + {c}) & ((e1 + {c}) ¥incin m) & (c in e1 + {c})) (Stat21,Stat22,Stat9)ELEM ==> false; Discharge ==> Stat23: not((e in {x + {c}: x ¥incin (m - {c})}) & (e notin {x: x ¥incin m | c in x})) (Stat23,Stat18*)ELEM ==> Stat24: (e notin {x + {c}: x ¥incin (m - {c})}) & Stat25: (e in {x: x ¥incin m | c in x}) e2-->Stat25 ==> Stat26: (e = e2) & (e2 ¥incin m) & (c in e2) (e2 - {c})-->Stat24 ==> Stat27: not((e = (e2 - {c}) + {c}) & ((e2 - {c}) ¥incin (m - {c}))) EQUAL(Stat26,Stat27) ==> false; Discharge ==> {x + {c}: x ¥incin (m - {c})} = {x: x ¥incin m | c in x} -- -- This contradiction proves our theorem. -- EQUAL ==> false; Discharge ==> QED -- -- Our next proof, of Cantor's basic result that the cardinality of the power set of -- any set $s$ is always larger than the cardinality of $s$, embodies a famous idea whose -- discovery encouraged development if the theory of infinite cardinality in its early days. -- Theorem 265: [Cantor's Theorem] #N in #pow(N). Proof: Suppose_not(n) ==> #n notin #pow(n) -- -- For let $n$ be a counterexample to our assertion. $pow(n)$ in plainly not empty, -- and since $#n$ and $#pow(n)$ are both ordinals we must have $#n incs #pow(n)$ by Theorem 35. -- Suppose ==> 0 notin pow(n) Use_def(pow) ==> Stat1: 0 notin {x: x ¥incin n} 0-->Stat1 ==> Stat2: not (0 ¥incin n) Discharge ==> pow(n) /= 0 n-->T156 ==> Ord(#n) (pow(n))-->T156 ==> Ord(#pow(n)) (#pow(n),#n)-->T35 ==> #n incs #pow(n) -- -- Hence Theorem 176 tells us that there is a single valued map $f$ of $n$ onto $pow(n)$. -- Consider the subset $s = {x: x in n | x notin f~[x]}$ of $n$, which plainly belongs to $pow(n)$. -- (n,pow(n))-->T176 ==> Stat3: (EXISTS f in OM | Svm(f) & (domain(f) = n) & (range(f) = pow(n))) f-->Stat3 ==> Svm(f) & (domain(f) = n) & (range(f) = pow(n)) Loc_def ==> s = {x: x in n | x notin f~[x]} Set_monot ==> {x: x in n | x notin f~[x]} ¥incin {x: x in n} ELEM ==> s ¥incin {x: x in n} SIMPLF ==> s ¥incin n Suppose ==> not(s in pow(n)) Use_def(pow) ==> Stat4: not(s in {x: x ¥incin n}) s-->Stat4 ==> not(s ¥incin n) Discharge ==> s in pow(n) ELEM ==> s in range(f) -- -- It is clear since $s$ belongs to the range of $f$ that $s = f~[c]$ for some $c in n$. -- T72 ==> f = {[x,f~[x]]: x in domain(f)} EQUAL ==> s in range({[x,f~[x]]: x in domain(f)}) Use_def(range) ==> s in {cdr(y): y in {[x,f~[x]]: x in domain(f)}} SIMPLF ==> Stat5: s in {cdr([x,f~[x]]): x in domain(f)} c-->Stat5 ==> (c in domain(f)) & (s = cdr([c,f~[c]])) ELEM ==> (c in n) & (s = f~[c]) -- -- If $c in s$, then it follows immediately that $c notin s$. -- Suppose ==> c in s ELEM ==> Stat6: c in {x: x in n | x notin f~[x]} d-->Stat6 ==> (c = d) & (c in n) & (c notin f~[d]) EQUAL ==> (c notin f~[c]) Discharge ==> c notin s -- -- But in much the same way $c notin s$ implies that $c in s$, -- so we have a contradiction which proves Cantor's theorem. -- ELEM ==> Stat7: c notin {x: x in n | x notin f~[x]} c-->Stat7 ==> not((c in n) & (c notin f~[c])) ELEM ==> not((c in n) & (c notin s)) Discharge ==> QED -- -- -- Theorem 266: (S ¥incin pow(Un(S))) & ((Finite(Un(S)) & (X ¥incin S)) ¥imp Finite(X)). Proof: Suppose_not(s,x) ==> AUTO Suppose ==> Stat1: s ¥nincin pow(Un(s)) c-->Stat1(Stat1*) ==> Stat2: (c in s) & (c notin pow(Un(s))) Use_def(Un(s)) ==> AUTO Use_def(pow(Un(s))) ==> AUTO EQUAL(Stat2) ==> Stat3: c notin {u: u ¥incin {v: y in s, v in y}} c-->Stat3(Stat3*) ==> Stat4: c ¥nincin {v: y in s, v in y} e-->Stat4(Stat4*) ==> Stat5: (e notin {v: y in s, v in y}) & (e in c) (c,e)-->Stat5(Stat2,Stat2*) ==> false; Discharge ==> AUTO -- -- At this point we have derived that -- $(x ¥incin s) & (s ¥incin pow(Un(s))) & Finite(Un(s)) & (not Finite(x))$, -- but this will also lead to a contradiction. -- (Un(s))-->T264 ==> false; Discharge ==> QED -- -- The two elementary lemmas which now follow state basic fact concerning arithmetic subtraction. -- We first show that a quantity subtracted from itself gives 0. -- Theorem 267: [Arithmetic subtraction principle] N ¥MINUS N = 0. Proof: Suppose_not(n) ==> n ¥MINUS n /= 0 Use_def(¥MINUS) ==> n ¥MINUS n = #(n - n) ELEM ==> n - n = 0 EQUAL ==> n ¥MINUS n = #0 T188 ==> Card(0) 0-->T164 ==> false; Discharge ==> QED -- -- Next we show that a quantity subtracted from itself gives 0. -- Theorem 268: [0 is right identity for arithmetic subtraction] N ¥MINUS 0 = #N. Proof: Suppose_not(n) ==> n ¥MINUS 0 /= #n Use_def(¥MINUS) ==> #(n - 0) /= #n ELEM ==> n - 0 = n EQUAL ==> false; Discharge ==> QED -- -- Next we show that the cardinality of the sum of any two disjoint sets $n$, $m$ is determined -- by the two separate cardinalities $#n$, $#m$. -- Theorem 269: [Disjoint additivity lemma] ((N * M = 0) & (N2 * M2 = 0) & (#N = #N2) & (#M = #M2)) ¥imp (#(N + M) = #(N2 + M2)). Proof: Suppose_not(n,m,n2,m2) ==> Stat1: (n * m = 0) & (n2 * m2 = 0) & (#n = #n2) & (#m = #m2) & (#(n + m) /= #(n2 + m2)) -- -- For our assertion results immediately by combining Theorem 220 and Theorem 221. -- (n,m)-->T220 ==> #(n + m) = n ¥PLUS m (n2,m2)-->T220 ==> #(n2 + m2) = n2 ¥PLUS m2 (n,m)-->T221 ==> n ¥PLUS m = #n ¥PLUS #m (n2,m2)-->T221 ==> n2 ¥PLUS m2 = #n2 ¥PLUS #m2 EQUAL ==> false; Discharge ==> QED -- -- Our next theorem states that when, in a subtraction, the subtrahend -- is an ordinal which exceeds the minuend, then the value of the -- difference is 0. -- Theorem 270: [Excess subtraction lemma] (Ord(Y) & (X in Y)) ¥imp ((X ¥MINUS Y) = 0). Proof: Suppose_not(y,x) ==> Ord(y) & (x in y) & ((x ¥MINUS y) /= 0) Use_def(¥MINUS) ==> #(x - y) /= 0 (x - y)-->T162 ==> (x - y) /= 0 (y,x)-->T13 ==> false; Discharge ==> QED -- -- The two following results state (and generalize) the fact that if an integer $n$ is at least as large as -- an integer $m$, then $n$ is the arithmetic sum of $m$ and $(n ¥MINUS m)$. The first of these theorems generalizes -- this fact to arbitrary cardinals (and, indeed, sets). The second restates the same fact -- in a more narrowly arithmetic form. -- Theorem 271: [Subtraction lemma] (M ¥incin N) ¥imp (#N = #M ¥PLUS (N ¥MINUS M)). Proof: Suppose_not(m,n) ==> (m ¥incin n) & (#n /= #m ¥PLUS (n ¥MINUS m)) -- -- For our assertion results immediately from Theorem 220 and the definition of subtraction. -- ELEM ==> (n = m + (n - m)) & (m * (n - m) = 0) (m,n - m)-->T220 ==> #(m + (n - m)) = m ¥PLUS (n - m) EQUAL ==> #n = m ¥PLUS (n - m) (m,n - m)-->T221 ==> #n = #m ¥PLUS #(n - m) Use_def(¥MINUS) ==> false; Discharge ==> QED -- -- The following variant form of the preceding lemma is sometimes useful. -- Theorem 272: [Subtraction in the non-negative case] (M ¥incin N) ¥imp (#N = (N ¥MINUS M) ¥PLUS M). Proof: Suppose_not(m,n) ==> (m ¥incin n) & (#n /= (n ¥MINUS m) ¥PLUS m) (m,n)-->T271 ==> (n ¥MINUS m) ¥PLUS m /= #m ¥PLUS (n ¥MINUS m) (m,n ¥MINUS m)-->T227 ==> (n ¥MINUS m) ¥PLUS m /= m ¥PLUS (n ¥MINUS m) (m,n ¥MINUS m)-->T252 ==> false; Discharge ==> QED -- -- If we confine our attention to cardinals $#m$ and $#n$, the preceding results tell us that -- if $#m$ is no larger than $#n$, we have $#n = #m ¥PLUS (#n ¥MINUS #m)$. -- Theorem 273: [Subtraction lemma 2] (#M in #N or #M = #N) ¥imp (#N = #M ¥PLUS (#N ¥MINUS #M)). Proof: Suppose_not(m,n) ==> (#m in #n or #m = #n) & (#n /= #m ¥PLUS (#n ¥MINUS #m)) -- -- Our assertion follows trivially form the preceding, since the present hypotheses imply that $#m ¥incin #n$. -- n-->T156 ==> Ord(#n) m-->T156 ==> Ord(#m) (#n,#m)-->T34 ==> #m ¥incin #n (#m,#n)-->T271 ==> ##n = ##m ¥PLUS (#n ¥MINUS #m) N-->T166 ==> ##n = #n M-->T166 ==> ##m = #m EQUAL ==> false; Discharge ==> QED -- -- Next we show that the union set of a set $s$ is the set-theoretic 'upper bound' of all its elements, i.e. -- the smallest set which includes all these elements. -- Theorem 274: [Union set as an upper bound] (FORALL x in S | x ¥incin Un(S)) & ((FORALL x in S | x ¥incin T) ¥imp (Un(S) ¥incin T)). Proof: Suppose_not(s,t) ==> (not(FORALL x in s | x ¥incin Un(s))) or ((FORALL x in s | x ¥incin t) & (not (Un(s) ¥incin t))) -- -- For if not, one of the two clauses of our theorem must be false. By definition of '$Un$', this -- cannot be the first clause, so it must be the second. -- Suppose ==> Stat1: not(FORALL x in s | x ¥incin Un(s)) x-->Stat1 ==> Stat2: (x in s) & (not(x ¥incin Un(s))) c-->Stat2 ==> (c in x) & (c notin Un(s)) Use_def(Un) ==> Stat3: c notin {z: y in s, z in y} (x,c)-->Stat3 ==> false; Discharge ==> Stat4: (FORALL x in s | x ¥incin t) & Stat5: (not (Un(s) ¥incin t)) -- -- But a second use of the definition of '$Un$' shows that this case is also impossible, proving our theorem. -- d-->Stat5 ==> (d in Un(s)) & (d notin t) Use_def(Un) ==> Stat6: d in {z: y in s, z in y} (b,a)-->Stat6 ==> (d = a) & (b in s) & (a in b) b-->Stat4 ==> false; Discharge ==> QED -- Theorem 275: (Un(S) = 0) ¥eq ((S = 0) or (S = {0})). Proof: Suppose_not(s) ==> AUTO -- -- The implication -- $((s = 0) or (s = {0})) ¥imp (Un(s) = 0)$ -- is quickly proved by virtue of Theorem 109. Hence, -- assuming the assertion of this theorem to be false, we must -- have $(Un(s) = 0) & (s /= 0) & (s /= {0})$; and therefore -- $s ¥nincin {0}$, and we can find in $s$ a non-zero element $c$. -- ELEM ==> (arb({0}) = 0) & ({0} - {arb({0})} = 0) EQUAL ==> Un({0} - {arb({0})}) = Un(0) {0}-->T109(*) ==> Stat1: (Un(0) = 0) & (Un({0}) = 0) Suppose ==> (s = 0) & (Un(s) /= 0) EQUAL(Stat1) ==> false Discharge ==> AUTO Suppose ==> (s = {0}) & (Un(s) /= 0) EQUAL(Stat1) ==> false Discharge ==> Stat2: (s ¥nincin {0}) & (Un(s) = 0) -- -- Such a $c$ cannot be included in $Un(s)$... -- c-->Stat2(Stat2*) ==> Stat3: (c in s) & (c ¥nincin Un(s)) -- -- ...contrary to one of the claims of Theorem 274. This -- contradiction leads to the desired conclusion. -- s-->T274(Stat4*) ==> Stat4: (FORALL x in s | x ¥incin Un(s)) c-->Stat4(Stat3*) ==> false Discharge ==> QED -- Theorem 276: [Monotonicity of the union-set operator] (S ¥incin T) ¥imp (Un(S) ¥incin Un(T)). Proof: Suppose_not(s,t) ==> Stat1: (s ¥incin t) & (not(Un(s) ¥incin Un(t))) (t,0)-->T274 ==> Stat2: (FORALL x in t | x ¥incin Un(t)) (s,Un(t))-->T274 ==> Stat3: (FORALL x in s | x ¥incin Un(t)) ¥imp (Un(s) ¥incin Un(t)) Suppose ==> Stat4: not(FORALL x in s | x ¥incin Un(t)) c-->Stat4 ==> Stat5: (c in s) & (c ¥nincin Un(t)) c-->Stat2(Stat5,Stat1*) ==> false; Discharge ==> Stat6: (FORALL x in s | x ¥incin Un(t)) (Stat3,Stat6,Stat1*)ELEM ==> false; Discharge ==> QED -- -- -- Theorem 277: [Binary and unary union operations commute] Un(X + Y) = Un(X) + Un(Y). Proof: Suppose_not(x0,y0) ==> AUTO (x0,x0 + y0)-->T276 ==> AUTO (y0,x0 + y0)-->T276(*) ==> Stat1: Un(x0 + y0) ¥nincin (Un(x0) + Un(y0)) Use_def(Un(x0 + y0)) ==> AUTO Use_def(Un(x0)) ==> AUTO Use_def(Un(y0)) ==> AUTO u0-->Stat1(Stat1*) ==> Stat2: (u0 in {u: v in x0 + y0, u in v}) & (u0 notin {u: v in x0, u in v}) & (u0 notin {u: v in y0, u in v}) (v1,u1,v1,u1,v1,u1)-->Stat2(Stat2*) ==> false Discharge ==> QED -- Theorem 278: [Equivalent characterizations of transitive sets] (S ¥incin pow(S)) ¥eq (Un(S) ¥incin S). Proof: Suppose_not(s0) ==> AUTO Use_def(Un(s0)) ==> AUTO Use_def(pow(s0)) ==> AUTO Suppose ==> Stat1: Un(s0) ¥nincin s0 y0-->Stat1(*) ==> Stat2: (y0 in {u: v in s0, u in v}) & (y0 notin s0) (x1,y1)-->Stat2(*) ==> Stat3: (x1 in {y: y ¥incin s0}) & (y0 in x1) y2-->Stat3(Stat2*) ==> false Discharge ==> Stat4: (s0 ¥nincin pow(s0)) & (Un(s0) ¥incin s0) x0-->Stat4(*) ==> Stat5: (x0 notin {y: y ¥incin s0}) & (x0 in s0) s0-->T274(Stat4*) ==> Stat6: (FORALL x in s0 | x ¥incin Un(s0)) x0-->Stat6(Stat4*) ==> x0 ¥incin s0 x0-->Stat5(Stat6*) ==> false Discharge ==> QED -- -- -- Theorem 279: (Un(S) incs Un({c: c in S | H notin c})) & (H notin Un({c: c in S | H notin c})). Proof: Suppose_not(s,h) ==> AUTO Set_monot ==> {c: c in s} incs {c: c in s | h notin c} Use_def(Un({c: c in s | h notin c})) ==> AUTO ({c: c in s | h notin c},s)-->T276 ==> Stat1: (h in {x: y in {c: c in s | h notin c}, x in y}) (y1, x1)-->Stat1(Stat1*) ==> Stat2: (y1 in {c: c in s | h notin c}) & (h in y1) c1-->Stat2(Stat2*) ==> false Discharge ==> QED -- -- If the set appearing in the preceding theorem is a collection of ordinals, -- then its union set $Un(s)$ must be an ordinal. Indeed $Un(s)$ is the smallest ordinal -- not smaller than any of the elements of $s$ (but this fact, an easy consequence of -- Theorem 274, is not derived in what follows.) -- Theorem 280: [The union of a set of ordinals is an ordinal] (FORALL x in S | Ord(x)) ¥imp Ord(Un(S)). Proof+: Suppose_not(s) ==> Stat1: (FORALL x in s | Ord(x)) & (not(Ord(Un(s)))) -- -- For suppose that $s$ is a set of ordinals whose union set is not an ordinal. -- Then $Un(s)$ either has an element $x$ not included in $Un(s)$, or a pair of distinct elements -- not related by membership. First consider the first of these two possibilities. -- Use_def(Ord) ==> not((FORALL x in Un(s) | x ¥incin Un(s)) & (FORALL x in Un(s), y in Un(s) | x in y or y in x or x = y)) Use_def(Un) ==> (not((FORALL x in {wz: yy in s, wz in yy} | x ¥incin {wz: yy in s, wz in yy}))) or (not((FORALL x in {wz: yy in s, wz in yy}, y in {wz: yy in s, wz in yy} | x in y or y in x or x = y))) Suppose ==> Stat2: not (FORALL x in {wz: yy in s, wz in yy} | x ¥incin {wz: yy in s, wz in yy}) -- -- In this case there would have to be $a$, $c$ satisfying $a in s$, $x in a$, $c in s$ such that $c notin {wz: yy in s, wz in yy}$, -- an evident impossibility which rules out this case. -- x-->Stat2 ==> Stat3: (x in {wz: yy in s, wz in yy}) & (not(x ¥incin {wz: yy in s, wz in yy})) (a,b)-->Stat3 ==> (x = b) & (a in s) & (b in a) & Stat4: (not(x ¥incin {wz: yy in s, wz in yy})) c-->Stat4 ==> (c in b) & Stat5: (not(c in {wz: yy in s, wz in yy})) a-->Stat1 ==> Ord(a) (a,b)-->T13 ==> c in a (a,c)-->Stat5 ==> false; Discharge ==> Stat6: not(FORALL x in {wz: yy in s, wz in yy}, y in {wz: yy in s, wz in yy} | x in y or y in x or x = y) -- -- But if $Un(s)$ a pair of distinct elements $u$, $v$ not related by membership, -- $u$ would be a member of some ordinal $au$ in s, and $v$ would be a member of some ordinal $av$ in s. -- Since one of these ordinals would necessarily include the other this is impossible, so out theorem is proved. -- (u,v)-->Stat6 ==> Stat7: (u in {wz: yy in s, wz in yy}) & (v in {wz: yy in s, wz in yy}) & (not(u in v or v in u or u = v)) (au,bu,av,bv)-->Stat7 ==> (au in s) & (u in au) & (av in s) & (v in av) & (not(u in v or v in u or u = v)) au-->Stat1 ==> Ord(au) av-->Stat1 ==> Ord(av) (u,v)-->T31 ==> false; Discharge ==> QED -- -- Next we prove that the arithmetic quotient of any $n$ by a nonzero $m$ is no larger than $n$. -- Theorem 281: [Division monotonicity lemma] (M /= 0) ¥imp ((N ¥OVER M) ¥incin N). Proof: Suppose_not(m,n) ==> Stat1: (m /= 0) & (not((n ¥OVER m) ¥incin n)) -- -- For suppose that $m$, $n$ is a counterexample to our assertion. -- Then by definition of division there must exist $k in Za$ and $c in k$, with $c notin n$ -- and $(k ¥TIMES m) ¥incin n$. -- Use_def(¥OVER) ==> Stat2: not(Un({k in Za | (k ¥TIMES m) ¥incin n}) ¥incin n) c-->Stat2 ==> (c notin n) & (c in Un({k in Za | (k ¥TIMES m) ¥incin n})) Use_def(Un) ==> c in {x: y in {k in Za | (k ¥TIMES m) ¥incin n}, x in y} SIMPLF ==> Stat3: c in {x: k in Za, x in k | (k ¥TIMES m) ¥incin n} (k,x)-->Stat3 ==> (k in Za) & (c in k) & ((k ¥TIMES m) ¥incin n) -- -- Let $a$ be a member of $m$, so that $#(k ¥PROD m) incs #(k ¥PROD {a})$ and therefore -- $k ¥TIMES m incs k$. It follows that $n incs k$, and so $c in n$, a contradiction which proves our theorem. -- a-->Stat1 ==> a in m (k,k,{a},m)-->T256 ==> (k ¥PROD m) incs (k ¥PROD {a}) (k ¥PROD {a},k ¥PROD m)-->T170 ==> #(k ¥PROD m) incs #(k ¥PROD {a}) (k,a)-->T224 ==> #(k ¥PROD m) incs #k Use_def(¥TIMES) ==> k ¥TIMES m incs #k k-->T207 ==> k ¥TIMES m incs k Discharge ==> QED -- -- The following lemma tells us that if $n$ is and integer and $m$ is nonzero, -- the arithmetic quotient of $n$ by $m$ is an integer. -- Theorem 282: [Extended division monotonicity lemma] ((M /= 0) & (N in Za)) ¥imp (((N ¥OVER M) in Za) & ((N ¥OVER M) ¥incin N)). Proof+: Suppose_not(m,n) ==> (n in Za) & (m /= 0) & (((n ¥OVER m) notin Za) or (not((n ¥OVER m) ¥incin n))) -- -- For otherwise, since it is clear that every element of ${k in Za | (k ¥TIMES m) ¥incin n}$ -- is an ordinal, It follows by definition that $n ¥OVER m$ is an ordinal. -- Suppose ==> Stat1: not(FORALL x in {k in Za | (k ¥TIMES m) ¥incin n} | Ord(x)) x2-->Stat1 ==> Stat2: (x2 in {k in Za | (k ¥TIMES m) ¥incin n}) & (not Ord(x2)) ()-->Stat2 ==> false; Discharge ==> (FORALL x in {k in Za | (k ¥TIMES m) ¥incin n} | Ord(x)) {k in Za | (k ¥TIMES m) ¥incin n}-->T280 ==> Ord(Un({k in Za | (k ¥TIMES m) ¥incin n})) Use_def(¥OVER) ==> (n ¥OVER m) = Un({k in Za | (k ¥TIMES m) ¥incin n}) EQUAL ==> Ord(n ¥OVER m) -- -- Since the second clause of our theorem is true by Theorem 281, $n ¥OVER m$ cannot be an integer, and since -- it is an ordinal, it cannot be finite. But since $n$ is finite this is impossible, so our theorem is proved. -- (m,n)-->T281 ==> ((n ¥OVER m) ¥incin n) & ((n ¥OVER m) notin Za) (m,n)-->T281 ==> ((n ¥OVER m) ¥incin n) & Finite(n ¥OVER m) (n ¥OVER m)-->T205 ==> false; Discharge ==> QED -- -- Our next result asserts that the set of integers is closed under arithmetic addition, multiplication, and subtraction. -- Theorem 283: [Closure properties of arithmetic operators] ((N in Za) & (M in Za)) ¥imp ((N ¥PLUS M in Za) & (N ¥TIMES M in Za) & (N ¥MINUS M in Za)). Proof+: Suppose_not(n,m) ==> (n in Za) & (m in Za) & (not((n ¥PLUS m in Za) & (n ¥TIMES m in Za) & (n ¥MINUS m in Za))) -- -- We simply use the definitions of these operators, which make it immediately clear that -- the sum, product, and difference are all cardinals, and so must be integers if they are finite. -- But this has been proved earlier for the sum and product, and is obvious for the difference. -- Use_def(¥PLUS) ==> n ¥PLUS m = #({[x,0]: x in n} + {[x,1]: x in m}) Use_def(¥TIMES) ==> n ¥TIMES m = #(n ¥PROD m) Use_def(¥MINUS) ==> n ¥MINUS m = #(n - m) ELEM ==> Finite(n) & Finite(m) (n,m)-->T241 ==> Finite(n ¥PLUS m) (n,m)-->T261 ==> Finite(n ¥TIMES m) ELEM ==> n - m ¥incin n (n,n - m)-->T189 ==> Finite(n - m) (n - m)-->T193 ==> Finite(#(n - m)) EQUAL ==> Finite(n ¥MINUS m) ({[x,0]: x in n} + {[x,1]: x in m})-->T156 ==> Card(#({[x,0]: x in n} + {[x,1]: x in m})) EQUAL ==> Card(n ¥PLUS m) (n ¥PROD m)-->T156 ==> Card(#(n ¥PROD m)) EQUAL ==> Card(n ¥TIMES m) (n - m)-->T156 ==> Card(#(n - m)) EQUAL ==> Card(n ¥MINUS m) (n ¥PLUS m)-->T206 ==> (n ¥PLUS m) in Za (n ¥TIMES m)-->T206 ==> (n ¥TIMES m) in Za (n ¥MINUS m)-->T206 ==> false; Discharge ==> QED -- -- Next we show that the sum $m ¥PLUS n$ of two integers is strictly larger than $n$ if $m /= 0$. -- Theorem 284: [Strict monotonicity of addition] ((M in Za) & (N in Za) & (N /= 0)) ¥imp (M in (M ¥PLUS N)). Proof: Suppose_not(m,n) ==> Stat1: (m in Za) & (n in Za) & Stat2: (n /= 0) & (m notin (m ¥PLUS n)) -- -- For suppose that $m$, $n$ is a counterexample to our assertion. Since the set -- ${[x,0]: x in m} + {[x,1]: x in n}$ whose cardinality defines the sum is finite, -- It follows by Theorem 194 that we have only to prove that its second term -- is not included in its first. But these two terms are clearly disjoint, and the second -- must be nonempty since $n$ is nonempty. So our assertion is clear. -- Use_def(¥PLUS) ==> (m ¥PLUS n) = #({[x,0]: x in m} + {[x,1]: x in n}) (m,n)-->T216 ==> Stat3: {[x,0]: x in m} * {[x,1]: x in n} = 0 e-->Stat2 ==> e in n Suppose ==> Stat4: [e,1] notin {[x,1]: x in n} e-->Stat4 ==> false; Discharge ==> Stat5: {[x,1]: x in n} /= 0 (Stat5,Stat3)ELEM ==> ({[x,0]: x in m} ¥incin ({[x,0]: x in m} + {[x,1]: x in n})) & ({[x,0]: x in m} /= {[x,0]: x in m} + {[x,1]: x in n}) (m,n)-->T283 ==> (m ¥PLUS n) in Za (m ¥PLUS n)-->T206 ==> Finite(m ¥PLUS n) Use_def(¥PLUS) ==> m ¥PLUS n = #({[x,0]: x in m} + {[x,1]: x in n}) EQUAL ==> Finite(#({[x,0]: x in m} + {[x,1]: x in n})) ({[x,0]: x in m} + {[x,1]: x in n})-->T193 ==> Finite({[x,0]: x in m} + {[x,1]: x in n}) ({[x,0]: x in m} + {[x,1]: x in n},{[x,0]: x in m})-->T194 ==> Stat6: #{[x,0]: x in m} in (m ¥PLUS n) (0,m)-->T218 ==> Stat7: #{[x,0]: x in m} = #m m-->T207 ==> Stat8: #m = m (Stat1,Stat6,Stat7,Stat8*)Discharge ==> QED -- -- Our next elementary theorem asserts that only the empty set has cardinality $0$. -- Theorem 285: [Only the nullset has cardinality zero] (#N = 0) ¥imp (N = 0). Proof: Suppose_not(n) ==> (#n = 0) & (n /= 0) -- -- For if #n = 0, then Theorem 159 tell us that n is the range of a map with empty domain, -- an impossibility. -- n-->T147 ==> Stat1: (EXISTS f in OM | (one_1_map(f) & (range(f) = n) & (domain(f) = #n))) f-->Stat1 ==> (domain(f) = 0) & (range(f) /= 0) f-->T86 ==> false; Discharge ==> QED -- -- The following theorem asserts that for integers addition is not merely monotonic, -- but even strictly monotonic, in its second argument. -- Theorem 286: [Strict monotonicity of addition] ((M in Za) & (N in Za) & (K in N)) ¥imp (M ¥PLUS K in M ¥PLUS N). Proof+: Suppose_not(m,n,k) ==> Stat1: (m in Za) & (n in Za) & (k in n) & ((m ¥PLUS k) notin (m ¥PLUS n)) -- -- For suppose that $n$, $m$, $k$ constitute a counterexample to our theorem. -- Since the set $Za$ of integers is an ordinal, its members $n$ and $k$ are both ordinals and subsets of $Za$. -- $n$ is plainly different from $k$, and equal to its own cardinality -- junk-->T206 ==> Ord(Za) (Za,n)-->T12 ==> Ord(n) Use_def(Ord) ==> Stat2: (FORALL n in Za | n ¥incin Za) & (FORALL k in n | k ¥incin n) (n,k)-->Stat2 ==> Stat3: (n ¥incin Za) & (k ¥incin n) n-->T207 ==> Stat4: n = #n ELEM ==> k /= n ELEM ==> Stat5: #n ¥incin Za -- -- Since $k$ is a subset of $n$, the set-theoretic facts stated just below are immediate. -- It follows from this that $#(n - k)$ is an integer no larger than $#n$. -- Moreover $k$ is a cardinal, and therefore is its own cardinality. -- ELEM ==> (n = (n - k) + k) & ((n - k) * k = 0) & (n incs (n - k)) k-->T207 ==> k = #k (n-k,n)-->T170 ==> (#n incs #(n - k)) (n - k)-->T156 ==> Card(#(n - k)) & Ord(#(n - k)) n-->T156 ==> Card(#n) & Ord(#n) (#n,#(n - k))-->T34 ==> Stat6: ((#(n - k) in #n)) or ((#(n - k) = #n)) (Stat6,Stat5,Stat1,Stat4*)ELEM ==> #(n - k) in Za -- -- It follows easily using Theorem 222 that $n = (#(n - k) ¥PLUS k)$, -- and so by what has been stated above, and a little algebra, it follows that -- $(m ¥PLUS k) notin ((m ¥PLUS k) ¥PLUS #(n - k))$. But the set $n - k$ is nonempty, -- and so by Theorem 284 the second of these sets is strictly larger than the first, -- a contradiction which proves our assertion. -- (n - k,k)-->T222 ==> (#(n - k) ¥PLUS #k) = #((n - k) + k) ELEM ==> (n - k) + k = n EQUAL ==> #n = (#(n - k) ¥PLUS #k) (Stat3,Stat4,Stat1*)ELEM ==> k in Za EQUAL ==> Stat7: #n = (#(n - k) ¥PLUS k) (Stat4,Stat7*)ELEM ==> n = (#(n - k) ¥PLUS k) EQUAL ==> (m ¥PLUS k) notin (m ¥PLUS (#(n - k) ¥PLUS k)) ALGEBRA ==> ((m ¥PLUS (#(n - k) ¥PLUS k)) = ((m ¥PLUS k) ¥PLUS #(n - k))) & ((m ¥PLUS k) in Za) ELEM ==> (m ¥PLUS k) notin ((m ¥PLUS k) ¥PLUS #(n - k)) (n - k)-->T285 ==> #(n - k) /= 0 (m ¥PLUS k,#(n - k))-->T284 ==> false; Discharge ==> QED -- Theorem 287: [Strict monotonicity of addition] ((M in Za) & (N in Za) & (K in N)) ¥imp (M ¥PLUS K in M ¥PLUS N). Proof: Suppose_not(m,n,k) ==> Stat1: (m in Za) & (n in Za) & (k in n) & ((m ¥PLUS k) notin (m ¥PLUS n)) -- -- For suppose that $n$, $m$, $k$ constitute a counterexample to our theorem. -- Since the set $Za$ of integers is an ordinal, its members $n$ and $k$ are both ordinals and -- subsets of $Za$. -- $n$ is plainly different from $k$, and equal to its own cardinality -- T206(*) ==> Stat2: Ord(Za) (Za,n)-->T12(Stat1*) ==> Ord(n) Use_def(Ord)(Stat2) ==> Stat3: (FORALL n in Za | n ¥incin Za) & (FORALL k in n | k ¥incin n) (n,k)-->Stat3(Stat1,Stat1*) ==> Stat4: (n ¥incin Za) & (k ¥incin n) & (k in Za) n-->T207(Stat1,Stat4*) ==> Stat5: (n = #n) & (#n ¥incin Za) -- -- Since $k$ is a subset of $n$, the set-theoretic facts stated just below are immediate. -- It follows from this that $#(n - k)$ is an integer no larger than $#n$. -- Moreover $k$ is a cardinal, and therefore is its own cardinality. -- (Stat4*)ELEM ==> (n = (n - k) + k) & ((n - k) * k = 0) & (n incs (n - k)) k-->T207(Stat1,Stat4*) ==> Stat6: k = #k (n-k,n)-->T170(*) ==> Stat7: (#n incs #(n - k)) (n - k)-->T156(*) ==> Card(#(n - k)) & Ord(#(n - k)) n-->T156(*) ==> Card(#n) & Ord(#n) (#n,#(n - k))-->T34(Stat7*) ==> Stat8: (#(n - k) in #n) or (#(n - k) = #n) (Stat8,Stat5,Stat1*)ELEM ==> Stat9: #(n - k) in Za -- -- It follows easily using Theorem 222 that $n = (#(n - k) ¥PLUS k)$, -- and so by what has been stated above, and a little algebra, it follows that -- $(m ¥PLUS k) notin ((m ¥PLUS k) ¥PLUS #(n - k))$. But the set $n - k$ is nonempty, -- and so by Theorem 284 the second of these sets is strictly larger than the first, -- a contradiction which proves our assertion. -- (n - k,k)-->T222(*) ==> Stat10: (#(n - k) ¥PLUS #k) = #((n - k) + k) (Stat4,Stat4*)ELEM ==> Stat11: (n - k) + k = n ALGEBRA(Stat9,Stat4,Stat1) ==> Stat12: ((m ¥PLUS (#(n - k) ¥PLUS k)) = ((m ¥PLUS k) ¥PLUS #(n - k))) & ((m ¥PLUS k) in Za) EQUAL ==> Stat13: (m ¥PLUS k) notin ((m ¥PLUS k) ¥PLUS #(n - k)) (n - k)-->T285(Stat1,Stat4*) ==> Stat14: #(n - k) /= 0 (m ¥PLUS k,#(n - k))-->T284 ==> false; Discharge ==> QED -- -- Sometimes it is more convenient to use the following trivial corollary of Theorem 287. -- Theorem 288: [Strict monotonicity of addition, 2] ((M in Za) & (N in Za) & (K in N)) ¥imp (K ¥PLUS M in N ¥PLUS M). Proof: Suppose_not(m,n,k) ==> AUTO (k,m)-->T252 ==> AUTO (n,m)-->T252 ==> AUTO (m,n,k)-->T287 ==> AUTO Discharge ==> QED -- -- Next we show that for integers (though not for more general cardinals) cancellation of the common second -- argument of an equality between sums is allowed. -- Theorem 289: [Cancellation] ((M in Za) & (N in Za) & (K in Za) & (M ¥PLUS K = N ¥PLUS K)) ¥imp (M = N). Proof+: Suppose_not(m,n,k) ==> AUTO -- -- Suppose that $n$, $m$, $k$ are a counterexample to our assertion. -- Since the integers $m$ and $n$ are obviously ordinals, -- they are either equal, or one of them is smaller than the other. -- (n,m)-->T31 ==> (n in m) or (n = m) or (m in n) -- -- But since addition is strictly monotone in its second argument by Theorem 286, -- and commutative by Theorem 252, it is impossible that either $m$ or $n$ should be smaller -- than the other, so our result follows. -- (m,k)-->T252 ==> m ¥PLUS k = k ¥PLUS m (n,k)-->T252 ==> AUTO Suppose ==> n in m (k,m,n)-->T286 ==> false; Discharge ==> AUTO Suppose ==> m in n (k,n,m)-->T286 ==> false; Discharge ==> AUTO Discharge ==> QED -- -- Our next theorem asserts that cardinal addition is monotone increasing -- (but not necessarily strictly monotone) in its first argument. -- Theorem 290: [Monotonicity of addition] (M ¥incin N) ¥imp ((M ¥PLUS K) ¥incin (N ¥PLUS K)). Proof: Suppose_not(m,n,k) ==> (m ¥incin n) & (not ((m ¥PLUS k) ¥incin (n ¥PLUS k))) -- -- Indeed, the set monotonicity principle and the monotonicity of cardinality (Theorem 170) -- together rule out the existence of a counterexample $n$, $m$, $k$ to our assertion. -- Use_def(¥PLUS) ==> not (#({[x,0]: x in m} + {[x,1]: x in k}) ¥incin #({[x,0]: x in n} + {[x,1]: x in k})) Set_monot ==> {[x,0]: x in m} ¥incin {[x,0]: x in n} ELEM ==> ({[x,0]: x in m} + {[x,1]: x in k}) ¥incin ({[x,0]: x in n} + {[x,1]: x in k}) ({[x,0]: x in m} + {[x,1]: x in k},{[x,0]: x in n} + {[x,1]: x in k})-->T170 ==> false; Discharge ==> QED -- -- Next we show, using the monotonicity of addition, that for cardinals $m ¥PLUS n$ is never smaller than $n$. -- Theorem 291: [Monotonicity of addition, 2] Card(M) ¥imp ((M ¥incin (I ¥PLUS M)) & (M ¥incin (M ¥PLUS I))). Proof: Suppose_not(m,i) ==> AUTO m-->T164 ==> m = #m m-->T247 ==> AUTO (#m,0)-->T252 ==> AUTO EQUAL ==> (0 ¥PLUS m) = m (m,i)-->T252 ==> AUTO (0,i,m)-->T290 ==> false; Discharge ==> QED -- -- In particular, from the monotonicity of addition it follows that for unsigned integers $m ¥PLUS n$ is never smaller than $n$. -- Theorem 292: [Monotonicity of addition, 3] (M in Za) ¥imp ((M ¥incin (I ¥PLUS M)) & (M ¥incin (M ¥PLUS I)) & ((M ¥PLUS I) notin M) & ((I ¥PLUS M) notin M)). Proof+: Suppose_not(m,i) ==> AUTO (m,i)-->T291 ==> false; Discharge ==> QED -- -- The following easy result asserts that cardinal multiplication is monotone increasing -- (but not necessarily strictly monotone) in its first argument. -- Theorem 293: [Monotonicity of multiplication] (M ¥incin N) ¥imp ((M ¥TIMES K) ¥incin (N ¥TIMES K)). Proof: Suppose_not(m,n,k) ==> AUTO -- -- For the set monotonicity principle and the monotonicity of cardinality (Theorem 170) -- together rule out the existence of a counterexample $n$, $m$, $k$ to our assertion. -- Use_def(¥TIMES) ==> not(#(m ¥PROD k) ¥incin #(n ¥PROD k)) Use_def(¥PROD) ==> not (#{[x,y]: x in m, y in k} ¥incin #{[x,y]: x in n, y in k}) Set_monot ==> {[x,y]: x in m, y in k} ¥incin {[x,y]: x in n, y in k} ({[x,y]: x in m, y in k},{[x,y]: x in n, y in k})-->T170 ==> false; Discharge ==> QED -- -- The following corollary gives the strict version of the preceding result, in case the sets involved are integers. -- Theorem 294: [Strict monotonicity of integer multiplication] ((M in N) & (N in Za) & (K in Za) & (K /= 0)) ¥imp ((M ¥TIMES K) in (N ¥TIMES K)). Proof+: Suppose_not(m,n,k) ==> AUTO -- -- First we can write $n ¥PROD k$ as the disjoint union $(m ¥PROD k) + ((n - m) ¥PROD k)$, -- and since the second term in this union is noempty, $m ¥PROD k$ is a proper subset of $n ¥PROD k$. -- Since all these sets are clearly finite, it follows by Theorem 194 that $#(m ¥PROD k)$ is smaller than -- $#(m ¥PROD k)$. By definition of "$¥TIMES$", this is our assertion. -- (n,m)-->T13 ==> Stat0a: (m ¥incin n) ELEM ==> Stat0: n - m /= 0 Use_def(¥TIMES) ==> not (#(m ¥PROD k) in #(n ¥PROD k)) (m,k,n - m)-->T255(Stat0a,Stat0a*) ==> Stat1a: ((m + (n - m)) ¥PROD k = (m ¥PROD k) + ((n - m) ¥PROD k)) & ((m ¥PROD k) * ((n - m) ¥PROD k) = (m * (n - m)) ¥PROD k) & (n = m + (n - m)) & (m * (n - m) = 0) EQUAL(Stat1a) ==> Stat1: (n ¥PROD k = (m ¥PROD k) + ((n - m) ¥PROD k)) & ((m ¥PROD k) * ((n - m) ¥PROD k) = 0 ¥PROD k) k-->T139 ==> Stat2: (m ¥PROD k) * ((n - m) ¥PROD k) = 0 (k,n - m)-->T250 ==> #((n - m) ¥PROD k) incs #(n - m) (n - m)-->T162(Stat0,Stat0*) ==> #(n - m) /= 0 ELEM ==> Stat2a: #((n - m) ¥PROD k) /= 0 ((n - m) ¥PROD k)-->T162(Stat2a*) ==> Stat3: ((n - m) ¥PROD k) /= 0 (Stat1,Stat2,Stat3)ELEM ==> ((m ¥PROD k) ¥incin (n ¥PROD k)) & ((m ¥PROD k) /= (n ¥PROD k)) (n,k)-->T262 ==> Finite(n ¥PROD k) (n ¥PROD k,m ¥PROD k)-->T194 ==> #(m ¥PROD k) in #(n ¥PROD k) Discharge ==> QED -- -- -- Theorem 295: [The sum of non-negative integers is at least as big at each addend] ((X in Za) & (Y in Za)) ¥imp ((X ¥PLUS Y) notin Y). Proof: Suppose_not(x,y) ==> AUTO -- -- Reasoning by contradiction, and assuming that $x,y$ are a counterexample -- to the assertion which we want to prove... -- y-->T254 ==> (0 ¥PLUS y) = y (x,y)-->T252 ==> (x ¥PLUS y) = (y ¥PLUS x) -- -- if we assume that $x=0$,... -- Suppose ==> x = 0 EQUAL ==> (x ¥PLUS y) = y -- -- we have a conflict with the hypothesis $(x ¥PLUS y) in y$. -- Discharge ==> x /= 0 -- -- On the other hand, since the fact $x /= 0$ enables us to exploit -- Theorem 284, we have again a conflict with the hypothesis that -- $(x ¥PLUS y) in y$. -- (y,x)-->T284 ==> y in (y ¥PLUS x) Discharge ==> QED -- -- We now show that arithmetic addition of integers is strictly monotone -- in its first argument. -- Theorem 296: [Strict monotonicity of addition] ((M in Za) & (N in Za) & (K in Za)) ¥imp (((M ¥PLUS K) ¥incin (N ¥PLUS K)) ¥eq (M ¥incin N)). Proof+: Suppose_not(m,n,k) ==> AUTO -- -- For suppose that $m$, $n$, $k$ constitute a counterexample to our theorem. -- Since we know that addition is non-strictly monotone, it must be that $(m ¥PLUS k) ¥incin (n ¥PLUS k)$, -- but that $m$ is not a subest of $n$. -- (m,n,k)-->T290 ==> ((m ¥PLUS k) ¥incin (n ¥PLUS k)) & (not(m ¥incin n)) -- -- But since all the quantities involved are integers, and therefore both cardinals and ordinals, -- $n$ must be smaller than $n$, and so a contradiction results immediately from Theorem 286 and -- the commutativity of addition (Theorem 252), thereby proving the present theorem. -- ALGEBRA ==> (m ¥PLUS k in Za) & (n ¥PLUS k in Za) (m,n)-->T35 ==> n in m (k,m,n)-->T286 ==> (k ¥PLUS n) in (k ¥PLUS m) (k,n)-->T252 ==> AUTO (k,m)-->T252 ==> AUTO Discharge ==> QED -- -- The following gives yet another version of Theorem 296. -- Theorem 297: [Strict monotonicity of addition] ((M in Za) & (N in M) & (K in Za)) ¥imp ((N ¥PLUS K) in (M ¥PLUS K)). Proof+: Suppose_not(m,n,k) ==> AUTO (Za,m)-->T13 ==> n in Za ALGEBRA ==> (m ¥PLUS k in Za) & (n ¥PLUS k in Za) (m ¥PLUS k,n ¥PLUS k)-->T35 ==> (m ¥PLUS k) ¥incin (n ¥PLUS k) (m,n,k)-->T296 ==> m ¥incin n Discharge ==> QED -- -- Our next lemma tells us that subtracting anything from an integer gives an integer. -- Theorem 298: [Subtraction Lemma] (N in Za) ¥imp ((N ¥MINUS M) in Za). Proof+: Suppose_not(n,m) ==> AUTO Use_def(¥MINUS) ==> (#(n - m) notin Za) ELEM ==> n incs (n - m) (n - m)-->T156 ==> Card(#(n - m)) (n - m)-->T193 ==> Finite(#(n - m)) (#(n - m))-->T206 ==> false; Discharge ==> QED -- Theorem 299: [Strict monotonicity of subtraction] ((N in Za) & (M in Za) & (K in N) & (M incs N)) ¥imp ((M ¥MINUS N) in (M ¥MINUS K)). Proof+: Suppose_not(n,m,k) ==> AUTO -- -- For let $n$, $m$, $k$ be a counterexample to our assertion. It then follows -- by definition that $#(m - n) notin #(m - k)$, so that since all the integers involved must be ordinals -- $k in n$ implies that $k$ is a proper subset of $n$ by Theorem 34. -- Use_def(¥MINUS) ==> #(m - n) notin #(m - k) (n,k)-->T34(*) ==> (k ¥incin n) & (k /= n) -- -- Hence $m - n$ is a proper subset of $m - k$, and since $m$ and thus $m - k$ -- (m,m - k)-->T189(*) ==> Finite(m - k) & ((m - n) ¥incin (m - k)) & ((m - n) /= (m - k)) (m - k,m - n)-->T194(*) ==> false; Discharge ==> QED -- Theorem 300: [Monotonicity of subtraction] (K incs M) ¥imp ((K ¥MINUS N) incs (M ¥MINUS N)). Proof: Suppose_not(k,m,n) ==> AUTO Use_def(¥MINUS) ==> not(#(k - n) incs #(m - n)) (m - n,k - n)-->T170 ==> false; Discharge ==> QED -- Theorem 301: [Monotonicity of subtraction, 2] (M incs N) ¥imp ((K ¥MINUS N) incs (K ¥MINUS M)). Proof: Suppose_not(m,n,k) ==> AUTO Use_def(¥MINUS) ==> not(#(k - n) incs #(k - m)) (k - m,k - n)-->T170 ==> false; Discharge ==> QED -- Theorem 302: [Strict monotonicity of subtraction, 2] ((N in Za) & (M in Za) & (K in M) & (K incs N)) ¥imp ((K ¥MINUS N) in (M ¥MINUS N)). Proof+: Suppose_not(n,m,k) ==> AUTO m-->T164(*) ==> m = #m ELEM ==> k in Za k-->T164 ==> k = #k ALGEBRA ==> ((k ¥MINUS n) in Za) & ((m ¥MINUS n) in Za) (m,k)-->T13(*) ==> k ¥incin m (m,k,n)-->T300(*) ==> (k ¥MINUS n) ¥incin (m ¥MINUS n) (m ¥MINUS n,k ¥MINUS n)-->T34(*) ==> (k ¥MINUS n) = (m ¥MINUS n) EQUAL ==> (k ¥MINUS n) ¥PLUS n = (m ¥MINUS n) ¥PLUS n (n,k)-->T272(*) ==> (k ¥MINUS n) ¥PLUS n = #k (n,m)-->T272(*) ==> (m ¥MINUS n) ¥PLUS n = #m Discharge ==> QED -- -- For let $n$, $m$, $k$ be a counterexample to our assertion. It then follows -- -- The next theorem tells us that two successive subtractions are equivalent to subtraction of a sum, -- at least in the positive integer case which it covers. -- Theorem 303: [Addition-subtraction commutativity] ((M in Za) & (N in Za) & (K in Za) & (N incs M) & ((N ¥MINUS M) incs K)) ¥imp ((N incs (M ¥PLUS K)) & (N ¥MINUS (M ¥PLUS K) = (N ¥MINUS M) ¥MINUS K)). Proof: Suppose_not(m,n,k) ==> AUTO -- -- For consider a potential counterexample $n,m,k$ to our assertion. Plainly $n ¥MINUS m$ and -- $((n ¥MINUS m) ¥MINUS k)$ are integers, and so all the quantities we consider are cardinals. -- ALGEBRA ==> ((n ¥MINUS m) in Za) & (((n ¥MINUS m) ¥MINUS k) in Za) n-->T207(*) ==> n = #n m-->T207(*) ==> m = #m k-->T207(*) ==> k = #k (n ¥MINUS m)-->T207(*) ==> n ¥MINUS m = #(n ¥MINUS m) -- -- Theorem 271 used twice, plus a bit of algebra, tells us that -- $n = ((n ¥MINUS m) ¥MINUS k) ¥PLUS (k ¥PLUS m)$, and so, -- by the monotonicity of addition, $n$ must include $m ¥PLUS k$. -- (m,n)-->T271(*) ==> #n = #m ¥PLUS (n ¥MINUS m) EQUAL ==> n = m ¥PLUS (n ¥MINUS m) ALGEBRA ==> n = (n ¥MINUS m) ¥PLUS m (k,n ¥MINUS m)-->T271(*) ==> #(n ¥MINUS m) = #k ¥PLUS ((n ¥MINUS m) ¥MINUS k) EQUAL ==> (n ¥MINUS m) = k ¥PLUS ((n ¥MINUS m) ¥MINUS k) ALGEBRA ==> (n ¥MINUS m) = ((n ¥MINUS m) ¥MINUS k) ¥PLUS k EQUAL ==> n = (((n ¥MINUS m) ¥MINUS k) ¥PLUS k) ¥PLUS m ALGEBRA ==> n = ((n ¥MINUS m) ¥MINUS k) ¥PLUS (k ¥PLUS m) ELEM ==> ((n ¥MINUS m) ¥MINUS k) incs 0 ALGEBRA ==> Stat1: (0 in Za) & ((m ¥PLUS k) in Za) & ((k ¥PLUS m) in Za) & (((n ¥MINUS m) ¥MINUS k) in Za) & (n ¥MINUS (m ¥PLUS k) in Za) & ((n ¥MINUS m) ¥MINUS k in Za) (0,(n ¥MINUS m) ¥MINUS k,(k ¥PLUS m))-->T296(*) ==> n incs (0 ¥PLUS (k ¥PLUS m)) ALGEBRA ==> (0 ¥PLUS (k ¥PLUS m)) = (m ¥PLUS k) ELEM ==> n incs (m ¥PLUS k) (m ¥PLUS k)-->T207(Stat1*) ==> (m ¥PLUS k) = #(m ¥PLUS k) -- -- Therefore, using Theorem 271 once more, we see that -- $n = (n ¥MINUS (m ¥PLUS k)) ¥PLUS (k ¥PLUS m)$ also. -- Theorem 289 now lets us cancel $k ¥PLUS m$ from these two expressions for $n$, -- thereby obtaining te formula asserted by the present theorem. -- (m ¥PLUS k,n)-->T271(*) ==> n = #(m ¥PLUS k) ¥PLUS (n ¥MINUS (m ¥PLUS k)) EQUAL ==> n = (m ¥PLUS k) ¥PLUS (n ¥MINUS (m ¥PLUS k)) ALGEBRA ==> n = (n ¥MINUS (m ¥PLUS k)) ¥PLUS (k ¥PLUS m) (n ¥MINUS (m ¥PLUS k),(n ¥MINUS m) ¥MINUS k,k ¥PLUS m)-->T289(*) ==> false; Discharge ==> QED -- -- Theorem 304: [Subtraction reverses addition] ((M in Za) & (N in Za)) ¥imp ((M ¥PLUS N) ¥MINUS N = M). Proof: Suppose_not(m,n) ==> (m in Za) & (n in Za) & ((m ¥PLUS n) ¥MINUS n /= m) -- -- For suppose that $m$, $n$ is a counterexample to our assertion. $m ¥PLUS n$ and -- $((m ¥PLUS n) ¥MINUS n)$, and $m ¥PLUS n$ are easily seen to be integers. -- Since addition is monotone and $0 ¥PLUS n = n$, we have $n ¥incin (m ¥PLUS n)$. -- ALGEBRA ==> m ¥PLUS n in Za (m ¥PLUS n,n)-->T283 ==> ((m ¥PLUS n) ¥MINUS n) in Za (n,m)-->T292 ==> n ¥incin (m ¥PLUS n) -- -- The subtraction lemma (Theorem 271) now tells us that $#(m ¥PLUS n) = #n ¥PLUS ((m ¥PLUS n) ¥MINUS n)$, -- and since $n$ and $(m ¥PLUS n)$ are cardinals, we get $m ¥PLUS n = n ¥PLUS ((m ¥PLUS n) ¥MINUS n)$ -- = $((m ¥PLUS n) ¥MINUS n) ¥PLUS n$, from which $(m ¥PLUS n) ¥MINUS n = m$ follows by cancellation, -- proving our theorem. -- (n,m ¥PLUS n)-->T271 ==> #(m ¥PLUS n) = #n ¥PLUS ((m ¥PLUS n) ¥MINUS n) n-->T207 ==> n = #n (m ¥PLUS n)-->T207 ==> (m ¥PLUS n) = #(m ¥PLUS n) EQUAL ==> #(m ¥PLUS n) = n ¥PLUS ((m ¥PLUS n) ¥MINUS n) EQUAL ==> (m ¥PLUS n) = n ¥PLUS ((m ¥PLUS n) ¥MINUS n) ALGEBRA ==> m ¥PLUS n = ((m ¥PLUS n) ¥MINUS n) ¥PLUS n (m,(m ¥PLUS n) ¥MINUS n,n)-->T289 ==> false; Discharge ==> QED -- -- Our next, entirely elementary, lemma simply tells us that the cardinality of any singleton is 1. -- Theorem 305: [Singletons have one element] #{S} = {0}. Proof: Suppose_not(s) ==> #{s} /= {0} -- -- For {0}, as the sucessor of 0, is clearly a caridnal, and so our assertion is -- equivalent to #{s} /= #{0}. -- T211 ==> Card(1) Use_def(next) ==> next(0) = {0} Use_def(1) ==> 1 = next(0) Use_def(next) ==> 1 = 0 + {0} ELEM ==> 1 = {0} EQUAL ==> Card({0}) {0}-->T164 ==> #{0} = {0} -- -- But the map {[s,0]} evidently sends {s} to {0} and is 1-1, -- our assertion is immediate from Theorem 157. -- Use_def(domain) ==> Stat1: domain({[s,0]}) = {car(x): x in {[s,0]}} SIMPLF ==> {car(x): x in {[s,0]}} = {car([s,0])} ELEM ==> {car([s,0])} = {s} (Stat1*)ELEM ==> domain({[s,0]}) = {s} Use_def(range) ==> Stat2: range({[s,0]}) = {cdr(x): x in {[s,0]}} SIMPLF(Stat2*) ==> Stat3: range({[s,0]}) = {cdr([s,0])} (Stat3)ELEM ==> range({[s,0]}) = {0} TELEM ==> one_1_map({[s,0]}) {[s,0]}-->T157 ==> #domain({[s,0]}) = #range({[s,0]}) EQUAL ==> #{s} = #{0} Discharge ==> QED -- -- Our next, entirely elementary, lemma simply tells us that the cardinality of any -- subset of a singleton is either 0 or 1. -- Theorem 306: ({X} incs Y) ¥imp (#Y in 2). Proof: Suppose_not(x0,y0) ==> AUTO TELEM ==> (2 = {0,1}) & (#{x0} = 1) Suppose ==> y0 = 0 y0-->T162(*) ==> false Discharge ==> (y0 = {x0}) & (#y0 /= 1) EQUAL ==> false Discharge ==> QED -- -- The following lemma characterizes sets of cardinality 1 as being -- those sets $x$ which are formed by their own $arb(x)$ alone. -- Theorem 307: (#X = 1) ¥eq (X = {arb(X)}). Proof: Suppose_not(x0) ==> AUTO -- -- For, assuming the contrary, we derive a contradiction -- by arguing as follows. Recall the definition of the -- number 1 and the fact that all singletons have cardinality 1. -- TELEM ==> 1 = {0} (arb(x0))-->T305 ==> #{arb(x0)} = {0} -- -- We readily see that the failing implication must be -- $(#X = 1) ¥imp (X = {arb(X)})$. -- Suppose ==> (x0 = {arb(x0)}) & (#x0 /= 1) EQUAL ==> false Discharge ==> (#x0 = {0}) & (x0 /= {arb(x0)}) -- -- However, we know that a set $x0$ of non-null cardinality -- must be non-null, and therefore meets the condition -- $arb(x0) in x0$. -- In the case at hand, since we are assuming that $x0$ has finite -- cardinality (specifically, 1), it follows that $x0$ is finite: -- therefore, if the inclusion $x0 incs {arb(x0)}$ could be strict -- then the cardinality $#x0$ would exceed 1. -- 0-->T201 ==> Finite({0}) EQUAL ==> Finite(#x0) x0-->T193 ==> Finite(x0) x0-->T162 ==> arb(x0) in x0 (x0,{arb(x0)})-->T235 ==> false Discharge ==> QED -- -- Our next theorem combines preceding results to show that if $m$ and $n$ are integers, -- $n$ being nonzero, then $m$ can be written as a sum $n = q ¥TIMES n ¥PLUS r$, where $q$ is the -- integer quotient of $m$ by $n$, and $r$ is a remainder less than $n$. -- Theorem 308: [Integer division with remainder] ((M in Za) & (N in Za) & (N /= 0)) ¥imp (((M ¥OVER N) in Za) & (M incs ((M ¥OVER N) ¥TIMES N)) & ((M ¥MOD N) in N)). Proof+: Suppose_not(m,n) ==> Stat1: (m in Za) & (n IN Za) & (n /= 0) & (not(((m ¥OVER n) in Za) & (m incs ((m ¥OVER n) ¥TIMES n)) & ((m ¥MOD n) in n))) -- -- For suppose that our theorem has a counterexample $m$, $n$. Consider the set $s$ of all integers -- of the form $m ¥MINUS (p ¥TIMES n)$, where $p$ ranges over all integers such that $(p ¥TIMES n)$ -- is no larger than $n$. This set cannot be empty, since by setting $p = 0$ we see that -- $m$ must belong to it. -- n-->T207(*) ==> n = #n m-->T207(*) ==> Stat2: m = #m Suppose ==> Stat3: {m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)} = 0 0-->Stat3 ==> not((m = m ¥MINUS (0 ¥TIMES n)) & (0 in Za) & (m incs (0 ¥TIMES n))) ALGEBRA ==> 0 ¥TIMES n = 0 ELEM ==> m /= m ¥MINUS (0 ¥TIMES n) EQUAL ==> m /= m ¥MINUS 0 m-->T268(*) ==> m ¥MINUS 0 = m Discharge ==> {m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)} /= 0 -- -- Let $r = q ¥TIMES n$ be the smallest integer in the set $s$, so that by the axiom of choice -- $r$ belongs to and is disjoint from $s$. q and r are plainly integers. -- Loc_def ==> r = arb({m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)}) {m ¥MINUS (q ¥TIMES n): q in Za | m incs (q ¥TIMES n)}-->T0 ==> Stat4: (r in {m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)}) & (r * {m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)} = 0) q-->Stat4 ==> Stat5: (r = m ¥MINUS (q ¥TIMES n)) & (q in Za) & (m incs (q ¥TIMES n)) q-->T207(*) ==> Stat6: q = #q ALGEBRA ==> ((q ¥TIMES n) in Za) & (r in Za) -- -- If $r$ is not smaller than $n$, it follows by Theorem 303 that $m$ is at least as large as $(q ¥TIMES n) ¥PLUS n$, -- and that $m ¥MINUS ((q ¥TIMES n) ¥PLUS n) = (m ¥MINUS (q ¥TIMES n)) ¥MINUS n$. It follows, using a little algebra, -- that $m$ is at least as large as $((q ¥PLUS 1) ¥TIMES n)$, so $(m ¥MINUS ((q ¥PLUS 1) ¥TIMES n))$ -- must belong to the set $s$ considered above. Since $r = arb(s)$, it follows that -- $(m ¥MINUS ((q ¥PLUS 1) ¥TIMES n)) = r ¥MINUS n$ cannot be a member of $r$, contradicting Theorem 284. Hence -- we must have $r in n$. -- r-->T207 ==> r = #r Suppose ==> r incs n EQUAL ==> (m ¥MINUS (q ¥TIMES n)) incs n (q ¥TIMES n,m,n)-->T303(*) ==> (m incs ((q ¥TIMES n) ¥PLUS n)) & (m ¥MINUS ((q ¥TIMES n) ¥PLUS n) = (m ¥MINUS (q ¥TIMES n)) ¥MINUS n) ALGEBRA ==> (q ¥TIMES n) ¥PLUS n = ((q ¥PLUS 1) ¥TIMES n) EQUAL ==> m incs ((q ¥PLUS 1) ¥TIMES n) ALGEBRA ==> (q ¥PLUS 1) in Za Suppose ==> Stat7: (m ¥MINUS ((q ¥PLUS 1) ¥TIMES n)) notin {m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)} (q ¥PLUS 1)-->Stat7 ==> not(((m ¥MINUS ((q ¥PLUS 1) ¥TIMES n)) = (m ¥MINUS ((q ¥PLUS 1) ¥TIMES n))) & ((q ¥PLUS 1) in Za) & (m incs ((q ¥PLUS 1) ¥TIMES n))) Discharge ==> (m ¥MINUS ((q ¥PLUS 1) ¥TIMES n)) in {m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)} ELEM ==> (m ¥MINUS ((q ¥PLUS 1) ¥TIMES n)) notin r EQUAL ==> ((m ¥MINUS (q ¥TIMES n)) ¥MINUS n) notin r EQUAL ==> Stat8: (r ¥MINUS n) notin r (n,r)-->T271(*) ==> #r = #n ¥PLUS (r ¥MINUS n) EQUAL ==> r = n ¥PLUS (r ¥MINUS n) ALGEBRA ==> r = (r ¥MINUS n) ¥PLUS n (r,n)-->T283(*) ==> r ¥MINUS n in Za (r ¥MINUS n,n)-->T284(*) ==> Stat9: (r ¥MINUS n) in r (Stat8,Stat9)Discharge ==> Stat9a: not(r incs n) ELEM ==> Ord(n) & Ord(r) (n,r)-->T35(Stat9a*) ==> Stat10: r in n -- -- Our next aim is to show that $q$ = $m ¥OVER n$ = $Un({k in Za | (k ¥TIMES n) ¥incin m})$. To this end we -- first note that $q in {k in Za | (k ¥TIMES n) ¥incin m}$, and therefore every member of $q$ belongs to -- $Un({k in Za | (k ¥TIMES n) ¥incin m})$, so that $q$ is included in this set. -- Suppose ==> Stat11: q notin {k in Za | (k ¥TIMES n) ¥incin m} ()-->Stat11 ==> false; Discharge ==> q in {k in Za | (k ¥TIMES n) ¥incin m} Suppose ==> Stat12: not (Un({k in Za | (k ¥TIMES n) ¥incin m}) incs q) c-->Stat12 ==> (c in q) & (c notin Un({k in Za | (k ¥TIMES n) ¥incin m})) Use_def(Un) ==> Stat13: c notin {v: u in {k in Za | (k ¥TIMES n) ¥incin m}, v in u} SIMPLF ==> {v: u in {k in Za | (k ¥TIMES n) ¥incin m}, v in u} = {v: k in Za , v in k | (k ¥TIMES n) ¥incin m} (Stat13)ELEM ==> Stat14: c notin {v: k in Za , v in k | (k ¥TIMES n) ¥incin m} (q,c)-->Stat14 ==> false; Discharge ==> Un({k in Za | (k ¥TIMES n) ¥incin m}) incs q -- -- Next suppose that $Un({k in Za | (k ¥TIMES n) ¥incin m})$ is not included in $q$, so that -- Suppose ==> Stat15: not (Un({k in Za | (k ¥TIMES n) ¥incin m})) ¥incin q d-->Stat15 ==> (d in Un({k in Za | (k ¥TIMES n) ¥incin m})) & (d notin q) Use_def(Un) ==> d in {v: u in {k in Za | (k ¥TIMES n) ¥incin m}, v in u} SIMPLF ==> Stat16: d in {v: k in Za , v in k | (k ¥TIMES n) ¥incin m} (k1,v1)-->Stat16 ==> Stat17: (v1 notin q) & (k1 in Za) & (v1 in k1) & ((k1 ¥TIMES n) ¥incin m) (k1,v1)-->T13(*) ==> Stat19: k1 incs v1 (q,v1)-->T31(*) ==> (q in v1) or (q = v1) (Stat17*)ELEM ==> q in k1 (q,k1,n)-->T294(*) ==> (q ¥TIMES n) in (k1 ¥TIMES n) ALGEBRA ==> k1 ¥TIMES n in Za (k1 ¥TIMES n,m,q ¥TIMES n)-->T299(*) ==> Stat20: m ¥MINUS (k1 ¥TIMES n) in m ¥MINUS (q ¥TIMES n) (Stat5,Stat20)ELEM ==> Stat21: m ¥MINUS (k1 ¥TIMES n) in r Suppose ==> Stat22: m ¥MINUS (k1 ¥TIMES n) notin {m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)} k1-->Stat22 ==> false; Discharge ==> Stat23: m ¥MINUS (k1 ¥TIMES n) in {m ¥MINUS (p ¥TIMES n): p in Za | m incs (p ¥TIMES n)} -- -- This contradiction proves that $q$ = $Un({k in Za | (k ¥TIMES n) ¥incin m})$ as asserted, -- and then by definition $q$ = $m ¥OVER n$ and $m ¥MOD n = r$ -- (Stat4,Stat23,Stat21)Discharge ==> q = Un({k in Za | (k ¥TIMES n) ¥incin m}) Use_def(¥OVER) ==> Stat24: q = m ¥OVER n EQUAL(Stat5) ==> Stat25: (m ¥OVER n in Za) & (m incs ((m ¥OVER n) ¥TIMES n)) EQUAL(Stat5,Stat24) ==> (r = m ¥MINUS ((m ¥OVER n) ¥TIMES n)) Use_def(¥MOD) ==> Stat26: m ¥MOD n = r EQUAL(Stat10,Stat26) ==> Stat27: (m ¥MOD n) in n (Stat1,Stat25,Stat27)Discharge ==> QED -- -- Our next theorem states and generalizes the fact that if the product -- of two cardinal numbers is zero, one of them must be zero. -- Theorem 309: [If an integer product is zero, one of its factors is 0] (N ¥TIMES M = 0) ¥eq (N = 0 or M = 0). Proof: Suppose_not(n,m) ==> (((n ¥TIMES m = 0) & (n /= 0) & (m /= 0)) or ((n = 0 or m = 0) & (not (n ¥TIMES m = 0)))) (n,m)-->T230 ==> (n ¥TIMES m) = (#n ¥TIMES #m) EQUAL ==> (((#n ¥TIMES #m = 0) & (n /= 0) & (m /= 0)) or ((n = 0 or m = 0) & (not (#n ¥TIMES #m = 0))))-- -- For let $n$ and $m$ form a counterexample to our assertion, and first suppose that -- $#n ¥TIMES #m is 0$, but neither $n$ nor $m$ is $0$, so that these sets contain singletons -- ${c}$ and ${d}$ respectively. Then by Theorem 170 and Theorem 305, ${0}$ is a subset of both $#n$ and $#m$. -- Suppose ==> (#n ¥TIMES #m = 0) & Stat1: (n /= 0) & Stat2: (m /= 0) c-->Stat1 ==> {c} ¥incin n d-->Stat2 ==> {d} ¥incin m ({c},n)-->T170 ==> #{c} ¥incin #n ({d},m)-->T170 ==> #{d} ¥incin #m d-->T305 ==> Stat3: {0} ¥incin #m c-->T305 ==> Stat4: {0} ¥incin #n -- -- It follows easily that $[0,0]$ is a member of $(#n ¥PROD #m)$, which must therefore -- have cardinality at least $1$. This contradiction shows that if our theorem is false, -- one of $m$ and $n$ must be $0$, while $#n ¥TIMES #m$ is nonzero. -- Suppose ==> [0,0] notin #n ¥PROD #m Use_def(¥PROD) ==> Stat5: [0,0] notin {[x,y]: x in #n, y in #m} (0,0)-->Stat5 ==> Stat6: not(([0,0] = [0,0]) & (0 in #n) & (0 in #m)) (Stat3,Stat4,Stat6)Discharge ==> [0,0] in #n ¥PROD #m ELEM ==> {[0,0]} ¥incin (#n ¥PROD #m) Set_monot ==> #{[0,0]} ¥incin #(#n ¥PROD #m) ([0,0])-->T305 ==> {0} ¥incin #(#n ¥PROD #m) Use_def(¥TIMES) ==> {0} ¥incin (#n ¥TIMES #m) Discharge ==> (n = 0 or m = 0) & (#n ¥TIMES #m /= 0) -- -- But now our conclusion follows immediately from the fact that $0 ¥TIMES m = #(0 ¥PROD #m)$ -- and $m ¥TIMES 0$ are both $0$. -- T188 ==> Card(0) 0-->T164 ==> #0 = 0 Suppose ==> n = 0 EQUAL ==> #n = #0 EQUAL ==> 0 ¥TIMES #m /= 0 (#m)-->T246 ==> false; Discharge ==> m = 0 EQUAL ==> #m = #0 EQUAL ==> not (#n ¥TIMES #0 = 0) (n,0)-->T230 ==> not (n ¥TIMES 0 = 0) n-->T245 ==> false; Discharge ==> QED -- -- The following very easy result tells us that arithmetic subtraction -- is monotone increasing in its first parameter. -- Theorem 310: [Subtraction monotonicity lemma] (N incs M) ¥imp ((N ¥MINUS K) incs (M ¥MINUS K)). Proof: Suppose_not(n,m,k) ==> (n incs m) & (not((n ¥MINUS k) incs (m ¥MINUS k))) -- -- For otherwise, by definition of subtraction and the monotonicity of cardinality -- we would have $not (n - k incs m - k)$, which is impossible. -- Use_def(¥MINUS) ==> not(#(n - k) incs #(m - k)) (m - k,n - k)-->T170 ==> not (n - k incs m - k) Discharge ==> QED -- -- Next we show that if $m$ is a subset of $m$ and $n$ is finite, the cardinality of -- the difference set $n - m$ is the cardinality of the difference of the cardinalities $#n$ and $#m$. -- Theorem 311: [Cardinality of set difference] (Finite(N) & (N incs M)) ¥imp (#(N - M) = #(#N - #M)). Proof: Suppose_not(n,m) ==> Finite(n) & (n incs m) & (#(n - m) /= #(#n - #m)) -- -- For let $n$, $m$ be a counterexample. Since $n incs m$, we must have $#n incs #m$. -- Our aim is to prove that $#(n - m) ¥PLUS #m /= #(#n - #m) ¥PLUS #m$ and then use -- cancellation to obtain the stated conclusion of our theorem. -- We begin by using Theorem 271 twice to derive $#m ¥PLUS #(#n - #m) = #m ¥PLUS (n ¥MINUS m)$. -- (m,n)-->T170 ==> #n incs #m Use_def(¥MINUS) ==> #(n - m) = n ¥MINUS m (m,n)-->T271 ==> #n = #m ¥PLUS (n ¥MINUS m) EQUAL ==> #n = #m ¥PLUS #(n - m) Use_def(¥MINUS) ==> #(#n - #m) = #n ¥MINUS #m (#m,#n)-->T271 ==> ##n = ##m ¥PLUS (#n ¥MINUS #m) EQUAL ==> ##n = ##m ¥PLUS #(#n - #m) n-->T166 ==> ##n = #n m-->T166 ==> ##m = #m -- -- But since all the cardinalities involved in the equation mentioned above are integers, -- the rules of algebra apply and make it clear that the rule of cancellation applies also. -- Thus our conclusion follows. -- EQUAL ==> #n = #m ¥PLUS #(#n - #m) n-->T193 ==> Finite(#n) (n,n - m)-->T189 ==> Finite(n - m) & Finite(m) (#n,#n - #m)-->T189 ==> Finite(#n - #m) (n - m)-->T193 ==> Finite(#(n - m)) (#n - #m)-->T193 ==> Finite(#(#n - #m)) (n - m)-->T156 ==> Card(#(n - m)) m-->T156 ==> Card(#m) (#n - #m)-->T156 ==> Card(#(#n - #m)) (#m)-->T206 ==> #m in Za (#(n - m))-->T206 ==> #(n - m) in Za (#(#n - #m))-->T206 ==> #(#n - #m) in Za ALGEBRA ==> ((#m ¥PLUS #(n - m) = #(n - m) ¥PLUS #m)) & ((#m ¥PLUS #(#n - #m) = #(#n - #m) ¥PLUS #m)) ELEM ==> Stat1: #(n - m) ¥PLUS #m = #(#n - #m) ¥PLUS #m (Stat1*)ELEM ==> (n incs n - m) & (#n incs #n - #m) (#(n - m),#(#n - #m),#m)-->T289 ==> false; Discharge ==> QED -- -- -- The following theorem states the fact that integer addition is strictly monotone in its first argument. -- Theorem 312: [Strong monotonicity of integer addition] ((N in Za) & (M in Za) & (K in Za)) ¥imp ((N incs M) ¥eq ((N ¥PLUS K) incs (M ¥PLUS K))). Proof: Suppose_not(n,m,k) ==> (n in Za) & (m in Za) & (k in Za) & (not((n incs m) ¥eq ((n ¥PLUS k) incs (m ¥PLUS k)))) -- -- Suppose that $n$, $m$, $k$ are a counterexample to our assertion. If $n incs m$ -- our conclusion follows immediately from the definition of addition and the principle of set monotonicity. -- Suppose ==> (n incs m) & (not((n ¥PLUS k) incs (m ¥PLUS k))) Use_def(¥PLUS) ==> not(#({[x,0]: x in n} + {[x,1]: x in k}) incs #({[x,0]: x in m} + {[x,1]: x in k})) ({[x,0]: x in m} + {[x,1]: x in k},{[x,0]: x in n} + {[x,1]: x in k})-->T170 ==> not(({[x,0]: x in n} + {[x,1]: x in k}) incs ({[x,0]: x in m} + {[x,1]: x in k})) Set_monot ==> {[x,0]: x in n} incs {[x,0]: x in m} Discharge ==> (not(n incs m)) & ((n ¥PLUS k) incs (m ¥PLUS k)) -- -- Thus we must have $(n ¥PLUS k) incs (m ¥PLUS k)$ but $not (n incs m)$, which since -- addition is (nonstrictly) monotone is impossible by Theorem 304. -- ((n ¥PLUS k),(m ¥PLUS k),k)-->T310 ==> ((n ¥PLUS k) ¥MINUS k) incs ((m ¥PLUS k) ¥MINUS k) (n,k)-->T304 ==> n incs ((m ¥PLUS k) ¥MINUS k) (m,k)-->T304 ==> false; Discharge ==> QED -- -- Our next, very easy result states the inverse relationship between arithmetic addition and -- subtraction in a very general but slightly unusual way. -- Theorem 313: [Addition reverses subtraction] (N incs M) ¥imp (#N = #M ¥PLUS #(N - M)). Proof: Suppose_not(n,m) ==> (n incs m) & (#n /= #m ¥PLUS #(n - m)) -- -- For if not we must have #n /= #m ¥PLUS #(n - m), and so using the definition of subtraction -- we find a contradiction With Theorem 271. -- (m,n)-->T271 ==> #n = #m ¥PLUS (n ¥MINUS m) Use_def(¥MINUS) ==> (n ¥MINUS m) = #(n - m) EQUAL ==> #(n ¥MINUS m) = ##(n - m) (n - m)-->T166 ==> #(n ¥MINUS m) = #(n - m) EQUAL ==> false; Discharge ==> QED -- -- Our next result states an elementary arithmetic relationship between integer subtraction and addition, -- but only in the case in which all the quantities involved are non-negative. -- Theorem 314: [Addition-subtraction commutativity, 2] ((N in Za) & (M in Za) & (K in Za) & (N incs M)) ¥imp ((N ¥PLUS K) ¥MINUS (M ¥PLUS K) = N ¥MINUS M). Proof: Suppose_not(n,m,k) ==> (n in Za) & (m in Za) & (k in Za) & (n incs m) & ((n ¥PLUS k) ¥MINUS (m ¥PLUS k) /= n ¥MINUS m) -- -- For suppose that $n$, $m$, $k$ are a couterexample to our assertion. -- Since all the quantities involved are integers, we can reassociate to write -- $(n ¥MINUS m) ¥PLUS (m ¥PLUS k)$ as $((n ¥MINUS m) ¥PLUS m) ¥PLUS k$, -- and then use Theorem 272 to reduce this last quantity to $n ¥PLUS k$. -- (n,k)-->T283 ==> (n ¥PLUS k) in Za (m,k)-->T283 ==> (m ¥PLUS k) in Za (n,m)-->T283 ==> (n ¥MINUS m) in Za (n ¥PLUS k,m ¥PLUS k)-->T283 ==> ((n ¥PLUS k) ¥MINUS (m ¥PLUS k)) in Za ALGEBRA ==> (n ¥MINUS m) ¥PLUS (m ¥PLUS k) = ((n ¥MINUS m) ¥PLUS m) ¥PLUS k n-->T207 ==> n = #n (n ¥PLUS k)-->T207 ==> (n ¥PLUS k) = #(n ¥PLUS k) (m,n)-->T272 ==> (n ¥MINUS m) ¥PLUS m = n EQUAL ==> (n ¥MINUS m) ¥PLUS (m ¥PLUS k) = (n ¥PLUS k) (m,n,k)-->T290 ==> (n ¥PLUS k) incs (m ¥PLUS k) -- -- Now, subtracting $m ¥PLUS k$ from $n ¥PLUS k$ and then immediately adding it back, we find that -- -- $((n ¥MINUS m) ¥PLUS (m ¥PLUS k) ¥MINUS (m ¥PLUS k)) ¥PLUS (m ¥PLUS k) = (n ¥PLUS k)$ -- -- so that our conclusion follows immediately from Theorem 289. -- (m ¥PLUS k,n ¥PLUS k)-->T272 ==> ((n ¥PLUS k) ¥MINUS (m ¥PLUS k)) ¥PLUS (m ¥PLUS k) = (n ¥PLUS k) ((n ¥PLUS k) ¥MINUS (m ¥PLUS k),n ¥MINUS m,m ¥PLUS k)-->T289 ==> false; Discharge ==> QED -- -- Next we restate Theorem 271 into form useful independent of which of -- the two sets $n$ and $m$ has the larger cardinality. -- Theorem 315: [Addition-subtraction lemma] ((N in Za) & (M in Za)) ¥imp (N = (M ¥PLUS (N ¥MINUS M)) or N = (M ¥MINUS (M ¥MINUS N))). Proof+: Suppose_not(n,m) ==> AUTO -- -- Since one of the two ordinals n and m must include the other, -- our conclusion follows immediately by two applications of Theorem 271 and one -- of Theorem 304. -- n-->T207 ==> n = #n m-->T207 ==> m = #m (n,m)-->T29 ==> (n ¥incin m) or (m ¥incin n) Suppose ==> m ¥incin n (m,n)-->T271 ==> n = (#m ¥PLUS (n ¥MINUS m)) EQUAL ==> false; Discharge ==> n ¥incin m (n,m)-->T271 ==> m = (#n ¥PLUS (m ¥MINUS n)) EQUAL ==> m = (n ¥PLUS (m ¥MINUS n)) ALGEBRA ==> (m ¥MINUS n) in Za (n,m ¥MINUS n)-->T304 ==> n = (n ¥PLUS (m ¥MINUS n)) ¥MINUS (m ¥MINUS n) EQUAL ==> false; Discharge ==> QED --- --- ================ Additional theorems concerning unsigned integers ===================== -- -- Our next theorem states that the arithmetic increment of any set $n$ by $1$, -- is the cardinality of the immediate successor of $n$. -- Theorem 316: [The successor integer as a sum] (N ¥PLUS 1) = #next(N). Proof: -- -- For, if not, we could take an $n$ whose unitary increment $n ¥PLUS 1$ -- differs from the cardinality $#next(n)$ of its immediate successor. -- Suppose_not(n) ==> Stat1: (n ¥PLUS 1) /= #next(n) -- -- But on the other hand, it follows from the theorems -- $N ¥PLUS M = N ¥PLUS #M$ and $#{M}={0}$, exploiting the definitions -- of $1$ and $next$ and elementary reasoning, that -- $n ¥PLUS {n} = n ¥PLUS #{n}$ = $n ¥PLUS 1$. -- (n,{n})-->T226 ==> Stat2: (n ¥PLUS {n}) = (n ¥PLUS #{n}) n-->T305 ==> Stat3: #{n} = {0} Use_def(1) ==> 1 = next(0) Use_def(next) ==> Stat4: 1 = 0 + {0} (Stat3,Stat4)ELEM ==> Stat5: (n * {n} = 0) & (#{n} = 1) Use_def(next) ==> Stat6: #next(n) = #(n + {n}) -- -- Since $n$ and ${n}$ are disjoint, we also have $n ¥PLUS {n} = #next(n)$. -- (n,{n})-->T220 ==> Stat7: (n ¥PLUS {n}) = #(n + {n}) -- -- This leads to a contradiction which proves our assertion. -- EQUAL(Stat6,Stat7,Stat2,Stat5) ==> Stat8: #next(n) = (n ¥PLUS 1) (Stat8,Stat1)Discharge ==> QED -- -- An immediate corollary of Theorem 316 is that the increment by $1$ -- of any unsigned integer $N$, and the immediate successor of $N$, are the same: -- Theorem 317: [The successor integer as a sum, 2] (N in Za) ¥imp ((next(N) in Za) & ((N ¥PLUS 1) = next(N))). Proof: -- For, if not, we could take an unsigned integer n whose unitary -- increment $n ¥PLUS 1$ differs from its immediate successor $next(n)$. Suppose_not(n) ==> Stat1: (n in Za) & ((next(N) notin Za) or ((n ¥PLUS 1) /= next(n))) -- -- However, the unsigned integers are precisely the finite cardinals; so $n$ must be a finite cardinal. -- n-->T206 ==> Finite(n) & Card(n) -- -- Therefore $next(n)$ is a finite cardinal, and accordingly it equals its -- own cardinality. By Theorem abc, this leads us to a contradiction -- which proves our theorem. -- Use_def(Card) ==> Ord(n) n-->T32 ==> Ord(next(n)) n-->T200 ==> Finite(next(n)) (next(n))-->T205 ==> Card(next(n)) (next(n))-->T206 ==> Stat2: next(n) in Za (next(n))-->T164 ==> Stat3: next(n) = #next(n) n-->T316 ==> Stat4: (n ¥PLUS 1) = #next(n) (Stat1,Stat3,Stat4,Stat2)Discharge ==> QED -- -- The following useful combinatorial lemma is dear to Alberto Policriti -- Theorem 318: [To witness that $n$ sets are different, fewer than $n$ elements suffice] (Finite(F) & (F /= 0)) ¥imp (EXISTS d ¥incin Un(F) | (#d in #F) & (FORALL w in F, y in F | (w * d = y * d) ¥imp (w = y))). Proof: Suppose_not(f) ==> Finite(f) & (f /= 0) & (not(EXISTS d ¥incin Un(f) | (#d in #f) & (FORALL w in f, y in f | (w * d = y * d) ¥imp (w = y)))) -- -- For, assuming the contrary, we would have an inclusion-minimal $f0$ contradicting the claim. -- APPLY(m1_thryvar:f0) finite_induction(n->f,P(x)->((x /= 0) & (not(EXISTS d ¥incin Un(x) | (#d in #x) & (FORALL w in x, y in x | (w * d = y * d) ¥imp (w = y)))))) ==> Stat1: (not(EXISTS d ¥incin Un(f0) | (#d in #f0) & (FORALL w in f0, y in f0 | (w * d = y * d) ¥imp (w = y)))) & (f0 ¥incin f) & (f0 /= 0) & Stat2: (FORALL k ¥incin f0 | ((k /= f0) ¥imp (not ((k /= 0) & (not(EXISTS d ¥incin Un(k) | (#d in #k) & (FORALL w in k, y in k | (w * d = y * d) ¥imp (w = y)))))))) (f,f0)-->T189(*) ==> Stat3: Finite(f0) -- -- Such an $f0$ cannot be a singleton, because the claim vacuously holds for singletons. -- Suppose ==> Stat4: f0 = {arb(f0)} 0-->Stat1(Stat1,Stat1*) ==> (#0 notin #f0) or (not(FORALL w in f0, y in f0 | (w * 0 = y * 0) ¥imp (w = y))) (arb(f0))-->T305(Stat4*) ==> #{arb(f0)} = {0} 0-->T162(Stat4*) ==> #0 = 0 EQUAL(Stat4) ==> #f0 = {0} (Stat4*)ELEM ==> Stat5: (not(FORALL w in f0, y in f0 | (w * 0 = y * 0) ¥imp (w = y))) (w0,y0)-->Stat5(Stat4*) ==> false Discharge ==> AUTO -- -- But then the minimality assumption yields that the claim holds, for some $d = d0$, when -- $F = f0 - {arb(f0)}$. -- (f0 - {arb(f0)})-->Stat2(Stat1) ==> Stat6: (EXISTS d ¥incin Un(f0 - {arb(f0)}) | (#d in #(f0 - {arb(f0)})) & (FORALL w in (f0 - {arb(f0)}), y in (f0 - {arb(f0)}) | (w * d = y * d) ¥imp (w = y))) d0-->Stat6(Stat6*) ==> Stat7: (FORALL w in (f0 - {arb(f0)}), y in (f0 - {arb(f0)}) | (w * d0 = y * d0) ¥imp (w = y)) & (d0 ¥incin Un(f0 - {arb(f0)})) & (#d0 in #(f0 - {arb(f0)})) -- -- Observe that $arb(f0)$ is indiscernible, relative to $d0$, from some element $w1$ of $f0 - {arb(f0)}$. -- f0-->T109(Stat1*) ==> Un(f0) = (arb(f0) + Un(f0 - {arb(f0)})) Suppose ==> Stat8: {v in (f0 - {arb(f0)}) | v * d0 = arb(f0) * d0} = 0 (f0 - {arb(f0)},f0)-->T170(Stat7*) ==> #(f0 - {arb(f0)}) ¥incin #f0 d0-->Stat1(Stat7*) ==> Stat9: not(FORALL w in f0, y in f0 | (w * d0 = y * d0) ¥imp (w = y)) (w,y)-->Stat9(Stat9*) ==> (w in f0) & (y in f0) & (w /= y) & (w * d0 = y * d0) (w,y)-->Stat7(Stat9*) ==> not((w /= arb(f0)) & (y /= arb(f0))) Suppose ==> w = arb(f0) y-->Stat8(Stat9*) ==> false Discharge ==> AUTO (Stat9*)ELEM ==> w * d0 = arb(f0) * d0 w-->Stat8(Stat9*) ==> false Discharge ==> AUTO (Stat7)ELEM ==> Stat10: arb({v in (f0 - {arb(f0)}) | v * d0 = arb(f0) * d0}) in {v: v in (f0 - {arb(f0)}) | v * d0 = arb(f0) * d0} w1-->Stat10(Stat10*) ==> Stat11: (w1 /= arb(f0)) & (w1 in f0) & (w1 * d0 = arb(f0) * d0) -- -- After picking a $c$ belonging to only one of $w1,arb(f0)$, we -- consider the set $d0 + {c}$. Our goal becomes to derive a -- contradiction by showing that the latter set duly differentiates any -- two elements of $f0$ and meets the desired cardinality limitation. -- c-->Stat11(Stat11*) ==> Stat12: ((c in w1) ¥eq (c notin arb(f0))) & (c notin d0) f0-->T274(Stat11*) ==> Stat13: (FORALL x in f0 | x ¥incin Un(f0)) w1-->Stat13(Stat11*) ==> w1 ¥incin Un(f0) (Stat7*)ELEM ==> Stat14: ((w1 * (d0 + {c})) /= (arb(f0) * (d0 + {c}))) & ((d0 + {c}) ¥incin Un(f0)) (d0 + {c})-->Stat1(Stat14*) ==> not((#(d0 + {c}) in #f0) & (FORALL w in f0, y in f0 | (w * (d0 + {c}) = y * (d0 + {c})) ¥imp (w = y))) -- -- If two elements $w2,y2$ of $f0$, although distinct, are -- indiscernible from one another relative to the set $d0 + {c}$, -- either of them must be $arb(f0)$. -- The other one cannot be $w1$, as can be seen from Stat15 -- therefore it is some $w3 in f0 - {arb(f0),w1}$, and since -- $w3$ is discernible from $w1$ relative to $d0$, and $w1$ is -- indiscernible from $arb(f0)$ relative to $d0$, $w3$ is -- discernible from $arb(f0)$ relative to $d0$ (and hence also -- relative to $d0 + {c}$. This contradiction indicates -- that $d0 + {c}$ does not meet the desired cardinality -- limitation $#(d0 + {c}) in #f0$. -- Suppose ==> Stat16: not((FORALL w in f0, y in f0 | (w * (d0 + {c}) = y * (d0 + {c})) ¥imp (w = y))) (w2,y2)-->Stat16(Stat16*) ==> Stat17: (w2 in f0) & (y2 in f0) & (w2 * (d0 + {c}) = y2 * (d0 + {c})) & (w2 /= y2) (w2,y2)-->Stat7(Stat17*) ==> (w2 = arb(f0)) or (y2 = arb(f0)) Suppose ==> Stat18: w2 = arb(f0) --?? EQUAL(Stat14,Stat17,Stat18) ==> Stat19: y2 /= w1 (Stat14,Stat17,Stat18*)ELEM ==> Stat19: y2 /= w1 EQUAL(Stat17,Stat18) ==> Stat20: y2 /= arb(f0) (w1,y2)-->Stat7(Stat11,Stat17,Stat19,Stat20*) ==> Stat21: w1 * d0 /= y2 * d0 (Stat11,Stat18,Stat21,Stat17*)Discharge ==> AUTO (Stat17*)ELEM ==> Stat22: y2 = arb(f0) (Stat14,Stat17,Stat22*)ELEM ==> Stat23: w2 /= w1 EQUAL(Stat17,Stat22) ==> Stat24: w2 /= arb(f0) (w1,w2)-->Stat7(Stat11,Stat17,Stat23,Stat24) ==> Stat25: w1 * d0 /= w2 * d0 (Stat11,Stat22,Stat25,Stat17*)Discharge ==> AUTO (Stat14*)ELEM ==> Stat26: #(d0 + {c}) notin #f0 -- -- However this is untenable, as we know that $#d0 in #(f0 - {arb(f0)})$, -- and we can easily prove that $#d0$ is the immediate predecessor -- of $#(d0 + {c})$ and that $#(f0 - {arb(f0)})$ precedes $#f0$. -- (f0 - {arb(f0)})-->T156(Stat26*) ==> Card(#(f0 - {arb(f0)})) f0-->T156(Stat26*) ==> Card(#f0) Use_def(Card) ==> Stat27: Ord(#(f0 - {arb(f0)})) & Ord(#f0) Suppose ==> #(d0 + {c}) /= next(#d0) Suppose ==> #d0 notin Za (f0,f0 - {arb(f0)})-->T189(Stat3,Stat3) ==> Finite(#(f0 - {arb(f0)})) (#(f0 - {arb(f0)}))-->T207 ==> AUTO (#(f0 - {arb(f0)}),#d0)-->T196(Stat7*) ==> Finite(#d0) d0-->T156(Stat27*) ==> Card(#d0) (#d0)-->T206(Stat27*) ==> false Discharge ==> AUTO (d0,{c})-->T222(Stat12,Stat12*) ==> #(d0 + {c}) = #d0 ¥PLUS #{c} (#d0)-->T317(Stat26*) ==> #d0 ¥PLUS 1 = next(#d0) c-->T305(Stat26*) ==> #{c} = {0} TELEM ==> {0} = 1 EQUAL(Stat26) ==> false Discharge ==> AUTO (f0,f0 - {arb(f0)})-->T194(Stat3,Stat1) ==> Stat28: #(f0 - {arb(f0)}) in #f0 (#(f0 - {arb(f0)}),#d0)-->T37(Stat7*) ==> (#(d0 + {c}) ¥incin #(f0 - {arb(f0)})) & (#(d0 + {c}) /= #(f0 - {arb(f0)})) Use_def(Card(#(d0 + {c}))) ==> AUTO (d0 + {c})-->T156(Stat28*) ==> Stat29: Ord(#(d0 + {c})) (#(f0 - {arb(f0)}),#(d0 + {c}))-->T34(Stat27*) ==> Stat30: #(d0 + {c}) in #(f0 - {arb(f0)}) (#f0,#(f0 - {arb(f0)}))-->T13(Stat27,Stat28,Stat26,Stat30*) ==> false Discharge ==> QED -- -- A compact restatement of the preceding combinatorial lemma reads as follows: -- Theorem 319: [To witness that $n$ sets are different, fewer than $n$ elements suffice, 2] (Finite(F) & (F /= 0)) ¥imp ({d ¥incin Un(F) | (#d in #F) & (#{w * d : w in F} = #F)} /= 0). Proof: Suppose_not(f0) ==> AUTO f0-->T318 ==> Stat1: (EXISTS d ¥incin Un(f0) | (#d in #f0) & (FORALL w in f0, y in f0 | (w * d = y * d) ¥imp (w = y))) d0-->Stat1(Stat1*) ==> Stat2: (FORALL w in f0, y in f0 | (w * d0 = y * d0) ¥imp (w = y)) & (d0 ¥incin Un(f0)) & (#d0 in #f0) ELEM ==> Stat3: {d ¥incin Un(f0) | (#d in #f0) & (#{w * d: w in f0} = #f0)} = 0 d0-->Stat3(Stat2*) ==> #{w * d0: w in f0} /= #f0 TELEM ==> Stat4: Svm({[w,w * d0]: w in f0}) & (domain({[w,w * d0]: w in f0}) = f0) & (range({[w,w * d0]: w in f0}) = {w * d0: w in f0}) --?? Use_def(one_1_map({[w,w * d0]: w in f0})) ==> AUTO --?? Use_def(one_1_map)(Stat4*) ==> one_1_map({[w,w * d0]: w in f0}) ¥eq (FORALL x in {[w,w * d0]: w in f0}, y in {[w,w * d0]: w in f0} | (cdr(x) = cdr(y)) ¥imp (x = y)) Use_def(one_1_map)(Stat4*) ==> (FORALL x in {[w,w * d0]: w in f0}, y in {[w,w * d0]: w in f0} | (cdr(x) = cdr(y)) ¥imp (x = y)) ¥imp one_1_map({[w,w * d0]: w in f0}) Suppose ==> #range({[w,w * d0]: w in f0}) = #domain({[w,w * d0]: w in f0}) EQUAL(Stat3) ==> false; Discharge ==> AUTO ({[w,w * d0]: w in f0})-->T157(Stat4) ==> Stat5: not(FORALL x in {[w,w * d0]: w in f0}, y in {[w,w * d0]: w in f0} | (cdr(x) = cdr(y)) ¥imp (x = y)) (p,q)-->Stat5(Stat5*) ==> Stat6: (p in {[w,w * d0]: w in f0}) & (q in {[w,w * d0]: w in f0}) & (cdr(p) = cdr(q)) & (p /= q) (w0,y0)-->Stat6(Stat6*) ==> (p = [w0,w0 * d0]) & (w0 in f0) & (q = [y0,y0 * d0]) & (y0 in f0) TELEM ==> (cdr([w0,w0 * d0]) = w0 * d0) & (cdr([y0,y0 * d0]) = y0 * d0) EQUAL(Stat6) ==> Stat7: w0 * d0 = y0 * d0 (w0,y0)-->Stat2(Stat6*) ==> w0 = y0 EQUAL(Stat6) ==> false Discharge ==> QED -- -- Next we prove that the union-set of any finite set of -- unsigned integers is an unsigned integer (actually, a member of $M$ unless $M$ is 0),... -- Theorem 320: [The union set of a finite collection of integers is an integer] ((M ¥incin Za) & Finite(M)) ¥imp (((M /= 0) ¥imp (Un(M) in M)) & (Un(M) in Za)). Proof+: -- -- Assume that $n$ is a counterexample to our assertion. Then if the first clause of our assertion is violated, -- it is violated by some inclusion-minimal $m ¥incin n$. -- Suppose_not(n) ==> Stat1: (n ¥incin Za) & Finite(n) & (((n /= 0) & (Un(n) notin n)) or (Un(n) notin Za)) Suppose ==> (n /= 0) & (Un(n) notin n) APPLY(m1_thryvar:m) finite_induction(n->n,P(y)->((y/=0) & (Un(y) notin y))) ==> Stat2: ((m ¥incin n) & (m /= 0) & (Un(m) notin m) & (FORALL k ¥incin m | ((k /= m) ¥imp (not((k /= 0) & (Un(k) notin k)))))) -- -- Since $m$ is nonempty, $arb(m)$ is a member of $m$, and also $Un(m) = arb(m) + Un(m - {arb(m)})$ by Theorem 109. -- Since $Un(m) notin m$, it follows that m cannot be a singleton, and so it must have some second integer member $c$. -- (Stat2)ELEM ==> Stat3: (FORALL k ¥incin m | ((k /= m) ¥imp (not((k /= 0) & (Un(k) notin k))))) & (m = {arb(m)} + (m - {arb(m)})) m-->T109 ==> Stat4: (Un(0) = 0) & (Un(m) = (arb(m) + Un(m - {arb(m)}))) Suppose ==> Stat5: (m - {arb(m)}) = 0 EQUAL(Stat5,Stat4) ==> Stat6: Un(m - {arb(m)}) = 0 (Stat6,Stat4,Stat3,Stat2*)Discharge ==> Stat7: (m - {arb(m)}) /= 0 c-->Stat7(Stat7*) ==> Stat8: c in (m - {arb(m)}) (Stat2,Stat8,Stat1)ELEM ==> Stat9: (c in Za) & (arb(m) in Za) & (c /= arb(m)) & (c notin arb(m)) -- -- Since $c$ is not smaller than $arb(m)$, $arb(m)$ must be a member of $c$, -- and hence a member of a member of $m - {arb(m)}$, i.e. a member of $Un(m - {arb(m)})$. -- (c,arb(m))-->T31(Stat9*) ==> Stat11: arb(m) in c Suppose ==> arb(m) notin Un(m - {arb(m)}) Use_def(Un) ==> Stat12: arb(m) notin {x: y in (m - {arb(m)}), x in y} (c,arb(m))-->Stat12(Stat12*) ==> Stat13: not((c in (m - {arb(c)})) & (arb(m) in c)) (Stat11,Stat8,Stat13*)Discharge ==> Stat14: arb(m) in Un(m - {arb(m)}) -- -- Since $m - {arb(m)}$ is a non-empty subset of $m$, It follows by Stat15 2 that -- $Un(m - {arb(m)}) in (m - {arb(m)})$, and so is an ordinal, whose member $arb(m)$ must therefore be a subset of it. -- Thus, by statement 4, we have $Un(m) = Un(m - {arb(m)})$. -- (m - {arb(m)})-->Stat3(Stat8*) ==> Stat16: Un(m - {arb(m)}) in (m - {arb(m)}) (Un(m - {arb(m)}),arb(m))-->T13 ==> Stat18: arb(m) ¥incin Un(m - {arb(m)}) (Stat4,Stat18*)ELEM ==> Stat19: Un(m) = Un(m - {arb(m)}) -- -- But this contradicts Stat15 2. Therefore our intial suppositon must be false, -- i.e. either $n$ is 0 or $Un(n) in n$. If $Un(n) in n$ the assertion of our theorem -- is clearly satisfied, so only the case $n = 0$ need be considered. But in this case our assertion is obvious. -- Hence our theorem is valid in all cases. -- (Stat19,Stat16,Stat2*)Discharge ==> Stat20: (n = 0) or (Un(n) in n) Suppose ==> (n = 0) & (Un(n) notin Za) T109(*) ==> Un(0) = 0 EQUAL==> false; Discharge ==> Stat22: not((n = 0) & (Un(n) notin Za)) (Stat22,Stat20,Stat1)Discharge ==> QED -- -- It follows easily from the preceding result the union-set of any unsigned -- integer $m$ is an unsigned integer (in fact, it is always the predecessor of $m$): -- Theorem 321: [The union set of a set of integers is the least upper bound of its elements] (M in Za) ¥imp (((Un(M) in Za) & (Un(M) ¥incin M)) & ((M /= 0) ¥imp (Un(M) in M))). Proof+: -- -- Assume that $m$ is a counterexample to our statement, and recall -- that the unsigned integers are simply the finite cardinals. -- It follows that $m$ is a finite ordinal included in $Za$, and then -- (by excluding the trivial case $m = 0$) we get -- a contradiction with prior lemmas. -- Suppose_not(m) ==> Stat1: (m in Za) & (not((Un(m) ¥incin m) & (Un(m) in Za) & ((m /= 0) ¥imp (Un(m) in m)))) T206(*) ==> Ord(Za) (Za,m)-->T13(*) ==> Stat2: m ¥incin Za m-->T320(*) ==> Stat3: (Un(m) in Za) & ((m /= 0) ¥imp (Un(m) in m)) (Stat3,Stat1*)ELEM ==> Stat4: not(Un(m) ¥incin m) Suppose ==> m = 0 T109 ==> Stat5: Un(0) = 0 EQUAL ==> Stat6: Un(m) = 0 (Stat4,Stat6*)Discharge ==> Stat7: m /= 0 (Stat7,Stat3,Stat2*)ELEM ==> (Un(m) in m) & (Un(m) in Za) (m,Un(m))-->T13(*) ==> Stat8: Un(m) ¥incin m (Stat8,Stat4)Discharge ==> QED -- -- Next we prove that for any non-zero unsigned -- integer $m$, $Un(m)$ is the immediate predecessor of $m$: -- Theorem 322: [Every nonzero integer has a predecessor] ((M in Za) & (M /= 0)) ¥imp (M = (Un(M) ¥PLUS 1)). Proof+: Suppose_not(m) ==> Stat1: (m in Za) & (m /= 0) & (m /= (Un(m) ¥PLUS 1)) -- -- For let $m$ be a counterexample to our assertion. $Un(m)$ is an integer less than $m$ -- by Theorem 321, and $Un(m) ¥PLUS 1$ is the sucessor $next(Un(m))$ of $Un(m)$. -- Thus $Un(m) + {Un(m)}$ must be a subset of $m$, so if our theorem is false it cannot be a -- superset of $m$. -- m-->T321(*) ==> Un(m) in m (m,Un(m))-->T13(*) ==> Un(m) ¥incin m (Un(m))-->T317(*) ==> (Un(m) ¥PLUS 1) = next(Un(m)) Use_def(next(Un(m))) ==> AUTO ELEM ==> Stat5: not(m ¥incin (Un(m) + {Un(m)})) -- -- But in this case there must exist and integer $c$ less than $m$ but not in $Un(m) + {Un(m)}$. -- Theorem 274 tells us that such a c must be a subset of $Un(m)$,and hence either a member of $Un(m)$. -- However both these cases are clearly impossible, so our theorem is proved. -- c-->Stat5 ==> Stat6: (c in m) & (c notin (Un(m) + {Un(m)})) m-->T274 ==> Stat7: (FORALL x in m | x ¥incin Un(m)) c-->Stat7(Stat6) ==> c ¥incin Un(m) (Un(m),c)-->T34 ==> Stat8: (c in Un(m)) or (c = Un(m)) (Stat8,Stat6)Discharge ==> QED -- -- Our next theorem states that the sum of any two integers $n$ and $c$ is the set-theoretic union of -- $n$ with the set of sums of $n$ with the members of $c$. -- Theorem 323: [The sum of integers as the union of smaller sums] ((X in Za) & (Y in Za)) ¥imp ((X ¥PLUS Y) = X + {(X ¥PLUS u): u in Y}). Proof+: Suppose_not(n,c) ==> (n in Za) & (c in Za) & Stat1: ((n ¥PLUS c) /= (n + {(n ¥PLUS u): u in c})) -- -- For let $n$, $c$ be a counterexample to our theorem. It is easily seen that $c$ cannot be $0$. -- There must be an element $d$ which is in one but not both of the sets -- appearing in the inequality seen above. -- d-->Stat1 ==> Stat1a: not((d in n ¥PLUS c) ¥eq (d in n + {(n ¥PLUS u): u in c})) Suppose ==> c = 0 Suppose ==> Stat2: {(n ¥PLUS u): u in 0} /= 0 a-->Stat2 ==> false; Discharge ==> {(n ¥PLUS u): u in 0} = 0 EQUAL ==> (n ¥PLUS 0) /= (n + 0) n-->T254(*) ==> false; Discharge ==> c /= 0 -- T206 ==> Ord(Za) (Za,c)-->T13 ==> c ¥incin Za ALGEBRA ==> n ¥PLUS c in Za (Za,n ¥PLUS c)-->T13 ==> (n ¥PLUS c) ¥incin Za -- -- All of our quantities are integers, and clearly $n ¥PLUS c$ is greater than $n$. -- First suppose that $d$ is in the second of these sets but not in the first, -- so that $d notin n ¥PLUS c$. -- Then either $d in n$, or there exists an $e$ in $c$ such that $d = n ¥PLUS e$. -- The first of these cases is impossible, since it would imply $d in n ¥PLUS c$. -- But in the second case it is clear that $d = n ¥PLUS e$ is less than, hence a member of, -- $n ¥PLUS c$, a contradiction ruling out this case. Hence we can be sure that -- $d$ is in the first of our sets but not in the second. -- (n,c)-->T284 ==> n in (n ¥PLUS c) (n ¥PLUS c,n)-->T34 ==> n ¥incin (n ¥PLUS c) Suppose ==> Stat3: d in {(n ¥PLUS u): u in c} e-->Stat3 ==> (e in c) & (e in Za) & (d = n ¥PLUS e) (n,c,e)-->T286 ==> false; Discharge ==> Stat4: (d notin {(n ¥PLUS u): u in c}) & (d in n ¥PLUS c) & (d in Za) & (n in Za) -- -- Since we can now be sure that $d notin n$, we have $d = (d ¥MINUS n) ¥PLUS n$. -- $d ¥MINUS n$ is less than $c$ since $d$ is less than $n ¥PLUS c$. Hence -- d-->T207 ==> d = #d (n,d)-->T35(Stat1a) ==> d incs n (n,d)-->T272 ==> d = (d ¥MINUS n) ¥PLUS n (d,n)-->T283 ==> (d ¥MINUS n) in Za -- -- If we suppose that $(d ¥MINUS n) notin c$, then... -- Suppose ==> (d ¥MINUS n) notin c (c,d ¥MINUS n)-->T35 ==> (d ¥MINUS n) incs c (c,d ¥MINUS n,n)-->T290 ==> ((d ¥MINUS n) ¥PLUS n) incs (c ¥PLUS n) EQUAL ==> d incs (c ¥PLUS n) -- -- ... ALGEBRA gives us $d incs (n ¥PLUS c)$, leading to a contradiction -- in this case, because we already know that $d in (n ¥PLUS c)$. -- ALGEBRA ==> false; Discharge ==> (d ¥MINUS n) in c -- -- However, $(d ¥MINUS n) in c$ cannot hold either. -- From this contradiction we get the desired conclusion. -- (d ¥MINUS n)-->Stat4 ==> n ¥PLUS (d ¥MINUS n) /= d ALGEBRA ==> false; Discharge ==> QED -- -- Our next result expresses the sum of any two integers $x$, $y$ as the union of x with -- the set of all the members of $y$ with x. This is very similar to the preceding result, -- but reverses the sum which appears inside the setformer in the conclusion of the theorem. -- Theorem 324: [The sum of integers as the union of smaller sums, 2] ((X in Za) & (Y in Za)) ¥imp ((X ¥PLUS Y) = X + {(u ¥PLUS X): u in Y}). Proof: Suppose_not(x,y) ==> (x in Za) & (y in Za) & ((x ¥PLUS y) /= (x + {(u ¥PLUS x): u in y})) -- -- Suppose that $x$, $y$ constitute a counterexample to our theorem, -- and apply the preceding Theorem to $x$, $y$. Since it is easily seen that -- ${(x ¥PLUS u): u in y} = {(u ¥PLUS x): u in y}$, our assertion follows immediately. -- (x,y)-->T323 ==> (x ¥PLUS y) = x + {(x ¥PLUS u): u in y} Suppose ==> Stat1: {(x ¥PLUS u): u in y} /= {(u ¥PLUS x): u in y} c-->Stat1 ==> (c in y) & ((x ¥PLUS c) /= (c ¥PLUS x)) T206 ==> Ord(Za) (Za,y)-->T13 ==> c in Za ALGEBRA ==> false; Discharge ==> {(x ¥PLUS u): u in y} = {(u ¥PLUS x): u in y} EQUAL ==> false; Discharge ==> QED -- -- Next we prove a property of the integer subtraction operator very close -- to that given by Theorem 272, namely $n = m ¥PLUS (n ¥MINUS m)$ if $m$ is no larger than $n$. -- Theorem 325: [Subtraction reverses addition] ((X in Za) & (Y in Za) & (Y ¥incin X)) ¥imp (X = Y ¥PLUS (X ¥MINUS Y)). Proof+: Suppose_not(n,m) ==> AUTO -- -- For all our quantities are integers, so the conclusion of Theorem 272 -- is equivalent to that of the present theorem. -- T206 ==> Ord(Za) (Za,n)-->T13 ==> n ¥incin Za n-->T207 ==> n = #n (m,n)-->T272 ==> #n = (n ¥MINUS m) ¥PLUS m ALGEBRA ==> false; Discharge ==> QED -- Theorem 326: [Subtraction monotonicity lemma, 2] ((X in Za) & (Y in Za) & (U in (X ¥PLUS Y)) & (Y /= 0)) ¥imp ((U ¥MINUS X) in Y). Proof+: Suppose_not(x,y,u) ==> AUTO (x,y)-->T283 ==> (x ¥PLUS y) in Za (x ¥PLUS y)-->T206 ==> Ord(Za) & Finite(x ¥PLUS y) ELEM ==> Ord(x) & Ord(x ¥PLUS y) (x ¥PLUS y,u)-->T12 ==> Ord(u) (u,x ¥PLUS y)-->T35 ==> Stat1: (x ¥PLUS y) incs u (x ¥PLUS y,u,x)-->T310(Stat1*) ==> Stat2: ((x ¥PLUS y) ¥MINUS x) incs (u ¥MINUS x) (x,y)-->T252(Stat2*) ==> (x ¥PLUS y) = (y ¥PLUS x) (y,x)-->T304 ==> ((y ¥PLUS x) ¥MINUS x) = y EQUAL(Stat2) ==> y incs (u ¥MINUS x) -- (u,x ¥PLUS y)-->T197 ==> Finite(u) u-->T205 ==> Card(u) & (u in Za) (u,x)-->T283 ==> (u ¥MINUS x) in Za ELEM ==> ((u ¥MINUS x) notin y) & (y in Za) & (x in Za) (y,u ¥MINUS x)-->T35(Stat2*) ==> y = (u ¥MINUS x) EQUAL ==> u in (x ¥PLUS (u ¥MINUS x)) (u,x)-->T325 ==> x ¥nincin u (x,u)-->T35 ==> u in x (x,u)-->T270 ==> 0 notin y T188 ==> Ord(0) (y,0)-->T35 ==> false; Discharge ==> QED -- -- The following in-recursive formula gives an alternative characterization of signed integer subtraction: -- Theorem 327: [The integer difference as a set of smaller differences] ((N in Za) & (M in Za)) ¥imp ((N ¥MINUS M) = {k ¥MINUS M: k in N | M ¥incin k}). Proof+: Suppose_not(n,m) ==> (n in Za) & (m in Za) & Stat1: ((n ¥MINUS m) /= {k ¥MINUS m: k in n | m ¥incin k}) -- -- For let $n$, $m$ be a counterexample to our theorem. Since -- $n, m, n ¥MINUS m$ are unsigned integers, hence ordinals, -- there must exist an $a$ belonging to just one of $n ¥MINUS m$ -- and ${k ¥MINUS m: k in n | (m in k) or (m = k)}$. -- ALGEBRA ==> (n ¥MINUS m) in Za T206 ==> Ord(Za) ELEM ==> Ord(n ¥MINUS m) & Ord(n) & Ord(m) a-->Stat1 ==> (a in (n ¥MINUS m)) ¥eq (a notin {k ¥MINUS m: k in n | m ¥incin k}) Suppose ==> Stat2: (a in {k ¥MINUS m: k in n | m ¥incin k}) -- -- If $a$ belongs to ${k ¥MINUS m: k in n | (m in k) or (m = k)}$, then $a$ -- equals $k ¥MINUS m$ for some $k in n$ such that $m$ does not exceed $k$. -- By monotonicity of integer subtraction $k ¥MINUS m$ is no greater than, -- and hence equal to, $n ¥MINUS m$. Thus $m in n$ and $k = n$, contradicting $k in n$. -- k-->Stat2 ==> ((k ¥MINUS m) notin (n ¥MINUS m)) & (k in n) & (m ¥incin k) (Za,n)-->T13 ==> k in Za (n,k)-->T13 ==> n incs k (n,k,m)-->T310 ==> (n ¥MINUS m) incs (k ¥MINUS m) ALGEBRA ==> Ord(k ¥MINUS m) (n ¥MINUS m,k ¥MINUS m)-->T34 ==> k ¥MINUS m = n ¥MINUS m (k,m)-->T325 ==> k = m ¥PLUS (k ¥MINUS m) (n,m)-->T325 ==> n = m ¥PLUS (n ¥MINUS m) EQUAL ==> false; Discharge ==> Stat3: (a notin {k ¥MINUS m: k in n | m ¥incin k}) -- -- But in this case we have $a in (n ¥MINUS m)$, so by strict monotonicity of addition -- $(a ¥PLUS m) in ((n ¥MINUS m) ¥PLUS m)$, i.e. $(a ¥PLUS m) in n$, and therefore taking -- $k = (a ¥PLUS m)$ in Stat3 we have a contradiction which proves our theorem. -- ELEM ==> (a in (n ¥MINUS m)) (n,m)-->T283 ==> (n ¥MINUS m) in Za (Za,n ¥MINUS m)-->T13 ==> a in Za Use_def(¥MINUS) ==> #(n - m) /= 0 (n - m)-->T162 ==> n - m /= 0 ELEM ==> not(m incs n) (n,m)-->T29 ==> n incs m (m,n)-->T272 ==> #n = (n ¥MINUS m) ¥PLUS m n-->T207 ==> n = (n ¥MINUS m) ¥PLUS m (n ¥MINUS m,a,m)-->T297 ==> (a ¥PLUS m) in ((n ¥MINUS m) ¥PLUS m) ELEM ==> (a ¥PLUS m) in n (a,m)-->T304 ==> a = (a ¥PLUS m) ¥MINUS m ELEM ==> 0 ¥incin a (m,a)-->T292 ==> m ¥incin (a ¥PLUS m) (a ¥PLUS m)-->Stat3 ==> false; Discharge ==> QED -- -- It is sometimes useful to restate the preceding theorem in the following modified form: -- Theorem 328: [The integer difference as a set of smaller differences] ((N in Za) & (M in Za)) ¥imp ((N ¥MINUS M) = {k in Za | (k ¥PLUS M) in N}). Proof: Suppose_not(n,m) ==> AUTO T206 ==> Ord(Za) (Za,n)-->T13 ==> n ¥incin Za (n,m)-->T327 ==> Stat1: {k ¥MINUS m: k in n | m ¥incin k} /= {k in Za | (k ¥PLUS m) in n} c-->Stat1 ==> not((c in {k ¥MINUS m: k in n | m ¥incin k}) ¥eq (c in {k in Za | (k ¥PLUS m) in n})) Suppose ==> Stat2: (c in {k ¥MINUS m: k in n | m ¥incin k}) & Stat3: (c notin {k in Za | (k ¥PLUS m) in n}) k1-->Stat2 ==> (c = k1 ¥MINUS m) & (k1 in n) & (m ¥incin k1) k1-->T206 ==> (k1 in Za) & Card(k1) k1-->T164 ==> k1 = #k1 ALGEBRA ==> (k1 ¥MINUS m) in Za ()-->Stat3 ==> not ((c in Za) & ((c ¥PLUS m) in n)) EQUAL ==> not (((k1 ¥MINUS m) in Za) & (((k1 ¥MINUS m) ¥PLUS m) in n)) ELEM ==> ((k1 ¥MINUS m) ¥PLUS m) notin n (m,k1)-->T272 ==> false; Discharge ==> Stat4: (c in {k in Za | (k ¥PLUS m) in n}) & Stat5: (c notin {k ¥MINUS m: k in n | m ¥incin k}) ()-->Stat4(Stat4*) ==> (c in Za) & ((c ¥PLUS m) in n) (c ¥PLUS m)-->Stat5(Stat4*) ==> (c /= ((c ¥PLUS m) ¥MINUS m)) or (m ¥nincin (c ¥PLUS m)) (m,c)-->T292 ==> c /= ((c ¥PLUS m) ¥MINUS m) (c,m)-->T304 ==> false; Discharge ==> QED -- -- Our next goal is to show that every subset of the set $Za$ of unsigned integers -- which is closed with respect to predecessor formation either belongs to $Za$ -- or coincides with $Za$. As a preliminary lemma, we show that for any -- set $x$ closed with respect to predecessor formation, if an element $j$ of $Za$ -- does not belong to $x$, then no integer $h$ greater than $j$ belongs to $x$. -- Theorem 329: ((J in Za - X) & (FORALL i | (next(i) in X) ¥imp (i in X))) ¥imp ({h in Za | (h notin J) & (h in X)} = 0). Proof+: Suppose_not(j,x) ==> (j in Za - x) & ({h in Za | (h notin j) & (h in x)} /= 0) & Stat1: (FORALL i | (next(i) in x) ¥imp (i in x)) -- -- For, suppose that $x,j$ contradict the statement just made and let -- $h$ be the first integer which is not smaller than $j$ and belongs to $Za$. -- Loc_def ==> h = arb({h in Za | (h notin j) & (h in x)}) ELEM ==> (j in Za) & (h * {h in Za | (h notin j) & (h in x)} = 0) & Stat2: (h in {h in Za | (h notin j) & (h in x)}) ()-->Stat2 ==> (h in Za) & (h notin j) & (h in x) T206 ==> Ord(Za) -- -- By T31, either $j,h$ coincide or one of $j,h$ belongs to the other. We must -- exclude the case $j=h$, because $h$ belongs to $j$ and $j$ does not; moreover -- we know that $h notin j$. Hence $j in h$ and $h$ has the form $next(k)$ for -- some unsigned integer $k$. -- (j,h)-->T31 ==> j in h T211 ==> Ord(0) & Card(1) ALGEBRA ==> (h ¥MINUS 1) in Za Use_def(Card) ==> Ord(1) Suppose ==> h /= next(h ¥MINUS 1) (h,0)-->T31 ==> 0 in h Use_def(1) ==> 1 = next(0) Use_def(next) ==> 1 ¥incin h (1,h)-->T272 ==> #h = ((h ¥MINUS 1) ¥PLUS 1) h-->T207 ==> h = ((h ¥MINUS 1) ¥PLUS 1) (h ¥MINUS 1)-->T317 ==> false; Discharge ==> AUTO -- -- It turns out that the immediate predecessor of $h$ belongs to $h$ as well as -- to the set ${h in Za | (h notin j) & (h in x)}$. However, this contradicts -- the minimality criterion by which $h$ was selected by means of the $arb$ operator. -- Indeed, we derive $next(h ¥MINUS 1) ¥incin j$, which is incompatible with -- the earlier proved facts $j in h$, $h = next(h ¥MINUS 1)$. -- (h ¥MINUS 1)-->Stat1 ==> (h ¥MINUS 1) in x Use_def(next) ==> Stat3: (h ¥MINUS 1) notin {h in Za | (h notin j) & (h in x)} ()-->Stat3 ==> (h ¥MINUS 1) in j (j,h ¥MINUS 1)-->T13 ==> ((h ¥MINUS 1) * {h ¥MINUS 1}) ¥incin j -- -- This contradiction leads to the desired conclusion. -- Use_def(next) ==> false; Discharge ==> QED -- -- Now we can easily draw the corollary we were aiming at. -- Theorem 330: ((X ¥incin Za) & (FORALL i | (next(i) in X) ¥imp (i in X))) ¥eq (X in next(Za)). Proof: Suppose_not(x) ==> ((x ¥incin Za) & (FORALL i | (next(i) in x) ¥imp (i in x))) ¥eq (x notin next(Za)) -- -- Implication in one direction is trivial; for the converse... -- T206 ==> Ord(Za) Suppose ==> (not((x ¥incin Za) & (FORALL i | (next(i) in x) ¥imp (i in x)))) & (x in next(Za)) Use_def(next) ==> (x in Za) or (x = Za) (Za,x)-->T13 ==> x ¥incin Za ELEM ==> Stat1: not(FORALL i | (next(i) in x) ¥imp (i in x)) Suppose ==> not(Ord(x)) Suppose ==> x = Za EQUAL ==> false; Discharge ==> x in Za (Za, x)-->T12 ==> false; Discharge ==> Ord(x) i-->Stat1 ==> (next(i) in x) & (i notin x) (x, next(i))-->T13 ==> next(i) ¥incin x Use_def(next) ==> false; Discharge ==> (x ¥incin Za) & (x notin next(Za)) & (FORALL i | (next(i) in x) ¥imp (i in x)) -- -- ... reasoning by contradiction, suppose that $x$ is included in the set $Za$ of all unsigned -- integers and does not belong to $next(Za)$, i.e., $x$ differs from $Za$ and does not -- belong to $Za$. Consider a minimally chosen element $j$ of $(Za-j)$. Clearly, -- $j$ must differ from $x$. However, the preceding lemma makes it impossible -- to find an element of $x$ which does not belong to $j$. On the other hand, insofar -- an an element of the ordinal $Za$, $j$ must be a subset of $Za$; hence, any element -- $h$ of $j$ not belonging to $x$ must be an element of $Za$ too, violating the supposed -- minimality of $j$. Thus we are led to the contradiction $j/=x$, $j=x$, which proves -- our statement. -- Loc_def ==> j = arb(Za - x) Use_def(next) ==> (j in (Za - x)) & (j * ((Za - x)) = 0) & Stat2: (x /= j) h-->Stat2 ==> (h in x) ¥eq (h notin j) Suppose ==> (h notin j) & (h in x) Suppose ==> Stat3: h notin {h in Za | (h notin j) & (h in x)} ()-->Stat3 ==> false; Discharge ==> h in {h in Za | (h notin j) & (h in x)} (j,x)-->T329 ==> false; Discharge ==> (h in j) & (h notin x) (Za,j)-->T13 ==> false; Discharge ==> QED -- -- -- Theorem 331: (({X,Y} ¥incin next(Za)) & (#X in next(Y))) ¥imp (((X = Y) & (Y = Za)) or (X in (next(Y) * Za))). Proof+: Suppose_not(x,y) ==> AUTO T209(*) ==> Card(Za) Use_def(Card)(*) ==> Ord(Za) --? Why does this not follow from the preceding step by proof-by-structure? -- -- Therefore $x$, which belongs to the ordinal $next(Za)$, is an ordinal. -- (next(Za), x)-->T12(*) ==> Ord(x) x-->T330(*) ==> x ¥incin Za (Za, x)-->T27(*) ==> (x = Za) or (x = arb(Za - x)) Suppose ==> (not Card(x)) Suppose ==> x = Za EQUAL ==> false; Discharge ==> x in Za x-->T206(*) ==> false; Discharge ==> AUTO x-->T164(*) ==> x = #x EQUAL ==> x in next(y) -- -- Observe that $x notin Za$ since $x in next(y)$ and $x notin (next(y) * Za)$; -- therefore $x = Za$ (since $x in next(Za)$) and $y /= Za$ (since $(x /= y) or (y /= Za)$); -- and hence $y in Za$ (since $y in next(Za)$). But this conflicts with the fact that -- $x in next(y)$ (indeed, $Za notin next(U)$ for any unsigned integer $U$). -- Use_def(next) ==> false; Discharge ==> QED -- -- We now show that every finite set of unsigned integers has an upper bound. -- THEORY unsigned_integer_bynd(Q1(x)) Finite({x in Za | Q1(x)}) END unsigned_integer_bynd -- ENTER_THEORY unsigned_integer_bynd -- Def 00q: [Upper bound of integer set] bynd_thryvar := next(Un({x in Za | Q1(x)})) -- Theorem unsigned_integer_bynd.0: [Every finite set of unsigned integers has an upper bound] (bynd_thryvar in Za) & (FORALL i in Za | (Q1(i) ¥imp (i in bynd_thryvar))). Proof+: Suppose_not ==> (bynd_thryvar notin Za) or (not (FORALL i in Za | (Q1(i) ¥imp (i in bynd_thryvar)))) -- -- For it is clear that ${x in Za | Q1(x)}$ is a finite set of integers, and so by Theorem 317 -- and Theorem 320 $next(Un({x in Za | Q1(x)}))$ is an integer. -- Suppose ==> Stat1: not ({x in Za | Q1(x)} ¥incin Za) k-->Stat1 ==> (k notin Za) & Stat2: (k in {x in Za | Q1(x)}) ()-->Stat2 ==> false Discharge ==> {x in Za | Q1(x)} ¥incin Za Assump ==> Finite({x in Za | Q1(x)}) ({x in Za | Q1(x)})-->T320 ==> Un({x in Za | Q1(x)}) in Za (Un({x in Za | Q1(x)}))-->T317 ==> next(Un({x in Za | Q1(x)})) in Za Use_def(bynd_thryvar) ==> Stat3: not (FORALL i in Za | (Q1(i) ¥imp (i in bynd_thryvar))) i-->Stat3 ==> (i in Za) & Q1(i) & (i notin bynd_thryvar) -- -- But by definition Un({x in Za | Q1(x)}) includes the element i of {x in Za | Q1(x)}, and so -- i in next(Un({x in Za | Q1(x)})) by Theorem 206, a contradiction which proves our assertion. -- T206 ==> Ord(Za) (Za,Un({x in Za | Q1(x)}))-->T12 ==> Ord(Un({x in Za | Q1(x)})) Suppose ==> Stat4: (i notin next(Un({x in Za | Q1(x)}))) (Un({x in Za | Q1(x)}),i)-->T36 ==> Stat5: not(i ¥incin Un({x in Za | Q1(x)})) j-->Stat5 ==> (j in i) & (j notin Un({x in Za | Q1(x)})) Use_def(Un) ==> Stat6: j notin {u: v in {x in Za | Q1(x)},u in v} (i,j)-->Stat6 ==> not((j = j) & (i in {x in Za | Q1(x)}) & (j in i)) ELEM ==> Stat7: i notin {x in Za | Q1(x)} i-->Stat7 ==> false Discharge ==> i in next(Un({x in Za | Q1(x)})) Use_def(bynd_thryvar) ==> false; Discharge ==> QED -- -- The following subsidiary lemma captures a few useful auxiliary properties of the upper bound $bynd_thryvar$. -- Theorem unsigned_integer_bynd.1: [Every finite set of unsigned integers has an upper bound] (bynd_thryvar in Za) & (Za incs bynd_thryvar) & Ord(bynd_thryvar) & (FORALL i in Za | (Q1(i) ¥imp (i in bynd_thryvar))) & (not Finite(Za - bynd_thryvar)). Proof: Suppose_not ==> not((bynd_thryvar in Za) & (Za incs bynd_thryvar) & Ord(bynd_thryvar) & (FORALL i in Za | (Q1(i) ¥imp (i in bynd_thryvar))) & (not Finite(Za - bynd_thryvar))) Tunsigned_integer_bynd.0 ==> (bynd_thryvar in Za) & (not((Za incs bynd_thryvar) & Ord(bynd_thryvar) & (not Finite(Za - bynd_thryvar)))) bynd_thryvar-->T206 ==> Ord(Za) (Za,bynd_thryvar)-->T13 ==> (bynd_thryvar ¥incin Za) (Za,bynd_thryvar)-->T12 ==> Finite(Za - bynd_thryvar) bynd_thryvar-->T237(*) ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY unsigned_integer_bynd -- --THEORY unsigned_integer_bynd(Q1(x)) -- Finite({x in Za | Q1(x)}) --==>(bynd_thryvar) -- (bynd_thryvar in Za) & -- (Za incs bynd_thryvar) & Ord(bynd_thryvar) & (FORALL i in Za | (Q1(i) ¥imp (i in bynd_thryvar))) & (not Finite(Za - bynd_thryvar)) --END unsigned_integer_bynd -- THEORY cauchyseq_lemma(n0,R(i,j)) n0 in Za (not Finite({i * j : i in Za, j in Za | R(i,j)})) END cauchyseq_lemma -- ENTER_THEORY cauchyseq_lemma -- Theorem cauchyseq_lemma.1: (not Finite({i * j : i in (Za - n0), j in (Za - n0) | R(i,j)})). Proof+: Suppose_not ==> AUTO Assump ==> Stat0: (n0 in Za) & (not Finite({i * j : i in Za, j in Za | R(i,j)})) ELEM ==> Finite(n0) -- -- For since $n0$ is finite, ${i * j : i in Za, j in Za | R(i,j)} - n0$ must be infinite by assumption. -- Suppose ==> Finite({i * j : i in Za, j in Za | R(i,j)} - n0) ({i * j : i in Za, j in Za | R(i,j)} - n0,n0)-->T236 ==> Finite(({i * j : i in Za, j in Za | R(i,j)} - n0) + n0) ELEM ==> ({i * j : i in Za, j in Za | R(i,j)} - n0) + n0 incs {i * j : i in Za, j in Za | R(i,j)} (({i * j : i in Za, j in Za | R(i,j)} - n0) + n0,{i * j : i in Za, j in Za | R(i,j)})-->T189 ==> false Discharge ==> not(Finite({i * j : i in Za, j in Za | R(i,j)} - n0)) -- -- But it is easily seen that ${i * j : i in Za, j in Za | R(i,j)} - n0$ is a subset of ${i * j : i in (Za - n0), j in (Za - n0) | R(i,j)}$, -- and so this latter set must also be must be infinite, proving the present Lemma. -- Suppose ==> Stat1: not(({i * j : i in Za, j in Za | R(i,j)} - n0) ¥incin {i * j : i in Za - n0, j in Za - n0 | R(i,j)}) k-->Stat1(Stat1*) ==> Stat2: (k in {i * j : i in Za, j in Za | R(i,j)}) & (k notin n0) & Stat3: (k notin {i * j : i in Za - n0, j in Za - n0 | R(i,j)}) (i0,j0)-->Stat2 ==> Stat4: (i0 in Za) & (j0 in Za) & R(i0,j0) & (k = i0 * j0) (i0,j0)-->Stat3 ==> not((i0 in Za - n0) & (j0 in Za - n0) & R(i0,j0) & (k = i0 * j0)) (Stat4)ELEM ==> (i0 in n0) or (j0 in n0) (i0,j0)-->T28(Stat0,Stat4) ==> Ord(i0 * j0) & Ord(n0) EQUAL ==> Ord(k) (n0,k)-->T35 ==> n0 ¥incin k -- -- Since ELEM(Stat4*) yields $(i0 in i0 * j0) or (j0 in i0 * j0)$, -- we get a contradiction enabling us to discharge our temporary assumptions. -- (Stat4*)Discharge ==> ({i * j : i in Za, j in Za | R(i,j)} - n0) ¥incin {i * j : i in Za - n0, j in Za - n0 | R(i,j)} ({i * j : i in Za - n0, j in Za - n0 | R(i,j)},{i * j : i in Za, j in Za | R(i,j)} - n0)-->T189 ==> false Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY cauchyseq_lemma -- --THEORY cauchyseq_lemma(n0,R(i,j)) -- n0 in Za -- (not Finite({i * j | i in Za, j in Za | R(i,j)})) --==> -- (not Finite({i * j | i in (Za - n0), j in (Za - n0) | R(i,j)})) --END cauchyseq_lemma -- -- By Theorem 29, the set of integers, like any other ordinal, is closed under union and intersection. -- -- Theorem 332: [Ordinal member maximum and minimum] (Ord(U) & (S in U) & (T in U)) ¥imp ((S + T in U) & (S * T in U)). Proof+: Suppose_not(u,s,t) ==> AUTO -- -- If a counterexample $u,s,t$ existed, then $s,t$ would both be ordinals, and hence one would include the -- other. Therefore ${s + t, s * t} = {s,t}$, conflicting with $u incs {s,t} & u ¥nincs {s + t, s * t}$. -- (s,t)-->T29 ==> false; Discharge ==> QED -- Theorem 333: [Integer member maximum and minimum] ((S in Za) & (T in Za)) ¥imp ((S + T in Za) & (S * T in Za)). Proof+: Suppose_not(s,t) ==> AUTO T206 ==> Ord(Za) (Za,s,t)-->T332 ==> false; Discharge ==> QED -- -- We are now in position to prove the following small theory, which gives us a kind of converse of cauchyseq_lemma.1. -- THEORY cauchyseq_lemma2(R(i,j)) Finite({i * j : i in Za, j in Za | R(i,j)}) END cauchyseq_lemma2 -- ENTER_THEORY cauchyseq_lemma2 -- -- Theorem cauchyseq_lemma2.1: (EXISTS k in Za | (FORALL i in Za, j in Za | ((i incs k) & (j incs k)) ¥imp (not (R(i,j))))). Proof: Suppose_not ==> Stat1: AUTO -- -- Indeed, it is easily seen that ${x in Za | x in {i * j : i in Za, j in Za | R(i,j)}} = {i * j: i in Za, j in Za | R(i,j)}$ -- Suppose ==> Stat2: {x in Za | x in {i * j : i in Za, j in Za | R(i,j)}} /= {i * j: i in Za, j in Za | R(i,j)} y-->Stat2 ==> ((y in {x in Za | x in {i * j : i in Za, j in Za | R(i,j)}}) & (y notin {i * j: i in Za, j in Za | R(i,j)})) or ((y notin {x in Za | x in {i * j: i in Za, j in Za | R(i,j)}}) & (y in {i * j: i in Za, j in Za | R(i,j)})) Suppose ==> Stat3: (y in {x in Za | x in {i * j: i in Za, j in Za | R(i,j)}}) & (y notin {i * j: i in Za, j in Za | R(i,j)}) ()-->Stat3 ==> false; Discharge ==> Stat4: (y notin {x in Za | x in {i * j : i in Za, j in Za | R(i,j)}}) & Stat5: (y in {i * j: i in Za, j in Za | R(i,j)}) y-->Stat4 ==> not(y in Za) (i0,j0)-->Stat5 ==> (i0 in Za) & (j0 in Za) & (y = i0 * j0) (i0,j0)-->T333 ==> false Discharge ==> {x in Za | x in {i * j : i in Za, j in Za | R(i,j)}} = {i * j: i in Za, j in Za | R(i,j)} Assump ==> Finite({i * j : i in Za, j in Za | R(i,j)}) -- -- and so ${x in Za | x in {i * j : i in Za, j in Za | R(i,j)}}$ is finite by assumption. Thus we can apply -- unsigned_integer_bynd to find an integer k such that R(i,j) is false i,j is any pair of integers both larger than k -- EQUAL ==> Finite({x in Za | x in {i * j : i in Za, j in Za | R(i,j)}}) APPLY(bynd_thryvar:k) unsigned_integer_bynd(Q1(x)->(x in {i * j : i in Za, j in Za | R(i,j)})) ==> (k in Za) & Stat6: (FORALL n in Za | ((n in {i * j: i in Za, j in Za | R(i,j)}) ¥imp (n in k))) k-->Stat1 ==> Stat7: not (FORALL i in Za, j in Za | ((i incs k) & (j incs k)) ¥imp (not (R(i,j)))) (i,j)-->Stat7 ==> Stat8: (i in Za) & (j in Za) & (not((i incs k) & (j incs k)) ¥imp (not (R(i,j)))) (Stat8)ELEM ==> Stat9: (i in Za) & (j in Za) & (i incs k) & (j incs k) & R(i,j) -- -- -- (i,j)-->T333 ==> Stat10: i * j in Za (i * j)-->Stat6 ==> (i * j in {i * j : i in Za, j in Za | R(i,j)}) ¥imp (i * j in k) Suppose ==> Stat11: i * j notin {i * j : i in Za, j in Za | R(i,j)} (i,j)-->Stat11 ==> false; Discharge ==> Stat12: i * j in k (Stat9,Stat12)ELEM ==> false; Discharge ==> QED -- -- ENTER_THEORY Set_theory -- -- Next we give an elementary lemma which characterizes a case in which a subset of an intger must be the entire integer. -- Theorem 334: ((N in Za) & (S ¥incin N) & (#S = N)) ¥imp (S = N). Proof+: Suppose_not(n,s) ==> AUTO n-->T164 ==> n = #n (n,s)-->T194 ==> false; Discharge ==> QED -- -- ************************************************************************************************ -- Section 7a: Some elementary results concerning finite sequences -- ************************************************************************************************ -- -- In this section we develop various elementary properties of finite sequences (of arbitrary elements), -- constructs useful in a variety of analytic and combinatorial situations. and their conjuctions. -- Def 24a: [Finite sequences] Fin_seqs(S) := {f ¥incin (Za ¥PROD S) | Svm(f) & (domain(f) in Za)} Def 24b: [Sequence concatenation] concat(F,G) := {[n,if n in domain(F) then F~[n] else G~[n ¥MINUS domain(F)] end if]: n in domain(F) ¥PLUS domain(G)} Def 24c: [Subsequences] Subseqs(F) := {F @ h: h ¥incin (Za ¥PROD Za) | Svm(h) & (FORALL i | (next(i) in domain(h)) ¥imp ((i in domain(h)) & ((h~[i]) in (h~[next(i)]))))} Def 24d: [Shift operation for sequences] Shift(M) := {[i, M ¥PLUS i]: i in Za} Def 24e: [Shifted sequence] shifted_seq(F,M) := F @ Shift(M) -- -- We begin the present collection of lemmas by noting the entirely elementary fact that every element -- of a finite sequence of elements of a set $s$ is a pair whose first component is an integer -- and whose second component belongs to $s$. -- Theorem 335: [Finite sequences are single-valued maps with integer domains] (F in Fin_seqs(S)) ¥eq (Svm(F) & (domain(F) in Za) & (range(F) ¥incin S)). Proof+: Suppose_not(f,s) ==> AUTO Suppose ==> (not(Svm(f) & (domain(f) in Za) & (range(f) ¥incin s))) & (f in Fin_seqs(s)) Use_def(Fin_seqs) ==> Stat1: f in {f ¥incin (Za ¥PROD S) | Svm(f) & (domain(f) in Za)} ()-->Stat1 ==> (f ¥incin (Za ¥PROD s)) & (not(range(f) ¥incin s)) (f,Za ¥PROD s)-->T65 ==> not(range(Za ¥PROD s) ¥incin s) Use_def(range) ==> not({cdr(x): x in Za ¥PROD s} ¥incin s) Use_def(¥PROD) ==> not({cdr(x): x in {[n,v]: n in Za, v in s}} ¥incin s) SIMPLF ==> Stat2: not({cdr([n,v]): n in Za, v in s} ¥incin s) y-->Stat2 ==> (y notin s) & Stat3: (y in {cdr([n,v]): n in Za, v in s}) (n,v)-->Stat3 ==> false; Discharge ==> (Svm(f) & (domain(f) in Za) & (range(f) ¥incin s)) & (not(f in Fin_seqs(s))) Use_def(Fin_seqs) ==> Stat4: f notin {g ¥incin (Za ¥PROD S) | Svm(g) & (domain(g) in Za)} g-->Stat4 ==> not(f ¥incin (Za ¥PROD S)) Use_def(¥PROD) ==> Stat5: not(f ¥incin ({[n,v]: n in Za, v in s})) c-->Stat5 ==> Stat6: (c in f) & Stat7: (c notin {[n,v]: n in Za, v in s}) Use_def(Is_map(f)) ==> AUTO ELEM ==> Stat8: c in {[car(x),cdr(x)]: x in f} x-->Stat8 ==> (x in f) & (c = [car(x),cdr(x)]) (car(x),cdr(x))-->Stat7 ==> not((car(x) in Za) & (cdr(x) in s)) Use_def(domain) ==> domain(f) = {car(x): x in f} Use_def(range) ==> range(f) = {cdr(x): x in f} Suppose ==> Stat9: cdr(x) notin {cdr(x): x in f} x-->Stat9 ==> false; Discharge ==> cdr(x) in s Loc_def ==> zz = Za -- T206 ==> Ord(Za) (Za,domain(f))-->T13 ==> domain(f) ¥incin Za Suppose ==> Stat10: car(x) notin {car(x): x in f} x-->Stat10 ==> false; Discharge ==> car(x) in Za Discharge ==> QED -- -- Next we note that the domain of a finite sequence $f$ is just $#f$. -- The proof of this and various associated facts is direct and elementary. -- Theorem 336: [Other properties of finite sequences] (F in Fin_seqs(S)) ¥imp ((domain(F) = #domain(F)) & (domain(F) = #F) & (#F in Za) & Finite(F)). Proof+: Suppose_not(f,s) ==> AUTO (f,s)-->T335 ==> Svm(f) & (domain(f) in Za) -- -- Hence, $Card(domain(f))$ and $Finite(domain(f))$. -- (domain(f))-->T164 ==> domain(f) = #domain(f) f-->T174 ==> #domain(f) = #f EQUAL ==> Finite(#f) f-->T193 ==> false; Discharge ==> QED -- -- The following simple reformulations of the condition for function equality -- will be quite useful in some of the elementary proofs given later. -- Theorem 337: [Two single-valued functions with common domain are equal if all their values are equal] (Svm(F) & Svm(G) & (domain(F) = S) & (domain(G) = S) & (FORALL n0 in S | F~[n0] = G~[n0])) ¥imp (F = G). Proof: Suppose_not(f,g,s) ==> Svm(f) & Svm(g) & (domain(f) = s) & (domain(g) = s) & (f /= g) & Stat1: (FORALL n in s | f~[n] = g~[n]) Suppose ==> s = 0 f-->T24 ==> f = 0 g-->T24 ==> false; Discharge ==> s /= 0 f-->T72 ==> f = {[x,f~[x]]: x in domain(f)} g-->T72 ==> g = {[x,g~[x]]: x in domain(g)} EQUAL ==> f = {[x,f~[x]]: x in s} EQUAL ==> Stat2: {[x,f~[x]]: x in s} /= {[x,g~[x]]: x in s} x-->Stat2 ==> (x in s) & ([x,f~[x]] /= [x,g~[x]]) ELEM ==> f~[x] /= g~[x] x-->Stat1 ==> false; Discharge ==> QED -- -- -- Theorem 338: [Two functions from a collection of single-valued functions with common domain are equal if all their values are equal] ((S /= 0) & (FORALL h in Mapset | ((domain(h) = S) & Svm(h)))) ¥imp ((FORALL n in S | ((F in Mapset) & (G in Mapset) & (F~[n] = G~[n]))) ¥imp (F = G)). Proof: Suppose_not(s,mapset,f,g) ==> Stat1: (s /= 0) & Stat2: (FORALL h in mapset | ((domain(h) = s) & Svm(h))) & Stat3: (FORALL n in s | ((f in Mapset) & (g in Mapset) & (f~[n] = g~[n]))) & (f /= g) n-->Stat1 ==> n in s n-->Stat3 ==> (f in Mapset) & (g in Mapset) f-->Stat2 ==> (domain(f) = s) & Svm(f) g-->Stat2 ==> (domain(g) = s) & Svm(g) Suppose ==> Stat4: not (FORALL n in s | f~[n] = g~[n]) k-->Stat4 ==> (k in s) & (f~[k] /= g~[k]) k-->Stat3 ==> false; Discharge ==> (FORALL n in s | f~[n] = g~[n]) (f,g,s)-->T337 ==> false; Discharge ==> QED -- -- 'Shift' is obviously a single-valued function. -- Theorem 339: [The shift-map of an integer is single-valued and maps Za into Za] ((M in Za) & (N in Za)) ¥imp (Svm(Shift(M)) & (domain(Shift(M)) = Za) & (range(Shift(M)) ¥incin Za) & (Shift(M)~[N] = M ¥PLUS N)). Proof: Suppose_not(m,n) ==> AUTO APPLY() Must_be_svm(b(x)->m ¥PLUS x,s->Za,u->n) ==> (n in Za) ¥imp ({[i,m ¥PLUS i]: i in Za}~[n] = (m ¥PLUS n)) Use_def(Shift) ==> Stat1: not({m ¥PLUS i: i in Za} ¥incin Za) j-->Stat1 ==> (j notin Za) & Stat2: (j in {m ¥PLUS i: i in Za}) i-->Stat2 ==> (j = m ¥PLUS i) & (i in Za) (m,i)-->T283 ==> false; Discharge ==> QED -- -- Ths composition of two shift-maps yields a shift-map whose shift-number -- is the sum of the shift-numbers of the operand maps. -- Theorem 340: [Composition of shift-maps yields a shift-map] ((M in Za) & (N in Za)) ¥imp (Shift(M) @ Shift(N) = Shift(M ¥PLUS N)). Proof: Suppose_not(m,n) ==> AUTO (m,n)-->T283 ==> (m ¥PLUS n in Za) (m ¥PLUS n,n)-->T339 ==> Svm(Shift(m ¥PLUS n)) & (domain(Shift(m ¥PLUS n)) = Za) (n,n)-->T339 ==> Svm(Shift(n)) & (domain(Shift(n)) = Za) & (range(Shift(n)) ¥incin Za) (m,n)-->T339 ==> Svm(Shift(m)) & (domain(Shift(m)) = Za) (Shift(m),Shift(n))-->T128 ==> Svm(Shift(m) @ Shift(n)) (Shift(m),Shift(n))-->T95 ==> domain(Shift(m) @ Shift(n)) = Za (Shift(m) @ Shift(n),Shift(m ¥PLUS n),Za)-->T337 ==> AUTO ELEM ==> Stat1: not (FORALL k in Za | ((Shift(m) @ Shift(n))~[k]) = (Shift(m ¥PLUS n)~[k])) k-->Stat1 ==> (k in Za) & ((Shift(m) @ Shift(n))~[k] /= (Shift(m ¥PLUS n)~[k])) (n,k)-->T339 ==> (Shift(n)~[k]) = (n ¥PLUS k) (n,k)-->T283 ==> (n ¥PLUS k in Za) (m ¥PLUS n,k)-->T339 ==> Shift(m ¥PLUS n)~[k] = ((m ¥PLUS n) ¥PLUS k) (m,Shift(n)~[k])-->T339 ==> (Shift(m)~[Shift(n)~[k]]) = (m ¥PLUS (Shift(n)~[k])) (Shift(m),Shift(n),k)-->T129 ==> ((Shift(m) @ Shift(n))~[k]) = (Shift(m)~[Shift(n)~[k]]) EQUAL ==> m ¥PLUS (Shift(n)~[k]) = m ¥PLUS (n ¥PLUS k) ELEM ==> (m ¥PLUS n) ¥PLUS k /= m ¥PLUS (n ¥PLUS k) (m,n,k)-->T258 ==> false; Discharge ==> QED -- -- Theorem 341: [Double shifting can be emulated by a single shift] ((M in Za) & (N in Za)) ¥imp (shifted_seq(shifted_seq(F,M),N) = shifted_seq(F,M ¥PLUS N)). Proof: Suppose_not(m,n,f) ==> AUTO Use_def(shifted_seq) ==> ((f @ Shift(m)) @ Shift(n)) /= (f @ Shift(m ¥PLUS n)) (f,Shift(m),Shift(n))-->T66 ==> (f @ (Shift(m) @ Shift(n))) /= (f @ Shift(m ¥PLUS n)) (m,n)-->T340 ==> (Shift(m) @ Shift(n)) = Shift(m ¥PLUS n) EQUAL ==> false; Discharge ==> QED -- Theorem 342: [Shift(0) is the identity map on Za] (Shift(0) = {[n,n]: n in Za}) & ((Is_map(F) & (domain(F) ¥incin Za)) ¥imp (F @ Shift(0) = F)). Proof: Suppose_not(f) ==> AUTO Suppose ==> Shift(0) /= {[n,n]: n in Za} Use_def(Shift) ==> Stat1: {[n,0 ¥PLUS n]: n in Za} /= {[n,n]: n in Za} n-->Stat1 ==> (n in Za) & ([n,0 ¥PLUS n] /= [n,n]) ELEM ==> 0 ¥PLUS n /= n n-->T254 ==> false; Discharge ==> (Shift(0) = {[n,n]: n in Za}) & (domain(f) ¥incin Za) & (f @ Shift(0) /= f) Use_def(ident) ==> Shift(0) = ident(Za) f-->T67 ==> f = (f ¥ON domain(f)) (f,Za)-->T116 ==> f @ ident(Za) = (f ¥ON Za) EQUAL ==> f @ Shift(0) = ((f ¥ON domain(f)) ¥ON Za) (f,domain(f),Za)-->T69 ==> f @ Shift(0) = (f ¥ON (domain(f) * Za)) ELEM ==> domain(f) * Za = domain(f) EQUAL ==> false; Discharge ==> QED -- -- The following easy corollary is sometimes useful. -- Theorem 343: [Shift-by-0 is the identity map on sequences] (Is_map(F) & (domain(F) ¥incin Za)) ¥imp (shifted_seq(F,0) = F). Proof: Suppose_not(f) ==> AUTO f-->T342 ==> AUTO ELEM ==> shifted_seq(f,0) /= f Use_def(shifted_seq) ==> false; Discharge ==> QED -- -- The following alternative characterization of the left-shift operator can be useful, -- e.g., in the proof of Theorem 350 below. -- Theorem 344: [Form of a shifted sequence] ((M in Za) & (domain(F) ¥incin Za)) ¥imp (shifted_seq(F,M) = {[car(x) ¥MINUS M,cdr(x)]: x in F | car(x) incs M}). Proof: Suppose_not(m,f) ==> Stat1: (m in Za) & (domain(f) ¥incin Za) & (shifted_seq(f,m) /= {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m}) Use_def(shifted_seq) ==> (f @ Shift(m)) /= {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m} Use_def(Shift) ==> (f @ {[i, m ¥PLUS i]: i in Za}) /= {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m} Use_def(@) ==> {[car(p),cdr(q)]: p in {[i, m ¥PLUS i]: i in Za}, q in f | cdr(p) = car(q)} /= {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m} SIMPLF ==> Stat2: {[car([i, m ¥PLUS i]),cdr(q)]: i in Za, q in f | cdr([i, m ¥PLUS i]) = car(q)} /= {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m} c-->Stat2 ==> (c in {[car([i, m ¥PLUS i]),cdr(q)]: i in Za, q in f | cdr([i, m ¥PLUS i]) = car(q)}) ¥eq (c notin {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m}) Suppose ==> Stat3: (c in {[car([i, m ¥PLUS i]),cdr(q)]: i in Za, q in f | cdr([i, m ¥PLUS i]) = car(q)}) & (c notin {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m}) (i,q,q)-->Stat3(Stat3) ==> (c = [i,cdr(q)]) & (i in Za) & ((m ¥PLUS i) = car(q)) & ((c /= [car(q) ¥MINUS m,cdr(q)]) or (not(car(q) incs m))) ALGEBRA ==> ((m ¥PLUS i) in Za) & (((m ¥PLUS i) ¥MINUS m) = ((i ¥PLUS m) ¥MINUS m)) (i,m)-->T304(Stat1*) ==> ((i ¥PLUS m) ¥MINUS m) = i EQUAL(Stat3) ==> (car(q) in Za) & (not(car(q) incs m)) TELEM ==> 0 ¥incin i (m,i)-->T292 ==> m ¥incin (m ¥PLUS i) EQUAL ==> false; Discharge ==> Stat4: (c in {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m}) & (c notin {[car([i, m ¥PLUS i]),cdr(q)]: i in Za, q in f | cdr([i, m ¥PLUS i]) = car(q)}) (x,car(x) ¥MINUS m,x)-->Stat4(Stat4) ==> (c = [car(x) ¥MINUS m,cdr(x)]) & (x in f) & (car(x) incs m) & (((car(x) ¥MINUS m) notin Za) or ((m ¥PLUS (car(x) ¥MINUS m)) /= car(x))) (x,f)-->T60 ==> car(x) in domain(f) ELEM ==> car(x) in Za ALGEBRA ==> (car(x) ¥MINUS m) in Za (car(x),m)-->T325 ==> (m ¥PLUS (car(x) ¥MINUS m)) = car(x) (Stat4*)ELEM ==> (m ¥PLUS (car(x) ¥MINUS m)) /= car(x) Discharge ==> QED -- -- The following lemmas will be used just below to show that the concatenation of two -- finite sequences is also a finite sequence. Among other facts, we show that -- the left-shift operator defined above always produces a single-valued map. -- Theorem 345: [Properties of finite and shifted finite sequences] ((F in Fin_seqs(S)) & (G in Fin_seqs(S))) ¥imp (Svm({[car(x) ¥PLUS #F, cdr(x)]: x in G}) & (domain(F) * domain({[car(x) ¥PLUS #F, cdr(x)]: x in G}) = 0)). Proof+: Suppose_not(f,s,g) ==> AUTO Use_def(Fin_seqs) ==> Stat1: (f in {h: h ¥incin (Za ¥PROD S) | Svm(h) & (domain(h) in Za)}) & Stat2: (g in {h: h ¥incin (Za ¥PROD S) | Svm(h) & (domain(h) in Za)}) h0-->Stat1 ==> (h0 ¥incin (Za ¥PROD S)) & (h0 = f) & Svm(h0) & (domain(h0) in Za) h2-->Stat2 ==> (h2 ¥incin (Za ¥PROD S)) & (h2 = g) & Svm(h2) & (domain(h2) in Za) EQUAL ==> (f ¥incin (Za ¥PROD S)) & Svm(f) & (domain(f) in Za) EQUAL ==> (g ¥incin (Za ¥PROD S)) & Svm(g) & (domain(g) in Za) f-->T336 ==> Stat3: (domain(f) = #f) & (#f in Za) Suppose ==> not Svm({[car(x) ¥PLUS #f, cdr(x)]: x in g}) APPLY(x3_thryvar:c,y3_thryvar:d) Svm_test(a(x)->(car(x) ¥PLUS #f),b(x)->cdr(x),s->g) ==> ((c in g) & (d in g) & (((car(c) ¥PLUS #f) = (car(d) ¥PLUS #f)) & (cdr(c) /= cdr(d)))) or Svm({[car(x) ¥PLUS #f, cdr(x)]: x in g}) ELEM ==> (c in (Za ¥PROD s)) & (d in (Za ¥PROD s)) -- -- Hence, $car(c) in Za$ and $car(d) in Za$. -- (c,Za,s)-->T140 ==> AUTO (d,Za,s)-->T140 ==> AUTO Use_def(Svm) ==> Stat4: (FORALL x in g, y in g | (car(x) = car(y)) ¥imp (x = y)) (c,d)-->Stat4 ==> Stat5: (car(c) = car(d)) ¥imp (c = d) (car(c),car(d),#f)-->T289(Stat3*) ==> Stat6: c = d Discharge ==> Stat7: domain(f) * domain({[car(x) ¥PLUS #f, cdr(x)]: x in g}) /= 0 -- -- -- T336 ==> #f * domain({[car(x) ¥PLUS #f, cdr(x)]: x in g}) /= 0 Use_def(domain) ==> domain({[car(x) ¥PLUS #f, cdr(x)]: x in g}) = {car(y): y in {[car(x) ¥PLUS #f, cdr(x)]: x in g}} SIMPLF ==> Stat8: #f * {car([car(x) ¥PLUS #f, cdr(x)]): x in g} /= 0 c1-->Stat8 ==> Stat9: (c1 in #f) & Stat10: (c1 in {car([car(x) ¥PLUS #f, cdr(x)]): x in g}) y-->Stat10 ==> Stat11: (y in g) & (c1 = car([car(y) ¥PLUS #f, cdr(y)])) (Stat11)ELEM ==> Stat12: c1 = car(y) ¥PLUS #f (#f,car(y))-->T292(Stat3,Stat12*) ==> #f ¥incin (car(y) ¥PLUS #f) (Stat9)Discharge ==> QED -- Theorem 346: ((F in Fin_seqs(S)) & (M in Za)) ¥imp (((F ¥ON M) in Fin_seqs(S)) & (shifted_seq(F,M) in Fin_seqs(S)) & (domain(shifted_seq(F,M)) = (#F ¥MINUS M))). Proof+: Suppose_not(f,s,m) ==> Stat1: (f in Fin_seqs(s)) & (m in Za) & (((f ¥ON m) notin Fin_seqs(s)) or (shifted_seq(f,m) notin Fin_seqs(s)) or (domain(shifted_seq(f,m)) /= (#f ¥MINUS m))) f-->T335 ==> Stat2: Svm(f) & (domain(f) in Za) & (range(f) ¥incin s) Use_def(shifted_seq) ==> ((f ¥ON m) notin Fin_seqs(s)) or ((f @ Shift(m)) notin Fin_seqs(s)) or (domain(f @ Shift(m)) /= (#f ¥MINUS m)) (m,m)-->T339 ==> Svm(Shift(m)) & (domain(Shift(m)) = Za) & (range(Shift(m)) ¥incin Za) (f,Shift(m))-->T95 ==> range(f @ Shift(m)) = range(f ¥ON range(Shift(m))) (f,range(Shift(m)))-->T80 ==> range(f @ Shift(m)) ¥incin s (f,Shift(m))-->T128 ==> Svm(f @ Shift(m)) Use_def(domain) ==> domain(f @ Shift(m)) = {car(x): x in (f @ Shift(m))} Use_def(@) ==> domain(f @ Shift(m)) = {car(x): x in {[car(y),cdr(u)]: y in Shift(m), u in f | cdr(y) = car(u)}} SIMPLF ==> domain(f @ Shift(m)) = {car([car(y),cdr(u)]): y in Shift(m), u in f | cdr(y) = car(u)} Suppose ==> Stat3: {car([car(y),cdr(u)]): y in Shift(m), u in f | cdr(y) = car(u)} /= {car(y): y in Shift(m), u in f | cdr(y) = car(u)} (y1,u1)-->Stat3 ==> false; Discharge ==> domain(f @ Shift(m)) = {car(y): y in Shift(m), u in f | cdr(y) = car(u)} Use_def(Shift) ==> {car(y): y in Shift(m), u in f | cdr(y) = car(u)} = {car(y): y in {[i, m ¥PLUS i]: i in Za}, u in f | cdr(y) = car(u)} ELEM ==> domain(f @ Shift(m)) = {car(y): y in {[i, m ¥PLUS i]: i in Za}, u in f | cdr(y) = car(u)} SIMPLF ==> domain(f @ Shift(m)) = {car([i, m ¥PLUS i]): i in Za, u in f | cdr([i, m ¥PLUS i]) = car(u)} Suppose ==> Stat4: {car([i, m ¥PLUS i]): i in Za, u in f | cdr([i, m ¥PLUS i]) = car(u)} /= {i: i in Za, u in f | cdr([i, m ¥PLUS i]) = car(u)} (y2,u2)-->Stat4 ==> false; Discharge ==> domain(f @ Shift(m)) = {i: i in Za, u in f | cdr([i, m ¥PLUS i]) = car(u)} Suppose ==> Stat5: {i: i in Za, u in f | cdr([i, m ¥PLUS i]) = car(u)} /= {i: i in Za, u in f | m ¥PLUS i = car(u)} (y3,u3)-->Stat5 ==> false; Discharge ==> domain(f @ Shift(m)) = {i: i in Za, u in f | m ¥PLUS i = car(u)} Suppose ==> {i: i in Za, u in f | m ¥PLUS i = car(u)} /= {i: i in Za, v in domain(f) | m ¥PLUS i = v} Use_def(domain) ==> {i: i in Za, u in f | m ¥PLUS i = car(u)} /= {i: i in Za, v in {car(u): u in f} | m ¥PLUS i = v} SIMPLF ==> false; Discharge ==> domain(f @ Shift(m)) = {i: i in Za, v in domain(f) | m ¥PLUS i = v} Suppose ==> Stat6: {i: i in Za, v in domain(f) | m ¥PLUS i = v} /= {i: i in Za | (m ¥PLUS i) in domain(f)} c-->Stat6 ==> not ((c in {i: i in Za, v in domain(f) | m ¥PLUS i = v}) ¥eq (c in {i: i in Za | (m ¥PLUS i) in domain(f)})) Suppose ==> Stat7: (c in {i: i in Za, v in domain(f) | m ¥PLUS i = v}) & Stat8: (c notin {i: i in Za | (m ¥PLUS i) in domain(f)}) (i,v)-->Stat7 ==> (c = i) & (i in Za) & (v in domain(f)) & (m ¥PLUS i = v) i-->Stat8 ==> not((c = i) & (i in Za) & ((m ¥PLUS i) in domain(f))) Discharge ==> Stat9: (c notin {i: i in Za, v in domain(f) | (m ¥PLUS i) = v}) & Stat10: (c in {i: i in Za | (m ¥PLUS i) in domain(f)}) i1-->Stat10 ==> (c = i1) & (i1 in Za) & ((m ¥PLUS i1) in domain(f)) (i1,m ¥PLUS i1)-->Stat9 ==> false; Discharge ==> Stat11: domain(f @ Shift(m)) = {i: i in Za | (m ¥PLUS i) in domain(f)} SIMPLF ==> Stat12: {i: i in Za | (m ¥PLUS i) in domain(f)} = {i in Za | (m ¥PLUS i) in domain(f)} Suppose ==> Stat13: {i: i in Za | (m ¥PLUS i) in domain(f)} /= {i: i in Za | (i ¥PLUS m) in domain(f)} c2-->Stat13 ==> (c2 in Za) & ((m ¥PLUS c2) /= (c2 ¥PLUS m)) (m,c2)-->T252 ==> false; Discharge ==> Stat14: {i in Za | (m ¥PLUS i) in domain(f)} = {i in Za | (i ¥PLUS m) in domain(f)} (domain(f),m)-->T328(Stat11,Stat2,Stat1,Stat12,Stat14) ==> domain(f @ Shift(m)) = domain(f) ¥MINUS m f-->T336 ==> domain(f) = #f EQUAL ==> ((f ¥ON m) notin Fin_seqs(s)) or ((f @ Shift(m)) notin Fin_seqs(s)) Suppose ==> (f @ Shift(m)) notin Fin_seqs(s) (f @ Shift(m))-->T335 ==> (domain(f) ¥MINUS m) notin Za (domain(f),m)-->T283 ==> false; Discharge ==> (f ¥ON m) notin Fin_seqs(s) Use_def(Fin_seqs) ==> Stat15: (f ¥ON m) notin {g ¥incin (Za ¥PROD s) | Svm(g) & (domain(g) in Za)} (m,domain(f))-->T29(Stat1,Stat2*) ==> (m ¥incin domain(f)) or (domain(f) ¥incin m) Suppose ==> (domain(f) * m) = domain(f) (f,m)-->T68(Stat15*) ==> (f ¥ON (domain(f) * m)) = (f ¥ON m) f-->T67(Stat15*) ==> (f ¥ON domain(f)) = f EQUAL(Stat1) ==> false; Discharge ==> not(domain(f) ¥incin m) (f,m)-->T94(Stat1*) ==> domain(f ¥ON m) in Za (f,m)-->T57(Stat2*) ==> Svm(f ¥ON m) (f ¥ON m)-->Stat15(Stat15*) ==> (f ¥ON m) ¥nincin (Za ¥PROD s) Use_def(Svm)(Stat15*) ==> Is_map(f ¥ON m) T206(Stat15*) ==> Ord(Za) (Za,domain(f ¥ON m))-->T13(Stat15*) ==> domain(f ¥ON m) ¥incin Za (f,m)-->T80(Stat2*) ==> range(f ¥ON m) ¥incin s (f ¥ON m,Za,s)-->T141(Stat15*) ==> false; Discharge ==> QED -- -- We start with a preliminary lemma which shows that the concatenation of two finite sequences if is a finite sequence, -- and which gives additional details concering the domin and range of the concatenation. -- Theorem 347: [Concatenation of finite sequences] ((F in Fin_seqs(S)) & (G in Fin_seqs(S))) ¥imp ((concat(F,G) in Fin_seqs(S)) & (domain(concat(F,G)) = domain(F) ¥PLUS domain(G)) & (range(concat(F,G)) = range(F) + range(G))) & ((U in domain(F) ¥PLUS domain(G)) ¥imp (concat(F,G)~[U] = if U in domain(F) then F~[U] else G~[U ¥MINUS domain(F)] end if)). Proof+: Suppose_not(f,s1,g,u) ==> AUTO Use_def(concat) ==> concat(f,g) = {[n,if n in domain(f) then f~[n] else g~[n ¥MINUS domain(f)] end if]: n in domain(f) ¥PLUS domain(g)} APPLY() Must_be_svm(b(x)->if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if,s->domain(f) ¥PLUS domain(g),u->u) ==> Svm({[x,if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if]: x in domain(f) ¥PLUS domain(g)}) & (domain({[x,if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if]: x in domain(f) ¥PLUS domain(g)}) = domain(f) ¥PLUS domain(g)) & (range({[x,if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if]: x in domain(f) ¥PLUS domain(g)}) = {if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if: x in domain(f) ¥PLUS domain(g)}) & ((u in domain(f) ¥PLUS domain(g)) ¥imp ({[x,if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if]: x in domain(f) ¥PLUS domain(g)}~[u] = if u in domain(f) then f~[u] else g~[u ¥MINUS domain(f)] end if)) EQUAL ==> Stat2: Svm(concat(f,g)) & (domain(concat(f,g)) = domain(f) ¥PLUS domain(g)) & (range(concat(f,g)) = {if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if: x in domain(f) ¥PLUS domain(g)}) & ((u in domain(f) ¥PLUS domain(g)) ¥imp (concat(f,g)~[u] = if u in domain(f) then f~[u] else g~[u ¥MINUS domain(f)] end if)) (f,s1)-->T335 ==> Stat3: Svm(f) & (domain(f) in Za) & (range(f) ¥incin s1) (g,s1)-->T335 ==> Stat4: Svm(g) & (domain(g) in Za) & (range(g) ¥incin s1) ALGEBRA ==> Stat5: ((domain(g) ¥PLUS domain(f)) = (domain(f) ¥PLUS domain(g))) & ((domain(f) ¥PLUS domain(g)) in Za) -- -- What is missing from the above conclusions is the fact that range(concat(f,g)) = range(f) + range(f)), -- and we now establish this further fact, We begin by showing that the first of these two sets is included in the second -- Suppose ==> Stat7: not(range(concat(f,g)) ¥incin (range(f) + range(g))) c-->Stat7 ==> Stat8: (c in {if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if: x in (domain(f) ¥PLUS domain(g))}) & (c notin (range(f) + range(g))) x-->Stat8 ==> (x in (domain(f) ¥PLUS domain(g))) & (c = if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if) (domain(f) ¥PLUS domain(g),x)-->T12 ==> Ord(x) Suppose ==> x in domain(f) x-->T75 ==> false; Discharge ==> x notin domain(f) (domain(f),x)-->T35 ==> x incs domain(f) ELEM ==> g~[x ¥MINUS domain(f)] notin range(g) (domain(g),domain(f))-->T304 ==> (domain(g) ¥PLUS domain(f)) ¥MINUS domain(f) = domain(g) EQUAL ==> (domain(f) ¥PLUS domain(g)) ¥MINUS domain(f) = domain(g) -- -- It follows by strict monotonicity of subtraction that x ¥MINUS domain(f) is a member of domain(g) -- (domain(f),domain(f) ¥PLUS domain(g),x)-->T302 ==> (x ¥MINUS domain(f)) in domain(g) -- -- But then c = g~[x ¥MINUS domain(f)] plainly belongs to range(g), a contradiction which proves our assertion -- (x ¥MINUS domain(f),g)-->T75 ==> false; Discharge ==> range(concat(f,g)) ¥incin (range(f) + range(g)) -- -- Next we show that range(concat(f,g)) incs (range(f) + range(g)), from which our theorem is immediate. -- ELEM ==> range(concat(f,g)) = {if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if: x in domain(f) ¥PLUS domain(g)} f-->T73 ==> range(f) = {f~[x]: x in domain(f)} g-->T73 ==> range(g) = {g~[x]: x in domain(g)} Suppose ==> Stat9: not(range(concat(f,g)) incs range(f)) c1-->Stat9 ==> Stat10: (c1 in {f~[x]: x in domain(f)}) & Stat11: (c1 notin {if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if: x in domain(f) ¥PLUS domain(g)}) x1-->Stat10 ==> (c1 = f~[x1]) & (x1 in domain(f)) x1-->Stat11 ==> not(x1 in domain(f) ¥PLUS domain(g)) (domain(f),domain(f),domain(g),0)-->T219 ==> (domain(f) ¥PLUS 0) ¥incin (domain(f) ¥PLUS domain(g)) (domain(f))-->T254 ==> domain(f) ¥PLUS 0 = domain(f); Discharge ==> range(concat(f,g)) incs range(f) Suppose ==> Stat12: not(range(concat(f,g)) incs range(g)) c2-->Stat12 ==> Stat13: (c2 in {g~[x]: x in domain(g)}) & Stat14: (c2 notin {if x in domain(f) then f~[x] else g~[x ¥MINUS domain(f)] end if: x in domain(f) ¥PLUS domain(g)}) x2-->Stat13 ==> (c2 = g~[x2]) & (x2 in domain(g)) T206 ==> Ord(Za) (Za,domain(g))-->T13 ==> x2 in Za (domain(f),domain(g),x2)-->T288 ==> Stat15: (x2 ¥PLUS domain(f)) in (domain(g) ¥PLUS domain(f)) (x2,domain(f))-->T304 ==> (x2 ¥PLUS domain(f)) ¥MINUS domain(f) = x2 EQUAL ==> g~[(x2 ¥PLUS domain(f)) ¥MINUS domain(f)] = g~[x2] (x2,0,domain(f),domain(f))-->T219 ==> (x2 ¥PLUS domain(f)) incs (0 ¥PLUS domain(f)) (domain(f))-->T254 ==> Stat16: (x2 ¥PLUS domain(f)) incs domain(f) ELEM ==> Stat17: (x2 ¥PLUS domain(f)) notin domain(f) (x2 ¥PLUS domain(f))-->Stat14 ==> Stat18: not((c2 = if (x2 ¥PLUS domain(f)) in domain(f) then f~[(x2 ¥PLUS domain(f))] else g~[(x2 ¥PLUS domain(f)) ¥MINUS domain(f)] end if) & ((x2 ¥PLUS domain(f)) in (domain(f) ¥PLUS domain(g)))) (Stat17,Stat18,Stat16,Stat5,Stat15)ELEM ==> not(c2 = (g~[(x2 ¥PLUS domain(f)) ¥MINUS domain(f)])) EQUAL ==> false; Discharge ==> Stat19: range(concat(f,g)) = (range(f) + range(g)) (Stat2,Stat5,Stat19,Stat3,Stat4)ELEM ==> Svm(concat(f,g)) & (range(concat(f,g)) ¥incin s1) & (domain(concat(f,g)) in Za) (concat(f,g),s1)-->T335 ==> concat(f,g) in Fin_seqs(s1) Discharge ==> QED -- -- -- Theorem 348: [$0$ is bilateral unit for sequence concatenation] (F in Fin_seqs(S)) ¥imp ((concat(F,0) = F) & (concat(0,F) = F)). Proof: Suppose_not(f,s) ==> AUTO (f,s)-->T335 ==> Svm(f) & (domain(f) in Za) f-->T72 ==> f = {[n,f~[n]]: n in domain(f)} T59 ==> domain(0) = 0 (domain(f))-->T254 ==> ((domain(f) ¥PLUS 0) = domain(f)) & ((0 ¥PLUS domain(f)) = domain(f)) Suppose ==> concat(f,0) /= f Use_def(concat) ==> concat(f,0) = {[n,if n in domain(f) then f~[n] else 0~[n ¥MINUS domain(f)] end if]: n in domain(f) ¥PLUS domain(0)} EQUAL ==> Stat1: {[n,if n in domain(f) then f~[n] else 0~[n ¥MINUS domain(f)] end if]: n in domain(f)} /= {[n,f~[n]]: n in domain(f)} n-->Stat1(Stat1) ==> false; Discharge ==> concat(0,f) /= f Use_def(concat) ==> concat(0,f) = {[n,if n in domain(0) then 0~[n] else f~[n ¥MINUS domain(0)] end if]: n in domain(0) ¥PLUS domain(f)} n-->T268 ==> (n ¥MINUS 0) = #n EQUAL ==> Stat2: {[n,if n in 0 then 0~[n] else f~[#n] end if]: n in domain(f)} /= {[n,f~[n]]: n in domain(f)} m-->Stat2(Stat2) ==> (m in domain(f)) & ((f~[#m]) /= (f~[m])) T206 ==> Ord(Za) (Za,domain(f))-->T13 ==> m in Za m-->T207 ==> (#m) = m EQUAL ==> false; Discharge ==> QED -- -- -- Theorem 349: [Associativity of sequence concatenation] ((F in Fin_seqs(S)) & (G in Fin_seqs(S)) & (H in Fin_seqs(S))) ¥imp (concat(F,concat(G,H)) = concat(concat(F,G),H)). Proof+: Suppose_not(f,s,g,h) ==> AUTO ELEM ==> Stat1: (f in Fin_seqs(s)) & (g in Fin_seqs(s)) & (h in Fin_seqs(s)) (f,s,g)-->T347 ==> Stat2: (concat(f,g) in Fin_seqs(s)) & (domain(concat(f,g)) = domain(f) ¥PLUS domain(g)) (g,s,h)-->T347 ==> Stat3: (concat(g,h) in Fin_seqs(s)) & (domain(concat(g,h)) = domain(g) ¥PLUS domain(h)) (f,s,concat(g,h))-->T347 ==> (concat(f,concat(g,h)) in Fin_seqs(s)) & (domain(concat(f,concat(g,h))) = domain(f) ¥PLUS domain(concat(g,h))) (concat(f,g),s,h)-->T347 ==> (concat(concat(f,g),h) in Fin_seqs(s)) & (domain(concat(concat(f,g),h)) = domain(concat(f,g)) ¥PLUS domain(h)) EQUAL ==> (domain(concat(f,concat(g,h))) = (domain(f) ¥PLUS (domain(g) ¥PLUS domain(h)))) & (domain(concat(concat(f,g),h)) = (domain(f) ¥PLUS domain(g)) ¥PLUS domain(h)) (concat(f,concat(g,h)),s)-->T335 ==> Svm(concat(f,concat(g,h))) (concat(concat(f,g),h),s)-->T335 ==> Svm(concat(concat(f,g),h)) (domain(f),domain(g),domain(h))-->T258 ==> Stat4: (domain(f) ¥PLUS (domain(g) ¥PLUS domain(h))) = (domain(f) ¥PLUS domain(g)) ¥PLUS domain(h) (concat(f,concat(g,h)),concat(concat(f,g),h),domain(concat(f,concat(g,h))))-->T337 ==> not (FORALL j in domain(concat(f,concat(g,h))) | concat(f,concat(g,h))~[j] = concat(concat(f,g),h)~[j]) EQUAL ==> Stat5: not (FORALL j in (domain(f) ¥PLUS (domain(g) ¥PLUS domain(h))) | concat(f,concat(g,h))~[j] = concat(concat(f,g),h)~[j]) j-->Stat5 ==> Stat6: (j in (domain(f) ¥PLUS (domain(g) ¥PLUS domain(h)))) & (concat(f,concat(g,h))~[j] /= concat(concat(f,g),h)~[j]) -- -- Now we know that the single-valued maps $concat(f,concat(g,h))$ and $concat(concat(f,g),h)$ have the same domain, -- and have only to prove that they have equal vaues at each point $j$ of that domain. Formulae for those values are easily derived. -- (f,s,g,j)-->T347(Stat5*) ==> Stat7: (j in (domain(f) ¥PLUS domain(g))) ¥imp (concat(f,g)~[j] = if j in domain(f) then f~[j] else g~[j ¥MINUS domain(f)] end if) (concat(f,g),s,h,j)-->T347(Stat7*) ==> Stat8: (j in (domain(concat(f,g)) ¥PLUS domain(h))) ¥imp (concat(concat(f,g),h)~[j] = if j in domain(concat(f,g)) then concat(f,g)~[j] else h~[j ¥MINUS domain(concat(f,g))] end if) EQUAL(Stat2,Stat7,Stat8) ==> Stat9: (j in (domain(f) ¥PLUS (domain(g)) ¥PLUS domain(h))) ¥imp (concat(concat(f,g),h)~[j] = if j in (domain(f) ¥PLUS domain(g)) then if j in domain(f) then f~[j] else g~[j ¥MINUS domain(f)] end if else h~[j ¥MINUS (domain(f) ¥PLUS domain(g))] end if) (Stat6,Stat9,Stat4*)ELEM ==> (concat(concat(f,g),h)~[j]) = if j in (domain(f) ¥PLUS domain(g)) then if j in domain(f) then f~[j] else g~[j ¥MINUS domain(f)] end if else h~[j ¥MINUS (domain(f) ¥PLUS domain(g))] end if (f,s,concat(g,h),j)-->T347(Stat9*) ==> Stat10: (j in (domain(f) ¥PLUS (domain(concat(g,h))))) ¥imp (concat(f,concat(g,h))~[j] = if j in domain(f) then f~[j] else concat(g,h)~[j ¥MINUS domain(f)] end if) EQUAL(Stat10,Stat3) ==> (j in (domain(f) ¥PLUS (domain(g) ¥PLUS domain(h)))) ¥imp (concat(f,concat(g,h))~[j] = if j in domain(f) then f~[j] else concat(g,h)~[j ¥MINUS domain(f)] end if) (Stat6*)ELEM ==> Stat11: if j in (domain(f) ¥PLUS domain(g)) then if j in domain(f) then f~[j] else g~[j ¥MINUS domain(f)] end if else h~[j ¥MINUS (domain(f) ¥PLUS domain(g))] end if /= if j in domain(f) then f~[j] else concat(g,h)~[j ¥MINUS domain(f)] end if (f,s)-->T336(Stat1,Stat1*) ==> Stat12: domain(f) in Za (g,s)-->T336(Stat1,Stat1*) ==> Stat13: domain(g) in Za (h,s)-->T336(Stat1,Stat1*) ==> domain(h) in Za ALGEBRA(Stat13*) ==> ((domain(g) ¥PLUS domain(h)) in Za) & (0 in Za) Suppose ==> ((domain(f) ¥PLUS (domain(g) ¥PLUS domain(h))) ¥MINUS domain(f)) /= (domain(g) ¥PLUS domain(h)) (domain(f),domain(g) ¥PLUS domain(h))-->T252(Stat10*) ==> (domain(f) ¥PLUS (domain(g) ¥PLUS domain(h))) = ((domain(g) ¥PLUS domain(h)) ¥PLUS domain(f)) EQUAL(Stat10*) ==> (((domain(g) ¥PLUS domain(h)) ¥PLUS domain(f)) ¥MINUS domain(f)) /= (domain(g) ¥PLUS domain(h)) (domain(g) ¥PLUS domain(h),domain(f))-->T304(Stat10*) ==> false; Discharge ==> ((domain(f) ¥PLUS (domain(g) ¥PLUS domain(h))) ¥MINUS domain(f)) = (domain(g) ¥PLUS domain(h)) Suppose ==> domain(g) = 0 (g,s)-->T335 ==> Svm(g) g-->T72(Stat11*) ==> g = {[x,g~[x]]: x in domain(g)} Set_monot ==> {[x,g~[x]]: x in 0} = {x: x in 0} SIMPLF(Stat11) ==> {[x,g~[x]]: x in 0} = 0 EQUAL(Stat11) ==> g = 0 h-->T348 ==> concat(0,h) = h f-->T348 ==> concat(f,0) = f EQUAL ==> false; Discharge ==> domain(g) /= 0 Suppose ==> (domain(g) ¥PLUS domain(h)) = 0 (domain(g),domain(h))-->T252(Stat11*) ==> (domain(h) ¥PLUS domain(g)) = 0 (domain(h),domain(g))-->T284(Stat11*) ==> false; Discharge ==> (domain(g) ¥PLUS domain(h)) /= 0 (domain(f),domain(g) ¥PLUS domain(h),j)-->T326(Stat6*) ==> Stat14: (j ¥MINUS domain(f)) in (domain(g) ¥PLUS domain(h)) (g,s,h,j ¥MINUS domain(f))-->T347(Stat1,Stat14*) ==> Stat15: concat(g,h)~[j ¥MINUS domain(f)] = if (j ¥MINUS domain(f)) in domain(g) then g~[j ¥MINUS domain(f)] else h~[(j ¥MINUS domain(f)) ¥MINUS domain(g)] end if EQUAL(Stat15,Stat11) ==> if j in (domain(f) ¥PLUS domain(g)) then if j in domain(f) then f~[j] else g~[j ¥MINUS domain(f)] end if else h~[j ¥MINUS (domain(f) ¥PLUS domain(g))] end if /= if j in domain(f) then f~[j] else if (j ¥MINUS domain(f)) in domain(g) then g~[j ¥MINUS domain(f)] else h~[(j ¥MINUS domain(f)) ¥MINUS domain(g)] end if end if Suppose ==> not((j in domain(f)) ¥imp (j in (domain(f) ¥PLUS domain(g)))) (domain(f))-->T254(Stat11*) ==> (0 ¥PLUS domain(f)) = domain(f) (domain(g),domain(f))-->T252(Stat15*) ==> (domain(g) ¥PLUS domain(f)) = (domain(f) ¥PLUS domain(g)) (0,domain(g),domain(f))-->T296(Stat11*) ==> false; Discharge ==> AUTO Suppose ==> (j notin Za) or (not Ord(j)) j-->T207(Stat14*) ==> j notin Za T206(Stat14*) ==> Ord(Za) (domain(f),domain(g) ¥PLUS domain(h))-->T283(Stat11) ==> (domain(f) ¥PLUS (domain(g) ¥PLUS domain(h))) in Za (Za,domain(f) ¥PLUS (domain(g) ¥PLUS domain(h)))-->T13(Stat6*) ==> (not Ord(domain(f) ¥PLUS (domain(g) ¥PLUS domain(h)))) (domain(f),domain(g) ¥PLUS domain(h))-->T283(Stat11*) ==> false; Discharge ==> AUTO Suppose ==> Stat16: not((j in (domain(f) ¥PLUS domain(g))) ¥eq ((j ¥MINUS domain(f)) in domain(g))) Suppose ==> j in (domain(f) ¥PLUS domain(g)) (domain(f),domain(g),j)-->T326(Stat11*) ==> false; Discharge ==> Stat17: j notin (domain(f) ¥PLUS domain(g)) ALGEBRA(Stat11*) ==> (domain(f) ¥PLUS domain(g)) in Za (domain(f) ¥PLUS domain(g),j)-->T35(Stat15) ==> j incs (domain(f) ¥PLUS domain(g)) (j,domain(f) ¥PLUS domain(g),domain(f))-->T310(Stat15*) ==> (j ¥MINUS domain(f)) incs ((domain(f) ¥PLUS domain(g)) ¥MINUS domain(f)) (domain(f),domain(g))-->T252(Stat15*) ==> (domain(f) ¥PLUS domain(g)) = (domain(g) ¥PLUS domain(f)) EQUAL(Stat15) ==> Stat18: (j ¥MINUS domain(f)) incs ((domain(g) ¥PLUS domain(f)) ¥MINUS domain(f)) (domain(g),domain(f))-->T304(Stat12,Stat13,Stat18,Stat16,Stat17*) ==> false; Discharge ==> (not(j in domain(f))) ¥imp ((j in (domain(f) ¥PLUS domain(g))) ¥eq ((j ¥MINUS domain(f)) in domain(g))) TELEM ==> ((not(j in domain(f))) & (j in (domain(f) ¥PLUS domain(g)))) ¥imp ((g~[j ¥MINUS domain(f)]) = (g~[j ¥MINUS domain(f)])) Suppose ==> not(((not(j in domain(f))) & (not(j in (domain(f) ¥PLUS domain(g))))) ¥imp ((h~[j ¥MINUS (domain(f) ¥PLUS domain(g))]) = (h~[(j ¥MINUS domain(f)) ¥MINUS domain(g)]))) (domain(f),j)-->T35(Stat11*) ==> j incs domain(f) (j,domain(f))-->T283(Stat11*) ==> ((j ¥MINUS domain(f)) in Za) & ((j ¥MINUS domain(f)) notin domain(g)) (domain(g),j ¥MINUS domain(f))-->T35(Stat13) ==> (j ¥MINUS domain(f)) incs domain(g) (domain(f),j,domain(g))-->T303(Stat11*) ==> (j ¥MINUS (domain(f) ¥PLUS domain(g))) = ((j ¥MINUS domain(f)) ¥MINUS domain(g)) EQUAL(Stat15) ==> false; Discharge ==> AUTO APPLY() if_then_else2(q->(j in domain(f)),p->(j in (domain(f) ¥PLUS domain(g))),a->(f~[j]),b->(g~[j ¥MINUS domain(f)]),c->(h~[j ¥MINUS (domain(f) ¥PLUS domain(g))]),pp->((j ¥MINUS domain(f)) in domain(g)),ap->(f~[j]),bp->(g~[j ¥MINUS domain(f)]),cp->(h~[(j ¥MINUS domain(f)) ¥MINUS domain(g)])) ==> if j in (domain(f) ¥PLUS domain(g)) then if j in domain(f) then f~[j] else g~[j ¥MINUS domain(f)] end if else h~[j ¥MINUS (domain(f) ¥PLUS domain(g))] end if = if j in domain(f) then f~[j] else if (j ¥MINUS domain(f)) in domain(g) then g~[j ¥MINUS domain(f)] else h~[(j ¥MINUS domain(f)) ¥MINUS domain(g)] end if end if (Stat15*)Discharge ==> QED -- Theorem 350: [Concatenation of shifted sequences] ((F in Fin_seqs(S)) & (M in domain(F))) ¥imp ((shifted_seq(F,M) in Fin_seqs(S)) & (F = concat((F ¥ON M), shifted_seq(F,M)))). Proof: Suppose_not(f,s,m) ==> AUTO -- -- For, assuming the triple $f,s,m$ to be a counterexample to our theorem, -- we reach a contradiction leading to the desired conclusion arguing as follows. -- We begin by observing that $m$ is an unsigned integer insofar as an element of -- the domain of $f$; hence, by the earlier Theorem 345, $shifted_seq(f,m)$ -- is a single-valued-map. Hence, if we assume that $shifted_seq(f,m) notin Fin_seqs(s)$, -- the reason can either be that $shifted_seq(f,m)$ is not included in $Za ¥PROD s$ or that -- its domain is not an insigned integer. -- (f,s)-->T336 ==> (#f in Za) & (domain(f)=#f) (f,s)-->T335 ==> Stat1: Svm(f) & (range(f) ¥incin s) Use_def(Svm) ==> Is_map(f) T206 ==> Ord(Za) (Za,domain(f))-->T12 ==> Ord(domain(f)) (Za,domain(f))-->T13 ==> (domain(f) ¥incin Za) & (m in Za) (domain(f),m)-->T13 ==> domain(f) incs m (m,f)-->T344 ==> Stat2: shifted_seq(f,m) = {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m} (f,s,m)-->T346 ==> Stat3: shifted_seq(f,m) in Fin_seqs(s) ELEM ==> Stat4: f /= concat((f ¥ON m), shifted_seq(f,m)) -- -- Now assume that the two sides of the inequality -- $f /= concat((f ¥ON m), shifted_seq(f,m))$ -- just obtained have different domains. We reach a contradiction -- arguing as follows. -- (f,s,m)-->T346 ==> Stat5: ((f ¥ON m) in Fin_seqs(s)) & (shifted_seq(f,m) in Fin_seqs(s)) & (domain(shifted_seq(f,m)) = (#f ¥MINUS m)) (f,m)-->T94 ==> Stat6: domain(f ¥ON m) = m Suppose ==> domain(f) /= domain(concat((f ¥ON m), shifted_seq(f,m))) (f ¥ON m,s,shifted_seq(f,m))-->T347 ==> domain(f) /= (domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m))) (m,#f)-->T272 ==> ((#f ¥MINUS m) ¥PLUS m) = #f (#f ¥MINUS m,m)-->T252 ==> ((#f ¥MINUS m) ¥PLUS m) = (m ¥PLUS (#f ¥MINUS m)) EQUAL ==> false; Discharge ==> Stat7: domain(f) = domain(concat((f ¥ON m), shifted_seq(f,m))) -- -- Since $f$ and $concat((f ¥ON m), shifted_seq(f,m))$ are single-valued -- maps and, as just observed, they have the same domain, they can only differ if -- they send some element $n0$ of their common domain to different images. -- Suppose ==> Stat8: (FORALL n0 in domain(f) | (f~[n0]) = (concat((f ¥ON m), shifted_seq(f,m))~[n0])) (f ¥ON m,s,shifted_seq(f,m))-->T347(Stat5,Stat5*) ==> Stat9: concat((f ¥ON m), shifted_seq(f,m)) in Fin_seqs(s) (concat((f ¥ON m), shifted_seq(f,m)))-->T335(Stat9*) ==> Stat10: Svm(concat((f ¥ON m), shifted_seq(f,m))) (f,concat((f ¥ON m),shifted_seq(f,m)),domain(f))-->T337(Stat7,Stat1,Stat10,Stat4,Stat8*) ==> false; Discharge ==> Stat11: not(FORALL n0 in domain(f) | (f~[n0]) = (concat((f ¥ON m), shifted_seq(f,m))~[n0])) n0-->Stat11(Stat11*) ==> Stat12: (n0 in domain(f)) & ((f~[n0]) /= (concat((f ¥ON m), shifted_seq(f,m))~[n0])) Use_def(concat)(Stat11*) ==> concat((f ¥ON m), shifted_seq(f,m)) = {[n,if n in domain(f ¥ON m) then (f ¥ON m)~[n] else (shifted_seq(f,m)~[n ¥MINUS domain(f ¥ON m)]) end if]: n in domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m))} APPLY() Must_be_svm(b(n)->if n in domain(f ¥ON m) then (f ¥ON m)~[n] else (shifted_seq(f,m)~[n ¥MINUS domain(f ¥ON m)]) end if,s->(domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m))),u->n0) ==> (domain({[n,if n in domain(f ¥ON m) then (f ¥ON m)~[n] else (shifted_seq(f,m)~[n ¥MINUS domain(f ¥ON m)]) end if]: n in (domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m)))}) = (domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m)))) & (n0 in (domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m)))) ¥imp (({[n,if n in domain(f ¥ON m) then (f ¥ON m)~[n] else (shifted_seq(f,m)~[n ¥MINUS domain(f ¥ON m)]) end if]: n in (domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m)))}~[n0]) = if n0 in domain(f ¥ON m) then (f ¥ON m)~[n0] else (shifted_seq(f,m)~[n0 ¥MINUS domain(f ¥ON m)]) end if) EQUAL(Stat11) ==> ((concat((f ¥ON m), shifted_seq(f,m))~[n0]) = (({[n,if n in domain(f ¥ON m) then (f ¥ON m)~[n] else (shifted_seq(f,m)~[n ¥MINUS domain(f ¥ON m)]) end if]: n in domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m))})~[n0])) & (domain(concat((f ¥ON m), shifted_seq(f,m))) = (domain(f ¥ON m) ¥PLUS domain(shifted_seq(f,m)))) (Stat7*)ELEM ==> Stat13: (f~[n0]) /= if n0 in domain(f ¥ON m) then (f ¥ON m)~[n0] else (shifted_seq(f,m)~[n0 ¥MINUS domain(f ¥ON m)]) end if EQUAL(Stat6,Stat13) ==> Stat14: (f~[n0]) /= if n0 in m then (f ¥ON m)~[n0] else (shifted_seq(f,m)~[n0 ¥MINUS m]) end if -- -- Suppose first that $n0 in m$. Then, since $n0 in domain(f)$, we get -- $(f~[n0]) = ((f ¥ON m)~[n0])$, which leads to a contradiction. -- Therefore, $n0 notin m$ and $(f~[n0]) /= (shifted_seq(f,m)~[n0 ¥MINUS m])$. -- Suppose ==> Stat15: n0 in m (f,m)-->T94(Stat12,Stat15*) ==> n0 in domain(f ¥ON m) (f,m,n0)-->T125(Stat14*) ==> false; Discharge ==> Stat16: n0 notin m (Stat14*)ELEM ==> Stat17: (f~[n0]) /= (shifted_seq(f,m)~[n0 ¥MINUS m]) -- -- However, since $f$ and $shifted_seq(f,m)$ are single-valued maps, and plainly -- $[n0,(f~[n0])] in f$ and $[n0 ¥MINUS m,(f~[n0])] in shifted_seq(f,m)$ -- both hold (to see this more easily, we will designate $[n0,(f~[n0])]$ as $p$), -- we reach the sought contradiction. -- Use_def(domain)(Stat12*) ==> Stat18: n0 in {car(p): p in f} p-->Stat18(Stat18*) ==> Stat19: (n0 = car(p)) & (p in f) (f,p)-->T74(Stat1,Stat19*) ==> Stat20: (f~[car(p)]) = cdr(p) (Za,m)-->T12(Stat1*) ==> Ord(m) (domain(f),car(p))-->T12(Stat1*) ==> Ord(car(p)) (m,car(p))-->T35(Stat16*) ==> Stat21: car(p) incs m Suppose ==> Stat22: [car(p) ¥MINUS m, cdr(p)] notin {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m} p-->Stat22(Stat19,Stat21*) ==> false; Discharge ==> Stat23: [car(p) ¥MINUS m, cdr(p)] in {[car(x) ¥MINUS m,cdr(x)]: x in f | car(x) incs m} (shifted_seq(f,m),s)-->T335(Stat3,Stat23,Stat2*) ==> Stat24: Svm(shifted_seq(f,m)) & ([car(p) ¥MINUS m, cdr(p)] in shifted_seq(f,m)) (shifted_seq(f,m),[car(p) ¥MINUS m, cdr(p)])-->T74(Stat24*) ==> (shifted_seq(f,m)~[car(p) ¥MINUS m]) = cdr(p) EQUAL(Stat17) ==> false; Discharge ==> QED -- -- THEORY subseq(g,f) [Subsequence of a finite or denumerable sequence] Svm(f) & (domain(f) in next(Za)) g in Subseqs(f) END subseq; -- ENTER_THEORY subseq -- Def subseq.0: [Subsequence generator] h_thryvar := {p in arb({ h ¥incin (Za ¥PROD Za) | (g = (f @ h)) & Svm(h) & (FORALL i | (next(i) in domain(h)) ¥imp ((i in domain(h)) & ((h~[i]) in (h~[next(i)])))) }) | cdr(p) in domain(f)} -- Theorem subseq.1: (g = (f @ h_thryvar)) & one_1_map(h_thryvar) & (domain(h_thryvar) in next(Za)) & (range(h_thryvar) ¥incin domain(f)) & (FORALL i in domain(h_thryvar), j in domain(h_thryvar) | (i in j) ¥imp ((h_thryvar~[i]) in (h_thryvar~[j]))). Proof: Suppose_not ==> Stat1: (g /= (f @ h_thryvar)) or (not one_1_map(h_thryvar)) or (domain(h_thryvar) notin next(Za)) or (not(range(h_thryvar) ¥incin domain(f))) or (not(FORALL i in domain(h_thryvar), j in domain(h_thryvar) | (i in j) ¥imp ((h_thryvar~[i]) in (h_thryvar~[j])))) -- -- We start with expanding the definition of 'Subseqs', which requires $g$ to be of the form $f @ h$, -- with $h$ meeting various conditions which, however, do not include the condition that the components -- of $h$ belong to $domain(f)$. Starting with the specific $h$ from which $h_thryvar$ has been obtained -- by simply putting $h_thryvar = {p in h | cdr(p) in domain(f)}$, we must check that $h_thryvar$ is a -- (finite or infinite) sequence enjoying the same properties as $h$, plus the additional one that its -- components belong to the domain of $f$. -- Assump ==> Svm(f) & (domain(f) in next(Za)) & (g in Subseqs(f)) (domain(f))-->T330 ==> domain(f) ¥incin Za Use_def(Subseqs) ==> Stat2: (g in { f @ h: h ¥incin (Za ¥PROD Za) | Svm(h) & (FORALL i | (next(i) in domain(h)) ¥imp ((i in domain(h)) & ((h~[i]) in (h~[next(i)])))) }) Loc_def ==> h0 = arb({ h ¥incin (Za ¥PROD Za) | (g = (f @ h)) & Svm(h) & (FORALL i | (next(i) in domain(h)) ¥imp ((i in domain(h)) & ((h~[i]) in (h~[next(i)])))) }) Suppose ==> Stat3: 0 = { h ¥incin (Za ¥PROD Za) | (g = (f @ h)) & Svm(h) & (FORALL i | (next(i) in domain(h)) ¥imp ((i in domain(h)) & ((h~[i]) in (h~[next(i)])))) } h1-->Stat2 ==> (h1 ¥incin (Za ¥PROD Za)) & (g = (f @ h1)) & Svm(h1) & (FORALL i | (next(i) in domain(h1)) ¥imp ((i in domain(h1)) & ((h1~[i]) in (h1~[next(i)])))) h1-->Stat3 ==> false; Discharge ==> Stat4: h0 in { h ¥incin (Za ¥PROD Za) | (g = (f @ h)) & Svm(h) & (FORALL i | (next(i) in domain(h)) ¥imp ((i in domain(h)) & ((h~[i]) in (h~[next(i)])))) } ()-->Stat4 ==> (g = (f @ h0)) & (h0 ¥incin (Za ¥PROD Za)) & Svm(h0) & Stat5: (FORALL i | (next(i) in domain(h0)) ¥imp ((i in domain(h0)) & ((h0~[i]) in (h0~[next(i)])))) (h0, Za, Za)-->T141 ==> domain(h0) ¥incin Za Use_def(h_thryvar) ==> h_thryvar = {p in arb({ h ¥incin (Za ¥PROD Za) | (g = (f @ h)) & Svm(h) & (FORALL i | (next(i) in domain(h)) ¥imp ((i in domain(h)) & ((h~[i]) in (h~[next(i)])))) }) | cdr(p) in domain(f)} EQUAL ==> h_thryvar = {p in h0 | cdr(p) in domain(f)} Suppose ==> Stat6: not(h_thryvar ¥incin h0) c-->Stat6 ==> (c notin h0) & Stat7: (c in {p in h0 | cdr(p) in domain(f)}) ()-->Stat7(Stat6) ==> false; Discharge ==> h_thryvar ¥incin h0 (h_thryvar,h0)-->T65 ==> (domain(h_thryvar) ¥incin domain(h0)) & (domain(h_thryvar) ¥incin Za) (h_thryvar,h0)-->T53 ==> Stat8: Svm(h_thryvar) Use_def(Svm) ==> Is_map(h_thryvar) Suppose ==> Stat9: not(range(h_thryvar) ¥incin domain(f)) d-->Stat9 ==> (d notin domain(f)) & (d in range(h_thryvar)) EQUAL ==> d in range({p in h0 | cdr(p) in domain(f)}) Use_def(range) ==> d in {cdr(p): p in {p in h0 | cdr(p) in domain(f)}} SIMPLF ==> Stat10: d in {cdr(p): p in h0 | cdr(p) in domain(f)} q1-->Stat10(Stat9) ==> false; Discharge ==> range(h_thryvar) ¥incin domain(f) Suppose ==> (f @ h0) /= (f @ h_thryvar) Use_def(@) ==> {[car(x),cdr(y)]: x in h0, y in f | cdr(x) = car(y)} /= {[car(x),cdr(y)]: x in h_thryvar, y in f | cdr(x) = car(y)} Set_monot ==> {[car(x),cdr(y)]: x in h_thryvar, y in f | cdr(x) = car(y)} ¥incin {[car(x),cdr(y)]: x in h0, y in f | cdr(x) = car(y)} ELEM ==> Stat11: not({[car(x),cdr(y)]: x in h0, y in f | cdr(x) = car(y)} ¥incin {[car(x),cdr(y)]: x in h_thryvar, y in f | cdr(x) = car(y)}) e-->Stat11 ==> Stat12: (e in {[car(x),cdr(y)]: x in h0, y in f | cdr(x) = car(y)}) & (e notin {[car(x),cdr(y)]: x in h_thryvar, y in f | cdr(x) = car(y)}) (x0,y0,x0,y0)-->Stat12 ==> (e = [car(x0),cdr(y0)]) & (x0 in h0) & (y0 in f) & (cdr(x0) = car(y0)) & Stat13: (x0 notin {p in h0 | cdr(p) in domain(f)}) ()-->Stat13(Stat12*) ==> cdr(x0) notin domain(f) Use_def(domain) ==> Stat14: cdr(x0) notin {car(y): y in f} y0-->Stat14(Stat12*) ==> false; Discharge ==> ((f @ h_thryvar) = (f @ h0)) & (g = (f @ h_thryvar)) T206 ==> Ord(Za) Za-->T32 ==> Ord(next(Za)) (next(Za), domain(f))-->T12 ==> Ord(domain(f)) Suppose ==> Stat15: not(FORALL i | (next(i) in domain(h_thryvar)) ¥imp ((i in domain(h_thryvar)) & ((h_thryvar~[i]) in (h_thryvar~[next(i)])))) iq-->Stat15(Stat15) ==> (next(iq) in domain(h_thryvar)) & ((iq notin domain(h_thryvar)) or ((h_thryvar~[iq]) notin (h_thryvar~[next(iq)]))) iq-->Stat5(Stat2) ==> (next(iq) in domain(h0)) & (iq in domain(h0)) & ((h0~[iq]) in (h0~[next(iq)])) (h_thryvar,next(iq))-->T77(Stat2*) ==> [next(iq),h_thryvar~[next(iq)]] in h0 (h0,[next(iq),h_thryvar~[next(iq)]])-->T74(Stat2) ==> (h0~[car([next(iq),h_thryvar~[next(iq)]])]) = cdr([next(iq),h_thryvar~[next(iq)]]) TELEM ==> (car([next(iq),h_thryvar~[next(iq)]]) = next(iq)) & (cdr([next(iq),h_thryvar~[next(iq)]]) = (h_thryvar~[next(iq)])) EQUAL(Stat15) ==> (h0~[next(iq)]) = (h_thryvar~[next(iq)]) (h_thryvar,next(iq))-->T77(Stat8) ==> [next(iq),h_thryvar~[next(iq)]] in h_thryvar ([next(iq),h_thryvar~[next(iq)]], h_thryvar)-->T61(Stat8) ==> (h_thryvar~[next(iq)]) in domain(f) (domain(f), h_thryvar~[next(iq)])-->T13(Stat8*) ==> (h0~[iq]) in domain(f) Use_def(Svm) ==> Is_map(h0) (h0,iq)-->T77(Stat2*) ==> [iq,h0~[iq]] in h0 Suppose ==> [iq,h0~[iq]] notin h_thryvar EQUAL ==> Stat16: [iq,h0~[iq]] notin {p in h0 | cdr(p) in domain(f)} ()-->Stat16(Stat15*) ==> false; Discharge ==> [iq,h0~[iq]] in h_thryvar (h_thryvar, [iq,h0~[iq]])-->T74(Stat2*) ==> (h_thryvar~[car([iq,h0~[iq]])]) = cdr([iq,h0~[iq]]) TELEM ==> (car([iq,h0~[iq]]) = iq) & (cdr([iq,h0~[iq]]) = (h0~[iq])) EQUAL(Stat15*) ==> (h_thryvar~[iq]) = (h0~[iq]) (Stat15*)ELEM ==> iq notin domain(h_thryvar) ([iq,h0~[iq]],h_thryvar)-->T60(Stat15*) ==> false; Discharge ==> Stat17: (FORALL i | (next(i) in domain(h_thryvar)) ¥imp ((i in domain(h_thryvar)) & ((h_thryvar~[i]) in (h_thryvar~[next(i)])))) -- (h_thryvar, Za, domain(f))-->T141 ==> (range(h_thryvar) ¥incin domain(f)) (f,h_thryvar)-->T95 ==> (domain(f @ h_thryvar) = domain(h_thryvar)) & (range(f @ h_thryvar) = range(f ¥ON range(h_thryvar))) (f, h_thryvar)-->T128 ==> Svm(f @ h_thryvar) -- -- Observe that $f$ and $h_thryvar$ have ordinal numbers not exceeding $Za$ as their domains. -- This is obvious (as has been proved above, en passant) for $f$, which either equals $Za$ or belongs to it. -- Concerning $h_thryvar$ (and hence $g$, which has the same domain as $h_thryvar$), -- what claimed follows from the earlier Theorem 330, because its domain is closed relative -- to predecessor formation. -- Suppose ==> not(Ord(domain(h_thryvar)) & (domain(h_thryvar) in next(Za))) Suppose ==> Stat18: not(FORALL i | (next(i) in domain(h_thryvar)) ¥imp (i in domain(h_thryvar))) ip-->Stat18 ==> (next(ip) in domain(h_thryvar)) & (ip notin domain(h_thryvar)) ip-->Stat17 ==> false; Discharge ==> (FORALL i | (next(i) in domain(h_thryvar)) ¥imp (i in domain(h_thryvar))) (domain(h_thryvar))-->T330 ==> domain(h_thryvar) in next(Za) (next(Za), domain(h_thryvar))-->T12 ==> false; Discharge ==> Ord(domain(h_thryvar)) & (domain(h_thryvar) in next(Za)) -- -- We will now see that $h_thryvar$ is a strictly increasing function, from which -- its one-one-ness will follow. -- Suppose ==> Stat19: not(FORALL i in domain(h_thryvar), j in domain(h_thryvar) | (i in j) ¥imp ((h_thryvar~[i]) in (h_thryvar~[j]))) -- -- Indeed, assuming the contrary, we could choose unsigned integers $i1,j2$ such that $i1$ precedes $j2$ -- and $(h_thryvar~[i1]) notin (h_thryvar~[j2])$. Moreover, we can find the smallest $j1$ such that $i1$ -- precedes $j1$ and $(h_thryvar~[i1]) notin (h_thryvar~[j1])$. Notice that $j1$ cannot be the immediate -- successor of $i1$. -- (i1,j2)-->Stat19 ==> (i1 in domain(h_thryvar)) & (j2 in domain(h_thryvar)) & (i1 in j2) & ((h_thryvar~[i1]) notin (h_thryvar~[j2])) Loc_def ==> j1 = arb({j in domain(h_thryvar) | (i1 in j) & ((h_thryvar~[i1]) notin (h_thryvar~[j]))}) Suppose ==> Stat20: {j in domain(h_thryvar) | (i1 in j) & ((h_thryvar~[i1]) notin (h_thryvar~[j]))} = 0 j2-->Stat20 ==> false; Discharge ==> Stat21: (j1 in {j in domain(h_thryvar) | (i1 in j) & ((h_thryvar~[i1]) notin (h_thryvar~[j]))}) & ((j1 * {j in domain(h_thryvar) | (i1 in j) & ((h_thryvar~[i1]) notin (h_thryvar~[j]))}) = 0) ()-->Stat21 ==> (j1 in domain(h_thryvar)) & (i1 in j1) & ((h_thryvar~[i1]) notin (h_thryvar~[j1])) Suppose ==> j1 = next(i1) EQUAL(Stat19) ==> ((h_thryvar~[i1]) notin (h_thryvar~[next(i1)])) & (next(i1) in domain(h_thryvar)) i1-->Stat17(Stat19*) ==> false; Discharge ==> j1 /= next(i1) -- -- From the fact $h_thryvar~[i1] in h_thryvar~[j1 ¥MINUS 1]$ (due to the minimality -- in the choice of $j1$) and the fact $h_thryvar~[j1 ¥MINUS 1] in h_thryvar~[j1]$ -- (due to an assumed property of $h_thryvar$, whose domain is closed relative to -- predecessor extraction), it follows that $(h_thryvar~[i1]) in (h_thryvar~[j1])$, contrary -- to a fact just established. Thanks to this contradiction, we can discharge -- our temporary assumption concluding that $h_thryvar$ fails to be one-one. -- T211(Stat19*) ==> (1 in Za) & Ord(0) (j1,1)-->T283(Stat2*) ==> (j1 ¥MINUS 1) in Za (Za, j1)-->T12(Stat2*) ==> Ord(j1) Suppose ==> j1 /= next(j1 ¥MINUS 1) (j1,0)-->T31(Stat21*) ==> 0 in j1 Use_def(1) ==> 1 = next(0) Use_def(next) ==> 1 ¥incin j1 (1,j1)-->T272(Stat21*) ==> #j1 = ((j1 ¥MINUS 1) ¥PLUS 1) j1-->T207(Stat2*) ==> j1 = ((j1 ¥MINUS 1) ¥PLUS 1) (j1 ¥MINUS 1)-->T317(Stat21*) ==> false; Discharge ==> j1 = next(j1 ¥MINUS 1) Use_def(next) ==> (j1 ¥MINUS 1) in j1 EQUAL(Stat21*) ==> next(j1 ¥MINUS 1) in domain(h_thryvar) (j1 ¥MINUS 1)-->Stat17(Stat21*) ==> ((j1 ¥MINUS 1) in domain(h_thryvar)) & ((h_thryvar~[j1 ¥MINUS 1]) in (h_thryvar~[next(j1 ¥MINUS 1)])) EQUAL(Stat21) ==> (h_thryvar~[j1 ¥MINUS 1]) in (h_thryvar~[j1]) Suppose ==> Stat22: (h_thryvar~[i1]) notin (h_thryvar~[j1 ¥MINUS 1]) EQUAL(Stat21*) ==> i1 in next(j1 ¥MINUS 1) Use_def(next) ==> i1 in ((j1 ¥MINUS 1) + {j1 ¥MINUS 1}) Suppose ==> i1 = (j1 ¥MINUS 1) EQUAL(Stat21) ==> false; Discharge ==> i1 in (j1 ¥MINUS 1) Suppose ==> Stat23: (j1 ¥MINUS 1) notin {j in domain(h_thryvar) | (i1 in j) & ((h_thryvar~[i1]) notin (h_thryvar~[j]))} ()-->Stat23(Stat21*) ==> false; Discharge ==> (j1 ¥MINUS 1) in {j in domain(h_thryvar) | (i1 in j) & ((h_thryvar~[i1]) notin (h_thryvar~[j]))} (Stat21*)Discharge ==> (h_thryvar~[i1]) in (h_thryvar~[j1 ¥MINUS 1]) (j1,h_thryvar)-->T71(Stat1*) ==> (h_thryvar~[j1]) in Za (Za, h_thryvar~[j1])-->T12(Stat8*) ==> Ord(h_thryvar~[j1]) (h_thryvar~[j1], h_thryvar~[j1 ¥MINUS 1])-->T13(Stat21*) ==> false; Discharge ==> (not one_1_map(h_thryvar)) & Stat24: (FORALL i in domain(h_thryvar), j in domain(h_thryvar) | (i in j) ¥imp ((h_thryvar~[i]) in (h_thryvar~[j]))) -- -- To now see that $h_thryvar$ is a one-one function, contradicting the conclusion just reached and thus -- leading to the desired overall conclusion, we can exploit the strict monotonicity of $h_thryvar$. -- -- -- In the first place, if we assume that $h_thryvar$ is not one-one, then we must admit the -- existence of distinct pairs $p,q$ in $h_thryvar$ sharing the same second component. -- Use_def(one_1_map) ==> Stat25: not(FORALL x in h_thryvar, y in h_thryvar | (cdr(x) = cdr(y)) ¥imp (x = y)) (p,q)-->Stat25 ==> (p in h_thryvar) & (q in h_thryvar) & (cdr(p) = cdr(q)) & (p /= q) (h_thryvar,p)-->T51 ==> p = [car(p),cdr(p)] (h_thryvar,q)-->T51 ==> q = [car(q),cdr(q)] (p,h_thryvar)-->T60 ==> car(p) in Za (q,h_thryvar)-->T60 ==> car(q) in Za (Za,car(p))-->T12 ==> Ord(car(p)) (Za,car(q))-->T12 ==> Ord(car(q)) (car(p),car(q))-->T31(Stat25) ==> Stat26: (car(p) in car(q)) or (car(q) in car(p)) (Stat25*)ELEM ==> (p in h_thryvar) & (q in h_thryvar) & (cdr(p) = cdr(q)) -- -- Let $p0,p1$ be such pairs $p,q$ ordered so that -- the first component of $p0$ precedes the first component of $p1$. -- Then $cdr(p0)$ must precede $cdr(p1)$, which leads to a contradiction. -- Loc_def ==> p0 = if (car(p) in car(q)) then p else q end if Loc_def ==> p1 = if (car(p) in car(q)) then q else p end if (p0, h_thryvar)-->T60(Stat26*) ==> car(p0) in domain(h_thryvar) (p1, h_thryvar)-->T60(Stat26*) ==> car(p1) in domain(h_thryvar) Suppose ==> not((car(p0) in car(p1)) & (cdr(p0) notin cdr(p1))) Suppose ==> car(p) in car(q) (Stat26*)ELEM ==> (p0 = p) & (p1 = q) & (cdr(p) notin cdr(q)) EQUAL(Stat26*) ==> false; Discharge ==> car(q) in car(p) (Stat26*)ELEM ==> (p0 = q) & (p1 = p) & (cdr(q) notin cdr(p)) EQUAL(Stat26*) ==> false; Discharge ==> Stat27: (car(p0) in car(p1)) & (cdr(p0) notin cdr(p1)) (h_thryvar, p0)-->T74(Stat8*) ==> (h_thryvar~[car(p0)]) = cdr(p0) (h_thryvar, p1)-->T74(Stat8*) ==> (h_thryvar~[car(p1)]) = cdr(p1) EQUAL(Stat27) ==> (h_thryvar~[car(p0)]) notin (h_thryvar~[car(p1)]) (car(p0),car(p1))-->Stat24 ==> false; Discharge ==> QED -- Theorem subseq.2: {i in domain(h_thryvar) | i ¥nincin (h_thryvar~[i])} = 0. Proof: Suppose_not ==> Stat1: {i in domain(h_thryvar) | (i ¥nincin (h_thryvar~[i]))} /= 0 Loc_def ==> i0 = arb({i in domain(h_thryvar) | (i ¥nincin (h_thryvar~[i]))}) ELEM ==> Stat2: ((i0 * {i in domain(h_thryvar) | (i ¥nincin (h_thryvar~[i]))}) = 0) & Stat3: (i0 in {i in domain(h_thryvar) | (i ¥nincin (h_thryvar~[i]))}) ()-->Stat3 ==> (i0 in domain(h_thryvar)) & (i0 ¥nincin (h_thryvar~[i0])) Assump ==> domain(f) in next(Za) (domain(f))-->T330 ==> domain(f) ¥incin Za Tsubseq.1 ==> (domain(h_thryvar) in next(Za)) & (range(h_thryvar) ¥incin Za) & Stat4: (FORALL i in domain(h_thryvar), j in domain(h_thryvar) | (i in j) ¥imp ((h_thryvar~[i]) in (h_thryvar~[j]))) (domain(h_thryvar))-->T330 ==> domain(h_thryvar) ¥incin Za T206 ==> Ord(Za) ELEM ==> (i0 in Za) & (i0 /= 0) T211(Stat2*) ==> (1 in Za) & Ord(0) (i0, 1)-->T283(Stat2*) ==> (i0 ¥MINUS 1) in Za (Za, i0)-->T12(Stat2*) ==> Ord(i0) Suppose ==> i0 /= next(i0 ¥MINUS 1) (i0,0)-->T31(Stat2*) ==> 0 in i0 Use_def(1) ==> 1 = next(0) Use_def(next) ==> 1 ¥incin i0 (1,i0)-->T272(Stat2*) ==> #i0 = ((i0 ¥MINUS 1) ¥PLUS 1) i0-->T207(Stat2*) ==> i0 = ((i0 ¥MINUS 1) ¥PLUS 1) (i0 ¥MINUS 1)-->T317(Stat2*) ==> false; Discharge ==> i0 = next(i0 ¥MINUS 1) Use_def(next) ==> i0 = ((i0 ¥MINUS 1) + {i0 ¥MINUS 1}) Za-->T32 ==> Ord(next(Za)) (next(Za), domain(h_thryvar))-->T12 ==> Ord(domain(h_thryvar)) (domain(h_thryvar), i0)-->T13 ==> (i0 ¥MINUS 1) in domain(h_thryvar) (i0 ¥MINUS 1, i0)-->Stat4 ==> (h_thryvar~[i0 ¥MINUS 1]) in (h_thryvar~[i0]) Suppose ==> ((i0 ¥MINUS 1) ¥nincin (h_thryvar~[i0 ¥MINUS 1])) Suppose ==> Stat5: not((i0 ¥MINUS 1) in {i in domain(h_thryvar) | (i ¥nincin (h_thryvar~[i]))}) ()-->Stat5 ==> false; Discharge ==> (i0 ¥MINUS 1) in {i in domain(h_thryvar) | (i ¥nincin (h_thryvar~[i]))} Discharge ==> (i0 ¥MINUS 1) ¥incin (h_thryvar~[i0 ¥MINUS 1]) (i0, h_thryvar)-->T71 ==> (h_thryvar~[i0]) in Za (Za, h_thryvar~[i0])-->T12 ==> Ord(h_thryvar~[i0]) (h_thryvar~[i0], h_thryvar~[i0 ¥MINUS 1])-->T13 ==> ((i0 ¥MINUS 1) ¥incin (h_thryvar~[i0])) & ((i0 ¥MINUS 1) /= (h_thryvar~[i0])) (h_thryvar~[i0], i0 ¥MINUS 1)-->T13 ==> (i0 ¥MINUS 1) ¥incin (h_thryvar~[i0]) (i0, i0 ¥MINUS 1)-->T12 ==> Ord(i0 ¥MINUS 1) (h_thryvar~[i0], i0 ¥MINUS 1)-->T34 ==> (i0 ¥MINUS 1) in (h_thryvar~[i0]) Use_def(next) ==> false; Discharge ==> QED -- -- Our next theorem states that any subsequence $g$ of a (finite or infinite) sequence $f$ -- of elements of a set $s$ is also a sequence of elements of $s$, having a -- (finite or infinite) length not exceeding the length of $f$. -- Theorem subseq.3: Svm(g) & (g ¥incin (domain(f) ¥PROD range(f))) & (domain(g) in (next(Za) * next(domain(f)))). Proof: Suppose_not ==> (not Svm(g)) or (not(g ¥incin (domain(f) ¥PROD range(f)))) or (domain(g) notin (next(Za) * next(domain(f)))) Assump ==> Svm(f) & (domain(f) in next(Za)) Tsubseq.1 ==> (g = (f @ h_thryvar)) & one_1_map(h_thryvar) & (domain(h_thryvar) in next(Za)) & (range(h_thryvar) ¥incin domain(f)) T206 ==> Ord(Za) Za-->T32 ==> Ord(next(Za)) (next(Za), domain(f))-->T12 ==> Ord(domain(f)) Use_def(one_1_map) ==> Stat1: Svm(h_thryvar) (f,h_thryvar)-->T95 ==> (domain(f @ h_thryvar) = domain(h_thryvar)) & (range(f @ h_thryvar) = range(f ¥ON range(h_thryvar))) (f, h_thryvar)-->T128 ==> Svm(f @ h_thryvar) (f, range(h_thryvar))-->T80 ==> range(f @ h_thryvar) ¥incin range(f) EQUAL ==> Svm(g) & (domain(g) = domain(h_thryvar)) & (range(g) ¥incin range(f)) -- -- This is, in detail, how we derive from the one-oneness of $h_thryvar$ the fact that -- $domain(g)$ cannot be a larger ordinal than $domain(f)$. Then only the second alternative -- of the or-statement in the Suppose_not statement, -- namely $not(g ¥incin (domain(f) ¥PROD range(f)))$, survives. -- h_thryvar-->T157 ==> #range(h_thryvar) = #domain(h_thryvar) (domain(f), range(h_thryvar))-->T169 ==> #domain(h_thryvar) ¥incin domain(f) (domain(h_thryvar))-->T147 ==> Ord(#domain(h_thryvar)) (domain(f), #domain(h_thryvar))-->T34 ==> (#domain(h_thryvar) in domain(f)) or (#domain(h_thryvar) = domain(f)) Use_def(next) ==> #domain(h_thryvar) in next(domain(f)) (domain(h_thryvar), domain(f))-->T331 ==> ((domain(h_thryvar) = domain(f)) & (domain(f) = Za)) or (domain(h_thryvar) in (next(domain(f)) * Za)) -- Suppose ==> domain(g) notin next(domain(f)) (Stat1)ELEM ==> domain(h_thryvar) = domain(f) Use_def(next) ==> domain(f) in next(domain(f)) (Stat1)Discharge ==> (not(g ¥incin (domain(f) ¥PROD range(f)))) -- -- However, $not(g ¥incin (domain(f) ¥PROD range(f)))$ amounts to one of the three possibilities -- $not(Is_map(g))$, $not(domain(g) ¥incin domain(f))$, or $not(range(g) ¥incin range(f))$, the third -- of which has already been eliminated. The first possibility must be discarded too, because -- $g$ is known to be a single-valued map. -- -- The possibility $not(domain(g) ¥incin domain(f))$ would yield that -- $domain(f)$ precedes $domain(g)$ in the standard order of ordinals, but -- this conflicts with the fact, just derived above, that $domain(g) in next(domain(f))$. -- Use_def(Svm) ==> Is_map(g) (g, domain(f), range(f))-->T141 ==> not(domain(g) ¥incin domain(f)) (domain(f))-->T32 ==> Ord(next(domain(f))) (next(domain(f)), domain(g))-->T13 ==> domain(g) ¥incin next(domain(f)) Use_def(next) ==> domain(f) in domain(g) Use_def(next) ==> false; Discharge ==> QED -- Theorem subseq.4: (domain(h_thryvar) /= Za) ¥imp Finite(g). Proof: Suppose_not ==> (domain(h_thryvar) /= Za) & (not Finite(g)) Tsubseq.1 ==> (g = (f @ h_thryvar)) & one_1_map(h_thryvar) & (domain(h_thryvar) in next(Za)) & (range(h_thryvar) ¥incin domain(f)) (domain(g))-->T206 ==> Ord(Za) & (not Finite(Za)) & ((domain(g) in Za) ¥imp Finite(domain(g))) Assump ==> Svm(f) & (domain(f) in next(Za)) (domain(f))-->T330 ==> domain(f) ¥incin Za Use_def(next) ==> domain(h_thryvar) in Za (Za,domain(h_thryvar))-->T13 ==> (domain(h_thryvar) ¥incin Za) & (range(h_thryvar) ¥incin Za) (f,h_thryvar)-->T95 ==> domain(f @ h_thryvar) = domain(h_thryvar) Use_def(next) ==> Stat1: domain(h_thryvar) in Za (f,h_thryvar)-->T55 ==> Is_map(f @ h_thryvar) Use_def(one_1_map) ==> Svm(h_thryvar) (f, h_thryvar)-->T128 ==> Svm(f @ h_thryvar) EQUAL ==> (domain(g) in Za) & (Is_map(g)) & Svm(g) g-->T192 ==> Finite(range(g)) (domain(g),range(g))-->T262 ==> Finite(domain(g) ¥PROD range(g)) (g,domain(g),range(g))-->T141(Stat1) ==> g ¥incin (domain(g) ¥PROD range(g)) (domain(g) ¥PROD range(g), g)-->T189 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY subseq -- --THEORY subseq(g,f) [Subsequence of a finite or denumerable sequence] -- Svm(f) & (domain(f) in next(Za)) -- g in Subseqs(f) --==>(h_thryvar) -- (g = (f @ h_thryvar)) & one_1_map(h_thryvar) & (domain(h_thryvar) in next(Za)) & (range(h_thryvar) ¥incin domain(f)) -- (FORALL i in domain(h_thryvar), j in domain(h_thryvar) | (i in j) ¥imp ((h_thryvar~[i]) in (h_thryvar~[j]))) -- ({i in domain(h_thryvar) | (i ¥nincin (h_thryvar~[i]))} = 0) -- Svm(g) & (g ¥incin (domain(f) ¥PROD range(f))) & (domain(g) in (next(Za) * next(domain(f)))) -- ((domain(h_thryvar) /= Za) ¥imp Finite(g)) --END subseq; -- -- -- -- -- Our next theorem states that every subsequence of a finite sequence $f$ -- of elements of a set $s$ is an alike sequence, whose length does not exceed the length of $f$. -- Theorem 351: ((F in Fin_seqs(S)) & (G in Subseqs(F))) ¥imp ((G in Fin_seqs(S)) & (domain(G) in next(domain(F)))). Proof: Suppose_not(f,s,g) ==> (f in Fin_seqs(s)) & (g in Subseqs(f)) & ((g notin Fin_seqs(s)) or (domain(g) notin next(domain(f)))) -- -- For, assuming by contradiction that $f,s,g$ are a counterexample, from the THEORY subseq -- we get that $g$ is a function included in $domain(f) ¥PROD s$, -- having as its domain an ordinal not exceeding either $Za$ or $domain(f)$. It turns out -- readily that $g$ is included in $Za ¥PROD s$; hence, in order that $g$ does not belong -- to $Fin_seqs(s)$, its domain must equal $Za$. -- Use_def(Fin_seqs) ==> Stat1: f in {f ¥incin (Za ¥PROD s) | Svm(f) & (domain(f) in Za)} ()-->Stat1 ==> (f ¥incin (Za ¥PROD s)) & Svm(f) & (domain(f) in Za) Use_def(next) ==> domain(f) in next(Za) APPLY(h_thryvar:h) subseq(g->g,f->f) ==> (g ¥incin (domain(f) ¥PROD range(f))) & Svm(g) & (domain(g) in (next(Za) * next(domain(f)))) (f,Za,s)-->T141 ==> (domain(f) ¥incin Za) & (range(f) ¥incin s) (domain(f), Za, range(f), s)-->T256 ==> g ¥incin (Za ¥PROD s) (domain(f))-->T206 ==> Ord(Za) & Card(domain(f)) & Finite(domain(f)) Za-->T32 ==> Ord(next(Za)) Suppose ==> Za = domain(g) -- -- However, if we assume that $domain(g) = Za$, then... -- Use_def(Card) ==> Ord(domain(f)) (domain(f))-->T32 ==> Ord(next(domain(f))) (domain(f))-->T200 ==> Finite(next(domain(f))) (next(domain(f)))-->T205 ==> Card(next(domain(f))) -- -- ...we get that $next(domain(f)) in domain(g)$, conflicting with $domain(g) in next(domain(f))$. -- (next(domain(f)))-->T206 ==> false; Discharge ==> Za /= domain(g) Use_def(next) ==> domain(g) in Za Use_def(Fin_seqs) ==> Stat2: g notin {f ¥incin (Za ¥PROD S) | Svm(f) & (domain(f) in Za)} -- -- We have reached a contradiction showing that the statement of this lemma is true. -- ()-->Stat2 ==> false; Discharge ==> QED -- -- -- Our next theorem states that every shifted sequence is a subsequence of the original sequence. -- Theorem 352: (M in Za) ¥imp (shifted_seq(F,M) in Subseqs(F)). Proof: Suppose_not(m,f) ==> Stat1: (m in Za) & (shifted_seq(f,m) notin Subseqs(f)) Use_def(shifted_seq) ==> (f @ Shift(m)) notin Subseqs(f) -- -- For, assuming that the contrary is true for $m,f$ and exploiting the definition of 'Subseqs', -- we get that $Shift(m)$ is not a function, or it is not includedin $(Za ¥PROD Za)$, or -- its domain is not closed relative to predecessor extraction, or it is not increasing. -- Use_def(Subseqs) ==> Stat2: (f @ Shift(m)) notin {f @ h: h ¥incin (Za ¥PROD Za) | Svm(h) & (FORALL i | (next(i) in domain(h)) ¥imp ((i in domain(h)) & ((h~[i]) in (h~[next(i)])))) } (Shift(m))-->Stat2 ==> (not(Shift(m) ¥incin (Za ¥PROD Za))) or (not Svm(Shift(m))) or (not (FORALL i | (next(i) in domain(Shift(m))) ¥imp ((i in domain(Shift(m))) & (((Shift(m))~[i]) in ((Shift(m))~[next(i)]))))) Use_def(Shift) ==> Shift(m) = {[i, m ¥PLUS i]: i in Za} -- -- The first two possibilities are discarded quite straightforwardly. -- Suppose ==> Stat3: not({[i, m ¥PLUS i]: i in Za} ¥incin (Za ¥PROD Za)) c-->Stat3 ==> Stat4: (c in {[i, m ¥PLUS i]: i in Za}) & (c notin (Za ¥PROD Za)) ir-->Stat4 ==> (ir in Za) & ([ir, m ¥PLUS ir] notin (Za ¥PROD Za)) ALGEBRA ==> (m ¥PLUS ir) in Za Use_def(¥PROD) ==> Stat5: [ir, m ¥PLUS ir] notin {[i,j]: i in Za, j in Za} (ir, m ¥PLUS ir)-->Stat5 ==> false; Discharge ==> Shift(m) ¥incin (Za ¥PROD Za) (m,m)-->T339 ==> Stat6: Svm(Shift(m)) & Stat7: (not (FORALL i | (next(i) in domain(Shift(m))) ¥imp ((i in domain(Shift(m))) & (((Shift(m))~[i]) in ((Shift(m))~[next(i)]))))) -- -- The third possibility is also discarded easily, so only the fourth one must be considered. -- i-->Stat7 ==> (next(i) in domain(Shift(m))) & ((i notin domain(Shift(m))) or (((Shift(m))~[i]) notin ((Shift(m))~[next(i)]))) ELEM ==> domain({[i, m ¥PLUS i]: i in Za}) = Za EQUAL ==> domain(Shift(m)) = domain({[i, m ¥PLUS i]: i in Za}) ELEM ==> next(i) in Za T206 ==> Ord(Za) (Za,next(i))-->T13 ==> next(i) ¥incin Za Use_def(next) ==> Stat8: (i in Za) & (((Shift(m))~[i]) notin ((Shift(m))~[next(i)])) -- -- By eliminating the fourth possibility, we get a contradiction proving the statement of the present theorem. -- Suppose ==> Stat9: [i, m ¥PLUS i] notin {[i, m ¥PLUS i]: i in Za} i-->Stat9 ==> false; Discharge ==> Stat10: [i, m ¥PLUS i] in Shift(m) (Shift(m), [i, m ¥PLUS i])-->T74(Stat6,Stat10*) ==> ((Shift(m))~[car([i, m ¥PLUS i])]) = cdr([i, m ¥PLUS i]) Suppose ==> Stat11: [next(i), m ¥PLUS next(i)] notin {[j, m ¥PLUS j]: j in Za} (next(i))-->Stat11 ==> false; Discharge ==> Stat12: [next(i), m ¥PLUS next(i)] in Shift(m) (Shift(m), [next(i), m ¥PLUS next(i)])-->T74(Stat6,Stat12*) ==> ((Shift(m))~[car([next(i), m ¥PLUS next(i)])]) = cdr([next(i), m ¥PLUS next(i)]) TELEM ==> (car([i, m ¥PLUS i]) = i) & (cdr([i, m ¥PLUS i]) = (m ¥PLUS i)) & (car([next(i), m ¥PLUS next(i)]) = next(i)) & (cdr([next(i), m ¥PLUS next(i)]) = (m ¥PLUS next(i))) i-->T317(Stat8,Stat8) ==> (i ¥PLUS 1) = next(i) ALGEBRA ==> Stat13: ((m ¥PLUS i) in Za) & ((m ¥PLUS (i ¥PLUS 1)) = ((m ¥PLUS i) ¥PLUS 1)) (m ¥PLUS i)-->T317(Stat13) ==> ((m ¥PLUS i) ¥PLUS 1) = next(m ¥PLUS i) EQUAL(Stat8*) ==> (m ¥PLUS i) notin next(m ¥PLUS i) Use_def(next) ==> false; Discharge ==> QED -- -- -- In the special case of a finite sequence $f$, the preceding theorem specializes into one stating -- that every sequence obtained by shifting $f$ is a (finite) subsequence of $f$. -- Theorem 353: ((F in Fin_seqs(S)) & (M in Za)) ¥imp ((shifted_seq(F,M) in Fin_seqs(S)) & (domain(shifted_seq(F,M)) in next(domain(F)))). Proof: Suppose_not(f,s,m) ==> (f in Fin_seqs(s)) & (m in Za) & ((shifted_seq(f,m) notin Fin_seqs(s)) or (domain(shifted_seq(f,m)) notin next(domain(f)))) (m,f)-->T352 ==> shifted_seq(f,m) in Subseqs(f) Use_def(shifted_seq) ==> ((f @ Shift(m)) in Subseqs(f)) & (((f @ Shift(m)) notin Fin_seqs(s)) or (domain(f @ Shift(m)) notin next(domain(f)))) (f, s, f @ Shift(m))-->T351 ==> domain(f @ Shift(m)) notin next(domain(f)) Use_def(Fin_seqs) ==> Stat1: f in {f ¥incin (Za ¥PROD s) | Svm(f) & (domain(f) in Za)} ()-->Stat1 ==> (f ¥incin (Za ¥PROD s)) & Svm(f) & (domain(f) in Za) Use_def(next) ==> domain(f) in next(Za) APPLY(h_thryvar:h) subseq(g->(f @ Shift(m)),f->f) ==> domain(f @ Shift(m)) in (next(Za) * next(domain(f))) Discharge ==> QED -- Theorem 354: ((domain(F) = Za) & (M in Za)) ¥imp (domain(shifted_seq(F,M)) = Za). Proof: Suppose_not(f,m) ==> (domain(f) = Za) & (m in Za) & (domain(shifted_seq(f,m)) /= Za) (m,f)-->T352 ==> shifted_seq(f,m) in Subseqs(f) Use_def(shifted_seq) ==> ((f @ Shift(m)) in Subseqs(f)) & (domain(f @ Shift(m)) /= Za) Use_def(Shift) ==> (domain(Shift(m)) = Za) & (range(Shift(m)) = { m ¥PLUS i : i in Za }) Suppose ==> not(range(Shift(m)) ¥incin Za) Use_def(Shift) ==> Stat1: not({ m ¥PLUS i : i in Za } ¥incin Za) e-->Stat1 ==> (e notin Za) & Stat2: (e in { m ¥PLUS i : i in Za }) i0-->Stat2 ==> (i0 in Za) & ((m ¥PLUS i0) notin Za) (m,i0)-->T283 ==> false; Discharge ==> range(Shift(m)) ¥incin domain(f) (f,Shift(m))-->T95 ==> false; Discharge ==> QED -- -- -- ************************************************************************************************ -- Section 8: The cardinal product theorem (a digression) -- ************************************************************************************************ -- -- Next we start to prepare for proof of the cardinal product theorem (Theorem 195 below), which asserts -- that the product of two infinite cardinals is always the larger of the two. This proof -- uses properties of the product ordering of the Cartesian product of two ordinals which the following -- theory begins to lay out. -- THEORY ordval_fcn(s,f(x)) [Elementary properties of ordinal-valued functions] (s /= 0) & (FORALL x in s | Ord(f(x))) END ordval_fcn; -- ENTER_THEORY ordval_fcn -- Def 00a: [Points at which f attains its minimum] rng_thryvar := {x: x in s | f(x) = arb({f(u): u in s})} -- -- The first result we prove within the present theory is that the ordinal-valued function $f$ -- assumed by the theory always attains its minimum value $arb({f(u): u in s})$. -- Theorem ordval_fcn1: [An ordinal-valued function attains its minimum] (rng_thryvar /= 0) & (FORALL x in rng_thryvar, y in s | f(x) ¥incin f(y)) & (rng_thryvar = {x: x in s | f(x) = arb({f(u): u in s})}). Proof: Suppose_not ==> rng_thryvar = 0 or (not (FORALL x in rng_thryvar, y in s | f(x) ¥incin f(y))) or rng_thryvar /= {x: x in s | f(x) = arb({f(u): u in s})} -- -- Assume the contrary. Since ${f(u): u in s}$ is clearly nonempty, $arb({f(y): y in s}) in {f(u): u in s}$ -- by the axiom of choice. Hence $arb({f(y): y in s})$ can be written as $f(d)$ with $d in s$, -- and then it is clear by definition that $d in rng_thryvar$ so that $rng_thryvar /= 0$, -- and hence only the second clause of out theorem can be false, i.e there must exist -- $x in rng_thryvar$, $y in s$ such that $f(y)$ is less than $f(x)$. -- Use_def(rng_thryvar) ==> rng_thryvar = {x: x in s | f(x) = arb({f(u): u in s})} Assump ==> Stat1: (s /= 0) & Stat2: (FORALL x in s | Ord(f(x))) cp-->Stat1 ==> cp in s Suppose ==> Stat3: f(cp) notin {f(u): u in s} cp-->Stat3 ==> false; Discharge ==> {f(u): u in s} /= 0 {f(y): y in s}-->T0 ==> Stat4: (arb({f(y): y in s}) in {f(u): u in s}) & (arb({f(y): y in s}) * {f(u): u in s} = 0) d-->Stat4 ==> (d in s) & (arb({f(y): y in s}) = f(d)) Suppose ==> d notin rng_thryvar Use_def(rng_thryvar) ==> Stat5: d notin {x: x in s | f(x) = arb({f(u): u in s})} d-->Stat5 ==> false; Discharge ==> Stat6: not(FORALL x in rng_thryvar, y in s | f(x) ¥incin f(y)) (x,y)-->Stat6 ==> Stat7: (x in rng_thryvar) & (y in s) & (not(f(x) ¥incin f(y))) -- -- $rng_thryvar$ is clearly a subset of $s$, while $f(x) = arb({f(u): u in s})$ and $f(y)$ are both ordinals. -- Suppose ==> Stat8: not(s incs rng_thryvar) c-->Stat8 ==> (c notin s) & (c in rng_thryvar) Use_def(rng_thryvar) ==> Stat9: c in {x in s | f(x) = arb({f(u): u in s})} ()-->Stat9 ==> false; Discharge ==> s incs rng_thryvar x-->Stat2 ==> Ord(f(x)) y-->Stat2 ==> Ord(f(y)) (f(x),f(y))-->T35 ==> f(y) in f(x) Use_def(rng_thryvar) ==> Stat10: x in {v: v in s | f(v) = arb({f(u): u in s})} v-->Stat10 ==> (x = v) & (f(v) = arb({f(u): u in s})) EQUAL ==> f(x) = arb({f(u): u in s}) -- -- But $f(y)$ is clearly in ${f(u): u in s}$, and since this violates -- the disjointness clause of the axiom of choice as appled above, -- have a contradiction which completes our proof. -- Suppose ==> Stat11: f(y) notin {f(u): u in s} y-->Stat11 ==> false; Discharge ==> f(y) in {f(u): u in s} Discharge ==> QED -- -- It is also obvious that the set $rng_thryvar$ on which $f(x)$ attains its minimum value is -- a subset of $s$. -- Theorem ordval_fcn2: rng_thryvar ¥incin s. Proof: Suppose_not ==> not(rng_thryvar ¥incin s) Use_def(rng_thryvar) ==> rng_thryvar = {x: x in s | f(x) = arb({f(y): y in s})} Set_monot ==> {x: x in s | f(x) = arb({f(y): y in s})} ¥incin {x: x in s} ELEM ==> rng_thryvar ¥incin {x: x in s} SIMPLF ==> {x: x in s} = s Discharge ==> QED -- -- Finally it is clear that any $y in s$ at which the minimum of $f$ is attained -- belongs to the set $rng_thryvar$. -- Theorem ordval_fcn3: (FORALL x in rng_thryvar, y in s | (f(x) = f(y)) ¥imp (y in rng_thryvar)). Proof: Suppose_not ==> Stat1: not (FORALL x in rng_thryvar, y in s | (f(x) = f(y)) ¥imp (y in rng_thryvar)) (x,y)-->Stat1 ==> (x in rng_thryvar) & (y in s) & (f(x) = f(y)) & (y notin rng_thryvar) Use_def(rng_thryvar) ==> Stat2: x in {x in s | f(x) = arb({f(u): u in s})} ()-->Stat2 ==> f(x) = arb({f(u): u in s}) ELEM ==> f(y) = arb({f(u): u in s}) Suppose ==> Stat3: y notin {x: x in s | f(x) = arb({f(u): u in s})} y-->Stat3 ==> false; Discharge ==> y in {x: x in s | f(x) = arb({f(u): u in s})} Use_def(rng_thryvar) ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY ordval_fcn -- --THEORY ordval_fcn(s,f); [Elementary functions of ordinal-valued functions] -- (s /= 0) & (FORALL x in s | Ord(f(x))) --==>(rng_thryvar) -- (rng_thryvar = {x: x in s | f(x) = arb({f(y): y in s})}) & (rng /= 0) & -- (FORALL x in rng_thryvar, y in s | f(x) ¥incin f(y)) -- (rng ¥incin s) --END ordval_fcn; -- -- ---------------------------------------------------------------------------------------------- -- ---------------------------------------------------------------------------------------------- -- Our next theory concerns binary relations $R$ which are well-founded on a given domain $s$. -- This means that $R$ is irreflexive on $s$, and that each non-null subset $t$ of this -- domain has a 'minimal' element,i.e. an element not greater than any other element -- of $t$ in the ordering defined by $R$. -- We will show that any such relation can be extended into one which is isomorphic to the -- membership relator on an ordinal in 1-1 ordered correspondence with the set $s$. -- ---------------------------------------------------------------------------------------------- -- ---------------------------------------------------------------------------------------------- -- THEORY well_founded_set(s,arg1_bef_arg2(x,y)) (FORALL t | ((t ¥incin s) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | (not arg1_bef_arg2(v,w))))) END well_founded_set; -- ENTER_THEORY well_founded_set -- -- ---------------------------------------------------------------------------------------------- -- Our first theorem shows that the relation is antisymmetric, and hence irreflexive. -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.0: ((X in s) & (Y in s)) ¥imp ((not(arg1_bef_arg2(X,Y) & arg1_bef_arg2(Y,X))) & (not arg1_bef_arg2(X,X))). Proof: -- -- We proceed by contradiction. Suppose that our theorem is false, and let $x$, $y$ be a counterexample. -- Suppose_not(x,y) ==> (x in s) & (y in s) & ((arg1_bef_arg2(x,y) & arg1_bef_arg2(y,x)) or arg1_bef_arg2(x,x)) ELEM ==> ({x,y} ¥incin s) & ({x,y} /= 0) & ({x} ¥incin s) & ({x} /= 0) -- -- Suppose first that the pair $x,y$ violates antisymmetry, so that $x$ precedes $y$ and $y$ precedes $x$. -- Any minimal element $u$ of the doubleton ${x,y}$ must be either $x$ or $y$; but if it is $x$ this -- conflicts with the fact that $y$ precedes $x$; and symmetrically if the minimal element is $y$. -- Suppose ==> arg1_bef_arg2(x,y) & arg1_bef_arg2(y,x) Assump ==> Stat1: (FORALL t | ((t ¥incin s) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | (not arg1_bef_arg2(v,w))))) ({x,y})-->Stat1 ==> Stat2: (EXISTS w in {x,y} | (FORALL v in {x,y} | (not arg1_bef_arg2(v,w)))) u-->Stat2 ==> (u in {x,y}) & Stat3: (FORALL v in {x,y} | (not arg1_bef_arg2(v,u))) x-->Stat3 ==> (x in {x,y}) ¥imp (not arg1_bef_arg2(x,u)) y-->Stat3 ==> (y in {x,y}) ¥imp (not arg1_bef_arg2(y,u)) ELEM ==> ((u = y) & (not arg1_bef_arg2(x,u))) or ((u = x) & (not arg1_bef_arg2(y,u))) Suppose ==> (u = y) & (not arg1_bef_arg2(x,u)) EQUAL ==> false; Discharge ==> (u = x) & (not arg1_bef_arg2(y,u)) EQUAL ==> false; Discharge ==> arg1_bef_arg2(x,x) -- -- Similarly the minimal element of the singleton ${x}$ must be $x$, so $x$ cannot -- precede $x$, completing our proof. -- ({x})-->Stat1 ==> Stat4: (EXISTS w in {x} | (FORALL v in {x} | (not arg1_bef_arg2(v,w)))) u2-->Stat4 ==> Stat5: (u2 in {x}) & (FORALL v in {x} | (not arg1_bef_arg2(v,u2))) u2-->Stat5 ==> (u2 in {x}) & ((u2 in {x}) ¥imp (not arg1_bef_arg2(u2,u2))) ELEM ==> (u2 = x) & (not arg1_bef_arg2(u2,u2)) EQUAL ==> false; Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- By assumption, we can define a selector '$Minrel1_thryvar$' which -- picks a minimal element from each non-null subset of the domain $s$. -- ---------------------------------------------------------------------------------------------- -- Def 10000: [?] Minrel1_thryvar(T) := if (T ¥incin s) & (T /= 0) then arb({m: m in T | (FORALL y in T | (not arg1_bef_arg2(y,m)))}) else s end if -- -- The following statement merely captures the definition of $Minrel1_thryvar$ as a theorem for use outside the present theory. -- Theorem well_founded_set.00: Minrel1_thryvar(T) = if (T ¥incin s) & (T /= 0) then arb({m: m in T | (FORALL y in T | (not arg1_bef_arg2(y,m)))}) else s end if. Proof: Suppose_not(t) ==> not(Minrel1_thryvar(T) = if (t ¥incin s) & (t /= 0) then arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) else s end if) Use_def(Minrel1_thryvar) ==> false; Discharge ==> QED -- Theorem well_founded_set.0a: ((T ¥incin s) & (T /= 0)) ¥imp ((Minrel1_thryvar(T) in T) & (FORALL y in T | (not arg1_bef_arg2(y,Minrel1_thryvar(T))))). Proof: -- -- Proceeding by contradiction, assume that there is a non-null subset $t$ of the domain $s$ -- of our relation for which the operator $Minrel1_thryvar$ just introduced fails to -- select a minimal element from $t$. -- Suppose_not(t) ==> (t ¥incin s) & (t /= 0) & (not((Minrel1_thryvar(t) in t) & (FORALL y in t | (not arg1_bef_arg2(y,Minrel1_thryvar(t)))))) Assump ==> Stat1: (FORALL t | ((t ¥incin s) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | (not arg1_bef_arg2(v,w))))) t-->Stat1 ==> Stat2: (EXISTS x in t | (FORALL y in t | (not arg1_bef_arg2(y,x)))) m-->Stat2 ==> (m in t) & (FORALL y in t | (not arg1_bef_arg2(y,m))) -- -- This conflicts with the fact that by assumption the set of minimal elements of $t$ cannot be empty, -- and so the present lemma follows. -- Suppose ==> Stat3: {m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))} = 0 m-->Stat3 ==> false; Discharge ==> arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) in {m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))} Use_def(Minrel1_thryvar) ==> Minrel1_thryvar(t) = arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) EQUAL ==> Stat4: Minrel1_thryvar(t) in {m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))} (mp)-->Stat4 ==> (mp = Minrel1_thryvar(t)) & (Minrel1_thryvar(t) in t) & (FORALL y in t | (not arg1_bef_arg2(y,mp))) EQUAL ==> (FORALL y in t | (not arg1_bef_arg2(y,Minrel1_thryvar(t)))) Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- Next we prove the elementary fact that $Minrel1_thryvar(t)$ cannot be less than $Minrel1_thryvar(r)$ if -- $t$ and $s$ are both non-null subsets of $s$ and $t$ is a subset of $r$: -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.0b: [Monotonicity of $Minrel1_thryvar$] ((R ¥incin s) & (T ¥incin R) & (T /= 0)) ¥imp (not(arg1_bef_arg2(Minrel1_thryvar(T),Minrel1_thryvar(R)))). Proof: -- -- Assuming the contrary, it follows that a minimal element of the subset $t$ -- of the set $r$ would precede some minimal element of $r$: -- Suppose_not(r,t) ==> (r ¥incin s) & (t ¥incin r) & (t /= 0) & (arg1_bef_arg2(Minrel1_thryvar(t),Minrel1_thryvar(r))) ELEM ==> (r /= 0) & (t ¥incin s) -- -- now use the preceding theorem twice, to derive a contradiction from the fact that -- $Minrel1_thryvar(t)$ comes before $Minrel1_thryvar(r)$ -- t-->Twell_founded_set.0a ==> (Minrel1_thryvar(t) in t) r-->Twell_founded_set.0a ==> (Minrel1_thryvar(r) in r) & Stat1: (FORALL y in r | (not arg1_bef_arg2(y,Minrel1_thryvar(r)))) ELEM ==> Minrel1_thryvar(t) in r (Minrel1_thryvar(t))-->Stat1 ==> not(arg1_bef_arg2(Minrel1_thryvar(t),Minrel1_thryvar(r))) Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- The fact that for any non-null subset $t$ of $s$, $Minrel1_thryvar(t)$ belongs to $t$ is -- an even more elementary consequence of the one assumption of the present theory. -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.0c: ((S incs T) & (T /= 0)) ¥imp (Minrel1_thryvar(T) in T). Proof: Suppose_not(t) ==> (s incs t) & (t /= 0) & (Minrel1_thryvar(t) notin t) Use_def(Minrel1_thryvar) ==> Minrel1_thryvar(t) = arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) Assump ==> Stat1: (FORALL t | ((t ¥incin s) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | (not arg1_bef_arg2(v,w))))) t-->Stat1 ==> Stat2: (EXISTS x in t | (FORALL y in t | (not arg1_bef_arg2(y,x)))) x-->Stat2 ==> Stat3: (x in t) & (FORALL y in t | (not arg1_bef_arg2(y,x))) Suppose ==> Stat4: {m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))} = 0 x-->Stat4 ==> false; Discharge ==> {m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))} /= 0 {m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}-->T0 ==> arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) in {m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))} EQUAL ==> Stat5: Minrel1_thryvar(t) in {m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))} m-->Stat5 ==> (Minrel1_thryvar(t) = m) & (m in t) Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- We now use the $Minrel1_thryvar$ selector to define a function -- from ordinals into, and eventually onto, our ordered set $s$, -- and prove a first elementary property of this function. -- ---------------------------------------------------------------------------------------------- -- Def 00b: [The enumeration defined by a well-founded ordering relationship] ordenm_thryvar(X) := Minrel1_thryvar(s - {ordenm_thryvar(y): y in X}) -- -- The following statement captures the definition of ordenm_thryvar as a theorem for use outside the present theory. -- Theorem well_founded_set.1a: ordenm_thryvar(X) = Minrel1_thryvar(s - {ordenm_thryvar(y): y in X}). Proof: Suppose_not(x) ==> ordenm_thryvar(x) /= Minrel1_thryvar(s - {ordenm_thryvar(y): y in x}) Use_def(ordenm_thryvar) ==> ordenm_thryvar(x) = Minrel1_thryvar(s - {ordenm_thryvar(y): y in x}) Discharge ==> QED -- Theorem well_founded_set.1: (not(s ¥incin {ordenm_thryvar(y): y in X})) ¥imp ((ordenm_thryvar(X) in (s - {ordenm_thryvar(y): y in X})) & (FORALL y in (s - {ordenm_thryvar(y): y in X}) | not(arg1_bef_arg2(y,ordenm_thryvar(X))))). Proof: Suppose_not(x) ==> (not (s ¥incin {ordenm_thryvar(y): y in x})) & (not ((ordenm_thryvar(x) in (s - {ordenm_thryvar(y): y in x})) & (FORALL y in (s - {ordenm_thryvar(y): y in x}) | not(arg1_bef_arg2(y,ordenm_thryvar(x)))))) -- -- The proof, which is by contradiction, just uses the definition of 'ordenm_thryvar' -- and Lemma well_founded_set.0a. -- ELEM ==> ((s - {ordenm_thryvar(y): y in x}) ¥incin s) & ((s - {ordenm_thryvar(y): y in x}) /= 0) -- -- For since $t = s - {ordenm_thryvar(y): y in x}$ is a non-null subset of $s$, -- $Minrel1_thryvar(t) = ordenm_thryvar(x)$ is a minimal element of $t$, which is what we assert. -- (s - {ordenm_thryvar(y): y in x})-->Twell_founded_set.0a ==> (Minrel1_thryvar(s - {ordenm_thryvar(y): y in x}) in (s - {ordenm_thryvar(y): y in x})) & (FORALL y in (s - {ordenm_thryvar(y): y in x}) | not(arg1_bef_arg2(y,Minrel1_thryvar(s - {ordenm_thryvar(y): y in x})))) Use_def(ordenm_thryvar) ==> ordenm_thryvar(x) = Minrel1_thryvar(s - {ordenm_thryvar(y): y in X}) EQUAL ==> (ordenm_thryvar(x) in (s - {ordenm_thryvar(y): y in x})) & (FORALL y in (s - {ordenm_thryvar(y): y in x}) | not(arg1_bef_arg2(y,ordenm_thryvar(x)))) Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- Next we show that $ordenm_thryvar(x) = s$ only if $s ¥incin {ordenm_thryvar(y): y in X}$ -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.2: (s ¥incin {ordenm_thryvar(y): y in X}) ¥eq (ordenm_thryvar(X) = s). Proof: -- -- For assume the contrary, and first consider the case in which s ¥incin {ordenm_thryvar(y): y in x} -- Suppose_not(x) ==> not((s ¥incin {ordenm_thryvar(y): y in x}) ¥eq (ordenm_thryvar(x) = s)) Use_def(ordenm_thryvar) ==> ordenm_thryvar(x) = Minrel1_thryvar(s - {ordenm_thryvar(y): y in x}) Suppose ==> (s ¥incin {ordenm_thryvar(y): y in x}) & (ordenm_thryvar(x) /= s) -- -- In this case, the definitions of the operators involved lead to an immediate contradiction, -- ruling it out, and so leave only the case $ordenm_thryvar(x) = s$ to be considered. -- ELEM ==> Minrel1_thryvar(s - {ordenm_thryvar(y): y in x}) /= s Use_def(Minrel1_thryvar) ==> (s - {ordenm_thryvar(y): y in x }) /= 0 Discharge ==> ((s - {ordenm_thryvar(y): y in x}) /= 0) & (ordenm_thryvar(x) = s) -- -- but then $s = Minrel1_thryvar(s - {ordenm_thryvar(y): y in x})$ by definition of $ordenm_thryvar$, and so must -- belong to $s - {ordenm_thryvar(y): y in x}$ -- ELEM ==> s = Minrel1_thryvar(s - {ordenm_thryvar(y): y in x}) ELEM ==> ((s - {ordenm_thryvar(y): y in x}) ¥incin s) & (s /= 0) (s,s - {ordenm_thryvar(y): y in x})-->Twell_founded_set.0c ==> Minrel1_thryvar(s - {ordenm_thryvar(y): y in x}) in s - {ordenm_thryvar(y): y in x} Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- Our next result shows that the image, via the enumerator, of any $x$ -- is either $s$ or an element of $s$: -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.3: (ordenm_thryvar(X) /= s) ¥imp (ordenm_thryvar(X) in s). Proof: -- -- Suppose $x$ is a counterexample. -- Then Theorem well_founded_set.2 tells us that some element of $s$ is -- not the image, via the enumerator '$ordenm_thryvar$', of any element of $x$. -- Suppose_not(x) ==> (ordenm_thryvar(x) /= s) & (ordenm_thryvar(x) notin s) (s,x)-->Twell_founded_set.2 ==> not(s ¥incin {ordenm_thryvar(y): y in x}) -- -- Thus, by Theorem well_founded_set.1, $ordenm_thryvar(x)$ belongs to $s$, -- a contradiction which proves our statement. -- (s,x)-->Twell_founded_set.1 ==> ordenm_thryvar(x) in (s - {ordenm_thryvar(y): y in x}) Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- Now we show that ordenm_thryvar, restricted to ordinals, -- is a monotone mapping into the ordered set s: -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.5: [Ordinal enumeration is monotone on ordinals] (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & arg1_bef_arg2(ordenm_thryvar(U),ordenm_thryvar(V))) ¥imp (U in V). Proof: -- -- For if the ordinals $o1$, $o2$ are a counterexample to the asserted statement... -- Suppose_not(o1,o2) ==> Ord(o1) & Ord(o2) & (ordenm_thryvar(o1) /= s) & arg1_bef_arg2(ordenm_thryvar(o1),ordenm_thryvar(o2)) & (not(o1 in o2)) -- -- ..then it follows from Theorem well_founded_set.2 that the images, via the enumerator, -- of the elements of $o1$ fail to exhaust the elements of $s$: -- (s,o1)-->Twell_founded_set.2 ==> (not(s ¥incin {ordenm_thryvar(y): y in o1})) -- -- A contradiction will now be derived from the assumption that $o1$ does not -- precede o2. Since ordinals $o1$, $o2$ can always be compared, -- this assumption implies that $o2$ either precedes $o1$ or is equal to it. -- (o1,o2)-->T31 ==> (o2 in o1) or (o1 = o2) -- -- But since, for ordinals, membership implies inclusion, Theorem well_ordered_set_0b -- shows that the $o1$-th element of $s$ cannot precede the $o2$-th element of s. -- This contradiction proves our theorem. -- (o1,o2)-->T34 ==> (o2 in o1) ¥imp (o2 ¥incin o1) ELEM ==> o2 ¥incin o1 Set_monot ==> (s - {ordenm_thryvar(y): y in o1}) ¥incin (s - {ordenm_thryvar(y): y in o2}) ELEM ==> ((s - {ordenm_thryvar(y): y in o1}) /= 0) & ((s - {ordenm_thryvar(y): y in o2}) ¥incin s) (s - {ordenm_thryvar(y): y in o2},s,s - {ordenm_thryvar(y): y in o1})-->Twell_founded_set.0b ==> (not arg1_bef_arg2(Minrel1_thryvar(s - {ordenm_thryvar(y): y in o1}),Minrel1_thryvar(s - {ordenm_thryvar(y): y in o2}))) Use_def(ordenm_thryvar) ==> ordenm_thryvar(o2) = Minrel1_thryvar(s - {ordenm_thryvar(y): y in o2}) Use_def(ordenm_thryvar) ==> ordenm_thryvar(o1) = Minrel1_thryvar(s - {ordenm_thryvar(y): y in o1}) EQUAL ==> false; Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- Next we show that the enumerator, restricted to any ordinal $v$, enumerates a -- superset of the 'segment' of $s$ consisting of all elements of $s$ which precede the $v$-th: -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.6: {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} ¥incin {ordenm_thryvar(x): x in V}. Proof: -- -- Proceed by contradiction, and let $v$ be a counterexample, so that there is -- some element $b$ of $s$ such that $arg1_bef_arg2(b,ordenm_thryvar(v))$ which -- differs from the image $ordenm_thryvar(x)$ of any $x in v$. -- Suppose_not(v) ==> Stat1: not ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(v))} ¥incin {ordenm_thryvar(u): u in v}) b-->Stat1 ==> Stat2: (b in {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(v))}) & Stat3: (b notin {ordenm_thryvar(u): u in v}) bp-->Stat2 ==> (b = bp) & (b in s) & arg1_bef_arg2(bp,ordenm_thryvar(v)) EQUAL ==> arg1_bef_arg2(b,ordenm_thryvar(v)) -- -- By Theorem well_founded_set.1, no element of $s - {ordenm_thryvar(y): y in v}$ can precede ordenm_thryvar(v). -- In particular, $b$ cannot precede $ordenm_thryvar(v)$. This contradiction proves our theorem. -- ELEM ==> (b in (s - {ordenm_thryvar(u): u in v})) & (not (s ¥incin {ordenm_thryvar(u): u in v})) (s,v)-->Twell_founded_set.1 ==> Stat4: (FORALL y in (s - {ordenm_thryvar(y): y in v}) | (not arg1_bef_arg2(y,ordenm_thryvar(v)))) b-->Stat4 ==> (not arg1_bef_arg2(b,ordenm_thryvar(v))) Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- Our next theorem asserts that distinct ordinals whose images under the enumerator -- differ from (and hence belong to) $s$, have different images. -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.7: [Well-ordering is initially 1-1] (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s) & (U /= V)) ¥imp (ordenm_thryvar(U) /= ordenm_thryvar(V)). Proof: Suppose_not(o1,o2) ==> Ord(o1) & Ord(o2) & (ordenm_thryvar(o1) /= s) & (ordenm_thryvar(o2) /= s) & (o1 /= o2) & (ordenm_thryvar(o1) = ordenm_thryvar(o2)) -- -- Proceed by contradiction, and let the ordinals $o1$, $o2$ be a counterexample. -- It follows by theorems well_founded_set.1 and well_founded_set.2 -- that the image of $o1$ (resp. $o2$) lies outside ${ordenm_thryvar(y): y in o1}$ -- (resp. ${ordenm_thryvar(y): y in o2}$). -- (s,o1)-->Twell_founded_set.2 ==> not(s ¥incin {ordenm_thryvar(y): y in o1}) (s,o2)-->Twell_founded_set.2 ==> not(s ¥incin {ordenm_thryvar(y): y in o2}) (s,o1)-->Twell_founded_set.1 ==> ordenm_thryvar(o1) in (s - {ordenm_thryvar(y): y in o1}) (s,o2)-->Twell_founded_set.1 ==> ordenm_thryvar(o2) in (s - {ordenm_thryvar(y): y in o2}) -- -- Given two distinct ordinals, one always precedes the other: assume first that $o1$ belongs to $o2$. -- Then obviously the image of $o1$ is image of an element of $o2$, a contradiction. -- (o1,o2)-->T31 ==> (o1 in o2) or (o2 in o1) Suppose ==> o1 in o2 Suppose ==> Stat1: ordenm_thryvar(o1) notin {ordenm_thryvar(y): y in o2} o1-->Stat1 ==> false; Discharge ==> ordenm_thryvar(o1) in {ordenm_thryvar(y): y in o2} Discharge ==> o2 in o1 -- -- A similar contradiction results if $o2$ belongs to $o1$. This shows that our -- original assumption is false, and so completes our proof. -- Suppose ==> Stat2: ordenm_thryvar(o2) notin {ordenm_thryvar(y): y in o1} o2-->Stat2 ==> false; Discharge ==> ordenm_thryvar(o2) in {ordenm_thryvar(y): y in o1} Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- The following theorem asserts that for every $s$ there is an ordinal $o$ such that the restriction -- to $o$ of the enumerator is a 1-1 map from $s$ onto $s$. -- ---------------------------------------------------------------------------------------------- -- Theorem well_founded_set.8: (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))). Proof: -- -- Proceeding by contradiction, assume the theorem to be false. -- Suppose_not ==> Stat1: not(EXISTS o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))) -- -- We first show that there is at least one ordinal in $next(#pow(s))$ whose image under -- the enumerator is all of $s$. For assume the contrary. The cardinality of $pow(s)$ -- is an ordinal which must be different from $#s$. Hence by Theorem well_founded_set.2 -- the set ${ordenm_thryvar(y): y in #pow(s)}$ of images of elements of $#pow(s)$ cannot include $s$. -- (pow(s))-->T156 ==> Card(#pow(s)) & Ord(#pow(s)) (#pow(s))-->T32 ==> Ord(next(#pow(s))) Suppose ==> Stat2: not(EXISTS o in next(#pow(s)) | (Ord(o) & (ordenm_thryvar(o) = s))) Use_def(next) ==> next(#pow(s)) = #pow(s) + {#pow(s)} ELEM ==> #pow(s) in next(#pow(s)) (#pow(s))-->Stat2 ==> ordenm_thryvar(#pow(s)) /= s (s,#pow(s))-->Twell_founded_set.2 ==> not(s ¥incin {ordenm_thryvar(y): y in #pow(s)}) -- -- But ${ordenm_thryvar(y): y in #pow(s)}$ must be included in $s$, for otherwise some element $ordenm_thryvar(b)$, -- with $b in #pow(s)$ would lie outside $s$, whereas by definition $ordenm_thryvar(b)$ -- must belong to $s$. -- Suppose ==> Stat3: not ({ordenm_thryvar(o): o in #pow(s)} ¥incin s) b1-->Stat3 ==> (b1 notin s) & Stat4: (b1 in {ordenm_thryvar(o): o in #pow(s)}) b-->Stat4 ==> (b in #pow(s)) & (ordenm_thryvar(b) notin s) (next(#pow(s)),b)-->T12 ==> Ord(b) (next(#pow(s)),b)-->T13 ==> b ¥incin #pow(s) Set_monot ==> (s - {ordenm_thryvar(y): y in #pow(s)}) ¥incin (s - {ordenm_thryvar(y): y in b}) ELEM ==> not(s ¥incin {ordenm_thryvar(y): y in b}) (s,b)-->Twell_founded_set.1 ==> ordenm_thryvar(b) in (s - {ordenm_thryvar(y): y in b}) Discharge ==> {ordenm_thryvar(o): o in #pow(s)} ¥incin s -- -- We can use our general 'fcn_symbol' theory to form a single-valued map $f$ -- which pairs each element of $#pow(s)$ to its image under the enumerator. -- The following properties of this map result automatically: -- Loc_def ==> f = {[x,ordenm_thryvar(x)]: x in #pow(s)} APPLY(x9_thryvar:d1,y9_thryvar:d2) fcn_symbol(f(x)->ordenm_thryvar(x),g->f,s->#pow(s)) ==> Svm(f) & (domain(f) = #pow(s)) & (range(f) = {ordenm_thryvar(x): x in #pow(s)}) & (((d1 in #pow(s)) & (d2 in #pow(s)) & (ordenm_thryvar(d1) = ordenm_thryvar(d2)) & (d1 /= d2)) or one_1_map(f)) -- -- But then the distinct elements $d1$, $d2$ cannot have the same image under the map $f$. -- Indeed, since $d1$ and $d2$ belong to the ordinal $#pow(s)$, -- they are ordinals included in $#pow(s)$; which by set monotonicity tells us that -- neither ${ordenm_thryvar(y): y in d1}$ nor ${ordenm_thryvar(y): y in d2}$ can include $s$. -- Suppose ==> (d1 in #pow(s)) & (d2 in #pow(s)) & (ordenm_thryvar(d1) = ordenm_thryvar(d2)) & (d1 /= d2) (#pow(s),d1)-->T12 ==> Ord(d1) (#pow(s),d2)-->T12 ==> Ord(d2) (#pow(s),d1)-->T13 ==> d1 ¥incin #pow(s) (#pow(s),d2)-->T13 ==> d2 ¥incin #pow(s) Set_monot ==> {ordenm_thryvar(y): y in d1} ¥incin {ordenm_thryvar(y): y in #pow(s)} Set_monot ==> {ordenm_thryvar(y): y in d2} ¥incin {ordenm_thryvar(y): y in #pow(s)} ELEM ==> not (s ¥incin {ordenm_thryvar(y): y in d1}) & (not (s ¥incin {ordenm_thryvar(y): y in d2})) -- -- But now Theorem well_founded_set.2 and Theorem well_founded_set.7 tell us that -- $ordenm_thryvar(d1)$ and $ordenm_thryvar(d1)$ must be different, a contradiction which shows $f$ is one-one. -- (s,d1)-->Twell_founded_set.2 ==> ordenm_thryvar(d1) /= s (s,d2)-->Twell_founded_set.2 ==> ordenm_thryvar(d2) /= s (d1,d2)-->Twell_founded_set.7 ==> false; Discharge ==> one_1_map(f) -- -- Since the domain and range of the 1-1 mapping $f$ have the same cardinality but are -- $next(#pow(s))$ and a subset of $s$ respectively, it follows that $next(#pow(s))$ -- is less than or equal to the cardinality of $s$, violating Cantor's theorem. This refutes -- our assumption that there is no ordinal in $next(#pow(s))$ whose image under the enumerator is $s$. -- f-->T157 ==> #range(f) = #domain(f) EQUAL ==> #range(f) = ##pow(s) EQUAL ==> #{ordenm_thryvar(x): x in #pow(s)} = ##pow(s) (pow(s))-->T166 ==> #{ordenm_thryvar(x): x in #pow(s)} = #pow(s) ({ordenm_thryvar(x): x in #pow(s)},s)-->T170 ==> #pow(s) ¥incin #s s-->T265 ==> #s in #pow(s) Discharge ==> Stat5: (EXISTS o in next(#pow(s)) | Ord(o) & (ordenm_thryvar(o) = s)) -- -- Having now established that there is an ordinal in $next(#pow(s))$ whose image under the enumerator is $s$, -- we give the smallest such ordinal the name $o$. -- o1-->Stat5 ==> (o1 in next(#pow(s))) & Ord(o1) & (ordenm_thryvar(o1) = s) APPLY(mt1_thryvar:o) transfinite_induction(n->o1,p(x)->((x in next(#pow(s))) & Ord(x) & (ordenm_thryvar(x) = s))) ==> Stat6: (FORALL x | (o in next(#pow(s))) & Ord(o) & (ordenm_thryvar(o) = s) & ((x in o) ¥imp (not((x in next(#pow(s))) & Ord(x) & (ordenm_thryvar(x) = s))))) -- -- It follows from our initial hypothesis that either there is some element of $o in next(#pow(s))$ -- whose image is $s$, or the set of images of the elements of $o$ is different from $s$, -- or the restriction of the enumerator to $o$ fails to be 1-1. -- We consider these three possibilities in turn. -- a0-->Stat6 ==> (o in next(#pow(s))) & Ord(o) & (ordenm_thryvar(o) = s) o-->Stat1 ==> (s /= {ordenm_thryvar(x): x in o}) or (not(FORALL x in o | (ordenm_thryvar(x) /= s))) or (not one_1_map({[x,ordenm_thryvar(x)]: x in o})) -- -- Case 1. Suppose that there is some element $x$ of $o$ whose image under the enumerator is $s$. -- Since $x$ must be an ordinal, this conflicts with the assumed minimality of $o$, -- and so disposes of Case 1. -- Suppose ==> Stat7: not (FORALL x in o | ordenm_thryvar(x) /= s) (#pow(s))-->T32 ==> Ord(next(#pow(s))) x-->Stat7 ==> (x in o) & (ordenm_thryvar(x) = s) (next(#pow(s)),o)-->T13 ==> o ¥incin next(#pow(s)) ELEM ==> x in next(#pow(s)) (o,x)-->T12 ==> Ord(x) x-->Stat6 ==> false; Discharge ==> Stat8: (FORALL x in o | ordenm_thryvar(x) /= s) -- -- Theorem well_founded_set.3 now tells us ${ordenm_thryvar(y): y in o}$ must be a subset of $s$; -- Suppose ==> Stat9: not({ordenm_thryvar(y): y in o} ¥incin s) c-->Stat9 ==> Stat10: (c in {ordenm_thryvar(y): y in o}) & (c notin s) y-->Stat10 ==> (y in o) & (ordenm_thryvar(y) notin s) y-->Stat8 ==> ordenm_thryvar(y) /= s y-->Twell_founded_set.3 ==> ordenm_thryvar(y) in s Discharge ==> {ordenm_thryvar(y): y in o} ¥incin s -- -- Case 2. Now suppose that ${ordenm_thryvar(y): y in o}$ -- is a proper subset of $s$. Then Theorem well_founded_set.2 tells us that -- $ordenm_thryvar(o)$ is a member of $s$ and so is different from $s$, ruling out this case. -- Suppose ==> s /= {ordenm_thryvar(y): y in o} ELEM ==> not(s ¥incin {ordenm_thryvar(y): y in o}) (s,o)-->Twell_founded_set.2 ==> ordenm_thryvar(o) /= s Discharge ==> not one_1_map({[x,ordenm_thryvar(x)]: x in o}) -- -- Case 3. Finally, suppose that the restriction $h$ of the enumerator to $o$ is not 1-1, -- and let $u,v$ be different elements of $o$ which have the same image under the map $h$. -- Then $u$ and $v$ belong to $o$ and so must both be ordinals. -- Moreover, since they belong to $o$ and $ordenm_thryvar(x) /= s$ for every element $x$ of $o$, -- $ordenm_thryvar(u)$ and $ordenm_thryvar(v)$ both differ from $s$. Hence by well_founded_set.7 -- $ordenm_thryvar(u) /= ordenm_thryvar(v)$. This contradiction shows that $h$ is one-one, eliminating -- the last of our three cases and so proving our theorem. -- Loc_def ==> h = {[x,ordenm_thryvar(x)]: x in o} APPLY(x9_thryvar:u,y9_thryvar:v) fcn_symbol(f(x)->ordenm_thryvar(x),g->h,s->o) ==> Svm(h) & (domain(h) = o) & (range(h) = {ordenm_thryvar(x): x in o}) & (((u in o) & (v in o) & (ordenm_thryvar(u) = ordenm_thryvar(v)) & (u /= v)) or one_1_map(h)) Suppose ==> Stat11: (u in o) & (v in o) & (ordenm_thryvar(u) = ordenm_thryvar(v)) & (u /= v) (o,u)-->T12 ==> Ord(u) (o,v)-->T12 ==> Ord(v) u-->Stat8 ==> ordenm_thryvar(u) /= s v-->Stat8 ==> ordenm_thryvar(v) /= s (u,v)-->Twell_founded_set.7 ==> one_1_map({[x,ordenm_thryvar(x)]: x in o}) Discharge ==> one_1_map(h) EQUAL ==> false; Discharge ==> QED -- -- We can now make the following definition, convenient for subsequent application. -- Def well_founded_set.b: [?] ord_thryvar := arb({o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))}) -- -- This last definition lets us reformulate the preceding theorem as follows. -- Theorem well_founded_set.9: (ord_thryvar in next(#pow(s))) & Ord(ord_thryvar) & (s = {ordenm_thryvar(x): x in ord_thryvar}) & (FORALL x in ord_thryvar | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in ord_thryvar}). Proof: Suppose_not ==> not((ord_thryvar in next(#pow(s))) & Ord(ord_thryvar) & (s = {ordenm_thryvar(x): x in ord_thryvar}) & (FORALL x in ord_thryvar | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in ord_thryvar})) Twell_founded_set.8 ==> Stat1: (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))) o-->Stat1 ==> (o in next(#pow(s))) & Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}) Suppose ==> Stat2: o notin {o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))} o-->Stat2 ==> false; Discharge ==> o in {o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))} ELEM ==> 0 /= {o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))} ({o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))})-->T0 ==> arb({o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))}) in {o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))} Use_def(ord_thryvar) ==> Stat3: ord_thryvar in {o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))} ()-->Stat3 ==> false; Discharge ==> QED -- -- The results just proved can be summarized as follows: -- ENTER_THEORY Set_theory -- --DISPLAY well_founded_set -- --THEORY well_founded_set(s,arg1_bef_arg2(y,x)); -- (FORALL t ¥incin s | ((t /= 0) ¥imp (EXISTS x in t | (FORALL y in t | (not arg1_bef_arg2(y,x)))))) --==>(Minrel1_thryvar,ordenm_thryvar,ord_thryvar) -- (FORALL x in s, y in s | ((arg1_bef_arg2(x,y) ¥imp (not arg1_bef_arg2(y,x))) & (not arg1_bef_arg2(x,x)))) -- (FORALL x in OM | (not(s ¥incin {ordenm_thryvar(y): y in X})) ¥imp ((ordenm_thryvar(X) in (s - {ordenm_thryvar(y): y in X})) -- & (FORALL y in (s - {ordenm_thryvar(y): y in X}) | not(arg1_bef_arg2(y,ordenm_thryvar(X)))))) -- (FORALL x in OM | (s ¥incin {ordenm_thryvar(y): y in X}) ¥eq (ordenm_thryvar(X) = s)) -- (FORALL x in OM | (ordenm_thryvar(X) /= s) ¥imp (ordenm_thryvar(X) in s)) -- (FORALL u in OM, v in OM | (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & --arg1_bef_arg2(ordenm_thryvar(U),ordenm_thryvar(V)) ¥imp (U in V))) -- (FORALL v in OM | {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} ¥incin {ordenm_thryvar(x): x in V}) -- (FORALL u in OM, v in OM | (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s) & (U /= V)) ¥imp (ordenm_thryvar(U) /= ordenm_thryvar(V))) -- (ord_thryvar in next(#pow(s))) & Ord(o) & (s = {ordenm_thryvar(x): x in ord_thryvar}) -- & (FORALL x in ord_thryvar | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in ord_thryvar}) -- (FORALL t in OM | Minrel1_thryvar(t) = if (t ¥incin s) & (t /= 0) then -- arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) else s end if) --END well_founded_set; -- -- ---------------------------------------------------------------------------------------------- -- ---------------------------------------------------------------------------------------------- -- Our next theory, which extends the previous, concerns binary relations -- which strictly well-order a given domain $s$. -- This means that the relation is transitive linear (sometimes called 'trichotomic') -- and irreflexive on $s$, and that each non-null subset $t$ of this domain -- has an element which precedes every other element of $t$ in the ordering. -- We show that any such relation is order-isomorphic to the membership -- relator on an ordinal in 1-1 ordered correspondence with the set. -- THEORY well_ordered_set(s,arg1_bef_arg2(x,y)) (FORALL x in s | (not arg1_bef_arg2(x,x))) (FORALL x in s, y in s, wz in s | ((arg1_bef_arg2(x,y) & arg1_bef_arg2(y,wz)) ¥imp arg1_bef_arg2(x,wz))) (FORALL t ¥incin s | ((t /= 0) ¥imp (EXISTS x in t | (FORALL y in t | (arg1_bef_arg2(x,y) or (x = y)))))) END well_ordered_set; -- ENTER_THEORY well_ordered_set -- -- ---------------------------------------------------------------------------------------------- -- Trichotomy, which does not appear as an explicit theory assumption, will now be derived from -- the assumption concerning minima; moreover, we will show that -- each non-null set $t$ of the ordered domain has a minimal element, -- that is an element which does not follow any other element of $t$ in the ordering. -- ---------------------------------------------------------------------------------------------- -- Theorem well_ordered_set.0: ((X in s) & (Y in s)) ¥imp (arg1_bef_arg2(X,Y) or arg1_bef_arg2(Y,X) or (X = Y)). Proof: -- -- We proceed by contradiction. Suppose that our theorem is false, and let $x$, $y$, and $t$ be a counterexample. -- Suppose_not(x,y) ==> (x in s) & (y in s) & (not arg1_bef_arg2(x,y)) and (not arg1_bef_arg2(y,x)) and (x /= y) -- -- If the asserted trichotomy does not hold, there must exist elements $x$, $y$ of $s$ which cannot be compared. -- But these would form a doubleton without minimum, contradicting one of our assumptions. -- Assump ==> Stat1: (FORALL t ¥incin s | ((t /= 0) ¥imp (EXISTS u in t | (FORALL v in t | (arg1_bef_arg2(u,v) or (u = v)))))) ELEM ==> ({x,y} ¥incin s) & ({x,y} /= 0) ({x,y})-->Stat1 ==> Stat2: (EXISTS x1 in {x,y} | (FORALL y1 in {x,y} | (arg1_bef_arg2(x1,y1) or (x1 = y1)))) u-->Stat2 ==> (u in {x,y}) & Stat3: (FORALL v in {x,y} | (arg1_bef_arg2(u,v) or (u = v))) ELEM ==> ((u = x) or (u = y)) & (x in {x,y}) & (y in {x,y}) Suppose ==> u = x y-->Stat3 ==> arg1_bef_arg2(u,y) or (u = y) EQUAL ==> false; Discharge ==> u = y x-->Stat3 ==> arg1_bef_arg2(u,x) or (u = x) EQUAL ==> false; Discharge ==> QED -- Theorem well_ordered_set.0a: ((T ¥incin s) & (T /= 0)) ¥imp (EXISTS x in T | (FORALL y in T | (not arg1_bef_arg2(y,x)))). Proof: Suppose_not(t) ==> (t ¥incin s) & (t /= 0) & Stat1: (not (EXISTS x in t | (FORALL y in t | (not arg1_bef_arg2(y,x))))) -- -- Assuming the contrary, there must exist a non-null subset $t$ of $s$ each of whose -- elements has at least one predecessor. On the other hand, -- we know that $t$ has an element $v$ which precedes every other element of $t$: this element -- cannot have any predecessors, else the irreflexivity of the ordering relation would be violated. -- Assump ==> Stat2: (FORALL t ¥incin s | ((t /= 0) ¥imp (EXISTS x in t | (FORALL y in t | (arg1_bef_arg2(x,y) or (x = y)))))) t-->Stat2 ==> Stat3: (EXISTS x in t | (FORALL y in t | (arg1_bef_arg2(x,y) or (x = y)))) v-->Stat3 ==> (v in t) & Stat4: (FORALL y in t | (arg1_bef_arg2(v,y) or (v = y))) v-->Stat1 ==> Stat5: not (FORALL y in t | (not arg1_bef_arg2(y,v))) w-->Stat5 ==> (w in t) & arg1_bef_arg2(w,v) w-->Stat4 ==> arg1_bef_arg2(v,w) or (v = w) ELEM ==> (v in s) & (w in s) Assump ==> Stat6: (FORALL x in s | (not arg1_bef_arg2(x,x))) v-->Stat6 ==> not arg1_bef_arg2(v,v) Suppose ==> v = w EQUAL ==> false; Discharge ==> arg1_bef_arg2(v,w) Assump ==> Stat7: (FORALL x in s, y in s, wz in s | ((arg1_bef_arg2(x,y) & arg1_bef_arg2(y,wz)) ¥imp arg1_bef_arg2(x,wz))) (v,w,v)-->Stat7 ==> false; Discharge ==> QED -- -- We can now import all theorems of the theory well_founded_set into the present theory. -- APPLY(Minrel1_thryvar:Minrel2_thryvar,ordenm_thryvar:ordenm_thryvar) well_founded_set(s->s,arg1_bef_arg2(x,y)->arg1_bef_arg2(x,y)) ==> Theorem well_ordered_set.100: (FORALL x,y | ((x in s) & (y in s)) ¥imp ((not (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,x))) & (not arg1_bef_arg2(x,x)))) & (FORALL x | (not(s ¥incin {ordenm_thryvar(y): y in x})) ¥imp ((ordenm_thryvar(x) in (s - {ordenm_thryvar(y): y in x})) & (FORALL y in (s - {ordenm_thryvar(y): y in x}) | not(arg1_bef_arg2(y,ordenm_thryvar(x)))))) & (FORALL x | (s ¥incin {ordenm_thryvar(y): y in x}) ¥eq (ordenm_thryvar(x) = s)) & (FORALL x | (ordenm_thryvar(x) /= s) ¥imp (ordenm_thryvar(x) in s)) & (FORALL u, v | (Ord(u) & Ord(v) & (ordenm_thryvar(u) /= s) & arg1_bef_arg2(ordenm_thryvar(u),ordenm_thryvar(v))) ¥imp (u in v)) & (FORALL v | {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(v))} ¥incin {ordenm_thryvar(x): x in v}) & (FORALL u, v | (Ord(u) & Ord(v) & (ordenm_thryvar(u) /= s) & (ordenm_thryvar(v) /= s) & (u /= v)) ¥imp (ordenm_thryvar(u) /= ordenm_thryvar(v))) & (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))) & (FORALL x | ordenm_thryvar(x) = Minrel2_thryvar(s - {ordenm_thryvar(y): y in x})) & (FORALL t | Minrel2_thryvar(t) = if (t ¥incin s) & (t /= 0) then arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) else s end if) -- Theorem well_ordered_set.10: ((X in s) & (Y in s)) ¥imp ((arg1_bef_arg2(X,Y) ¥imp (not arg1_bef_arg2(Y,X))) & (not arg1_bef_arg2(X,X))). Proof: Suppose_not(x,y) ==> ((x in s) & (y in s)) & (not ((arg1_bef_arg2(x,y) ¥imp (not arg1_bef_arg2(y,x))) & (not arg1_bef_arg2(x,x)))) Twell_ordered_set.100 ==> Stat1: (FORALL x,y | ((x in s) & (y in s)) ¥imp ((not (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,x))) & (not arg1_bef_arg2(x,x)))) (x,y)-->Stat1 ==> ((x in s) & (y in s)) ¥imp ((arg1_bef_arg2(x,y) ¥imp (not arg1_bef_arg2(y,x))) & (not arg1_bef_arg2(x,x))) Discharge ==> QED -- Theorem well_ordered_set.1: (not(s ¥incin {ordenm_thryvar(y): y in X})) ¥imp ((ordenm_thryvar(X) in (s - {ordenm_thryvar(y): y in X})) & (FORALL y in (s - {ordenm_thryvar(y): y in X}) | not(arg1_bef_arg2(y,ordenm_thryvar(X))))). Proof: Suppose_not(x) ==> (not(not(s ¥incin {ordenm_thryvar(y): y in X})) ¥imp ((ordenm_thryvar(x) in (s - {ordenm_thryvar(y): y in x})) & (FORALL y in (s - {ordenm_thryvar(y): y in x}) | not(arg1_bef_arg2(y,ordenm_thryvar(x)))))) Twell_ordered_set.100 ==> Stat1: (FORALL x | (not(s ¥incin {ordenm_thryvar(y): y in X})) ¥imp ((ordenm_thryvar(X) in (s - {ordenm_thryvar(y): y in X})) & (FORALL y in (s - {ordenm_thryvar(y): y in X}) | not(arg1_bef_arg2(y,ordenm_thryvar(X)))))) x-->Stat1 ==> false; Discharge ==> QED -- Theorem well_ordered_set.2: ((s ¥incin {ordenm_thryvar(y): y in X}) ¥eq (ordenm_thryvar(X) = s)). Proof: Suppose_not(x) ==> not((s ¥incin {ordenm_thryvar(y): y in x}) ¥eq (ordenm_thryvar(x) = s)) Twell_ordered_set.100 ==> Stat1: (FORALL x | (s ¥incin {ordenm_thryvar(y): y in X}) ¥eq (ordenm_thryvar(X) = s)) x-->Stat1 ==> false; Discharge ==> QED -- Theorem well_ordered_set.3: ((ordenm_thryvar(X) /= s) ¥imp (ordenm_thryvar(X) in s)). Proof: Suppose_not(x) ==> not((ordenm_thryvar(x) /= s) ¥imp (ordenm_thryvar(x) in s)) Twell_ordered_set.100 ==> Stat1: (FORALL x | (ordenm_thryvar(X) /= s) ¥imp (ordenm_thryvar(X) in s)) x-->Stat1 ==> false; Discharge ==> QED -- Theorem well_ordered_set.5a: (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & arg1_bef_arg2(ordenm_thryvar(U),ordenm_thryvar(V))) ¥imp (U in V). Proof: Suppose_not(u,v) ==> not((Ord(u) & Ord(v) & (ordenm_thryvar(u) /= s) & arg1_bef_arg2(ordenm_thryvar(u),ordenm_thryvar(v))) ¥imp (u in v)) Twell_ordered_set.100 ==> Stat1: (FORALL u, v | (Ord(u) & Ord(v) & (ordenm_thryvar(u) /= s) & arg1_bef_arg2(ordenm_thryvar(u),ordenm_thryvar(v))) ¥imp (u in v)) (u,v)-->Stat1 ==> false; Discharge ==> QED -- Theorem well_ordered_set.6a: ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} ¥incin {ordenm_thryvar(x): x in V}). Proof: Suppose_not(v) ==> not({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(v))} ¥incin {ordenm_thryvar(x): x in v}) Twell_ordered_set.100 ==> Stat1: (FORALL v | {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} ¥incin {ordenm_thryvar(x): x in V}) v-->Stat1 ==> false; Discharge ==> QED -- Theorem well_ordered_set.7: ((Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s) & (U /= V)) ¥imp (ordenm_thryvar(U) /= ordenm_thryvar(V))). Proof: Suppose_not(u,v) ==> not((Ord(u) & Ord(v) & (ordenm_thryvar(u) /= s) & (ordenm_thryvar(v) /= s) & (u /= v)) ¥imp (ordenm_thryvar(u) /= ordenm_thryvar(v))) Twell_ordered_set.100 ==> Stat1: (FORALL u, v | (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s) & (U /= V)) ¥imp (ordenm_thryvar(U) /= ordenm_thryvar(V))) (u,v)-->Stat1 ==> false; Discharge ==> QED -- Theorem well_ordered_set.8: (EXISTS o | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))). Proof: Suppose_not ==> Stat1: not(EXISTS o | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))) Twell_ordered_set.100 ==> Stat2: (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))) o1-->Stat2 ==> (Ord(o1) & (s = {ordenm_thryvar(x): x in o1}) & (FORALL x in o1 | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o1})) o1-->Stat1 ==> false; Discharge ==> QED -- Theorem well_ordered_set.8a: ordenm_thryvar(X) = Minrel2_thryvar(s - {ordenm_thryvar(y): y in X}). Proof: Suppose_not(x) ==> ordenm_thryvar(x) /= Minrel2_thryvar(s - {ordenm_thryvar(y): y in x}) Twell_ordered_set.100 ==> Stat1: (FORALL x | ordenm_thryvar(x) = Minrel2_thryvar(s - {ordenm_thryvar(y): y in x})) x-->Stat1 ==> false; Discharge ==> QED -- Theorem well_ordered_set.8b: Minrel2_thryvar(T) = if (T ¥incin s) & (T /= 0) then arb({m: m in T | (FORALL y in T | (not arg1_bef_arg2(y,m)))}) else s end if. Proof: Suppose_not(t) ==> Minrel2_thryvar(t) /= if (t ¥incin s) & (t /= 0) then arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) else s end if Twell_ordered_set.100 ==> Stat1: (FORALL t | Minrel2_thryvar(t) = if (t ¥incin s) & (t /= 0) then arb({m: m in t | (FORALL y in t | (not arg1_bef_arg2(y,m)))}) else s end if) t-->Stat1 ==> false; Discharge ==> QED -- -- This mechanical transition being accomplished, our next theorem tells us that the enumerator, -- restricted to ordinals, conforms to the linear ordering of $s$: -- Theorem well_ordered_set.5: [Any well-ordering is isomorphic to an ordinal enumeration] (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s)) ¥imp (arg1_bef_arg2(ordenm_thryvar(U),ordenm_thryvar(V)) ¥eq (U in V)). Proof: -- -- For if the ordinals $o1$, $o2$ are a counterexample to the asserted statement... -- Suppose_not(o1,o2) ==> Ord(o1) & Ord(o2) & (ordenm_thryvar(o1) /= s) & (ordenm_thryvar(o2) /= s) & (not(arg1_bef_arg2(ordenm_thryvar(o1),ordenm_thryvar(o2)) ¥eq (o1 in o2))) -- -- ...then it follows from well_ordered_set.5a that the negated equivalence -- is satisfied with its left-hand side false and its right-hand side true -- Suppose ==> arg1_bef_arg2(ordenm_thryvar(o1),ordenm_thryvar(o2)) & (o1 notin o2) (o1,o2)-->Twell_ordered_set.5a ==> false; Discharge ==> (not arg1_bef_arg2(ordenm_thryvar(o1),ordenm_thryvar(o2))) & (o1 in o2) -- -- However, since the images of $o1$ an $o2$ via the enumerator $ordenm_thryvar$ both -- belong to $s$, trichotomy implies that $ordenm_thryvar(o1)$ and $ordenm_thryvar(o2)$ can be compared. o1-->Twell_ordered_set.3 ==> ordenm_thryvar(o1) in s o2-->Twell_ordered_set.3 ==> ordenm_thryvar(o2) in s (ordenm_thryvar(o1),s,ordenm_thryvar(o2))-->Twell_ordered_set.0 ==> arg1_bef_arg2(ordenm_thryvar(o2),ordenm_thryvar(o1)) or (ordenm_thryvar(o1) = ordenm_thryvar(o2)) -- Neither ordenm_thryvar(o1) = ordenm_thryvar(o2) nor the only residual alternative can hold, though; (o1,o2)-->Twell_ordered_set.7 ==> arg1_bef_arg2(ordenm_thryvar(o2),ordenm_thryvar(o1)) -- and hence we are led to the desired contradiction. (o2,o1)-->Twell_ordered_set.5a ==> false; Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- Next we show that the enumerator '$ordenm_thryvar$', restricted to an ordinal $v$ -- for which $ordenm_thryvar(v)$ belongs to $s$, enumerates the segment of $s$ consisting -- of all elements which precede the $v$-th: -- ---------------------------------------------------------------------------------------------- -- Theorem well_ordered_set.6: (Ord(V) & (ordenm_thryvar(V) /= s)) ¥imp ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} = {ordenm_thryvar(x): x in V}). Proof: Suppose_not(o) ==> (Ord(o) & (ordenm_thryvar(o) /= s) & ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(o))} /= {ordenm_thryvar(u): u in o})) -- -- Proceed by contradiction, and use transfinite induction to find the least ordinal $o$ -- for which our assertion is false. -- (s,o)-->Twell_ordered_set.6a ==> not({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(o))} incs {ordenm_thryvar(u): u in o}) APPLY(mt1_thryvar:o1) transfinite_induction(n->o,P(x)->(Ord(x) & (ordenm_thryvar(x) /= s) & (not({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(x))} incs {ordenm_thryvar(u): u in x})))) ==> Stat1: (FORALL x | Ord(o1) & (ordenm_thryvar(o1) /= s) & (not({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(o1))} incs {ordenm_thryvar(u): u in o1})) & ((x in o1) ¥imp (not(Ord(x) & (ordenm_thryvar(x) /= s) & (not({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(x))} incs {ordenm_thryvar(u): u in x})))))) 0-->Stat1 ==> Ord(o1) & (ordenm_thryvar(o1) /= s) & Stat2: (not({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(o1))} incs {ordenm_thryvar(u): u in o1})) -- -- Then since $ordenm_thryvar(o1)$ belongs to $s$, the range of $ordenm_thryvar$ on $o1$ is a proper subset of $s$; -- and then by definition $ordenm_thryvar(o1)$ must be the least element of $s$ not in this range. -- (s,o1)-->Twell_ordered_set.2 ==> (not(s ¥incin {ordenm_thryvar(y): y in o1})) (s,o1)-->Twell_ordered_set.1 ==> (ordenm_thryvar(o1) in (s - {ordenm_thryvar(y): y in o1})) & Stat3: (FORALL y in (s - {ordenm_thryvar(y): y in o1}) | not(arg1_bef_arg2(y,ordenm_thryvar(o1)))) -- -- First suppose that there is an $o2 in o1$ such that $ordenm_thryvar(o2)$ does not precede $ordenm_thryvar(o1)$. -- Then plainly $o2$ is an ordinal and a proper subset of $o1$. -- c-->Stat2 ==> Stat4: (c in {ordenm_thryvar(o2): o2 in o1}) & Stat5: (c notin {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(o1))}) o2-->Stat4 ==> (c = ordenm_thryvar(o2)) & (o2 in o1) (o1,o2)-->T12 ==> Ord(o2) (o1,o2)-->T13 ==> o2 ¥incin o1 -- -- Then it follows, since the range of $ordenm_thryvar$ on $o1$ is a proper subset of $s$, -- that if we remove all images of elements of $o2$ from $s$, a nonempty set $r$ will remain. -- Then the image of $u$ will be the least elements of $r$. -- By its minimality, the image of $o1$ must precede the image of $u$, -- which leads to a contradiction. -- Set_monot ==> {ordenm_thryvar(y): y in o1} incs {ordenm_thryvar(y): y in o2} ELEM ==> (not(s ¥incin {ordenm_thryvar(y): y in o1})) & ((s - {ordenm_thryvar(y): y in o2}) /= 0) o2-->Twell_ordered_set.8a ==> ordenm_thryvar(o2) = Minrel2_thryvar(s - {ordenm_thryvar(y): y in o2}) (s,o2)-->Twell_ordered_set.1 ==> ordenm_thryvar(o2) in s (ordenm_thryvar(o2))-->Stat5 ==> not(arg1_bef_arg2(ordenm_thryvar(o2),ordenm_thryvar(o1))) -- -- On the other hand, if all images of elements of $o1$ precede the image of $o1$, -- our initial assumption implies that some predecessor $b$ of the image of $o1$ in $s$ -- is not the image of an element of $o1$. -- (o2,o1)-->Twell_ordered_set.5 ==> false; Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- Our next theorem combines the preceding results to prove that when the image of an -- ordinal under the enumerator differs from (and hence belongs to) $s$, the restriction $g$ of -- 'ordenm_thryvar' to $v$ is a 1-1 map whose range consists of all predecessors in $s$ of the image of $v$. -- ---------------------------------------------------------------------------------------------- -- Theorem well_ordered_set.9: (Ord(V) & (ordenm_thryvar(V) /= s)) ¥imp ( one_1_map({[x,ordenm_thryvar(x)]: x in V}) & (domain({[x,ordenm_thryvar(x)]: x in V}) = V) & (range({[x,ordenm_thryvar(x)]: x in V}) = {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))}) & ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} = {ordenm_thryvar(x): x in V})). Proof: -- -- For consider a counterexample $v$. Using '$fcn_symbol$', we see that -- $g = {[x,ordenm_thryvar(x)]: x in v}$ is single-valued and has domain $v$. Moreover, if $g$ is not 1-1, -- there are distinct elements $x$, $y$ of $v$ such that $ordenm_thryvar(x) = ordenm_thryvar(y)$. -- Suppose_not(v) ==> Ord(v) & (ordenm_thryvar(v) /= s) & (not(one_1_map({[x,ordenm_thryvar(x)]: x in v}) & (domain({[x,ordenm_thryvar(x)]: x in v}) = v) & (range({[x,ordenm_thryvar(x)]: x in v}) = {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(v))}) & ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(v))} = {ordenm_thryvar(x): x in v}))) Loc_def ==> g = {[x,ordenm_thryvar(x)]: x in v} APPLY(x9_thryvar:x,y9_thryvar:y) fcn_symbol(f(x)->ordenm_thryvar(x),g->g,s->v) ==> Svm(g) & (range(g) = {ordenm_thryvar(x): x in v}) & (domain(g) = v) & (((x in v) & (y in v) & (ordenm_thryvar(x) = ordenm_thryvar(y)) & (x /= y)) or one_1_map(g)) EQUAL ==> (range({[x,ordenm_thryvar(x)]: x in v}) = {ordenm_thryvar(x): x in v}) & (domain({[x,ordenm_thryvar(x)]: x in v}) = v) -- -- But the final conjunct in this last formula leads to the following contradiction: -- since $x$ and $y$ belong to the ordinal $v$ they are ordinals included in $v$. -- But since $ordenm_thryvar(v) /= s$, Theorem well_ordered_set.2 tells us that -- $s$ is not included in ${ordenm_thryvar(u): u in v}$. -- Suppose ==> (x in v) & (y in v) & (ordenm_thryvar(x) = ordenm_thryvar(y)) & (x /= y) (v,x)-->T12 ==> Ord(x) (v,y)-->T12 ==> Ord(y) (v,x)-->T13 ==> x ¥incin v (v,y)-->T13 ==> y ¥incin v (s,v)-->Twell_ordered_set.2 ==> not(s ¥incin {ordenm_thryvar(u): u in v}) -- -- It follows that the images under $g$ of $x$ and $y$ both belong to $s$, -- and then by well_ordered_set.7 they are -- the same. This contradiction shows that $g$ is one-one. -- Set_monot ==> {ordenm_thryvar(u): u in v} incs {ordenm_thryvar(u): u in x} Set_monot ==> {ordenm_thryvar(u): u in v} incs {ordenm_thryvar(u): u in y} ELEM ==> (not (s ¥incin {ordenm_thryvar(u): u in x})) & (not (s ¥incin {ordenm_thryvar(u): u in y})) (s,x)-->Twell_ordered_set.2 ==> ordenm_thryvar(x) /= s (s,y)-->Twell_ordered_set.2 ==> ordenm_thryvar(y) /= s (x,y)-->Twell_ordered_set.7 ==> false; Discharge ==> one_1_map(g) EQUAL ==> one_1_map({[x,ordenm_thryvar(x)]: x in v}) -- -- We still must prove that $g$ has the stated range, -- but this is immediate from Theorem well_ordered_set.6, -- completing the proof of the present theorem. -- v-->Twell_ordered_set.6 ==> false; Discharge ==> QED -- -- ---------------------------------------------------------------------------------------------- -- ---------------------------------------------------------------------------------------------- -- -- The results just proved can be summarized as follows: -- ENTER_THEORY Set_theory -- --DISPLAY well_ordered_set -- --THEORY well_ordered_set(s,arg1_bef_arg2(y,x)); -- (FORALL x in s | (not arg1_bef_arg2(x,x))) & -- (FORALL x in s, y in s, z in s | ((arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) ¥imp arg1_bef_arg2(x,z))) & -- (FORALL t ¥incin s | ((t /= 0) ¥imp (EXISTS x in t, y in t | arg1_bef_arg2(x,y) or x = y))) --==>(ordenm_thryvar) -- (FORALL x in s, y in s | (arg1_bef_arg2(x,y) or arg1_bef_arg2(y,x) or x = y)) -- (s ¥incin {ordenm_thryvar(y): y in X}) ¥eq (ordenm_thryvar(X) = s) -- (ordenm_thryvar(X) /= s) ¥imp (ordenm_thryvar(X) in s) -- [ny well-ordering is isomorphic to an ordinal enumeration] -- (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s)) ¥imp (arg1_bef_arg2(ordenm_thryvar(U),ordenm_thryvar(V)) ¥eq (U in V)) -- (Ord(V) & (ordenm_thryvar(V) /= s)) ¥imp ({u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} = {ordenm_thryvar(x): x in V}) -- (Ord(U) & Ord(V) & (ordenm_thryvar(U) /= s) & (ordenm_thryvar(V) /= s) & (U /= V)) ¥imp (ordenm_thryvar(U) /= ordenm_thryvar(V)) -- (EXISTS o | (Ord(o) & (s = {ordenm_thryvar(x): x in o}) -- & (FORALL x in o | (ordenm_thryvar(x) /= s)) & one_1_map({[x,ordenm_thryvar(x)]: x in o}))) -- (Ord(V) & (ordenm_thryvar(V) /= s)) ¥imp -- ( one_1_map({[x,ordenm_thryvar(x)]: x in V}) -- & (domain({[x,ordenm_thryvar(x)]: x in V}) = V) -- & (range({[x,ordenm_thryvar(x)]: x in V}) = {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))}) -- & {u: u in s | arg1_bef_arg2(u,ordenm_thryvar(V))} = {ordenm_thryvar(x): x in V}) --END well_ordered_set; -- -- -- THEORY inh_well_founded_set(s,arg1_bef_arg2(Y,X),sp,displace(X)) (FORALL t | ((t ¥incin s) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | (not arg1_bef_arg2(v,w))))) (FORALL x | (x in sp) ¥imp (displace(x) in s)) END inh_well_founded_set; -- ENTER_THEORY inh_well_founded_set -- Theorem inh_well_founded_set1: ((T ¥incin sp) & (T /= 0)) ¥imp (EXISTS w in T | (FORALL v in T | (not arg1_bef_arg2(displace(v),displace(w))))). Proof: Suppose_not(t0) ==> (t0 ¥incin sp) & (t0 /= 0) & Stat1: (not(EXISTS w in t0 | (FORALL v in t0 | (not arg1_bef_arg2(displace(v),displace(w)))))) Suppose ==> Stat2: {displace(x): x in t0} ¥nincin s c-->Stat2(Stat2*) ==> Stat3: (c in {displace(x): x in t0}) & (c notin s) cp-->Stat3(*) ==> (c = displace(cp)) & (cp in sp) Assump ==> Stat4: (FORALL x | (x in sp) ¥imp (displace(x) in s)) cp-->Stat4(Stat3*) ==> false; Discharge ==> AUTO Suppose ==> Stat5: {displace(x): x in t0} = 0 (Stat5*)ELEM ==> Stat6: displace(arb(t0)) notin {displace(x): x in t0} (arb(t0))-->Stat6(Stat6*) ==> arb(t0) notin t0 Discharge ==> AUTO Assump ==> Stat7: (FORALL t | ((t ¥incin s) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | (not arg1_bef_arg2(v,w))))) {displace(x): x in t0}-->Stat7(*) ==> Stat8: (EXISTS w in {displace(x): x in t0} | (FORALL v in {displace(x): x in t0} | (not arg1_bef_arg2(v,w)))) w-->Stat8(Stat8*) ==> Stat9: (w in {displace(x): x in t0}) & Stat10: (FORALL v in {displace(x): x in t0} | (not arg1_bef_arg2(v,w))) w0-->Stat9(Stat9*) ==> (w0 in t0) & (w = displace(w0)) w0-->Stat1(Stat9*) ==> Stat11: not(FORALL v in t0 | (not arg1_bef_arg2(displace(v),displace(w0)))) v0-->Stat11(Stat11*) ==> (v0 in t0) & arg1_bef_arg2(displace(v0),displace(w0)) (displace(v0))-->Stat10(Stat11*) ==> (displace(v0) in {displace(x): x in t0}) ¥imp (not arg1_bef_arg2(displace(v0),w)) EQUAL(Stat9) ==> Stat12: ((displace(v0) in {displace(x): x in t0}) ¥imp (not arg1_bef_arg2(displace(v0),displace(w0)))) (Stat11*)ELEM ==> Stat13: displace(v0) notin {displace(x): x in t0} v0-->Stat13(Stat11*) ==> false Discharge ==> QED -- -- The results just proved can be summarized as follows: -- ENTER_THEORY Set_theory -- --DISPLAY inh_well_founded_set -- --THEORY inh_well_founded_set(s,arg1_bef_arg2(Y,X),sp,displace(X)) -- (FORALL t | ((t ¥incin s) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | (not arg1_bef_arg2(v,w))))) -- (FORALL x | (x in sp) ¥imp (displace(x) in s)) --==> -- (FORALL t | ((t ¥incin sp) & (t /= 0)) ¥imp (EXISTS w in t | (FORALL v in t | (not arg1_bef_arg2_thryvar(displace(v),displace(w)))))) --END inh_well_founded_set; -- -- -- Next, in more direct preparation for the proof of the cardinal product theorem at which we aim, -- we prove various properties of a modified lexicographic ordering of the Cartesian product set $s$ of -- two ordinals. Our key goal is to show that s is well-ordered by this ordering. -- THEORY product_order(o1,o2) Ord(o1) & Ord(o2) END product_order; -- ENTER_THEORY product_order -- -- The following definition introduces the ordering that we will use: one pair $[x,y]$ of ordinals -- is less than another pair $[u,v]$ iff either the maximum of $x$ and $y$ is less than the maximum of $u, v$, -- or if these maxima are equal and $x$ is less than $u$, or if the maxima are equal, -- $x = u$, and $y$ is less than $v$. -- Def product_order_c: [Lexicographic ordering of a Cartesian product set] Ord1p2_thryvar(X,Y) := ((car(X) + cdr(X) in car(Y) + cdr(Y)) or ((car(X) + cdr(X) = car(Y) + cdr(Y)) & (car(X) in car(Y))) or ((car(X) + cdr(X) = car(Y) + cdr(Y)) & (car(X) = car(Y)) & (cdr(X) in cdr(Y)))) -- -- We first note, in the three following Lemmas, that for all pairs $[x,y]$ in the Cartesian -- product of our two ordinals, $x$, $y$, the minimum and the maximum of $x$ and $y$ are ordinals. -- Our first results are trivial consequences of the fact that any member of an ordinal is also an ordinal. -- Theorem product_order_1: [The first component of any member of a Cartesian product of ordinals is an ordinal] (X in o1 ¥PROD o2) ¥imp Ord(car(X)). Proof: Suppose_not(x) ==> (x in o1 ¥PROD o2) & (not Ord(car(x))) Use_def(¥PROD) ==> Stat1: x in {[u,v]: u in o1, v in o2} (a,b)-->Stat1 ==> (x = [a,b]) & (a in o1) & (b in o2) Assump ==> Ord(o1) & Ord(o2) (o1,a)-->T12 ==> Ord(a) ELEM ==> car(x) = a EQUAL ==> false; Discharge ==> QED -- Theorem product_order_2: [The second component of any member of a Cartesian product of ordinals is an ordinal] (X in o1 ¥PROD o2) ¥imp Ord(cdr(X)). Proof: Suppose_not(x) ==> (x in o1 ¥PROD o2) & (not Ord(cdr(x))) Use_def(¥PROD) ==> Stat1: x in {[u,v]: u in o1, v in o2} (a,b)-->Stat1 ==> (x = [a,b]) & (a in o1) & (b in o2) Assump ==> Ord(o1) & Ord(o2) (o2,b)-->T12 ==> Ord(b) ELEM ==> cdr(x) = b EQUAL ==> false; Discharge ==> QED -- -- Now we note a trivial consequence of the fact that the maximum of two ordinals is an ordinal. -- Theorem product_order_3: [The maximum of the components of any member of a Cartesian product of ordinals is an ordinal] (X in o1 ¥PROD o2) ¥imp Ord(car(X) + cdr(X)). Proof: Suppose_not(x) ==> (x in o1 ¥PROD o2) & (not Ord(car(x) + cdr(x))) Use_def(¥PROD) ==> Stat1: x in {[u,v]: u in o1, v in o2} (a,b)-->Stat1 ==> (x = [a,b]) & (a in o1) & (b in o2) Assump ==> Ord(o1) & Ord(o2) (o1,a)-->T12 ==> Ord(a) (o2,b)-->T12 ==> Ord(b) (a,b)-->T30 ==> Ord(a + b) ELEM ==> car(x) + cdr(x) = a + b EQUAL ==> false; Discharge ==> QED -- -- Next we show that the binary relationship $Ord1p2_thryvar$ defined above has the properties -- required of a linear ordering. The following theorem asserts that any two distinct elements -- of our Cartesian product set are related by this ordering, and product_order_5 tells us -- that this ordering is transitive. -- Theorem product_order_4: ((X in o1 ¥PROD o2) & (Y in o1 ¥PROD o2)) ¥imp ((Ord1p2_thryvar(X,Y) or Ord1p2_thryvar(Y,X) or X = Y) & (not Ord1p2_thryvar(X,X))). Proof: Suppose_not(x,y) ==> Stat1: (x in o1 ¥PROD o2) & (y in o1 ¥PROD o2) & (not(Ord1p2_thryvar(x,y) or Ord1p2_thryvar(y,x) or x = y) or Ord1p2_thryvar(x,x)) -- -- For let $x$, $o1$, $o2$, $y$ be a counterexample to our assertion, and use the definitions of the -- ordering operations involved to translate the negative of our assertion into the -- following statements: -- Use_def(Ord1p2_thryvar)(Stat2*) ==> Stat2: Ord1p2_thryvar(x,x) ¥eq ((car(x) + cdr(x) in car(x) + cdr(x)) or ((car(x) + cdr(x) = car(y) + cdr(x)) & (car(x) in car(x))) or ((car(x) + cdr(x) = car(x) + cdr(x)) & (car(x) = car(x)) & (cdr(x) in cdr(x)))) Use_def(Ord1p2_thryvar)(Stat3*) ==> Stat3: Ord1p2_thryvar(x,y) ¥eq ((car(x) + cdr(x) in car(y) + cdr(y)) or ((car(x) + cdr(x) = car(y) + cdr(y)) & (car(x) in car(y))) or ((car(x) + cdr(x) = car(y) + cdr(y)) & (car(x) = car(y)) & (cdr(x) in cdr(y)))) Use_def(Ord1p2_thryvar)(Stat4*) ==> Stat4: Ord1p2_thryvar(y,x) ¥eq ((car(y) + cdr(y) in car(x) + cdr(x)) or ((car(y) + cdr(y) = car(x) + cdr(x)) & (car(y) in car(x))) or ((car(y) + cdr(y) = car(x) + cdr(x)) & (car(y) = car(x)) & (cdr(y) in cdr(x)))) -- -- Use the fact that $x$ and $y$ are members of the Cartesian product set o1 ¥PROD o2 to translate -- the first of these statements into assertions about the components $a$, $b$, $c$, $d$ of $x$ and $y$, -- as follows: -- Use_def(¥PROD)(Stat1,Stat1*) ==> Stat5: (x in {[x1,y1]: x1 in o1, y1 in o2}) & (y in {[x1,y1]: x1 in o1, y1 in o2}) (a,b,c,d)-->Stat5(Stat5*) ==> Stat6: (x = [a,b]) & (a in o1) & (b in o2) & (y = [c,d]) & (c in o1) & (d in o2) (Stat6)ELEM ==> Stat7: (car(x) = a) & (cdr(x) = b) (Stat6,Stat6)ELEM ==> Stat8: (car(y) = c) & (cdr(y) = d) (Stat7,Stat2*)ELEM ==> Stat9: Ord1p2_thryvar(x,x) ¥eq ((a + b in a + b) or ((a + b = a + b) & (a in a)) or ((a + b = a + b) & (a = a) & (b in b))) -- -- Since the right-hand side of the resulting assertion is obviously impossible, -- it follows that $Ord1p2_thryvar(x,x)$ must be false, so that we need only consider the -- first clause of our assertion. -- (Stat9*)ELEM ==> Stat10: not Ord1p2_thryvar(x,x) (Stat10,Stat1*)ELEM ==> Stat11: not(Ord1p2_thryvar(x,y) or Ord1p2_thryvar(y,x) or x = y) -- -- This translates easily into the statement about $a$, $b$, $c$, and $d$ seen below. -- (Stat7,Stat8,Stat3*)ELEM ==> Stat12: Ord1p2_thryvar(x,y) ¥eq ((a + b in c + d) or ((a + b = c + d) & (a in c)) or ((a + b = c + d) & (a = c) & (b in d))) (Stat7,Stat8,Stat4*)ELEM ==> Stat13: Ord1p2_thryvar(y,x) ¥eq ((c + d in a + b) or ((c + d = a + b) & (c in a)) or ((c + d = a + b) & (c = a) & (d in b))) (Stat11,Stat12,Stat13,Stat6*)ELEM ==> Stat14: not(((a + b in c + d) or ((a + b = c + d) & (a in c)) or ((a + b = c + d) & (a = c) & (b in d))) or ((c + d in a + b) or ((c + d = a + b) & (c in a)) or ((c + d = a + b) & (c = a) & (d in b))) or ([a,b] = [c,d])) -- -- But now, since $a$, $b$, $c$, and $d$ are all ordinals (so that $a + b$ and $c + d$ are ordinals also), -- it follows that $a + b = c + d$, so that statement 50 reduces to the simpler form seen as statement 53 below. -- Assump ==> Stat15: Ord(o1) & Ord(o2) (o1,a)-->T12(Stat15,Stat6*) ==> Stat16: Ord(a) (o2,b)-->T12(Stat15,Stat6*) ==> Stat17: Ord(b) (a,b)-->T30(Stat16,Stat17*) ==> Stat18: Ord(a + b) (o1,c)-->T12(Stat15,Stat6*) ==> Stat19: Ord(c) (o2,d)-->T12(Stat15,Stat6*) ==> Stat20: Ord(d) (c,d)-->T30(Stat19,Stat20*) ==> Stat21: Ord(c + d) (Stat14,Stat14*)ELEM ==> Stat22: not((a + b in c + d) or (c + d in a + b)) (a + b,c + d)-->T31(Stat22,Stat18,Stat21) ==> Stat23: a + b = c + d (Stat14,Stat23*)ELEM ==> Stat24: not((a in c) or ((a = c) & (b in d)) or (c in a) or ((c = a) & (d in b)) or ([a,b] = [c,d])) -- -- Repeating this same argument for the pair $a$, $c$ of ordinals, we find that $a = c$, -- so that statement 53 reduces to statement 55 as seen below. -- (a,c)-->T31(Stat24,Stat16,Stat19*) ==> Stat25: a = c (Stat25,Stat24*)ELEM ==> Stat26: not((b in d) or (d in b) or ([a,b] = [c,d])) -- -- Repeating this same argument once more for $b$, $d$ , we find that $b = d$, -- which implies $[a,b] = [c,d]$, and so proves our theorem. -- (b,d)-->T31(Stat26,Stat17,Stat20*) ==> Stat27: b = d (Stat25,Stat26,Stat27)Discharge ==> QED -- -- Next we show that the binary relationship Ord1p2_thryvar has the transitivity property required of an ordering. -- Theorem product_order_5: ((X in o1 ¥PROD o2) & (Y in o1 ¥PROD o2) & (Z in o1 ¥PROD o2) & Ord1p2_thryvar(X,Y) & Ord1p2_thryvar(Y,Z)) ¥imp Ord1p2_thryvar(X,Z). Proof: Suppose_not(x,y,wz) ==> Stat1: (x in (o1 ¥PROD o2)) & (y in (o1 ¥PROD o2)) & (wz in (o1 ¥PROD o2)) & Ord1p2_thryvar(x,y) & Ord1p2_thryvar(y,wz) & (not(Ord1p2_thryvar(x,wz))) -- -- For let $x = [a,b]$, $y = [c,d]$, $wz = [e,f]$ be a counterexample. Since all the quantities $a,b,c,d,e,f$, -- and also $a + b$, $c + d$, $e + f$ are ordinals, they are all comparable both by membership and inclusion. -- Since the ordering of pairs like [a.b] by Ord1p2_thryvar is first of all by membership, and hence inclusion, of a + b, -- We must have $(a + b) ¥incin (c + d)$, $(c + d) ¥incin (e + f)$, but since $Ord1p2_thryvar(x,z)$ is false, -- $(e + f)$ cannot be a proper superset of $(a + b)$; hence all the sets $(a + b)$, $(c + d)$, $(e + f)$ -- must be equal. -- (x,o1,o2,wz)-->Tproduct_order_4 ==> Ord1p2_thryvar(wz,x) or wz = x Use_def(Ord1p2_thryvar)(Stat1,Stat1*) ==> Stat2: ((car(x) + cdr(x) in car(y) + cdr(y)) or ((car(x) + cdr(x) = car(y) + cdr(y)) & (car(x) in car(y))) or ((car(x) + cdr(x) = car(y) + cdr(y)) & (car(x) = car(y)) & (cdr(x) in cdr(y)))) Use_def(Ord1p2_thryvar)(Stat1,Stat1*) ==> Stat3: ((car(y) + cdr(y) in car(wz) + cdr(wz)) or ((car(y) + cdr(y) = car(wz) + cdr(wz)) & (car(y) in car(wz))) or ((car(y) + cdr(y) = car(wz) + cdr(wz)) & (car(y) = car(wz)) & (cdr(y) in cdr(wz)))) Use_def(Ord1p2_thryvar)(Stat1,Stat1*) ==> Stat4: ((car(wz) + cdr(wz) in car(x) + cdr(x)) or ((car(wz) + cdr(wz) = car(x) + cdr(x)) & (car(wz) in car(x))) or ((car(wz) + cdr(wz) = car(x) + cdr(x)) & (car(wz) = car(x)) & (cdr(wz) in cdr(x)))) or wz = x Use_def(¥PROD)(Stat1,Stat1*) ==> Stat5: (x in {[x1,y1]: x1 in o1, y1 in o2}) & (y in {[x1,y1]: x1 in o1, y1 in o2}) & (wz in {[x,y]: x in o1, y in o2}) --?? (a,b,c,d,e,f)-->Stat5(Stat5*) ==> -- Stat6: (x = [a,b]) & (a in o1) & (b in o2) & (y = [c,d]) & (c in o1) & (d in o2) & -- (wz = [e,f]) & (e in o1) & (f in o2) (a,b,c,d,e,f)-->Stat5 ==> Stat6: (x = [a,b]) & (a in o1) & (b in o2) & (y = [c,d]) & (c in o1) & (d in o2) & (wz = [e,f]) & (e in o1) & (f in o2) ELEM ==> (car([a,b]) = a) & (cdr([a,b]) = b) & (car([c,d]) = c) & (cdr([c,d]) = d) & (car([e,f]) = e) & (cdr([e,f]) = f) EQUAL(Stat6) ==> Stat7: (car(x) = a) & (cdr(x) = b) & (car(y) = c) & (cdr(y) = d) & (car(wz) = e) & (cdr(wz) = f) EQUAL(Stat7,Stat2) ==> Stat8: ((a + b in c + d) or ((a + b = c + d) & (a in c)) or ((a + b = c + d) & ((a = c) & (b in d)))) EQUAL(Stat7,Stat3) ==> Stat9: ((c + d in e + f) or ((c + d = e + f) & (c in e)) or ((c + d = e + f) & (c = e) & (d in f))) EQUAL(Stat6,Stat7,Stat4) ==> Stat10: ((e + f in a + b) or ((e + f = a + b) & (e in a)) or ((e + f = a + b) & (e = a) & (f in b))) or [e,f] = [a,b] (Stat10)ELEM ==> Stat11: (e + f in a + b) or (e + f = a + b) Assump ==> Stat12: Ord(o1) & Ord(o2) (o1,a)-->T12(Stat12,Stat6*) ==> Ord(a) (o2,b)-->T12(Stat12,Stat6*) ==> Ord(b) (o1,c)-->T12(Stat12,Stat6*) ==> Ord(c) (o2,d)-->T12(Stat12,Stat6*) ==> Ord(d) (o1,e)-->T12(Stat12,Stat6*) ==> Ord(e) (o2,f)-->T12(Stat12,Stat6*) ==> Ord(f) (Stat12*)ELEM ==> Stat13: Ord(a) & Ord(b) & Ord(c) & Ord(d) & Ord(e) & Ord(f) (a,b)-->T29(Stat13*) ==> (a ¥incin b or b ¥incin a) (c,d)-->T29(Stat13*) ==> (c ¥incin d or d ¥incin c) (e,f)-->T29(Stat13*) ==> (e ¥incin f or f ¥incin e) (a,e)-->T31(Stat13*) ==> (a in e or e in a or a = e) (b,f)-->T31(Stat13*) ==> (b in f or f in b or b = f) (a,b)-->T30(Stat13*) ==> Stat14: Ord(a + b) (c,d)-->T30(Stat13*) ==> Ord(c + d) (e,f)-->T30(Stat13*) ==> Ord(e + f) (Stat14*)ELEM ==> Stat15: Ord(a + b) & Ord(c + d) & Ord(e + f) (c + d,a + b)-->T34(Stat13*) ==> Stat16: (a + b in c + d) ¥imp ((a + b) ¥incin (c + d)) (e + f,c + d)-->T34(Stat13*) ==> Stat17: (c + d in e + f) ¥imp ((c + d) ¥incin (e + f)) (a + b,e + f)-->T34(Stat13*) ==> Stat18: (e + f in a + b) ¥imp ((e + f) ¥incin (a + b)) -- -- The known product-order relationships between $[a,b]$, $[c,d]$, and $[e,f]$ translate into -- the following membership and equality statements. -- (Stat10)ELEM ==> Stat19: (e + f in a + b) or ((e + f = a + b) & (e in a)) or ((e + f = a + b) & (e = a) & (f in b)) or ((e = a) & (f = b)) -- -- The known ordering of these same pairs implies the following inclusions, from which the equality of all -- three union sets follows. This in turn implies the membership relations, and hence the inclusions, seen below. -- (Stat8,Stat16*)ELEM ==> Stat20: ((a + b) ¥incin (c + d)) (Stat9,Stat17*)ELEM ==> Stat21: ((c + d) ¥incin (e + f)) (Stat11,Stat18*)ELEM ==> Stat22: ((e + f) ¥incin (a + b)) (Stat22,Stat20,Stat21,Stat8,Stat9*)ELEM ==> Stat23: (a + b = c + d) & (c + d = e + f) & ((a in c) or ((a = c) & (b in d))) & ((c in e) or ((c = e) & (d in f))) (c,a)-->T34(Stat13,Stat23*) ==> Stat24: c incs a (e,c)-->T34(Stat13,Stat23*) ==> Stat25: e incs c (a,e)-->T34(Stat19,Stat13,Stat23*) ==> Stat26: a incs e -- -- But then clearly the sets $a$, $c$, and $e$ are all equal, so we must have $(b in d) & (d in f) & (b notin f)$, -- which contradicts the fact that, for ordinals, the membership relationship is transitive. -- (Stat19,Stat23,Stat24,Stat25,Stat26*)ELEM ==> Stat27: (a = c) & (c = e) & (b in d) & (d in f) & (b notin f) (f,d)-->T34(Stat19*) ==> f incs d (Stat27*)Discharge ==> QED -- -- Our next theorem states that $Ord1p2_thryvar$ has the well-ordering property: -- any subset of our Cartesian product set contains an element minimal in the ordering $Ord1p2_thryvar$. -- Theorem product_order_6: ((T ¥incin (o1 ¥PROD o2)) & (T /= 0)) ¥imp (EXISTS x in T | (FORALL y in t | (Ord1p2_thryvar(x,y) or (x = y)))). Proof: Suppose_not(t) ==> Stat1: (t ¥incin (o1 ¥PROD o2)) & (t /= 0) & Stat2: (not(EXISTS x in t | (FORALL y in t | (Ord1p2_thryvar(x,y) or (x = y))))) -- -- For in the contrary case some Cartesian product $o1 ¥PROD o2$ of two ordinals has a subset $t$ having no minimal element. -- Plainly, $car(x) + cdr(x)$ is an ordinal for every $x$ in $t$. Thus the set $rel_1$ of elements of $t$ on which -- $car(x) + cdr(x)$ takes on its minimum value is nonempty. -- Assump ==> Ord(o1) & Ord(o2) Suppose ==> Stat3: not(FORALL x in t | (Ord(car(x) + cdr(x)))) a-->Stat3 ==> (a in t) & (not Ord(car(a) + cdr(a))) ELEM ==> a in (o1 ¥PROD o2) Use_def(¥PROD) ==> Stat4: a in {[x,y]: x in o1, y in o2} (b,c)-->Stat4 ==> (a = [b,c]) & (b in o1) & (c in o2) ELEM ==> car(a) + cdr(a) = b + c EQUAL ==> not Ord(b + c) (o1,b)-->T12 ==> Ord(b) (o2,c)-->T12 ==> Ord(c) (b,c)-->T30 ==> false; Discharge ==> (FORALL x in t | Ord(car(x) + cdr(x))) APPLY(rng_thryvar:rel_1) ordval_fcn(s->t,f(x)->car(x) + cdr(x)) ==> Stat5: (rel_1 /= 0) & (rel_1 ¥incin t) & (rel_1 = {x: x in t | car(x) + cdr(x) = arb({car(y) + cdr(y): y in t})}) & Stat6: (FORALL x in rel_1, y in t | (car(x) + cdr(x)) ¥incin (car(y) + cdr(y))) -- -- Since the function $x->car(x)$ is also ordinal-valued, $rel_1$ admits a nonempty subset -- $rel_2$ on which this function takes on its minimum value. -- Suppose ==> Stat7: not(FORALL x in rel_1 | Ord(car(x))) d-->Stat7 ==> (d in rel_1) & (not Ord(car(d))) ELEM ==> d in (o1 ¥PROD o2) Use_def(¥PROD) ==> Stat8: d in {[x,y]: x in o1, y in o2} (b2,c2)-->Stat8 ==> (d = [b2,c2]) & (b2 in o1) ELEM ==> car(d) = b2 EQUAL ==> not Ord(b2) Assump ==> Ord(o1) & Ord(o2) (o1,b2)-->T12 ==> false; Discharge ==> (FORALL x in rel_1 | Ord(car(x))) APPLY(rng_thryvar:rel_2) ordval_fcn(s->rel_1,f(x)->car(x)) ==> Stat9: (rel_2 /= 0) & (rel_2 ¥incin rel_1) & (rel_2 = {x: x in rel_1 | car(x) = arb({car(u): u in rel_1})}) & Stat10: (FORALL x in rel_2, y in rel_1 | car(x) ¥incin car(y)) -- -- Similarly, since the function $x->cdr(x)$ is also ordinal-valued, $rel_2$ admits -- a nonempty subset $rel_3$ on which this function takes on its minimum value. -- Suppose ==> Stat11: not(FORALL x in rel_2 | Ord(cdr(x))) e-->Stat11 ==> (e in rel_2) & (not Ord(cdr(e))) ELEM ==> e in (o1 ¥PROD o2) Use_def(¥PROD) ==> Stat12: e in {[x,y]: x in o1, y in o2} (b3,c3)-->Stat12 ==> (e = [b3,c3]) & (c3 in o2) ELEM ==> cdr(e) = c3 EQUAL ==> not Ord(c3) (o2,c3)-->T12 ==> false; Discharge ==> (FORALL x in rel_2 | Ord(cdr(x))) APPLY(rng_thryvar:rel_3) ordval_fcn(s->rel_2,f(x)->cdr(x)) ==> Stat13: (rel_3 /= 0) & (rel_3 ¥incin rel_2) & Stat14: (FORALL x in rel_3, y in rel_2 | cdr(x) ¥incin cdr(y)) -- -- But it is easily seen that any element of the set $rel3$ is minimal over $t$ in the product order $Ord1p2_thryvar$. -- x-->Stat13 ==> Stat15: (x in rel_3) & (x in rel_2) & (x in rel_1) (Stat15,Stat5)ELEM ==> Stat16: x in {u: u in t | car(u) + cdr(u) = arb({car(v) + cdr(v): v in t})} (Stat15,Stat9)ELEM ==> Stat17: x in {v: v in rel_1 | car(v) = arb({car(u): u in rel_1})} x2-->Stat16 ==> Stat18: (x = x2) & (car(x2) + cdr(x2) = arb({car(y) + cdr(y): y in t})) EQUAL ==> Stat19: car(x) + cdr(x) = arb({car(y) + cdr(y): y in t}) x3-->Stat17 ==> Stat20: (x = x3) & (car(x3) = arb({car(y): y in rel_1})) EQUAL ==> Stat21: car(x) = arb({car(y): y in rel_1}) Suppose ==> Stat22: not(FORALL y in t | (Ord1p2_thryvar(x,y) or (x = y))) y-->Stat22 ==> Stat23: (y in t) & (not(Ord1p2_thryvar(x,y) or x = y)) Use_def(Ord1p2_thryvar) ==> Stat24: not(car(x) + cdr(x) in car(y) + cdr(y) or ((car(x) + cdr(x) = car(y) + cdr(y)) & (car(x) in car(y))) or ((car(x) + cdr(x) = car(y) + cdr(y)) & (car(x) = car(y)) & (cdr(x) in cdr(y))) or x = y) (Stat1,Stat23,Stat15,Stat5)ELEM ==> (x in (o1 ¥PROD o2)) & (y in (o1 ¥PROD o2)) Use_def(¥PROD) ==> Stat25: (x in {[u,v]: u in o1, v in o2}) & (y in {[u,v]: u in o1, v in o2}) (u1,v1,u2,v2)-->Stat25 ==> Stat26: (x = [u1,v1]) & (u1 in o1) & (v1 in o2) & (y = [u2,v2]) & (u2 in o1) & (v2 in o2) (Stat26)ELEM ==> Stat27: (car(x) = u1) (Stat26,Stat26)ELEM ==> Stat28: (cdr(x) = v1) (Stat26,Stat26)ELEM ==> Stat29: (car(y) = u2) (Stat26,Stat26)ELEM ==> Stat30: (cdr(y) = v2) (Stat26*)ELEM ==> Stat31: (x = [u1,v1]) & (y = [u2,v2]) EQUAL ==> Stat32: not(u1 + v1 in u2 + v2 or ((u1 + v1 = u2 + v2) & (u1 in u2)) or ((u1 + v1 = u2 + v2) & (u1 = u2) & (v1 in v2)) or [u1,v1] = [u2,v2]) (x,y)-->Stat6 ==> (car(x) + cdr(x)) ¥incin (car(y) + cdr(y)) EQUAL ==> Stat33: (u1 + v1) ¥incin (u2 + v2) (Stat32)ELEM ==> Stat34: not(u1 + v1 in u2 + v2) -- -- By Stat25 all of $u1,v1,u2,v2$ are ordinals, and therefore -- $u1 + v1$ and $u2 + v2$ are also ordinals. -- (o1,u1)-->T12 ==> Stat35: Ord(u1) (o2,v1)-->T12 ==> Stat36: Ord(v1) (o1,u2)-->T12 ==> Stat37: Ord(u2) (o2,v2)-->T12 ==> Stat38: Ord(v2) (u1,v1)-->T30 ==> Stat39: Ord(u1 + v1) (u2,v2)-->T30 ==> Stat40: Ord(u2 + v2) -- -- It therefore follows by Stat41 and Stat42 and by Theorem 35 that $(u1 + v1) = (u2 + v2)$, -- so that $y$, like $x$, must be a member of the subset $rel_1$ of $t$. -- (u2 + v2,u1 + v1)-->T35(Stat39,Stat40,Stat34) ==> Stat41: u1 + v1 incs u2 + v2 (Stat41,Stat33)ELEM ==> Stat43: u2 + v2 = u1 + v1 EQUAL(Stat43,Stat27,Stat28,Stat29,Stat30) ==> Stat42: car(y) + cdr(y) = car(x) + cdr(x) Suppose ==> Stat44: y notin rel_1 (Stat5,Stat44)ELEM ==> Stat45: y notin {x: x in t | car(x) + cdr(x) = arb({car(u) + cdr(u): u in t})} y-->Stat45 ==> Stat46: car(y) + cdr(y) /= arb({car(x) + cdr(x): x in t}) (Stat42,Stat46,Stat19)Discharge ==> y in rel_1 (Stat32,Stat43)ELEM ==> Stat47: not((u1 in u2) or ((u1 = u2) & (v1 in v2)) or [u1,v1] = [u2,v2]) (u2,u1)-->T35(Stat47,Stat35,Stat37) ==> Stat48: u1 incs u2 (x,y)-->Stat10 ==> car(x) ¥incin car(y) EQUAL ==> u1 ¥incin u2 (Stat48)ELEM ==> Stat49: u1 = u2 EQUAL(Stat49,Stat27,Stat28,Stat29,Stat30) ==> Stat50: car(y) = car(x) Suppose ==> Stat51: y notin rel_2 EQUAL(Stat51,Stat9) ==> Stat52: y notin {x: x in rel_1 | car(x) = arb({car(u): u in rel_1})} y-->Stat52 ==> Stat53: car(y) /= arb({car(x): x in rel_1}) (Stat21,Stat50,Stat53)Discharge ==> y in rel_2 (x,y)-->Stat14 ==> Stat54: cdr(x) ¥incin cdr(y) EQUAL(Stat54,Stat27,Stat28,Stat29,Stat30) ==> Stat55: v1 ¥incin v2 (Stat49,Stat47)ELEM ==> Stat56: v1 notin v2 (v2,v1)-->T35(Stat56,Stat36,Stat38) ==> Stat57: v1 incs v2 (Stat55,Stat57)ELEM ==> Stat58: v1 = v2 (Stat47,Stat58,Stat49)Discharge ==> Stat59: (FORALL y in t | (Ord1p2_thryvar(x,y) or (x = y))) x-->Stat2(Stat15,Stat13,Stat9,Stat5,Stat59) ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The results just established can be summarized as follows. -- --DISPLAY product_order -- --THEORY product_order(o1,o2) [The product-ordering of two ordinals is a well-ordering] -- Ord(o1) & Ord(o2) --==>(Ord1p2_thryvar) -- (FORALL x in o1 ¥PROD o2 | Ord(car(x))) -- (FORALL x in o1 ¥PROD o2 | Ord(cdr(x))) -- (FORALL x in o1 ¥PROD o2 | Ord(car(x) + cdr(x))) -- Ord1p2_thryvar(X,Y) ¥eq ((car(X) + cdr(X) in car(Y) + cdr(Y)) or -- ((car(X) + cdr(X) = car(Y) + cdr(Y)) & (car(X) in car(Y))) or -- ((car(X) + cdr(X) = car(Y) + cdr(Y)) & (car(X) = car(Y)) & (cdr(X) in cdr(Y)))) -- (FORALL x in o1 ¥PROD o2, y in o1 ¥PROD o2 | -- (Ord1p2_thryvar(x,y) or Ord1p2_thryvar(y,x) or x = y) & (not Ord1p2_thryvar(x,x))) -- (FORALL x in o1 ¥PROD o2, y in o1 ¥PROD o2 | -- (FORALL z in o1 ¥PROD o2 | ((Ord1p2_thryvar(x,y) & (Ord1p2_thryvar(y,z)) ¥imp Ord1p2_thryvar(x,z))))) -- ((T ¥incin (o1 ¥PROD o2)) & (T /= 0)) ¥imp -- (EXISTS x in T, y in t | (Ord1p2_thryvar(x,y) or x = y)) --END product_order; -- -- Next we show that the addition of any single element to an infinite set -- does not change its cardinality. -- Theorem 355: ['One-more' lemma] (not Finite(S)) ¥imp (#S = #(S + {C})). Proof: Suppose_not(s,c) ==> (not Finite(s)) & (#s /= #(s + {c})) -- -- For suppose that $s$, $c$ is a counterexample to our assertion. -- Since $s$ is infinite, it is the single-valued image of a proper subset of itself, whose domain therefore omits -- some element $b$ of $s$. The mapping ${[b,c]}$ defined only on $b$ which maps $b$ to $c$ is plainly single-valued, and since -- $b notin s$, $f + {[b,c]}$ is a single-valued mapping of a subset of $s$ onto $#(s + {c})$. Thus $#domain(f + {[b,c]})$ -- is not greater than $#s$, while $#range(f + {[b,c]})$ is $#(s + {c})$. Hence by Theorem 171 $#(s + {c})$ is no more than $#s$, -- proving our assertion. -- s-->T195 ==> Stat1: (EXISTS f in OM | (Svm(f) & (range(f) = s) & (domain(f) ¥incin s) & (s /= domain(f)))) f-->Stat1 ==> Svm(f) & (range(f) = s) & (domain(f) ¥incin s) & Stat2: (not(s ¥incin domain(f))) b-->Stat2 ==> ({b} ¥incin s) & ({b} * domain(f) = 0) ELEM ==> Svm({[b,c]}) & (range({[b,c]}) = {c}) & (domain({[b,c]}) = {b}) (f,{[b,c]})-->T87 ==> Svm(f + {[b,c]}) (f,{[b,c]})-->T78 ==> domain(f + {[b,c]}) ¥incin s (f,{[b,c]})-->T79 ==> range(f + {[b,c]}) = s + {c} Set_monot ==> Stat3: #domain(f + {[b,c]}) ¥incin #s (f + {[b,c]})-->T171 ==> #range(f + {[b,c]}) ¥incin #domain(f + {[b,c]}) EQUAL ==> Stat4: #(s + {c}) ¥incin #domain(f + {[b,c]}) (Stat3,Stat4)ELEM ==> Stat5: #(s + {c}) ¥incin #s (Stat5*)ELEM ==> s ¥incin (s + {c}) (s,s + {c})-->T170 ==> false; Discharge ==> QED -- -- Using Theorem 355, it is easy to prove inductively that the addition of -- finitely many elements to an infinite set $s$ never changes the cardinality of $s$. -- Theorem 356: ['Few-more' lemma] ((not Finite(S)) & Finite(T)) ¥imp (#S = #(S + T)). Proof: Suppose_not(s,t) ==> (not Finite(s)) & Finite(t) & (#s /= #(s + t)) -- -- For if $s$, $t$ are a counterexample to our assertion, it follows -- by the principle of finite induction proved earlier that there is a smallest -- finite x for which there exists an infinite v for which $#v /= #(v + x)$ -- Suppose ==> Stat1: not (EXISTS u | ((not Finite(u)) & (#u /= #(u + t)))) s-->Stat1 ==> false; Discharge ==> (EXISTS u | ((not Finite(u)) & (#u /= #(u + t)))) APPLY(m1_thryvar:x) finite_induction(n->t,P(x)->(EXISTS u | ((not Finite(u)) & (#u /= #(u + x))))) ==> (x ¥incin t) & Stat2: (EXISTS u | ((not Finite(u)) & (#u /= #(u + x)))) & Stat3: (FORALL y ¥incin x | ((y /= x) ¥imp (not ((EXISTS u | ((not Finite(u)) & (#u /= #(u + y)))))))) v-->Stat2 ==> (not Finite(v)) & (#v /= #(v + x)) -- -- Since x plainly cannot be empty, it must have some element $c$. -- Then $#(v + (x - {c})) = #v$ by the minimality of $x$, and so $#(v + (x - {c})) + {c} = #v$ -- by the preceding theorem, completing our proof. -- Suppose ==> x = 0 TELEM ==> v = v + 0 EQUAL ==> false; Discharge ==> Stat4: x /= 0 c-->Stat4 ==> c in x (x - {c})-->Stat3 ==> Stat5: not (EXISTS u | ((not Finite(u)) & (#u /= #(u + (x - {c}))))) v-->Stat5 ==> #v = #(v + (x - {c})) (v + (x - {c}),v)-->T189 ==> not Finite(v + (x - {c})) (v + (x - {c}),c)-->T355 ==> #(v + (x - {c}) + {c}) = #v ELEM ==> v + (x - {c}) + {c} = v + x EQUAL ==> false; Discharge ==> QED -- Theorem 357: [Any infinite cardinal is a limit ordinal] ((not Finite(S)) & (X in #S)) ¥imp (X + {X} in #S). Proof: Suppose_not(s,x) ==> (not Finite(s)) & (x in #s) & ((x + {x}) notin #s) -- -- For let $s$, $x$ be a counterexample to our assertion, so $(x + {x}) notin #s$. -- Plainly both $#s$ and its member $x$ are ordinals, while $#s$ must be infinite. -- If $x$ is finite, so is its ordinal successor $x + {x}$, and therefore $x + {x}$ -- must be a member of the infinite ordinal $#s$ by Theorem 197, ruling out this -- possibility. -- s-->T156 ==> Card(#s) & Ord(#s) (#s,x)-->T12 ==> Ord(x) x-->T32 ==> Ord(next(x)) Use_def(next) ==> Ord(x + {x}) Suppose ==> Finite(x) x-->T199 ==> Finite(x + {x}) -- -- Hence $x$ is infinite, implying $#(x + {x}) = #x$ by the One-more lemma. -- Since by assumption x is less than, i.e. a proper subset of, $#s$, -- and since $#x$ is no more than $x$ by Theorem 169, it follows that $#x = #(x + {x})$ is also -- a proper subset of $#s$. But if $(x + {x}) notin #s$, then $#s ¥incin (x + {x})$ by Theorem 35, -- in which case it follows that $##s ¥incin #(x + {x})$, so $#s ¥incin #(x + {x})$ -- giving the contradiction $#s = #(x + {x})$, and so proving the present corollary. -- (#s,x + {x})-->T197 ==> false; Discharge ==> not Finite(x) (#s,x)-->T34 ==> Stat1: (x ¥incin #s) & (x /= #s) (x,x)-->T169 ==> #x ¥incin x (x,x)-->T355 ==> #(x + {x}) = #x (Stat1*)ELEM ==> (#(x + {x}) ¥incin #s) & (#(x + {x}) /= #s) (#s,(x + {x}))-->T35 ==> #s ¥incin (x + {x}) (#s,(x + {x}))-->T170 ==> ##s ¥incin #(x + {x}) s-->T166 ==> false; Discharge ==> QED -- -- Our next main aim is to prove the cardinal Division-by-2 Lemma which appears as Theorem 362 below. -- Since this result lies a bit deeper than most of the theorems proved up to the present point, we -- give an informal outline of its proof before entering upon its formal details. -- The theorem asserts that for every infinite set $s$, $#s = #(s ¥PROD {0,1})$. If this is false, -- then $#s /= #(s ¥PROD {0,1})$ = $(s ¥TIMES {0,1}) = (#s ¥TIMES {0,1})$ = $#(#s ¥PROD {0,1})$, -- so our assertion is also false for the infinite cardinal $#s$, and hence for some infinite ordinal. -- It follows by the axiom of choice that our assertion is also false for some smallest infinite ordinal $s1$. -- $s1$ must be a cardinal, since otherwise $#s1 in s1$, but also $s1 in #(s1 ¥PROD {0,1})$ = $#(#s1 ¥PROD {0,1})$, -- so we would have $#s1 in #(#s1 ¥PROD {0,1})$ also, contradicting the minimality of $s1$. -- -- Order $s1 ¥PROD {0,1}$ by the product ordering described above. The theory we have just established -- tells us that this is a well-ordering, so that by our previous theory of well-orderings -- there exists a 1-1 map $f$ from some ordinal $o$ onto $s1 ¥PROD {0,1}$ which is monotone increasing if $o$ -- is given its standard ordering and $s1 ¥PROD {0,1}$ is given its product ordering. -- -- If $o1$ is a finite member of the ordinal $o$, then obviously $#o1$ is a member of the infinite cardinal $s1$. -- If $o1$ is an infinite member of the ordinal $o$, then it is a proper subset of $o$; -- so $range(f ¥ON o1)$ is a proper subset $t$ of $s1 ¥PROD {0,1}$. -- If $[n,0] in range(f ¥ON o1)$ and $m in n$, then $[m,k]$ is less than $[n,0]$ for each $k = 0,1$. -- Hence there must exist some $[n,0] in s1 ¥PROD {0,1}$ such that $[n,0] notin range(f ¥ON o1)$, -- since otherwise $range(f ¥ON o1)$ would be all of $s1 ¥PROD {0,1}$ rather than a proper subset. -- It follows that for every $[m,k] in t$, $m$ is a member of $n$. -- That is, $range(f ¥ON o1)$ is a subset of $n ¥PROD {0,1}$, and so it follows -- from the minimality of $s1$ that $#t ¥incin #(n ¥PROD {0,1})$ = $n$ in $s1$. Hence $#o1$ is a member of $s1$ -- for each $o1$ in $o$, proving that $#o ¥incin s1$ in this case also. Since $o$ is in $1-1$ correspondence with -- $s1 ¥PROD {0,1}$ it follows that $#(s1 ¥PROD {0,1}) ¥incin s1$, contrary to our assumption. -- This contradiction proves our desired theorem. -- -- To keep its details under control, we precede the formal proof of Theorem 362 with several lemmas, -- as suggested by the preceding discussion. Our first lemma asserts that if $s$ and $t$ are ordinals, -- $s$ being infinite, and if no member of $t$ has a cardinality larger than $#s$, -- then $t$ has a cardinality no larger than $#s$. -- Theorem 358: [If ordinal $S$ dominates the members of an ordinal $T$, $#S$ is no less than $#T$] (Ord(S) & Ord(T) & (not Finite(S)) & (FORALL u in T | #u in #S)) ¥imp (#T ¥incin #S). Proof: Suppose_not(s,t) ==> Ord(s) & Ord(t) & (not Finite(s)) & Stat1: (FORALL x in t | #x in #s) & Stat2: (not(#t ¥incin #s)) s-->T156 ==> Ord(#s) t-->T156 ==> Ord(#t) (#t,#s)-->T35 ==> #s in #t (t,t)-->T169 ==> #t ¥incin t (#s)-->Stat1 ==> ##s in #s s-->T166 ==> false; Discharge ==> QED -- -- We will also find the following elementary property of Cartesian product useful. -- Theorem 359: [The cardinality of a non-null Cartesian product is at least the cardinality of its first factor] (T /= 0) ¥imp (#S ¥incin #(S ¥PROD T)). Proof: Suppose_not(t,s) ==> Stat1: (t /= 0) & (not(#s ¥incin #(s ¥PROD t))) c-->Stat1 ==> c in t (s,s,{c},t)-->T256 ==> (s ¥PROD {c}) ¥incin (s ¥PROD t) (s ¥PROD {c},s ¥PROD t)-->T170 ==> #(s ¥PROD {c}) ¥incin #(s ¥PROD t) (s,c)-->T224 ==> false; Discharge ==> QED -- -- Our next theorem, which simply combines results available through the product_order -- and well_ordered_set theories developed above, tells us that the Cartesian product $o1 ¥PROD o2$ of -- any two ordinals is order-isomorphic to a third ordinal o via a 1-1 map that is strictly monotone -- relative to the product order of $o1 ¥PROD o2$. -- Theorem 360: (Ord(O1) & Ord(O2)) ¥imp (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (O1 ¥PROD O2)) & (FORALL x in domain(f), y in domain(f) | (x in y) ¥eq (((car(f~[x]) + cdr(f~[x])) in (car(f~[y]) + cdr(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) in car(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) = car(f~[y])) & (cdr(f~[x]) in cdr(f~[y])))))). Proof: -- -- For suppose the contrary, -- Suppose_not(o1,o2) ==> Ord(o1) & Ord(o2) & Stat1: (not (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (o1 ¥PROD o2)) & (FORALL x in domain(f), y in domain(f) | (x in y) ¥eq (((car(f~[x]) + cdr(f~[x])) in (car(f~[y]) + cdr(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) in car(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) = car(f~[y])) & (cdr(f~[x]) in cdr(f~[y]))))))) -- -- And consider the product ordering of $o1 ¥PROD o2$, which is a well-ordering. -- APPLY (Ord1p2_thryvar:prod_order) product_order(o1->o1,o2->o2) ==> Stat2: (FORALL x, y | prod_order(x,y) ¥eq (car(x) + cdr(x) in car(y) + cdr(y) or ((car(x) + cdr(x) = car(y) + cdr(y)) & (car(x) in car(y))) or ((car(x) + cdr(x) = car(y) + cdr(y)) & (car(x) = car(y)) & (cdr(x) in cdr(y))))) & Stat3: (FORALL x, y | ((x in o1 ¥PROD o2) & (y in o1 ¥PROD o2)) ¥imp ((prod_order(x,y) or prod_order(y,x) or (x = y)) & (not prod_order(x,x)))) & Stat4: (FORALL x, y, z | ((x in o1 ¥PROD o2) & (y in o1 ¥PROD o2) & (z in o1 ¥PROD o2) & prod_order(x,y) & prod_order(y,z)) ¥imp prod_order(x,z)) & Stat5: (FORALL t | ((t ¥incin (o1 ¥PROD o2)) & (t /= 0)) ¥imp (EXISTS x in t| (FORALL y in t | (prod_order(x,y) or (x = y))))) -- -- Adjust unrestricted quantifiers to the syntax used in the hypotheses of the THEORY well_ordered_set. -- Suppose ==> Stat6: not(FORALL x in (o1 ¥PROD o2) | (not prod_order(x,x))) x0-->Stat6 ==> (x0 in (o1 ¥PROD o2)) & prod_order(x0,x0) (x0,x0)-->Stat3 ==> false; Discharge ==> (FORALL x in (o1 ¥PROD o2) | (not prod_order(x,x))) -- Suppose ==> Stat7: not(FORALL x in (o1 ¥PROD o2), y in (o1 ¥PROD o2), z in (o1 ¥PROD o2) | (prod_order(x,y) & prod_order(y,z)) ¥imp prod_order(x,z)) (x1,y1,z1)-->Stat7 ==> (x1 in (o1 ¥PROD o2)) & (y1 in (o1 ¥PROD o2)) & (z1 in (o1 ¥PROD o2)) & prod_order(x1,y1) & prod_order(y1,z1) & (not prod_order(x1,z1)) (x1,y1,z1)-->Stat4 ==> false; Discharge ==> (FORALL x in (o1 ¥PROD o2), y in (o1 ¥PROD o2), z in (o1 ¥PROD o2) | (prod_order(x,y) & prod_order(y,z)) ¥imp prod_order(x,z)) -- Suppose ==> Stat8: (not(FORALL t ¥incin (o1 ¥PROD o2) | (t /= 0) ¥imp (EXISTS x in t| (FORALL y in t | (prod_order(x,y) or (x = y)))))) t0-->Stat8 ==> (t0 ¥incin (o1 ¥PROD o2)) & (t0 /= 0) & (not(EXISTS x in t0| (FORALL y in t0 | (prod_order(x,y) or (x = y))))) t0-->Stat5 ==> false; Discharge ==> (FORALL t ¥incin (o1 ¥PROD o2) | (t /= 0) ¥imp (EXISTS x in t| (FORALL y in t | (prod_order(x,y) or (x = y))))) -- -- It follows by the theory of well-ordered sets developed above that there exists an ordinal $o$ -- and a function $orden(x)$ such that $f = {[x,orden(x)]: x in o}$ is a 1-1 mapping of $o$ onto $o1 ¥PROD o2$, -- which puts the ordering of $o$ by membership into isomorphism with the product-ordering of $o1 ¥PROD o2$. -- APPLY (ordenm_thryvar:orden) well_ordered_set(s->o1 ¥PROD o2,arg1_bef_arg2(x,y)->prod_order(x,y)) ==> Stat9: (FORALL u, v | (Ord(u) & Ord(v) & (orden(u) /= o1 ¥PROD o2) & (orden(v) /= o1 ¥PROD o2)) ¥imp (prod_order(orden(u),orden(v)) ¥eq (u in v))) & Stat10: (EXISTS o | (Ord(o) & (o1 ¥PROD o2 = {orden(x): x in o}) & (FORALL x in o | (orden(x) /= o1 ¥PROD o2)) & one_1_map({[x,orden(x)]: x in o}))) o-->Stat10 ==> Ord(o) & (o1 ¥PROD o2 = {orden(x): x in o}) & Stat11: (FORALL x in o | (orden(x) /= o1 ¥PROD o2)) & one_1_map({[x,orden(x)]: x in o}) Loc_def ==> f = {[x,orden(x)]: x in o} APPLY() fcn_symbol(f(x)->orden(x),g->f,s->o) ==> (domain(f) = o) & (range(f) = {orden(x): x in o}) & Stat12: (FORALL x | (x in o) ¥imp (f~[x] = orden(x))) EQUAL ==> (domain(f) = o) & Ord(domain(f)) & (range(f) = (o1 ¥PROD o2)) & one_1_map(f) Suppose ==> Stat13: not(FORALL x in domain(f), y in domain(f) | (x in y) ¥eq prod_order(orden(x),orden(y))) (x,y)-->Stat13 ==> (x in o) & (y in o) & (not((x in y) ¥eq prod_order(orden(x),orden(y)))) x-->Stat11 ==> orden(x) /= o1 ¥PROD o2 y-->Stat11 ==> orden(y) /= o1 ¥PROD o2 (o,x)-->T12 ==> Ord(x) (o,y)-->T12 ==> Ord(y) (x,y)-->Stat9 ==> false; Discharge ==> Stat14: (FORALL x in domain(f), y in domain(f) | (x in y) ¥eq prod_order(orden(x),orden(y))) -- -- But it is now obvious that (x in y) has the explicit form asserted in our theorem, completing the present proof. -- f-->Stat1 ==> Stat15: not (FORALL x in domain(f), y in domain(f) | (x in y) ¥eq (((car(f~[x]) + cdr(f~[x])) in (car(f~[y]) + cdr(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) in car(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) = car(f~[y])) & (cdr(f~[x]) in cdr(f~[y]))))) (x2,y2)-->Stat15 ==> (x2 in domain(f)) & (y2 in domain(f)) & (not((x2 in y2) ¥eq (((car(f~[x2]) + cdr(f~[x2])) in (car(f~[y2]) + cdr(f~[y2]))) or (((car(f~[x2]) + cdr(f~[x2])) = (car(f~[y2]) + cdr(f~[y2]))) & (car(f~[x2]) in car(f~[y2]))) or (((car(f~[x2]) + cdr(f~[x2])) = (car(f~[y2]) + cdr(f~[y2]))) & (car(f~[x2]) = car(f~[y2])) & (cdr(f~[x2]) in cdr(f~[y2])))))) (x2,y2)-->Stat14 ==> (x2 in y2) ¥eq prod_order(orden(x2),orden(y2)) (orden(x2),orden(y2))-->Stat2 ==> prod_order(orden(x2),orden(y2)) ¥eq (car(orden(x2)) + cdr(orden(x2)) in car(orden(y2)) + cdr(orden(y2)) or ((car(orden(x2)) + cdr(orden(x2)) = car(orden(y2)) + cdr(orden(y2))) & (car(orden(x2)) in car(orden(y2)))) or ((car(orden(x2)) + cdr(orden(x2)) = car(orden(y2)) + cdr(orden(y2))) & (car(orden(x2)) = car(orden(y2))) & (cdr(orden(x2)) in cdr(orden(y2))))) x2-->Stat12 ==> f~[x2] = orden(x2) y2-->Stat12 ==> f~[y2] = orden(y2) EQUAL ==> false; Discharge ==> QED -- -- The following extension of Theorem 360 gives us the subsequently needed property of the map $f$ whose existence -- is asserted by Theorem 360: that the range of the restriction of $f$ to any element of its domain -- is contained in $y ¥PROD y$ for some $y$ less than the maximum of $o1$ and $o2$. -- Theorem 361: (Card(O1) & Card(O2) & (not Finite(O1 + O2))) ¥imp (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (O1 ¥PROD O2)) & (FORALL x in domain(f) | (EXISTS y in (O1 + O2) | range(f ¥ON x) ¥incin (y ¥PROD y)))). Proof: Suppose_not(o1,o2) ==> Card(o1) & Card(o2) & (not Finite(o1 + o2)) & Stat1: (not (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (o1 ¥PROD o2)) & (FORALL x in domain(f) | (EXISTS y in (o1 + o2) | range(f ¥ON x) ¥incin (y ¥PROD y))))) -- -- For suppose not. Take $f$ to be the mapping whose existence is given by the preceding theorem, and -- let $w$ be an element of its domain which contradicts our present assertion. -- Use_def(Card) ==> Ord(o1) & Ord(o2) (o1,o2)-->T360 ==> Stat2: (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (o1 ¥PROD o2)) & (FORALL x in domain(f), y in domain(f) | (x in y) ¥eq (((car(f~[x]) + cdr(f~[x])) in (car(f~[y]) + cdr(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) in car(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) = car(f~[y])) & (cdr(f~[x]) in cdr(f~[y])))))) f-->Stat2 ==> Stat3: one_1_map(f) & Ord(domain(f)) & (range(f) = (o1 ¥PROD o2)) & Stat4: (FORALL x in domain(f), y in domain(f) | (x in y) ¥eq (((car(f~[x]) + cdr(f~[x])) in (car(f~[y]) + cdr(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) in car(f~[y]))) or (((car(f~[x]) + cdr(f~[x])) = (car(f~[y]) + cdr(f~[y]))) & (car(f~[x]) = car(f~[y])) & (cdr(f~[x]) in cdr(f~[y]))))) f-->Stat1 ==> Stat5: not(FORALL x in domain(f) | (EXISTS y in (o1 + o2) | range(f ¥ON x) ¥incin (y ¥PROD y))) w-->Stat5 ==> (w in domain(f)) & Stat6: (not(EXISTS y in (o1 + o2) | range(f ¥ON w) ¥incin (y ¥PROD y))) -- -- Since $w$ is a member of $domain(f)$ it is a proper subset of $domain(f)$. Hence the image of -- $w$ by $f$ is a proper subset of $o1 ¥PROD o2$. i.e. there exists some element $b = [c,d]$ in $o1 ¥PROD o2$ -- which does not belong to $range(f ¥ON w)$. Write $[c,d]$ as $[c,d] = cdr(e)$ where $e in f$. -- Use_def(range) ==> range(f ¥ON w) = {cdr(x): x in f ¥ON w} Use_def(¥ON) ==> range(f ¥ON w) = {cdr(x): x in {p in f | car(p) in w}} SIMPLF ==> range(f ¥ON w) = {cdr(p): p in f | car(p) in w} (domain(f),w)-->T12 ==> Ord(w) (domain(f),w)-->T34 ==> (w ¥incin domain(f)) & Stat7: (w /= domain(f)) (f,w)-->T98 ==> (range(f ¥ON w) ¥incin range(f)) & Stat8: (range(f ¥ON w) /= range(f)) b-->Stat8 ==> (b in range(f)) & (b notin range(f ¥ON w)) Use_def(range) ==> Stat9: b in {cdr(x): x in f} e-->Stat9 ==> Stat10: (e in f) & (b = cdr(e)) ELEM ==> b in o1 ¥PROD o2 Use_def(¥PROD) ==> Stat11: b in {[x,y]: x in o1,y in o2} (c,d)-->Stat11 ==> Stat12: (c in o1) & (d in o2) & (b = [c,d]) (o1,c)-->T12 ==> Ord(c) (o2,d)-->T12 ==> Ord(d) (c,d)-->T30 ==> Stat13: Ord(c + d) -- -- We shall now show that there can exist no $[c1,d1]$ in $range(f ¥ON w)$ such that $c1$ or $d1$ -- is greater than $c + d$. For otherwise there would be an $x in f$ with $car(x) in w$ such that -- $cdr(x) = [c1,d1]$ where $c1 + d1$ is greater than $c + d$, and so, since $f$ is an order-preserving -- map of $domain(f)$ onto $o1 ¥PROD o2$, we would have $car(e) in w$, contradicting $b notin range(f ¥ON w)$. -- Use_def(one_1_map) ==> Svm(f) Suppose ==> Stat14: not(FORALL x in f | ((car(x) in w) ¥imp (((c + d) notin car(cdr(x))) & ((c + d) notin cdr(cdr(x)))))) x-->Stat14(Stat14*) ==> Stat15: (x in f) & (car(x) in w) & ((c + d) in car(cdr(x)) or (c + d) in cdr(cdr(x))) e-->T60 ==> car(e) in domain(f) x-->T60 ==> car(x) in domain(f) (Stat15)ELEM ==> Stat16: (c + d) in car(cdr(x)) + cdr(cdr(x)) (Stat16,Stat10,Stat12)ELEM ==> car(cdr(e)) + cdr(cdr(e)) in car(cdr(x)) + cdr(cdr(x)) (f,e)-->T74 ==> cdr(e) = f~[car(e)] (f,x)-->T74 ==> cdr(x) = f~[car(x)] EQUAL ==> car(f~[car(e)]) + cdr(f~[car(e)]) in car(f~[car(x)]) + cdr(f~[car(x)]) Suppose ==> car(x) = car(e) EQUAL ==> false; Discharge ==> car(x) /= car(e) (car(e),car(x))-->Stat4 ==> not(car(x) in car(e)) (domain(f),car(e))-->T12 ==> Ord(car(e)) (domain(f),car(x))-->T12 ==> Ord(car(x)) (car(e),car(x))-->T31 ==> car(e) in car(x) (w,car(x))-->T13 ==> car(x) ¥incin w ELEM ==> car(e) in w Suppose ==> cdr(e) notin range(f ¥ON w) ELEM ==> Stat17: cdr(e) notin {cdr(p): p in f | car(p) in w} e-->Stat17 ==> false; Discharge ==> cdr(e) in range(f ¥ON w) Discharge ==> Stat18: (FORALL x in f | ((car(x) in w) ¥imp (((c + d) notin car(cdr(x))) & ((c + d) notin cdr(cdr(x)))))) -- -- It follows that $range(f ¥ON w)$ is included in $next(c + d) ¥PROD next(c + d)$. -- Suppose ==> Stat19: not(range(f ¥ON w) ¥incin (next(c + d) ¥PROD next(c + d))) u-->Stat19 ==> (u in range(f ¥ON w)) & (u notin (next(c + d) ¥PROD next(c + d))) Use_def(¥PROD) ==> Stat20: u notin {[x,y]: x in next(c + d), y in next(c + d)} ELEM ==> Stat21: u in {cdr(p): p in f | car(p) in w} p-->Stat21 ==> Stat22: (p in f) & (u = cdr(p)) & (car(p) in w) p-->Stat18 ==> Stat23: ((c + d) notin car(cdr(p))) & ((c + d) notin cdr(cdr(p))) (p,f)-->T61 ==> Stat24: cdr(p) in range(f) (Stat24,Stat3)ELEM ==> cdr(p) in o1 ¥PROD o2 Use_def(¥PROD) ==> Stat25: cdr(p) in {[x,y]: x in o1,y in o2} (c2,d2)-->Stat25 ==> Stat26: (c2 in o1) & (d2 in o2) & (cdr(p) = [c2,d2]) (Stat23,Stat26)ELEM ==> ((c + d) notin c2) & ((c + d) notin d2) (o1,c2)-->T12 ==> Ord(c2) (o2,d2)-->T12 ==> Ord(d2) (c2,c + d)-->T31 ==> Stat27: c2 in (c + d) or c2 = (c + d) (d2,c + d)-->T31 ==> d2 in (c + d) or d2 = (c + d) (Stat27)ELEM ==> (c2 in (c + d) + {c + d}) & (d2 in (c + d) + {c + d}) Use_def(next) ==> Stat28: (c2 in next(c + d)) & (d2 in next(c + d)) (c2,d2)-->Stat20(Stat28) ==> Stat29: u /= [c2,d2] (Stat29,Stat22,Stat26)ELEM ==> false Discharge ==> Stat30: range(f ¥ON w) ¥incin (next(c + d) ¥PROD next(c + d)) (o1 + o2,o1)-->T189 ==> not Finite(o1 + o2) (o1,o2)-->T29 ==> Stat31: (o1 ¥incin o2) or (o2 ¥incin o1) (Stat31)ELEM ==> Stat32: o1 + o2 = o1 or o1 + o2 = o2 (c,d)-->T29 ==> Stat33: (c ¥incin d) or (d ¥incin c) (Stat33)ELEM ==> Stat34: c + d = c or c + d = d (Stat32,Stat34,Stat12)ELEM ==> Stat35: c + d in o1 + o2 -- -- It is easily seen that $o1 + o2$, which is one of $o1$ and $o2$, must be a cardinal. -- Suppose ==> not Card(o1 + o2) Suppose ==> o1 + o2 = o1 EQUAL ==> false; Discharge ==> o1 + o2 = o2 EQUAL ==> false; Discharge ==> Card(o1 + o2) Use_def(Card) ==> Ord(o1 + o2) (c + d)-->T32 ==> Ord(next(c + d)) Suppose ==> next(c + d) notin o1 + o2 -- -- But since $o1$ and $o2$, are cardinals, we have $next(c + d) in o1 + o2$, -- so that we can take $y = next(c + d)$ as the element -- whose existence is asserted by our theorem. -- (o1 + o2,next(c + d))-->T35 ==> Stat36: next(c + d) incs o1 + o2 (next(c + d),o1 + o2)-->T189 ==> not Finite(next(c + d)) (c + d)-->T200 ==> not Finite(c + d) Use_def(next) ==> next(c + d) = (c + d) + {c + d} EQUAL ==> #next(c + d) = #((c + d) + {c + d}) (o1 + o2,next(c + d))-->T170(Stat36) ==> Stat37: #next(c + d) incs #(o1 + o2) (c + d,c + d)-->T355 ==> #next(c + d) = #(c + d) (Stat37)ELEM ==> Stat38: #(c + d) incs #(o1 + o2) (c + d,c + d)-->T169(Stat38,Stat13) ==> (c + d) incs #(o1 + o2) (o1 + o2)-->T164 ==> Stat39: (c + d) incs (o1 + o2) (Stat39,Stat35)Discharge ==> Stat40: next(c + d) in o1 + o2 (next(c + d))-->Stat6(Stat40,Stat30) ==> false; Discharge ==> QED -- -- The following theorem, whose proof we have already described, asserts that any infinite set -- can be divided in half, and is in fact in 1-1 correspondence with $s ¥PROD {0,1}$. -- Theorem 362: [Cardinal Doubling Theorem] (not Finite(S)) ¥imp (#(S ¥PROD {0,1}) = #S). Proof: Suppose_not(s) ==> (not Finite(s)) & (#(s ¥PROD {0,1}) /= #s) -- -- If we suppose the contrary, then clearly $s$ is an infinite set and $#(s ¥PROD {0,1}) /= #s$. -- Since $#(s ¥PROD {0,1})$ is obviously at least as large as $#(s ¥PROD {0}) = #s$, $#(s ¥PROD {0,1})$ -- must be larger than $#s$, so that $#s in #(s ¥PROD {0,1})$. I.e. there exists an infinite ordinal -- such that x is less than $#(x ¥PROD {0,1})$, and so by the principle of transfinite induction -- there exists a least such x. -- Use_def(¥TIMES) ==> (s ¥TIMES {0,1}) /= #s ({0,1},s)-->T253 ==> ({0,1} ¥TIMES s) /= #s ({0,1},s)-->T231 ==> ({0,1} ¥TIMES #s) /= #s ({0,1},#s)-->T253 ==> (#s ¥TIMES {0,1}) /= #s Use_def(¥TIMES) ==> #(#s ¥PROD {0,1}) /= #s ELEM ==> ({0,1} /= 0) & ({0,1} = 2) T212 ==> {0,1} in Za T209 ==> Card(Za) Use_def(Card) ==> Ord(Za) (Za,{0,1})-->T12 ==> Ord({0,1}) (0,1)-->T202 ==> Finite({0,1}) ({0,1})-->T205 ==> Card({0,1}) ({0,1},#s)-->T359 ==> ##s ¥incin #(#s ¥PROD {0,1}) s-->T166 ==> (##s ¥incin #(#s ¥PROD {0,1})) & (#(#s ¥PROD {0,1}) /= ##s) (#s)-->T156 ==> Ord(##s) (#s ¥PROD {0,1})-->T156 ==> Ord(#(#s ¥PROD {0,1})) (#(#s ¥PROD {0,1}),##s)-->T34 ==> ##s in #(#s ¥PROD {0,1}) s-->T193 ==> not Finite(#s) s-->T156 ==> Card(#s) & Ord(#s) ELEM ==> Ord(#s) & (not Finite(#s)) & (##s in #(#s ¥PROD {0,1})) APPLY(mt1_thryvar:x2) transfinite_induction(n ->#s,P(y)->Ord(y) & (not Finite(y)) & (#y in #(y ¥PROD {0,1})))==> Stat1: (FORALL k | (Ord(x2) & (not Finite(x2)) & (#x2 in #(x2 ¥PROD {0,1}))) & ((k in x2) ¥imp (not (Ord(k) & (not Finite(k)) & (#k in #(k ¥PROD {0,1})))))) -- -- it is easy to see that the minimality of $x2$ implies that $x2 = #x2$, i.e. that the ordinal $x2$ is a cardinal. -- a-->Stat1 ==> Stat2: Ord(x2) & (not Finite(x2)) & (#x2 in #(x2 ¥PROD {0,1})) x2-->T148 ==> x2 notin #x2 x2-->T147 ==> Ord(#x2) x2-->T193 ==> not Finite(#x2) (#x2,x2)-->T35 ==> x2 incs #x2 Suppose ==> x2 /= #x2 (x2,#x2)-->T34 ==> #x2 in x2 #x2-->Stat1 ==> ##x2 notin #(#x2 ¥PROD {0,1}) x2-->T166 ==> ##x2 = #x2 (x2,{0,1})-->T234 ==> false; Discharge ==> Stat3: x2 = #x2 x2-->T156 ==> Card(#x2) EQUAL ==> Card(x2) ({0,1},x2)-->T189 ==> not(x2 ¥incin {0,1}) ({0,1},x2)-->T29 ==> x2 incs {0,1} ELEM ==> Stat4: x2 = x2 + {0,1} EQUAL ==> not Finite(x2 + {0,1}) -- -- Since $x2$ and ${0,1}$ are both cardinals, we can apply Theorem 361 to put $x2 ¥PROD {0,1}$ into a 1-1 monotone -- correspondence $f$ with some ordinal $o = domain(f)$. -- (x2,{0,1})-->T361 ==> Stat5: (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (x2 ¥PROD {0,1})) & (FORALL x in domain(f) | (EXISTS y in (x2 + {0,1}) | range(f ¥ON x) ¥incin (y ¥PROD y)))) f-->Stat5 ==> Stat6: one_1_map(f) & Ord(domain(f)) & (range(f) = (x2 ¥PROD {0,1})) & Stat7: (FORALL x in domain(f) | (EXISTS y in (x2 + {0,1}) | range(f ¥ON x) ¥incin (y ¥PROD y))) (f,x2)-->T80 ==> Stat8: range(f ¥ON x2) ¥incin (x2 ¥PROD {0,1}) -- -- Our next aim is to show that $#domain(f)$ is no more than $x2$. This will follow -- from the fact that for each $x$ in $domain(f)$, $#x$ is less than $x2$. -- Suppose ==> not(#domain(f) ¥incin x2) (domain(f))-->T156 ==> Ord(#domain(f)) (#domain(f),x2)-->T35 ==> Stat9: x2 in #domain(f) (domain(f),domain(f))-->T169(Stat6,Stat9*) ==> x2 in domain(f) x2-->Stat7 ==> Stat10: (EXISTS y in (x2 + {0,1}) | range(f ¥ON x2) ¥incin (y ¥PROD y)) y-->Stat10(Stat4,Stat10) ==> Stat11: (y in x2) & (range(f ¥ON x2) ¥incin (y ¥PROD y)) (Stat11,Stat8)ELEM ==> range(f ¥ON x2) ¥incin ((y ¥PROD y) * (x2 ¥PROD {0,1})) (y,y,x2,{0,1})-->T257 ==> Stat12: range(f ¥ON x2) ¥incin ((y * x2) ¥PROD (y * {0,1})) (y * x2,y,y * {0,1},{0,1})-->T256(Stat12) ==> range(f ¥ON x2) ¥incin (y ¥PROD {0,1}) (x2,y)-->T12 ==> Stat13: Ord(y) (domain(f),x2)-->T13 ==> x2 ¥incin domain(f) (f,x2)-->T94 ==> domain(f ¥ON x2) = x2 EQUAL ==> not Finite(domain(f ¥ON x2)) (f,x2)-->T58 ==> one_1_map(f ¥ON x2) (f ¥ON x2)-->T191 ==> not Finite(range(f ¥ON x2)) (y ¥PROD {0,1},range(f ¥ON x2))-->T189 ==> not Finite(y ¥PROD {0,1}) (y,{0,1})-->T262 ==> not Finite(y) y-->Stat1 ==> #y notin #(y ¥PROD {0,1}) y-->T156 ==> Ord(#y) (y ¥PROD {0,1})-->T156 ==> Ord(#(y ¥PROD {0,1})) (#(y ¥PROD {0,1}),#y)-->T35 ==> #(y ¥PROD {0,1}) ¥incin #y ({0,1},y)-->T250 ==> #y = #(y ¥PROD {0,1}) (range(f ¥ON x2),y ¥PROD {0,1})-->T170 ==> #range(f ¥ON x2) ¥incin #y (f ¥ON x2)-->T157 ==> #domain(f ¥ON x2) ¥incin #y -- -- And now we have a contradiction with the fact that $y in x2$, thereby proving our theorem. -- EQUAL ==> Stat14: x2 ¥incin #y (y,y)-->T169(Stat13,Stat14*) ==> x2 ¥incin y Discharge ==> #domain(f) ¥incin x2 f-->T157 ==> #domain(f) = #range(f) EQUAL ==> #(x2 ¥PROD {0,1}) ¥incin x2 Discharge ==> QED -- -- Our next theorem states that if one of the two sets $s$, $t$ in a union is infinite, the -- the cardinal sum of the two sets is the union (i.e. maximum) m of the cardinalities $#s$, $#t$. -- Theorem 363: [The sum of two infinite quantities is their maximum] (not Finite(S)) ¥imp ((S ¥PLUS T) = #S + #T). Proof: Suppose_not(s,t) ==> (not Finite(s)) & ((s ¥PLUS t) /= #s + #t) -- -- For let $s$, $t$ be a counterexample to our assertion, so that either $s ¥PLUS t$ or $#(s + t)$ -- differs from the larger of $#s$ and $#t$. -- One of the two cardinals $#s$, $#t$ must be a subset of the other. If $#s$ is a subset of $#t$, -- then both these cardinals are infinite, and the maximum $#s + #t$ is $#t$, so $#s ¥PLUS #t /= #t$. -- Plainly $#s ¥PLUS #t$ is no less than $0 ¥PLUS #t = #t$, so $#s ¥PLUS #t$ must be greater than $#t$. -- (s,t)-->T221 ==> (#s ¥PLUS #t) /= #s + #t s-->T156 ==> Ord(#s) & Card(#s) t-->T156 ==> Ord(#t) & Card(#t) (#s,#t)-->T29 ==> (#s ¥incin #t) or (#t ¥incin #s) Suppose ==> #s ¥incin #t ELEM ==> ((#s ¥PLUS #t) /= #t) (#t,#s)-->T189 ==> not Finite(#t) (#t,#s)-->T291 ==> #t ¥incin (#s ¥PLUS #t) -- -- But by monotonicity $#s ¥PLUS #t$ is no greater than $#t ¥PLUS #t$, which by Theorem 362 is $#t$. -- This contradiction rules out the possibility that $#t incs #s$. -- Thus it follows that $#s$ must be the larger of $#t$ and $#s$. -- Set_monot ==> {[x,0]: x in #s} ¥incin {[x,0]: x in #t} ELEM ==> ({[x,0]: x in #s} + {[x,1]: x in #t}) ¥incin ({[x,0]: x in #t} + {[x,1]: x in #t}) ELEM ==> ({0} + {1}) = {0,1} Set_monot ==> {[x,y]: x in #t, y in {0}} + {[x,y]: x in #t, y in {1}} = {[x,y]: x in #t, y in ({0} + {1})} SIMPLF ==> {[x,y]: x in #t, y in {0}} + {[x,y]: x in #t, y in {1}} = {[x,0]: x in #t} + {[x,1]: x in #t} EQUAL ==> {[x,0]: x in #t} + {[x,1]: x in #t} = {[x,y]: x in #t, y in {0,1}} Use_def(¥PROD) ==> ({[x,0]: x in #s} + {[x,1]: x in #t}) ¥incin (#t ¥PROD {0,1}) ({[x,0]: x in #s} + {[x,1]: x in #t},#t ¥PROD {0,1})-->T170 ==> #({[x,0]: x in #s} + {[x,1]: x in #t}) ¥incin #(#t ¥PROD {0,1}) Use_def(¥PLUS) ==> (#s ¥PLUS #t) ¥incin #(#t ¥PROD {0,1}) #t-->T362 ==> (#s ¥PLUS #t) ¥incin ##t #t-->T164 ==> (#s ¥PLUS #t) ¥incin #t Discharge ==> (#t ¥incin #s) & ((#s ¥PLUS #t) /= #s) -- -- Arguing in the same way once more, it follows that $#s ¥PLUS #t$ must be $#s$, -- and hence must be the maximum $#s + #t$ in this case also. Thus our theorem is verified in all cases. -- Set_monot ==> {[x,1]: x in #t} ¥incin {[x,1]: x in #s} ELEM ==> ({[x,0]: x in #s} + {[x,1]: x in #t}) ¥incin ({[x,0]: x in #s} + {[x,1]: x in #s}) ELEM ==> ({0} + {1}) = {0,1} Set_monot ==> {[x,y]: x in #s, y in {0}} + {[x,y]: x in #s, y in {1}} = {[x,y]: x in #s, y in ({0} + {1})} SIMPLF ==> {[x,y]: x in #s, y in {0}} + {[x,y]: x in #s, y in {1}} = {[x,0]: x in #s} + {[x,1]: x in #s} EQUAL ==> {[x,0]: x in #s} + {[x,1]: x in #s} = {[x,y]: x in #s, y in {0,1}} Use_def(¥PROD) ==> ({[x,0]: x in #s} + {[x,1]: x in #t}) ¥incin (#s ¥PROD {0,1}) ({[x,0]: x in #s} + {[x,1]: x in #t},#s ¥PROD {0,1})-->T170 ==> #({[x,0]: x in #s} + {[x,1]: x in #t}) ¥incin #(#s ¥PROD {0,1}) Use_def(¥PLUS) ==> (#s ¥PLUS #t) ¥incin #(#s ¥PROD {0,1}) #s-->T362 ==> (#s ¥PLUS #t) ¥incin ##s #t-->T164 ==> (#s ¥PLUS #t) ¥incin #s -- -- The possibility that $(s ¥PLUS t) /= #s + #t$ now having been ruled out, -- it follows that $#(s + t) /= #s + #t$. However, Theorem 222 tells us that $#(s + t) = #s ¥PLUS #(t - s)$. -- Since $(s ¥PLUS t) = (#s ¥PLUS #t)$ = $#s + #t$ also by Theorem 221, -- (#s,#t)-->T291 ==> #s ¥incin (#s ¥PLUS #t); Discharge ==> QED -- -- We can also prove that if one of the two sets $s$, $t$ in a union is infinite, the -- cardinality of $s + t$ is the union (i.e. maximum) of the cardinalities $#s, #t$. -- Theorem 364: [The cardinality of the union of two infinite quantities is the cardinality of the larger] (not Finite(S)) ¥imp (#(S + T) = #S + #T). Proof: Suppose_not(s,t) ==> (not Finite(s)) & (#(s + t) /= #s + #t) -- -- For one of the two ordinals $#s$, $#t$ must be included in the other. -- If $#t$ is included in $#s$, we would have $#(s + t) /= #s$ and so -- $#s in #(s + t)$, contradicting the fact that $#(s + t)$ can be no larger than $#(s ¥PLUS s) = #s$ -- by the preceding results. -- t-->T156 ==> Ord(#t) s-->T156 ==> Ord(#s) (#s,#t)-->T29 ==> (#s ¥incin #t) or (#t ¥incin #s) s-->T193 ==> not Finite(#s) Suppose ==> #t ¥incin #s ELEM ==> #(s + t) /= #s (t - s,t)-->T170 ==> #(t - s) ¥incin #s (s,t - s)-->T222 ==> #(s + (t - s)) = #s ¥PLUS #(t - s) ELEM ==> s + (t - s) = s + t EQUAL ==> #(s + t) = #s ¥PLUS #(t - s) (#s,#(t - s))-->T363 ==> #(s + t) = ##s + ##(t - s) s-->T166 ==> #(s + t) = #s + ##(t - s) (t - s)-->T166 ==> #(s + t) = #s Discharge ==> #s ¥incin #t -- -- But by symmetry we can we argue in exactly the same way with $s$ and $t$ reversed, -- excluding this case also and so proving our theorem. -- (#t,#s)-->T189 ==> not Finite(#t) ELEM ==> #(s + t) /= #t (s - t,s)-->T170 ==> #(s - t) ¥incin #t (t,s - t)-->T222 ==> #(t + (s - t)) = #t ¥PLUS #(s - t) ELEM ==> t + (s - t) = s + t EQUAL ==> #(s + t) = #t ¥PLUS #(s - t) (#t,#(s - t))-->T363 ==> #(s + t) = ##t + ##(s - t) t-->T166 ==> #(s + t) = #t + ##(s - t) (s - t)-->T166 ==> #(s + t) = #t Discharge ==> QED -- -- We are now ready to prove the Cardinal Square Theorem, but again -- give an informal outline of its proof before entering upon its formal details. -- The theorem asserts that for every infinite set s, $#s = #(s ¥PROD s)$. If this is false, -- then $#s /= #(s ¥PROD s)$ = $(s ¥TIMES s) = (#s ¥TIMES #s)$ = $#(#s ¥PROD #s)$, -- so our assertion is also false for the infinite cardinal $#s$, and hence for some infinite ordinal. -- It follows by the axiom of choice that our assertion is also false for some smallest infinite ordinal $s1$. -- s1 must be a cardinal, since otherwise $#s1 in s1$, but also $s1 in #(s1 ¥PROD s1)$ = $#(#s1 ¥PROD #s1)$, -- so we would have $#s1 in #(#s1 ¥PROD #s1)$ also, contradicting the minimality of s1. -- -- Order $s1 ¥PROD s1$ by the product ordering described above. The theory we have just established -- tells us that this is a well-ordering, so that by our previous theory of well-orderings -- there exists a 1-1 map $f$ from some ordinal $o$ onto $s1 ¥PROD s1$ which is monotone increasing if $o$ -- is given its standard ordering and $s1 ¥PROD s1$ is given its product ordering. -- -- If $o1$ is a finite member of the ordinal $o$, then obviously $#o1$ is a member of the infinite cardinal $s1$. -- If $o1$ is an infinite member of the ordinal $o$, then it is a proper subset of $o$; -- so $range(f ¥ON o1)$ is a proper subset $t$ of $s1 ¥PROD s1$. -- As in the proof of Theorem 362 we show that there exists an $n$ in $s1$ such that -- $range(f ¥ON o1)$ is a subset of $n ¥PROD n$, and so it follows -- from the minimality of $s1$ that $#t ¥incin #(n ¥PROD n)$ = $n in s1$. Hence $#o1$ is a member of $s1$ -- for each $o1 in o$, proving that $#o ¥incin s1$ in this case also. Since $o$ is in 1-1 correspondence with -- $s1 ¥PROD s1$ it follows that $#(s1 ¥PROD s1) ¥incin s1$, contrary to our assumption. -- This contradiction proves our desired theorem. -- Theorem 365: [Cardinal Square Theorem] (not Finite(S)) ¥imp (#(S ¥PROD S) = #S). Proof: Suppose_not(s) ==> (not Finite(s)) & (#(s ¥PROD s) /= #s) -- -- If we suppose the contrary, then clearly $s$ is an infinite set and $#(s ¥PROD s) /= #s$. -- Since $#(s ¥PROD s)$ is obviously at least as large as $#(s ¥PROD {0}) = #s$, $#(s ¥PROD s)$ -- must be larger than $#s$, so that $#s in #(s ¥PROD s)$. I.e. there exists an infinite ordinal -- such that x is less than $#(x ¥PROD x)$, and so by the principle of transfinite induction -- there exists a least such x. -- Use_def(¥TIMES) ==> (s ¥TIMES s) /= #s (s,s)-->T230 ==> (#s ¥TIMES #s) /= #s Use_def(¥TIMES) ==> #(#s ¥PROD #s) /= #s T188 ==> Finite(0) Suppose ==> s = 0 EQUAL ==> false; Discharge ==> s /= 0 s-->T162 ==> #s /= 0 (#s,#s)-->T359 ==> #s ¥incin #(#s ¥PROD #s) (#s)-->T156 ==> Ord(#s) (#s ¥PROD #s)-->T156 ==> Ord(#(#s ¥PROD #s)) (#(#s ¥PROD #s),#s)-->T34 ==> #s in #(#s ¥PROD #s) s-->T193 ==> not Finite(#s) s-->T156 ==> Card(#s) & Ord(#s) APPLY(mt1_thryvar:x2) transfinite_induction(n ->#s,P(y)->Ord(y) & (not Finite(y)) & (#y in #(y ¥PROD y)))==> Stat1: (FORALL k | (Ord(x2) & (not Finite(x2)) & (#x2 in #(x2 ¥PROD x2))) & ((k in x2) ¥imp (not (Ord(k) & (not Finite(k)) & (#k in #(k ¥PROD k)))))) a-->Stat1 ==> Stat2: Ord(x2) & (not Finite(x2)) & (#x2 in #(x2 ¥PROD x2)) -- -- it is easy to see that the minimality of $x2$ implies that $x2 = #x2$, i.e. that the ordinal $x2$ is a cardinal. -- x2-->T148 ==> x2 notin #x2 x2-->T147 ==> Ord(#x2) x2-->T193 ==> not Finite(#x2) (#x2,x2)-->T35 ==> x2 incs #x2 Suppose ==> x2 /= #x2 (x2,#x2)-->T34 ==> #x2 in x2 #x2-->Stat1 ==> ##x2 notin #(#x2 ¥PROD #x2) x2-->T166 ==> ##x2 = #x2 (x2,x2)-->T232 ==> false; Discharge ==> Stat3: x2 = #x2 (x2)-->T156 ==> Card(#x2) EQUAL ==> Card(x2) TELEM ==> x2 = x2 + x2 EQUAL ==> not Finite(x2 + x2) -- -- Since $x2$ is a cardinal, we can apply Theorem 361 to put $x2 ¥PROD x2$ into a 1-1 monotone -- correspondence $f$ with some ordinal $o = domain(f)$. -- (x2,x2)-->T361 ==> Stat4: (EXISTS f in OM | one_1_map(f) & Ord(domain(f)) & (range(f) = (x2 ¥PROD x2)) & (FORALL x in domain(f) | (EXISTS y in (x2 + x2) | range(f ¥ON x) ¥incin (y ¥PROD y)))) f-->Stat4() ==> Stat5: one_1_map(f) & Ord(domain(f)) & (range(f) = (x2 ¥PROD x2)) & Stat6: (FORALL x in domain(f) | (EXISTS y in (x2 + x2) | range(f ¥ON x) ¥incin (y ¥PROD y))) (f,x2)-->T80 ==> Stat7: range(f ¥ON x2) ¥incin (x2 ¥PROD x2) -- -- Our next aim is to show that $#domain(f)$ is no more than $x2$. This will follow -- from the fact that for each $x$ in $domain(f)$, $#x$ is less than $x2$. -- Suppose ==> not(#domain(f) ¥incin x2) (domain(f))-->T156() ==> Ord(#domain(f)) (#domain(f),x2)-->T35 ==> x2 in #domain(f) (domain(f),domain(f))-->T169(Stat2) ==> Stat8: x2 in domain(f) x2-->Stat6(Stat8) ==> Stat9: (EXISTS y in (x2 + x2) | range(f ¥ON x2) ¥incin (y ¥PROD y)) y-->Stat9(Stat9) ==> Stat10: (y in x2) & (range(f ¥ON x2) ¥incin (y ¥PROD y)) (Stat10,Stat7*)ELEM ==> Stat11: range(f ¥ON x2) ¥incin ((y ¥PROD y) * (x2 ¥PROD x2)) (y,y,x2,x2)-->T257(Stat11) ==> range(f ¥ON x2) ¥incin ((y * x2) ¥PROD (y * x2)) (y * x2,y,y * x2,x2)-->T256 ==> range(f ¥ON x2) ¥incin (y ¥PROD y) (x2,y)-->T12 ==> Stat12: Ord(y) (domain(f),x2)-->T13 ==> x2 ¥incin domain(f) (f,x2)-->T94 ==> domain(f ¥ON x2) = x2 EQUAL ==> not Finite(domain(f ¥ON x2)) (f,x2)-->T58 ==> one_1_map(f ¥ON x2) (f ¥ON x2)-->T191 ==> not Finite(range(f ¥ON x2)) (y ¥PROD y,range(f ¥ON x2))-->T189 ==> not Finite(y ¥PROD y) (y,y)-->T262 ==> not Finite(y) Suppose ==> y = 0 EQUAL ==> not Finite(0) T188 ==> false; Discharge ==> y /= 0 y-->Stat1 ==> #y notin #(y ¥PROD y) y-->T156 ==> Ord(#y) (y ¥PROD y)-->T156 ==> Ord(#(y ¥PROD y)) (#(y ¥PROD y),#y)-->T35 ==> #(y ¥PROD y) ¥incin #y (y,y)-->T250 ==> #y = #(y ¥PROD y) (range(f ¥ON x2),y ¥PROD y)-->T170 ==> #range(f ¥ON x2) ¥incin #y (f ¥ON x2)-->T157 ==> #domain(f ¥ON x2) ¥incin #y -- -- And now we have a contradiction with the fact that $y in x2$, thereby proving our theorem. -- EQUAL ==> Stat13: x2 ¥incin #y (y,y)-->T169(Stat12,Stat13*) ==> x2 ¥incin y Discharge ==> #domain(f) ¥incin x2 f-->T157 ==> #domain(f) = #range(f) EQUAL ==> #(x2 ¥PROD x2) ¥incin x2 Discharge ==> QED -- -- ************************************************************************************************ -- Section 9: The signed integers -- ************************************************************************************************ -- -- After the preceding digression to prove the Cardinal Product theorem, we now return to our main task: -- developing the standard foundations of analysis. Our first step is to define signed integers -- and prove their properties. Signed integers and the arithmetic operations on them are defined as follows. -- Note that we choose to define a signed integer as a pair $[x,y]$ of ordinary integers, -- one or both of which is always zero. The idea is that $[x,0]$ represents the positive integer $x$, while -- $[0,x]$ represents the negative integer $-x$. -- Def 26: [The signed Integers] Si := {[x,y]: x in Za, y in Za | x = 0 or y = 0} Def 27: [Signed Integer Reduction to Normal Form] Red(P) := [car(P) ¥MINUS (car(P) * cdr(P)),cdr(P) ¥MINUS (car(P) * cdr(P))] Def 28: [Signed addition] Def(MM ¥S_PLUS NN) := Red([car(MM) ¥PLUS car(NN),cdr(MM) ¥PLUS cdr(NN)]) Def 28a: [Absolute value of a signed integer] S_ABS(M) := [car(M) + cdr(M),0] Def 28b: [Negative of a signed integer] S_Rev(M) := [cdr(M),car(M)] Def 29: [Signed Product] Def(MM ¥S_TIMES NN) := Red([(car(MM) ¥TIMES car(NN)) ¥PLUS (cdr(MM) ¥TIMES cdr(NN)),(car(MM) ¥TIMES cdr(NN)) ¥PLUS (car(NN) ¥TIMES cdr(MM))]) Def 32: [Signed Difference] Def(N ¥S_MINUS M) := Red([cdr(M) ¥PLUS car(N),car(M) ¥PLUS cdr(N)]) Def 33: [Sign of a signed integer] is_nonneg(x) := car(x) incs cdr(x) -- -- Our first result concerning the small family of operations just introduced is that -- the reduction $Red([m,n])$ of any pair of positive integers is a signed integer, and that -- $m * n$ is always $0$. -- Theorem 366: [Reduced form of an integer pair] ((M in Za) & (N in Za)) ¥imp ((Red([M,N]) in Si) & (M * N in Za)). Proof: Suppose_not(m,n) ==> (m in Za) & (n in Za) & (Red([m,n]) notin Si or (m * n notin Za)) -- -- For suppose that there is a counterexample $m$, $n$ to our assertion. $m$ and $n$ -- are plainly finite ordinals, and so their intersection is also a finite ordinal -- and therefore an integer. Hence the differences $m ¥MINUS (m * n)$ and $n ¥MINUS (m * n)$ -- are integers also. -- m-->T206 ==> Card(m) & Finite(m) n-->T206 ==> Card(n) & Finite(n) Use_def(Card) ==> Ord(m) & Ord(n) (m,n)-->T28 ==> Ord(m * n) (m,m * n)-->T189 ==> Finite(m * n) (m * n)-->T205 ==> Card(m * n) (m * n)-->T206 ==> m * n in Za (m,m * n)-->T283 ==> (m ¥MINUS (m * n)) in Za (n,m * n)-->T283 ==> (n ¥MINUS (m * n)) in Za -- -- Since we have seen that $m * n$ is an integer, only the second conclusion of our theorem -- can fail. But one of $m$ and $n$ must be no larger than the other, and if, e.g. this is $m$ we have -- $m * n = m$ and so $Red([m,n]) = m ¥MINUS m$ by definition, implying $Red([m,n]) = 0$ and so -- proving that $Red([m,n]) in Si$. The proof in case $n$ is no larger than $m$ is equally trivial. -- (m,n)-->T29 ==> (m ¥incin n) or (n ¥incin m) ELEM ==> (m * n = m or m * n = n) & (Red([m,n]) notin Si) Use_def(Red) ==> [m ¥MINUS (m * n),n ¥MINUS (m * n)] notin Si Use_def(Si) ==> Stat1: [m ¥MINUS (m * n),n ¥MINUS (m * n)] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (m ¥MINUS (m * n),n ¥MINUS (m * n))-->Stat1 ==> (m ¥MINUS (m * n) /= 0) & (n ¥MINUS (m * n) /= 0) Suppose ==> m * n = m EQUAL ==> (m ¥MINUS m) /= 0 m-->T267 ==> false; Discharge ==> m * n = n EQUAL ==> (n ¥MINUS n) /= 0 n-->T267 ==> false; Discharge ==> QED -- -- Next we note an entirely trivial consequence of our definition of signed integers: if $n$ is -- and unsigned integer, then $[n,0]$ (the signed version of $n$) and $[0,n]$ (corresponding to $n$) -- are signed integers. -- Theorem 367: [Embedding of integers in the signed integers] (N in Za) ¥imp (([N,0] in Si) & ([0,N] in Si)). Proof: Suppose_not(n) ==> (n in Za) & (([n,0] notin Si) or ([0,n] notin Si)) T211 ==> 0 in Za Use_def(Si) ==> Si = {[x,y]: x in Za, y in Za | x = 0 or y = 0} Suppose ==> Stat1: [n,0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (n,0)-->Stat1 ==> false; Discharge ==> Stat2: [0,n] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (0,n)-->Stat2 ==> false; Discharge ==> QED -- -- It is also trivial that $[0,0]$ (the signed $0$), $[0,1]$ (the signed $1$), and $[0,1]$ (corresponding to $-1$) -- are all signed integers. -- Theorem 368: [Basic properties of the signed integers 0,1, and -1] ([0,0] in Si) & ([1,0] in Si) & ([0,1] in Si) & ([1,0] /= [0,0]) & ([0,1] /= [0,0]) & ([1,0] /= [0,1]). Proof: Suppose_not ==> not(([0,0] in Si) & ([1,0] in Si) & ([0,1] in Si) & ([1,0] /= [0,0]) & ([0,1] /= [0,0]) & ([1,0] /= [0,1])) T212 ==> not(([0,0] in Si) & ([1,0] in Si) & ([0,1] in Si)) T211 ==> (0 in Za) & (1 in Za) 1-->T367 ==> [0,0] notin Si 0-->T367 ==> false; Discharge ==> QED -- -- Next we note various elementary facts concerning signed integers: they are always pairs of unsigned integers, -- one of which is zero; signed integers are invariant under the reduction operator $Red$; -- and the minimum of the two components of a signed integer is always $0$. -- Theorem 369: [The signed integers as integer pairs with one component equal to 0] (N in Si) ¥imp ((N = [car(N),cdr(N)]) & (car(N) = 0 or cdr(N) = 0) & (car(N) in Za) & (cdr(N) in Za) & (Red(N) = N) & (car(N) * cdr(N) = 0)). Proof: Suppose_not(n) ==> Stat1: (n in Si) & ((n /= [car(n),cdr(n)]) or ((car(n) /= 0) & (cdr(n) /= 0)) or (car(n) notin Za) or (cdr(n) notin Za) or (Red(n) /= n) or (car(n) * cdr(n) /= 0)) -- -- Since $n$ is a signed integer, it has the form$ n = [i,j]$ where either $i$ or $j$ is $0$. Hence -- our assertion can only be false if $Red(n) /= n$. But by definition $Red(n) = [i ¥MINUS (i * j),j ¥MINUS (i * j)]$, -- so our assertion follows immediately from Theorem 207 and Theorem 268. -- Use_def(Si) ==> Stat2: n in {[x,y]: x in Za, y in Za | x = 0 or y = 0} (i,j)-->Stat2 ==> Stat3: (n = [i,j]) & (i in Za) & (j in Za) & (i = 0 or j = 0) ELEM ==> Stat4: i * j = 0 (Stat3)ELEM ==> Stat5: ((car(n) = 0) or (cdr(n) = 0)) & (car(n) in Za) & (cdr(n) in Za) & (car(n) * cdr(n) = 0) (Stat3,Stat4)ELEM ==> Stat6: n = [car(n),cdr(n)] (Stat1,Stat5,Stat6*)ELEM ==> Stat7: Red(n) /= n Use_def(Red) ==> Stat8: Red([i,j]) = [i ¥MINUS (i * j),j ¥MINUS (i * j)] EQUAL ==> Red([i,j]) = Red(n) EQUAL ==> i ¥MINUS (i * j) = i ¥MINUS 0 EQUAL ==> j ¥MINUS (i * j) = j ¥MINUS 0 i-->T268 ==> i ¥MINUS 0 = #i j-->T268 ==> j ¥MINUS 0 = #j (Stat8)ELEM ==> Stat9: Red(n) = [#i,#j] i-->T207 ==> i = #i j-->T207 ==> j = #j (Stat9)ELEM ==> Stat10: Red(n) = [i,j] (Stat3,Stat7,Stat10*)Discharge ==> QED -- -- The following variant form of the preceding theorem is often a bit more useful. -- Theorem 370: [Signed integers as integer pairs, 2] (N in Si) ¥imp ((N = [car(N),0] or N = [0,cdr(N)]) & (car(N) = 0 or cdr(N) = 0) & (car(N) in Za) & (cdr(N) in Za) & (Red(N) = N) & (car(N) * cdr(N) = 0)). Proof: Suppose_not(n) ==> Stat1: (n in Si) & (not((n = [car(n),0] or n = [0,cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) & (Red(n) = n) & (car(n) * cdr(n) = 0))) n-->T369 ==> (n = [car(n),cdr(n)]) & (not(n = [car(n),0] or n = [0,cdr(n)])) & (car(n) = 0 or cdr(n) = 0) Suppose ==> car(n) = 0 Discharge ==> cdr(n) = 0 Discharge ==> QED -- -- The following theorem states that the set of signed integers is closed under addition and multiplication. -- Theorem 371: ((N in Si) & (M in Si)) ¥imp ((N ¥S_PLUS M in Si) & (N ¥S_TIMES M in Si)). Proof: -- -- The proof is elementary. We just use the definitions of the operators involved and the information -- concerning the form of signed integers provided by Theorem 369. -- Suppose_not(n,m) ==> (n in Si) & (m in Si) & (not((n ¥S_PLUS m in Si) & (n ¥S_TIMES m in Si))) n-->T369 ==> (car(n) in Za) & (cdr(n) in Za) m-->T369 ==> (car(m) in Za) & (cdr(m) in Za) Use_def(¥S_PLUS) ==> n ¥S_PLUS m = Red([car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m)]) ALGEBRA ==> (car(n) ¥PLUS car(m) in Za) & (cdr(n) ¥PLUS cdr(m) in Za) (car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m))-->T366 ==> n ¥S_PLUS m in Si Use_def(¥S_TIMES) ==> n ¥S_TIMES m = Red([(car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)),(car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n))]) ALGEBRA ==> ((car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)) in Za) & ((car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n)) in Za) ((car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)),(car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n)))-->T366 ==> false; Discharge ==> QED -- -- Our next theorem asserts that the negative $S_Rev(n)$ of a signed integer, and the difference -- $n ¥S_MINUS m$ of two signed integers, are always signed integers. -- Theorem 372: [Sign reversal and subtraction for signed integers] ((N in Si) & (M in Si)) ¥imp ((S_Rev(M) in Si) & (N ¥S_MINUS M in Si)). Proof: Suppose_not(n,m) ==> (n in Si) & (m in Si) & (not((S_Rev(m) in Si) & (n ¥S_MINUS m in Si))) -- -- For a signed integer $n$ is simply a pair $[a,b]$ of ordinary integers one of which is zero, -- so plainly its reverse $[b,a]$ has the same property. -- n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) = 0 or cdr(m) = 0) & (car(m) in Za) & (cdr(m) in Za) Use_def(S_Rev) ==> S_Rev(m) = [cdr(m),car(m)] ELEM ==> (car([cdr(m),car(m)]) = cdr(m)) & (cdr([cdr(m),car(m)]) = car(m)) EQUAL ==> (car(S_Rev(m)) = cdr(m)) & (cdr(S_Rev(m)) = car(m)) Suppose ==> S_Rev(m) notin Si Use_def(Si) ==> Stat1: S_Rev(m) notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (cdr(m), car(m))-->Stat1 ==> false; Discharge ==> S_Rev(m) in Si ELEM ==> (n ¥S_MINUS m) notin Si -- -- Moreover the difference of two signed integers is by definition the reduction of a -- pair of unsigned integers, and so is a signed integer by definition. -- Use_def(¥S_MINUS) ==> Red([cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)]) notin Si ALGEBRA ==> ((cdr(m) ¥PLUS car(n)) in Za) & ((car(m) ¥PLUS cdr(n)) in Za) (cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n))-->T366 ==> false; Discharge ==> QED -- -- Our next lemma states the elementary fact that any pair $[n,n]$ of unsigned integers -- reduces to the pair [0,0]. -- Theorem 373: [Reduction of an integer pair $(n,n)$ always gives the signed 0 value] (N in Za) ¥imp (Red([N,N]) = [0,0]). Proof: Suppose_not(n) ==> (n in Za) & (Red([n,n]) /= [0,0]) Use_def(Red) ==> Red([n,n]) = [n ¥MINUS (n * n),n ¥MINUS (n * n)] ELEM ==> n * n = n EQUAL ==> Red([n,n]) = [n ¥MINUS n,n ¥MINUS n] n-->T267 ==> false; Discharge ==> QED -- -- The following theorem, which generalizes the Lemma just noted, states that the value to which -- any pair $[j,k]$ of integers reduces is unchanged if a common integer $m$ is added to both $i$ and $j$. -- Theorem 374: [Reduction removes any common value added to the components of an integer pair] ((J in Za) & (K in Za) & (M in Za)) ¥imp (Red([J ¥PLUS M,K ¥PLUS M]) = Red([J,K])). Proof+: Suppose_not(j,k,m) ==> AUTO -- -- Suppose that $j,k,m$ form a counterexample to our theorem. Of the two integers $j$, $k$ one is smaller. -- Suppose for the moment that this is $j$, so that $j$ is a subset of $k$. -- It follows that $j * k = j$, so by definition of the reduction operator, $Red([j,k]) = [0,k ¥MINUS j]$. -- Use_def(Red) ==> Red([j ¥PLUS m,k ¥PLUS m]) = [(j ¥PLUS m) ¥MINUS ((j ¥PLUS m) * (k ¥PLUS m)), (k ¥PLUS m) ¥MINUS ((j ¥PLUS m) * (k ¥PLUS m))] Use_def(Red) ==> Red([j,k]) = [j ¥MINUS (j * k),k ¥MINUS (j * k)] (j,k)-->T29 ==> (j ¥incin k) or (k ¥incin j) Suppose ==> j ¥incin k ELEM ==> j * k = j EQUAL ==> Stat1: Red([j,k]) = [j ¥MINUS j,k ¥MINUS j] j-->T267(Stat1) ==> Red([j,k]) = [0,k ¥MINUS j] -- -- By the monotonicity of addition, $j ¥PLUS m$ is no greater than $k ¥PLUS m$, -- so it follows by the same argument as above that $Red([j ¥PLUS m,k ¥PLUS m]) = [0,(k ¥PLUS m) ¥MINUS (j ¥PLUS m)]$. -- Using Theorem 267 we now see that $Red([j ¥PLUS m,k ¥PLUS m]) = Red([j,k])$, -- a contradiction which excludes the possibility that $j$ is less than $k$. -- (j,k,m)-->T290 ==> (j ¥PLUS m) ¥incin (k ¥PLUS m) ELEM ==> (j ¥PLUS m) * (k ¥PLUS m) = j ¥PLUS m EQUAL ==> Stat2: Red([j ¥PLUS m,k ¥PLUS m]) = [(j ¥PLUS m) ¥MINUS (j ¥PLUS m),(k ¥PLUS m) ¥MINUS (j ¥PLUS m)] (j ¥PLUS m)-->T267(Stat2) ==> (j ¥PLUS m) ¥MINUS (j ¥PLUS m) = 0 (Stat2)ELEM ==> Red([j ¥PLUS m,k ¥PLUS m]) = [0,(k ¥PLUS m) ¥MINUS (j ¥PLUS m)] (k,j,m)-->T314 ==> (k ¥PLUS m) ¥MINUS (j ¥PLUS m) = k ¥MINUS j EQUAL ==> false; Discharge ==> k ¥incin j -- -- It follows that $k$ is less than $j$. But in this case an argument exactly symmetric to that -- just given leads to a contradiction, which proves our theorem. -- ELEM ==> j * k = k EQUAL ==> Red([j,k]) = [j ¥MINUS k,k ¥MINUS k] k-->T267 ==> k ¥MINUS k = 0 EQUAL ==> Red([j,k]) = [j ¥MINUS k,0] (k,j,m)-->T290 ==> (k ¥PLUS m) ¥incin (j ¥PLUS m) ELEM ==> (k ¥PLUS m) * (j ¥PLUS m) = k ¥PLUS m Use_def(Red) ==> Red([j ¥PLUS m,k ¥PLUS m]) = [(j ¥PLUS m) ¥MINUS (car([j ¥PLUS m,k ¥PLUS m]) * cdr([j ¥PLUS m,k ¥PLUS m])), (k ¥PLUS m) ¥MINUS (car([j ¥PLUS m,k ¥PLUS m]) * cdr([j ¥PLUS m,k ¥PLUS m]))] ELEM ==> car([j ¥PLUS m,k ¥PLUS m]) * cdr([j ¥PLUS m,k ¥PLUS m]) = k ¥PLUS m EQUAL ==> Red([j ¥PLUS m,k ¥PLUS m]) = [(j ¥PLUS m) ¥MINUS (k ¥PLUS m),(k ¥PLUS m) ¥MINUS (k ¥PLUS m)] (k ¥PLUS m)-->T267 ==> (k ¥PLUS m) ¥MINUS (k ¥PLUS m) = 0 EQUAL ==> Red([j ¥PLUS m,k ¥PLUS m]) = [(j ¥PLUS m) ¥MINUS (k ¥PLUS m),0] (j,k,m)-->T314 ==> ((j ¥PLUS m) ¥MINUS (k ¥PLUS m)) = (j ¥MINUS k) EQUAL ==> false; Discharge ==> QED -- -- Next we show that the intersection of two unsigned integers, being -- the smaller of the two, is an unsigned integer. -- Theorem 375: [The intersection of two unsigned integers is the smaller of the two] ((N in Za) & (M in Za)) ¥imp (((N * M) in Za) & ((N * M) in {N,M}) & ((N ¥MINUS (N * M)) in Za) & ((M ¥MINUS (N * M)) in Za)). Proof+: Suppose_not(n,m) ==> AUTO (n,m)-->T29 ==> (n * m in Za) & ((n * m = n) or (n * m = m)) (n,n * m)-->T283 ==> (n ¥MINUS (n * m)) in Za (m,n * m)-->T283 ==> (m ¥MINUS (n * m)) in Za Discharge ==> QED -- -- Next we show that the signed integer sum of any two pairs of integers is the sum of the -- first with the reduction of the second. -- Theorem 376: [The signed sum of two integer pairs is the sum of the first with the reduced form of the second] ((J in Za) & (K in Za) & (N in Za) & (M in Za)) ¥imp ([J,K] ¥S_PLUS [N,M] = [J,K] ¥S_PLUS Red([N,M])). Proof: Suppose_not(j,k,n,m) ==> AUTO -- -- For suppose that there is a counterexample $j,k,n,m$ to our assertion. Of the two integers $n$, $m$, -- one is smaller, so that $n * m$ is an integer in any case. -- n-->T207 ==> n = #n m-->T207 ==> m = #m (n,m)-->T375(*) ==> ((n * m) in Za) & (((n * m) = n) or ((n * m) = m)) & ((n ¥MINUS (n * m)) in Za) & ((m ¥MINUS (n * m)) in Za) -- -- Use of the definitions of the $¥S_PLUS$ and $Red$ operators converts -- the negative of our theorem into the inequality just below. -- Use_def(¥S_PLUS) ==> Red([j ¥PLUS n,k ¥PLUS m]) /= Red([j ¥PLUS car(Red([n,m])),k ¥PLUS cdr(Red([n,m]))]) Use_def(Red) ==> Stat1: Red([n,m]) = [n ¥MINUS (n * m),m ¥MINUS (n * m)] (Stat1)ELEM ==> (n incs n * m) & (m incs n * m) & (car(Red([n,m])) = n ¥MINUS (n * m)) & (cdr(Red([n,m])) = m ¥MINUS (n * m)) EQUAL ==> Red([j ¥PLUS n,k ¥PLUS m]) /= Red([j ¥PLUS (n ¥MINUS (n * m)),(k ¥PLUS (m ¥MINUS (n * m)))]) -- -- But we can add $n * m$ to both components of the pair seen on the right-hand side of this last inequality -- without changing its reduction, and so after a bit more algebraic manipulation derive a contradiction -- which proves the present theorem. -- ALGEBRA ==> (j ¥PLUS (n ¥MINUS (n * m)) in Za) & (k ¥PLUS (m ¥MINUS (n * m)) in Za) (j ¥PLUS (n ¥MINUS (n * m)),k ¥PLUS (m ¥MINUS (n * m)),(n * m))-->T374 ==> Red([j ¥PLUS (n ¥MINUS (n * m)),k ¥PLUS (m ¥MINUS (n * m))]) = Red([(j ¥PLUS (n ¥MINUS (n * m))) ¥PLUS (n * m),(k ¥PLUS (m ¥MINUS (n * m))) ¥PLUS (n * m)]) ALGEBRA ==> Red([j ¥PLUS (n ¥MINUS (n * m)),(k ¥PLUS (m ¥MINUS (n * m)))]) = Red([j ¥PLUS ((n ¥MINUS (n * m)) ¥PLUS (n * m)),k ¥PLUS ((m ¥MINUS (n * m)) ¥PLUS (n * m))]) (n*m,n)-->T272 ==> (n ¥MINUS (n * m)) ¥PLUS (n * m) = n (n*m,m)-->T272 ==> (m ¥MINUS (n * m)) ¥PLUS (n * m) = m EQUAL ==> false; Discharge ==> QED -- -- The following elementary corollary to the theorem just proved tells us that addition of any pair $p$ -- of integers to a signed integer $x$ produces the same result as addition of the reduced form of $p$ to $x$. -- Theorem 377: [The sum of a signed integer and an integer pair remains the same if the pair is reduced] ((K in Si) & (N in Za) & (M in Za)) ¥imp (K ¥S_PLUS [N,M] = K ¥S_PLUS Red([N,M])). Proof: Suppose_not(k,n,m) ==> AUTO k-->T369 ==> (k = [car(k),cdr(k)]) & (car(k) = 0 or cdr(k) = 0) & (car(k) in Za) & (cdr(k) in Za) & (Red(k) =k) (car(k),cdr(k),n,m)-->T376 ==> [car(k),cdr(k)] ¥S_PLUS [n,m] = [car(k),cdr(k)] ¥S_PLUS Red([n,m]) EQUAL ==> false; Discharge ==> QED -- -- The following 'multiplication' analog to Theorem 377 states that multiplication of a signed integer $k$ -- by any pair $p$ of integers produces the same result as multiplication of $k$ by the reduced form of $p$. -- Theorem 378: [The product of a signed integer and an integer pair remains the same if the pair is reduced] ((K in Si) & (N in Za) & (M in Za)) ¥imp (K ¥S_TIMES [N,M] = K ¥S_TIMES Red([N,M])). Proof: Suppose_not(k,n,m) ==> (k in Si) & (n in Za) & (m in Za) & (k ¥S_TIMES [n,m] /= k ¥S_TIMES Red([n,m])) -- -- For suppose that $k = [cak,cdk]$, $n$, $m$ comprise a counterexample to our theorem, where plainly all of -- $cak$, $cdk$, $n$, $m$ must be integers, and so must all the other quantities formed from them in the argument which follows. -- Since $n * m$ is the minimum of $n$ and $m$ and so is no more than either, we have $(n ¥MINUS (n * m)) ¥PLUS (n * m) = n$, -- and $(m ¥MINUS (n * m)) ¥PLUS (n * m) = m$, by theorems on unsigned integer subtractioand addition proved earlier. -- k-->T369 ==> Stat1: (k = [car(k),cdr(k)]) & (car(k) = 0 or cdr(k) = 0) & (car(k) in Za) & (cdr(k) in Za) & (Red(k) = k) (n,m)-->T375(*) ==> ((n * m) in Za) & ((n ¥MINUS (n * m)) in Za) & ((m ¥MINUS (n * m)) in Za) n-->T207 ==> (n = #n) m-->T207 ==> (m = #m) (n * m)-->T207 ==> (n * m) = #(n * m) (n * m,n)-->T271 ==> #(n * m) ¥PLUS (n ¥MINUS (n * m)) = #n (n * m,m)-->T271 ==> #(n * m) ¥PLUS (m ¥MINUS (n * m)) = #m EQUAL ==> (n * m) ¥PLUS (n ¥MINUS (n * m)) = n EQUAL ==> (n * m) ¥PLUS (m ¥MINUS (n * m)) = m (n ¥MINUS (n * m),n * m)-->T252 ==> Stat2: (n ¥MINUS (n * m)) ¥PLUS (n * m) = n (m ¥MINUS (n * m),n * m)-->T252 ==> Stat3: (m ¥MINUS (n * m)) ¥PLUS (n * m) = m -- -- Using the definitions of signed integer multiplication and of reduction we can expand -- the negative of our theorem into the inequality between reductions seen below. -- Use_def(¥S_TIMES) ==> Red([(car(k) ¥TIMES n) ¥PLUS (cdr(k) ¥TIMES m),(car(k) ¥TIMES m) ¥PLUS (n ¥TIMES cdr(k))]) /= Red([(car(k) ¥TIMES car(Red([n,m]))) ¥PLUS (cdr(k) ¥TIMES cdr(Red([n,m]))), (car(k) ¥TIMES cdr(Red([n,m]))) ¥PLUS (car(Red([n,m])) ¥TIMES cdr(k))]) Loc_def ==> Stat4: cak = car(k) Loc_def ==> Stat5: cdk = cdr(k) (Stat1,Stat4,Stat5)ELEM ==> (k = [cak,cdk]) & (cak in Za) & (cdk in Za) Use_def(Red) ==> Stat6: Red([n,m]) = [n ¥MINUS (n * m),m ¥MINUS (n * m)] EQUAL ==> Red([(cak ¥TIMES n) ¥PLUS (cdk ¥TIMES m),(cak ¥TIMES m) ¥PLUS (n ¥TIMES cdk)]) /= Red([(cak ¥TIMES car(Red([n,m]))) ¥PLUS (cdk ¥TIMES cdr(Red([n,m]))), (cak ¥TIMES cdr(Red([n,m]))) ¥PLUS (car(Red([n,m])) ¥TIMES cdk)]) (Stat6)ELEM ==> (n incs (n * m)) & (m incs (n * m)) & (car(Red([n,m])) = n ¥MINUS (n * m)) & (cdr(Red([n,m])) = m ¥MINUS (n * m)) EQUAL ==> Red([(cak ¥TIMES n) ¥PLUS (cdk ¥TIMES m),(cak ¥TIMES m) ¥PLUS (n ¥TIMES cdk)]) /= Red([(cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m))), (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk)]) ALGEBRA ==> (cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m))) in Za ALGEBRA ==> (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk) in Za ALGEBRA ==> (cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m)) in Za -- -- But now adding the quantity $((cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m)))$ to both components -- of the right hand side of this last inequality allows us to reduce it, via a series of elementary algebraic -- transformations, to $Red([(cak ¥TIMES n) ¥PLUS (cdk ¥TIMES m),(cak ¥TIMES m) ¥PLUS (cdk ¥TIMES n)])$, -- ((cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m))),(cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk),(cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m)))-->T374 ==> Red([(cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m))), (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk)]) = Red([((cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m)))) ¥PLUS ((cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m))), (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk) ¥PLUS ((cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m)))]) ALGEBRA ==> ((cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m)))) ¥PLUS ((cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m))) = ((cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m)))) ¥PLUS (cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m)) ALGEBRA ==> (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk) ¥PLUS ((cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m))) = (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk) ¥PLUS (cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m)) EQUAL ==> Red([(cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m))), (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk)]) = Red([((cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m)))) ¥PLUS (cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m)), (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk) ¥PLUS (cak ¥TIMES (n * m)) ¥PLUS (cdk ¥TIMES (n * m))]) ALGEBRA ==> Stat7: Red([(cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m))), (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk)]) = Red([(cak ¥TIMES ((n ¥MINUS (n * m)) ¥PLUS (n * m))) ¥PLUS (cdk ¥TIMES ((m ¥MINUS (n * m)) ¥PLUS (n * m))), (cak ¥TIMES ((m ¥MINUS (n * m)) ¥PLUS (n * m))) ¥PLUS (cdk ¥TIMES ((n ¥MINUS (n * m)) ¥PLUS (n * m)))]) EQUAL(Stat2,Stat3,Stat7) ==> Red([(cak ¥TIMES (n ¥MINUS (n * m))) ¥PLUS (cdk ¥TIMES (m ¥MINUS (n * m))), (cak ¥TIMES (m ¥MINUS (n * m))) ¥PLUS ((n ¥MINUS (n * m)) ¥TIMES cdk)]) = Red([(cak ¥TIMES n) ¥PLUS (cdk ¥TIMES m),(cak ¥TIMES m) ¥PLUS (cdk ¥TIMES n)]) -- -- and now a contraction results immediately by one final algebraic step, completing the proof of the present theorem. -- ALGEBRA ==> Red([(cak ¥TIMES n) ¥PLUS (cdk ¥TIMES m),(cak ¥TIMES m) ¥PLUS (cdk ¥TIMES n)]) = Red([(cak ¥TIMES n) ¥PLUS (cdk ¥TIMES m),(cak ¥TIMES m) ¥PLUS (n ¥TIMES cdk)]) Discharge ==> QED -- -- The two following elementary lemmas prepare for proof of the commutativity -- of signed integer addition. We first prove commutativity for -- the sum of a signed integer with an arbitrary pair of unsigned -- integers. -- Theorem 379: [Commutativity lemma for signed integers] ((K in Si) & (N in Za) & (M in Za)) ¥imp (K ¥S_PLUS [N,M] = [N,M] ¥S_PLUS K). Proof: Suppose_not(k,n,m) ==> AUTO k-->T369 ==> (k = [car(k),cdr(k)]) & (car(k) = 0 or cdr(k) = 0) & (car(k) in Za) & (cdr(k) in Za) Use_def(¥S_PLUS) ==> Red([car(k) ¥PLUS car([n,m]),cdr(k) ¥PLUS cdr([n,m])]) /= Red([car([n,m]) ¥PLUS car(k),cdr([n,m]) ¥PLUS cdr(k)]) ELEM ==> Red([car(k) ¥PLUS n,cdr(k) ¥PLUS m]) /= Red([n ¥PLUS car(k),m ¥PLUS cdr(k)]) ALGEBRA ==> false; Discharge ==> QED -- -- Next we prove commutativity for the sum of two pairs of unsigned integers. -- Theorem 380: [Commutativity lemma for signed integers, 2] ((J in Za) & (K in Za) & (N in Za) & (M in Za)) ¥imp ([J,K] ¥S_PLUS [N,M] = [N,M] ¥S_PLUS [J,K]). Proof: Suppose_not(j,k,n,m) ==> AUTO Use_def(¥S_PLUS) ==> Red([car([j,k]) ¥PLUS car([n,m]),cdr([j,k]) ¥PLUS cdr([n,m])]) /= Red([car([n,m]) ¥PLUS car([j,k]),cdr([n,m]) ¥PLUS cdr([j,k])]) ELEM ==> Red([j ¥PLUS n,k ¥PLUS m]) /= Red([n ¥PLUS j,m ¥PLUS k]) ALGEBRA ==> false; Discharge ==> QED -- -- Using the lemmas just proved, we can show immediately that signed integer addition is -- commutative. -- Theorem 381: [Commutative law for signed integer addition] ((N in Si) & (M in Si)) ¥imp (N ¥S_PLUS M = M ¥S_PLUS N). Proof: Suppose_not(n,m) ==> AUTO m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) = 0 or cdr(m) = 0) & (car(m) in Za) & (cdr(m) in Za) (n,car(m),cdr(m))-->T379 ==> n ¥S_PLUS [car(m),cdr(m)] = [car(m),cdr(m)] ¥S_PLUS n EQUAL ==> false; Discharge ==> QED -- -- Using commutativity we can prove the following occasionally useful variants of Theorem 376, -- the first stating that the sum of two pairs of unsigned integers is the sum of the reduction of the first pair -- with the second pair, while the next states that the same sum is is the sum of the first pair -- with the reduction of the second pair. Both proofs are elementary applicaions of fromulae already established. -- Theorem 382: [The sum of two integer pairs remains the same if the first is reduced] ((J in Za) & (K in Za) & (N in Za) & (M in Za)) ¥imp ([J,K] ¥S_PLUS [N,M] = Red([J,K]) ¥S_PLUS [N,M]). Proof: Suppose_not(j,k,n,m) ==> AUTO (j,k,n,m)-->T380 ==> [j,k] ¥S_PLUS [n,m] = [n,m] ¥S_PLUS [j,k] (j,k)-->T366 ==> Red([j,k]) in Si (Red([j,k]),n,m)-->T379 ==> (Red([j,k]) ¥S_PLUS [n,m]) = ([n,m] ¥S_PLUS Red([j,k])) (n,m,j,k)-->T376 ==> false; Discharge ==> QED -- -- It is equally easy to show that the sum of two pairs of unsigned integers is the sum of their reductions. -- Theorem 383: [The sum of two integer pairs remains the same if both are reduced] ((J in Za) & (K in Za) & (N in Za) & (M in Za)) ¥imp ([J,K] ¥S_PLUS [N,M] = Red([J,K]) ¥S_PLUS Red([N,M])). Proof: Suppose_not(j,k,n,m) ==> AUTO (j,k)-->T366 ==> Red([j,k]) in Si (j,k,n,m)-->T382 ==> [j,k] ¥S_PLUS [n,m] = Red([j,k]) ¥S_PLUS [n,m] (Red([j,k]),n,m)-->T377 ==> false; Discharge ==> QED -- -- Our next result gives the commutative law for signed integer multiplication. -- Theorem 384: [Commutative law for signed integer multiplication] ((N in Si) & (M in Si)) ¥imp (N ¥S_TIMES M = M ¥S_TIMES N). Proof: Suppose_not(n,m) ==> AUTO -- -- The proof results immediately by definition of the operators involved and by use of the elementary -- algebraic properties of unsigned integers. -- n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) = 0 or cdr(m) = 0) & (car(m) in Za) & (cdr(m) in Za) ALGEBRA ==> (car(m) ¥TIMES car(n)) ¥PLUS (cdr(m) ¥TIMES cdr(n)) = (car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)) & (car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n)) = (car(m) ¥TIMES cdr(n)) ¥PLUS (car(n) ¥TIMES cdr(m)) Use_def(¥S_TIMES) ==> Red([(car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)), (car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n))]) /= Red([(car(m) ¥TIMES car(n)) ¥PLUS (cdr(m) ¥TIMES cdr(n)), (car(m) ¥TIMES cdr(n)) ¥PLUS (car(n) ¥TIMES cdr(m))]) EQUAL ==> false; Discharge ==> QED -- -- Our next goal is to prove the associative laws of signed integers. We begin by proving the associative law for signed integer addition. -- Theorem 385: [Associative law for signed integer addition] ((K in Si) & (N in Si) & (M in Si)) ¥imp (N ¥S_PLUS (M ¥S_PLUS K) = (N ¥S_PLUS M) ¥S_PLUS K). Proof: -- -- Supposing that $k$, $n$, $m$ form a counterexample to our assertion, we begin by expanding -- the inner '$¥S_PLUS$' operators using their definition, and then using Theorem 359 to -- eliminate the unnecessary reduction operators '$Red$' that appear. -- Suppose_not(k,n,m) ==> AUTO n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) = 0 or cdr(m) = 0) & (car(m) in Za) & (cdr(m) in Za) k-->T369 ==> (k = [car(k),cdr(k)]) & (car(k) = 0 or cdr(k) = 0) & (car(k) in Za) & (cdr(k) in Za) (n,m)-->T371 ==> n ¥S_PLUS m in Si (k,n ¥S_PLUS m)-->T381 ==> (n ¥S_PLUS m) ¥S_PLUS k = k ¥S_PLUS (n ¥S_PLUS m) Use_def(¥S_PLUS) ==> n ¥S_PLUS (m ¥S_PLUS k) = n ¥S_PLUS Red([car(m) ¥PLUS car(k),cdr(m) ¥PLUS cdr(k)]) Use_def(¥S_PLUS) ==> k ¥S_PLUS (n ¥S_PLUS m) = k ¥S_PLUS Red([car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m)]) ALGEBRA ==> (car(m) ¥PLUS car(k) in Za) & (cdr(m) ¥PLUS cdr(k) in Za) (n,car(m) ¥PLUS car(k),cdr(m) ¥PLUS cdr(k))-->T377 ==> (n ¥S_PLUS Red([car(m) ¥PLUS car(k),cdr(m) ¥PLUS cdr(k)])) = n ¥S_PLUS [car(m) ¥PLUS car(k),cdr(m) ¥PLUS cdr(k)] ALGEBRA ==> (car(n) ¥PLUS car(m) in Za) & (cdr(n) ¥PLUS cdr(m) in Za) (k,car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m))-->T377 ==> (k ¥S_PLUS Red([car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m)])) = k ¥S_PLUS [car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m)] -- -- Next we expand the outer '$¥S_PLUS$' operators using their definition, and note that -- by the known algebraic properties of positive integer addition it follows that the -- two resulting expressions are equal, a contradiction which proves our theorem. -- Use_def(¥S_PLUS) ==> n ¥S_PLUS [car(m) ¥PLUS car(k),cdr(m) ¥PLUS cdr(k)] = Red([car(n) ¥PLUS (car(m) ¥PLUS car(k)),cdr(n) ¥PLUS (cdr(m) ¥PLUS cdr(k))]) Use_def(¥S_PLUS) ==> k ¥S_PLUS [car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m)] = Red([car(k) ¥PLUS (car(n) ¥PLUS car(m)),cdr(k) ¥PLUS (cdr(n) ¥PLUS cdr(m))]) ALGEBRA ==> Red([car(n) ¥PLUS (car(m) ¥PLUS car(k)),cdr(n) ¥PLUS (cdr(m) ¥PLUS cdr(k))]) = Red([car(k) ¥PLUS (car(n) ¥PLUS car(m)),cdr(k) ¥PLUS (cdr(n) ¥PLUS cdr(m))]) Discharge ==> QED -- -- Our next theorem gives the distributive law for (signed) integer multiplication over addition. -- Theorem 386: [Distributive law for signed integers] ((K in Si) & (N in Si) & (M in Si)) ¥imp (N ¥S_TIMES (M ¥S_PLUS K) = (N ¥S_TIMES M) ¥S_PLUS (N ¥S_TIMES K)). Proof: -- -- As in all the proofs of the present group, we begin by expanding the operators involved -- into their definitions, and removing all the redundant reduction operators '$Red$' that appear. -- This is first done for the left-hand side of our assertion. -- Suppose_not(k,n,m) ==> AUTO n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) = 0 or cdr(m) = 0) & (car(m) in Za) & (cdr(m) in Za) k-->T369 ==> (k = [car(k),cdr(k)]) & (car(k) = 0 or cdr(k) = 0) & (car(k) in Za) & (cdr(k) in Za) (m,k)-->T371 ==> m ¥S_PLUS k in Si (n,m)-->T371 ==> n ¥S_TIMES m in Si (n,k)-->T371 ==> n ¥S_TIMES k in Si ALGEBRA ==> (car(m) ¥PLUS car(k) in Za) & (cdr(m) ¥PLUS cdr(k) in Za) Use_def(¥S_PLUS) ==> n ¥S_TIMES (m ¥S_PLUS k) = n ¥S_TIMES Red([car(m) ¥PLUS car(k),cdr(m) ¥PLUS cdr(k)]) (n,car(m) ¥PLUS car(k),cdr(m) ¥PLUS cdr(k))-->T378 ==> n ¥S_TIMES (m ¥S_PLUS k) = n ¥S_TIMES [car(m) ¥PLUS car(k),cdr(m) ¥PLUS cdr(k)] Use_def(¥S_TIMES) ==> n ¥S_TIMES (m ¥S_PLUS k) = Red([(car(n) ¥TIMES (car(m) ¥PLUS car(k))) ¥PLUS (cdr(n) ¥TIMES (cdr(m) ¥PLUS cdr(k))), (car(n) ¥TIMES (cdr(m) ¥PLUS cdr(k))) ¥PLUS ((car(m) ¥PLUS car(k)) ¥TIMES cdr(n))]) -- -- Next we expand and simplify the right-hand side of our assertion in the same way. -- Use_def(¥S_TIMES) ==> (n ¥S_TIMES m) ¥S_PLUS (n ¥S_TIMES k) = Red([(car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)),(car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n))]) ¥S_PLUS Red([(car(n) ¥TIMES car(k)) ¥PLUS (cdr(n) ¥TIMES cdr(k)),(car(n) ¥TIMES cdr(k)) ¥PLUS (car(k) ¥TIMES cdr(n))]) ALGEBRA ==> ((car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)) in Za) & ((car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n)) in Za) & ((car(n) ¥TIMES car(k)) ¥PLUS (cdr(n) ¥TIMES cdr(k)) in Za) & ((car(n) ¥TIMES cdr(k)) ¥PLUS (car(k) ¥TIMES cdr(n)) in Za) ((car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)),(car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n)), (car(n) ¥TIMES car(k)) ¥PLUS (cdr(n) ¥TIMES cdr(k)),(car(n) ¥TIMES cdr(k)) ¥PLUS (car(k) ¥TIMES cdr(n)))-->T383 ==> Stat1: (n ¥S_TIMES m) ¥S_PLUS (n ¥S_TIMES k) = ([(car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)),(car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n))]) ¥S_PLUS ([(car(n) ¥TIMES car(k)) ¥PLUS (cdr(n) ¥TIMES cdr(k)),(car(n) ¥TIMES cdr(k)) ¥PLUS (car(k) ¥TIMES cdr(n))]) -- -- We complete our expansion of the left side of our assertion by expanding the central -- signed addition operator which appears in it. -- Use_def(¥S_PLUS) ==> Stat2: ([(car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)),(car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n))]) ¥S_PLUS ([(car(n) ¥TIMES car(k)) ¥PLUS (cdr(n) ¥TIMES cdr(k)),(car(n) ¥TIMES cdr(k)) ¥PLUS (car(k) ¥TIMES cdr(n))]) = Red([((car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m))) ¥PLUS ((car(n) ¥TIMES car(k)) ¥PLUS (cdr(n) ¥TIMES cdr(k))), ((car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n))) ¥PLUS ((car(n) ¥TIMES cdr(k)) ¥PLUS (car(k) ¥TIMES cdr(n)))]) (Stat1,Stat2*)ELEM ==> (n ¥S_TIMES m) ¥S_PLUS (n ¥S_TIMES k) = Red([((car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m))) ¥PLUS ((car(n) ¥TIMES car(k)) ¥PLUS (cdr(n) ¥TIMES cdr(k))), ((car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n))) ¥PLUS ((car(n) ¥TIMES cdr(k)) ¥PLUS (car(k) ¥TIMES cdr(n)))]) -- -- Now rearraangement of thems using the algebraic properties of signed integers brings us to the desired result. -- ALGEBRA ==> (n ¥S_TIMES m) ¥S_PLUS (n ¥S_TIMES k) = Red([(car(n) ¥TIMES (car(m) ¥PLUS car(k))) ¥PLUS (cdr(n) ¥TIMES (cdr(m) ¥PLUS cdr(k))), (car(n) ¥TIMES (cdr(m) ¥PLUS cdr(k))) ¥PLUS ((car(m) ¥PLUS car(k)) ¥TIMES cdr(n))]) Discharge ==> QED -- -- The following easy lemma shows that pairs of the form $[n,0]$ are invariant under the reduction operator 'Red'. -- Theorem 387: [Reduction of a pair $(N,0)$ gives $(N,0)$] (N in Za) ¥imp (Red([N,0]) = [N,0]). Proof: -- -- The result follows trivially from the definition of reduction, since for all such pairs -- the minimum of the two components is clearly 0. -- Suppose_not(n) ==> AUTO Use_def(Red) ==> Red([n,0]) = [n ¥MINUS (n * 0),0 ¥MINUS (n * 0)] TELEM ==> n * 0 = 0 EQUAL ==> Stat1: Red([n,0]) = [n ¥MINUS 0,0 ¥MINUS 0] n-->T268(Stat1) ==> Red([n,0]) = [#n,0 ¥MINUS 0] n-->T207 ==> n = #n EQUAL ==> Red([n,0]) = [n,0 ¥MINUS 0] 0-->T268() ==> (0 ¥MINUS 0) = #0 T188 ==> Card(0) 0-->T164() ==> 0 = #0 EQUAL ==> false; Discharge ==> QED -- -- Our next result tells us that the embedding $n->[n,0]$ of integers into signed integers is an algebraic isomorphism. -- Theorem 388: [Embedding of Integers in Signed Integers] ((N in Za) & (M in Za)) ¥imp (([N ¥PLUS M,0] = [N,0] ¥S_PLUS [M,0] & [N ¥TIMES M,0] = [N,0] ¥S_TIMES [M,0]) & ((N incs M) ¥imp ([N,0] ¥S_MINUS [M,0] = [N ¥MINUS M,0]))). Proof: Suppose_not(n,m) ==> (n in Za) & (m in Za) & (([n ¥PLUS m,0] /= [n,0] ¥S_PLUS [m,0]) or ([n ¥TIMES m,0] /= [n,0] ¥S_TIMES [m,0]) or ((n incs m) & ([n,0] ¥S_MINUS [m,0] /= [n ¥MINUS m,0]))) -- -- For signed addition and multiplication,our assertion follows immediately from their definitions. -- Use_def(¥S_PLUS) ==> [n,0] ¥S_PLUS [m,0] = Red([n ¥PLUS m,0 ¥PLUS 0]) ALGEBRA ==> ([n,0] ¥S_PLUS [m,0] = Red([n ¥PLUS m,0])) & (n ¥PLUS m in Za) (n ¥PLUS m)-->T387 ==> [n,0] ¥S_PLUS [m,0] = [n ¥PLUS m,0] Use_def(¥S_TIMES) ==> [n,0] ¥S_TIMES [m,0] = Red([(n ¥TIMES m) ¥PLUS (0 ¥TIMES 0),(n ¥TIMES 0) ¥PLUS (m ¥TIMES 0)]) ALGEBRA ==> ((n ¥TIMES m) ¥PLUS (0 ¥TIMES 0) = n ¥TIMES m) & ((n ¥TIMES 0) ¥PLUS (m ¥TIMES 0) = 0) & (n ¥TIMES m in Za) EQUAL ==> [n,0] ¥S_TIMES [m,0] = Red([n ¥TIMES m,0]) (n ¥TIMES m)-->T387 ==> [n ¥TIMES m,0] = [n,0] ¥S_TIMES [m,0] -- -- Thus only the final clause of our theorem can be false. But in this case -- our assertion follows immediately from the definition and fact that -- the unsigned integer difference $m ¥MINUS m$ is zero. -- ELEM ==> (n incs m) & ([n,0] ¥S_MINUS [m,0] /= [n ¥MINUS m,0]) Use_def(¥S_MINUS) ==> [n,0] ¥S_MINUS [m,0] = Red([0 ¥PLUS n,m ¥PLUS 0]) ALGEBRA ==> (0 ¥PLUS n = n) & (m ¥PLUS 0 = m) EQUAL ==> [n ¥MINUS m,0] /= Red([n,m]) Use_def(Red) ==> [n ¥MINUS m,0] /= [n ¥MINUS (n * m),m ¥MINUS (n * m)] ELEM ==> n * m = m EQUAL ==> Stat1: [n ¥MINUS m,0] /= [n ¥MINUS m,m ¥MINUS m] (Stat1)ELEM ==> m ¥MINUS m /= 0 m-->T267 ==> false; Discharge ==> QED -- -- The trivial lemma which now follows states that sign-reversal for signed integers -- corresponds to interchange of their unsigned integer components. -- Theorem 389: [Sign-reversal of signed integers] ((N in Za) & (M in Za)) ¥imp (S_Rev(Red([M,N])) = Red([N,M])). Proof: Suppose_not(n,m) ==> (n in Za) & (m in Za) & (S_Rev(Red([m,n])) /= Red([n,m])) Use_def(Red) ==> S_Rev([m ¥MINUS m * n,n ¥MINUS m * n]) /= [n ¥MINUS m * n,m ¥MINUS m * n] Use_def(S_Rev) ==> false; Discharge ==> QED -- -- Next we show that the negative of the product of two signed integers -- is the product of the first by the negative of the second. -- Theorem 390: [$n*-m=-(n*m)$ for signed integers] ((N in Si) & (M in Si)) ¥imp (N ¥S_TIMES S_Rev(M) = S_Rev(N ¥S_TIMES M)). Proof: Suppose_not(n,m) ==> (n in Si) & (m in Si) & ((n ¥S_TIMES S_Rev(m)) /= S_Rev(n ¥S_TIMES m)) -- -- For let $n$, $m$ form a counterexample to our assertion, and use the definitions -- of the operators involved to express $n ¥S_TIMES S_Rev(m)$ as the reduction of a -- pair formed algebraically from the components of $n$ and $m$. -- n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) in Za) & (cdr(n) in Za) m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) in Za) & (cdr(m) in Za) Use_def(¥S_TIMES) ==> n ¥S_TIMES S_Rev(m) = Red([(car(n) ¥TIMES car(S_Rev(m))) ¥PLUS (cdr(n) ¥TIMES cdr(S_Rev(m))), (car(n) ¥TIMES cdr(S_Rev(m))) ¥PLUS (car(S_Rev(m)) ¥TIMES cdr(n))]) Use_def(S_Rev) ==> Stat1: S_Rev(m) = [cdr(m),car(m)] (Stat1)ELEM ==> car(S_Rev(m)) = cdr(m) (Stat1,Stat1)ELEM ==> cdr(S_Rev(m)) = car(m) EQUAL ==> n ¥S_TIMES S_Rev(m) = Red([(car(n) ¥TIMES cdr(m)) ¥PLUS (cdr(n) ¥TIMES car(m)), (car(n) ¥TIMES car(m)) ¥PLUS (cdr(m) ¥TIMES cdr(n))]) -- -- Now use these definitions once more to express $S_Rev(n ¥S_TIMES m)$ in the same way. -- Then a final bit of algebra on the positive-integer components of the two resulting pairs -- shows that they are equal, ad so proves our theorem. -- Use_def(¥S_TIMES) ==> S_Rev(n ¥S_TIMES m) = S_Rev(Red([(car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)), (car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n))])) ALGEBRA ==> ((car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)) in Za) & ((car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n)) in Za) ((car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n)),(car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m)))-->T389 ==> S_Rev(n ¥S_TIMES m) = Red([(car(n) ¥TIMES cdr(m)) ¥PLUS (car(m) ¥TIMES cdr(n)), (car(n) ¥TIMES car(m)) ¥PLUS (cdr(n) ¥TIMES cdr(m))]) ALGEBRA ==> false; Discharge ==> QED -- -- Our next theorem asserts that the reverse of any signed integer $n$ is also a signed integer, -- and that the sum of n and its reverse is zero. -- Theorem 391: [Basic properties of the signed negative] (N in Si) ¥imp ((S_Rev(N) in Si) & (S_Rev(N) ¥S_PLUS N = [0,0]) & (S_Rev(S_Rev(N)) = N)). Proof: Suppose_not(n) ==> Stat1: (n in Si) & ((S_Rev(n) notin Si) or (S_Rev(n) ¥S_PLUS n /= [0,0]) or (S_Rev(S_Rev(n)) /= n)) -- -- That $S_Rev(n)$ is a signed integer follows trivially fro its definition. -- n-->T369 ==> Stat2: (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) ALGEBRA ==> (car(n) ¥PLUS cdr(n)) in Za Use_def(S_Rev) ==> Stat3: S_Rev(n) = [cdr(n),car(n)] (Stat3)ELEM ==> (car(S_Rev(n)) = cdr(n)) & (cdr(S_Rev(n)) = car(n)) Suppose ==> S_Rev(n) notin Si Use_def(Si) ==> Stat4: [cdr(n),car(n)] notin {[x,y]: x in Za, y in Za | ((x = 0) or (y = 0))} (cdr(n),car(n))-->Stat4 ==> false; Discharge ==> Stat5: S_Rev(n) in Si -- -- Moreover, $S_Rev(n) ¥S_PLUS n$ is $Red([car(n) ¥PLUS cdr(n),car(n) ¥PLUS cdr(n)])$, and so -- reduces to $[0,0]$, completing our proof -- EQUAL ==> Stat6: S_Rev(S_Rev(n)) = S_Rev([cdr(n),car(n)]) Use_def(S_Rev) ==> Stat7: S_Rev([cdr(n),car(n)]) = [cdr([cdr(n),car(n)]),car([cdr(n),car(n)])] (Stat7)ELEM ==> Stat8: S_Rev([cdr(n),car(n)]) = [car(n),cdr(n)] (Stat5,Stat6,Stat8,Stat2*)ELEM ==> Stat9: (S_Rev(n) in Si) & (S_Rev(S_Rev(n)) = n) (Stat1,Stat5,Stat9*)ELEM ==> Stat10: S_Rev(n) ¥S_PLUS n /= [0,0] Use_def(¥S_PLUS) ==> S_Rev(n) ¥S_PLUS n = Red([car(S_Rev(n)) ¥PLUS car(n),cdr(S_Rev(n)) ¥PLUS cdr(n)]) EQUAL ==> S_Rev(n) ¥S_PLUS n = Red([cdr(n) ¥PLUS car(n),car(n) ¥PLUS cdr(n)]) ALGEBRA ==> Stat11: S_Rev(n) ¥S_PLUS n = Red([car(n) ¥PLUS cdr(n),car(n) ¥PLUS cdr(n)]) (car(n) ¥PLUS cdr(n))-->T373(*) ==> Stat12: Red([car(n) ¥PLUS cdr(n),car(n) ¥PLUS cdr(n)]) = [0,0] (Stat10,Stat11,Stat12*)Discharge ==> QED -- -- Using commutativity, it is trivial to generalize Theorem 390 by showing that -- the negative of the product of two signed integers -- is the product of either by the negative of the other. -- Theorem 392: [Inversion lemma] ((N in Si) & (M in Si)) ¥imp ((S_Rev(N ¥S_TIMES M) = S_Rev(N) ¥S_TIMES M) & (S_Rev(N ¥S_TIMES M) = N ¥S_TIMES S_Rev(M))). Proof: Suppose_not(n,m) ==> (n in Si) & (m in Si) & ((S_Rev(n ¥S_TIMES m) /= S_Rev(n) ¥S_TIMES m) or (S_Rev(n ¥S_TIMES m) /= n ¥S_TIMES S_Rev(m))) (n,m)-->T390 ==> S_Rev(n ¥S_TIMES m) /= S_Rev(n) ¥S_TIMES m (m,n)-->T390 ==> S_Rev(m ¥S_TIMES n) = m ¥S_TIMES S_Rev(n) (m,n)-->T384 ==> n ¥S_TIMES m = m ¥S_TIMES n EQUAL ==> S_Rev(n ¥S_TIMES m) = m ¥S_TIMES S_Rev(n) n-->T391 ==> S_Rev(n) in Si (m,S_Rev(n))-->T384 ==> false; Discharge ==> QED -- -- Next we not that for any signed integer $n$ the 'double negative' -- $S_Rev(S_Rev(n))$ is $n$. The proof follows from the fact that -- a double reversal of any pair yields the original pair. -- Theorem 393: [Inversion lemma II] (N in Si) ¥imp (S_Rev(S_Rev(N)) = N). Proof: Suppose_not(n) ==> (n in Si) & (S_Rev(S_Rev(n)) /= n) n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) Use_def(S_Rev) ==> Stat1: S_Rev(n) = [cdr(n),car(n)] EQUAL ==> S_Rev([cdr(n),car(n)]) /= n Use_def(S_Rev) ==> [cdr([cdr(n),car(n)]),car([cdr(n),car(n)])] /= n Discharge ==> QED -- -- Our next aim is to prove the associative law for signed integer multiplication. -- We approach this via a sequence of steps: first the case of three non-negative signed integers is considered; -- next the case of one general signed integer and two non-negative signed integers; next the case -- one two signed integers and one non-negative signed integer; and then finally the general case. -- -- Our first lemma states the associativity rule for multiplication of three non-negative signed integers. -- Theorem 394: [Associativity lemma] ((N in Za) & (M in Za) & (K in Za)) ¥imp ([N,0] ¥S_TIMES ([M,0] ¥S_TIMES [K,0]) = ([N,0] ¥S_TIMES [M,0]) ¥S_TIMES [K,0]). Proof: Suppose_not(n,m,k) ==> (n in Za) & (m in Za) & (k in Za) & ([n,0] ¥S_TIMES ([m,0] ¥S_TIMES [k,0]) /= ([n,0] ¥S_TIMES [m,0]) ¥S_TIMES [k,0]) -- -- In this case the proof follows directly from the definition of signed integer multiplication and the -- associative law of unsigned integer multiplication. -- (m,k)-->T388 ==> [m,0] ¥S_TIMES [k,0] = [m ¥TIMES k,0] (n,m)-->T388 ==> [n,0] ¥S_TIMES [m,0] = [n ¥TIMES m,0] ALGEBRA ==> (m ¥TIMES k in Za) & (n ¥TIMES m in Za) EQUAL ==> (([n,0] ¥S_TIMES ([m,0] ¥S_TIMES [k,0])) = ([n,0] ¥S_TIMES [m ¥TIMES k,0])) & ((([n,0] ¥S_TIMES [m,0]) ¥S_TIMES [k,0]) = ([n ¥TIMES m,0] ¥S_TIMES [k,0])) (n ¥TIMES m,k)-->T388 ==> (([n,0] ¥S_TIMES [m,0]) ¥S_TIMES [k,0]) = [(n ¥TIMES m) ¥TIMES k,0] (n,m ¥TIMES k)-->T388 ==> ([n,0] ¥S_TIMES ([m,0] ¥S_TIMES [k,0])) = [n ¥TIMES (m ¥TIMES k),0] ALGEBRA ==> n ¥TIMES (m ¥TIMES k) = (n ¥TIMES m) ¥TIMES k Discharge ==> QED -- -- Next we prove the associativity rule for multiplication of two non-negative signed integers and one general -- signed integer. -- Theorem 395: [Associativity lemma] ((K in Si) & (N in Za) & (M in Za)) ¥imp ([N,0] ¥S_TIMES ([M,0] ¥S_TIMES K) = ([N,0] ¥S_TIMES [M,0]) ¥S_TIMES K). Proof: Suppose_not(k,n,m) ==> (k in Si) & (n in Za) & (m in Za) & ([n,0] ¥S_TIMES ([m,0] ¥S_TIMES k) /= ([n,0] ¥S_TIMES [m,0]) ¥S_TIMES k) -- -- Consider a counterexample $k,n,m$. The case in which $k = [car(k),0]$ is nonnegative is covered by -- Theorem 394, so we have only to consider the case in which $k = [0,cdr(k)]$ is negative, and thus -- $S_Rev(k) = [cdr(k),0]$ is non-negative. -- k-->T369 ==> (k = [car(k),0] or k = [0,cdr(k)]) & (car(k) in Za) & (cdr(k) in Za) Suppose ==> k = [car(k),0] EQUAL ==> [n,0] ¥S_TIMES ([m,0] ¥S_TIMES [car(k),0]) /= ([n,0] ¥S_TIMES [m,0]) ¥S_TIMES [car(k),0] (n,m,car(k))-->T394 ==> false; Discharge ==> k = [0,cdr(k)] Use_def(S_Rev) ==> S_Rev(k) = [cdr(k),0] T211 ==> 0 in Za Suppose ==> [n,0] notin Si Use_def(Si) ==> Stat1: [n,0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (n,0)-->Stat1 ==> false; Discharge ==> [n,0] in Si Suppose ==> [m,0] notin Si Use_def(Si) ==> Stat2: [m,0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (m,0)-->Stat2 ==> false; Discharge ==> [m,0] in Si Suppose ==> S_Rev(k) notin Si Use_def(Si) ==> Stat3: [cdr(k),0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (cdr(k),0)-->Stat3 ==> false; Discharge ==> S_Rev(k) in Si ([n,0],[m,0])-->T371 ==> ([n,0] ¥S_TIMES [m,0]) in Si ([m,0],k)-->T371 ==> ([m,0] ¥S_TIMES k) in Si -- -- In this case associativity applies to the product $[n,0] ¥S_TIMES ([m,0] ¥S_TIMES S_Rev(k))$, -- and so several uses of Theorem 392 and of the associative law for unsigned integers -- brings us to the desired result. -- (n,m,cdr(k))-->T394 ==> ([n,0] ¥S_TIMES ([m,0] ¥S_TIMES [cdr(k),0])) = (([n,0] ¥S_TIMES [m,0]) ¥S_TIMES [cdr(k),0]) EQUAL ==> ([n,0] ¥S_TIMES ([m,0] ¥S_TIMES S_Rev(k))) = (([n,0] ¥S_TIMES [m,0]) ¥S_TIMES S_Rev(k)) ([n,0] ¥S_TIMES [m,0],k)-->T392 ==> ([n,0] ¥S_TIMES [m,0]) ¥S_TIMES S_Rev(k) = S_Rev(([n,0] ¥S_TIMES [m,0]) ¥S_TIMES k) ([m,0],k)-->T392 ==> ([m,0] ¥S_TIMES S_Rev(k)) = S_Rev([m,0] ¥S_TIMES k) ([n,0],[m,0] ¥S_TIMES k)-->T392 ==> [n,0] ¥S_TIMES S_Rev([m,0] ¥S_TIMES k) = S_Rev([n,0] ¥S_TIMES ([m,0] ¥S_TIMES k)) EQUAL ==> S_Rev(S_Rev([n,0] ¥S_TIMES ([m,0] ¥S_TIMES k))) = S_Rev(S_Rev(([n,0] ¥S_TIMES [m,0]) ¥S_TIMES k)) ([n,0],[m,0] ¥S_TIMES k)-->T371 ==> [n,0] ¥S_TIMES ([m,0] ¥S_TIMES k) in Si ([n,0] ¥S_TIMES [m,0],k)-->T371 ==> ([n,0] ¥S_TIMES [m,0]) ¥S_TIMES k in Si ([n,0] ¥S_TIMES ([m,0] ¥S_TIMES k))-->T391 ==> S_Rev(S_Rev([n,0] ¥S_TIMES ([m,0] ¥S_TIMES k))) = [n,0] ¥S_TIMES ([m,0] ¥S_TIMES k) (([n,0] ¥S_TIMES [m,0]) ¥S_TIMES k)-->T391 ==> false; Discharge ==> QED -- -- Next we prove the associativity rule for multiplication of a non-negative signed integer and two general -- signed integers. -- Theorem 396: [Associativity lemma II] ((K in Si) & (N in Za) & (M in Si)) ¥imp ([N,0] ¥S_TIMES (M ¥S_TIMES K) = ([N,0] ¥S_TIMES M) ¥S_TIMES K). Proof: Suppose_not(k,n,m) ==> (k in Si) & (n in Za) & (m in Si) & (([n,0] ¥S_TIMES (m ¥S_TIMES k) /= ([n,0] ¥S_TIMES m) ¥S_TIMES k)) -- -- Consider a counterexample k,n,m. The case in which $m = [car(m),0]$ is nonnegative is covered by -- Theorem 394, so we have only to consider the case in which $m = [0,cdr(m)]$ is negative, and thus -- $S_Rev(m) = [cdr(m),0]$ is non-negative. -- T211 ==> 0 in Za m-->T369 ==> (m = [car(m),0] or m = [0,cdr(m)]) & (car(m) in Za) & (cdr(m) in Za) Suppose ==> m = [car(m),0] EQUAL ==> [n,0] ¥S_TIMES ([car(m),0] ¥S_TIMES k) /= ([n,0] ¥S_TIMES [car(m),0]) ¥S_TIMES k (k,n,car(m))-->T395 ==> false; Discharge ==> m = [0,cdr(m)] Use_def(S_Rev) ==> S_Rev(m) = [cdr(m),0] Suppose ==> [n,0] notin Si Use_def(Si) ==> Stat1: [n,0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (n,0)-->Stat1 ==> false; Discharge ==> [n,0] in Si Suppose ==> S_Rev(m) notin Si Use_def(Si) ==> Stat2: [cdr(m),0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (cdr(m),0)-->Stat2 ==> false; Discharge ==> S_Rev(m) in Si ([n,0],m)-->T371 ==> [n,0] ¥S_TIMES m in Si (m,k)-->T371 ==> m ¥S_TIMES k in Si -- -- In this case associativity applies to the product $[N,0] ¥S_TIMES ([cdr(m),0] ¥S_TIMES k)$, -- leading directly via manipulation of the reversal operator $S_Rev$ to the formula we need. -- (k,n,cdr(m))-->T395 ==> ([n,0] ¥S_TIMES ([cdr(m),0] ¥S_TIMES k)) = (([n,0] ¥S_TIMES [cdr(m),0]) ¥S_TIMES k) EQUAL ==> ([n,0] ¥S_TIMES (S_Rev(m) ¥S_TIMES k)) = (([n,0] ¥S_TIMES S_Rev(m)) ¥S_TIMES k) ([n,0],m)-->T392 ==> [n,0] ¥S_TIMES S_Rev(m) = S_Rev([n,0] ¥S_TIMES m) (m,k)-->T392 ==> S_Rev(m) ¥S_TIMES k = S_Rev(m ¥S_TIMES k) EQUAL ==> S_Rev([n,0] ¥S_TIMES m) ¥S_TIMES k = [n,0] ¥S_TIMES S_Rev(m ¥S_TIMES k) ([n,0] ¥S_TIMES m,k)-->T392 ==> S_Rev([n,0] ¥S_TIMES m) ¥S_TIMES k = S_Rev(([n,0] ¥S_TIMES m) ¥S_TIMES k) ([n,0],m ¥S_TIMES k)-->T392 ==> [n,0] ¥S_TIMES S_Rev(m ¥S_TIMES k) = S_Rev([n,0] ¥S_TIMES (m ¥S_TIMES k)) EQUAL ==> S_Rev(S_Rev([n,0] ¥S_TIMES (m ¥S_TIMES k))) = S_Rev(S_Rev(([n,0] ¥S_TIMES m) ¥S_TIMES k)) ([n,0],m ¥S_TIMES k)-->T371 ==> [n,0] ¥S_TIMES (m ¥S_TIMES k) in Si ([n,0] ¥S_TIMES m,k)-->T371 ==> ([n,0] ¥S_TIMES m) ¥S_TIMES k in Si ([n,0] ¥S_TIMES (m ¥S_TIMES k))-->T391 ==> S_Rev(S_Rev([n,0] ¥S_TIMES (m ¥S_TIMES k))) = [n,0] ¥S_TIMES (m ¥S_TIMES k) (([n,0] ¥S_TIMES m) ¥S_TIMES k)-->T391 ==> false; Discharge ==> QED -- -- Finally we prove the associativity rule for multiplication of signed integers in the general case. -- Theorem 397: [Associative law] ((K in Si) & (N in Si) & (M in Si)) ¥imp (N ¥S_TIMES (M ¥S_TIMES K) = (N ¥S_TIMES M) ¥S_TIMES K). Proof: Suppose_not(k,n,m) ==> (k in Si) & (n in Si) & (m in Si) & (n ¥S_TIMES (m ¥S_TIMES k) /= (n ¥S_TIMES m) ¥S_TIMES k) -- -- Consider a counterexample $k,n,m$. The case in which $n = [car(n),0]$ is nonnegative is covered by -- Theorem 394, so we have only to consider the case in which $n = [0,cdr(n)]$ is negative, and thus -- $S_Rev(n) = [cdr(n),0]$ is non-negative. -- n-->T369 ==> (n = [car(n),0] or n = [0,cdr(n)]) & (car(n) in Za) & (cdr(n) in Za) T211 ==> 0 in Za Suppose ==> n = [car(n),0] EQUAL ==> [car(n),0] ¥S_TIMES (m ¥S_TIMES k) /= ([car(n),0] ¥S_TIMES m) ¥S_TIMES k (k,car(n),m)-->T396 ==> false; Discharge ==> n = [0,cdr(n)] Use_def(S_Rev) ==> S_Rev(n) = [cdr(n),0] Suppose ==> S_Rev(n) notin Si Use_def(Si) ==> Stat1: [cdr(n),0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (cdr(n),0)-->Stat1 ==> false; Discharge ==> S_Rev(n) in Si -- -- But in this case the preceding theorem tells us that associativity applies to the product -- $S_Rev(n) ¥S_TIMES (m ¥S_TIMES k)$, and so we can derive the required conclusion -- by an easy manipulation of the reversal operator $S_Rev$. -- (n,m)-->T371 ==> n ¥S_TIMES m in Si (m,k)-->T371 ==> m ¥S_TIMES k in Si (k,cdr(n),m)-->T396 ==> [cdr(n),0] ¥S_TIMES (m ¥S_TIMES k) = ([cdr(n),0] ¥S_TIMES m) ¥S_TIMES k EQUAL ==> S_Rev(n) ¥S_TIMES (m ¥S_TIMES k) = (S_Rev(n) ¥S_TIMES m) ¥S_TIMES k (n,m ¥S_TIMES k)-->T392 ==> S_Rev(n) ¥S_TIMES (m ¥S_TIMES k) = S_Rev(n ¥S_TIMES (m ¥S_TIMES k)) (n,m)-->T392 ==> S_Rev(n) ¥S_TIMES m = S_Rev(n ¥S_TIMES m) EQUAL ==> S_Rev(n ¥S_TIMES m) ¥S_TIMES k = S_Rev(n ¥S_TIMES (m ¥S_TIMES k)) (n ¥S_TIMES m,k)-->T392 ==> S_Rev(n ¥S_TIMES m) ¥S_TIMES k = S_Rev((n ¥S_TIMES m) ¥S_TIMES k) (n,m ¥S_TIMES k)-->T392 ==> n ¥S_TIMES S_Rev(m ¥S_TIMES k) = S_Rev(n ¥S_TIMES (m ¥S_TIMES k)) EQUAL ==> S_Rev(S_Rev(n ¥S_TIMES (m ¥S_TIMES k))) = S_Rev(S_Rev((n ¥S_TIMES m) ¥S_TIMES k)) (n,m ¥S_TIMES k)-->T371 ==> n ¥S_TIMES (m ¥S_TIMES k) in Si (n ¥S_TIMES m,k)-->T371 ==> (n ¥S_TIMES m) ¥S_TIMES k in Si (n ¥S_TIMES (m ¥S_TIMES k))-->T391 ==> S_Rev(S_Rev(n ¥S_TIMES (m ¥S_TIMES k))) = n ¥S_TIMES (m ¥S_TIMES k) ((n ¥S_TIMES m) ¥S_TIMES k)-->T391 ==> false; Discharge ==> QED -- -- Next we prove that subtraction of one signed integer from another -- is equivalent to addition of the negative of the first to the second. -- Theorem 398: [Subtraction is addition of the negative] ((N in Si) & (M in Si)) ¥imp ((N ¥S_MINUS M) = (N ¥S_PLUS S_Rev(M))). Proof: Suppose_not(n,m) ==> (n in Si) & (m in Si) & ((n ¥S_MINUS m) /= (n ¥S_PLUS S_Rev(m))) -- -- The proof results easily by expanding the definitions of the operators involved and a bit of unsigned integer arithmetic. -- Use_def(Si) ==> Stat1: m in {[x,y]: x in Za, y in Za | ((x = 0) or (y = 0))} (m1,m2)-->Stat1 ==> (m = [m1,m2]) & (m1 in Za) & (m2 in Za) ELEM ==> (m = [car(m),cdr(m)]) & (car(m) in Za) & (cdr(m) in Za) Use_def(Si) ==> Stat2: n in {[x,y]: x in Za, y in Za | ((x = 0) or (y = 0))} (n1,n2)-->Stat2 ==> Stat3: (n = [n1,n2]) & (n1 in Za) & (n2 in Za) (Stat3)ELEM ==> (n = [car(n),cdr(n)]) & (car(n) in Za) & (cdr(n) in Za) Use_def(¥S_MINUS) ==> n ¥S_MINUS m = Red([cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)]) Use_def(S_Rev) ==> Stat4: S_Rev(m) = [cdr(m),car(m)] (Stat4)ELEM ==> (car(S_Rev(m)) = cdr(m)) & (cdr(S_Rev(m)) = car(m)) Use_def(¥S_PLUS) ==> n ¥S_PLUS S_Rev(m) = Red([car(n) ¥PLUS car(S_Rev(m)),cdr(n) ¥PLUS cdr(S_Rev(m))]) EQUAL ==> n ¥S_PLUS S_Rev(m) = Red([car(n) ¥PLUS cdr(m),cdr(n) ¥PLUS car(m)]) ALGEBRA ==> ((cdr(m) ¥PLUS car(n)) = (car(n) ¥PLUS cdr(m))) & ((car(m) ¥PLUS cdr(n)) = (cdr(n) ¥PLUS car(m))) EQUAL ==> false; Discharge ==> QED -- -- The following theorem tells us that for signed integers subtraction is always the reverse of addition. -- It is this generalization of the corresponding but more restricted rule for unsigned integers that -- justifies the introduction of the signed integers. -- Theorem 399: [Subtraction reverses signed integer addition] ((N in Si) & (M in Si)) ¥imp (N = M ¥S_PLUS (N ¥S_MINUS M)). Proof: Suppose_not(n,m) ==> (n in Si) & (m in Si) & (n /= m ¥S_PLUS (n ¥S_MINUS m)) -- -- By expanding the definitions of the operators involved, a bit of unsigned integer arithmetic, -- and elimination of superfluous reduction operators, we can readily reduce the negative of our assertion -- to the inequality seen below. -- n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) ELEM ==> car(n) * cdr(n) = 0 m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) = 0 or cdr(m) = 0) & (car(m) in Za) & (cdr(m) in Za) Use_def(¥S_MINUS) ==> n /= m ¥S_PLUS Red([cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)]) ALGEBRA ==> (cdr(m) ¥PLUS car(n) in Za) & (car(m) ¥PLUS cdr(n) in Za) & (car(m) ¥PLUS cdr(m) in Za) (m,cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n))-->T377 ==> m ¥S_PLUS Red([cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)]) = m ¥S_PLUS [cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)] Use_def(¥S_PLUS) ==> m ¥S_PLUS [cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)] = Red([car(m) ¥PLUS car([cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)]), cdr(m) ¥PLUS cdr([cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)])]) ELEM ==> car([cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)]) = cdr(m) ¥PLUS car(n) ELEM ==> cdr([cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)]) = car(m) ¥PLUS cdr(n) EQUAL ==> m ¥S_PLUS [cdr(m) ¥PLUS car(n),car(m) ¥PLUS cdr(n)] = Red([car(m) ¥PLUS (cdr(m) ¥PLUS car(n)),cdr(m) ¥PLUS (car(m) ¥PLUS cdr(n))]) ELEM ==> n /= Red([car(m) ¥PLUS (cdr(m) ¥PLUS car(n)),cdr(m) ¥PLUS (car(m) ¥PLUS cdr(n))]) -- -- But since the same quantity $car(m) ¥PLUS cdr(m)$ is added to both components -- of the pair appearing on the right of this last equality, it reduces readily to the -- contradictory form $n /= [car(n),cdr(n)]$, thereby proving our assertion. -- ALGEBRA ==> n /= Red([car(n) ¥PLUS (car(m) ¥PLUS cdr(m)),cdr(n) ¥PLUS (car(m) ¥PLUS cdr(m))]) (car(n),cdr(n),car(m) ¥PLUS cdr(m))-->T374 ==> n /= Red([car(n),cdr(n)]) Use_def(Red) ==> n /= [car(n) ¥MINUS (car(n) * cdr(n)),cdr(n) ¥MINUS (car(n) * cdr(n))] EQUAL ==> n /= [car(n) ¥MINUS 0,cdr(n) ¥MINUS 0] (car(n))-->T268 ==> car(n) ¥MINUS 0 = #car(n) (cdr(n))-->T268 ==> cdr(n) ¥MINUS 0 = #cdr(n) (car(n))-->T206 ==> Card(car(n)) (cdr(n))-->T206 ==> Card(cdr(n)) (car(n))-->T164 ==> car(n) ¥MINUS 0 = car(n) (cdr(n))-->T164 ==> cdr(n) ¥MINUS 0 = cdr(n) EQUAL ==> false; Discharge ==> QED -- -- Next we prove that the negative of $m ¥S_PLUS n$ is the sum of $S_Rev(n)$ and $S_Rev(m)$. -- Theorem 400: [The negative of a sum is the sum of the negatives] ((N in Si) & (M in Si)) ¥imp (S_Rev(N ¥S_PLUS M) = S_Rev(N) ¥S_PLUS S_Rev(M)). Proof: Suppose_not(n,m) ==> (n in Si) & (m in Si) & (S_Rev(n ¥S_PLUS m) /= S_Rev(n) ¥S_PLUS S_Rev(m)) -- -- -- n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) Use_def(S_Rev) ==> Stat1: S_Rev(n) = [cdr(n),car(n)] (Stat1)ELEM ==> car(S_Rev(n)) = cdr(n) (Stat1,Stat1)ELEM ==> cdr(S_Rev(n)) = car(n) Use_def(S_Rev) ==> Stat2: S_Rev(m) = [cdr(m),car(m)] m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) = 0 or cdr(m) = 0) & (car(m) in Za) & (cdr(m) in Za) (Stat2,Stat2)ELEM ==> car(S_Rev(m)) = cdr(m) (Stat2,Stat2)ELEM ==> cdr(S_Rev(m)) = car(m) -- Use_def(¥S_PLUS) ==> n ¥S_PLUS m = Red([car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m)]) Use_def(¥S_PLUS) ==> S_Rev(n) ¥S_PLUS S_Rev(m) = Red([car(S_Rev(n)) ¥PLUS car(S_Rev(m)),cdr(S_Rev(n)) ¥PLUS cdr(S_Rev(m))]) EQUAL ==> S_Rev(n) ¥S_PLUS S_Rev(m) = Red([cdr(n) ¥PLUS cdr(m),car(n) ¥PLUS car(m)]) EQUAL ==> S_Rev(N ¥S_PLUS M) = S_Rev(Red([car(n) ¥PLUS car(m),cdr(n) ¥PLUS cdr(m)])) ALGEBRA ==> (car(n) ¥PLUS car(m) in Za) & (cdr(n) ¥PLUS cdr(m) in Za) (cdr(n) ¥PLUS cdr(m),car(n) ¥PLUS car(m))-->T389 ==> false; Discharge ==> QED -- -- We now go on to establish multiplication rules for the signed integer constants zero and one, -- proving that zero times anything is zero, while one times any signed integer $n$ is $n$. -- Moreover the product of the reverse $[0,1]$ of $[1,0]$ by itself is $[1,0]$. -- Theorem 401: [Basic properties of the signed integers 0 and 1] (([0,1] ¥S_TIMES [0,1]) = [1,0]) & ((X in Si) ¥imp ((([1,0] ¥S_TIMES X) = X) & (([0,0] ¥S_TIMES X) = [0,0]))). Proof: Suppose_not(x) ==> (([0,1] ¥S_TIMES [0,1]) /= [1,0]) or ((x in Si) & ((([1,0] ¥S_TIMES x) /= x) or (([0,0] ¥S_TIMES x) /= [0,0]))) -- -- -- Use_def(¥S_TIMES) ==> ([0,1] ¥S_TIMES [0,1]) = Red([(car([0,1]) ¥TIMES car([0,1])) ¥PLUS (cdr([0,1]) ¥TIMES cdr([0,1])), (car([0,1]) ¥TIMES cdr([0,1])) ¥PLUS (car([0,1]) ¥TIMES cdr([0,1]))]) ELEM ==> (car([0,1]) = 0) & (cdr([0,1]) = 1) & (1 * 0 = 0) T211 ==> Stat1: (1 in Za) & (0 in Za) EQUAL ==> ([0,1] ¥S_TIMES [0,1]) = Red([(0 ¥TIMES 0) ¥PLUS (1 ¥TIMES 1),(0 ¥TIMES 1) ¥PLUS (0 ¥TIMES 1)]) ALGEBRA ==> (([0,1] ¥S_TIMES [0,1]) = Red([1,0])) T211 ==> Card(1) T211 ==> Card(0) 1-->T164 ==> Stat2: 1 = #1 0-->T164 ==> 0 = #0 Use_def(Red) ==> ([0,1] ¥S_TIMES [0,1]) = [1 ¥MINUS (1 * 0),0 ¥MINUS (1 * 0)] EQUAL ==> Stat3: ([0,1] ¥S_TIMES [0,1]) = [1 ¥MINUS 0,0 ¥MINUS 0] 1-->T268(Stat3,Stat2) ==> ([0,1] ¥S_TIMES [0,1]) = [1,0 ¥MINUS 0] 0-->T268 ==> 0 ¥MINUS 0 = #0 EQUAL ==> Stat4: (x in Si) & ((([1,0] ¥S_TIMES x) /= x) or (([0,0] ¥S_TIMES x) /= [0,0])) Use_def(¥S_TIMES) ==> ([0,0] ¥S_TIMES x) = Red([(car([0,0]) ¥TIMES car(x)) ¥PLUS (cdr([0,0]) ¥TIMES cdr(x)), (car([0,0]) ¥TIMES cdr(x)) ¥PLUS (car(x) ¥TIMES cdr([0,0]))]) TELEM ==> (car([0,0]) = 0) & (cdr([0,0]) = 0) & (car([1,0]) = 1) & (cdr([1,0]) = 0) EQUAL ==> ([0,0] ¥S_TIMES x) = Red([(0 ¥TIMES car(x)) ¥PLUS (0 ¥TIMES cdr(x)),(0 ¥TIMES cdr(x)) ¥PLUS (car(x) ¥TIMES 0)]) Use_def(Si) ==> Stat5: x in {[u,y]: u in Za, y in Za | u = 0 or y = 0} (u,y)-->Stat5 ==> Stat6: (x = [u,y]) & (u in Za) & (y in Za) & (u = 0 or y = 0) (Stat6*)ELEM ==> Stat7: x = [u,y] (Stat7)ELEM ==> Stat8: (car(x) = u) & (cdr(x) = y) & (x = [car(x),cdr(x)]) (Stat6,Stat8*)ELEM ==> Stat9: (car(x) in Za) & (cdr(x) in Za) & (car(x) * cdr(x) = 0) (car(x))-->T207(Stat9*) ==> car(x) = #car(x) (cdr(x))-->T207(Stat9*) ==> cdr(x) = #cdr(x) ALGEBRA ==> Stat10: ([0,0] ¥S_TIMES x) = Red([0,0]) 0-->T373(Stat10,Stat1) ==> Stat11: ([0,0] ¥S_TIMES x) = [0,0] Use_def(¥S_TIMES) ==> ([1,0] ¥S_TIMES x) = Red([(car([1,0]) ¥TIMES car(x)) ¥PLUS (cdr([1,0]) ¥TIMES cdr(x)), (car([1,0]) ¥TIMES cdr(x)) ¥PLUS (car(x) ¥TIMES cdr([1,0]))]) EQUAL ==> ([1,0] ¥S_TIMES x) = Red([(1 ¥TIMES car(x)) ¥PLUS (0 ¥TIMES cdr(x)),(1 ¥TIMES cdr(x)) ¥PLUS (car(x) ¥TIMES 0)]) ALGEBRA ==> ([1,0] ¥S_TIMES x) = Red([car(x),cdr(x)]) EQUAL ==> Stat12: ([1,0] ¥S_TIMES x) = Red(x) Use_def(Red) ==> Red(x) = [car(x) ¥MINUS (car(x) * cdr(x)),cdr(x) ¥MINUS (car(x) * cdr(x))] EQUAL ==> Stat13: Red(x) = [car(x) ¥MINUS 0,cdr(x) ¥MINUS 0] (car(x))-->T268 ==> car(x) ¥MINUS 0 = #car(x) (cdr(x))-->T268 ==> cdr(x) ¥MINUS 0 = #cdr(x) EQUAL ==> Stat14: Red(x) = [car(x),cdr(x)] (Stat12,Stat14,Stat8,Stat9*)ELEM ==> Stat15: ([1,0] ¥S_TIMES x) = x (Stat4,Stat15,Stat11*)Discharge ==> QED -- -- It follows trially from the preceding theorem that the product -- of any signed integer $n$ by one is $n$. -- Theorem 402: [1 is the multiplicative unit for signed integers] (K in Si) ¥imp (K ¥S_TIMES [1,0] = K). Proof: Suppose_not(k) ==> (k in Si) & (k ¥S_TIMES [1,0] /= k) k-->T369 ==> (k = [car(k),cdr(k)]) & (car(k) in Za) & (cdr(k) in Za) & (car(k) = 0 or cdr(k) = 0) T211 ==> (1 in Za) & (0 in Za) Use_def(¥S_TIMES) ==> (k ¥S_TIMES [1,0]) = Red([(car(k) ¥TIMES car([1,0])) ¥PLUS (cdr(k) ¥TIMES cdr([1,0])), (car(k) ¥TIMES cdr([1,0])) ¥PLUS (car([1,0]) ¥TIMES cdr(k))]) ELEM ==> (car([1,0]) = 1) & (cdr([1,0]) = 0) & (1 * 0 = 0) EQUAL ==> (k ¥S_TIMES [1,0]) = Red([(car(k) ¥TIMES 1) ¥PLUS (cdr(k) ¥TIMES 0),(car(k) ¥TIMES 0) ¥PLUS (1 ¥TIMES cdr(k))]) ALGEBRA ==> k ¥S_TIMES [1,0] = Red([car(k),cdr(k)]) Use_def(Red) ==> k ¥S_TIMES [1,0] = [car(k) ¥MINUS (car(k) * cdr(k)),cdr(k) ¥MINUS (car(k) * cdr(k))] ELEM ==> car(k) * cdr(k) = 0 EQUAL ==> k ¥S_TIMES [1,0] = [car(k) ¥MINUS 0,cdr(k) ¥MINUS 0] (car(k))-->T268 ==> car(k) ¥MINUS 0 = #car(k) (cdr(k))-->T268 ==> cdr(k) ¥MINUS 0 = #cdr(k) (car(k))-->T207 ==> car(k) = #car(k) (cdr(k))-->T207 ==> cdr(k) = #cdr(k) EQUAL ==> false; Discharge ==> QED -- -- -- Theorem 403: [The negative of a signed integer is its product by -1] ((K in Si) & (M in Si)) ¥imp (K ¥S_MINUS M = K ¥S_PLUS (M ¥S_TIMES [0,1])). Proof: Suppose_not(k,m) ==> (k in Si) & (m in Si) & (k ¥S_MINUS m /= k ¥S_PLUS (m ¥S_TIMES [0,1])) k-->T369 ==> (k = [car(k),cdr(k)]) & (car(k) in Za) & (cdr(k) in Za) & (car(k) = 0 or cdr(k) = 0) & (Red(k) = k) m-->T369 ==> (m = [car(m),cdr(m)]) & (car(m) in Za) & (cdr(m) in Za) & (car(m) = 0 or cdr(m) = 0) & (Red(m) = m) Use_def(¥S_TIMES) ==> m ¥S_TIMES [0,1] = Red([(car(m) ¥TIMES car([0,1])) ¥PLUS (cdr(m) ¥TIMES cdr([0,1])),(car(m) ¥TIMES cdr([0,1])) ¥PLUS (car([0,1]) ¥TIMES cdr(m))]) ELEM ==> (car([0,1]) = 0) & (cdr([0,1]) = 1) EQUAL ==> m ¥S_TIMES [0,1] = Red([(car(m) ¥TIMES 0) ¥PLUS (cdr(m) ¥TIMES 1),(car(m) ¥TIMES 1) ¥PLUS (0 ¥TIMES cdr(m))]) ALGEBRA ==> m ¥S_TIMES [0,1] = Red([cdr(m),car(m)]) Use_def(¥S_MINUS) ==> k ¥S_MINUS m = Red([cdr(m) ¥PLUS car(k),car(m) ¥PLUS cdr(k)]) EQUAL ==> k ¥S_PLUS (m ¥S_TIMES [0,1]) = k ¥S_PLUS Red([cdr(m),car(m)]) (k,cdr(m),car(m))-->T377 ==> k ¥S_PLUS (m ¥S_TIMES [0,1]) = k ¥S_PLUS [cdr(m),car(m)] Use_def(¥S_PLUS) ==> k ¥S_PLUS (m ¥S_TIMES [0,1]) = Red([car(k) ¥PLUS cdr(m),cdr(k) ¥PLUS car(m)]) ELEM ==> Red([cdr(m) ¥PLUS car(k),car(m) ¥PLUS cdr(k)]) /= Red([car(k) ¥PLUS cdr(m),cdr(k) ¥PLUS car(m)]) ALGEBRA ==> false; Discharge ==> QED -- -- Next we note that for any singed integer $k$, $k ¥S_MINUS k$ is zero. -- The proof results trivially from the definition of the operators involved. -- Theorem 404: [A signed integer minus itself gives 0] (K in Si) ¥imp (K ¥S_MINUS K = [0,0]). Proof: Suppose_not(k) ==> (k in Si) & (k ¥S_MINUS k /= [0,0]) k-->T369 ==> (k = [car(k),cdr(k)]) & (car(k) in Za) & (cdr(k) in Za) & (car(k) = 0 or cdr(k) = 0) & (Red(k) = k) Use_def(¥S_MINUS) ==> k ¥S_MINUS k = Red([cdr(k) ¥PLUS car(k),car(k) ¥PLUS cdr(k)]) ALGEBRA ==> Red([car(k) ¥PLUS cdr(k),car(k) ¥PLUS cdr(k)]) /= [0,0] ALGEBRA ==> car(k) ¥PLUS cdr(k) in Za (car(k) ¥PLUS cdr(k))-->T373 ==> false; Discharge ==> QED -- -- It follows equally trivially that the sum of any signed integer $k$ and zero is $k$. -- Theorem 405: [0 is the right additive identity for signed integers] (K in Si) ¥imp (K ¥S_PLUS [0,0] = K). Proof: Suppose_not(k) ==> (k in Si) & (k ¥S_PLUS [0,0] /= k) k-->T369 ==> (k = [car(k),cdr(k)]) & (car(k) in Za) & (cdr(k) in Za) & (Red(k) = k) Use_def(¥S_PLUS) ==> k ¥S_PLUS [0,0] = Red([car(k) ¥PLUS 0,cdr(k) ¥PLUS 0]) ALGEBRA ==> k ¥S_PLUS [0,0] = Red([car(k),cdr(k)]) EQUAL ==> false; Discharge ==> QED -- -- And so it follows equally trivially by commutativity that the sum of zero and any signed integer $k$ is $k$. -- Theorem 406: [0 is the left additive identity for signed integers] (K in Si) ¥imp ([0,0] ¥S_PLUS K = K). Proof: Suppose_not(k) ==> (k in Si) & ([0,0] ¥S_PLUS k /= k) T368 ==> [0,0] in Si ([0,0],k)-->T381 ==> [0,0] ¥S_PLUS k = k ¥S_PLUS [0,0] k-->T405 ==> k ¥S_PLUS [0,0] = k Discharge ==> QED -- -- The following easy theorem gives the very important cancellation rule for signed integer multiplication: -- if the product of two signed integers is zero, one of them must be zero. This fact -- is central to the discussion of rational numbers which follows subsequently. -- Theorem 407: [$Si$ is an Integral Domain] ((N in Si) & (M in Si) & ((M ¥S_TIMES N) = [0,0])) ¥imp ((M = [0,0]) or (N = [0,0])). Proof: Suppose_not(n,m) ==> Stat1: (n in Si) & (m in Si) & (m ¥S_TIMES n = [0,0]) & (m /= [0,0]) & (n /= [0,0]) -- -- -- m-->T369 ==> Stat2: (m = [car(m),cdr(m)]) & ((car(m) = 0) or (cdr(m) = 0)) & (car(m) in Za) & (cdr(m) in Za) n-->T369 ==> Stat3: (n = [car(n),cdr(n)]) & ((car(n) = 0) or (cdr(n) = 0)) & (car(n) in Za) & (cdr(n) in Za) Use_def(¥S_TIMES) ==> Stat4: Red([(car(m) ¥TIMES car(n)) ¥PLUS (cdr(m) ¥TIMES cdr(n)), (car(m) ¥TIMES cdr(n)) ¥PLUS (car(n) ¥TIMES cdr(m))]) = [0,0] Suppose ==> Stat5: (car(n) = 0) & (cdr(n) = 0) EQUAL(Stat1,Stat3,Stat5) ==> false; Discharge ==> Stat6: (not(car(n) = 0)) or (not(cdr(n) = 0)) (Stat6)ELEM ==> (car(n) /= 0) or (cdr(n) /= 0) Suppose ==> Stat7: (car(m) = 0) & (cdr(m) = 0) EQUAL(Stat1,Stat2,Stat7) ==> false; Discharge ==> Stat8: (not(car(m) = 0)) or (not(cdr(m) = 0)) (Stat8)ELEM ==> (car(m) /= 0) or (cdr(m) /= 0) Suppose ==> Stat9: car(n) /= 0 (Stat3)ELEM ==> cdr(n) = 0 EQUAL ==> Red([(car(m) ¥TIMES car(n)) ¥PLUS (cdr(m) ¥TIMES 0), (car(m) ¥TIMES 0) ¥PLUS (car(n) ¥TIMES cdr(m))]) = [0,0] ALGEBRA ==> Stat10: [0,0] = Red([car(m) ¥TIMES car(n),car(n) ¥TIMES cdr(m)]) Use_def(Red) ==> Red([car(m) ¥TIMES car(n),car(n) ¥TIMES cdr(m)]) = [(car(m) ¥TIMES car(n)) ¥MINUS (((car(m) ¥TIMES car(n))) * (car(n) ¥TIMES cdr(m))), (car(n) ¥TIMES cdr(m)) ¥MINUS (((car(m) ¥TIMES car(n))) * (car(n) ¥TIMES cdr(m)))] (car(n))-->T245 ==> Stat11: car(n) ¥TIMES 0 = 0 Suppose ==> Stat12: ((car(m) ¥TIMES car(n))) * (car(n) ¥TIMES cdr(m)) /= 0 (Stat12)ELEM ==> (car(n) ¥TIMES cdr(m) /= 0) & (car(m) ¥TIMES car(n) /= 0) Suppose ==> cdr(m) = 0 EQUAL ==> false; Discharge ==> car(m) = 0 EQUAL ==> 0 ¥TIMES car(n) /= 0 (0,car(n))-->T253 ==> Stat13: car(n) ¥TIMES 0 /= 0 (Stat11,Stat13)Discharge ==> ((car(m) ¥TIMES car(n))) * (car(n) ¥TIMES cdr(m)) = 0 EQUAL ==> Red([car(m) ¥TIMES car(n),car(n) ¥TIMES cdr(m)]) = [(car(m) ¥TIMES car(n)) ¥MINUS 0,(car(n) ¥TIMES cdr(m)) ¥MINUS 0] (car(m) ¥TIMES car(n))-->T268 ==> (car(m) ¥TIMES car(n)) ¥MINUS 0 = #(car(m) ¥TIMES car(n)) (car(n) ¥TIMES cdr(m))-->T268 ==> (car(n) ¥TIMES cdr(m)) ¥MINUS 0 = #(car(n) ¥TIMES cdr(m)) EQUAL ==> Stat14: Red([car(m) ¥TIMES car(n),car(n) ¥TIMES cdr(m)]) = [#(car(m) ¥TIMES car(n)),#(car(n) ¥TIMES cdr(m))] (Stat14,Stat10)ELEM ==> Stat15: [#(car(m) ¥TIMES car(n)),#(car(n) ¥TIMES cdr(m))] = [0,0] (Stat15)ELEM ==> (#(car(m) ¥TIMES car(n)) = 0) & (#(car(n) ¥TIMES cdr(m)) = 0) (car(m) ¥TIMES car(n))-->T162 ==> Stat16: car(m) ¥TIMES car(n) = 0 (car(n) ¥TIMES cdr(m))-->T162 ==> Stat17: car(n) ¥TIMES cdr(m) = 0 (car(m),car(n))-->T309(Stat16,Stat9) ==> car(m) = 0 (car(n),cdr(m))-->T309(Stat17,Stat9) ==> cdr(m) = 0 Discharge ==> Stat18: (car(n) = 0) & (cdr(n) /= 0) EQUAL ==> Red([(car(m) ¥TIMES 0) ¥PLUS (cdr(m) ¥TIMES cdr(n)), (car(m) ¥TIMES cdr(n)) ¥PLUS (0 ¥TIMES cdr(m))]) = [0,0] ALGEBRA ==> Stat19: [0,0] = Red([cdr(m) ¥TIMES cdr(n),car(m) ¥TIMES cdr(n)]) Use_def(Red) ==> Red([cdr(m) ¥TIMES cdr(n),car(m) ¥TIMES cdr(n)]) = [(cdr(m) ¥TIMES cdr(n)) ¥MINUS (((cdr(m) ¥TIMES cdr(n))) * (car(m) ¥TIMES cdr(n))), (car(m) ¥TIMES cdr(n)) ¥MINUS (((cdr(m) ¥TIMES cdr(n))) * (car(m) ¥TIMES cdr(n)))] (cdr(n))-->T245 ==> Stat20: cdr(n) ¥TIMES 0 = 0 (cdr(n),0)-->T253(Stat20) ==> Stat21: 0 ¥TIMES cdr(n) = 0 Suppose ==> Stat22: (cdr(m) ¥TIMES cdr(n)) * (car(m) ¥TIMES cdr(n)) /= 0 (Stat22)ELEM ==> (cdr(m) ¥TIMES cdr(n) /= 0) & (car(m) ¥TIMES cdr(n) /= 0) Suppose ==> cdr(m) = 0 EQUAL ==> false; Discharge ==> car(m) = 0 EQUAL ==> 0 ¥TIMES cdr(n) /= 0 (0,cdr(n))-->T253 ==> Stat23: cdr(n) ¥TIMES 0 /= 0 (Stat20,Stat23)Discharge ==> (cdr(m) ¥TIMES cdr(n)) * (car(m) ¥TIMES cdr(n)) = 0 EQUAL ==> Red([cdr(m) ¥TIMES cdr(n),car(m) ¥TIMES cdr(n)]) = [(cdr(m) ¥TIMES cdr(n)) ¥MINUS 0,(car(m) ¥TIMES cdr(n)) ¥MINUS 0] (cdr(m) ¥TIMES cdr(n))-->T268 ==> (cdr(m) ¥TIMES cdr(n)) ¥MINUS 0 = #(cdr(m) ¥TIMES cdr(n)) (car(m) ¥TIMES cdr(n))-->T268 ==> (car(m) ¥TIMES cdr(n)) ¥MINUS 0 = #(car(m) ¥TIMES cdr(n)) EQUAL ==> Stat24: Red([cdr(m) ¥TIMES cdr(n),car(m) ¥TIMES cdr(n)]) = [#(cdr(m) ¥TIMES cdr(n)),#(car(m) ¥TIMES cdr(n))] (Stat24,Stat19)ELEM ==> Stat25: [#(cdr(m) ¥TIMES cdr(n)),#(car(m) ¥TIMES cdr(n))] = [0,0] (Stat25)ELEM ==> (#(cdr(m) ¥TIMES cdr(n)) = 0) & (#(car(m) ¥TIMES cdr(n)) = 0) (cdr(m) ¥TIMES cdr(n))-->T162 ==> Stat26: cdr(m) ¥TIMES cdr(n) = 0 (car(m) ¥TIMES cdr(n))-->T162 ==> Stat27: car(m) ¥TIMES cdr(n) = 0 (car(m),cdr(n))-->T309(Stat27,Stat18) ==> car(m) = 0 (cdr(m),cdr(n))-->T309(Stat26,Stat18) ==> cdr(m) = 0 Discharge ==> QED -- -- Next we prove the distributivity of multiplication over subtraction. -- Theorem 408: [Distributivity of multiplication over subtraction] ((N in Si) & (M in Si) & (K in Si)) ¥imp ((m ¥S_TIMES n) ¥S_MINUS (k ¥S_TIMES n) = (m ¥S_MINUS k) ¥S_TIMES n). Proof: Suppose_not(n,m,k) ==> (n in Si) & (m in Si) & (k in Si) & ((m ¥S_TIMES n) ¥S_MINUS (k ¥S_TIMES n) /= (m ¥S_MINUS k) ¥S_TIMES n) -- -- For suppose that signed integers $n$, $m$, $k$ are a counterexample to our assertion. Using Theorem 371, Theorem 372, Theorem 392, -- and Theorem 398 we can rewrite the negative of our assertion (in a form using $¥S_PLUS$ instead of $¥S_MINUS$) as -- -- $((m ¥S_TIMES n) ¥S_PLUS (S_Rev(k) ¥S_TIMES n) /= (m ¥S_PLUS S_Rev(k)) ¥S_TIMES n)$ -- (m,n)-->T371 ==> (m ¥S_TIMES n) in Si (k,n)-->T371 ==> (k ¥S_TIMES n) in Si (m ¥S_TIMES n,k ¥S_TIMES n)-->T398 ==> (m ¥S_TIMES n) ¥S_MINUS (k ¥S_TIMES n) = (m ¥S_TIMES n) ¥S_PLUS S_Rev(k ¥S_TIMES n) (m,k)-->T398 ==> (m ¥S_MINUS k) = (m ¥S_PLUS S_Rev(k)) (k,n)-->T392 ==> S_Rev(k ¥S_TIMES n) = S_Rev(k) ¥S_TIMES n EQUAL ==> ((m ¥S_TIMES n) ¥S_PLUS (S_Rev(k) ¥S_TIMES n) /= (m ¥S_PLUS S_Rev(k)) ¥S_TIMES n) -- -- Then, using the commutativity of the '$¥S_TIMES$' operator, we can rewrite the above inequality as -- -- $((n ¥S_TIMES m) ¥S_PLUS (n ¥S_TIMES S_Rev(k)) /= n ¥S_TIMES (m ¥S_PLUS S_Rev(k)))$ -- -- which stands in contradiction to the distributivity rule for signed integer addition, -- and so proves our theorem. -- k-->T391 ==> S_Rev(k) in Si (m,S_Rev(k))-->T371 ==> (m ¥S_PLUS S_Rev(k)) in Si (m,n)-->T384 ==> m ¥S_TIMES n = n ¥S_TIMES m (S_Rev(k),n)-->T384 ==> S_Rev(k) ¥S_TIMES n = n ¥S_TIMES S_Rev(k) (m ¥S_PLUS S_Rev(k),n)-->T384 ==> (m ¥S_PLUS S_Rev(k)) ¥S_TIMES n = n ¥S_TIMES (m ¥S_PLUS S_Rev(k)) EQUAL ==> ((n ¥S_TIMES m) ¥S_PLUS (n ¥S_TIMES S_Rev(k))) /= (n ¥S_TIMES (m ¥S_PLUS S_Rev(k))) (S_Rev(k),n)-->T384 ==> S_Rev(k) ¥S_TIMES n = n ¥S_TIMES S_Rev(k) (S_Rev(k),n,m)-->T386 ==> false; Discharge ==> QED -- -- Our next theorem states the principle of cancellation for the ring of signed integers. -- The proof is straightforward and algebraic: from $m ¥S_TIMES n = k ¥S_TIMES n$ deduce $(m ¥S_MINUS k) ¥S_TIMES n = 0$, -- and then apply Theorem 407. -- Theorem 409: [$Si$ multiplicative cancellation] ((N in Si) & (M in Si) & (K in Si) & (M ¥S_TIMES N = K ¥S_TIMES N) & (N /= [0,0])) ¥imp (M = K). Proof: Suppose_not(n,m,k) ==> (n in Si) & (m in Si) & (k in Si) & (m ¥S_TIMES n = k ¥S_TIMES n) & (n /= [0,0]) & (m /= k) EQUAL ==> (m ¥S_TIMES n) ¥S_MINUS (k ¥S_TIMES n) = (k ¥S_TIMES n) ¥S_MINUS (k ¥S_TIMES n) (k,n)-->T371 ==> (k ¥S_TIMES n) in Si (k ¥S_TIMES n)-->T404 ==> (m ¥S_TIMES n) ¥S_MINUS (k ¥S_TIMES n) = [0,0] (m,k)-->T372 ==> (m ¥S_MINUS k) in Si (n,m,k)-->T408 ==> (m ¥S_MINUS k) ¥S_TIMES n = [0,0] (n,m ¥S_MINUS k)-->T407 ==> (m ¥S_MINUS k) = [0,0] EQUAL ==> k ¥S_PLUS (m ¥S_MINUS k) = k ¥S_PLUS [0,0] (m,k)-->T399 ==> m = k ¥S_PLUS [0,0] k-->T405 ==> false; Discharge ==> QED -- -- Next we prove that the product of any signed integer $n$ by my minus 0ne is the reverse of $n$. -- Theorem 410: [Multiplication by -1] (N in Si) ¥imp (S_Rev(N) = [0,1] ¥S_TIMES N). Proof: Suppose_not(n) ==> (n in Si) & (S_Rev(n) /= [0,1] ¥S_TIMES n) -- -- -- n-->T369 ==> (n = [car(n),cdr(n)]) & (car(n) = 0 or cdr(n) = 0) & (car(n) in Za) & (cdr(n) in Za) Use_def(¥S_TIMES) ==> S_Rev(n) /= Red([(car([0,1]) ¥TIMES car(n)) ¥PLUS (cdr([0,1]) ¥TIMES cdr(n)), (car([0,1]) ¥TIMES cdr(n)) ¥PLUS (car(n) ¥TIMES cdr([0,1]))]) ELEM ==> (car([0,1]) = 0) & (cdr([0,1]) = 1) EQUAL ==> S_Rev(n) /= Red([(0 ¥TIMES car(n)) ¥PLUS (1 ¥TIMES cdr(n)), (0 ¥TIMES cdr(n)) ¥PLUS (car(n) ¥TIMES 1)]) ALGEBRA ==> S_Rev(n) /= Red([cdr(n),car(n)]) Use_def(Red) ==> Red([cdr(n),car(n)]) = [cdr(n) ¥MINUS (cdr(n) * car(n)),car(n) ¥MINUS (cdr(n) * car(n))] ELEM ==> (cdr(n) * car(n)) = 0 EQUAL ==> Red([cdr(n),car(n)]) = [cdr(n) ¥MINUS 0,car(n) ¥MINUS 0] (cdr(n))-->T268 ==> (cdr(n) ¥MINUS 0) = #cdr(n) (car(n))-->T268 ==> (car(n) ¥MINUS 0) = #car(n) (cdr(n))-->T206 ==> Card(cdr(n)) (car(n))-->T206 ==> Card(car(n)) (cdr(n))-->T164 ==> #cdr(n) = cdr(n) (car(n))-->T164 ==> #car(n) = car(n) EQUAL ==> Red([cdr(n),car(n)]) = [cdr(n),car(n)] Use_def(S_Rev) ==> S_Rev(n) = [cdr(n),car(n)] Discharge ==> QED -- -- ************************************************************************************************ -- Section 10: Mathematical induction for integers; the general summation operator -- ************************************************************************************************ -- -- We now develop the standard theory of mathematical induction (for integers), which tells us that -- if there exists an integer $n$ having some property $P(n)$, there exists a smallest integer $m$ having the property $P(m)$. -- THEORY mathematical_induction(n,P(x)) (n in Za) & P(n) END mathematical_induction; -- ENTER_THEORY mathematical_induction -- -- We begin with two small 'glue' theorems, the first of which merely restates the assumptionof the present theory, therby making it -- available to the theorem-level APPLY inference which follows. -- Theorem mathematical_induction00: [Basic assumption for proofs by mathematical induction] (n in Za) & P(n). Proof: Suppose_not ==> not((n in Za) & P(n)) Assump ==> (n in Za) & P(n) Discharge ==> QED -- -- Next we APPLY transfinite_induction, to get a conclusion close to that which we desire. -- APPLY(mt1_thryvar:m2_thryvar) transfinite_induction(n->n,P(x)->((x in Za) & P(x))) ==> Theorem mathematical_induction0: [The minimum integer having a given property, preliminary version] (FORALL k | ((m2_thryvar in Za) & P(m2_thryvar)) & ((k in m2_thryvar) ¥imp (not ((k in Za) & P(k))))) -- -- The following result, which is the sole externally useful theorem of the present theory, shows that the quantity $m2_thryvar$ -- supplied by applying standard transfinite induction to the predicate $(n in Za) & P(n)$ has the minimality property we desire. -- Theorem mathematical_induction1: [The minimum integer having a given property] (m2_thryvar in Za) & P(m2_thryvar) & (FORALL k in m2_thryvar | not P(k)). Proof: Suppose_not ==> Stat1: not((m2_thryvar in Za) & P(m2_thryvar) & (FORALL k in m2_thryvar | not P(k))) -- -- Unwrap part of quantified statement which is not affected by the quantifier: -- Tmathematical_induction0 ==> Stat2: (FORALL k | ((m2_thryvar in Za) & P(m2_thryvar)) & ((k in m2_thryvar) ¥imp (not ((k in Za) & P(k))))) 0-->Stat2 ==> (m2_thryvar in Za) & P(m2_thryvar) -- -- -- For if not there would be some member $m$ of $m2_thryvar$ having the property $P(m)$, -- and since this $m$ would necessarily be an integer we have a contradiction which proves our assertion. -- ELEM ==> Stat3: not (FORALL n in m2_thryvar | not P(n)) m-->Stat3 ==> (m in m2_thryvar) & P(m) m-->Stat2 ==> m notin Za junk-->T206 ==> Ord(Za) (Za,m2_thryvar)-->T12 ==> Ord(m2_thryvar) (m2_thryvar,m)-->T12 ==> Ord(m) (Za,m)-->T35 ==> Za ¥incin m Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY mathematical_induction -- --THEORY mathematical_induction(n,P(x)) -- n in Za -- P(n) --==>(m2_thryvar) -- (m2_thryvar in Za) & P(m2_thryvar) & (FORALL n in m2_thryvar | not P(n)) --END mathematical_induction; -- -- -- One sometimes needs to give proofs by 'double induction', which use the fact that -- if there exist any $n$ and $k$ satisfying a 2-variable predicate $R(n,k)$, then -- there exist $m$ and $j$ satisfying this same predicate, which are minimal in the sense that -- $R(k,i)$ must be false for any $k$ less than $m$ and any $i$ at all, while $R(m,i)$ -- must also be false for any $i$ less than $j$. We give theories capable of supplying -- this fact in two variants: the first in which $n$ and $k$ are general sets, the second in which -- all the quantities involved are integers. -- -- THEORY double_transfinite_induction(n,k,R(x,y)) R(n,k) END double_transfinite_induction; -- ENTER_THEORY double_transfinite_induction -- Theorem double_transfinite_induction.0: [Basic assumption for proofs by double transfinite induction] (EXISTS i | R(n,i)). Proof: Suppose_not ==> Stat1: not(EXISTS i | R(n,i)) Assump ==> R(n,k) k-->Stat1 ==> false; Discharge ==> QED -- APPLY(mt1_thryvar:m3_thryvar) transfinite_induction(n->n, P(x)->(EXISTS i | R(x,i))) ==> Theorem double_transfinite_induction.1: [Minimum first element in a double transfinite induction] (FORALL k | ((EXISTS i | R(m3_thryvar,i)) & ((k in m3_thryvar) ¥imp (not (EXISTS i | R(k,i)))))) -- Theorem double_transfinite_induction.2: [Existence of a second element corresponding to the minimum first element] (EXISTS i | R(m3_thryvar,i)). Proof: Suppose_not ==> Stat1: (not (EXISTS i | R(m3_thryvar,i))) Tdouble_transfinite_induction.1 ==> Stat2: (FORALL k | ((EXISTS i | R(m3_thryvar,i)) & ((k in m3_thryvar) ¥imp (not (EXISTS i | R(k,i)))))) 0-->Stat2 ==> Stat3: (EXISTS i | R(m3_thryvar,i)) (Stat1,Stat3)Discharge ==> QED -- APPLY(v1_thryvar:ei1) Skolem() ==> Theorem double_transfinite_induction.3: [Minimum second element in a double transfinite induction] R(m3_thryvar,ei1) -- APPLY(mt1_thryvar:j1_thryvar) transfinite_induction(n->ei1,P(x)->R(m3_thryvar,x)) ==> Theorem double_transfinite_induction.4: [Minimal element properties in a double transfinite induction] (FORALL k | R(m3_thryvar,j1_thryvar) & ((k in j1_thryvar) ¥imp (not R(m3_thryvar,k)))) -- -- -- As an obvious corollary of the statements proved by the preceding two -- applications of transfinite induction, we get the following statement, -- which will be externalized by the present THEORY. -- Theorem double_transfinite_induction.5: [Minimal element properties in a double transfinite induction, 2] R(m3_thryvar,j1_thryvar) & ((K in m3_thryvar) ¥imp (not R(K,I))) & ((I in j1_thryvar) ¥imp (not R(m3_thryvar,I))). Proof: Suppose_not(i) ==> (not R(m3_thryvar,j1_thryvar)) or ((k in m3_thryvar) & R(k,i)) or ((i in j1_thryvar) & R(m3_thryvar,i)) Suppose ==> Stat1: (k in m3_thryvar) & R(k,i) Tdouble_transfinite_induction.1 ==> Stat2: (FORALL k | (EXISTS i | R(m3_thryvar,i)) & ((k in m3_thryvar) ¥imp (not (EXISTS i | R(k,i))))) k-->Stat2 ==> Stat3: (not(EXISTS i | R(k,i))) i-->Stat3 ==> false; Discharge ==> (not R(m3_thryvar,j1_thryvar)) or ((i in j1_thryvar) & R(m3_thryvar,i)) Tdouble_transfinite_induction.4 ==> Stat4: (FORALL i | R(m3_thryvar,j1_thryvar) & ((i in j1_thryvar) ¥imp (not R(m3_thryvar,i)))) i-->Stat4 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY double_transfinite_induction -- -- --THEORY double_transfinite_induction(R(x,y)); -- (EXISTS n, k | R(n,k)) --==>(m3_thryvar,j1_thryvar) -- R(m3_thryvar,j1_thryvar) & (FORALL k in m3_thryvar, i in OM | not R(k,i)) & (FORALL i in j1_thryvar | not R(m3_thryvar,i)) --END double_transfinite_induction; -- -- -- -- The following simple variant of the preceding theory tells us that -- if there exist any integers $n$ and $k$ satisfying a 2-variable predicate $R(n,k)$, then -- there exist integers $m$ and $j$ satisyfing this same predicate, which are minimal in the sense that -- $R(k,i)$ must be false for any integer $k$ less than $m$ and any integer $i$ at all, while $R(m,i)$ -- must also be false for any integer $i$ less than $j$. -- THEORY double_mathematical_induction(n,k,R(x,y)) (n in Za) & (k in Za) & R(n,k) END double_mathematical_induction; -- ENTER_THEORY double_mathematical_induction -- Theorem double_mathematical_induction.0: [Basic assumption for double integer induction] (EXISTS i | (i in Za) & R(n,i)). Proof: Suppose_not ==> Stat1: not(EXISTS i | (i in Za) & R(n,i)) Assump ==> (k in Za) & R(n,k) k-->Stat1 ==> false; Discharge ==> QED -- APPLY(m2_thryvar:mm_thryvar) mathematical_induction(n->n, P(x)->(EXISTS i | (i in Za) & R(x,i))) ==> Theorem double_mathematical_induction.1: [Minimum first element for a double integer induction] (mm_thryvar in Za) & (EXISTS i | (i in Za) & R(mm_thryvar,i)) & (FORALL k in mm_thryvar | not (EXISTS i | (i in Za) & R(k,i))) -- Theorem double_mathematical_induction.2: (EXISTS i | (i in Za) & R(mm_thryvar,i)). Proof: Suppose_not ==> Stat1: (not (EXISTS i | (i in Za) & R(mm_thryvar,i))) Tdouble_mathematical_induction.1 ==> Stat2: (FORALL k | (mm_thryvar in Za) & (EXISTS i | (i in Za) & R(mm_thryvar,i)) & ((k in mm_thryvar) ¥imp (not (EXISTS i | (i in Za) & R(k,i))))) 0-->Stat2 ==> Stat3: (EXISTS i | (i in Za) & R(mm_thryvar,i)) (Stat1,Stat3)Discharge ==> QED -- APPLY(v1_thryvar:ei2) Skolem() ==> Theorem double_mathematical_induction.3: (ei2 in Za) & R(mm_thryvar,ei2) -- APPLY(m2_thryvar:j2_thryvar) mathematical_induction(n->ei2, P(x)->R(mm_thryvar,x)) ==> Theorem double_mathematical_induction.4: (FORALL i | (j2_thryvar in Za) & R(mm_thryvar,j2_thryvar) & ((i in j2_thryvar) ¥imp (not ((i in Za) & R(mm_thryvar,i))))) -- -- As a straightforward corollary of the statements proved by the preceding two -- applications of mathematical induction, we get the following statement, -- which will be externalized by the present THEORY. -- Theorem double_mathematical_induction.5: (mm_thryvar in Za) & (j2_thryvar in Za) & R(mm_thryvar,j2_thryvar) & (((K in mm_thryvar) & (I in Za)) ¥imp (not R(K,I))) & ((I in j2_thryvar) ¥imp (not R(mm_thryvar,I))). Proof: Suppose_not(i) ==> (mm_thryvar notin Za) or (j2_thryvar notin Za) or (not R(mm_thryvar,j2_thryvar)) or ((k in mm_thryvar) & (i in Za) & R(k,i)) or ((i in j2_thryvar) & R(mm_thryvar,i)) Suppose ==> (mm_thryvar notin Za) or ((k in mm_thryvar) & (i in Za) & R(k,i)) Tdouble_mathematical_induction.1 ==> (mm_thryvar in Za) & (EXISTS i | (i in Za) & R(mm_thryvar,i)) & Stat1: (FORALL k in mm_thryvar | not (EXISTS i | (i in Za) & R(k,i))) k-->Stat1 ==> Stat2: (not (EXISTS i | (i in Za) & R(k,i))) i-->Stat2 ==> false; Discharge ==> (j2_thryvar notin Za) or (not R(mm_thryvar,j2_thryvar)) or ((i in j2_thryvar) & R(mm_thryvar,i)) Tdouble_mathematical_induction.4 ==> Stat3: (FORALL i | (j2_thryvar in Za) & R(mm_thryvar,j2_thryvar) & ((i in j2_thryvar) ¥imp (not((i in Za) & R(mm_thryvar,i))))) i-->Stat3 ==> (i in j2_thryvar) & (j2_thryvar in Za) & (i notin Za) junk-->T206 ==> Ord(Za) (Za,j2_thryvar)-->T12 ==> Ord(j2_thryvar) (j2_thryvar,i)-->T12 ==> Ord(i) (Za,i)-->T35 ==> Za ¥incin i Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY double_mathematical_induction -- --THEORY double_mathematical_induction(n,k,R(x,y)); -- (n in Za) & (k in Za) & R(n,k) --==>(mm_thryvar,j2_thryvar) -- (FORALL k, i | (mm_thryvar in Za) & (j2_thryvar in Za) & R(mm_thryvar,j2_thryvar) & -- (((k in mm_thryvar) & (i in Za)) ¥imp (not R(k,i))) & ((i in j2_thryvar) ¥imp (not R(mm_thryvar,i)))) --END double_mathematical_induction; -- -- -- -- The following mini-theory shows that any infinite increasing sequence all of whose images are -- circumscribed by a finite set has two consecutive equal components. -- THEORY confinedIncrSeq(e(x),s0) Finite(s0) (FORALL i in Za | e(i) ¥incin (e(next(i)) * s0)) END confinedIncrSeq -- Def 10070: [position of first repetition in confined increasing sequence] m5_thryvar := arb({i in Za | e(next(i)) ¥incin e(i)}) -- ENTER_THEORY confinedIncrSeq -- Theorem confinedIncrSeq1: [global increase of a stepwise increasing sequence] ((I in J) & (J in Za)) ¥imp (e(I) ¥incin e(J)). Proof: Suppose_not(i0,j0) ==> AUTO T206(*) ==> Stat1: Ord(Za) (Za,j0)-->T13(*) ==> (i0 in Za) & (j0 in Za) & (e(i0) ¥nincin e(j0)) --? APPLY(mm_thryvar:i1,j2_thryvar:i2) double_mathematical_induction(n->i0,k->j0,R(x,y)->((x in y) & (e(x) ¥nincin e(y)))) ==> --? Stat2: (FORALL k, i | (i1 in Za) & (i2 in Za) & ((i1 in i2) & (e(i1) ¥nincin e(i2))) & (((k in i1) & (i in Za)) ¥imp (not ((k in i) & (e(k) ¥nincin e(i))))) & ((i in i2) ¥imp (not ((i1 in i) & (e(i1) ¥nincin e(i)))))) -- (0,0)-->Stat2(Stat2*) ==> Stat3: (i1 in Za) & (i2 in Za) & (i1 in i2) & (e(i1) ¥nincin e(i2)) -- Suppose ==> Stat4: not(FORALL i in i2 | not((i1 in i) & (e(i1) ¥nincin e(i)))) -- i4-->Stat4(Stat4*) ==> Stat5: (i4 in i2) & (i1 in i4) & (e(i1) ¥nincin e(i4)) -- (0,i4)-->Stat2(Stat5*) ==> false; Discharge ==> Stat6: (FORALL i in i2 | not((i1 in i) & (e(i1) ¥nincin e(i)))) APPLY(mm_thryvar:i1,j2_thryvar:i2) double_mathematical_induction(n->i0,k->j0,R(x,y)->((x in y) & (e(x) ¥nincin e(y)))) ==> Stat7: (i1 in Za) & Stat6: (FORALL i | (i2 in Za) & ((i1 in i2) & (e(i1) ¥nincin e(i2))) & ((i in i2) ¥imp (not((i in Za) & ((i1 in i) & (e(i1) ¥nincin e(i))))))) 0-->Stat6(Stat7*) ==> Stat3: (i1 in Za) & (i2 in Za) & (i1 in i2) & (e(i1) ¥nincin e(i2)) Loc_def ==> i3 = Un(i2) i2-->T321(Stat3*) ==> Stat8: i3 in Za i3-->T317(Stat8*) ==> (i3 ¥PLUS 1) = next(i3) EQUAL(Stat3) ==> (Un(i2) ¥PLUS 1) = next(i3) i2-->T322(Stat3*) ==> Stat9: i2 = next(i3) (Za,i3)-->T12(Stat1,Stat8*) ==> Stat10: Ord(i3) (i3,i1)-->T36(Stat3*) ==> (i1 ¥incin i3) & Ord(i1) Assump ==> Stat11: (FORALL i in Za | e(i) ¥incin (e(next(i)) * s0)) Suppose ==> i1 = i3 EQUAL(Stat3) ==> e(i1) ¥nincin e(next(i1)) i1-->Stat11(Stat3*) ==> false; Discharge ==> i1 /= i3 (i3,i1)-->T34(Stat10*) ==> Stat12: i1 in i3 Use_def(next)(Stat9*) ==> i3 in i2 i3-->Stat6(Stat8*) ==> Stat13: e(i1) ¥incin e(i3) i3-->Stat11(Stat8,Stat8*) ==> e(i3) ¥incin e(next(i3)) EQUAL(Stat9) ==> Stat14: e(i3) ¥incin e(i2) (Stat13,Stat14,Stat3*)Discharge ==> QED -- Theorem confinedIncrSeq2: [position of first repetition in confined increasing sequence] (m5_thryvar in Za) & (e(next(m5_thryvar)) = e(m5_thryvar)) & ((m5_thryvar * {i in Za | e(next(i)) ¥incin e(i)}) = 0). Proof: Suppose_not ==> AUTO -- -- Assuming the contrary, observe in the first place that the set -- {i in Za | e(next(i)) ¥incin e(i)} -- cannot be empty. -- Assump ==> Stat1: (FORALL i in Za | e(i) ¥incin (e(next(i)) * s0)) Suppose ==> {i in Za | e(next(i)) ¥incin e(i)} /= 0 Use_def(m5_thryvar) ==> m5_thryvar = arb({i in Za | e(next(i)) ¥incin e(i)}) ({i in Za | e(next(i)) ¥incin e(i)})-->T0(*) ==> Stat2: (m5_thryvar in {i in Za | e(next(i)) ¥incin e(i)}) & ((m5_thryvar * {i in Za | e(next(i)) ¥incin e(i)}) = 0) m5_thryvar-->Stat2(*) ==> Stat3: (m5_thryvar in Za) & (e(m5_thryvar) ¥nincin e(next(m5_thryvar))) m5_thryvar-->Stat1(Stat3*) ==> false; Discharge ==> Stat4: {i in Za | e(next(i)) ¥incin e(i)} = 0 -- -- Otherwise stated, there is an element in $e(next(i)) - e(i)$, for every $i$ in $Za$. -- Suppose ==> Stat5: not(FORALL i in Za | arb(e(next(i)) - e(i)) in (e(next(i)) - e(i))) i1-->Stat5(Stat5*) ==> (i1 in Za) & (arb(e(next(i1)) - e(i1)) notin (e(next(i1)) - e(i1))) (e(next(i1)) - e(i1))-->T0(Stat5*) ==> e(next(i1)) ¥incin e(i1) i1-->Stat4(Stat4*) ==> false; Discharge ==> Stat6: (FORALL i in Za | arb(e(next(i)) - e(i)) in (e(next(i)) - e(i))) -- -- We will show that the mapping which sends every integer $i$ into $arb(e(next(i)) - e(i))$ is -- one-one. However, since its domain $Za$ is infinite, and all of its images belong to $s0$, -- this leads to a contradiction, from which the desired statement ensues. -- Suppose ==> Stat7: not(range({[i,arb(e(next(i)) - e(i))]: i in Za }) ¥incin s0) TELEM ==> range({[i,arb(e(next(i)) - e(i))]: i in Za }) = {arb(e(next(i)) - e(i)): i in Za } (Stat7*)ELEM ==> Stat8: not({arb(e(next(i)) - e(i)): i in Za} ¥incin s0) c-->Stat8(Stat8*) ==> Stat9: (c in {arb(e(next(i)) - e(i)): i in Za}) & (c notin s0) i0-->Stat9(Stat9*) ==> (i0 in Za) & (arb(e(next(i0)) - e(i0)) notin s0) i0-->Stat6(Stat6*) ==> arb(e(next(i0)) - e(i0)) in (e(next(i0)) - e(i0)) i0-->T210(Stat9*) ==> next(i0) in Za (next(i0))-->Stat1(Stat9*) ==> false; Discharge ==> Stat10: range({[i,arb(e(next(i)) - e(i))]: i in Za }) ¥incin s0 Suppose ==> one_1_map({[i,arb(e(next(i)) - e(i))]: i in Za}) T206(Stat10*) ==> (not Finite(Za)) TELEM ==> domain({[i,arb(e(next(i)) - e(i))]: i in Za }) = Za ({[i,arb(e(next(i)) - e(i))]: i in Za})-->T191(Stat10*) ==> (not Finite(range({[i,arb(e(next(i)) - e(i))]: i in Za}))) Assump ==> Finite(s0) (s0,range({[i,arb(e(next(i)) - e(i))]: i in Za}))-->T189(Stat10*) ==> false; Discharge ==> Stat11: (not one_1_map({[i,arb(e(next(i)) - e(i))]: i in Za})) -- -- Denying that the mapping which sends every integer $i$ into $arb(e(next(i)) - e(i))$ is -- one-one would, in fact, amount to denying that it inverse is single-valued. -- Let $i2,i3$ be integers which witness this fact. -- Use_def(one_1_map)(Stat11) ==> Stat12: not(FORALL x in {[i,arb(e(next(i)) - e(i))]: i in Za}, y in {[i,arb(e(next(i)) - e(i))]: i in Za} | (cdr(x) = cdr(y)) ¥imp (x = y)) (p,q)-->Stat12(Stat12*) ==> Stat13: (p in {[i,arb(e(next(i)) - e(i))]: i in Za}) & (q in {[i,arb(e(next(i)) - e(i))]: i in Za}) & (cdr(p) = cdr(q)) & (p /= q) (i2,i3)-->Stat13(Stat13*) ==> Stat14: (p = [i2,arb(e(next(i2)) - e(i2))]) & (i2 in Za) & (q = [i3,arb(e(next(i3)) - e(i3))]) & (i3 in Za) EQUAL(Stat13) ==> Stat15: (cdr([i2,arb(e(next(i2)) - e(i2))]) = cdr([i3,arb(e(next(i3)) - e(i3))])) (Stat15)ELEM ==> Stat16: arb(e(next(i2)) - e(i2)) = arb(e(next(i3)) - e(i3)) EQUAL(Stat13) ==> Stat17: [i2,arb(e(next(i2)) - e(i2))] /= [i3,arb(e(next(i3)) - e(i3))] (Stat16)ELEM ==> Stat18: i2 /= i3 -- -- Either $i2 in i3$ or $i3 in i2$, because $i2,i3$ are ordinals. In the former case -- $next(i2) in i3$ or $next(i2) = i3$, and hence $e(next(i2)) ¥incin e(i3)$ by the -- preceding Theorem confinedIncrSeq2. But then it is impossible that $arb(e(next(i2)) - e(i2))$ -- belongs to $e(next(i3)) - e(i3)$, and we face a contradiction. -- T206(Stat18*) ==> Ord(Za) (Za,i2)-->T12(Stat14*) ==> Ord(i2) (Za,i3)-->T12(Stat14*) ==> Ord(i3) i3-->Stat6(Stat14*) ==> Stat19: arb(e(next(i3)) - e(i3)) in (e(next(i3)) - e(i3)) i2-->Stat6(Stat14*) ==> Stat20: arb(e(next(i2)) - e(i2)) in (e(next(i2)) - e(i2)) Suppose ==> i2 in i3 (i3,i2)-->T37(Stat18*) ==> next(i2) ¥incin i3 i2-->T210(Stat14,Stat14*) ==> next(i2) in Za (Za,next(i2))-->T12(Stat18*) ==> Ord(next(i2)) (i3,next(i2))-->T34(Stat18*) ==> (next(i2) in i3) or (next(i2) = i3) Suppose ==> Stat21: e(next(i2)) ¥nincin e(i3) Suppose ==> next(i2) = i3 EQUAL(Stat21) ==> e(next(i2)) = e(i3) (Stat21*)Discharge ==> next(i2) in i3 (next(i2),i3)-->TconfinedIncrSeq1(Stat13*) ==> false; Discharge ==> Stat22: e(next(i2)) ¥incin e(i3) (Stat16,Stat19,Stat20,Stat22*)Discharge ==> i2 notin i3 (i2,i3)-->T31(Stat18*) ==> i3 in i2 -- -- Analogously we get a contradiction if we suppose that $i3 in i2$. -- This last contradiction leads to the desired conclusion. -- (i2,i3)-->T37(Stat18*) ==> next(i3) ¥incin i2 i3-->T210(Stat14,Stat14*) ==> next(i3) in Za (Za,next(i3))-->T12(Stat18*) ==> Ord(next(i3)) (i2,next(i3))-->T34(Stat18*) ==> (next(i3) in i2) or (next(i3) = i2) Suppose ==> Stat23: e(next(i3)) ¥nincin e(i2) Suppose ==> next(i3) = i2 EQUAL(Stat23) ==> e(next(i3)) = e(i2) (Stat23*)Discharge ==> next(i3) in i2 (next(i3),i2)-->TconfinedIncrSeq1(Stat13*) ==> false; Discharge ==> Stat24: e(next(i3)) ¥incin e(i2) (Stat16,Stat19,Stat20,Stat24*)Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY confinedIncrSeq -- --THEORY confinedIncrSeq(e(x),s0) -- Finite(s0) -- (FORALL i in Za | e(i) ¥incin (e(next(i)) * s0)) --==>(m5_thryvar) -- (FORALL i, j | ((i in j) & (j in Za)) ¥imp (e(i) ¥incin e(j))) -- (m5_thryvar in Za) & (e(next(m5_thryvar)) = e(m5_thryvar)) & ((m5_thryvar * {i in Za | e(next(i)) ¥incin e(i)}) = 0) --END confinedIncrSeq -- -- -- Next we prove a general version of the principle that recursive definitions of functions $h$ -- over any well-founded set are valid if the definition of $h(x)$ involves only values $y$ which -- precede $y$ in the well-founded relation of the set. Given a well-ordering relationship $arg1_bef_arg2$, -- and given any functions $f(x)$, $g4(x,y,u,v)$, and $P(x,y,u)$ our aim is to prove that therese exists a function -- $h$ which satisfies the identity -- $(FORALL x in s, t in OM | h3_thryvar(x,s,t) = f({g4(h3_thryvar(y,s,t),y,x,t): y in s | arg1_bef_arg2(y,x) & P(h3_thryvar(y,s,t),s,y,x,t)},s,x,t))$. -- -- This is not an immediate consequence of our principle of recursive definition, which insists on using the membership relator in place of the -- general well-foundedness relator $arg1_bef_arg2$ which we now consider. We therefore proceed by introducng an enumerator which relates -- $arg1_bef_arg2$ closely enough to memebership for our principle of recursive definition to be used. -- THEORY wellfounded_recursive_fcn(s,arg1_bef_arg2(y,x),f3(b,x,t),g4(a,y,x,t),P4(a,y,x,t)) (FORALL t | ((t ¥incin s) & (t /= 0) ¥imp (EXISTS x in t | (FORALL y in t | not(arg1_bef_arg2(y,x)))))) END wellfounded_recursive_fcn; -- ENTER_THEORY wellfounded_recursive_fcn -- -- -- We begin by importing a theorem of the theory well_founded_set into the present theory. -- APPLY(Minrel1_thryvar:Minrel3_thryvar,ordenm_thryvar:orden,ord_thryvar:o1) well_founded_set(s->s,arg1_bef_arg2(x,y)->arg1_bef_arg2(x,y)) ==> Theorem wellfounded_recursive_fcn.100: (FORALL u, v | (Ord(u) & Ord(v) & (orden(u) /= s) & arg1_bef_arg2(orden(u),orden(v))) ¥imp (u in v)) & (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {orden(x): x in o}) & (FORALL x in o | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o}))) -- -- To draw the conclusion seen a bit below we must simplify the quantifier which appears in the preceding statement. -- Theorem wellfounded_recursive_fcn.100a: (EXISTS o | (Ord(o) & (s = {orden(x): x in o}) & (FORALL x in o | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o}))). Proof: Suppose_not ==> Stat1: not (EXISTS o | (Ord(o) & (s = {orden(x): x in o}) & (FORALL x in o | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o}))) Twellfounded_recursive_fcn.100 ==> Stat2: (EXISTS o in next(#pow(s)) | (Ord(o) & (s = {orden(x): x in o}) & (FORALL x in o | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o}))) o-->Stat2 ==> Ord(o) & (s = {orden(x): x in o}) & (FORALL x in o | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o}) o-->Stat1 ==> false; Discharge ==> QED -- -- We can now introduce a specific constant o by Skolemizing the existential statement seen just above. -- APPLY(v1_thryvar:o2) Skolem() ==> Theorem wellfounded_recursive_fcn.101: (Ord(o2) & (s = {orden(x): x in o2}) & (FORALL x in o2 | (orden(x) /= s)) & one_1_map({[x,orden(x)]: x in o2})) -- -- We also introduce an indexing function which will turn out to be the inverse of this -- one-to-one mapping and to assign consecutive ordinals to the elements of $s$. -- Def 00r: [Ordinal index defined by the standard enumeration of sets] index(X) := arb({j: j in o2 | orden(j) = X}) -- -- The desired function $h$ is not directly definable by a recursive rule based on the well-founded relation. -- On the other hand, we can define an auxiliary function $hh$ by means of a recursive rule based -- on membership; and then define $h$ in terms of $hh$ and the indexing function. -- Def 00s: [?] hh(X,T) := f3({g4(hh(j,T),orden(j),orden(X),T): j in X | arg1_bef_arg2(orden(j),orden(X)) & P4(hh(j,T),orden(j),orden(X),T)}, orden(X), T) -- Def 00t: [?] wfh2_thryvar(V,T) := hh(index(V), T) -- -- We first prove that the 'index' function defined above assigns an ordinal preceding $o2$ to every -- element of $s$ and is a partial inverse of the enumerator $orden$. -- Theorem wellfounded_recursive_fcn.1: (V in s) ¥imp ((index(V) in o2) & Ord(index(V)) & (orden(index(V)) = V)). Proof: Suppose_not(v) ==> (v in s) & ((index(v) notin o2) or (not Ord(index(v))) or (orden(index(v)) /= v)) -- -- For if $v$ is a counterexample to our theorem, it must be the image under the -- $orden$ of some element $x in o2$. hence the set ${j: j in o2 | orden(j) = v}$ cannot -- be empty, and so the index of $v$ must belong to this set. -- Twellfounded_recursive_fcn.101 ==> Ord(o2) & (s = {orden(x): x in o2}) EQUAL ==> Stat1: v in {orden(x): x in o2} x-->Stat1 ==> (v = orden(x)) & (x in o2) Suppose ==> Stat2: {j: j in o2 | orden(j) = v} = 0 x-->Stat2 ==> false; Discharge ==> arb({j: j in o2 | orden(j) = v}) in {j: j in o2 | orden(j) = v} Use_def(index) ==> Stat3: index(v) in {j: j in o2 | orden(j) = v} -- -- $index(v)$ must therefore be an element $j$ of $o2$ whose image under $orden$ is $v$. -- By our initial assumption this implies, that it cannot be an ordinal. Since $o2$ is an ordinal, -- so that its elements are also ordinals, this leads to an immediate ontradiction. -- j-->Stat3 ==> Stat4: (index(v) = j) & (j in o2) & (orden(j) = v) EQUAL ==> orden(index(v)) = v (o2,index(v))-->T12 ==> false; Discharge ==> QED -- -- Next we prove that for every element $v$ of the set $s$ of the well-founded relation is defined, the subset -- ${j: j in index(v) | arg1_bef_arg2(orden(j),v)}$ can be written as ${index(w): w in s | arg1_bef_arg2(w,v)}$. -- Theorem wellfounded_recursive_fcn.2: (V in s) ¥imp ({j: j in index(V) | arg1_bef_arg2(orden(j),V)} = {index(w): w in s | arg1_bef_arg2(w,V)}). Proof: Suppose_not(v) ==> (v in s) & Stat1: ({j: j in index(v) | arg1_bef_arg2(orden(j),v)} /= {index(w): w in s | arg1_bef_arg2(w,v)}) -- Suppose that $v$ is a counterexample $v$ to our assertion, and let $c$ be an element which belongs to one of -- these two sets but not the other. -- If $c$ belongs to ${index(w): w in s | arg1_bef_arg2(w,v)}$, then $c$ is the index of -- some $w in s$, in which case the preceding Theorem tells us that -- $v$ and $w$ have indices which are ordinals whose images under the enumerator -- $enum$ are $v$ and $w$ respectively. Theorem wellfounded_recursive_fcn.100 then tells us that the index of $w$ -- precedes that of $v$ in the standard ordering of ordinals, which leads easily to a contradiction also -- in this case. -- v-->Twellfounded_recursive_fcn.1 ==> (index(v) in o2) & Ord(index(v)) & (orden(index(v)) = v) c-->Stat1 ==> (c in {j: j in index(v) | arg1_bef_arg2(orden(j),v)}) ¥eq (c notin {index(w): w in s | arg1_bef_arg2(w,v)}) Suppose ==> Stat2: (c in {index(w): w in s | arg1_bef_arg2(w,v)}) & (c notin {j: j in index(v) | arg1_bef_arg2(orden(j),v)}) (w,index(w))-->Stat2 ==> (c = index(w)) & (w in s) & arg1_bef_arg2(w,v) & ((index(w) notin index(v)) or (not arg1_bef_arg2(orden(index(w)),v))) w-->Twellfounded_recursive_fcn.1 ==> Ord(index(w)) & (orden(index(w)) = w) EQUAL ==> arg1_bef_arg2(orden(index(w)),v) & arg1_bef_arg2(orden(index(w)),orden(index(v))) Twellfounded_recursive_fcn.100 ==> Stat3: (FORALL u, v | (Ord(u) & Ord(v) & (orden(u) /= s) & arg1_bef_arg2(orden(u),orden(v))) ¥imp (u in v)) (index(w),index(v))-->Stat3 ==> false; Discharge ==> Stat4: (c in {j: j in index(v) | arg1_bef_arg2(orden(j),v)}) & (c notin {index(w): w in s | arg1_bef_arg2(w,v)}) -- -- Hence $c$ must belong to ${j: j in index(v) | arg1_bef_arg2(orden(j),v)}$; -- and thus $orden(c)$ must precede $v$ in our well-founded relation. Moreover, it is readily -- seen that $c$ belongs to $o2$ and that $orden(c) in s$. -- (j,orden(c))-->Stat4 ==> (c=j) & (c in index(v)) & arg1_bef_arg2(orden(j),v) & ((c /= index(orden(c))) or (orden(c) notin s) or (not arg1_bef_arg2(orden(c),v))) EQUAL ==> arg1_bef_arg2(orden(c),v) Twellfounded_recursive_fcn.101 ==> Ord(o2) & (s = {orden(x): x in o2}) & one_1_map({[x,orden(x)]: x in o2}) (o2,index(v))-->T13 ==> c in o2 Suppose ==> orden(c) notin s EQUAL ==> Stat5: orden(c) notin {orden(x): x in o2} c-->Stat5 ==> false; Discharge ==> (orden(c) in s) & (c /= index(orden(c))) -- -- Using Theorem wellfounded_recursive_fcn.1 again, we find that the index $i$ of $orden(c)$ -- belongs to $o2$ and has $orden(i)=orden(c)$. Since $orden$ is one-to-one over $s$, we get -- a contradiction in this case too, proving our theorem. -- (orden(c))-->Twellfounded_recursive_fcn.1 ==> (index(orden(c)) in o2) & (orden(index(orden(c))) = orden(c)) Suppose ==> Stat6: [c,orden(c)] notin {[x,orden(x)]: x in o2} c-->Stat6 ==> false; Discharge ==> [c,orden(c)] in {[x,orden(x)]: x in o2} Suppose ==> Stat7: [index(orden(c)),orden(index(orden(c)))] notin {[x,orden(x)]: x in o2} (index(orden(c)))-->Stat7 ==> false; Discharge ==> [index(orden(c)),orden(index(orden(c)))] in {[x,orden(x)]: x in o2} Use_def(one_1_map) ==> Stat8: (FORALL x in {[x,orden(x)]: x in o2}, y in {[x,orden(x)]: x in o2} | (cdr(x) = cdr(y)) ¥imp (x = y)) ([index(orden(c)),orden(index(orden(c)))],[c,orden(c)])-->Stat8 ==> false; Discharge ==> QED -- -- Now we show that the function $h$, although defined indirectly in the manner seen above, -- nevertheless satisfies the recursive relationship that we have defined. -- -- Theorem wellfounded_recursive_fcn.3: (X in s) ¥imp (wfh2_thryvar(X,T) = f3({g4(wfh2_thryvar(y,T),y,X,T): y in s | arg1_bef_arg2(y,X) & P4(wfh2_thryvar(y,T),y,X,T)},X,T)). Proof: Suppose_not(v,t) ==> (v in s) & (wfh2_thryvar(v,t) /= f3({g4(wfh2_thryvar(y,t),y,v,t): y in s | arg1_bef_arg2(y,v) & P4(wfh2_thryvar(y,t),y,v,t)},v,t)) -- -- For suppose that some $v$ in the domain $s$ of the well_founded relation -- $h$ fails to satisfy this recursion. Expand the definition of $h$ -- and then simplify the resulting expression, using Theorems wellfounded_recursive_fcn.1 and 2 in the following way to derive a contradiction. -- Use_def(wfh2_thryvar) ==> wfh2_thryvar(v,t) = hh(index(v), t) Use_def(hh) ==> hh(index(v), t) = f3({g4(hh(j,t),orden(j),orden(index(v)),t): j in index(v) | arg1_bef_arg2(orden(j),orden(index(v))) & P4(hh(j,t),orden(j),orden(index(v)),t)}, orden(index(v)), t) v-->Twellfounded_recursive_fcn.1 ==> orden(index(v)) = v EQUAL ==> wfh2_thryvar(v, t) = f3({g4(hh(j,t),orden(j),v,t): j in index(v) | arg1_bef_arg2(orden(j),v) & P4(hh(j,t),orden(j),v,t)}, v, t) Suppose ==> {g4(hh(j,t),orden(j),v,t): j in index(v) | arg1_bef_arg2(orden(j),v) & P4(hh(j,t),orden(j),v,t)} /= {g4(hh(j,t),orden(j),v,t): j in {j: j in index(v) | arg1_bef_arg2(orden(j),v)} | P4(hh(j,t),orden(j),v,t)} SIMPLF ==> false; Discharge ==> {g4(hh(j,t),orden(j),v,t): j in index(v) | arg1_bef_arg2(orden(j),v) & P4(hh(j,t),orden(j),v,t)} = {g4(hh(j,t),orden(j),v,t): j in {j: j in index(v) | arg1_bef_arg2(orden(j),v)} | P4(hh(j,t),orden(j),v,t)} v-->Twellfounded_recursive_fcn.2 ==> {j: j in index(v) | arg1_bef_arg2(orden(j),v)} = {index(y): y in s | arg1_bef_arg2(y,v)} EQUAL ==> {g4(hh(j,t),orden(j),v,t): j in {j: j in index(v) | arg1_bef_arg2(orden(j),v)} | P4(hh(j,t),orden(j),v,t)} = {g4(hh(j,t),orden(j),v,t): j in {index(y): y in s | arg1_bef_arg2(y,v)} | P4(hh(j,t),orden(j),v,t)} SIMPLF ==> {g4(hh(j,t),orden(j),v,t): j in {index(y): y in s | arg1_bef_arg2(y,v)} | P4(hh(j,t),orden(j),v,t)} = {g4(hh(index(y),t),orden(index(y)),v,t): y in s | arg1_bef_arg2(y,v) & P4(hh(index(y),t),orden(index(y)),v,t)} Suppose ==> Stat1: {g4(hh(index(y),t),orden(index(y)),v,t): y in s | arg1_bef_arg2(y,v) & P4(hh(index(y),t),orden(index(y)),v,t)} /= {g4(wfh2_thryvar(y,t),y,v,t): y in s | arg1_bef_arg2(y,v) & P4(wfh2_thryvar(y,t),y,v,t)} w-->Stat1 ==> (w in s) & ((g4(hh(index(w),t),orden(index(w)),v,t) /= g4(wfh2_thryvar(w,t),w,v,t)) or not(P4(hh(index(w),t),orden(index(w)),v,t)) ¥eq P4(wfh2_thryvar(w,t),w,v,t)) Use_def(wfh2_thryvar) ==> wfh2_thryvar(w,t) = hh(index(w), t) w-->Twellfounded_recursive_fcn.1 ==> orden(index(w)) = w EQUAL ==> false; Discharge ==> {g4(hh(index(y),t),orden(index(y)),v,t): y in s | arg1_bef_arg2(y,v) & P4(hh(index(y),t),orden(index(y)),v,t)} = {g4(wfh2_thryvar(y,t),y,v,t): y in s | arg1_bef_arg2(y,v) & P4(wfh2_thryvar(y,t),y,v,t)} EQUAL ==> wfh2_thryvar(v, t) = f3({g4(wfh2_thryvar(y,t),y,v,t): y in s | arg1_bef_arg2(y,v) & P4(wfh2_thryvar(y,t),y,v,t)}, v, t) Discharge ==> QED -- APPLY(wfh2_thryvar:rk_thryvar) wellfounded_recursive_fcn(s->s,arg1_bef_arg2(y,x)->arg1_bef_arg2(y,x),f3(b,x,t)->Un(b),g4(a,y,x,t)->next(a),P4(a,y,x,t)->([y,x] in t)) ==> Theorem wellfounded_recursive_fcn.4: (FORALL x, t | (x in s) ¥imp (rk_thryvar(x,t) = Un({next(rk_thryvar(y,t)): y in s | arg1_bef_arg2(y,x) & ([y,x] in t)}))) -- ENTER_THEORY Set_theory -- -- The theory just derived can be summarized as follows. -- --DISPLAY wellfounded_recursive_fcn -- --THEORY wellfounded_recursive_fcn(s,arg1_bef_arg2(y,x),f3(b,x,t),g4(a,y,x,t),P4(a,y,x,t)) -- (FORALL t ¥incin s | ((t /= 0) ¥imp (EXISTS x in t | (FORALL y in t | not(arg1_bef_arg2(y,x)))))) --==>(wfh2_thryvar,rk_thryvar) -- (FORALL x, t | (x in s) ¥imp (wfh2_thryvar(x,t) = f3({g4(wfh2_thryvar(y,t),y,x,t): y in s | arg1_bef_arg2(y,x) & P4(wfh2_thryvar(y,t),y,x,t)},x,t))) -- (FORALL x, t | (x in s) ¥imp (rk_thryvar(x,t) = Un({next(rk_thryvar(y,t)): y in s | arg1_bef_arg2(y,x) & ([y,x] in t)}))) --END wellfounded_recursive_fcn; -- -- The following theorem states that inclusion is a well-founded relation on each -- family of finite sets. -- Theorem 411: [well-foundedness of inclusion between finite sets] ((FORALL v in X | Finite(v)) & (U ¥incin X) & (U /= 0)) ¥imp (EXISTS w in U | (FORALL y in U | not((y ¥incin w) & (y /= w)))). Proof: Suppose_not(x,u) ==> Stat1: (u ¥incin x) & (u /= 0) & Stat2: (not(EXISTS w in u | (FORALL y in u | not((y ¥incin w) & (y /= w))))) & Stat3: (FORALL v in x | Finite(v)) -- -- For, assuming the contrary, there must exist a finite non-null set $u$ none of -- whose elements is inclusion minimal. Apply the theory of finite induction to $arb(u)$, -- thereby obtaining a set $m$ having strict subset $k$ belonging to $u$ but which is such that no -- strict subset of any such k belongs to $u$. Consideration of $m$ and such a $k$ -- leads immediatiately to a contradiction which proves our theorem. -- Suppose ==> Stat4: not(EXISTS y in u | (y ¥incin arb(u)) & (y /= arb(u))) (arb(u),y0)-->Stat2 ==> Stat5: not(FORALL y in u | not((y ¥incin arb(u)) & (y /= arb(u)))) y0-->Stat5 ==> (y0 in u) & (y0 ¥incin arb(u)) & (y0 /= arb(u)) y0-->Stat4 ==> false; Discharge ==> (EXISTS y in u | (y ¥incin arb(u)) & (y /= arb(u))) (arb(u))-->Stat3 ==> Finite(arb(u)) APPLY(m1_thryvar:m) finite_induction(n->arb(u), P(x)->(EXISTS y in u | (y ¥incin x) & (y /= x))) ==> Stat6: (EXISTS y in u | (y ¥incin m) & (y /= m)) & Stat7: (FORALL k ¥incin m | (k /= m) ¥imp (not(EXISTS y in u | (y ¥incin k) & (y /= k)))) k-->Stat6 ==> Stat8: (k in u) & (k ¥incin m) & (k /= m) k-->Stat7 ==> Stat9: not(EXISTS y in u | (y ¥incin k) & (y /= k)) k-->Stat2 ==> Stat10: not(FORALL y in u | not((y ¥incin k) & (y /= k))) y1-->Stat10 ==> (y1 in u) & (y1 ¥incin k) & (y1 /= k) y1-->Stat9 ==> false; Discharge ==> QED -- -- Our main aim in the theorems which now follow is to prove that every one of a wide class of recursions -- specifies a function defined everywhere over the integers, or more generally -- over various families of finite sets. As a first step in this direction, -- we consider a pair of functions $h_q$ and $h_r$, both of which satisfy the same recursive -- relationship on their domains $d$, which are assumed to be such that every subset of a member of -- of $d$ is finite and belongs to $d$. (For example, $d$ might be ${x: x ¥incin s | Finite(x)}$). -- We show that $h_q$ and $h_r$ necessarily agree on the intersection of their domains, -- and so have a common single-valued extension. -- THEORY finite_recursion_coherence(q,r,h_q(x,t),h_r(x,t),f3(b,x,t),g4(a,y,x,t),P4(a,y,x,t)) (FORALL x in q, y ¥incin x | Finite(x) & (y in q)) (FORALL x in r, y ¥incin x | Finite(x) & (y in r)) (FORALL x in q, t | h_q(x,t) = f3({g4(h_q(y,t),y,x,t): y in q | (y ¥incin x) & (y /= x) & P4(h_q(y,t),y,x,t)},x,t)) (FORALL x in r, t | h_r(x,t) = f3({g4(h_r(y,t),y,x,t): y in r | (y ¥incin x) & (y /= x) & P4(h_r(y,t),y,x,t)},x,t)) END finite_recursion_coherence; ENTER_THEORY finite_recursion_coherence Theorem finite_recursion_coherence.1: ((X in q) & (X in r)) ¥imp (h_q(X,T) = h_r(X,T)). Proof: Suppose_not(x,t) ==> (x in q) & (x in r) & (h_q(x,t) /= h_r(x,t)) -- -- For suppose that $m$, $q$, $r$, and $t$ form a counterexample to our assertion, where by the principle of finite -- induction we can assume that no proper subset of $m$ is also a counterexample. -- Assump ==> Stat1: (FORALL x in q, y ¥incin x | Finite(x) & (y in q)) (x,x)-->Stat1 ==> Finite(x) APPLY(m1_thryvar:m) finite_induction(n->x, P(v)->(h_q(v,t) /= h_r(v,t))) ==> (m ¥incin x) & (h_q(m,t) /= h_r(m,t)) & Stat2: (FORALL k ¥incin m | ((k /= m) ¥imp (not (h_q(k,t) /= h_r(k,t))))) (x,m)-->Stat1 ==> m in q Assump ==> Stat3: (FORALL x in r, y ¥incin x | Finite(x) & (y in r)) (x,m)-->Stat3 ==> m in r -- -- Since $h_q(m,t)$ and $h_r(m,t)$ difer, the recursive expressions for these quantities must also differ, -- and so there must exist a $c$ belonging to one, but not the other, of of the two sets displayed below. -- Assump ==> Stat4: (FORALL x in q, t | h_q(x,t) = f3({g4(h_q(y,t),y,x,t): y in q | (y ¥incin x) & (y /= x) & P4(h_q(y,t),y,x,t)},x,t)) (m,t)-->Stat4 ==> h_q(m,t) = f3({g4(h_q(y,t),y,m,t): y in q | (y ¥incin m) & (y /= m) & P4(h_q(y,t),y,m,t)},m,t) Assump ==> Stat5: (FORALL x in r, t | h_r(x,t) = f3({g4(h_r(y,t),y,x,t): y in r | (y ¥incin x) & (y /= x) & P4(h_r(y,t),y,x,t)},x,t)) (m,t)-->Stat5 ==> h_r(m,t) = f3({g4(h_r(y,t),y,m,t): y in r | (y ¥incin m) & (y /= m) & P4(h_r(y,t),y,m,t)},m,t) EQUAL ==> f3({g4(h_q(y,t),y,m,t): y in q | (y ¥incin m) & (y /= m) & P4(h_q(y,t),y,m,t)},m,t) /= f3({g4(h_r(y,t),y,m,t): y in r | (y ¥incin m) & (y /= m) & P4(h_r(y,t),y,m,t)},m,t) Suppose ==> {g4(h_q(y,t),y,m,t): y in q | (y ¥incin m) & (y /= m) & P4(h_q(y,t),y,m,t)} = {g4(h_r(y,t),y,m,t): y in r | (y ¥incin m) & (y /= m) & P4(h_r(y,t),y,m,t)} EQUAL ==> false; Discharge ==> Stat6: {g4(h_q(y,t),y,m,t): y in q | (y ¥incin m) & (y /= m) & P4(h_q(y,t),y,m,t)} /= {g4(h_r(y,t),y,m,t): y in r | (y ¥incin m) & (y /= m) & P4(h_r(y,t),y,m,t)} c-->Stat6 ==> (c in {g4(h_q(y,t),y,m,t): y in q | (y ¥incin m) & (y /= m) & P4(h_q(y,t),y,m,t)}) ¥eq (c notin {g4(h_r(y,t),y,m,t): y in r | (y ¥incin m) & (y /= m) & P4(h_r(y,t),y,m,t)}) -- -- Suppose that $c$ belongs to the first, but not the second, of these sets. Then $m$ must have a proper subset $k$ -- for which $h_q(k,t)$ and $h_q(k,t)$ differ, which is impossible by the minimality of $m$ -- Suppose ==> Stat7: (c in {g4(h_q(y,t),y,m,t): y in q | (y ¥incin m) & (y /= m) & P4(h_q(y,t),y,m,t)}) & (c notin {g4(h_r(y,t),y,m,t): y in r | (y ¥incin m) & (y /= m) & P4(h_r(y,t),y,m,t)}) (k,k)-->Stat7 ==> (k in q) & (k ¥incin m) & (k /= m) & P4(h_q(k,t),k,m,t) & ((g4(h_q(k,t),k,m,t) /= g4(h_r(k,t),k,m,t)) or (k notin r) or (not(P4(h_r(k,t),k,m,t)))) (m,k)-->Stat3 ==> k in r k-->Stat2 ==> h_q(k,t) = h_r(k,t) EQUAL ==> (g4(h_q(k,t),k,m,t) = g4(h_r(k,t),k,m,t)) & P4(h_r(k,t),k,m,t) Discharge ==> Stat8: (c in {g4(h_r(y,t),y,m,t): y in r | (y ¥incin m) & (y /= m) & P4(h_r(y,t),y,m,t)}) & (c notin {g4(h_q(y,t),y,m,t): y in q | (y ¥incin m) & (y /= m) & P4(h_q(y,t),y,m,t)}) -- -- But exactly the same argument applies if $c$ belongs to the second, but not the first, of these sets, -- and so our theorem is proved. -- (kp,kp)-->Stat8 ==> Stat9: (kp in r) & (kp ¥incin m) & (kp /= m) & P4(h_r(kp,t),kp,m,t) & ((g4(h_r(kp,t),kp,m,t) /= g4(h_q(kp,t),kp,m,t)) or (kp notin q) or (not(P4(h_q(kp,t),kp,m,t)))) (m,kp)-->Stat1 ==> kp in q kp-->Stat2 ==> h_q(kp,t) = h_r(kp,t) EQUAL ==> (g4(h_q(kp,t),kp,m,t) = g4(h_r(kp,t),kp,m,t)) & P4(h_q(kp,t),kp,m,t) (Stat9)Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The theory just established can be summarized as follows. -- --DISPLAY finite_recursion_coherence -- --THEORY finite_recursion_coherence(q,r,h_q(x,t),h_r(x,t),f3(b,x,t),g4(a,y,x,t),P4(a,y,x,t)) -- (FORALL x in q, y ¥incin x | Finite(x) & (y in q)) -- (FORALL x in r, y ¥incin x | Finite(x) & (y in r)) -- (FORALL x in q, t | h_q(x,t) = f3({g4(h_q(y,t),y,x,t): y in q | (y ¥incin x) & (y /= x) & P4(h_q(y,t),y,x,t)},x,t)) -- (FORALL x in r, t | h_r(x,t) = f3({g4(h_r(y,t),y,x,t): y in r | (y ¥incin x) & (y /= x) & P4(h_r(y,t),y,x,t)},x,t)) --==> -- (FORALL x, t | ((x in q) & (x in r)) ¥imp (h_q(x,t) = h_r(x,t))) --END finite_recursion_coherence; -- -- In further preparation for the theory of recursive function defined over finite sets, -- we show that any relation devoid of cycles, when restricted to a finite set, turns -- out to be well-founded over such domain. To make matters simple (since defining acyclic -- relations would be a relatively complicated matter, we assume the relation to be -- transitive (this covers, for example, the significant case of strict inclusion). -- THEORY fin_well_founded(s,arg1_bef_arg2(y,x)) (FORALL x,y,wz | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,wz)) ¥imp arg1_bef_arg2(x,wz)) (FORALL x | not(arg1_bef_arg2(x,x))) Finite(s) END fin_well_founded; -- ENTER_THEORY fin_well_founded -- Theorem fin_well_founded.1: ((V ¥incin s) & (V /= 0)) ¥imp (EXISTS m in V | (FORALL y in V | not(arg1_bef_arg2(y,m)))). Proof: Suppose_not(v) ==> (v ¥incin s) & (v /= 0) & (not(EXISTS m in v | (FORALL y in v | not(arg1_bef_arg2(y,m))))) -- -- Assuming by contradiction that the relation $arg1_bef_arg2$ is not well-founded on the finite set $s$, -- there would be a non-null subset $v$ of $s$ which has no minimal element. By application of the -- THEORY finite_induction, we can choose a smallest subset $w$ of $s$ which has no minimal element. -- Assump ==> Finite(s) Assump ==> Stat1: (FORALL x | not(arg1_bef_arg2(x,x))) (s,v)-->T189 ==> Finite(v) APPLY(m1_thryvar:w) finite_induction(n->v,P(x)->((x /= 0) & (not(EXISTS m in x | (FORALL y in x | not(arg1_bef_arg2(y,m))))))) ==> (w ¥incin v) & (w /= 0) & Stat2: (not(EXISTS m in w | (FORALL y in w | not(arg1_bef_arg2(y,m))))) & Stat3: (FORALL k ¥incin w | (k /= w) ¥imp (not((k /= 0) & (not(EXISTS m in k | (FORALL y in k | not(arg1_bef_arg2(y,m)))))))) (arb(w))-->Stat1 ==> (not(arg1_bef_arg2(arb(w),arb(w)))) -- -- Clearly, $w$ cannot be a singleton (else $arb(w)$ would be its minimum). We can hence -- find a minimal element $m$ in $w - {arb(w)}$. -- Suppose ==> w = {arb(w)} (arb(w))-->Stat2 ==> Stat4: (not(FORALL y in w | not(arg1_bef_arg2(y,arb(w))))) y-->Stat4 ==> (y in w) & arg1_bef_arg2(y,arb(w)) ELEM ==> y = arb(w) EQUAL ==> false; Discharge ==> ((w - {arb(w)}) ¥incin w) & (w - {arb(w)} /= w) & (w - {arb(w)} /= 0) (w - {arb(w)})-->Stat3 ==> Stat5: (EXISTS m in (w - {arb(w)}) | (FORALL y in (w - {arb(w)}) | not(arg1_bef_arg2(y,m)))) m-->Stat5 ==> (m in (w - {arb(w)})) & (m in (w - {arb(w)})) & Stat6: (FORALL y in (w - {arb(w)}) | not(arg1_bef_arg2(y,m))) m-->Stat2 ==> Stat7: (not(FORALL y in w | not(arg1_bef_arg2(y,m)))) -- -- If $arb(w)$ did not precede $m$ in the relation $arg1_bef_arg2$, then it would -- readily follow that $m$ would be minimal in $w$; to avoid this contradiction, -- we must assume that $arb(w)$ precedes $m$. -- Suppose ==> (not(arg1_bef_arg2(arb(w),m))) yp-->Stat7 ==> (yp in w) & arg1_bef_arg2(yp,m) Suppose ==> yp = arb(w) EQUAL ==> false; Discharge ==> yp /= arb(w) yp-->Stat6 ==> false; Discharge ==> arg1_bef_arg2(arb(w),m) -- -- Then $x$ cannot precede $arb(w)$ in the relation $arg1_bef_arg2$, for any $w in w$ -- (else we would have $x /= arb(w)$ and $x$ before $m$ in the relation $arg1_bef_arg2$). -- Consequently, $arb(w)$ is a minimal element of $w$; this new contradiction enables us to -- conclude with the desired statement. -- (arb(w))-->Stat2 ==> Stat8: (not(FORALL y in w | not(arg1_bef_arg2(y,arb(w))))) yq-->Stat8 ==> (yq in w) & arg1_bef_arg2(yq,arb(w)) Assump ==> Stat9: (FORALL x, y, wz | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,wz)) ¥imp arg1_bef_arg2(x,wz)) (yq,arb(w),m)-->Stat9 ==> arg1_bef_arg2(yq,m) Suppose ==> arb(w) = yq EQUAL ==> false; Discharge ==> yq in (w - {arb(w)}) yq-->Stat6 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- The theory just established can be summarized as follows. -- --DISPLAY fin_well_founded -- --THEORY fin_well_founded(s,arg1_bef_arg2(x,y)) -- (FORALL x,y,z | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) ¥imp arg1_bef_arg2(x,z)) -- (FORALL x | not(arg1_bef_arg2(x,x))) -- Finite(s) --==> -- ((V ¥incin s) & (V /= 0)) ¥imp (EXISTS m in V | (FORALL x in V | not(arg1_bef_arg2(x,m)))) --END fin_well_founded; -- -- -- Our next aim is to prove that any recursion which determines a value $h2(s,t)$ dependent on two parameters, -- the first of these being a finite set, in terms of the values $h2(sp,t)$ for which $sp$ is a proper subset of $s$, -- actually defines a function $h2(s,t)$ single-valued for all finite $s$ and all $t$. We state this result by defining -- an auxiliary theory whose first theorem, seen just below, has a form allowing immediate Skolemization. -- By Skolemizing this we will derive a second result in the convenient form desired. -- THEORY finite_recursive_fcn(f3(b,x,t),g4(a,y,x,t),P4(a,y,x,t)) END finite_recursive_fcn; -- -- ENTER_THEORY finite_recursive_fcn -- -- We now show that the finite subsets of any set $s$ are well-ordered by strict inclusion. -- Theorem finite_recursive_fcn.0: ((T ¥incin {y: y ¥incin S | Finite(y)}) & (T /= 0)) ¥imp (EXISTS x in T | (FORALL y in T | not((y ¥incin x) & (y /= x)))). Proof: -- -- As a matter of fact, if we consider any non-null subset $t$ of the -- family of all finite subsets of $s$, and then take an element $r$ of $t$, -- then the set $mm$ of all minorants of $r$ in $t$ turns out to be finite -- (inasmuch as a subset of $pow(r)$, which is finite). Hence it will have an -- inclusion-minimal element $m$, which will also be minimal in $t$. -- Suppose_not(t,s) ==> Stat1: (t /= 0) & (t ¥incin {y: y ¥incin s | Finite(y)}) & Stat2: (not(EXISTS x in t | (FORALL y in t | not((y ¥incin x) & (y /= x))))) r-->Stat1 ==> (r in t) & Stat3: (r in {y: y ¥incin s | Finite(y)}) a-->Stat3 ==> (r = a) & Finite(a) EQUAL ==> Finite(r) Loc_def ==> mm = {y: y in t | (y ¥incin r) & (y /= r)} Suppose ==> Stat4: (not(mm ¥incin pow(r))) c-->Stat4 ==> (c in mm) & (c notin pow(r)) Use_def(pow) ==> Stat5: ((c in {y: y in t | (y ¥incin r) & (y /= r)}) & (c notin {x: x ¥incin r})) (yp,yp)-->Stat5 ==> false; Discharge ==> mm ¥incin pow(r) r-->T264 ==> Finite(pow(r)) (pow(r),mm)-->T189 ==> Finite(mm) r-->T264 ==> Finite(pow(r)) (pow(r),mm)-->T189 ==> Finite(mm) Suppose ==> Stat6: ({y: y in t | (y ¥incin r) & (y /= r)} = 0) r-->Stat2 ==> Stat7: (not(FORALL y in t | not((y ¥incin r) & (y /= r)))) y-->Stat7 ==> (y in t) & (y ¥incin r) & (y /= r) y-->Stat6 ==> false; Discharge ==> mm /= 0 Suppose ==> Stat8: (not(FORALL x | not((x ¥incin x) & (x /= x)))) xp-->Stat8 ==> false; Discharge ==> (FORALL x | not((x ¥incin x) & (x /= x))) Suppose ==> Stat9: (not(FORALL xx,yy,wz | (((xx ¥incin yy) & (xx /= yy)) & ((yy ¥incin wz) & (yy /= wz))) ¥imp ((xx ¥incin wz) & (xx /= wz)))) (xx,yy,wz)-->Stat9(*) ==> false; Discharge ==> (FORALL xx,yy,wz | (((xx ¥incin yy) & (xx /= yy)) & ((yy ¥incin wz) & (yy /= wz))) ¥imp ((xx ¥incin wz) & (xx /= wz))) APPLY() fin_well_founded(s->(pow(r)),arg1_bef_arg2(y,x)->((y ¥incin x) & (y /= x))) ==> Stat10: (FORALL v | ((v ¥incin pow(r)) & (v /= 0)) ¥imp (EXISTS m in v | (FORALL x in v | not((x ¥incin m) & (x /= m))))) mm-->Stat10(Stat1*) ==> Stat11: (EXISTS m in mm | (FORALL x in mm | not((x ¥incin m) & (x /= m)))) m-->Stat11(Stat1*) ==> Stat12: (m in {y: y in t | (y ¥incin r) & (y /= r)}) & Stat13: (FORALL x in mm | not((x ¥incin m) & (x /= m))) yq-->Stat12(Stat1*) ==> (m in t) & (m ¥incin r) & (m /= r) m-->Stat2(Stat1*) ==> Stat14: (not(FORALL y in t | not((y ¥incin m) & (y /= m)))) u-->Stat14(Stat1*) ==> (u in t) & (u ¥incin m) & (u /= m) Suppose ==> Stat15: u notin {y: y in t | (y ¥incin r) & (y /= r)} u-->Stat15(Stat1*) ==> false; Discharge ==> u in mm u-->Stat13(Stat1*) ==> false; Discharge ==> QED -- Theorem finite_recursive_fcn.1: (FORALL s,t | (EXISTS h | (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (h~[x] = f3({g4(h~[y],y,x,t): y ¥incin x | (y /= x) & P4(h~[y],y,x,t)},x,t))))). Proof: Suppose_not ==> Stat1: not (FORALL s,t | (EXISTS h | (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (h~[x] = f3({g4(h~[y],y,x,t): y ¥incin x | (y /= x) & P4(h~[y],y,x,t)},x,t))))) -- -- For if we let $s$, $t$ be a counterexample to our assertion and apply our wellfounded_recursive_fcn THEORY, -- a contradiction results easily. Indeed, the wellfounded_recursive_fcn THEORY defined previously -- gives us a function $hh$ satisfying the recursive relationship seen just below. -- (s,t)-->Stat1 ==> Stat2: not (EXISTS h | (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (h~[x] = f3({g4(h~[y],y,x,t): y ¥incin x | (y /= x) & P4(h~[y],y,x,t)},x,t)))) Suppose ==> Stat3: (not(FORALL t | ((t ¥incin {y: y ¥incin s | Finite(y)}) & (t /= 0)) ¥imp (EXISTS x in t | (FORALL y in t | not((y ¥incin x) & (y /= x)))))) d-->Stat3 ==> ((d ¥incin {y: y ¥incin s | Finite(y)}) & (d /= 0)) & (not(EXISTS x in d | (FORALL y in d | not((y ¥incin x) & (y /= x))))) (d,s)-->Tfinite_recursive_fcn.0 ==> false; Discharge ==> (FORALL t | ((t ¥incin {y: y ¥incin s | Finite(y)}) & (t /= 0)) ¥imp (EXISTS x in t | (FORALL y in t | not((y ¥incin x) & (y /= x))))) APPLY(wfh2_thryvar:hh) wellfounded_recursive_fcn(s->{y: y ¥incin s | Finite(y)}, arg1_bef_arg2(y,x)->((y ¥incin x) & (y /= x)), f3(b,x,t)->f3(b,x,t), g4(a,y,x,t)->g4(a,y,x,t), P4(a,y,x,t)->P4(a,y,x,t)) ==> Stat4: (FORALL x, t | (x in {y: y ¥incin s | Finite(y)}) ¥imp (hh(x,t) = f3({g4(hh(y,t),y,x,t): y in {y: y ¥incin s | Finite(y)} | (y ¥incin x) & (y /= x) & P4(hh(y,t),y,x,t)},x,t))) -- -- But this recursive relationship can be rewritten in the simplified form seen in the following. For were this not the case, -- the two sets seen below would necessarily differ. -- Suppose ==> Stat5: not (FORALL x, t | (x in {y: y ¥incin s | Finite(y)}) ¥imp (hh(x,t) = f3({g4(hh(y,t),y,x,t): y ¥incin x | (y /= x) & P4(hh(y,t),y,x,t)},x,t))) (xp,tp)-->Stat5 ==> Stat6: (xp in {y: y ¥incin s | Finite(y)}) & (hh(xp,tp) /= f3({g4(hh(y,tp),y,xp,tp): y ¥incin xp | (y /= xp) & P4(hh(y,tp),y,xp,tp)},xp,tp)) x-->Stat6 ==> (x=xp) & (xp ¥incin s) & Finite(x) EQUAL ==> Finite(xp) (x,t)-->Stat4 ==> hh(x,t) = f3({g4(hh(y,t),y,x,t): y in {y: y ¥incin s | Finite(y)} | (y ¥incin x) & (y /= x) & P4(hh(y,t),y,x,t)},x,t) Suppose ==> {g4(hh(y,t),y,x,t): y ¥incin x | (y /= x) & P4(hh(y,t),y,x,t)} = {g4(hh(y,t),y,x,t): y in {y: y ¥incin s | Finite(y)} | (y ¥incin x) & (y /= x) & P4(hh(y,t),y,x,t)} EQUAL ==> false; Discharge ==> Stat7: {g4(hh(y,t),y,x,t): y ¥incin x | (y /= x) & P4(hh(y,t),y,x,t)} /= {g4(hh(y,t),y,x,t): y in {y: y ¥incin s | Finite(y)} | (y ¥incin x) & (y /= x) & P4(hh(y,t),y,x,t)} -- -- And it is easily seen that these two sets must be equal. -- c-->Stat7 ==> (c in {g4(hh(y,t),y,x,t): y ¥incin x | (y /= x) & P4(hh(y,t),y,x,t)}) ¥eq (c notin {g4(hh(y,t),y,x,t): y in {y: y ¥incin s | Finite(y)} | (y ¥incin x) & (y /= x) & P4(hh(y,t),y,x,t)}) Suppose ==> Stat8: (c in {g4(hh(y,t),y,x,t): y ¥incin x | (y /= x) & P4(hh(y,t),y,x,t)}) & Stat9: (c notin {g4(hh(y,t),y,x,t): y in {y: y ¥incin s | Finite(y)} | (y ¥incin x) & (y /= x) & P4(hh(y,t),y,x,t)}) y-->Stat8 ==> (c = g4(hh(y,t),y,x,t)) & (y ¥incin x) & (y /= x) & P4(hh(y,t),y,x,t) y-->Stat9 ==> Stat10: y notin {y: y ¥incin s | Finite(y)} (x,y)-->T189 ==> Finite(y) y-->Stat10 ==> false; Discharge ==> Stat11: (c notin {g4(hh(y,t),y,x,t): y ¥incin x | (y /= x) & P4(hh(y,t),y,x,t)}) & Stat12: (c in {g4(hh(y,t),y,x,t): y in {y: y ¥incin s | Finite(y)} | (y ¥incin x) & (y /= x) & P4(hh(y,t),y,x,t)}) yp-->Stat12 ==> (c = g4(hh(yp,t),yp,x,t)) & (yp ¥incin x) & (yp /= x) & P4(hh(yp,t),yp,x,t) & (yp in {y: y ¥incin s | Finite(y)}) yp-->Stat11 ==> false; Discharge ==> Stat13: (FORALL x, t | (x in {y: y ¥incin s | Finite(y)}) ¥imp (hh(x,t) = f3({g4(hh(y,t),y,x,t): y ¥incin x | (y /= x) & P4(hh(y,t),y,x,t)},x,t))) -- -- Holding $t$ fixed, we can now view $hh(x,t)$ as a map $h2$ satisfying $h2~[x] = if x in {y: y ¥incin s} then hh(x,t) else 0 end if$ -- for all $x$. -- Loc_def ==> h2 = {[x,hh(x,t)]: x in {y: y ¥incin s | Finite(y)}} APPLY() fcn_symbol(f(x)->hh(x,t),g->h2,s->{y: y ¥incin s | Finite(y)}) ==> Svm(h2) & Stat14: (FORALL x | h2~[x] = if x in {y: y ¥incin s | Finite(y)} then hh(x,t) else 0 end if) SIMPLF ==> (h2 = {[x,hh(x,t)]: x ¥incin s | Finite(x)}) -- -- But now $h2$ is easily seen to satify the recursive relationship seen below, and so can serve as the $h$ whose existence our theorem asserts. -- Suppose ==> Stat15: not(FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (h2~[x] = f3({g4(h2~[y],y,x,t): y ¥incin x | (y /= x) & P4(h2~[y],y,x,t)},x,t))) x2-->Stat15 ==> (x2 ¥incin s) & Finite(x2) & (h2~[x2] /= f3({g4(h2~[y],y,x2,t): y ¥incin x2 | (y /= x2) & P4(h2~[y],y,x2,t)},x2,t)) x2-->Stat14 ==> h2~[x2] = if x2 in {y: y ¥incin s | Finite(y)} then hh(x2,t) else 0 end if Suppose ==> Stat16: not (x2 in {y: y ¥incin s | Finite(y)}) x2-->Stat16 ==> false; Discharge ==> x2 in {y: y ¥incin s | Finite(y)} ELEM ==> h2~[x2] = hh(x2,t) (x2,t)-->Stat13 ==> hh(x2,t) = f3({g4(hh(y,t),y,x2,t): y ¥incin x2 | (y /= x2) & P4(hh(y,t),y,x2,t)},x2,t) ELEM ==> f3({g4(h2~[y],y,x2,t): y ¥incin x2 | (y /= x2) & P4(h2~[y],y,x2,t)},x2,t) /= f3({g4(hh(y,t),y,x2,t): y ¥incin x2 | (y /= x2) & P4(hh(y,t),y,x2,t)},x2,t) Suppose ==> {g4(h2~[y],y,x2,t): y ¥incin x2 | (y /= x2) & P4(h2~[y],y,x2,t)} = {g4(hh(y,t),y,x2,t): y ¥incin x2 | (y /= x2) & P4(hh(y,t),y,x2,t)} EQUAL ==> false; Discharge ==> Stat17: {g4(h2~[y],y,x2,t): y ¥incin x2 | (y /= x2) & P4(h2~[y],y,x2,t)} /= {g4(hh(y,t),y,x2,t): y ¥incin x2 | (y /= x2) & P4(hh(y,t),y,x2,t)} dp-->Stat17 ==> (dp ¥incin x2) & (g4(h2~[dp],dp,x2,t) /= g4(hh(dp,t),dp,x2,t) or ((dp /= x2) & P4(h2~[dp],dp,x2,t) & (not ((dp /= x2) & P4(hh(dp,t),dp,x2,t)))) or ((not (((dp /= x2) & P4(h2~[dp],dp,x2,t)))) & (dp /= x2) & P4(hh(dp,t),dp,x2,t))) ELEM ==> g4(h2~[dp],dp,x2,t) /= g4(hh(dp,t),dp,x2,t) or (not (P4(hh(dp,t),dp,x2,t) ¥eq P4(h2~[dp],dp,x2,t))) Suppose ==> h2~[dp] = hh(dp,t) EQUAL ==> false; Discharge ==> h2~[dp] /= hh(dp,t) dp-->Stat14 ==> h2~[dp] = if dp in {y: y ¥incin s | Finite(y)} then hh(dp,t) else 0 end if Suppose ==> Stat18: dp notin {y: y ¥incin s | Finite(y)} (x2,dp)-->T189 ==> Finite(dp) dp-->Stat18 ==> false; Discharge ==> dp in {y: y ¥incin s | Finite(y)} Discharge ==> (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (h2~[x] = f3({g4(h2~[y],y,x,t): y ¥incin x | (y /= x) & P4(h2~[y],y,x,t)},x,t))) h2-->Stat2 ==> false; Discharge ==> QED -- -- We now define an auxiliary function $hsko(s,t)$ by Skolemizing the preceding theorem. -- The formal definition is as follows. -- APPLY(v1_thryvar:hsko) Skolem() ==> Theorem finite_recursive_fcn.a: (FORALL s,t | (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (hsko(s,t)~[x] = f3({g4(hsko(s,t)~[y],y,x,t): y ¥incin x | (y /= x) & P4(hsko(s,t)~[y],y,x,t)},x,t)))) -- -- The following theorem simply transforms the preceding into a more readily usable form. -- Theorem finite_recursive_fcn.2: (FORALL x | ((x ¥incin S) & Finite(x)) ¥imp (hsko(S,T)~[x] = f3({g4(hsko(S,T)~[y],y,x,T): y ¥incin x | (y /= x) & P4(hsko(S,T)~[y],y,x,T)},x,T))). Proof: Suppose_not(s,t) ==> not (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (hsko(s,t)~[x] = f3({g4(hsko(s,t)~[y],y,x,t): y ¥incin x | (y /= x) & P4(hsko(s,t)~[y],y,x,t)},x,t))) Tfinite_recursive_fcn.a ==> Stat1: (FORALL s,t | (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (hsko(s,t)~[x] = f3({g4(hsko(s,t)~[y],y,x,t): y ¥incin x | (y /= x) & P4(hsko(s,t)~[y],y,x,t)},x,t)))) (s,t)-->Stat1 ==> false; Discharge ==> QED -- -- The function $h_thryvar$ at which the present theory aims is defined as follows in terms of $hsko$. -- Def finite_recursive_fcn.b: [?] rech2_thryvar(u,v) := hsko(u,v)~[u] -- -- Our next theorem states the property of $h_thryvar$ at which we aim. -- Theorem finite_recursive_fcn.3: Finite(S) ¥imp (rech2_thryvar(S,T) = f3({g4(rech2_thryvar(y,T),y,S,T): y ¥incin S | (y /= S) & P4(rech2_thryvar(y,T),y,S,T)},S,T)). Proof: Suppose_not(s,t) ==> Finite(s) & (rech2_thryvar(s,t) /= f3({g4(rech2_thryvar(y,t),y,s,t): y ¥incin s | (y /= s) & P4(rech2_thryvar(y,t),y,s,t)},s,t)) -- -- -- Use_def(rech2_thryvar) ==> hsko(s,t)~[s] /= f3({g4(hsko(y,t)~[y],y,s,t): y ¥incin s | (y /= s) & P4(hsko(y,t)~[y],y,s,t)},s,t) Tfinite_recursive_fcn.2 ==> Stat1: (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (hsko(s,t)~[x] = f3({g4(hsko(s,t)~[y],y,x,t): y ¥incin x | (y /= x) & P4(hsko(s,t)~[y],y,x,t)},x,t))) s-->Stat1 ==> hsko(s,t)~[s] = f3({g4(hsko(s,t)~[y],y,s,t): y ¥incin s | (y /= s) & P4(hsko(s,t)~[y],y,s,t)},s,t) Suppose ==> {g4(hsko(s,t)~[y],y,s,t): y ¥incin s | (y /= s) & P4(hsko(s,t)~[y],y,s,t)} = {g4(hsko(y,t)~[y],y,s,t): y ¥incin s | (y /= s) & P4(hsko(y,t)~[y],y,s,t)} EQUAL ==> false; Discharge ==> Stat2: {g4(hsko(s,t)~[y],y,s,t): y ¥incin s | (y /= s) & P4(hsko(s,t)~[y],y,s,t)} /= {g4(hsko(y,t)~[y],y,s,t): y ¥incin s | (y /= s) & P4(hsko(y,t)~[y],y,s,t)} c-->Stat2 ==> (c ¥incin s) & ((g4(hsko(s,t)~[c],c,s,t) /= g4(hsko(c,t)~[c],c,s,t)) or ((c /= s) & P4(hsko(s,t)~[c],c,s,t) & (not((c /= s) & P4(hsko(c,t)~[c],c,s,t)))) or ((not ((c /= s) & P4(hsko(s,t)~[c],c,s,t))) & (c /= s) & P4(hsko(c,t)~[c],c,s,t))) (s,c)-->T189 ==> Finite(c) ELEM ==> ((g4(hsko(s,t)~[c],c,s,t) /= g4(hsko(c,t)~[c],c,s,t)) or (not (P4(hsko(s,t)~[c],c,s,t) ¥eq P4(hsko(c,t)~[c],c,s,t)))) Suppose ==> hsko(c,t)~[c] = hsko(s,t)~[c] EQUAL ==> false; Discharge ==> hsko(c,t)~[c] /= hsko(s,t)~[c] -- -- Next we show that the pair $hsko(c,t)~[y]$ and $hsko(s,t)~[y]$ of functions have the four properties needed to allow -- application of the finite_recursion_coherence THEORY derived above. This is done for each of the four necessary statements -- in turn by showing that the opposite supposition leads to a contradiction. -- Suppose ==> Stat3: not (FORALL x in pow(c), y ¥incin x | Finite(x) & (y in pow(c))) (a2,b2)-->Stat3 ==> (a2 in pow(c)) & (b2 ¥incin a2) & ((not Finite(a2)) or (b2 notin pow(c))) Use_def(pow) ==> Stat4: (a2 in {x: x ¥incin c}) a2p-->Stat4 ==> a2 ¥incin c (c,a2)-->T189 ==> b2 notin pow(c) Use_def(pow) ==> Stat5: b2 notin {x: x ¥incin c} b2-->Stat5 ==> false; Discharge ==> (FORALL x in pow(c), y ¥incin x | Finite(x) & (y in pow(c))) -- -- Next we consider the second of the four necessary properties. -- Suppose ==> Stat6: not (FORALL x in pow(s), y ¥incin x | Finite(x) & (y in pow(s))) (a,b)-->Stat6 ==> (a in pow(s)) & (b ¥incin a) & ((not Finite(a)) or (b notin pow(s))) Use_def(pow) ==> Stat7: (a in {x: x ¥incin s}) ap-->Stat7 ==> a ¥incin s (s,a)-->T189 ==> b notin pow(s) Use_def(pow) ==> Stat8: b notin {x: x ¥incin s} b-->Stat8 ==> false; Discharge ==> (FORALL x in pow(s), y ¥incin x | Finite(x) & (y in pow(s))) -- -- Having now established the first two of the four necessary properties we consider the third. -- Suppose ==> Stat9: not (FORALL x in pow(c), t | hsko(c,t)~[x] = f3({g4(hsko(c,t)~[y],y,x,t): y in pow(c) | (y ¥incin x) & (y /= x) & P4(hsko(c,t)~[y],y,x,t)},x,t)) (a3,tq)-->Stat9(Stat9) ==> (a3 in pow(c)) & (hsko(c,tq)~[a3] /= f3({g4(hsko(c,tq)~[y],y,a3,tq): y in pow(c) | (y ¥incin a3) & (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)},a3,tq)) Use_def(pow) ==> Stat10: a3 in {x: x ¥incin c} d3-->Stat10 ==> a3 ¥incin c (c,a3)-->T189 ==> Finite(a3) (c,tq)-->Tfinite_recursive_fcn.2 ==> Stat11: (FORALL x | ((x ¥incin c) & Finite(x)) ¥imp (hsko(c,tq)~[x] = f3({g4(hsko(c,tq)~[y],y,x,tq): y ¥incin x | (y /= x) & P4(hsko(c,tq)~[y],y,x,tq)},x,tq))) a3-->Stat11 ==> hsko(c,tq)~[a3] = f3({g4(hsko(c,tq)~[y],y,a3,tq): y ¥incin a3 | (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)},a3,tq) Suppose ==> {g4(hsko(c,tq)~[y],y,a3,tq): y in pow(c) | (y ¥incin a3) & (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)} = {g4(hsko(c,tq)~[y],y,a3,tq): y ¥incin a3 | (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)} EQUAL ==> false; Discharge ==> Stat12: {g4(hsko(c,tq)~[y],y,a3,tq): y in pow(c) | (y ¥incin a3) & (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)} /= {g4(hsko(c,tq)~[y],y,a3,tq): y ¥incin a3 | (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)} c2-->Stat12 ==> (c2 in {g4(hsko(c,tq)~[y],y,a3,tq): y in pow(c) | (y ¥incin a3) & (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)}) ¥eq (c2 notin {g4(hsko(c,tq)~[y],y,a3,tq): y ¥incin a3 | (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)}) Suppose ==> Stat13: (c2 in {g4(hsko(c,tq)~[y],y,a3,tq): y in pow(c) | (y ¥incin a3) & (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)}) & Stat14: (c2 notin {g4(hsko(c,tq)~[y],y,a3,tq): y ¥incin a3 | (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)}) d2-->Stat13 ==> (d2 in pow(c)) & (c2 = g4(hsko(c,tq)~[d2],d2,a3,tq)) & (d2 ¥incin a3) & (d2 /= a3) & P4(hsko(c,tq)~[d2],d2,a3,tq) d2-->Stat14 ==> false; Discharge ==> Stat15: (c2 notin {g4(hsko(c,tq)~[y],y,a3,tq): y in pow(c) | (y ¥incin a3) & (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)}) & Stat16: (c2 in {g4(hsko(c,tq)~[y],y,a3,tq): y ¥incin a3 | (y /= a3) & P4(hsko(c,tq)~[y],y,a3,tq)}) c3-->Stat16 ==> (c3 ¥incin a3) & (c2 = g4(hsko(c,tq)~[c3],c3,a3,tq)) & (c3 /= a3) & P4(hsko(c,tq)~[c3],c3,a3,tq) c3-->Stat15 ==> c3 notin pow(c) Use_def(pow) ==> Stat17: c3 notin {x: x ¥incin c} c3-->Stat17 ==> false; Discharge ==> (FORALL x in pow(c), t | hsko(c,t)~[x] = f3({g4(hsko(c,t)~[y],y,x,t): y in pow(c) | (y ¥incin x) & (y /= x) & P4(hsko(c,t)~[y],y,x,t)},x,t)) -- -- Having now established the first three of the four necessary properties it only remains to consider the fourth and last. -- This can be handled in a manner almost identical to that of the third case considered above. -- Suppose ==> Stat18: not (FORALL x in pow(s), t | hsko(s,t)~[x] = f3({g4(hsko(s,t)~[y],y,x,t): y in pow(s) | (y ¥incin x) & (y /= x) & P4(hsko(s,t)~[y],y,x,t)},x,t)) (a4,tp)-->Stat18(Stat18) ==> (a4 in pow(s)) & (hsko(s,tp)~[a4] /= f3({g4(hsko(s,tp)~[y],y,a4,tp): y in pow(s) | (y ¥incin a4) & (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)},a4,tp)) Use_def(pow) ==> Stat19: a4 in {x: x ¥incin s} d4-->Stat19 ==> Stat20: a4 ¥incin s (s,a4)-->T189 ==> Finite(a4) (s,tp)-->Tfinite_recursive_fcn.2 ==> Stat21: (FORALL x | ((x ¥incin s) & Finite(x)) ¥imp (hsko(s,tp)~[x] = f3({g4(hsko(s,tp)~[y],y,x,tp): y ¥incin x | (y /= x) & P4(hsko(s,tp)~[y],y,x,tp)},x,tp))) a4-->Stat21(Stat20) ==> hsko(s,tp)~[a4] = f3({g4(hsko(s,tp)~[y],y,a4,tp): y ¥incin a4 | (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)},a4,tp) Suppose ==> {g4(hsko(s,tp)~[y],y,a4,tp): y in pow(s) | (y ¥incin a4) & (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)} = {g4(hsko(s,tp)~[y],y,a4,tp): y ¥incin a4 | (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)} EQUAL ==> false; Discharge ==> Stat22: {g4(hsko(s,tp)~[y],y,a4,tp): y in pow(s) | (y ¥incin a4) & (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)} /= {g4(hsko(s,tp)~[y],y,a4,tp): y ¥incin a4 | (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)} c4-->Stat22 ==> (c4 in {g4(hsko(s,tp)~[y],y,a4,tp): y in pow(s) | (y ¥incin a4) & (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)}) ¥eq (c4 notin {g4(hsko(s,tp)~[y],y,a4,tp): y ¥incin a4 | (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)}) Suppose ==> Stat23: (c4 in {g4(hsko(s,tp)~[y],y,a4,tp): y in pow(s) | (y ¥incin a4) & (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)}) & Stat24: (c4 notin {g4(hsko(s,tp)~[y],y,a4,tp): y ¥incin a4 | (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)}) d5-->Stat23 ==> Stat25: (d5 in pow(s)) & (d5 ¥incin a4) & (c4 = g4(hsko(s,tp)~[d5],d5,a4,tp)) & (d5 /= a4) & P4(hsko(s,tp)~[d5],d5,a4,tp) d5-->Stat24(Stat25) ==> false; Discharge ==> Stat26: (c4 notin {g4(hsko(s,tp)~[y],y,a4,tp): y in pow(s) | (y ¥incin a4) & (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)}) & Stat27: (c4 in {g4(hsko(s,tp)~[y],y,a4,tp): y ¥incin a4 | (y /= a4) & P4(hsko(s,tp)~[y],y,a4,tp)}) d6-->Stat27 ==> (d6 ¥incin a4) & (c4 = g4(hsko(s,tp)~[d6],d6,a4,tp)) & (d6 /= a4) & P4(hsko(s,tp)~[d6],d6,a4,tp) d6-->Stat26 ==> (d6 notin pow(s)) Use_def(pow) ==> Stat28: d6 notin {x: x ¥incin s} d6-->Stat28 ==> false; Discharge ==> (FORALL x in pow(s), t | hsko(s,t)~[x] = f3({g4(hsko(s,t)~[y],y,x,t): y in pow(s) | (y ¥incin x) & (y /= x) & P4(hsko(s,t)~[y],y,x,t)},x,t)) -- -- We now have everything needed to apply the finite_recursion_coherence THEORY developed above. -- This gives a direct contradiction with the inequality $hsko(c,t)~[c] /= hsko(s,t)~[c]$ proved earlier, and so -- completes the proof of the present theorem. -- APPLY() finite_recursion_coherence(q->pow(c),r->pow(s),h_q(x,t)->hsko(c,t)~[x],h_r(x,t)->hsko(s,t)~[x],f3(b,x,t)->f3(b,x,t),g4(a,y,x,t)->g4(a,y,x,t),P4(a,y,x,t)->P4(a,y,x,t)) ==> Stat29: (FORALL x, t | ((x in pow(c)) & (x in pow(s))) ¥imp (hsko(c,t)~[x] = hsko(s,t)~[x])) Suppose ==> c notin pow(s) Use_def(pow) ==> Stat30: c notin {x: x ¥incin s} c-->Stat30 ==> false; Discharge ==> c in pow(s) Suppose ==> c notin pow(c) Use_def(pow) ==> Stat31: c notin {x: x ¥incin c} c-->Stat31 ==> false; Discharge ==> c in pow(c) (c,t)-->Stat29 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- -- DISPLAY finite_recursive_fcn -- -- THEORY finite_recursive_fcn(f3(b,x,t),g4(a,y,x,t),P4(a,y,x,t)) -- -- (FORALL s, t | Finite(s) ¥imp (rech2_thryvar(s,t) = f3({g4(rech2_thryvar(y,t),y,s,t): y ¥incin s | -- (y /= s) & P4(rech2_thryvar(y,t),y,s,t)},s,t))) -- -- END finite_recursive_fcn; -- -- We will now derive a variant recursive function definition method which is simpler (but more limited) -- than that which our prior finite_recursive_fcn THEORY affords. This applies to cases in which the value $f(s)$ -- can be defined in terms of $f(sl(s))$ alone, for some strict subset $sl(s)$ (most typically -- $s - {arb(s)}$). For this, we simply specialize the THEORY finite_recursive_fcn. -- THEORY finite_tailrecursive_fcn(f(t),g3(a,x,t),sl(x)) (FORALL x | (sl(x) ¥incin x) & ((x /= 0) ¥imp (sl(x) /= x))) END finite_tailrecursive_fcn; -- ENTER_THEORY finite_tailrecursive_fcn -- APPLY(rech2_thryvar:trech2_thryvar) finite_recursive_fcn(f3(b,x,t)->(if b = 0 then f(t) else arb(b) end if), g4(a,y,x,t)->g3(a,x,t), P4(a,y,x,t)->(y = sl(x))) ==> Theorem finite_tailrecursive_fcn.0: (FORALL s,t | Finite(s) ¥imp (trech2_thryvar(s,t) = if ({g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))} = 0) then f(t) else arb({g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))}) end if)) -- -- The clumsy recursive relationship appearing in this last Theorem can be simplified by noting that the condition -- ${g3(trech2_thryvar(y,T),S,T): y ¥incin S | (y /= S) & (y = sel(S))} = 0$ is equivalent to $S = 0$, -- and that when $S /= 0$ ${g3(trech2_thryvar(y,T),S,T): y ¥incin S | (y /= S) & (y = sel(S))}$ -- is just ${g3(trech2_thryvar(sel(S),T),S,T)}$. The proof which follows does this. -- Theorem finite_tailrecursive_fcn.1: Finite(S) ¥imp (trech2_thryvar(S,T) = if (S = 0) then f(T) else g3(trech2_thryvar(sl(S), T), S,T) end if). Proof: Suppose_not(s,t) ==> Finite(s) & (trech2_thryvar(s,t) /= if s = 0 then f(t) else g3(trech2_thryvar(sl(s), t), s,t) end if) Tfinite_tailrecursive_fcn.0 ==> Stat1: (FORALL s,t | Finite(s) ¥imp (trech2_thryvar(s,t) = if ({g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))} = 0) then f(t) else arb({g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))}) end if)) (s,t)-->Stat1 ==> trech2_thryvar(s,t) = if {g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))} = 0 then f(t) else arb({g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))}) end if Suppose ==> s = 0 ELEM ==> Stat2: {g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))} /= 0 c-->Stat2 ==> false; Discharge ==> s /= 0 Assump ==> Stat3: (FORALL x | (sl(x) ¥incin x) & ((x /= 0) ¥imp (sl(x) /= x))) s-->Stat3 ==> (sl(s) ¥incin s) & (sl(s) /= s) Suppose ==> Stat4: {g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))} = 0 (sl(s))-->Stat4 ==> false; Discharge ==> (trech2_thryvar(s,t) /= g3(trech2_thryvar(sl(s), t), s,t)) & Stat5: (trech2_thryvar(s,t) in {g3(trech2_thryvar(y,t),s,t): y ¥incin s | (y /= s) & (y = sl(s))}) y-->Stat5 ==> (y = sl(s)) & (trech2_thryvar(s,t) = g3(trech2_thryvar(y,t),s,t)) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY finite_tailrecursive_fcn -- --THEORY finite_tailrecursive_fcn(f(t),g3(a,x,t),sl(x)) -- (FORALL x | (sl(x) ¥incin x) & ((x /= 0) ¥imp (sl(x) /= x))) --==>(trech2_thryvar) -- (FORALL s, t | Finite(s) ¥imp (trech2_thryvar(s,t) = if (s = 0) then f(t) else g3(trech2_thryvar(sl(s), t), s,t) end if)) --END finite_tailrecursive_fcn; -- -- We will now derive a variant recursive function definition method which is simpler (but more limited) -- than that which our prior finite_recursive_fcn THEORY affords. This applies to cases in which the value $f(s)$ -- can be defined in terms of $f(s - {arb(s)})$ alone. For this, we simply specialize the THEORY finite_recursive_fcn. -- THEORY finite_tailrecursive_fcn1(f(t),g3(a,x,t)) END finite_recursive_fcn1; -- ENTER_THEORY finite_tailrecursive_fcn1 -- Theorem finite_tailrecursive_fcn1.0: ((X - {arb(X)}) ¥incin X) & ((X /= 0) ¥imp ((X - {arb(X)}) /= X)). Proof: Suppose_not(x) ==> (not(((x - {arb(x)}) ¥incin x) & ((x /= 0) ¥imp ((x - {arb(x)}) /= x)))) Discharge ==> QED -- APPLY(trech2_thryvar:trech_thryvar) finite_tailrecursive_fcn(f(t)->f(t), g3(a,x,t)->g3(a,x,t), sl(x)->(x - {arb(x)})) ==> Theorem finite_tailrecursive_fcn1.1: (FORALL s,t | Finite(s) ¥imp (trech_thryvar(s,t) = if (s = 0) then f(t) else g3(trech_thryvar(s - {arb(s)}, t), s,t) end if)) -- ENTER_THEORY Set_theory -- --DISPLAY finite_tailrecursive_fcn1 -- --THEORY finite_tailrecursive_fcn1(f(t),g3(a,x,t)); --==>(trech_thryvar) -- (FORALL s, t | Finite(s) ¥imp (trech_thryvar(s,t) = if (s = 0) then f(t) else g3(trech_thryvar(s - {arb(s)}, t), s,t) end if)) --END finite_tailrecursive_fcn1; -- -- Our next variant recursive function definition scheme is even simpler, but applies only when the -- function being defined is monadic, rather than dyadic as above. To derive it we simply specialize the preceding theory. -- THEORY finite_tailrecursive_fcn2(f0,g2(a,x)) END finite_tailrecursive_fcn2; -- ENTER_THEORY finite_tailrecursive_fcn2 -- APPLY(trech_thryvar:h) finite_tailrecursive_fcn1(f(t)->f0,g3(a,x,t)->g2(a,x)) ==> Theorem finite_tailrecursive_fcn2.0: (FORALL s,t | Finite(s) ¥imp (h(s,t) = if s = 0 then f0 else g2(h(s - {arb(s)},t),s) end if)) -- Def 00f: [?] h1_thryvar(S) := h(S,0) -- Theorem finite_tailrecursive_fcn2.1: Finite(S) ¥imp (h1_thryvar(S) = if S = 0 then f0 else g2(h1_thryvar(S - {arb(S)}),S) end if). Proof: Suppose_not(s) ==> Finite(s) & (h1_thryvar(s) /= if s = 0 then f0 else g2(h1_thryvar(s - {arb(s)}),s) end if) Tfinite_tailrecursive_fcn2.0 ==> Stat1: (FORALL s,t | Finite(s) ¥imp (h(s,t) = if s = 0 then f0 else g2(h(s - {arb(s)},t),s) end if)) (s,0)-->Stat1 ==> h(s,0) = if s = 0 then f0 else g2(h(s - {arb(s)},0),s) end if Use_def(h1_thryvar) ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY finite_tailrecursive_fcn2 -- --THEORY finite_tailrecursive_fcn2(f0,g2(a,x)) --==>(h1_thryvar) -- (FORALL s | Finite(s) ¥imp (h1_thryvar(s) = if s = 0 then f0 else g2(h1_thryvar(s - {arb(s)}),s) end if)) --END finite_tailrecursive_fcn2; -- -- Our next aim is to introduce the very important and often used 'theory of sigma', which -- shows that for any commutative operation $¥PLUZ$ defined on a set $s$ and having -- the algebraic properties of addition, there exists a summation operator $sigma$, -- defined for all finite, single-valued mappings $g$ having values in $s$, which represents the repeated sum -- customarily written using an informal 'three dots' notation as $g(x1) ¥PLUZ g(x2) ¥PLUZ ... ¥PLUZ g(xn)$. -- This summation operator sends the empty mapping into the additive zero element of the underlying domain $s$ -- and maps any singleton ${[x,y]}$ with $y in s$ into $y$. The sigma operator is additive over -- pairs of mappings having disjoint domains, and, more generally, if $g$ is -- decomposed in any way into a collection of disjoint parts $gj$, then -- $sigma(g)$ is the sum of all the values $sigma(gj)$, where $gj$ runs over all the -- parts into which $g$ has been decomposed. -- -- This theory will be used to define sums of finite sequences of elements of many kinds, e.g. -- integers, signed integers, rational, real and complex numbers, functions whose values are -- integers, signed integers, rational, real or complex numbers, etc. It can also be used to -- define extended product operators $PI(g)$ of the kind which would ordinarily be written less formally as -- $g(x1) ¥TIMES g(x2) ¥TIMES ... ¥TIMES g(xn)$ etc. -- THEORY sigma_theory(s,pluz(x,y),e) e in s (FORALL x | (x in s) ¥imp (pluz(x,e) = x)) (FORALL x,y | ((x in s) & (y in s)) ¥imp (pluz(x,y) = pluz(y,x))) (FORALL x,y | ((x in s) & (y in s)) ¥imp (pluz(x,y) in s)) (FORALL x,y,z | ((x in s) & (y in s) & (z in s)) ¥imp (pluz(pluz(x,y),z) = pluz(x,pluz(y,z)))) END sigma_theory; -- ENTER_THEORY sigma_theory -- -- Our first step is to define the $sigma$ operation by applying our recursive definition -- schema to the conditional expression appearing in the following formula. -- APPLY(h1_thryvar:sigma_thryvar) finite_tailrecursive_fcn2(f0->e,g2(y,x)->pluz(y,cdr(arb(x)))) ==> Theorem sigma_theory0: [Recursive formula for generalized sum] (FORALL x | Finite(x) ¥imp (sigma_thryvar(x) = if x = 0 then e else pluz(sigma_thryvar(x - {arb(x)}),cdr(arb(x))) end if)) -- -- Next we begin the sequence of proofs belonging to the present theory by showing that, -- when applied to the null set, the sigma-operation associated with the generic addition -- operator $¥PLUZ$ yields the additive zero element of the underlying domain $s$. -- Theorem sigma_theory1: [Summation of null map is zero] sigma_thryvar(0) = e. Proof: Suppose_not ==> sigma_thryvar(0) /= e T188 ==> Finite(0) Tsigma_theory0 ==> Stat1: (FORALL x | Finite(x) ¥imp (sigma_thryvar(x) = if x = 0 then e else pluz(sigma_thryvar(x - {arb(x)}),cdr(arb(x))) end if)) 0-->Stat1 ==> false; Discharge ==> QED -- -- Next we show that when applied to any singleton set ${[v,y]}$ with $y$ in the domain $s$ -- underlying $¥PLUZ$ the sigma-operation simply yields $y$: -- Theorem sigma_theory2: [Summation of singleton map is range element] (cdr(X) in s) ¥imp (sigma_thryvar({X}) = cdr(X)). Proof: Suppose_not(x) ==> (cdr(x) in s) & (sigma_thryvar({x}) /= cdr(x)) -- -- This follows immediately by defintion of the function $sigma_thryvar$ and from the fact that the -- costant $e$ appearing in the preceding heorm is the additive zero element of the underlying domain $s$. -- x-->T201 ==> Finite({x}) Tsigma_theory0 ==> Stat1: (FORALL x | Finite(x) ¥imp (sigma_thryvar(x) = if x = 0 then e else pluz(sigma_thryvar(x - {arb(x)}),cdr(arb(x))) end if)) ({x})-->Stat1 ==> sigma_thryvar({x}) = pluz(sigma_thryvar({x} - {arb({x})}),cdr(arb({x}))) TELEM ==> ({x} - {arb({x})} = 0) & (arb({x}) = x) Tsigma_theory1 ==> sigma_thryvar(0) = e EQUAL ==> sigma_thryvar({x}) = pluz(e,cdr(x)) Assump ==> (e in s) & Stat2: (FORALL x | (x in s) ¥imp (pluz(x,e) = x)) & Stat3: (FORALL x, y | ((x in s) & (y in s)) ¥imp (pluz(x,y) = pluz(y,x))) (e,cdr(x))-->Stat3 ==> sigma_thryvar({x}) = pluz(cdr(x),e) (cdr(x))-->Stat2 ==> false; Discharge ==> QED -- -- Our next lemm tells us that when applied to a finite map $F$ whose range -- is included in the domain $s$ underlying $¥PLUZ$, -- the sigma-operation yields an element of $s$: -- Theorem sigma_theory3: [Sum value belongs to closed range of map] (Finite(F) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) in s). Proof: Suppose_not(f1) ==> Finite(f1) & (range(f1) ¥incin s) & (sigma_thryvar(f1) notin s) -- -- For, assuming the contrary, there would be a map $f$ contradicting the statement which we want to prove -- which was also inclusion-minimal. By an earlier theorem, such an $f$ would be non-null. -- APPLY(m1_thryvar:f) finite_induction(n->f1,P(x)->(range(x) ¥incin s) & (sigma_thryvar(x) notin s)) ==> (f ¥incin f1) & (range(f) ¥incin s) & (sigma_thryvar(f) notin s) & Stat1: (FORALL g ¥incin f | ((g /= f) ¥imp (not((range(g) ¥incin s) & (sigma_thryvar(g) notin s))))) (f1,f)-->T189 ==> Finite(f) Suppose ==> f = 0 Tsigma_theory1 ==> sigma_thryvar(0) = e Assump ==> e in s EQUAL ==> false; Discharge ==> (f incs f - {arb(f)}) & (f - {arb(f)} /= f) & (arb(f) in f) -- -- But then removal of $arb(f)$ from $f$ would produce a map strictly included in $f$ whose -- sigma-image would not belong to $s$, a contradiction which proves the desired statement. -- (f - {arb(f)})-->Stat1 ==> not((range(f - {arb(f)}) ¥incin s) & (sigma_thryvar(f - {arb(f)}) notin s)) Use_def(range) ==> (range(f - {arb(f)}) = {cdr(x): x in f - {arb(f)}}) & (range(f) = {cdr(x): x in f}) Set_monot ==> {cdr(x): x in f - {arb(f)}} ¥incin {cdr(x): x in f} ELEM ==> sigma_thryvar(f - {arb(f)}) in s Tsigma_theory0 ==> Stat2: (FORALL x | Finite(x) ¥imp (sigma_thryvar(x) = if x = 0 then e else pluz(sigma_thryvar(x - {arb(x)}),cdr(arb(x))) end if)) f-->Stat2 ==> sigma_thryvar(f) = pluz(sigma_thryvar(f - {arb(f)}),cdr(arb(f))) Suppose ==> Stat3: cdr(arb(f)) notin {cdr(x): x in f} (arb(f))-->Stat3 ==> false; Discharge ==> cdr(arb(f)) in s Assump ==> Stat4: (FORALL x,y | ((x in s) & (y in s)) ¥imp (pluz(x,y) in s)) (sigma_thryvar(f - {arb(f)}),cdr(arb(f)))-->Stat4 ==> false; Discharge ==> QED -- -- The following theorem shows that in the recursive definition of $sigma_thryvar(f)$ -- (where $f$ is a finite non-null map whose range is included in the domain underlying $¥PLUZ$), -- any element $c$ of $f$ can take the place of $arb(f)$. -- Theorem sigma_theory4: [Removal of single element from domain of a sum] ((C in F) & Finite(F) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) = pluz(sigma_thryvar(F - {C}),cdr(C))). Proof: Suppose_not(c1,f1) ==> AUTO -- -- For, assuming the contrary, there would exist an inclusion-minimal map $f$ -- contradicting our assertion, so that $f$ would have an element $c$ such that -- $sigma_thryvar(f) /= sigma_thryvar(f - {c}) ¥PLUZ cdr(c)$, whereas -- $sigma_thryvar(f) = sigma_thryvar(f - {arb(f)}) ¥PLUZ cdr(arb(f))$ by definition. -- Suppose ==> Stat1: not(EXISTS c in f1 | sigma_thryvar(f1) /= pluz(sigma_thryvar(f1 - {c}),cdr(c))) c1-->Stat1 ==> false; Discharge ==> Finite(f1) & (range(f1) ¥incin s) & (EXISTS c in f1 | sigma_thryvar(f1) /= pluz(sigma_thryvar(f1 - {c}),cdr(c))) APPLY(m1_thryvar:f) finite_induction (n->f1,P(x)->(range(x) ¥incin s) & (EXISTS c in x | sigma_thryvar(x) /= pluz(sigma_thryvar(x - {c}),cdr(c)))) ==> Stat2: (f ¥incin f1) & (range(f) ¥incin s) & Stat3: (EXISTS c in f | sigma_thryvar(f) /= pluz(sigma_thryvar(f - {c}),cdr(c))) & Stat4: (FORALL g ¥incin f | ((g /= f) ¥imp (not((range(g) ¥incin s)) & (EXISTS d in g | sigma_thryvar(g) /= pluz(sigma_thryvar(g - {d}),cdr(d)))))) (f1,f)-->T189 ==> Finite(f) c-->Stat3 ==> Stat5: (c in f) & (sigma_thryvar(f) /= pluz(sigma_thryvar(f - {c}),cdr(c))) Tsigma_theory0 ==> Stat6: (FORALL x | Finite(x) ¥imp (sigma_thryvar(x) = if x = 0 then e else pluz(sigma_thryvar(x - {arb(x)}),cdr(arb(x))) end if)) f-->Stat6 ==> sigma_thryvar(f) = pluz(sigma_thryvar(f - {arb(f)}),cdr(arb(f))) -- -- Given the counterexample that we have assumed, it is clear that $f$ includes ${c}$ strictly. -- Moreover, the assumed minimality of $f$ implies that any element of $f - {arb(f)}$, -- in particular $c$, can be used to calculate $sigma_thryvar(f - {c})$. -- Suppose ==> arb(f) = c EQUAL ==> false; Discharge ==> Stat7: (arb(f) /= c) (Stat5,Stat7)ELEM ==> Stat8: ((f - {c}) /= 0) & ((f - {arb(f)}) ¥incin f) & ((f - {arb(f)}) /= f) & (c in (f - {arb(f)})) (f - {arb(f)},f)-->T65(Stat2,Stat2*) ==> range(f - {arb(f)}) ¥incin s (f - {arb(f)})-->Stat4(Stat8*) ==> Stat9: not(EXISTS c in f - {arb(f)} | sigma_thryvar(f - {arb(f)}) /= pluz(sigma_thryvar(f - {arb(f)} - {c}),cdr(c))) c-->Stat9(Stat8,Stat8*) ==> sigma_thryvar(f - {arb(f)}) = pluz(sigma_thryvar(f - {arb(f)} - {c}),cdr(c)) -- -- Using the minimality of $f$ once more we can derive the following expression for $sigma_thryvar(f - {c})$. -- (Stat5,Stat7)ELEM ==> Stat10: ((f - {c}) ¥incin f) & (f - {c} /= f) & (arb(f) in f - {c}) (f - {c},f)-->T65(Stat2,Stat2*) ==> (range(f - {c}) ¥incin range(f)) & (range(f - {c}) ¥incin s) (f - {c})-->Stat4(Stat10*) ==> Stat11: not(EXISTS d in f - {c} | sigma_thryvar(f - {c}) /= pluz(sigma_thryvar(f - {c} - {d}),cdr(d))) (arb(f))-->Stat11(Stat10,Stat10*) ==> sigma_thryvar(f - {c}) = pluz(sigma_thryvar(f - {arb(f)} - {c}),cdr(arb(f))) -- -- Using the commutativity and associativity of $¥PLUZ$ we can now derive an easy contradiction -- which completes our proof. -- (c,f)-->T61(Stat5,Stat2*) ==> Stat12: cdr(c) in s (arb(f),f)-->T61(Stat10,Stat2*) ==> cdr(arb(f)) in s (f,f - {arb(f)} - {c})-->T189(Stat2*) ==> Finite(f - {arb(f)} - {c}) (f - {arb(f)} - {c},f)-->T65(Stat2*) ==> range(f - {arb(f)} - {c}) ¥incin s (f - {arb(f)} - {c})-->Tsigma_theory3(Stat12*) ==> sigma_thryvar(f - {arb(f)} - {c}) in s Assump ==> Stat13: (FORALL x,y,z | ((x in s) & (y in s) & (z in s)) ¥imp (pluz(pluz(x,y),z) = pluz(x,pluz(y,z)))) (sigma_thryvar(f - {arb(f)} - {c}), cdr(arb(f)), cdr(c))-->Stat13(Stat11*) ==> pluz(pluz( sigma_thryvar(f - {arb(f)} - {c}), cdr(arb(f)) ), cdr(c)) = pluz(sigma_thryvar(f - {arb(f)} - {c}), pluz( cdr(arb(f)), cdr(c) )) Assump ==> Stat14: (FORALL x,y | ((x in s) & (y in s)) ¥imp (pluz(x,y) = pluz(y,x))) (cdr(arb(f)), cdr(c))-->Stat14(Stat12*) ==> pluz(cdr(arb(f)),cdr(c)) = pluz(cdr(c),cdr(arb(f))) (sigma_thryvar(f - {arb(f)} - {c}), cdr(c), cdr(arb(f)))-->Stat13(Stat11*) ==> pluz(sigma_thryvar(f - {arb(f)} - {c}), pluz(cdr(c), cdr(arb(f))) ) = pluz(pluz(sigma_thryvar(f - {arb(f)} - {c}), cdr(c) ), cdr(arb(f))) EQUAL(Stat5) ==> false; Discharge ==> QED -- -- Next we show that if map $f$ like that considered in the previous theorems is divided into two disjoint parts -- $f1$ and $f2$, we have $sigma_thryvar(f) = sigma_thryvar(f1) ¥PLUZ sigma_thryvar(f2)$. -- Theorem sigma_theory5: [The generalized sum of a union map is a sum of sums] (Finite(F) & Is_map(F) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) = pluz(sigma_thryvar(F ¥ON (domain(F) * T)), sigma_thryvar(F ¥ON (domain(F) - T)))). Proof: Suppose_not(f1,t1) ==> AUTO -- -- Assuming that there exists a counterexample to our thorem, we can choose an -- inclusion-minimal map $f$ that contradicts it, along with a set $t$ for which -- $sigma_thryvar(f) /= sigma_thryvar(f ¥ON (domain(f) * t)) ¥PLUZ sigma_thryvar(f ¥ON (domain(f) - t))$. -- Suppose ==> Stat1: (FORALL t | sigma_thryvar(f1) = pluz(sigma_thryvar(f1 ¥ON (domain(f1) * t)), sigma_thryvar(f1 ¥ON (domain(f1) - t)))) t1-->Stat1 ==> false; Discharge ==> (not(FORALL t | sigma_thryvar(f1) = pluz(sigma_thryvar(f1 ¥ON (domain(f1) * t)), sigma_thryvar(f1 ¥ON (domain(f1) - t))))) APPLY(m1_thryvar:f) finite_induction (n->f1,P(x)->(range(x) ¥incin s) & Is_map(x) & (not(FORALL t | sigma_thryvar(x) = pluz(sigma_thryvar(x ¥ON (domain(x) * t)), sigma_thryvar(x ¥ON (domain(x) - t)))))) ==> Stat2: (f ¥incin f1) & (range(f) ¥incin s) & Is_map(f) & Stat3: (not(FORALL t | sigma_thryvar(f) = pluz(sigma_thryvar(f ¥ON (domain(f) * t)), sigma_thryvar(f ¥ON (domain(f) - t))))) & Stat4: (FORALL g ¥incin f | ((g /= f) ¥imp (not((range(g) ¥incin s)) & Is_map(g) & (not(FORALL t | sigma_thryvar(g) = pluz(sigma_thryvar(g ¥ON (domain(g) * t)), sigma_thryvar(g ¥ON (domain(g) - t)))))))) (f1,f)-->T189(*) ==> Stat5: Finite(f) t-->Stat3(Stat2*) ==> sigma_thryvar(f) /= pluz(sigma_thryvar(f ¥ON (domain(f) * t)), sigma_thryvar(f ¥ON (domain(f) - t))) -- -- Next we can decompose $f$ as the disjoint union of $f ¥ON (domain(f) * t)$ with $f ¥ON (domain(f) - t)$. -- TELEM ==> domain(f) = (domain(f) * t) + (domain(f) - t) EQUAL ==> f ¥ON domain(f) = f ¥ON ((domain(f) * t) + (domain(f) - t)) (f,domain(f) * t,domain(f) - t)-->T63 ==> f ¥ON domain(f) = (f ¥ON (domain(f) * t)) + (f ¥ON (domain(f) - t)) (f,t)-->T68(*) ==> f ¥ON (domain(f) * t) = f ¥ON t f-->T67 ==> f = (f ¥ON t) + (f ¥ON (domain(f) - t)) -- -- It follows from the following assumptions and instances of theorems of the present theory... -- Assump ==> Stat6: e in s Assump ==> Stat7: (FORALL x | (x in s) ¥imp (pluz(x,e) = x)) Assump ==> Stat8: (FORALL x,y | ((x in s) & (y in s)) ¥imp (pluz(x, y) = pluz(y, x))) Tsigma_theory1 ==> sigma_thryvar(0) = e (f,(domain(f) - t))-->T52(*) ==> (f ¥ON (domain(f) - t)) ¥incin f (f,f ¥ON (domain(f) - t))-->T189(Stat5*) ==> Finite(f ¥ON (domain(f) - t)) (f,(domain(f) - t))-->T80(Stat2,Stat2*) ==> range(f ¥ON (domain(f) - t)) ¥incin s (f ¥ON (domain(f) - t))-->Tsigma_theory3 ==> Stat9: sigma_thryvar(f ¥ON (domain(f) - t)) in s -- -- ... that $t$ must intersect the domain of $f$; more specifically, $f ¥ON t$ cannot be null. -- Suppose ==> f ¥ON t = 0 (Stat2)ELEM ==> f = f ¥ON (domain(f) - t) EQUAL(Stat2) ==> sigma_thryvar(f) = sigma_thryvar(f ¥ON (domain(f) - t)) (sigma_thryvar(f ¥ON (domain(f) - t)))-->Stat7 ==> sigma_thryvar(f) = pluz(sigma_thryvar(f ¥ON (domain(f) - t)), e) EQUAL(Stat2) ==> sigma_thryvar(f) /= pluz(e, sigma_thryvar(f ¥ON (domain(f) - t))) (e,sigma_thryvar(f ¥ON (domain(f) - t)))-->Stat8 ==> false; Discharge ==> Stat10: f ¥ON t /= 0 -- -- Hence we can pick an element $c$ from the restricted map $f ¥ON (domain(f) * t)$, -- which must satisfy $domain(f - {c}) - t = domain(f) - t$. -- c-->Stat10(Stat2) ==> Stat11: c in (f ¥ON (domain(f) * t)) Use_def(¥ON) ==> Stat12: c in {x in f | car(x) in (domain(f) * t)} ()-->Stat12(Stat12) ==> Stat13: car(c) in (domain(f) * t) (f-{c},t)-->T68(*) ==> ((f-{c}) ¥ON (domain(f-{c}) * t)) = ((f-{c}) ¥ON t) Suppose ==> Stat14: domain(f - {c}) - t /= domain(f) - t (f - {c},f)-->T65(Stat14*) ==> Stat15: not(domain(f - {c}) - t incs domain(f) - t) b-->Stat15(Stat15*) ==> (b in domain(f) - t) & (b notin domain(f - {c})) Use_def(domain) ==> (b in {car(x): x in f} - t) & (b notin domain(f - {c})) (Stat2)ELEM ==> Stat16: b in {car(x): x in f} b1-->Stat16(Stat16) ==> (b = car(b1)) & (b1 in f) Use_def(domain) ==> Stat17: (b notin {car(x): x in f - {c}}) b1-->Stat17(Stat15) ==> b1 notin f - {c} (Stat2)Discharge ==> Stat18: domain(f - {c}) - t = domain(f) - t -- -- It easily follows that $(f ¥ON (domain(f) - t)) = ((f-{c}) ¥ON (domain(f) - t))$; for, ... -- -- (f-{c},{c},(domain(f) - t))-->T64 ==> ((f-{c}+{c}) ¥ON (domain(f) - t)) = ((f - {c}) ¥ON (domain(f) - t)) + ({c} ¥ON (domain(f) - t)) (Stat2)ELEM ==> f = f - {c} + {c} EQUAL(Stat18) ==> f ¥ON (domain(f) - t) = ((f - {c}) ¥ON (domain(f - {c}) - t)) + ({c} ¥ON (domain(f) - t)) -- -- ...assuming that ${c} ¥ON (domain(f) - t) /= 0$ would contradict the -- fact, already established, that $car(c) in t$. -- Suppose ==> Stat19: {c} ¥ON (domain(f) - t) /= 0 a-->Stat19 ==> a in ({c} ¥ON (domain(f) - t)) Use_def(¥ON) ==> Stat20: a in {p in {c} | car(p) in domain(f)-t} ()-->Stat20 ==> (a in {c}) & (car(a) in domain(f)-t) (Stat12)Discharge ==> Stat21: f ¥ON (domain(f) - t) = (f - {c}) ¥ON (domain(f - {c}) - t) -- -- It is also easy to sharpen the preceding observation into the equality -- $(f ¥ON (domain(f) - t)) = ((f - {c}) ¥ON (domain(f) - t))$. -- Suppose ==> Stat22: (f ¥ON (domain(f) - t)) /= ((f - {c}) ¥ON (domain(f) - t)) Use_def(¥ON)(Stat22*) ==> (f ¥ON (domain(f) - t) = {x in f | car(x) in domain(f) - t}) & ((f - {c}) ¥ON (domain(f) - t) = {x in (f - {c}) | car(x) in domain(f) - t}) TELEM ==> f = (f - {c}) + (f - (f - {c})) (f - {c},f - (f - {c}),domain(f) - t)-->T64(Stat23*) ==> Stat23: ((f - {c}) + (f - (f - {c})) ¥ON (domain(f) - t)) incs ((f - {c}) ¥ON (domain(f) - t)) EQUAL(Stat22) ==> (f ¥ON (domain(f) - t)) incs ((f - {c}) ¥ON (domain(f) - t)) (Stat22)ELEM ==> not ((f ¥ON (domain(f) - t)) ¥incin ((f - {c}) ¥ON (domain(f) - t))) d-->Stat22(Stat22) ==> Stat24: (d in {x in f | car(x) in domain(f) - t}) & Stat25: (d notin {x in f - {c} | car(x) in domain(f) - t}) d-->Stat24(Stat24*) ==> (d in f) & (car(d) in domain(f) - t) & (d notin (f - {c})) (Stat2*)Discharge ==> Stat26: (f ¥ON (domain(f) - t)) = ((f - {c}) ¥ON (domain(f) - t)) -- -- The assumed minimality of $f$ now leads to the equality -- $sigma_thryvar(f - {c}) = sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)) ¥PLUZ sigma_thryvar(f ¥ON (domain(f) - t))$, -- Suppose ==> sigma_thryvar(f - {c}) /= pluz(sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)), sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) - t))) (Stat18)ELEM ==> (f - {c} ¥incin f) & (f - {c} /= f) (f - {c},f)-->T52(Stat2,Stat2*) ==> Is_map(f - {c}) (f - {c},f)-->T65(Stat2,Stat2*) ==> range(f - {c}) ¥incin s (f, f-{c})-->T189(Stat5*) ==> Finite(f-{c}) (f - {c})-->Stat4(Stat26*) ==> Stat27: (FORALL t | sigma_thryvar(f - {c}) = pluz(sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)), sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) - t)))) t-->Stat27(Stat26) ==> false; Discharge ==> Stat28: sigma_thryvar(f - {c}) = pluz(sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)), sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) - t))) -- -- whence, thanks to the assumptions and earlier theorems of the present theory, ... -- (c,f)-->Tsigma_theory4 ==> sigma_thryvar(f) = pluz(sigma_thryvar(f - {c}), cdr(c)) EQUAL(Stat18) ==> sigma_thryvar(f) = pluz(pluz(sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)), sigma_thryvar(f ¥ON (domain(f) - t))), cdr(c)) Assump ==> Stat29: (FORALL x,y | ((x in s) & (y in s)) ¥imp (pluz(x,y) in s)) Assump ==> Stat30: (FORALL x, y, z | ((x in s) & (y in s) & (z in s)) ¥imp (pluz(pluz(x,y),z) = pluz(x,pluz(y,z)))) -- (f,(domain(f) - t))-->T48(Stat28) ==> (f ¥ON (domain(f) - t)) ¥incin f (f,(f ¥ON (domain(f) - t)))-->T189 ==> Finite(f ¥ON (domain(f) - t)) ((f ¥ON (domain(f) - t)),f)-->T65 ==> range(f ¥ON (domain(f) - t)) ¥incin s -- ((f - {c}), (domain(f - {c}) * t) )-->T48 ==> ((f - {c}) ¥ON (domain(f - {c}) * t)) ¥incin f (f,((f - {c}) ¥ON (domain(f - {c}) * t)))-->T189 ==> Finite((f - {c}) ¥ON (domain(f - {c}) * t)) (((f - {c}) ¥ON (domain(f - {c}) * t)),f)-->T65 ==> range((f - {c}) ¥ON (domain(f - {c}) * t)) ¥incin s ((f - {c}) ¥ON (domain(f - {c}) * t))-->Tsigma_theory3 ==> sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)) in s -- -- ... we find that -- $sigma_thryvar(f) = (sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)) ¥PLUZ cdr(c)) ¥PLUZ sigma_thryvar(f ¥ON (domain(f) - t))$ -- Suppose ==> Stat31: cdr(c) notin s (Stat2,Stat31*)ELEM ==> cdr(c) notin range(f) Use_def(range)(Stat31*) ==> Stat32: cdr(c) notin {cdr(x): x in f} c-->Stat32(Stat32) ==> c notin f (f,dom(f)*t)-->T48(*) ==> false; Discharge ==> Stat33: cdr(c) in s (sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)),sigma_thryvar(f ¥ON (domain(f) - t)),cdr(c))-->Stat30(*) ==> sigma_thryvar(f) = pluz(sigma_thryvar((f - {c}) ¥ON (domain(f - {c})) * t), pluz(sigma_thryvar(f ¥ON (domain(f) - t)), cdr(c))) (sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)),cdr(c),sigma_thryvar(f ¥ON (domain(f) - t)))-->Stat30(*) ==> pluz(sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)), pluz(cdr(c), sigma_thryvar(f ¥ON (domain(f) - t)))) = pluz(pluz(sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)), cdr(c)), sigma_thryvar(f ¥ON (domain(f) - t))) (sigma_thryvar(f ¥ON (domain(f) - t)), cdr(c))-->Stat8(Stat33,Stat9*) ==> pluz(sigma_thryvar(f ¥ON (domain(f) - t)), cdr(c)) = pluz(cdr(c), sigma_thryvar(f ¥ON (domain(f) - t))) EQUAL(Stat2) ==> sigma_thryvar(f) = pluz(pluz(sigma_thryvar((f - {c}) ¥ON (domain(f - {c}) * t)), cdr(c)), sigma_thryvar(f ¥ON (domain(f) - t))) -- -- Addition of the first two terms on the right-hand side of this equality is easily seen to -- yield $sigma_thryvar(f ¥ON (domain(f) * t))$; thus, by using Theorem $sigma_theory4$ we get -- a contradiction which proves the present theorem. -- ({c},f-{c},t)-->T64(Stat34*) ==> Stat34: (f-{c}+{c}) ¥ON t = ((f-{c}) ¥ON t) + ({c} ¥ON t) EQUAL(Stat2) ==> (f ¥ON t) = ((f-{c}) ¥ON t) + ({c} ¥ON t) Suppose ==> Stat35: ({c} ¥ON t) /= {c} ({c},t)-->T48(Stat35*) ==> Stat36: c notin {c} ¥ON t Use_def(¥ON)(Stat36*) ==> Stat37: c notin {x in {c} | car(x) in t} c-->Stat37(Stat13,Stat13*) ==> false; Discharge ==> f ¥ON (domain(f) * t) = ((f-{c}) ¥ON (domain(f-{c}) * t)) + {c} (f-{c},domain(f-{c}) * t)-->T48(*) ==> f ¥ON (domain(f) * t) - {c} = ((f-{c}) ¥ON (domain(f-{c}) * t)) EQUAL(Stat30) ==> sigma_thryvar(f ¥ON (domain(f) * t) - {c}) = sigma_thryvar((f-{c}) ¥ON (domain(f-{c}) * t)) -- (f,(domain(f) * t))-->T48(*) ==> Stat38: (f ¥ON (domain(f) * t)) ¥incin f (f,f ¥ON (domain(f) * t))-->T189(Stat38,Stat5*) ==> Stat39: Finite(f ¥ON (domain(f) * t)) (f ¥ON (domain(f) * t),f)-->T65(Stat38,Stat2*) ==> Stat40: range(f ¥ON (domain(f) * t)) ¥incin s (c,f ¥ON (domain(f) * t))-->Tsigma_theory4(Stat11,Stat39,Stat40*) ==> sigma_thryvar(f ¥ON (domain(f) * t)) = pluz(sigma_thryvar(f ¥ON (domain(f) * t) - {c}), cdr(c)) EQUAL(Stat2*) ==> false; Discharge ==> QED -- -- Our next theorem shows that if a map $f$ with values in s is -- decomposed in any way into a collection of disjoint parts $fj$, then -- $sigma(f)$ is the sum of all the values $sigma(fj)$, where $fj$ runs over all the -- parts into which $f$ has been decomposed. To state this result formally, we make use of -- an auxiliary single-valued mapping $g$ having the same domain as f, and decompose -- the domain of f into the collection of sets $g ¥INV_IM {y}$, where $y$ varies -- over the range of $g$. -- Theorem sigma_theory6: [Rearrangement-of-sums theorem] (Finite(F) & Svm(F) & Svm(G) & (domain(F) = domain(G)) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) = sigma_thryvar({[y,sigma_thryvar(F ¥ON (G ¥INV_IM {y}))]: y in range(G)})). Proof: -- -- Assuming by contradiction the statement to be false, we could take -- a counterexample $f,g$ with $f$ incusion-minimal. -- Suppose_not(f1,g1) ==> Stat1: Finite(f1) & Svm(f1) & Svm(g1) & (domain(f1) = domain(g1)) & (range(f1) ¥incin s) & (sigma_thryvar(f1) /= sigma_thryvar({[y,sigma_thryvar(f1 ¥ON (g1 ¥INV_IM {y}))]: y in range(g1)})) Suppose ==> Stat2: not((EXISTS g | Svm(g) & (domain(f1) = domain(g)) & (sigma_thryvar(f1) /= sigma_thryvar({[y,sigma_thryvar(f1 ¥ON (g ¥INV_IM {y}))]: y in range(g)})))) g1-->Stat2 ==> false; Discharge ==> (EXISTS g | Svm(g) & (domain(f1) = domain(g)) & (sigma_thryvar(f1) /= sigma_thryvar({[y,sigma_thryvar(f1 ¥ON (g ¥INV_IM {y}))]: y in range(g)}))) APPLY(m1_thryvar:f) finite_induction(n->f1,P(x)->(Svm(x) & (range(x) ¥incin s) & (EXISTS g | Svm(g) & (domain(x) = domain(g)) & (sigma_thryvar(x) /= sigma_thryvar({[y,sigma_thryvar(x ¥ON (g ¥INV_IM {y}))]: y in range(g)}))))) ==> Stat3:(f ¥incin f1) & Svm(f) & (range(f) ¥incin s) & Stat4: (EXISTS g | Svm(g) & (domain(f) = domain(g)) & (sigma_thryvar(f) /= sigma_thryvar({[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]: y in range(g)}))) & Stat5: (FORALL h ¥incin f | (h /= f) ¥imp (not(Svm(h) & (range(h) ¥incin s) & (EXISTS k | Svm(k) & (domain(h) = domain(k)) & (sigma_thryvar(h) /= sigma_thryvar({[v,sigma_thryvar(h ¥ON (k ¥INV_IM {v}))]: v in range(k)})))))) -- (f1,f)-->T189 ==> Finite(f) g-->Stat4 ==> Stat6: Svm(g) & (domain(f) = domain(g)) & (sigma_thryvar(f) /= sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)})) -- -- Note that $range(g)$ cannot be null, else $domain(f)=domain(g)$ would be null too, -- which would quickly lead us to a contradiction. -- Suppose ==> range(g) = 0 g-->T86 ==> Stat7: domain(f) = 0 APPLY() setformer0(e(x)->car(x),s->f,P(x)->false) ==> (f /= 0) ¥imp ({car(x): x in f} /= 0) Use_def(domain) ==> Stat8: (f /= 0) ¥imp (domain(f) /= 0) (Stat7,Stat8)ELEM ==> f = 0 Suppose ==> Stat9: {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]: y in range(g)} /= 0 d-->Stat9 ==> false; Discharge ==> {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]: y in range(g)} = 0 EQUAL ==> false; Discharge ==> Stat10: range(g) /= 0 -- -- Hence we can pick a $y$ from $range(g)$, and decompose the domain of $f$ as disjoint union -- $domain(f)=(g ¥INV_IM {y})+(g ¥INV_IM (range(g)-{y}))$, -- where $g ¥INV_IM {8y}/=0$. By Theorem sigma_theory5, we will have -- $sigma_thryvar(f) = sigma_thryvar(f ¥ON (g ¥INV_IM {y})) ¥PLUZ sigma_thryvar(g ¥INV_IM (range(g)-{y}))$. -- y-->Stat10 ==> y in range(g) (y,g)-->T179 ==> Stat11: (g ¥INV_IM {y}) /= 0 (g,{y})-->T177 ==> domain(f) = ((g ¥INV_IM {y}) + (g ¥INV_IM (range(g) - {y}))) ({y},range(g)-{y},g)-->T178 ==> ((g ¥INV_IM {y}) * (g ¥INV_IM (range(g) - {y}))) = 0 Use_def(Svm) ==> Stat12: Is_map(f) & (range(f) ¥incin s) & Finite(f) (f,s,g ¥INV_IM {y})-->Tsigma_theory5(Stat12) ==> sigma_thryvar(f) = pluz(sigma_thryvar(f ¥ON (domain(f) * (g ¥INV_IM {y}))), sigma_thryvar(f ¥ON (domain(f) - (g ¥INV_IM {y})))) (Stat11)ELEM ==> (domain(f) * (g ¥INV_IM {y}) = g ¥INV_IM {y}) & (domain(f) - (g ¥INV_IM {y})) = g ¥INV_IM (range(g)-{y}) EQUAL ==> Stat13: sigma_thryvar(f) = pluz(sigma_thryvar(f ¥ON (g ¥INV_IM {y})), sigma_thryvar(f ¥ON (g ¥INV_IM (range(g)-{y})))) -- -- Before we can exploit the assumed minimality of $f$, we must show that the restriction -- of $f$ to $g ¥INV_IM (range(g)-{y})$ is strictly included in $f$. -- Suppose ==> not((f ¥ON (g ¥INV_IM (range(g) - {y})) ¥incin f) & (f /= f ¥ON (g ¥INV_IM (range(g) - {y})))) x-->Stat11 ==> (x in (g ¥INV_IM {y})) Suppose ==> [x,f~[x]] notin f f-->T72 ==> Stat14: [x,f~[x]] notin {[xx,f~[xx]]: xx in domain(f)} (g,{x})-->T177 ==> x in domain(f) x-->Stat14 ==> false; Discharge ==> [x,f~[x]] in f (f,domain(f) - (g ¥INV_IM {y}))-->T48 ==> f ¥ON (domain(f) - (g ¥INV_IM {y})) ¥incin f (f,domain(f) - (g ¥INV_IM {y}))-->T57 ==> Svm(f ¥ON (domain(f) - (g ¥INV_IM {y}))) EQUAL ==> Svm(f ¥ON (g ¥INV_IM (range(g)-{y}))) (f ¥ON (domain(f) - (g ¥INV_IM {y})))-->T72 ==> Stat15: {[xx,(f ¥ON (domain(f) - (g ¥INV_IM {y})))~[xx]]: xx in domain(f ¥ON (domain(f) - (g ¥INV_IM {y})))} = f ¥ON (domain(f) - (g ¥INV_IM {y})) (f,domain(f) - (g ¥INV_IM {y}))-->T94 ==> x notin domain(f ¥ON (domain(f) - (g ¥INV_IM {y}))) Suppose ==> [x,f~[x]] in (f ¥ON (domain(f) - (g ¥INV_IM {y}))) EQUAL ==> Stat16: [x,f~[x]] in {[xx,(f ¥ON (domain(f) - (g ¥INV_IM {y})))~[xx]]: xx in domain(f ¥ON (domain(f) - (g ¥INV_IM {y})))} xp-->Stat16 ==> Stat17: (x = xp) & (xp in domain(f ¥ON (domain(f) - (g ¥INV_IM {y})))) EQUAL ==> false; Discharge ==> f /= f ¥ON (domain(f) - (g ¥INV_IM {y})) EQUAL ==> false; Discharge ==> Stat18: (f ¥ON (g ¥INV_IM (range(g) - {y})) ¥incin f) & (f /= f ¥ON (g ¥INV_IM (range(g)-{y}))) -- -- Simplification of the expression for $sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y})))$ -- which results from this remark leads us to the equality -- -- $sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y}))) = sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}})$. -- Suppose ==> Stat19: sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y}))) /= sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}) Suppose ==> not(range(f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥incin s) (f,g ¥INV_IM (range(g) - {y}))-->T48() ==> f ¥ON (g ¥INV_IM (range(g) - {y})) ¥incin f (f ¥ON (g ¥INV_IM (range(g) - {y})),f)-->T65(Stat3) ==> false; Discharge ==> range(f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥incin s (f ¥ON (g ¥INV_IM (range(g) - {y})))-->Stat5(Stat18) ==> (not(Svm(f ¥ON (g ¥INV_IM (range(g) - {y}))))) or (not(EXISTS k | Svm(k) & (domain(f ¥ON (g ¥INV_IM (range(g) - {y}))) = domain(k)) & (sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y}))) /= sigma_thryvar({[v,sigma_thryvar((f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON (k ¥INV_IM {v}))]: v in range(k)})))) (f, (g ¥INV_IM (range(g) - {y})))-->T48 ==> f ¥ON (g ¥INV_IM (range(g) - {y})) ¥incin f (f ¥ON (g ¥INV_IM (range(g) - {y})))-->T53 ==> Stat20: not(EXISTS k | Svm(k) & (domain(f ¥ON (g ¥INV_IM (range(g) - {y}))) = domain(k)) & (sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y}))) /= sigma_thryvar({[v,sigma_thryvar((f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON (k ¥INV_IM {v}))]: v in range(k)}))) (g, (g ¥INV_IM (range(g) - {y})))-->T48 ==> g ¥ON (g ¥INV_IM (range(g) - {y})) ¥incin g (g, (g ¥INV_IM (range(g) - {y})))-->T57 ==> Svm(g ¥ON (g ¥INV_IM (range(g) - {y}))) (f,(g ¥INV_IM (range(g) - {y})))-->T94 ==> domain(f ¥ON (g ¥INV_IM (range(g) - {y}))) = domain(f) * (g ¥INV_IM (range(g) - {y})) (g,(g ¥INV_IM (range(g) - {y})))-->T94 ==> domain(f ¥ON (g ¥INV_IM (range(g) - {y}))) = domain(g ¥ON (g ¥INV_IM (range(g) - {y}))) (g ¥ON (g ¥INV_IM (range(g) - {y})))-->Stat20 ==> sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y}))) = sigma_thryvar({[v,sigma_thryvar((f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON ((g ¥ON (g ¥INV_IM (range(g) - {y}))) ¥INV_IM {v}))]: v in range(g ¥ON (g ¥INV_IM (range(g) - {y})))}) (g, (range(g) - {y}))-->T184 ==> range(g ¥ON (g ¥INV_IM (range(g) - {y}))) = range(g) - {y} EQUAL ==> Stat21: sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y}))) = sigma_thryvar({[v,sigma_thryvar((f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON ((g ¥ON (g ¥INV_IM (range(g) - {y}))) ¥INV_IM {v}))]: v in range(g) - {y}}) Suppose ==> Stat22: (not(FORALL v in (range(g) - {y}) | (f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON ((g ¥ON (g ¥INV_IM (range(g) - {y}))) ¥INV_IM {v}) = f ¥ON (g ¥INV_IM {v}))) Loc_def ==> ry = range(g) - {y} Loc_def ==> gry = g ¥INV_IM ry Loc_def ==> gory = g ¥ON gry EQUAL ==> Stat23: (not(FORALL v in ry | (f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON (gory ¥INV_IM {v}) = f ¥ON (g ¥INV_IM {v}))) vp-->Stat23 ==> ({vp} ¥incin ry) & ((f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON (gory ¥INV_IM {vp}) /= f ¥ON (g ¥INV_IM {vp})) Loc_def ==> wp = {vp} EQUAL ==> (f ¥ON (g ¥INV_IM ry)) ¥ON (gory ¥INV_IM wp) /= f ¥ON (g ¥INV_IM wp) (wp, ry, g)-->T186(Stat23) ==> (g ¥INV_IM wp) = (g ¥INV_IM ry) * (g ¥INV_IM wp) Suppose ==> (f ¥ON (g ¥INV_IM ry)) ¥ON (g ¥INV_IM wp) /= f ¥ON (g ¥INV_IM wp) (f, (g ¥INV_IM ry), (g ¥INV_IM wp))-->T187 ==> (f ¥ON (g ¥INV_IM ry)) ¥ON (g ¥INV_IM wp) = f ¥ON ((g ¥INV_IM ry) * (g ¥INV_IM wp)) EQUAL ==> false; Discharge ==> (f ¥ON (g ¥INV_IM ry)) ¥ON (g ¥INV_IM wp) = f ¥ON (g ¥INV_IM wp) Suppose ==> gory ¥INV_IM wp = g ¥INV_IM wp EQUAL ==> (f ¥ON (g ¥INV_IM ry)) ¥ON (gory ¥INV_IM wp) = (f ¥ON (g ¥INV_IM ry)) ¥ON (g ¥INV_IM wp) EQUAL ==> false; Discharge ==> gory ¥INV_IM wp /= g ¥INV_IM wp (g, ry, wp)-->T185 ==> ((g ¥ON (g ¥INV_IM ry)) ¥INV_IM wp) = (g ¥INV_IM wp) EQUAL ==> gory ¥INV_IM wp = g ¥INV_IM wp ELEM ==> false; Discharge ==> Stat24: (FORALL v in (range(g) - {y}) | (f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON ((g ¥ON (g ¥INV_IM (range(g) - {y}))) ¥INV_IM {v}) = f ¥ON (g ¥INV_IM {v})) Suppose ==> Stat25: {[v,sigma_thryvar((f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON ((g ¥ON (g ¥INV_IM (range(g) - {y}))) ¥INV_IM {v}))]: v in range(g) - {y}} /= {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} vq-->Stat25 ==> (vq in range(g) - {y}) & (sigma_thryvar((f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON ((g ¥ON (g ¥INV_IM (range(g) - {y}))) ¥INV_IM {vq})) /= sigma_thryvar(f ¥ON (g ¥INV_IM {vq}))) vq-->Stat24 ==> (f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON ((g ¥ON (g ¥INV_IM (range(g) - {y}))) ¥INV_IM {vq}) = f ¥ON (g ¥INV_IM {vq}) EQUAL ==> false; Discharge ==> Stat26: {[v,sigma_thryvar((f ¥ON (g ¥INV_IM (range(g) - {y}))) ¥ON ((g ¥ON (g ¥INV_IM (range(g) - {y}))) ¥INV_IM {v}))]: v in range(g) - {y}} = {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} EQUAL(Stat26,Stat21) ==> Stat27: sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y}))) = sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}) (Stat27,Stat19)ELEM ==> false; Discharge ==> Stat28: sigma_thryvar(f ¥ON (g ¥INV_IM (range(g) - {y}))) = sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}) -- -- Next we ascertain all conditions needed for instantiation of -- the variables of Theorem sigma_theory4 to $[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]$ -- and to ${[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}$ respectively. -- Suppose ==> {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} + {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]} /= {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)} Set_monot ==> {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} ¥incin {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)} Suppose ==> Stat29: [y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))] notin {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)} y-->Stat29 ==> false; Discharge ==> Stat30: not({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} + {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]} incs {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) a-->Stat30 ==> Stat31: (a in {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) & (a notin {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}) & (a /= [y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]) (u,u)-->Stat31 ==> Stat32: (a = [u,sigma_thryvar(f ¥ON (g ¥INV_IM {u}))]) & (u in range(g)) & (u notin range(g) - {y}) & (a /= [y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]) (Stat32)ELEM ==> (u=y) & (sigma_thryvar(f ¥ON (g ¥INV_IM {u})) /= sigma_thryvar(f ¥ON (g ¥INV_IM {y}))) EQUAL ==> false; Discharge ==> Stat33: {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} + {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]} = {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)} -- -- One of the conditions needed for the application of Theorem sigma_theory4 is proved -- as follows, exploiting the known fact that a single-valued map is finite if and only -- if its domain is finite. -- Suppose ==> not(Finite({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)})) g-->T174 ==> #g = #domain(g) f-->T174 ==> #f = #domain(f) f-->T193 ==> Finite(#f) EQUAL ==> Finite(#domain(g)) ELEM ==> Svm({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) & domain({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) = range(g) (domain(g))-->T193 ==> Finite(domain(g)) g-->T192 ==> Finite(range(g)) EQUAL ==> Finite(domain({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)})) (domain({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}))-->T193 ==> Finite(#domain({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)})) ({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)})-->T174 ==> #domain({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) = #{[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)} EQUAL ==> Finite(#{[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) ({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)})-->T193 ==> false; Discharge ==> Stat34: Finite({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) -- -- -- -- Suppose ==> Stat35: not(range({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) ¥incin s) (Stat35)ELEM ==> Stat36: not({sigma_thryvar(f ¥ON (g ¥INV_IM {v})): v in range(g)} ¥incin s) b-->Stat36() ==> Stat37: (b in {sigma_thryvar(f ¥ON (g ¥INV_IM {v})): v in range(g)}) & (b notin s) w-->Stat37() ==> (b = sigma_thryvar(f ¥ON (g ¥INV_IM {w}))) & (w in range(g)) (f, (g ¥INV_IM {w}))-->T48 ==> f ¥ON (g ¥INV_IM {w}) ¥incin f (f ¥ON (g ¥INV_IM {w}),f)-->T53 ==> Svm(f ¥ON (g ¥INV_IM {w})) (f, f ¥ON (g ¥INV_IM {w}))-->T189 ==> Finite(f ¥ON (g ¥INV_IM {w})) (f ¥ON (g ¥INV_IM {w}),f)-->T65 ==> range(f ¥ON (g ¥INV_IM {w})) ¥incin range(f) (f ¥ON (g ¥INV_IM {w}))-->Tsigma_theory3(Stat1*) ==> false; Discharge ==> Stat38: range({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) ¥incin s ([y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))], {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)})-->Tsigma_theory4(Stat33,Stat34,Stat38) ==> sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) = pluz(sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)} - {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]}), sigma_thryvar(f ¥ON (g ¥INV_IM {y}))) Suppose ==> Stat39: [y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))] in {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} v-->Stat39 ==> Stat40: (v /= y) & ([y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))] = [v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]) (Stat40)Discharge ==> Stat41: [y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))] notin {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} (Stat33,Stat41)ELEM ==> ([y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))] in {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) & ({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)} - {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]} = {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}) EQUAL ==> Stat42: sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}) = pluz(sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}), sigma_thryvar(f ¥ON (g ¥INV_IM {y}))) -- -- Before we can exploit commutativity, we must check that the two addends -- on the left-hand side of the equality just obtained belong to $s$. -- Thanks to the Theorem sigma_theory_3, it suffices to show that both of -- them are finite and have range contained in $s$. -- (f, (g ¥INV_IM {y}))-->T48 ==> f ¥ON (g ¥INV_IM {y}) ¥incin f (f, f ¥ON (g ¥INV_IM {y}))-->T189 ==> Finite(f ¥ON (g ¥INV_IM {y})) (f ¥ON (g ¥INV_IM {y}),f)-->T65 ==> range(f ¥ON (g ¥INV_IM {y})) ¥incin range(f) (f ¥ON (g ¥INV_IM {y}))-->Tsigma_theory3 ==> Stat43: sigma_thryvar(f ¥ON (g ¥INV_IM {y})) in s Set_monot ==> {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}} ¥incin {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)} ({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)}, {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}})-->T189 ==> Finite({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}) ({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}, {[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g)})-->T65 ==> range({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}) ¥incin s ({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}})-->Tsigma_theory3 ==> Stat44: sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}) in s Assump ==> Stat45: (FORALL t, z | ((t in s) & (z in s)) ¥imp (pluz(t,z) = pluz(z,t))) (sigma_thryvar(f ¥ON (g ¥INV_IM {y})), sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}))-->Stat45 ==> Stat46: pluz(sigma_thryvar(f ¥ON (g ¥INV_IM {y})), sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}})) = pluz(sigma_thryvar({[v,sigma_thryvar(f ¥ON (g ¥INV_IM {v}))]: v in range(g) - {y}}), sigma_thryvar(f ¥ON (g ¥INV_IM {y}))) EQUAL(Stat46,Stat42,Stat13,Stat28,Stat6) ==> false; Discharge ==> QED -- -- The following theorem is a specialized variant of the rearrangement-of-sums theorem, -- providing essentially the same conclusion as that given by the rearrangement-of-sums theorem, -- but from hypotheses that are sometimes more convenient. -- Theorem sigma_theory7: [Sum permutation theorem] (Finite(F) & Svm(F) & one_1_map(G) & (domain(F) = domain(G)) & (range(F) ¥incin s)) ¥imp (sigma_thryvar(F) = sigma_thryvar({[y,F~[inv(G)~[y]]]: y in range(G)})). Proof: Suppose_not(f,g) ==> Finite(f) & Svm(f) & one_1_map(g) & (domain(f) = domain(g)) & (range(f) ¥incin s) & (sigma_thryvar(f) /= sigma_thryvar({[y,f~[inv(g)~[y]]]: y in range(g)})) -- -- For suppose that $f$ and $g$ furnish a counterexample to our assertion. -- Use_def(one_1_map) ==> Svm(g) Suppose ==> {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]: y in range(g)} = {[y,f~[inv(g)~[y]]]: y in range(g)} EQUAL ==> sigma_thryvar({[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]: y in range(g)}) = sigma_thryvar({[y,f~[inv(g)~[y]]]: y in range(g)}) (f,g)-->Tsigma_theory6 ==> false; Discharge ==> Stat1: {[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]: y in range(g)} /= {[y,f~[inv(g)~[y]]]: y in range(g)} y-->Stat1 ==> (y in range(g)) & (sigma_thryvar(f ¥ON (g ¥INV_IM {y})) /= f~[inv(g)~[y]]) (g,y)-->T182 ==> g ¥INV_IM {y} = {inv(g)~[y]} g-->T99 ==> (range(g) = domain(inv(g))) & (domain(g) = range(inv(g))) (y,inv(g))-->T71 ==> inv(g)~[y] in domain(f) Use_def(Svm) ==> Is_map(f) (f,inv(g)~[y])-->T77 ==> [inv(g)~[y],f~[inv(g)~[y]]] in f Suppose ==> f ¥ON {inv(g)~[y]} /= {[inv(g)~[y],f~[inv(g)~[y]]]} Use_def(¥ON) ==> {p: p in f | car(p) in {inv(g)~[y]}} /= {[inv(g)~[y],f~[inv(g)~[y]]]} Suppose ==> Stat2: [inv(g)~[y],f~[inv(g)~[y]]] notin {p: p in f | car(p) in {inv(g)~[y]}} TELEM ==> car([inv(g)~[y],f~[inv(g)~[y]]]) = inv(g)~[y] ([inv(g)~[y],f~[inv(g)~[y]]])-->Stat2 ==> false; Discharge ==> Stat3: not({p: p in f | car(p) in {inv(g)~[y]}} ¥incin {[inv(g)~[y],f~[inv(g)~[y]]]}) q-->Stat3 ==> Stat4: (q in {p: p in f | car(p) in {inv(g)~[y]}}) & (q /= [inv(g)~[y],f~[inv(g)~[y]]]) p-->Stat4 ==> (p in f) & (car(p) = inv(g)~[y]) & (p /= [inv(g)~[y],f~[inv(g)~[y]]]) Use_def(Svm) ==> Stat5: (FORALL x in f, y in f | (car(x) = car(y)) ¥imp (x = y)) (p,[inv(g)~[y],f~[inv(g)~[y]]])-->Stat5 ==> false; Discharge ==> f ¥ON {inv(g)~[y]} = {[inv(g)~[y],f~[inv(g)~[y]]]} Suppose ==> cdr([inv(g)~[y],f~[inv(g)~[y]]]) notin s ELEM ==> f~[inv(g)~[y]] notin s (inv(g)~[y],f)-->T71 ==> false; Discharge ==> cdr([inv(g)~[y],f~[inv(g)~[y]]]) in s ([inv(g)~[y],f~[inv(g)~[y]]])-->Tsigma_theory2 ==> sigma_thryvar({[inv(g)~[y],f~[inv(g)~[y]]]}) = f~[inv(g)~[y]] EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY sigma_theory -- --THEORY sigma_theory(s,x ¥PLUZ y,e) [Contains some elementary lemmas about single-valued functions] -- e in s -- (FORALL x in s | (x ¥PLUZ e = x)) -- (FORALL x in s, y in s | (x ¥PLUZ y = y ¥PLUZ x)) -- (FORALL x in s, y in s | x ¥PLUZ y in s) -- (FORALL x in s, y in s, z in s | (x ¥PLUZ y) ¥PLUZ z = x ¥PLUZ (y ¥PLUZ z)) --==> (sigma_thryvar) -- (sigma_thryvar(0) = e) -- (FORALL x | (cdr(x) in s) ¥imp (sigma_thryvar({x}) = cdr(x))) -- (FORALL f | (Finite(f) & (range(f) ¥incin s)) ¥imp (sigma_thryvar(f) in s)) -- (FORALL c, f | ((c in f) & Finite(f) & (range(f) ¥incin s)) ¥imp (sigma_thryvar(f) = sigma_thryvar(f - {c}) ¥PLUZ cdr(c))) -- (FORALL f, t | (Finite(f) & Is_map(f) & (range(f) ¥incin s)) ¥imp (sigma_thryvar(f) = (sigma_thryvar(f ¥ON (domain(f) * t)) ¥PLUZ sigma_thryvar(f ¥ON (domain(f) - t))))) -- (FORALL f in OM, g | (Finite(f) & Svm(f) & Svm(g) & (domain(f) = domain(g)) & (range(f) ¥incin s)) ¥imp (sigma_thryvar(f) = sigma_thryvar({[y,sigma_thryvar(f ¥ON (g ¥INV_IM {y}))]: y in range(g)}))) -- (FORALL f in OM, g | (Finite(f) & Svm(f) & one_1_map(g) & (domain(f) = domain(g)) & (range(f) ¥incin s)) ¥imp (sigma_thryvar(f) = sigma_thryvar({[y,f~[inv(g)~[y]]]: y in range(g)}))) --END sigma_theory; -- -- ************************************************************************************************ -- Section 11: Equivalence relationships and Classes; Linear orderings -- ************************************************************************************************ -- -- Next we introduce another tool used constantly, the theory of equivalence classes, -- which tells us that a two-variable predicate $R(x,y)$ on a set $s$ can be represented in the form -- $f(x) = f(y)$ using a one-variable auxiliary function $f$ if and only if $P$ is transitive and reflexive. -- Since it is obvious that any relationship of the form $f(x) = f(y)$ must be transitive and reflexive, -- we need only consider the converse. To construct the mapping $f$, we decompose the domain of $P$ -- into 'equivalence classes', namely the collection of all sets each containing all elements $x$ such that -- $R(x,y)$ holds for a given $y$, and then simply map each $x$ into the equivalence class to which it belongs. -- THEORY equivalence_classes(R(x,y),s) [Theory of equivalence classes] (FORALL x in s,y in s | (R(x,y) ¥eq R(y,x)) & R(x,x)) (FORALL x in s,y in s,z in s | ((R(x,y) & R(y,z)) ¥imp R(x,z))) END equivalence_classes; -- ENTER_THEORY equivalence_classes -- -- The formal definitions of the notions described just above are as follows. -- The first definition is that of the equivalence class to which a given element of $s$ belongs, -- and the second is that of the collection of all equivalence classes. -- Def equivalence_classes.0a: [The equivalence class of an element $X$] f1_thryvar(x) := {z in s | R(x,z)} Def equivalence_classes.0b: [The set of all equivalence classes formed by partitioning] Eqc_thryvar := {f1_thryvar(x): x in s} -- -- We now show that, as promised, the transitive relationship $R(x,y)$ is equivalent to $f1_thryvar(x) = f1_thryvar(y)$. -- Theorem equivalence_classes1: [Elements are equivalent if and only if their equivalence classes are equal] ((X in s) & (Y in s)) ¥imp (R(X,Y) ¥eq (f1_thryvar(X) = f1_thryvar(Y))). Proof: Suppose_not(x,y) ==> (x in s) & (y in s) & (not(R(x,y) ¥eq (f1_thryvar(x) = f1_thryvar(y)))) -- -- For if $R(x,y)$ is true, then since $P$ is a transitive relation any w satisfying $R(x,w)$ -- must also satisfy $R(x,w)$ and so by definition we must have $f1_thryvar(x) = f1_thryvar(y)$. -- Suppose ==> R(x,y) & (f1_thryvar(x) /= f1_thryvar(y)) Use_def(f1_thryvar) ==> Stat1: {z in s | R(x,z)} /= {z in s | R(y,z)} c-->Stat1 ==> (c in s) & ((R(x,c) & (not R(y,c))) or ((not R(x,c)) & R(y,c))) Assump ==> Stat2: (FORALL u in s, v in s | (R(u,v) ¥eq R(v,u)) & R(u,u)) Assump ==> Stat3: (FORALL u in s,v in s,w in s | ((R(u,v) & R(v,w)) ¥imp R(u,w))) Suppose ==> R(x,c) & (not R(y,c)) (x,y)-->Stat2 ==> R(y,x) (y,x,c)-->Stat3 ==> false; Discharge ==> (not R(x,c)) & R(y,c) (x,y,c)-->Stat3 ==> false; Discharge ==> (not R(x,y)) & (f1_thryvar(x) = f1_thryvar(y)) -- -- Conversely if $f1_thryvar(x) = f1_thryvar(y)$ is true, then since $x$ plainly belongs to -- $f1_thryvar(x)$, it must also belong to $f1_thryvar(y)$, and so by definition we must have -- $R(x,y)$, thereby completing the proof of our theorem. -- Use_def(f1_thryvar) ==> {z in s | R(x,z)} = {z in s | R(y,z)} Suppose ==> Stat4: y notin {z in s | R(y,z)} ()-->Stat4 ==> not R(y,y) (y,y)-->Stat2 ==> false; Discharge ==> Stat5: y in {z in s | R(x,z)} ()-->Stat5 ==> false; Discharge ==> QED -- -- Next we prove the elementary facts that $f1_thryvar$ maps elements of $s$ into elements of the -- equivalence class set $Eqc_thryvar$, and that for each equivalence class $y$, $arb(y)$ is -- a member of $s$ whose equivalence class is $y$. -- Theorem equivalence_classes2: [The equivalence class of any element is an equivalence class] (X in s) ¥imp (f1_thryvar(X) in Eqc_thryvar). Proof: Suppose_not(x) ==> (x in s) & (f1_thryvar(x) notin Eqc_thryvar) -- -- -- Use_def(Eqc_thryvar) ==> (x in s) & Stat1: (f1_thryvar(x) notin {f1_thryvar(x): x in s}) x-->Stat1 ==> false; Discharge ==> QED -- Theorem equivalence_classes2b: [Any element of an equivalence class can represent the class] ((X in Eqc_thryvar) ¥imp ((arb(X) in s) & (f1_thryvar(arb(X)) = X))). Proof: Suppose_not(y) ==> (y in Eqc_thryvar) & ((arb(y) notin s) or f1_thryvar(arb(y)) /= y) Use_def(Eqc_thryvar) ==> Stat1: y in {f1_thryvar(x): x in s} c-->Stat1 ==> (y = f1_thryvar(c)) & (c in s) Use_def(f1_thryvar) ==> f1_thryvar(c) = {wz in s | R(c,wz)} Suppose ==> c notin f1_thryvar(c) ELEM ==> Stat2: c notin {wz in s | R(c,wz)} Assump ==> Stat3: (FORALL x in s,y in s | (R(x,y) ¥eq R(y,x)) & R(x,x)) & Stat4: (FORALL x in s,y in s,z in s | ((R(x,y) & R(y,z)) ¥imp R(x,z))) c-->Stat2 ==> not R(c,c) (c,c)-->Stat3 ==> false; Discharge ==> c in f1_thryvar(c) ELEM ==> f1_thryvar(c) /= 0 (f1_thryvar(c))-->T0 ==> arb(f1_thryvar(c)) in f1_thryvar(c) Use_def(f1_thryvar) ==> arb(f1_thryvar(c)) in {wz in s | R(c,wz)} EQUAL ==> Stat5: arb(y) in {wz in s | R(c,wz)} ()-->Stat5 ==> (arb(y) in s) & R(c,arb(y)) ELEM ==> f1_thryvar(arb(y)) /= f1_thryvar(c) Use_def(f1_thryvar) ==> Stat6: {wz in s | R(arb(y),wz)} /= {wz in s | R(c,wz)} d-->Stat6 ==> (d in s) & ((R(arb(y),d) & (not R(c,d))) or (not(R(arb(y),d)) & R(c,d))) Suppose ==> R(arb(y),d) & (not R(c,d)) (c,arb(y),d)-->Stat4 ==> false; Discharge ==> (not R(arb(y),d)) & R(c,d) (arb(y),c)-->Stat3 ==> R(arb(y),c) (arb(y),c,d)-->Stat4 ==> false; Discharge ==> QED -- Our next, quite trivial result rounds out the previous theorem by proving that $arb(f1_thryvar(x))$ -- is equivalent to $x$ for any $x in s$. -- Theorem equivalence_classes3: [Any two elements of an equivalence class are equivalent] (X in s) ¥imp R(x,arb(f1_thryvar(x))). Proof: Suppose_not(u) ==> (u in s) & (not R(u,arb(f1_thryvar(u)))) u-->Tequivalence_classes2 ==> f1_thryvar(u) in Eqc_thryvar (f1_thryvar(u))-->Tequivalence_classes2b ==> (arb(f1_thryvar(u)) in s) & (f1_thryvar(arb(f1_thryvar(u))) = f1_thryvar(u)) (u,s,arb(f1_thryvar(u)))-->Tequivalence_classes1 ==> R(u,arb(f1_thryvar(u))) Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY equivalence_classes -- --THEORY equivalence_classes(R(x,y),s) [Theory of equivalence classes] -- (FORALL x in s, y in s | (R(x,y) ¥eq R(y,x)) & R(x,x)) -- (FORALL x in s, y in s, z in s | ((R(x,y) & R(y,z)) ¥imp R(x,z))) --==>(f1_thryvar,Eqc_thryvar) -- (FORALL x in s | f1_thryvar(x) in Eqc_thryvar) & (FORALL y in Eqc_thryvar | (arb(y) in s) & (f1_thryvar(arb(y)) = y)) -- (FORALL x in s, y in s | R(x,y) ¥eq (f1_thryvar(x) = f1_thryvar(y))) -- (FORALL x in s | R(x,arb(f1_thryvar(x)))) --END equivalence_classes; -- -- Next we introduce another tool used constantly, the theory of strict linear orderings. -- This tells us that any transitive and irreflexive two-argument ordering predicate -- on a set $s$ induces various other useful -- predicates and operations, including a maximum operation over every finite subset of $s$. -- THEORY linear_order(s0,arg1_bef_arg2(X,Y)) (FORALL x in s0, y in s0, z in s0 | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) ¥imp arg1_bef_arg2(x,z)) (FORALL x in s0 | not(arg1_bef_arg2(x,x))) (FORALL x in s0, y in s0 | arg1_bef_arg2(x,y) or (x = y) or arg1_bef_arg2(y,x)) END linear_order -- ENTER_THEORY linear_order -- Def 10030: [Less-than-or-equal comparison] Def(X ¥le_thryvar Y) := (arg1_bef_arg2(X,Y) or (X = Y)) -- -- The following easy theorem shows that, like the 'strict' order relationship $arg1_bef_arg2$ -- originally given, the 'less-than-or-equal' relation which $arg1_bef_arg2$ defines is transitive. -- Theorem linear_order_1: (({U,V,W} ¥incin s0) & (U ¥le_thryvar V) & (V ¥le_thryvar W)) ¥imp (U ¥le_thryvar W). Proof: Suppose_not(x,y,z) ==> ({x,y,z} ¥incin s0) & (x ¥le_thryvar y) & (y ¥le_thryvar z) & (not (x ¥le_thryvar z)) Use_def(¥le_thryvar) ==> (arg1_bef_arg2(x,y) or (x = y)) & (arg1_bef_arg2(y,z) or (y = z)) & (not(arg1_bef_arg2(x,z) or (x = z))) Suppose ==> (x = y) & (y = z) Discharge ==> (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) or (arg1_bef_arg2(x,y) & (y = z)) or ((x = y) & arg1_bef_arg2(y,z)) Suppose ==> arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z) Assump ==> Stat1: (FORALL x in s0, y in s0, z in s0 | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) ¥imp arg1_bef_arg2(x,z)) (x,y,z)-->Stat1 ==> false; Discharge ==> (arg1_bef_arg2(x,y) & (y = z)) or ((x = y) & arg1_bef_arg2(y,z)) Suppose ==> arg1_bef_arg2(x,y) & (y = z) EQUAL ==> false; Discharge ==> ((x = y) & arg1_bef_arg2(y,z)) EQUAL ==> false; Discharge ==> QED -- -- The irreflexivity property of the strict order $arg1_bef_arg2$ implies the -- following property of its associated 'less-than-or-equal' relation. -- Theorem linear_order_2: (({U,V} ¥incin s0) & (U ¥le_thryvar V) & (V ¥le_thryvar U)) ¥imp (U = V). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin s0) & (x ¥le_thryvar y) & (y ¥le_thryvar x) & (x /= y) Use_def(¥le_thryvar) ==> arg1_bef_arg2(x,y) & arg1_bef_arg2(y,x) Assump ==> Stat1: (FORALL x in s0, y in s0, z in s0 | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) ¥imp arg1_bef_arg2(x,z)) (x,y,x)-->Stat1 ==> arg1_bef_arg2(x,x) Assump ==> Stat2: (FORALL x in s0 | not(arg1_bef_arg2(x,x))) x-->Stat2 ==> false; Discharge ==> QED -- -- The following operation $smaller_thryvar$ extends the choice of the smaller element of a pair to the universe -- of all sets by taking $s0$ itself as the value of smallest element for pairs one of whose elements is not in s0. -- Def 10031: [Choice of the smaller] smaller_thryvar(X,Y) := if ((X notin s0) & (Y notin s0)) then s0 elseif (X notin s0) then Y elseif (Y notin s0) then X elseif arg1_bef_arg2(X,Y) then X else Y end if -- -- The operation which chooses the smaller of its two arguments is commutative: -- Theorem linear_order_3: smaller_thryvar(X,Y) = smaller_thryvar(Y,X). Proof: Suppose_not(x,y) ==> Stat1: smaller_thryvar(x,y) /= smaller_thryvar(y,x) Suppose ==> not((x in s0) & (y in s0)) Use_def(smaller_thryvar) ==> false; Discharge ==> Stat2: (x in s0) & (y in s0) Assump ==> Stat3: (FORALL x in s0, y in s0 | arg1_bef_arg2(x,y) or (x = y) or arg1_bef_arg2(y,x)) (x,y)-->Stat3(Stat2*) ==> arg1_bef_arg2(x,y) or (x = y) or arg1_bef_arg2(y,x) Suppose ==> Stat4: arg1_bef_arg2(x,y) & arg1_bef_arg2(y,x) Assump ==> Stat5: (FORALL x in s0, y in s0, z in s0 | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) ¥imp arg1_bef_arg2(x,z)) (x,y,x)-->Stat5(Stat2,Stat4*) ==> Stat6: arg1_bef_arg2(x,x) Assump ==> Stat7: (FORALL x in s0 | not(arg1_bef_arg2(x,x))) x-->Stat7(Stat2,Stat4,Stat6*) ==> false; Discharge ==> Stat8: not(arg1_bef_arg2(x,y) & arg1_bef_arg2(y,x)) Suppose ==> Stat9: x = y EQUAL(Stat1,Stat9*) ==> false; Discharge ==> Stat10: arg1_bef_arg2(x,y) or arg1_bef_arg2(y,x) Suppose ==> Stat11: arg1_bef_arg2(x,y) Use_def(smaller_thryvar) ==> false; Discharge ==> Stat12: arg1_bef_arg2(y,x) Use_def(smaller_thryvar) ==> false; Discharge ==> QED -- -- Our assumptions concerning the strict order $arg1_bef_arg2$ also imply the -- following familiar property of the associated 'less-than-or-equal' relation, i.e. -- given any two elements of the domain $s0$, at least one one must be no larger than the other. -- Theorem linear_order_4: ({U,V} ¥incin s0) ¥imp ((U ¥le_thryvar V) or (V ¥le_thryvar U)). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin s0) & (not (x ¥le_thryvar y)) & (not (y ¥le_thryvar x)) Use_def(¥le_thryvar) ==> (x /= y) & (not arg1_bef_arg2(x,y)) & (not arg1_bef_arg2(y,x)) Assump ==> Stat1: (FORALL x in s0, y in s0 | arg1_bef_arg2(x,y) or (x = y) or arg1_bef_arg2(y,x)) (x,y)-->Stat1 ==> false; Discharge ==> QED -- -- The following theorem extends this last assertion to three elements: -- of any three elements in $s0$, one is smallest. -- Theorem linear_order_5: ({U,V,W} ¥incin s0) ¥imp (((U ¥le_thryvar V) & (U ¥le_thryvar W)) or ((V ¥le_thryvar U) & (V ¥le_thryvar W)) or ((W ¥le_thryvar U) & (W ¥le_thryvar V))). Proof: Suppose_not(x,y,z) ==> Stat1: ({x,y,z} ¥incin s0) & (not ((x ¥le_thryvar y) & (x ¥le_thryvar z))) & (not ((y ¥le_thryvar x) & (y ¥le_thryvar z))) & (not ((z ¥le_thryvar x) & (z ¥le_thryvar y))) (x,y)-->Tlinear_order_4 ==> (x ¥le_thryvar y) or (y ¥le_thryvar x) (y,z)-->Tlinear_order_4 ==> (y ¥le_thryvar z) or (z ¥le_thryvar y) (x,z)-->Tlinear_order_4 ==> (x ¥le_thryvar z) or (z ¥le_thryvar x) Suppose ==> Stat2: (x ¥le_thryvar y) & (y ¥le_thryvar z) (x,y,z)-->Tlinear_order_1(Stat1,Stat2) ==> false; Discharge ==> (y ¥le_thryvar x) & (z ¥le_thryvar y) (z,y,x)-->Tlinear_order_1 ==> false; Discharge ==> QED -- -- Every two-element subset of $s0$ is closed with respect to the operation which -- chooses the smaller of its two arguments: -- Theorem linear_order_6: ({X,Y} ¥incin s0) ¥imp (smaller_thryvar(X,Y) in {X,Y}). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin s0) & (smaller_thryvar(x,y) notin {x,y}) Use_def(smaller_thryvar) ==> smaller_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_bef_arg2(x,y) then x else y end if Discharge ==> QED -- -- When $x,y$ are elements of $s0$ such that $x$ is -- less than or equal to $y$, is $x$, the smaller is $x$: -- Theorem linear_order_7: (({X,Y} ¥incin s0) & (arg1_bef_arg2(X,Y) or (X = Y))) ¥imp ((smaller_thryvar(X,Y) = X) & (smaller_thryvar(Y,X) = X)). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin s0) & (arg1_bef_arg2(x,y) or (x = y)) & ((smaller_thryvar(x,y) /= x) or (smaller_thryvar(y,x) /= x)) (x,y)-->Tlinear_order_3 ==> Stat1: (x in s0) & (y in s0) & (smaller_thryvar(x,y) /= x) Suppose ==> arg1_bef_arg2(x,y) Use_def(smaller_thryvar) ==> smaller_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_bef_arg2(x,y) then x else y end if (Stat1)Discharge ==> x = y (x,y)-->Tlinear_order_6(Stat1) ==> false; Discharge ==> QED -- -- The set $s0$, which we have taken as the conventional minimum, acts as -- the unit element of the operation which chooses the smaller of its two -- arguments: -- Theorem linear_order_8: (X in next(s0)) ¥imp (smaller_thryvar(X,s0) = X). Proof: Suppose_not(x) ==> AUTO Suppose ==> x in s0 Use_def(smaller_thryvar) ==> false; Discharge ==> x notin s0 Use_def(next) ==> Stat1: (x = s0) & (smaller_thryvar(x,s0) /= x) Use_def(smaller_thryvar)(Stat1*) ==> false; Discharge ==> QED -- -- The operation which chooses the smaller of its two arguments is associative: -- Theorem linear_order_9: smaller_thryvar(X,smaller_thryvar(Y,W)) = smaller_thryvar(smaller_thryvar(X,Y),W). Proof: Suppose_not(x,y,w) ==> smaller_thryvar(x,smaller_thryvar(y,w)) /= smaller_thryvar(smaller_thryvar(x,y),w) -- -- For it is easily seen that all three elements $x,y,w$ of a counterexample belong to $s0$;... -- Suppose ==> (x notin s0) & (y notin s0) & (w notin s0) TELEM ==> s0 notin s0 Use_def(smaller_thryvar) ==> smaller_thryvar(y,w) = s0 Use_def(smaller_thryvar) ==> smaller_thryvar(x,y) = s0 Use_def(smaller_thryvar) ==> smaller_thryvar(x,s0) = s0 Use_def(smaller_thryvar) ==> smaller_thryvar(s0,w) = s0 EQUAL ==> false; Discharge ==> Stat1: (x in s0) or (y in s0) or (w in s0) Suppose ==> Stat2: (x notin s0) & (w notin s0) (Stat1*)ELEM ==> (y in s0) Use_def(smaller_thryvar) ==> (smaller_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_bef_arg2(x,y) then x else y end if) & (smaller_thryvar(y,w) = if ((y notin s0) & (w notin s0)) then s0 elseif (y notin s0) then w elseif (w notin s0) then y elseif arg1_bef_arg2(y,w) then y else w end if) (Stat2*)ELEM ==> (smaller_thryvar(x,y) = y) & (smaller_thryvar(y,w) = y) EQUAL ==> false; Discharge ==> Stat3: (x in s0) or (w in s0) Suppose ==> Stat4: (y notin s0) & (w notin s0) (Stat3*)ELEM ==> Stat5: (x in s0) & (s0 notin s0) Use_def(smaller_thryvar) ==> (smaller_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_bef_arg2(x,y) then x else y end if) & (smaller_thryvar(x,w) = if ((x notin s0) & (w notin s0)) then s0 elseif (x notin s0) then w elseif (w notin s0) then x elseif arg1_bef_arg2(x,w) then x else w end if) (Stat4*)ELEM ==> (smaller_thryvar(x,y) = x) & (smaller_thryvar(x,w) = x) Use_def(smaller_thryvar) ==> Stat6: (smaller_thryvar(x,s0) = if ((x notin s0) & (s0 notin s0)) then s0 elseif (x notin s0) then s0 elseif (s0 notin s0) then x elseif arg1_bef_arg2(x,s0) then x else s0 end if) (Stat5,Stat6*)ELEM ==> (smaller_thryvar(x,s0) = x) Use_def(smaller_thryvar) ==> smaller_thryvar(y,w) = s0 EQUAL ==> false; Discharge ==> Stat7: (y in s0) or (w in s0) Suppose ==> Stat8: (x notin s0) & (y notin s0) (Stat7*)ELEM ==> Stat9: (w in s0) & (s0 notin s0) Use_def(smaller_thryvar) ==> (smaller_thryvar(y,w) = if ((y notin s0) & (w notin s0)) then s0 elseif (y notin s0) then w elseif (w notin s0) then y elseif arg1_bef_arg2(y,w) then y else w end if) & (smaller_thryvar(x,w) = if ((x notin s0) & (w notin s0)) then s0 elseif (x notin s0) then w elseif (w notin s0) then x elseif arg1_bef_arg2(x,w) then x else w end if) (Stat8*)ELEM ==> (smaller_thryvar(y,w) = w) & (smaller_thryvar(x,w) = w) Use_def(smaller_thryvar) ==> Stat10: (smaller_thryvar(s0,w) = if ((s0 notin s0) & (w notin s0)) then s0 elseif (s0 notin s0) then w elseif (w notin s0) then s0 elseif arg1_bef_arg2(s0,w) then s0 else w end if) (Stat9,Stat10*)ELEM ==> (smaller_thryvar(s0,w) = w) Use_def(smaller_thryvar) ==> smaller_thryvar(x,y) = s0 EQUAL ==> false; Discharge ==> Stat11: (x in s0) or (y in s0) Suppose ==> Stat12: w notin s0 (Stat3,Stat7,Stat12*)ELEM ==> (x in s0) & (y in s0) Use_def(smaller_thryvar) ==> (smaller_thryvar(y,w) = if ((y notin s0) & (w notin s0)) then s0 elseif (y notin s0) then w elseif (w notin s0) then y elseif arg1_bef_arg2(y,w) then y else w end if) & (smaller_thryvar(smaller_thryvar(x,y),w) = if ((smaller_thryvar(x,y) notin s0) & (w notin s0)) then s0 elseif (smaller_thryvar(x,y) notin s0) then w elseif (w notin s0) then smaller_thryvar(x,y) elseif arg1_bef_arg2(smaller_thryvar(x,y),w) then smaller_thryvar(x,y) else w end if) (x,y)-->Tlinear_order_6(Stat12*) ==> smaller_thryvar(x,y) in s0 (Stat12*)ELEM ==> (smaller_thryvar(smaller_thryvar(x,y),w) = smaller_thryvar(x,y)) & (smaller_thryvar(y,w) = y) EQUAL ==> false; Discharge ==> Stat13: w in s0 Suppose ==> Stat14: x notin s0 (Stat3,Stat11,Stat14*)ELEM ==> (y in s0) & (w in s0) Use_def(smaller_thryvar) ==> (smaller_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_bef_arg2(x,y) then x else y end if) & (smaller_thryvar(x,smaller_thryvar(y,w)) = if ((x notin s0) & (smaller_thryvar(y,w) notin s0)) then s0 elseif (x notin s0) then smaller_thryvar(y,w) elseif (smaller_thryvar(y,w) notin s0) then x elseif arg1_bef_arg2(x,smaller_thryvar(y,w)) then x else smaller_thryvar(y,w) end if) (y,w)-->Tlinear_order_6(Stat14*) ==> smaller_thryvar(y,w) in s0 (Stat14*)ELEM ==> (smaller_thryvar(x,smaller_thryvar(y,w)) = smaller_thryvar(y,w)) & (smaller_thryvar(x,y) = y) EQUAL ==> false; Discharge ==> Stat15: x in s0 Suppose ==> Stat16: y notin s0 (Stat11,Stat7,Stat16*)ELEM ==> (x in s0) & (w in s0) Use_def(smaller_thryvar) ==> (smaller_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_bef_arg2(x,y) then x else y end if) & (smaller_thryvar(y,w) = if ((y notin s0) & (w notin s0)) then s0 elseif (y notin s0) then w elseif (w notin s0) then y elseif arg1_bef_arg2(y,w) then y else w end if) (Stat16*)ELEM ==> (smaller_thryvar(x,y) = x) & (smaller_thryvar(y,w) = w) EQUAL ==> false; Discharge ==> Stat17: y in s0 -- (Stat13,Stat15,Stat17*)ELEM ==> Stat18: (x in s0) & (y in s0) & (w in s0) -- -- ... but then we easily reach a contradiction no matter which of the three is smallest, -- thereby deriving our desired conclusion. -- (x,y,w)-->Tlinear_order_5(Stat13,Stat15,Stat17*) ==> ((x ¥le_thryvar y) & (x ¥le_thryvar w)) or ((y ¥le_thryvar x) & (y ¥le_thryvar w)) or ((w ¥le_thryvar x) & (w ¥le_thryvar y)) Suppose ==> (x ¥le_thryvar y) & (x ¥le_thryvar w) Use_def(¥le_thryvar) ==> Stat19: (arg1_bef_arg2(x,y) or (x = y)) Use_def(¥le_thryvar) ==> Stat20: (arg1_bef_arg2(x,w) or (x = w)) (x,y)-->Tlinear_order_7(Stat15,Stat17,Stat19*) ==> smaller_thryvar(x,y) = x (x,w)-->Tlinear_order_7(Stat15,Stat13,Stat20*) ==> smaller_thryvar(x,w) = x (y,w)-->Tlinear_order_6(Stat17,Stat13*) ==> smaller_thryvar(y,w) in {y,w} Suppose ==> smaller_thryvar(y,w) = y EQUAL ==> false; Discharge ==> smaller_thryvar(y,w) = w EQUAL ==> false; Discharge ==> ((y ¥le_thryvar x) & (y ¥le_thryvar w)) or ((w ¥le_thryvar x) & (w ¥le_thryvar y)) Suppose ==> (y ¥le_thryvar x) & (y ¥le_thryvar w) Use_def(¥le_thryvar) ==> Stat21: (arg1_bef_arg2(y,x) or (y = x)) Use_def(¥le_thryvar) ==> Stat22: (arg1_bef_arg2(y,w) or (y = w)) (y,x)-->Tlinear_order_7(Stat15,Stat17,Stat21*) ==> smaller_thryvar(x,y) = y (y,w)-->Tlinear_order_7(Stat17,Stat13,Stat22*) ==> smaller_thryvar(y,w) = y EQUAL ==> false; Discharge ==> (w ¥le_thryvar x) & (w ¥le_thryvar y) Use_def(¥le_thryvar) ==> Stat23: (arg1_bef_arg2(w,x) or (w = x)) Use_def(¥le_thryvar) ==> Stat24: (arg1_bef_arg2(w,y) or (w = y)) (w,y)-->Tlinear_order_7(Stat17,Stat13,Stat24*) ==> smaller_thryvar(y,w) = w (w,x)-->Tlinear_order_7(Stat15,Stat13,Stat23*) ==> smaller_thryvar(x,w) = w (x,y)-->Tlinear_order_6(Stat17,Stat15*) ==> smaller_thryvar(x,y) in {x,y} Suppose ==> smaller_thryvar(x,y) = x EQUAL ==> false; Discharge ==> smaller_thryvar(x,y) = y EQUAL ==> false; Discharge ==> QED -- -- The set $s0 + {s0}$ is closed with respect to the operation which -- chooses the smaller of its two arguments: -- Theorem linear_order_10: ((X in next(s0)) & (Y in next(s0))) ¥imp (smaller_thryvar(X,Y) in next(s0)). Proof: Suppose_not(x,y) ==> AUTO Use_def(next) ==> (x in (s0 + {s0})) & (y in (s0 + {s0})) & (smaller_thryvar(x,y) notin (s0 + {s0})) Suppose ==> (x = s0) or (y = s0) Use_def(smaller_thryvar) ==> false; Discharge ==> (x in s0) & (y in s0) (x,y)-->Tlinear_order_6 ==> false; Discharge ==> QED -- -- -- Theorem linear_order_11: (s0 in next(s0)) & (FORALL x,y,z | ((x in next(s0)) & (y in next(s0)) & (z in next(s0))) ¥imp (smaller_thryvar(x,smaller_thryvar(y,z)) = smaller_thryvar(smaller_thryvar(x,y),z))) & (FORALL x,y | ((x in next(s0)) & (y in next(s0))) ¥imp (smaller_thryvar(x,y) = smaller_thryvar(y,x))). Proof: Suppose_not ==> AUTO Use_def(next) ==> s0 in next(s0) Suppose ==> Stat1: not(FORALL x,y | ((x in next(s0)) & (y in next(s0))) ¥imp (smaller_thryvar(x,y) = smaller_thryvar(y,x))) (x0,y0)-->Stat1(Stat1*) ==> smaller_thryvar(x0,y0) /= smaller_thryvar(y0,x0) (x0,y0)-->Tlinear_order_3 ==> false; Discharge ==> Stat2: not(FORALL x,y,z | ((x in next(s0)) & (y in next(s0)) & (z in next(s0))) ¥imp (smaller_thryvar(x,smaller_thryvar(y,z)) = smaller_thryvar(smaller_thryvar(x,y),z))) (x,y,w)-->Stat2 ==> smaller_thryvar(x,smaller_thryvar(y,w)) /= smaller_thryvar(smaller_thryvar(x,y),w) (x,y,w)-->Tlinear_order_9 ==> false; Discharge ==> QED -- -- We have now derived all that is necessary to apply our general 'theory of Sigma' to the binary operation $smaller_thryvar$. -- Doing so, we can conclude immediately that the $smaller_thryvar$ operation extends to an operator $min_over_thryvar$ -- defined on all finite mappings with values in the linearly ordered set $next(s0)$, and that this -- operation maps every subset of $s0$ into an element of $s0$. -- APPLY(sigma_thryvar:min_over_thryvar) sigma_theory(s->next(s0),pluz(i,j)->smaller_thryvar(i,j),e->s0) ==> Theorem linear_order_12: (FORALL f | (Finite(f) & (range(f) ¥incin next(s0))) ¥imp (min_over_thryvar(f) in next(s0))) & (FORALL x | (cdr(x) in next(s0)) ¥imp (min_over_thryvar({x}) = cdr(x))) & (FORALL f,t | (Finite(f) & Is_map(f) & (range(f) ¥incin next(s0))) ¥imp (min_over_thryvar(f) = smaller_thryvar(min_over_thryvar(f ¥ON (domain(f) * t)),min_over_thryvar(f ¥ON (domain(f) - t))))) & (FORALL c,f | ((c in f) & Finite(f) & (range(f) ¥incin next(s0))) ¥imp (min_over_thryvar(f) = smaller_thryvar(min_over_thryvar(f - {c}),cdr(c)))) -- Theorem linear_order_13: (Svm(F) & (range(F) ¥incin s0) & Finite(F)) ¥imp (((P in F) ¥imp (min_over_thryvar({P}) = (F~[car(P)]))) & (min_over_thryvar(F) = smaller_thryvar(min_over_thryvar(F ¥ON (domain(F) * A)),min_over_thryvar(F ¥ON (domain(F) - A))))). Proof: Suppose_not(f,p,a) ==> AUTO Use_def(next) ==> Stat1: Svm(f) & (range(f) ¥incin next(s0)) & Finite(f) Tlinear_order_12 ==> Stat2: (FORALL x | (cdr(x) in next(s0)) ¥imp (min_over_thryvar({x}) = cdr(x))) & Stat3: (FORALL f,a | (Finite(f) & Is_map(f) & (range(f) ¥incin next(s0))) ¥imp (min_over_thryvar(f) = smaller_thryvar(min_over_thryvar(f ¥ON (domain(f) * a)),min_over_thryvar(f ¥ON (domain(f) - a))))) Use_def(Svm) ==> Is_map(f) Suppose ==> Stat4: not((p in f) ¥imp (min_over_thryvar({p}) = (f~[car(p)]))) (p,f)-->T61(Stat4,Stat1*) ==> cdr(p) in next(s0) p-->Stat2(Stat4*) ==> min_over_thryvar({p}) = cdr(p) (f,p)-->T74(Stat1,Stat4*) ==> cdr(p) = (f~[car(p)]) (Stat4*)Discharge ==> min_over_thryvar(f) /= smaller_thryvar(min_over_thryvar(f ¥ON (domain(f) * a)),min_over_thryvar(f ¥ON (domain(f) - a))) (f,a)-->Stat3(Stat1*) ==> false; Discharge ==> QED -- -- We can sharpen the preceding theorem by asserting that for each non-null finite mapping $f$ to which -- it applies, $min_over_thryvar$ is actually a member of $range(f)$. -- Theorem linear_order_14: (Svm(F) & (range(F) ¥incin s0) & Finite(F) & (F /= 0)) ¥imp (min_over_thryvar(F) in range(F)). Proof: Suppose_not(f1) ==> AUTO -- -- Reasoning by contradiction, let us assume that a -- counterexample $f$ to the statement of this theorem exists. -- Without loss of generality, we may assume that $f$ -- is inclusion-minimal among the counterexamples. -- APPLY(m1_thryvar:f) finite_induction(n->f1,P(f)->(Svm(f) & (range(f) ¥incin s0) & Finite(f) & (f /= 0) & (min_over_thryvar(f) notin range(f)))) ==> Stat1: (Svm(f) & (range(f) ¥incin s0) & Finite(f) & (f /= 0) & (min_over_thryvar(f) notin range(f))) & Stat2: (FORALL k ¥incin f | (k /= f) ¥imp (not(Svm(k) & (range(k) ¥incin s0) & Finite(k) & (k /= 0) & (min_over_thryvar(k) notin range(k))))) (arb(f),f)-->T61(Stat1) ==> Stat3: (arb(f) in f) & (cdr(arb(f)) in range(f)) (f,arb(f))-->T74(Stat1*) ==> (f~[car(arb(f))]) in range(f) -- -- By recourse to the Theorem linear_order_13, we easily discard the possibility that -- $f$ is singleton; but then, if we remove from $f$ its element $arb(f)$, we get a -- mapping whose $min_over_thryvar$ is, by the assumed minimality of $min_over_thryvar$, -- a member of $range(f)$. For $f$, the operation $min_over_thryvar$ yields the value -- $smaller_thryvar(min_over_thryvar(f - arb(f)),cdr(arb(f)))$ -- which, being the smaller of two members of $range(f)$, will coincide with one of the two, -- and hence must belong to $range(f)$ in its turn. This conflicts with the initial hypothesis, -- a contradiction which leads us to the desired conclusion. -- Suppose ==> f = {arb(f)} --? (f,arb(f))-->Tlinear_order_13(Stat1*) ==> min_over_thryvar({arb(f)}) = (f~[car(arb(f))]) (f,s0,arb(f))-->Tlinear_order_13(Stat1*) ==> min_over_thryvar({arb(f)}) = (f~[car(arb(f))]) EQUAL(Stat1) ==> false; Discharge ==> (f - {arb(f)}) /= 0 Use_def(next)(Stat1*) ==> range(f) ¥incin next(s0) Tlinear_order_12(Stat1*) ==> Stat4: (FORALL c,f | ((c in f) & Finite(f) & (range(f) ¥incin next(s0))) ¥imp (min_over_thryvar(f) = smaller_thryvar(min_over_thryvar(f - {c}),cdr(c)))) (arb(f),f)-->Stat4(Stat1*) ==> Stat5: min_over_thryvar(f) = smaller_thryvar(min_over_thryvar(f - {arb(f)}),cdr(arb(f))) (f - {arb(f)})-->Stat2(Stat1*) ==> Stat6: not(Svm(f - {arb(f)}) & (range(f - {arb(f)}) ¥incin s0) & Finite(f - {arb(f)}) & (min_over_thryvar(f - {arb(f)}) notin range(f - {arb(f)}))) (f - {arb(f)},f)-->T53(Stat1,Stat6*) ==> Stat7: not((range(f - {arb(f)}) ¥incin s0) & Finite(f - {arb(f)}) & (min_over_thryvar(f - {arb(f)}) notin range(f - {arb(f)}))) (f - {arb(f)},f)-->T65(Stat1,Stat7*) ==> Stat8: range(f - {arb(f)}) ¥incin range(f) (f,f - {arb(f)})-->T189(Stat1,Stat7,Stat8*) ==> Stat9: min_over_thryvar(f - {arb(f)}) in range(f) (min_over_thryvar(f - {arb(f)}),cdr(arb(f)))-->Tlinear_order_6(Stat9,Stat1,Stat5,Stat3*) ==> false; Discharge ==> QED -- Theorem linear_order_15: ({X,Y} ¥incin s0) ¥imp ((smaller_thryvar(X,Y) = X) ¥eq (arg1_bef_arg2(X,Y) or (X = Y))). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin s0) & ((smaller_thryvar(x,y) /= x) ¥eq (arg1_bef_arg2(x,y) or (x = y))) Suppose ==> arg1_bef_arg2(x,y) or (x = y) (x,y)-->Tlinear_order_7 ==> false; Discharge ==> smaller_thryvar(x,y) = x Use_def(smaller_thryvar) ==> false; Discharge ==> QED -- -- The following definition of the upper bounds of a set $t$ -- takes into account only the part of $t$ which consists of elements of -- the domain $s0$ underlying the present theory. -- Def 10033: [Upper bounds] ubs_thryvar(T) := {x in s0 | (FORALL y in (T * s0) | smaller_thryvar(y,x) = y)} -- -- The maximum of a set $t$ is the upper bound of $t$ ---if any--- which -- belongs to $t$. If there is no such element, we conventionally take -- the domain $s0$ underlying the present theory as the maximum. -- Def 10034: [Maximum of a set] max_thryvar(T) := arb({s0} + (T * ubs_thryvar(T))) -- -- In a way similar to the maximum, we conventionally take the least upper -- bound of a set $t$, when none proper exists, to be $s0$. -- Def 10035: [Least upper bound of a set] lub_thryvar(T) := arb({s0} + {x in ubs_thryvar(T) | ubs_thryvar(T) ¥incin ubs_thryvar({x})}) -- -- It readily follows from the definitions that the upper bounds of $0$ -- form the entire $s0$ (which also equals the conventional maximum of $0$). -- Theorem linear_order_16: (ubs_thryvar(0) = s0) & (max_thryvar(0) = s0). Proof: Suppose_not ==> (ubs_thryvar(0) /= s0) or (max_thryvar(0) /= s0) Use_def(max_thryvar) ==> Stat1: ubs_thryvar(0) /= s0 c-->Stat1 ==> (c in ubs_thryvar(0)) ¥eq (c notin s0) Use_def(ubs_thryvar) ==> (c in {x in s0 | (FORALL y in (0 * s0) | smaller_thryvar(y,x) = y)}) ¥eq (c notin s0) Suppose ==> Stat2: c in {x in s0 | (FORALL y in (0 * s0) | smaller_thryvar(y,x) = y)} ()-->Stat2 ==> false; Discharge ==> Stat3: (c notin {x in s0 | (FORALL y in (0 * s0) | smaller_thryvar(y,x) = y)}) ()-->Stat3 ==> Stat4: not(FORALL y in (0 * s0) | smaller_thryvar(y,c) = y) y-->Stat4 ==> false; Discharge ==> QED -- -- As defined above, the set of upper bounds and the maximum of any set $t$ -- do not depend on those elements of $t$ which lie outside $s0$. -- Theorem linear_order_17: (ubs_thryvar(T) ¥incin s0) & (ubs_thryvar(T) = ubs_thryvar(T * s0)) & (max_thryvar(T) = max_thryvar(T * s0)). Proof: Suppose_not(t) ==> (not(ubs_thryvar(t) ¥incin s0)) or (ubs_thryvar(t) /= ubs_thryvar(t * s0)) or (max_thryvar(t) /= max_thryvar(t * s0)) Use_def(ubs_thryvar) ==> ubs_thryvar(t) = {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)} Suppose ==> Stat1: not({x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)} ¥incin s0) c-->Stat1 ==> (c notin s0) & Stat2: (c in {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)}) ()-->Stat2 ==> false; Discharge ==> Stat3: (ubs_thryvar(t) ¥incin s0) & ((ubs_thryvar(t) /= ubs_thryvar(t * s0)) or (max_thryvar(t) /= max_thryvar(t * s0))) Suppose ==> Stat4: ubs_thryvar(t) /= ubs_thryvar(t * s0) Use_def(ubs_thryvar) ==> {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)} /= {x in s0 | (FORALL y in ((t * s0) * s0) | smaller_thryvar(y,x) = y)} TELEM ==> t * s0 = (t * s0) * s0 EQUAL(Stat4) ==> false; Discharge ==> Stat5: (ubs_thryvar(t) = ubs_thryvar(t * s0)) & (max_thryvar(t) /= max_thryvar(t * s0)) Use_def(max_thryvar)(Stat3,Stat5) ==> (arb({s0} + (t * ubs_thryvar(t))) /= arb({s0} + ((t * s0) * ubs_thryvar(t * s0)))) & (t * ubs_thryvar(t)) = ((t * s0) * ubs_thryvar(t * s0)) EQUAL(Stat5) ==> false; Discharge ==> QED -- -- Every non-null finite subset $t$ of $s0$ is endowed with maximum. -- Such maximum belongs to $t$ and exceeds every other element of $t$. -- Theorem linear_order_18: (Finite(T) & (X in T) & (T ¥incin s0)) ¥imp ((max_thryvar(T) in T) & ((X = max_thryvar(T)) or (arg1_bef_arg2(X,max_thryvar(T))))). Proof: Suppose_not(t0,x0) ==> Stat1: Finite(t0) & (x0 in t0) & (t0 ¥incin s0) & (not((max_thryvar(t0) in t0) & ((x0 = max_thryvar(t0)) or (arg1_bef_arg2(x0,max_thryvar(t0)))))) -- -- For, if not, then we could take an inclusion-minimal $t$ for which -- an $x1$ exists violating the statement. -- Suppose ==> Stat2: (FORALL x in t0 | (max_thryvar(t0) in t0) & ((x = max_thryvar(t0)) or arg1_bef_arg2(x,max_thryvar(t0)))) x0-->Stat2 ==> false; Discharge ==> not(FORALL x in t0 | (max_thryvar(t0) in t0) & ((x = max_thryvar(t0)) or arg1_bef_arg2(x,max_thryvar(t0)))) APPLY(m1_thryvar:t) finite_induction(n->t0,P(k)->(not(FORALL x in k | (max_thryvar(k) in k) & ((x = max_thryvar(k)) or arg1_bef_arg2(x,max_thryvar(k)))))) ==> (t ¥incin t0) & Stat3: (not(FORALL x in t | (max_thryvar(t) in t) & ((x = max_thryvar(t)) or arg1_bef_arg2(x,max_thryvar(t))))) & Stat4: (FORALL k ¥incin t | ((k /= t) ¥imp (FORALL x in k | (max_thryvar(k) in k) & ((x = max_thryvar(k)) or arg1_bef_arg2(x,max_thryvar(k)))))) x1-->Stat3 ==> (x1 in t) & ((max_thryvar(t) notin t) or ((x1 /= max_thryvar(t)) and (not arg1_bef_arg2(x1,max_thryvar(t))))) ELEM ==> Stat5: (t ¥incin s0) & (x1 in t) & (x1 /= max_thryvar(t)) & ((max_thryvar(t) notin t) or (not arg1_bef_arg2(x1,max_thryvar(t)))) (t - {x1})-->Stat4(Stat5) ==> Stat6: (FORALL x in (t - {x1}) | (max_thryvar(t - {x1}) in (t - {x1})) & ((x = max_thryvar(t - {x1})) or arg1_bef_arg2(x,max_thryvar(t - {x1})))) -- -- Observe that $x1$ cannot be the sole member of $t$. This entails that -- the maximum of $t - {x1}$ belongs to $t - {x1}$ and exceeds any -- element $y$ of $t - {x1}$. -- Suppose ==> t = {x1} Suppose ==> x1 notin ubs_thryvar(t) Use_def(ubs_thryvar) ==> Stat7: x1 notin {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)} ()-->Stat7(Stat5) ==> Stat8: not(FORALL y in (t * s0) | smaller_thryvar(y,x1) = y) y1-->Stat8(Stat5) ==> Stat9: (y1 = x1) & (not(smaller_thryvar(y1,x1) = y1)) EQUAL(Stat8) ==> Stat10: not(smaller_thryvar(x1,x1) = x1) (x1,x1)-->Tlinear_order_6(Stat5,Stat10) ==> false; Discharge ==> {x1} = (t * ubs_thryvar(t)) Use_def(max_thryvar) ==> max_thryvar(t) = arb({s0} + (t * ubs_thryvar(t))) (Stat6)ELEM ==> Stat11: max_thryvar(t) = arb({s0,x1}) (Stat11,Stat5)Discharge ==> Stat12: (t - {x1}) /= 0 c-->Stat12(Stat12) ==> Stat13: c in (t - {x1}) c-->Stat6(Stat13) ==> Stat14: max_thryvar(t - {x1}) in (t - {x1}) Use_def(max_thryvar) ==> Stat15: max_thryvar(t - {x1}) = arb({s0} + ((t - {x1}) * ubs_thryvar(t - {x1}))) (Stat5,Stat14,Stat15)ELEM ==> max_thryvar(t - {x1}) in ubs_thryvar(t - {x1}) Use_def(ubs_thryvar) ==> Stat16: max_thryvar(t - {x1}) in {x in s0 | (FORALL y in ((t - {x1}) * s0) | smaller_thryvar(y,x) = y)} ()-->Stat16(Stat16) ==> Stat17: (FORALL y in ((t - {x1}) * s0) | smaller_thryvar(y,max_thryvar(t - {x1})) = y) -- -- In view of thrichotomy, we need to consider only two cases: -- either $arg1_bef_arg2(x1,max_thryvar(t))$ or $arg1_bef_arg2(max_thryvar(t),x1)$. -- Assump ==> Stat18: (FORALL x in s0, y in s0 | arg1_bef_arg2(x,y) or (x = y) or arg1_bef_arg2(y,x)) (x1,max_thryvar(t - {x1}))-->Stat18(Stat5,Stat14) ==> arg1_bef_arg2(x1,max_thryvar(t - {x1})) or arg1_bef_arg2(max_thryvar(t - {x1}),x1) Use_def(max_thryvar) ==> Stat19: max_thryvar(t) = arb({s0} + (t * ubs_thryvar(t))) -- -- Assuming that $x1$ is smaller than the maximum of $t - {x1}$, we derive -- that this maximum is also the maximum of $t$, which leads to a contradiction. -- Suppose ==> Stat20: arg1_bef_arg2(x1,max_thryvar(t - {x1})) Suppose ==> Stat21: not(FORALL y in (t * s0) | smaller_thryvar(y,max_thryvar(t - {x1})) = y) y2-->Stat21(Stat21) ==> Stat22: (y2 in (t * s0)) & (smaller_thryvar(y2,max_thryvar(t - {x1})) /= y2) Suppose ==> y2 in t - {x1} y2-->Stat17(Stat17) ==> false; Discharge ==> y2 = x1 EQUAL(Stat22) ==> Stat23: smaller_thryvar(x1,max_thryvar(t - {x1})) /= x1 Use_def(smaller_thryvar) ==> Stat24: smaller_thryvar(x1,max_thryvar(t - {x1})) = if (x1 notin s0) & (max_thryvar(t - {x1}) notin s0) then s0 elseif (x1 notin s0) then max_thryvar(t - {x1}) elseif (max_thryvar(t - {x1}) notin s0) then x1 elseif arg1_bef_arg2(x1,max_thryvar(t - {x1})) then x1 else max_thryvar(t - {x1}) end if (Stat24,Stat5,Stat14,Stat20,Stat23)Discharge ==> Stat25: (FORALL y in (t * s0) | smaller_thryvar(y,max_thryvar(t - {x1})) = y) Suppose ==> Stat26: max_thryvar(t) /= max_thryvar(t - {x1}) Suppose ==> Stat27: max_thryvar(t - {x1}) notin (t * ubs_thryvar(t)) (Stat27,Stat14)ELEM ==> max_thryvar(t - {x1}) notin ubs_thryvar(t) Use_def(ubs_thryvar) ==> Stat28: max_thryvar(t - {x1}) notin {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)} ()-->Stat28(Stat14,Stat5,Stat25) ==> false; Discharge ==> Stat29: max_thryvar(t - {x1}) in (t * ubs_thryvar(t)) Suppose ==> Stat30: max_thryvar(t) = s0 (Stat5,Stat19,Stat30)ELEM ==> max_thryvar(t - {x1}) notin (t * ubs_thryvar(t)) (Stat29)Discharge ==> max_thryvar(t) /= s0 (Stat19)ELEM ==> Stat31: max_thryvar(t) in (t * ubs_thryvar(t)) Use_def(ubs_thryvar) ==> Stat32: max_thryvar(t) in {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)} ()-->Stat32(Stat32) ==> Stat33: (FORALL y in (t * s0) | smaller_thryvar(y,max_thryvar(t)) = y) (max_thryvar(t - {x1}))-->Stat33(Stat33,Stat14,Stat5) ==> smaller_thryvar(max_thryvar(t - {x1}),max_thryvar(t)) = max_thryvar(t - {x1}) (max_thryvar(t))-->Stat25(Stat31,Stat5) ==> smaller_thryvar(max_thryvar(t),max_thryvar(t - {x1})) = max_thryvar(t) (max_thryvar(t - {x1}),max_thryvar(t))-->Tlinear_order_3(Stat26) ==> false; Discharge ==> Stat34: max_thryvar(t) = max_thryvar(t - {x1}) EQUAL ==> Stat35: arg1_bef_arg2(x1,max_thryvar(t)) (Stat34,Stat35,Stat14,Stat5)Discharge ==> Stat36: arg1_bef_arg2(max_thryvar(t - {x1}),x1) -- -- Hence the maximum of $t - {x1}$ must be smaller than $x1$, -- and therefore $x1$ turns out to be the maximum of $t$. But this leads to a contradiction too; -- hence we conclude that the desired statement holds. -- Suppose ==> Stat37: not(FORALL y in (t * s0) | smaller_thryvar(y,x1) = y) y3-->Stat37(Stat37) ==> Stat38: (y3 in t) & (smaller_thryvar(y3,x1) /= y3) (y3,x1)-->Tlinear_order_6(Stat38,Stat5) ==> smaller_thryvar(y3,x1) = x1 EQUAL(Stat38) ==> x1 /= y3 Suppose ==> Stat39: y3 in t - {x1} y3-->Stat17 ==> Stat40: smaller_thryvar(y3,max_thryvar(t - {x1})) = y3 Use_def(¥le_thryvar) ==> Stat41: (max_thryvar(t - {x1}) ¥le_thryvar x1) Use_def(smaller_thryvar) ==> Stat42: smaller_thryvar(y3,max_thryvar(t - {x1})) = if ((y3 notin s0) & (max_thryvar(t - {x1}) notin s0)) then s0 elseif (y3 notin s0) then max_thryvar(t - {x1}) elseif (max_thryvar(t - {x1}) notin s0) then y3 elseif arg1_bef_arg2(y3,max_thryvar(t - {x1})) then y3 else max_thryvar(t - {x1}) end if (Stat42,Stat39,Stat5,Stat14,Stat40)ELEM ==> arg1_bef_arg2(y3,max_thryvar(t - {x1})) or (y3 = max_thryvar(t - {x1})) Use_def(¥le_thryvar) ==> Stat43: (y3 ¥le_thryvar max_thryvar(t - {x1})) (y3,max_thryvar(t - {x1}),x1)-->Tlinear_order_1(Stat41,Stat43,Stat39,Stat5,Stat14) ==> (y3 ¥le_thryvar x1) Use_def(¥le_thryvar) ==> Stat44: arg1_bef_arg2(y3,x1) Use_def(smaller_thryvar) ==> Stat45: smaller_thryvar(y3,x1) = if ((y3 notin s0) & (x1 notin s0)) then s0 elseif (y3 notin s0) then x1 elseif (x1 notin s0) then y3 elseif arg1_bef_arg2(y3,x1) then y3 else x1 end if (Stat45,Stat39,Stat5,Stat44,Stat38)Discharge ==> y3 = x1 (Stat38)Discharge ==> Stat46: (FORALL y in (t * s0) | smaller_thryvar(y,x1) = y) Suppose ==> Stat47: max_thryvar(t) /= x1 Suppose ==> Stat48: x1 notin (t * ubs_thryvar(t)) (Stat48,Stat5)ELEM ==> x1 notin ubs_thryvar(t) Use_def(ubs_thryvar) ==> Stat49: x1 notin {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)} ()-->Stat49(Stat5,Stat46) ==> false; Discharge ==> Stat50: x1 in (t * ubs_thryvar(t)) Suppose ==> Stat51: max_thryvar(t) = s0 (Stat5,Stat19,Stat51)ELEM ==> x1 notin (t * ubs_thryvar(t)) (Stat50)Discharge ==> max_thryvar(t) /= s0 (Stat19)ELEM ==> Stat52: max_thryvar(t) in (t * ubs_thryvar(t)) Use_def(ubs_thryvar) ==> Stat53: max_thryvar(t) in {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)} ()-->Stat32(Stat53) ==> Stat54: (FORALL y in (t * s0) | smaller_thryvar(y,max_thryvar(t)) = y) (x1)-->Stat54(Stat54,Stat5) ==> smaller_thryvar(x1,max_thryvar(t)) = x1 (max_thryvar(t))-->Stat46(Stat52,Stat5) ==> smaller_thryvar(max_thryvar(t),x1) = max_thryvar(t) (x1,max_thryvar(t))-->Tlinear_order_3(Stat47) ==> false; Discharge ==> Stat55: max_thryvar(t) = x1 EQUAL ==> Stat56: arg1_bef_arg2(x1,max_thryvar(t)) (Stat55,Stat56,Stat5)Discharge ==> QED -- Def 10036: [strict order comparison in reverse] arg1_aft_arg2(X,Y) := arg1_bef_arg2(Y,X) -- Theorem linear_order_19: (FORALL x in s0, y in s0, z in s0 | (arg1_aft_arg2(x,y) & arg1_aft_arg2(y,z)) ¥imp arg1_aft_arg2(x,z)) & (FORALL x in s0 | not(arg1_aft_arg2(x,x))) & (FORALL x in s0, y in s0 | arg1_aft_arg2(x,y) or (x = y) or arg1_aft_arg2(y,x)). Proof: Suppose_not ==> AUTO Assump ==> Stat1: (FORALL x in s0, y in s0, z in s0 | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) ¥imp arg1_bef_arg2(x,z)) & Stat2: (FORALL x in s0 | not(arg1_bef_arg2(x,x))) & Stat3: (FORALL x in s0, y in s0 | arg1_bef_arg2(x,y) or (x = y) or arg1_bef_arg2(y,x)) Suppose ==> Stat4: not(FORALL x in s0, y in s0, z in s0 | (arg1_aft_arg2(x,y) & arg1_aft_arg2(y,z)) ¥imp arg1_aft_arg2(x,z)) (x1,y1,z1)-->Stat4(Stat4*) ==> (x1 in s0) & (y1 in s0) & (z1 in s0) & arg1_aft_arg2(x1,y1) & arg1_aft_arg2(y1,z1) & (not arg1_aft_arg2(x1,z1)) Use_def(arg1_aft_arg2)(Stat4*) ==> arg1_bef_arg2(y1,x1) & arg1_bef_arg2(z1,y1) & (not arg1_bef_arg2(z1,x1)) (z1,y1,x1)-->Stat1(Stat4*) ==> false; Discharge ==> (FORALL x in s0, y in s0, z in s0 | (arg1_aft_arg2(x,y) & arg1_aft_arg2(y,z)) ¥imp arg1_aft_arg2(x,z)) Suppose ==> Stat5: not(FORALL x in s0 | not(arg1_aft_arg2(x,x))) x2-->Stat5(Stat5*) ==> (x2 in s0) & arg1_aft_arg2(x2,x2) Use_def(arg1_aft_arg2)(Stat5*) ==> arg1_bef_arg2(x2,x2) x2-->Stat2(Stat5*) ==> false; Discharge ==> Stat6: not(FORALL x in s0, y in s0 | arg1_aft_arg2(x,y) or (x = y) or arg1_aft_arg2(y,x)) (x3,y3)-->Stat6(Stat6*) ==> (x3 in s0) & (y3 in s0) & (not(arg1_aft_arg2(x3,y3) or (x3 = y3) or arg1_aft_arg2(y3,x3))) Use_def(arg1_aft_arg2)(Stat6*) ==> (not(arg1_bef_arg2(y3,x3) or (x3 = y3) or arg1_bef_arg2(x3,y3))) (y3,x3)-->Stat3(Stat6*) ==> false; Discharge ==> QED -- APPLY(¥le_thryvar:¥ge_thryvar,smaller_thryvar:larger_thryvar,min_over_thryvar:max_over_thryvar,ubs_thryvar:lbs_thryvar,max_thryvar:min_thryvar,lub_thryvar:glb_thryvar) linear_order(s0->s0, arg1_bef_arg2(X,Y)->arg1_aft_arg2(X,Y)) ==> Theorem linear_order_20: --? (FORALL x, y | (x ¥ge_thryvar y) ¥eq (arg1_aft_arg2(x,y) or (x = y))) & (FORALL x, y | larger_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_aft_arg2(x,y) then x else y end if) & (FORALL x, y | larger_thryvar(x,y) = larger_thryvar(y,x)) & (FORALL x, y | ({x,y} ¥incin s0) ¥imp (larger_thryvar(x,y) in {x,y})) & (FORALL x | (x in next(s0)) ¥imp (larger_thryvar(x,s0) = x)) & (FORALL x, y, z | larger_thryvar(x,larger_thryvar(y,z)) = larger_thryvar(larger_thryvar(x,y),z)) & (FORALL x, y | ((x in next(s0)) & (y in next(s0))) ¥imp (larger_thryvar(x,y) in next(s0))) & (FORALL f,p,a | (Svm(f) & (range(f) ¥incin s0) & Finite(f)) ¥imp (((p in f) ¥imp (max_over_thryvar({p}) = (f~[car(p)]))) & (max_over_thryvar(f) = larger_thryvar(max_over_thryvar(f ¥ON (domain(f) * a)),max_over_thryvar(f ¥ON (domain(f) - a)))))) & (FORALL f | (Svm(f) & (range(f) ¥incin s0) & Finite(f) & (f /= 0)) ¥imp (max_over_thryvar(f) in range(f))) & (FORALL x, y | ({x,y} ¥incin s0) ¥imp ((larger_thryvar(x,y) = x) ¥eq (arg1_aft_arg2(x,y) or (x = y)))) & (FORALL t | lbs_thryvar(t) = {x in s0 | (FORALL y in (t * s0) | larger_thryvar(y,x) = y)}) & (FORALL t | min_thryvar(t) = arb({s0} + (t * lbs_thryvar(t)))) & (FORALL t | glb_thryvar(t) = arb({s0} + {x in lbs_thryvar(t) | lbs_thryvar(t) ¥incin lbs_thryvar({x})})) & (lbs_thryvar(0) = s0) & (min_thryvar(0) = s0) & (FORALL t | (lbs_thryvar(t) ¥incin s0) & (lbs_thryvar(t) = lbs_thryvar(t * s0)) & (min_thryvar(t) = min_thryvar(t * s0))) & (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin s0)) ¥imp ((min_thryvar(t) in t) & ((x = min_thryvar(t)) or (arg1_aft_arg2(x,min_thryvar(t)))))) -- ENTER_THEORY Set_theory -- --DISPLAY linear_order -- --THEORY linear_order(s0,arg1_bef_arg2(X,Y)) -- (FORALL x in s0, y in s0, z in s0 | (arg1_bef_arg2(x,y) & arg1_bef_arg2(y,z)) ¥imp arg1_bef_arg2(x,z)) -- (FORALL x in s0 | not(arg1_bef_arg2(x,x))) -- (FORALL x in s0, y in s0 | arg1_bef_arg2(x,y) or (x = y) or arg1_bef_arg2(y,x)) --==>(le_thryvar,smaller_thryvar,ubs_thryvar,max_thryvar,lub_thryvar) -- (FORALL x, y | ((x ¥le_thryvar y) ¥eq (arg1_bef_arg2(x,y)) or (x = y))) -- (FORALL x, y | smaller_thryvar(x,y) = if ((x notin s0) & (y notin s0)) then s0 elseif (x notin s0) then y elseif (y notin s0) then x elseif arg1_bef_arg2(x,y) then x else y end if) -- (FORALL u, v, w | (({u,v,w} ¥incin s0) & (u ¥le_thryvar v) & (v ¥le_thryvar w)) ¥imp (u ¥le_thryvar w)) -- (FORALL u, v | (({u,v} ¥incin s0) & (u ¥le_thryvar v) & (v ¥le_thryvar u)) ¥imp (u = v)) -- (FORALL u, v | ({u,v} ¥incin s0) ¥imp ((u ¥le_thryvar v) or (v ¥le_thryvar u))) -- (FORALL u, v, w | ({u,v,w} ¥incin s0) ¥imp (((u ¥le_thryvar v) & (u ¥le_thryvar w)) or ((v ¥le_thryvar u) & (v ¥le_thryvar w)) or ((w ¥le_thryvar u) & (w ¥le_thryvar v)))) -- (FORALL x, y | smaller_thryvar(x,y) = smaller_thryvar(y,x)) -- (FORALL x | (smaller_thryvar(x,s0) = s0) & (smaller_thryvar(s0,x) = s0)) -- (FORALL x, y | ({x,y} ¥incin s0) ¥imp (smaller_thryvar(x,y) in {x,y})) -- (FORALL x, y | (({x,y} ¥incin s0) & (arg1_bef_arg2(x,y) or (x = y))) ¥imp ((smaller_thryvar(x,y) = x) & (smaller_thryvar(y,x) = x))) -- (FORALL x, y | ({x,y} ¥incin s0) ¥imp ((smaller_thryvar(x,y) = x) ¥eq (arg1_bef_arg2(x,y) or (x = y)))) -- (FORALL x, y, z | smaller_thryvar(x,smaller_thryvar(y,z)) = smaller_thryvar(smaller_thryvar(x,y),z)) -- (FORALL x in (s0 + {s0}), y in (s0 + {s0}) | smaller_thryvar(x,y) in (s0 + {s0})) -- (FORALL t | ubs_thryvar(t) = {x in s0 | (FORALL y in (t * s0) | smaller_thryvar(y,x) = y)}) -- (FORALL t | max_thryvar(t) = arb({s0} + (t * ubs_thryvar(t)))) -- (FORALL t | lub_thryvar(t) = arb({s0} + {x in ubs_thryvar(t) | ubs_thryvar(t) ¥incin ubs_thryvar({x})})) -- (ubs_thryvar(0) = s0) & (max_thryvar(0) = s0) -- (FORALL t | (ubs_thryvar(t) ¥incin s0) & (ubs_thryvar(t) = ubs_thryvar(t * s0)) & (max_thryvar(t) = max_thryvar(t * s0))) -- (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin s0)) ¥imp ((max_thryvar(t) in t) & ((x = max_thryvar(t)) or (arg1_bef_arg2(x,max_thryvar(t)))))) --END linear_order -- ************************************************************************************************ -- Section 12: Various other inductive principles -- ************************************************************************************************ -- -- For subsequent use, we reformulate a few special cases of the principle of transfinite definition as THEORYs -- that can be applied internally within the proofs of theorems. -- THEORY transfinite_definition_0_params(g(x),h1(x)) END transfinite_definition_0_params; -- ENTER_THEORY transfinite_definition_0_params -- Def transfinite_definition_0_params.0a: [Function defined by a 1-parameter transfinite recursion] f_thryvar(X) := g({h1(f_thryvar(t)): t in X}) -- Theorem transfinite_definition_0_params1: [One-parameter transfinite recursive function definition] f_thryvar(X) = g({h1(f_thryvar(t)): t in X}). Proof: Suppose_not(x) ==> f_thryvar(x) /= g({h1(f_thryvar(t)): t in x}) Use_def(f_thryvar) ==> f_thryvar(x) = g({h1(f_thryvar(t)): t in x}) Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY transfinite_definition_0_params -- --THEORY transfinite_definition_0_params(g(x),h1(x)) --==>(f_thryvar) -- (FORALL x | f_thryvar(x) = g({h1(f_thryvar(t)): t in x})) --END transfinite_definition_0_params; -- THEORY transfinite_definition_1_params(g2(x,a),h(x,a)) END transfinite_definition_1_params; -- ENTER_THEORY transfinite_definition_1_params -- Def transfinite_definition_1_params.0a: [Function defined by a transfinite recursion with supplementary parameter] f2_thryvar(X,A) := g2({h(f2_thryvar(t,A),A): t in X},A) -- Theorem transfinite_definition_1_params1: [Recursive transfinite function definition with auxilliary parameter] f2_thryvar(X,A) = g2({h(f2_thryvar(t,A),A): t in X},A). Proof: Suppose_not(x,a) ==> f2_thryvar(x,a) /= g2({h(f2_thryvar(t,a),a): t in x},a) Use_def(f2_thryvar) ==> f2_thryvar(x,a) = g2({h(f2_thryvar(t,a),a): t in x},a) Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY transfinite_definition_1_params -- --THEORY transfinite_definition_1_params(g2(x,a),h(x,a)) --==>(f2_thryvar) -- (FORALL x,a | f2_thryvar(x,a) = g2({h(f2_thryvar(t),a): t in x},a)) --END transfinite_definition_1_params; -- -- -- Our next proof establishes a first, purely set-theoretic form of the well-known Zorn's Lemma. -- We prove that if $t$ is any collection of sets such that every subfamily of $t$ -- linearly ordered by inclusion admits an upper bound in $t$, then $t$ has an element maximal for inclusion, -- i.e. not properly included in any other element of $t$. -- Theorem 412: [Zorn's lemma] (FORALL x ¥incin T | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in T | (FORALL y in x | w incs y)))) ¥imp (EXISTS y in T | (FORALL x in T | not ((x incs y) & (x /= y)))). Proof: Suppose_not(t) ==> Stat1: (FORALL x ¥incin t | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in t | (FORALL y in x | w incs y)))) & Stat2: (not (EXISTS y in t | (FORALL x in t | not ((x incs y) & (x /= y))))) -- -- For supposing the contrary, we can define a mapping of $t$ into $t$ which sends each element of $t$ into a strictly larger element, -- and also a mapping of every subset of $t$ linearly ordered by inclusion into an upper bound for it in $t$. -- Loc_def ==> larger = {[x,arb({y in t | ((y incs x) & (y /= x))})]: x in t} APPLY() fcn_symbol(f(x)->arb({y in t | ((y incs x) & (y /= x))}),g->larger,s->t) ==> Svm(larger) & Stat3: (FORALL x | larger~[x] = if x in t then arb({y in t | ((y incs x) & (y /= x))}) else 0 end if) Loc_def ==> upper_bound = {[x,arb({y in t | (FORALL u in x | y incs u)})]: x in pow(t)} APPLY() fcn_symbol(f(x)->arb({y in t | (FORALL u in x | y incs u)}),g->upper_bound,s->pow(t)) ==> Svm(upper_bound) & Stat4: (FORALL x | upper_bound~[x] = if x in pow(t) then arb({y in t | (FORALL u in x | y incs u)}) else 0 end if) Loc_def ==> s = Un(t) -- -- Now we use the functions 'upper_bound' and 'larger' to introduce the following (recursively defined) function, -- which we will then show maps each ordinal into $t$, and is strictly monotone increasing. -- APPLY(f_thryvar:Zo) transfinite_definition_0_params(g(x)->larger~[upper_bound~[x]],h1(x)->x) ==> Stat5: (FORALL x | Zo(x) = larger~[upper_bound~[{Zo(y): y in x}]]) Suppose ==> Stat6: (EXISTS x | Ord(x) & (Zo(x) notin t or (EXISTS u in x | not((Zo(x) incs Zo(u)) & (Zo(x) /= Zo(u)))))) -- -- For if there exists some counterexample to this last assertion, then by transfinite induction -- there exists a smallest such counterexample $c$. -- d-->Stat6 ==> Ord(d) & ((Zo(d) notin t) or (EXISTS u in d | not((Zo(d) incs Zo(u)) & (Zo(d) /= Zo(u))))) APPLY(mt1_thryvar:c) transfinite_induction(n->d,P(x)->(Ord(x) & ((Zo(x) notin t) or (EXISTS u in x | not((Zo(x) incs Zo(u)) & (Zo(x) /= Zo(u))))))) ==> Stat7: (FORALL x | (Ord(c) & ((Zo(c) notin t) or (EXISTS u in c | not((Zo(c) incs Zo(u)) & (Zo(c) /= Zo(u)))))) & ((x in c) ¥imp (not(Ord(x) & ((Zo(x) notin t) or (EXISTS u in x | not((Zo(x) incs Zo(u)) & (Zo(x) /= Zo(u))))))))) 0-->Stat7 ==> (Ord(c) & ((Zo(c) notin t) or (EXISTS u in c | not((Zo(c) incs Zo(u)) & (Zo(c) /= Zo(u)))))) Suppose ==> Stat8: not(FORALL x in c | not (Ord(x) & ((Zo(x) notin t) or (EXISTS u in x | not((Zo(x) incs Zo(u)) & (Zo(x) /= Zo(u))))))) x0-->Stat8 ==> (x0 in c) & Ord(x0) & ((Zo(x0) notin t) or (EXISTS u in x0 | not((Zo(x0) incs Zo(u)) & (Zo(x0) /= Zo(u))))) x0-->Stat7 ==> false; Discharge ==> Stat9: (FORALL x in c | not (Ord(x) & ((Zo(x) notin t) or (EXISTS u in x | not((Zo(x) incs Zo(u)) & (Zo(x) /= Zo(u))))))) -- -- For this minimal counterexample $c$, the set ${Zo(y): y in c}$ must be a collection of subsets of $t$ -- and must be linearly ordered by inclusion. -- Suppose ==> Stat10: not (t incs {Zo(y): y in c}) x1-->Stat10 ==> Stat11: (x1 in {Zo(y): y in c}) & (x1 notin t) y1-->Stat11 ==> (y1 in c) & (x1 = Zo(y1)) y1-->Stat9 ==> not(Ord(y1) & (Zo(y1) notin t)) (c,y1)-->T12 ==> Ord(y1) (Stat11)Discharge ==> t incs {Zo(y): y in c} Suppose ==> Stat12: not(FORALL u in {Zo(y): y in c},v in {Zo(y): y in c} | (u incs v or v incs u)) (a,b)-->Stat12 ==> Stat13: (a in {Zo(y): y in c}) & (b in {Zo(y): y in c}) & (not(a incs b or b incs a)) (o1,o2)-->Stat13 ==> Stat14: (o1 in c) & (o2 in c) & (not (Zo(o1) incs Zo(o2) or Zo(o2) incs Zo(o1))) (c,o1)-->T12 ==> Ord(o1) (c,o2)-->T12 ==> Ord(o2) o1-->Stat9 ==> Stat15: not(EXISTS u in o1 | not((Zo(o1) incs Zo(u)) & (Zo(o1) /= Zo(u)))) o2-->Stat9 ==> Stat16: not(EXISTS u in o2 | not((Zo(o2) incs Zo(u)) & (Zo(o2) /= Zo(u)))) (o1,o2)-->T31 ==> o1 in o2 or o2 in o1 or o1 = o2 Suppose ==> o1 = o2 EQUAL ==> Zo(o1) = Zo(o2) (Stat14)Discharge ==> o1 in o2 or o2 in o1 Suppose ==> o2 in o1 o2-->Stat15 ==> false; Discharge ==> o1 in o2 o1-->Stat16 ==> false; Discharge ==> (FORALL u in {Zo(y): y in c},v in {Zo(y): y in c} | (u incs v or v incs u)) -- -- Thus, by definition, ${Zo(y): y in c}$ must have an upper bound $cb$ which is a subset of $t$, and therefore -- by the axiom of choice $upper_bound~[{Zo(z1): z1 in c}]$ must belong to t and include every element of ${Zo(y): y in c}$. -- ({Zo(z1): z1 in c})-->Stat1 ==> Stat17: (EXISTS w in t | (FORALL y in {Zo(z1): z1 in c} | w incs y)) cb-->Stat17 ==>(cb in t) & (FORALL y in {Zo(z1): z1 in c} | cb incs y) ({Zo(z1): z1 in c})-->Stat4 ==> upper_bound~[{Zo(z1): z1 in c}] = if {Zo(z1): z1 in c} in pow(t) then arb({y in t | (FORALL u in {Zo(z1): z1 in c} | y incs u)}) else 0 end if Suppose ==> {Zo(z1): z1 in c} notin pow(t) Use_def(pow) ==> Stat18: {Zo(z1): z1 in c} notin {x: x ¥incin t} ({Zo(z1): z1 in c})-->Stat18 ==> false; Discharge ==> upper_bound~[{Zo(z1): z1 in c}] = arb({y in t | (FORALL u in {Zo(z1): z1 in c} | y incs u)}) Suppose ==> Stat19: {y in t | (FORALL u in {Zo(z1): z1 in c} | y incs u)} = 0 cb-->Stat19 ==> false; Discharge ==> {y in t | (FORALL u in {Zo(z1): z1 in c} | y incs u)} /= 0 ({y in t | (FORALL u in {Zo(z1): z1 in c} | y incs u)})-->T0 ==> arb({y in t | (FORALL u in {Zo(z1): z1 in c} | y incs u)}) in {y in t | (FORALL u in {Zo(z1): z1 in c} | y incs u)} (Stat17)ELEM ==> Stat20: upper_bound~[{Zo(z1): z1 in c}] in {y in t | (FORALL u in {Zo(z1): z1 in c} | y incs u)} ()-->Stat20 ==> (upper_bound~[{Zo(z1): z1 in c}] in t) & Stat21: (FORALL u in {Zo(z1): z1 in c} | upper_bound~[{Zo(z1): z1 in c}] incs u) -- -- It follows by a second use of the axiom of choice that $larger~[upper_bound~[{Zo(z1): z1 in c}]] = Zo(c)$ is an element of $t$ -- properly including every element of ${Zo(y): y in c}$. This refutes our earlier supposition, and so -- lets us conclude that Zo sends ordinals into t and is strictly monotone increasing. -- (upper_bound~[{Zo(z1): z1 in c}])-->Stat3 ==> larger~[upper_bound~[{Zo(z1): z1 in c}]] = arb({y in t | ((y incs upper_bound~[{Zo(z1): z1 in c}]) & (y /= upper_bound~[{Zo(z1): z1 in c}]))}) (upper_bound~[{Zo(z1): z1 in c}])-->Stat2 ==> Stat22: not (FORALL x in t | not ((x incs upper_bound~[{Zo(z1): z1 in c}]) & (x /= upper_bound~[{Zo(z1): z1 in c}]))) cu-->Stat22 ==> (cu in t) & (cu incs upper_bound~[{Zo(z1): z1 in c}]) & (cu /= upper_bound~[{Zo(z1): z1 in c}]) Suppose ==> Stat23: {y in t | (y incs upper_bound~[{Zo(z1): z1 in c}]) & (y /= upper_bound~[{Zo(z1): z1 in c}])} = 0 cu-->Stat23 ==> false; Discharge ==> {y in t | (y incs upper_bound~[{Zo(z1): z1 in c}]) & (y /= upper_bound~[{Zo(z1): z1 in c}])} /= 0 ({y in t | (y incs upper_bound~[{Zo(z1): z1 in c}]) & (y /= upper_bound~[{Zo(z1): z1 in c}])})-->T0 ==> arb({y in t | (y incs upper_bound~[{Zo(z1): z1 in c}]) & (y /= upper_bound~[{Zo(z1): z1 in c}])}) in {y in t | (y incs upper_bound~[{Zo(z1): z1 in c}]) & (y /= upper_bound~[{Zo(z1): z1 in c}])} (Stat20)ELEM ==> larger~[upper_bound~[{Zo(z1): z1 in c}]] in {y in t | (y incs upper_bound~[{Zo(z1): z1 in c}]) & (y /= upper_bound~[{Zo(z1): z1 in c}])} c-->Stat5 ==> Stat24: Zo(c) in {y in t | (y incs upper_bound~[{Zo(z1): z1 in c}]) & (y /= upper_bound~[{Zo(z1): z1 in c}])} ()-->Stat24 ==> (Zo(c) in t) & (Zo(c) incs upper_bound~[{Zo(z1): z1 in c}]) & (Zo(c) /= upper_bound~[{Zo(z1): z1 in c}]) ELEM ==> Stat25: (EXISTS u in c | not((Zo(c) incs Zo(u)) & (Zo(c) /= Zo(u)))) cv-->Stat25 ==> (cv in c) & (not((Zo(c) incs Zo(cv)) & (Zo(c) /= Zo(cv)))) (Stat22)ELEM ==> not(upper_bound~[{Zo(z1): z1 in c}] incs Zo(cv)) (Zo(cv))-->Stat21 ==> Stat26: Zo(cv) notin {Zo(z1): z1 in c} cv-->Stat26 ==> false; Discharge ==> Stat27: not(EXISTS x | Ord(x) & (Zo(x) notin t or (EXISTS u in x | not((Zo(x) incs Zo(u)) & (Zo(x) /= Zo(u)))))) -- -- Thus $Zo$ is a 1-1 map of all ordinals into the set $t$, a thing impossible. -- The easiest way of seeing this is to consider the restriction of $Zo$ to an ordinal -- greater than the cardinality of $t$, for example to $#pow(t)$; this can certainly have no -- 1-1 map into $t$, giving a contradiction which proves our assertion. -- t-->T265 ==> #t in #pow(t) t-->T147 ==> Ord(#t) (pow(t))-->T147 ==> Ord(#pow(t)) APPLY(x9_thryvar:o3,y9_thryvar:o4) fcn_symbol(g->{[x,Zo(x)]: x in #pow(t)},f(x)->Zo(x),s->#pow(t)) ==> (domain({[x,Zo(x)]: x in #pow(t)}) = #pow(t)) & (range({[x,Zo(x)]: x in #pow(t)}) = {Zo(x): x in #pow(t)}) & (((o3 in #pow(t)) & (o4 in #pow(t)) & (Zo(o3) = Zo(o4)) & (o3 /= o4)) or one_1_map({[x,Zo(x)]: x in #pow(t)})) Suppose ==> not one_1_map({[x,Zo(x)]: x in #pow(t)}) ELEM ==> (o3 in #pow(t)) & (o4 in #pow(t)) & (Zo(o3) = Zo(o4)) & (o3 /= o4) (#pow(t),o3)-->T12 ==> Ord(o3) (#pow(t),o4)-->T12 ==> Ord(o4) (o3,o4)-->T31 ==> o3 in o4 or o4 in o3 Suppose ==> o3 in o4 o4-->Stat27 ==> Stat28: not (EXISTS u in o4 | not((Zo(o4) incs Zo(u)) & (Zo(o4) /= Zo(u)))) o3-->Stat28 ==> false; Discharge ==> o4 in o3 o3-->Stat27 ==> Stat29: not (EXISTS u in o3 | not((Zo(o3) incs Zo(u)) & (Zo(o3) /= Zo(u)))) o4-->Stat29 ==> false; Discharge ==> one_1_map({[x,Zo(x)]: x in #pow(t)}) Suppose ==> not (t incs range({[x,Zo(x)]: x in #pow(t)})) ELEM ==> Stat30: not (t incs {Zo(x): x in #pow(t)}) e-->Stat30 ==> Stat31: (e in {Zo(x): x in #pow(t)}) & (e notin t) e2-->Stat31 ==> (e2 in #pow(t)) & (e = Zo(e2)) (#pow(t),e2)-->T12 ==> Ord(e2) e2-->Stat27 ==> false; Discharge ==> t incs range({[x,Zo(x)]: x in #pow(t)}) (range({[x,Zo(x)]: x in #pow(t)}),t)-->T170 ==> #t incs #range({[x,Zo(x)]: x in #pow(t)}) ({[x,Zo(x)]: x in #pow(t)})-->T157 ==> #t incs #domain({[x,Zo(x)]: x in #pow(t)}) EQUAL ==> #t incs ##pow(t) (pow(t))-->T166 ==> false; Discharge ==> QED -- -- -- The following corollary of the preceding theorem shows that if $s$ is any member of a family $t$ of sets -- sets satisfying the hypotheses of that theorem, then $s$ is contained in an element of $t$ maximal in $t$. -- Theorem 413: [Zorn's lemma generalized form] (FORALL x ¥incin T | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in T | (FORALL y in x | w incs y)))) ¥imp (FORALL u in T | (EXISTS y in T | (y incs u) & (FORALL x in T | not ((x incs y) & (x /= y))))). Proof: Suppose_not(t) ==> Stat1: (FORALL x ¥incin T | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in T | (FORALL y in x | w incs y)))) & Stat2: (not (FORALL u in t | (EXISTS y in t | (y incs u) & (FORALL x in t | not ((x incs y) & (x /= y)))))) -- -- For suppose that $u in t$ contradicts the conclusion of our theorem, and consider the subset $tt$ of all elements of $t$ -- which contain $u$. It is clear that every collection of subsets of $tt$ linearly ordered by inclusion has an upper bound in $tt$, -- and so by the preceding theorem $tt$ contains an element $ma$ maximal for inclusions among all the sets in $tt$. -- u-->Stat2 ==> (u in t) & Stat3: (not (EXISTS y in t | (y incs u) & (FORALL x in t | not ((x incs y) & (x /= y))))) Loc_def ==> tt = {x in t | x incs u} Suppose ==> Stat4: not(t incs tt) c-->Stat4 ==> (c notin t) & Stat5: (c in {x in t | x incs u}) ()-->Stat5 ==> false; Discharge ==> t incs tt Suppose ==> Stat6: not(FORALL x ¥incin tt | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in tt | (FORALL y in x | w incs y)))) d-->Stat6 ==> (d ¥incin tt) & (FORALL u in d,v in d | (u incs v or v incs u)) & Stat7: (not(EXISTS w in tt | (FORALL y in d | w incs y))) d-->Stat1 ==> Stat8: (EXISTS w in t | (FORALL y in d | w incs y)) wd-->Stat8 ==> (wd in t) & Stat9: (FORALL y in d | wd incs y) -- -- Since $u in tt$, $d$ cannot be null, from which it is easily seen that $wd$ must contain $u$, and so $wd in tt$, -- Thu it follows by The0rem 332a that $tt$ has an element $wa$ maximal (for inclusion) in -- Suppose ==> u notin tt ELEM ==> Stat10: u notin {x in t | x incs u} ()-->Stat10 ==> false; Discharge ==> u in tt Suppose ==> d = 0 u-->Stat7 ==> Stat11: not (FORALL y in d | u incs y) a-->Stat11 ==> false; Discharge ==> Stat12: d /= 0 b-->Stat12 ==> b in d b-->Stat9 ==> wd incs b ELEM ==> Stat13: b in {x in t | x incs u} ()-->Stat13 ==> wd incs u Suppose ==> wd notin tt ELEM ==> Stat14: wd notin {x in t | x incs u} ()-->Stat14 ==> false; Discharge ==> wd in tt wd-->Stat7 ==> false; Discharge ==> (FORALL x ¥incin tt | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in tt | (FORALL y in x | w incs y)))) tt-->T412 ==> Stat15: (EXISTS y in tt | (FORALL x in tt | not ((x incs y) & (x /= y)))) ma-->Stat15 ==> (ma in tt) & Stat16: (FORALL x in tt | not ((x incs ma) & (x /= ma))) -- -- But it is easily seen that $ma$ is maximal in the whole collection $t$, and so our theorem is proved. -- ma-->Stat3 ==> not ((ma incs u) & (FORALL x in t | not ((x incs ma) & (x /= ma)))) ELEM ==> Stat17: ma in {x in t | x incs u} ()-->Stat17 ==> ma incs u ELEM ==> Stat18: not (FORALL x in t | not ((x incs ma) & (x /= ma))) e-->Stat18 ==> (e in t) & (e incs ma) & (e /= ma) ELEM ==> e incs u Suppose ==> e notin tt ELEM ==> Stat19: e notin {x in t | x incs u} ()-->Stat19 ==> false; Discharge ==> e in tt e-->Stat16 ==> false; Discharge ==> QED -- -- Next we note a special case common in applications of Theorem 413, namely that in which the union of any -- linearly ordered collection of elements of $t$ is a subset of $t$. -- Theorem 414: [Zorn's lemma for union-closed collections] (FORALL x ¥incin T | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (Un(x) in T))) ¥imp (FORALL u in T | (EXISTS y in T | (y incs u) & (FORALL x in T | not ((x incs y) & (x /= y))))). Proof: Suppose_not(t) ==> Stat1: (FORALL x ¥incin t | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (Un(x) in t))) & (not (FORALL u in t | (EXISTS y in t | (y incs u) & (FORALL x in t | not ((x incs y) & (x /= y)))))) -- -- For given any subcollection of $t$ linearly ordered by inclusion, $Un(t)$ plainly includes all the sets in $t$, -- and so our present assertion follows immediately from the preceding theorem. -- T413 ==> Stat2: not (FORALL x ¥incin t | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (EXISTS w in t | (FORALL y in x | w incs y)))) a-->Stat2 ==> (a ¥incin t) & (FORALL u in a,v in a | (u incs v or v incs u)) & Stat3: (not (EXISTS w in t | (FORALL y in a | w incs y))) a-->Stat1 ==> Un(a) in t (Un(a))-->Stat3 ==> Stat4: not(FORALL y in a | Un(a) incs y) b-->Stat4 ==> (b in a) & Stat5: (not(Un(a) incs b)) c-->Stat5 ==> (c in b) & (c notin Un(a)) Use_def(Un) ==> Stat6: c notin {y: x in a,y in x} (b,c)-->Stat6 ==> false; Discharge ==> QED -- -- We shall now show how Theorem 414 can be used to construct a so-called 'ultrafilter' containing any given -- set theoretic 'filter'. The definitions involved are as follows. A collection $t$ of subsets of a set $s$ -- is called a 'filter' in $s$ if (a) $0 notin t$; (b) $t$ any superset of any member of $t$ belongs to $t$; -- (c) any intersection of two elements of $t$ belongs to $t$. A filter in $s$ is called an 'ultrafilter' in $s$ -- if for any subset $u$ of $s$, either $u$ or $s - u$ belongs to $t$. The formal definitions are as follows: -- Def 332a: [The predicate '$T$ is a filter on the set $S$] Filter(T,S) := (T ¥incin pow(S)) & (0 notin T) & (FORALL x in T, y in T | x * y in T) & (FORALL x in T, y ¥incin S | ((y incs x) ¥imp (y in T))) Def 332b: [The predicate '$T$ is an ultrafilter on the set $S$] Ultrafilter(T,S) := Filter(T,S) & (FORALL y ¥incin S | (y in T or S - y in T)) -- -- -- It is easily seen that the union $Un(C)$ of any linearly ordered collection $C$ of filters in a set $S$ is also a filter in $S$. -- Indeed, (a) since $0$ is not in any element of $C$ it is not in $Un(C)$; (b) If $x$ is a superset of an element $y$ of $Un(C)$, -- then since $y$ must belong to some member $t$ of $C$, $x$ must also belong to $t$ and hence to $Un(C)$; -- (c) given any two elements $A$ and $B$ of $Un(C)$, $A$ (resp. $B$) must belong to some element (i.e. filter) $FA$ (resp. $FB$) of $C$, -- But then, since the elements of $C$ are linearly ordered by inclusion, one of the two filters $FA$ and $FB$, say $FA$, but included the other. -- Hence $A$ and $B$ are both members of $FA$ -- -- It follows using Theorem 414 that every filter is contained in a maximal filter. But it is easily seen that a filter $t$ in $s$ is maximal -- (among all filters in $s$) if and only if it is an ultrafilter in $s$. For if $t$ is an ultrafilter it cannot be enlarged -- by adding any subset $x$ of $s$ not already in $t$, since $s - x$ must already belong to $t$, and thus addition of -- $x$ would force $x * (s - x)$ = $0$ to belong to the resulting filter, which is impossible by definition of a filter. -- Conversely, if neither $x$ nor $s - x$ belong to $t$ we can extend $t$ to the larger filter $tp$ consisting of all subsets of $s$ -- which include a set of the form $f * x$, where $f$ belongs to $t$. Indeed, it is clear that the family $tp$ of sets defined -- in this way is closed under intersection, and that it includes any superset o any of its sets. Hence to show that $tp$ is a filter -- we have only to show that no set of the form $f * x$ can be null. But if $f * x$ were null, we would have $(s - x) incs f$, so -- $(s - x)$ would be a member of $t$, contrary to assumption. -- -- The formal versions of the preceding informal arguments are as follows. -- Theorem 415: ((FORALL t in TP | Filter(t,S)) & (FORALL u in TP, v in TP | (u incs v or v incs u))) ¥imp Filter(Un(TP),S). Proof: Suppose_not(tp,s) ==> Stat1: (FORALL t in tp | Filter(t,s)) & Stat2: (FORALL u in tp, v in tp | (u incs v or v incs u)) & (not Filter(Un(tp),s)) Use_def(Filter) ==> not ((Un(tp) ¥incin pow(s)) & (0 notin Un(tp)) & (FORALL x in Un(tp), y in Un(tp) | x * y in Un(tp)) & (FORALL x in Un(tp), y ¥incin s | ((y incs x) ¥imp (y in Un(tp))))) Suppose ==> Stat3: not (Un(tp) ¥incin pow(s)) a-->Stat3 ==> (a in Un(tp)) & (a notin pow(s)) Use_def(Un) ==> Stat4: a in {x: y in tp, x in y} Use_def(pow) ==> a notin {x: x ¥incin s} (b,c)-->Stat4 ==> (b in tp) & (c in b) & (a = c) b-->Stat1 ==> Filter(b,s) Use_def(Filter) ==> b ¥incin pow(s) Discharge ==> Un(tp) ¥incin pow(s) Suppose ==> 0 in Un(tp) Use_def(Un) ==> Stat5: 0 in {x: y in tp, x in y} (b2,c2)-->Stat5 ==> (b2 in tp) & (0 in b2) b2-->Stat1 ==> Filter(b2,s) Use_def(Filter) ==> false; Discharge ==> 0 notin Un(tp) Suppose ==> Stat6: not (FORALL x in Un(tp), y ¥incin s | ((y incs x) ¥imp (y in Un(tp)))) (b3,c3)-->Stat6 ==> (b3 in Un(tp)) & (c3 ¥incin s) & (c3 incs b3) & (c3 notin Un(tp)) Use_def(Un) ==> Stat7: b3 in {x: y in tp, x in y} (b4,c4)-->Stat7 ==> (b4 in tp) & (b3 in b4) b4-->Stat1 ==> Filter(b4,s) Use_def(Filter) ==> Stat8: (FORALL x in b4, y ¥incin s | ((y incs x) ¥imp (y in b4))) (b3,c3)-->Stat8 ==> c3 in b4 Use_def(Un) ==> Stat9: c3 notin {x: y in tp, x in y} (b4,c3)-->Stat9 ==> false; Discharge ==> Stat10: not (FORALL x in Un(tp), y in Un(tp) | x * y in Un(tp)) -- -- Thus only the third clause in the definition of 'Filter' could be false for $tp$. -- But since the elements of $tp$ are linearly ordered by inclusion it is -- easily seen that this clause must also be true, so $tp$ must be a filter, as asserted. -- (a2,a3)-->Stat10 ==> (a2 in Un(tp)) & (a3 in Un(tp)) & (a2 * a3 notin Un(tp)) Use_def(Un) ==> Stat11: (a2 in {x: y in tp, x in y}) & (a3 in {x: y in tp, x in y}) (b5,c5,b6,c6)-->Stat11 ==> (b5 in tp) & (a2 in b5) & (b6 in tp) & (a3 in b6) (b5,b6)-->Stat2 ==> b5 incs b6 or b6 incs b5 Suppose ==> b5 incs b6 ELEM ==> a3 in b5 b5-->Stat1 ==> Filter(b5,s) Use_def(Filter) ==> Stat12: (FORALL x in b5, y in b5 | x * y in b5) (a2,a3)-->Stat12 ==> a2 * a3 in b5 Use_def(Un) ==> Stat13: a2 * a3 notin {x: y in tp, x in y} (b5,a2 * a3)-->Stat13 ==> false; Discharge ==> b6 incs b5 ELEM ==> a2 in b6 b6-->Stat1 ==> Filter(b6,s) Use_def(Filter) ==> Stat14: (FORALL x in b6, y in b6 | x * y in b6) (a2,a3)-->Stat14 ==> a2 * a3 in b6 Use_def(Un) ==> Stat15: a2 * a3 notin {x: y in tp, x in y} (b6,a2 * a3)-->Stat15 ==> false; Discharge ==> QED -- -- Next we prove the lemma, anticipated above, that a filter is maximal if and only if it is an ultrafilter. -- Theorem 416: (S /= 0) ¥imp ((Filter(T,S) & (FORALL x ¥incin pow(S) | ((x incs T) & Filter(x,S)) ¥imp (x = T))) ¥eq Ultrafilter(T,S)). Proof: Suppose_not(s,t) ==> (s /= 0) & (not((Filter(t,s) & (FORALL x ¥incin pow(s) | ((x incs t) & Filter(x,s)) ¥imp (x = t))) ¥eq Ultrafilter(t,s))) -- -- For it is easily seen that an ultrafilter must be a maximal filter. -- Suppose ==> Ultrafilter(t,s) & (not(Filter(t,s) & (FORALL x ¥incin pow(s) | ((x incs t) & Filter(x,s)) ¥imp (x = t)))) Use_def(Ultrafilter) ==> Stat1: not (FORALL x ¥incin pow(s) | ((x incs t) & Filter(x,s)) ¥imp (x = t)) t2-->Stat1 ==> (t2 ¥incin pow(s)) & (t2 incs t) & Filter(t2,s) & (t2 /= t) ELEM ==> Stat2: not(t incs t2) a-->Stat2 ==> (a in t2) and (a notin t) Use_def(Filter) ==> t2 ¥incin pow(s) ELEM ==> a in pow(s) Use_def(pow) ==> Stat3: a in {x: x ¥incin s} cp-->Stat3 ==> a ¥incin s Use_def(Ultrafilter) ==> Stat4: (FORALL y ¥incin s | (y in t or s - y in t)) a-->Stat4 ==> s - a in t2 Use_def(Filter) ==> (0 notin t2) & Stat5: (FORALL x in t2, y in t2 | x * y in t2) (a,s - a)-->Stat5 ==> false; Discharge ==> (not Ultrafilter(t,s)) & Filter(t,s) & Stat6: (FORALL x ¥incin pow(s) | ((x incs t) & Filter(x,s)) ¥imp (x = t)) -- -- Thus if our theorem is false $t$ must be a maximal filter but not an ultrafilter. -- Use_def(Ultrafilter) ==> Stat7: not(FORALL y ¥incin s | (y in t or s - y in t)) c-->Stat7 ==> (c ¥incin s) & (c notin t) & (s - c notin t) Loc_def ==> t3 = {x: x ¥incin s | (EXISTS y in t| x incs y * c)} Suppose ==> not Filter(t3,s) Use_def(Filter) ==> not((t3 ¥incin pow(s)) & (0 notin t3) & (FORALL x in t3, y in t3 | x * y in t3) & (FORALL x in t3, y ¥incin s | ((y incs x) ¥imp (y in t3)))) Suppose ==> Stat8: not (t3 ¥incin pow(s)) b-->Stat8 ==> Stat9: (b in {x: x ¥incin s | (EXISTS y in t| x incs y * c)}) & (b notin pow(s)) b2-->Stat9 ==> b ¥incin s Use_def(pow) ==> Stat10: b notin {x: x ¥incin s} b-->Stat10 ==> false; Discharge ==> t3 ¥incin pow(s) Suppose ==> Stat11: not (FORALL x in t3, y ¥incin s | ((y incs x) ¥imp (y in t3))) (b3,c3)-->Stat11 ==> Stat12: (b3 in {x: x ¥incin s | (EXISTS y in t | x incs y * c)}) & (c3 ¥incin s) & (c3 incs b3) & Stat13: (c3 notin {x: x ¥incin s | (EXISTS y in t | x incs y * c)}) b4-->Stat12 ==> (b4 ¥incin s) & (EXISTS y in t | b4 incs y * c) & (b3 = b4) EQUAL ==> (b3 ¥incin s) & Stat14: (EXISTS y in t | b3 incs y * c) c4-->Stat14 ==> (c4 in t) & (b3 incs c4 * c) c3-->Stat13 ==> Stat15: not (EXISTS y in t | c3 incs y * c) c4-->Stat15 ==> false; Discharge ==> (FORALL x in t3, y ¥incin s | ((y incs x) ¥imp (y in t3))) Suppose ==> Stat16: not (FORALL x in t3, y in t3 | x * y in t3) (b5,c5)-->Stat16 ==> Stat17: (b5 in {x: x ¥incin s | (EXISTS y in t | x incs y * c)}) & Stat18: (c5 in {x: x ¥incin s | (EXISTS y in t | x incs y * c)}) & Stat19: (not (b5 * c5 in {x: x ¥incin s | (EXISTS y in t | x incs y * c)})) b6-->Stat17 ==> (b6 ¥incin s) & Stat20: (EXISTS y in t | b6 incs y * c) & (b5 = b6) EQUAL ==> (b5 ¥incin s) & (EXISTS y in t | b5 incs y * c) c6-->Stat18 ==> (c6 ¥incin s) & Stat21: (EXISTS y in t | c6 incs y * c) & (c5 = c6) EQUAL ==> (c5 ¥incin s) & (EXISTS y in t | c5 incs y * c) d6-->Stat20 ==> (d6 in t) & (b5 incs d6 * c) e6-->Stat21 ==> (e6 in t) & (c5 incs e6 * c) ELEM ==> b5 * c5 incs (d6 * e6) * c Use_def(Filter) ==> Stat22: (FORALL x in t, y in t | x * y in t) (d6,e6)-->Stat22 ==> d6 * e6 in t (b5 * c5)-->Stat19 ==> Stat23: not (EXISTS y in t | b5 * c5 incs y * c) (d6 * e6)-->Stat23 ==> false; Discharge ==> Stat24: 0 in {x: x ¥incin s | (EXISTS y in t | x incs y * c)} x-->Stat24 ==> Stat25: (EXISTS y in t | x incs y * c) & (x = 0) y-->Stat25 ==> (y in t) & (y * c = 0) Use_def(Filter) ==> (t ¥incin pow(s)) & Stat26: (FORALL x in t, y ¥incin s | ((y incs x) ¥imp (y in t))) ELEM ==> y in pow(s) Use_def(pow) ==> Stat27: y in {x: x ¥incin s} yy-->Stat27 ==> y ¥incin s ELEM ==> y ¥incin (s - c) (y,s - c)-->Stat26 ==> false; Discharge ==> Filter(t3,s) -- Use_def(Filter) ==> Stat28: (t ¥incin pow(s)) & (0 notin t) & Stat29: (FORALL x in t, y in t | (x * y) in t) & Stat30: (FORALL x in t, y ¥incin s | (y incs x) ¥imp (y in t)) Suppose ==> not(t3 ¥incin pow(s)) EQUAL ==> Stat31: not({x: x ¥incin s | (EXISTS y in t | x incs (y * c))} ¥incin pow(s)) x0-->Stat31 ==> (x0 notin pow(s)) & Stat32: (x0 in {x ¥incin s | (EXISTS y in t | x incs (y * c))}) ()-->Stat32 ==> x0 ¥incin s Use_def(pow) ==> Stat33: (x0 notin {x: x ¥incin s}) x0-->Stat33 ==> false; Discharge ==> t3 ¥incin pow(s) -- -- Aiming now at showing that $t3$ strictly includes $t$, let us check first that $t /= 0$. -- The proof of this fact is that otherwise it would be included in ${s}$, -- which is a filter on $s$ since $s /= 0$. -- Suppose ==> t = 0 Suppose ==> not({s} ¥incin pow(s)) Use_def(pow) ==> Stat34: (s notin {x: x ¥incin s}) s-->Stat34 ==> false; Discharge ==> {s} ¥incin pow(s) Suppose ==> not(Filter({s},s)) Use_def(Filter) ==> not((FORALL x in {s}, y in {s} | (x * y) in {s}) & (FORALL x in {s}, y ¥incin s | (y incs x) ¥imp (y in {s}))) Suppose ==> Stat35: not(FORALL x in {s}, y in {s} | (x * y) in {s}) (x5,x6)-->Stat35(Stat35) ==> false; Discharge ==> Stat36: not(FORALL x in {s}, y ¥incin s | (y incs x) ¥imp (y in {s})) (x7,x8)-->Stat36 ==> false; Discharge ==> Filter({s},s) ({s})-->Stat6 ==> false; Discharge ==> t /= 0 Suppose ==> Stat37: c notin {x ¥incin s | (EXISTS y in t | x incs (y * c))} ()-->Stat37 ==> Stat38: (not(EXISTS y in t | c incs (y * c))) (arb(t))-->Stat38 ==> false; Discharge ==> t /= t3 Suppose ==> Stat39: not(t3 incs t) d-->Stat39 ==> (d in t) & Stat40: (not(d in {x ¥incin s | (EXISTS y in t | x incs (y * c))})) ()-->Stat40 ==> (not (d ¥incin s)) or (not(EXISTS y in t | d incs (y * c))) Use_def(Filter) ==> d in pow(s) Use_def(pow) ==> Stat41: d in {x: x ¥incin s} x9-->Stat41 ==> Stat42: (not(EXISTS y in t | d incs (y * c))) d-->Stat42 ==> false; Discharge ==> t3 incs t t3-->Stat6 ==> false; Discharge ==> QED -- -- Since Theorem 415 tells us that the hypothesis of Theorem 414 is valid for the set of filters in a set $s$, -- the following conclusion results immediately. -- Theorem 417: [Every filter on a set $S$ can be extended to an ultrafilter on $S$] (Filter(T,S) & (S /= 0)) ¥imp (EXISTS u | ((u incs T) & Ultrafilter(u,S))). Proof: Suppose_not(t,s) ==> (s /= 0) & Filter(t,s) & Stat1: (not (EXISTS u | ((u incs t) & Ultrafilter(u,s)))) -- -- For let $t$, $s$ be a counterexample to our assertion, and consider the collection $filters_in_s$ -- of all filters in $s$. Since it is easily seen that $filters_in_s$ satisfies the hypothesis of Theorem 414, -- it follows that $t$ is contained in some maximal filter. -- Loc_def ==> filters_in_s = {f ¥incin pow(s) | Filter(f,s)} Suppose ==> Stat2: not (FORALL x ¥incin filters_in_s | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (Un(x) in filters_in_s))) x1-->Stat2 ==> (x1 ¥incin filters_in_s) & (FORALL u in x1, v in x1 | (u incs v or v incs u)) & (Un(x1) notin filters_in_s) ELEM ==> Stat3: (x1 ¥incin {f ¥incin pow(s) | Filter(f,s)}) & Stat4: (Un(x1) notin {f ¥incin pow(s) | Filter(f,s)}) Suppose ==> Stat5: not (FORALL y in x1 | Filter(y,s)) y1-->Stat5 ==> (y1 in x1) & (not Filter(y1,s)) ELEM ==> Stat6: y1 in {f ¥incin pow(s) | Filter(f,s)} ()-->Stat6 ==> false; Discharge ==> (FORALL y in x1 | Filter(y,s)) x1-->T415 ==> Filter(Un(x1),s) ()-->Stat4 ==> Stat7: not(Un(x1) ¥incin pow(s)) c-->Stat7 ==> (c in Un(x1)) & (c notin pow(s)) Use_def(Un) ==> Stat8: c in {x: y in x1,x in y} (y2,c2)-->Stat8 ==> (y2 in x1) & (c2 in y2) & (c2 = c) ELEM ==> Stat9: (y2 in {f ¥incin pow(s) | Filter(f,s)}) & (c in y2) ()-->Stat9 ==> Filter(y2,s) Use_def(Filter) ==> false; Discharge ==> (FORALL x ¥incin filters_in_s | ((FORALL u in x,v in x | (u incs v or v incs u)) ¥imp (Un(x) in filters_in_s))) filters_in_s-->T414 ==> Stat10: (FORALL u in filters_in_s | (EXISTS y in filters_in_s | (y incs u) & (FORALL x in filters_in_s | not ((x incs y) & (x /= y))))) Suppose ==> t notin filters_in_s ELEM ==> Stat11: t notin {f ¥incin pow(s) | Filter(f,s)} ()-->Stat11 ==> Stat12: not (t ¥incin pow(s)) Use_def(Filter) ==> false; Discharge ==> t in filters_in_s t-->Stat10 ==> Stat13: (EXISTS y in filters_in_s | (y incs t) & (FORALL x in filters_in_s | not ((x incs y) & (x /= y)))) tm-->Stat13 ==> Stat14: (tm in filters_in_s) & (tm incs t) & Stat15: (FORALL x in filters_in_s | not ((x incs tm) & (x /= tm))) -- -- But it follows using Theorem 416 that $tm$ must be an ultrafilter, and so our theorem is proved. -- Suppose ==> Stat16: not (FORALL x ¥incin pow(s) | ((x incs tm) & Filter(x,s)) ¥imp (x = tm)) t2-->Stat16 ==> (t2 ¥incin pow(s)) & (t2 incs tm) & Filter(t2,s) & (t2 /= tm) t2-->Stat15 ==> Stat17: t2 notin {f ¥incin pow(s) | Filter(f,s)} t2-->Stat17 ==> false; Discharge ==> (FORALL x ¥incin pow(s) | ((x incs tm) & Filter(x,s)) ¥imp (x = tm)) EQUAL ==> Stat18: tm in {f ¥incin pow(s) | Filter(f,s)} ()-->Stat18 ==> Filter(tm,s) (s,tm)-->T416 ==> Stat19: Ultrafilter(tm,s) tm-->Stat1(Stat14,Stat19) ==> false; Discharge ==> QED -- -- ************************************************************************************************ -- Section 13: Formal fractions and rational numbers -- ************************************************************************************************ -- -- We have seen above that the signed integers is a collection of quantities into which the unsigned -- integers can be embedded in a manner preserving all the basic algebraic operations on unsigned integers. -- In this sense, the unsigned integers are an 'extension' of the unsigned integers. -- This is the first of several extensions, each of which serves to simplify some aspect -- of the collection of numbers being extended. As previously noted, extension of the unsigned integers -- to the signed integers serves to simplify the properties of subtraction. Three extensions subsequent to this -- respectively introduce (i) the rational numbers, thereby simplifying division; (ii) the real numbers, -- thereby ensuring that every polynomial which takes on both positive and negative values -- also takes on the zero value; (iii) the complex numbers, thereby ensuring that every polynomial -- other than a simple constant has at least one zero. We shall see that these extended families of numbers -- have many deep properties other than the basic properties noted. -- -- Of these extensions it is the introduction of real numbers which will involve the deepest construction. -- -- In the present section we begin to walk the path outlined above by introducing the rational numbers. -- This is done in two steps. First we introduce the formal fractions and the elementary algebraic -- operations on them. Formal fractions are simply ordered pairs of signed integers $[m,n]$, $m$ being the fraction's -- 'numerator' and $n$ its denominator. Then an eqivalence relation beween fractions is introduced. -- This amounts to the fractions becoming identical when each is reduced to 'lowest terms' by division of -- its nuerator and denoinator by thier greatest common factor, but is more conveniently expressed -- by the condition that -- Def 35: [The set of formal fractions] Fr := {[x,y]: x in Si, y in Si | y /= [0,0]} Def 36: [Equivalence of formal fractions] Same_frac(P,Q) := car(P) ¥S_TIMES cdr(Q) = cdr(P) ¥S_TIMES car(Q) Def 36a: [Nonnegative fraction] Fr_is_nonneg(X) := is_nonneg(car(X) ¥S_TIMES cdr(X)) -- -- Our next few results show that the binary predicate '$Same_frac$' is an equivalence relation. -- We begin by showing that '$Same_frac$' is symmetric and transitive. The proof simply uses the definition -- to our expand our assertion into simple algebraic relationships for signed integers, -- which then follow by elementary algebraic manipulation. -- Theorem 418: [Equivalence of fractions is reflexive and symmetric] (FORALL x in Fr,y in Fr | (Same_frac(x,y) ¥eq Same_frac(y,x)) & Same_frac(x,x)). Proof: Suppose_not ==> Stat1: not (FORALL x in Fr,Y in Fr | (Same_frac(x,y) ¥eq Same_frac(y,x)) & Same_frac(x,x)) (x,y)-->Stat1 ==> (x in Fr) & (y in Fr) & (not(Same_frac(x,y) ¥eq Same_frac(y,x)) or (not Same_frac(x,x))) Use_def(Fr) ==> Stat2: (x in {[u,v]: u in Si, v in Si | v /= [0,0]}) & (y in {[u,v]: u in Si, v in Si | v /= [0,0]}) (a,b,c,d)-->Stat2 ==> Stat3: (x = [a,b]) & (a in Si) & (b in Si) & (y = [c,d]) & (c in Si) & (d in Si) (Stat3)ELEM ==> (car(x) = a) & (cdr(x) = b) (Stat3,Stat3)ELEM ==> (car(y) = c) & (cdr(y) = d) Suppose ==> not Same_frac(x,x) Use_def(Same_frac) ==> (car(x) ¥S_TIMES cdr(x)) /= (cdr(x) ¥S_TIMES car(x)) (car(x),cdr(x))-->T384(Stat1*) ==> false; Discharge ==> not(Same_frac(x,y) ¥eq Same_frac(y,x)) Suppose ==> Same_frac(x,y) & (not Same_frac(y,x)) Use_def(Same_frac) ==> ((car(x) ¥S_TIMES cdr(y)) = (cdr(x) ¥S_TIMES car(y))) & ((car(y) ¥S_TIMES cdr(x)) /= (cdr(y) ¥S_TIMES car(x))) EQUAL ==> (a ¥S_TIMES d = b ¥S_TIMES c) & (c ¥S_TIMES b /= d ¥S_TIMES a) ALGEBRA ==> false; Discharge ==> (not Same_frac(x,y)) & Same_frac(y,x) Use_def(Same_frac) ==> ((car(x) ¥S_TIMES cdr(y)) /= (cdr(x) ¥S_TIMES car(y))) & ((car(y) ¥S_TIMES cdr(x)) = (cdr(y) ¥S_TIMES car(x))) EQUAL ==> (a ¥S_TIMES d /= b ¥S_TIMES c) & (c ¥S_TIMES b = d ¥S_TIMES a) ALGEBRA ==> false; Discharge ==> QED -- Theorem 419: [Equivalence of fractions is transitive] (FORALL x in Fr, y in Fr, wz in Fr | (Same_frac(x,y) & Same_frac(y,wz)) ¥imp Same_frac(x,wz)). Proof: Suppose_not ==> Stat1: not (FORALL x in Fr, y in Fr, wz in Fr | (Same_frac(x,y) & Same_frac(y,wz)) ¥imp Same_frac(x,wz)) (x,y,wz)-->Stat1 ==> (x in Fr) & (y in Fr) & (wz in Fr) & Same_frac(x,y) & Same_frac(y,wz) & (not Same_frac(x,wz)) Use_def(Fr) ==> Stat2: (x in {[u,v]: u in Si, v in Si | v /= [0,0]}) & Stat3:(y in {[u,v]: u in Si, v in Si | v /= [0,0]}) & Stat4:(wz in {[u,v]: u in Si, v in Si | v /= [0,0]}) (a,b)-->Stat2 ==> Stat5: (x = [a,b]) & (a in Si) & (b in Si) (Stat5)ELEM ==> (car(x) = a) & (cdr(x) = b) (c,d)-->Stat3 ==> Stat6: (y = [c,d]) & (c in Si) & (d in Si) & (d /= [0,0]) (Stat6)ELEM ==> (car(y) = c) & (cdr(y) = d) (e,f)-->Stat4 ==> Stat7: (wz = [e,f]) & (e in Si) & (f in Si) (Stat7)ELEM ==> (car(wz) = e) & (cdr(wz) = f) Use_def(Same_frac) ==> ((car(x) ¥S_TIMES cdr(y)) = (cdr(x) ¥S_TIMES car(y))) & ((car(y) ¥S_TIMES cdr(wz)) = (cdr(y) ¥S_TIMES car(wz))) & ((car(x) ¥S_TIMES cdr(wz)) /= (cdr(x) ¥S_TIMES car(wz))) EQUAL ==> (a ¥S_TIMES d = b ¥S_TIMES c) & (c ¥S_TIMES f = d ¥S_TIMES e) & (a ¥S_TIMES f /= b ¥S_TIMES e) EQUAL ==> (a ¥S_TIMES d) ¥S_TIMES f = (b ¥S_TIMES c) ¥S_TIMES f ALGEBRA(Stat5,Stat6,Stat7) ==> ((a ¥S_TIMES d) ¥S_TIMES f = (a ¥S_TIMES f) ¥S_TIMES d) & ((b ¥S_TIMES c) ¥S_TIMES f = b ¥S_TIMES (c ¥S_TIMES f)) EQUAL ==> (a ¥S_TIMES d) ¥S_TIMES f = b ¥S_TIMES (d ¥S_TIMES e) ALGEBRA ==> (a ¥S_TIMES f) ¥S_TIMES d = b ¥S_TIMES (d ¥S_TIMES e) ALGEBRA ==> b ¥S_TIMES (d ¥S_TIMES e) = (b ¥S_TIMES e) ¥S_TIMES d ALGEBRA ==> ((a ¥S_TIMES f) in Si) & ((b ¥S_TIMES e) in Si) ELEM ==> (a ¥S_TIMES f) ¥S_TIMES d = (b ¥S_TIMES e) ¥S_TIMES d (d,a ¥S_TIMES f,b ¥S_TIMES e)-->T409 ==> false; Discharge ==> QED -- -- Now that we know that '$Same_frac$' is an equivalence relationship, we can apply the -- equivalence_classes theory to it, to derive -- APPLY(Eqc_thryvar:Ra,f1_thryvar:Fr_to_Ra) equivalence_classes(R(x,y)->Same_frac(x,y),s->Fr) ==> Theorem 420: [Fractions are equivalent if and only if the rational numbers they define are equal] (FORALL x, y | ((x in Fr) & (y in Fr)) ¥imp ((Same_frac(x,y) ¥eq (Fr_to_Ra(x) = Fr_to_Ra(y))))) & (FORALL x | (x in Ra) ¥imp ((arb(x) in Fr) & (Fr_to_Ra(arb(x)) = x))) & (FORALL x | (x in Fr) ¥imp (Fr_to_Ra(x) in Ra)) & (FORALL x | (x in Fr) ¥imp Same_frac(x,arb(Fr_to_Ra(x)))) -- -- [Note: $Ra$ is the set of rational numbers.] -- Theorem 421: [Every fraction is equivalent to every member of its rational number class] (X in Fr) ¥imp ((Fr_to_Ra(X) in Ra) & Same_frac(X,arb(Fr_to_Ra(X)))). Proof: Suppose_not(x) ==> (x in Fr) & ((Fr_to_Ra(x) notin Ra) or (not(Same_frac(x,arb(Fr_to_Ra(x)))))) T420 ==> Stat1: (FORALL x | (x in Fr) ¥imp (Fr_to_Ra(x) in Ra)) & (FORALL x | (x in Fr) ¥imp (Same_frac(x,arb(Fr_to_Ra(x))))) (x,x)-->Stat1 ==> false; Discharge ==> QED -- Theorem 422: [Alternate version of Theorem 420] ((X in Fr) & (Y in Fr)) ¥imp (Same_frac(X,Y) ¥eq (Fr_to_Ra(X) = Fr_to_Ra(Y))). Proof: Suppose_not(x,y) ==> (x in Fr) & (y in Fr) & (not(Same_frac(x,y) ¥eq (Fr_to_Ra(x) = Fr_to_Ra(y)))) T420 ==> Stat1: (FORALL x, y | (x in Fr) & (y in Fr) ¥imp (Same_frac(x,y) ¥eq (Fr_to_Ra(x) = Fr_to_Ra(y)))) (x,y)-->Stat1 ==> false; Discharge ==> QED -- Theorem 423: [Alternate version of Theorem 421] (Y in Ra) ¥imp ((arb(Y) in Fr) & (Fr_to_Ra(arb(Y)) = Y)). Proof: Suppose_not(y) ==> (y in Ra) & ((arb(y) notin Fr) or (Fr_to_Ra(arb(y)) /= y)) T420 ==> Stat1: (FORALL y | (y in Ra) ¥imp ((arb(y) in Fr) & (Fr_to_Ra(arb(y)) = y))) y-->Stat1 ==> false; Discharge ==> QED -- Def 37: [The zero rational] Ra_0 := Fr_to_Ra([[0,0],[1,0]]) Def 37a: [The unit rational] Ra_1 := Fr_to_Ra([[1,0],[1,0]]) Def 38: [Rational Sum] Def(x ¥Ra_PLUS y) := Fr_to_Ra([(car(arb(x)) ¥S_TIMES cdr(arb(y))) ¥S_PLUS (car(arb(y)) ¥S_TIMES cdr(arb(x))), cdr(arb(x)) ¥S_TIMES cdr(arb(y))]) Def 39: [Rational product] Def(x ¥Ra_TIMES y) := Fr_to_Ra([car(arb(x)) ¥S_TIMES car(arb(y)),cdr(arb(x)) ¥S_TIMES cdr(arb(y))]) Def 40: [Rational reciprocal] Recip(x) := Fr_to_Ra([cdr(arb(x)),car(arb(x))]) Def 41: [Rational quotient] Def(x ¥Ra_OVER y) := x ¥Ra_TIMES Recip(y) Def 42: [Rational negative] Ra_Rev(x) := Fr_to_Ra([S_Rev(car(arb(x))),cdr(arb(x))]) Def 43: [Nonnegative Rational] Ra_is_nonneg(X) := is_nonneg(car(arb(X)) ¥S_TIMES cdr(arb(X))) Def 44: [Rational Subtraction] Def(x ¥Ra_MINUS y) := x ¥Ra_PLUS Ra_Rev(y) -- THEORY Ordered_add(g,e,pluz(x,y),minz(x,y),rvz(x),nneg(x)) (e in g) & (FORALL x in g | (pluz(x,e) = x) & (pluz(x,rvz(x)) = e) & (rvz(x) in g)) (FORALL x in g, y in g | (pluz(x,y) in g) & (pluz(x,y) = pluz(y,x)) & (pluz(x,rvz(y)) = minz(x,y))) (FORALL x in g, y in g, z in g | pluz(pluz(x,y),z) = pluz(x,pluz(y,z))) (FORALL x in g, y in g | ((nneg(x) & nneg(y)) ¥imp (nneg(pluz(x,y))))) (FORALL x in g | (nneg(x) or nneg(rvz(x))) & ((nneg(x) & nneg(rvz(x))) ¥imp (x = e))) END Ordered_add; -- ENTER_THEORY Ordered_add [Note that no theorems need to be proved since a decision algorithm is available] Def 00j: [Generic 'greater or equal' comparison] GE_thryvar(X,Y) := nneg(pluz(X,rvz(Y))) Def 00k: [Generic 'less or equal' comparison] LE_thryvar(X,Y) := GE_thryvar(Y,X) Def 00m: [Generic 'greater than' comparison] GT_thryvar(X,Y) := (GE_thryvar(X,Y) & (X /= Y)) Def 00n: [Generic 'less than' comparison] LT_thryvar(X,Y) := GT_thryvar(Y,X) -- Theorem Ordered_add.0: [Echo of relator definitions] (GE_thryvar(X,Y) ¥eq nneg(pluz(X,rvz(Y)))) & (LE_thryvar(X,Y) ¥eq GE_thryvar(Y,X)) & (GT_thryvar(X,Y) ¥eq (GE_thryvar(X,Y) & (X /= Y))) & (LT_thryvar(X,Y) ¥eq GT_thryvar(Y,X)). Proof: Suppose_not(x,y) ==> AUTO Use_def(GE_thryvar) ==> GE_thryvar(x,y) ¥eq nneg(pluz(x,rvz(y))) Use_def(LE_thryvar) ==> LE_thryvar(x,y) ¥eq GE_thryvar(y,x) Use_def(GT_thryvar) ==> GT_thryvar(x,y) ¥eq (GE_thryvar(x,y) & (x /= y)) Use_def(LT_thryvar) ==> LT_thryvar(x,y) ¥eq GT_thryvar(y,x) Discharge ==> QED -- -- Theorem Ordered_add.1: [Interface to Otter-based THEORY of orderedGroups] (LE_thryvar(X,Y) ¥eq nneg(pluz(Y,rvz(X)))) & (((X in g) & (Y in g)) ¥imp (GT_thryvar(X,Y) ¥eq (nneg(pluz(X,rvz(Y))) & (X /= Y)))) & (((X in g) & (Y in g)) ¥imp (GT_thryvar(X,Y) ¥eq (nneg(minz(X,Y)) & (X /= Y)))). Proof: Suppose_not(x,y) ==> (LE_thryvar(x,y) ¥eq (not nneg(pluz(y,rvz(x))))) or ((x in g) & (y in g) & ((GT_thryvar(x,y) ¥eq ((not nneg(pluz(x,rvz(y)))) or (x = y))))) or ((x in g) & (y in g) & ((GT_thryvar(x,y) ¥eq ((not nneg(minz(x,y))) or (x = y))))) Suppose ==> LE_thryvar(x,y) ¥eq (not nneg(pluz(y,rvz(x)))) Use_def(LE_thryvar) ==> LE_thryvar(x,y) ¥eq GE_thryvar(y,x) Use_def(GE_thryvar) ==> GE_thryvar(y,x) ¥eq nneg(pluz(y,rvz(x))) EQUAL ==> false; Discharge ==> ((x in g) & (y in g) & ((GT_thryvar(x,y) ¥eq ((not nneg(pluz(x,rvz(y)))) or (x = y))))) or ((x in g) & (y in g) & ((GT_thryvar(x,y) ¥eq ((not nneg(minz(x,y))) or (x = y))))) Assump ==> Stat1: (FORALL x in g, y in g | (pluz(x,y) in g) & (pluz(x,y) = pluz(y,x)) & (pluz(x,rvz(y)) = minz(x,y))) (x,y)-->Stat1 ==> pluz(x,rvz(y)) = minz(x,y) EQUAL ==> ((x in g) & (y in g) & ((GT_thryvar(x,y) ¥eq ((not nneg(pluz(x,rvz(y)))) or (x = y))))) Use_def(GT_thryvar) ==> ((x in g) & (y in g) & (((GE_thryvar(x,y) & (x /= y)) ¥eq ((not nneg(pluz(x,rvz(y)))) or (x = y))))) Use_def(GE_thryvar) ==> false; Discharge ==> QED -- Theorem Ordered_add.2: [The ordering by $GE_thryvar$ is a linear ordering] ((X in g) & (Y in g) & ((X = Y) or (not GE_thryvar(X,Y)))) ¥imp GE_thryvar(Y,X). Proof: Suppose_not(cp,c) ==> Stat1: (c in g) & (cp in g) & (not GE_thryvar(c,cp)) & ((c = cp) or (not GE_thryvar(cp,c))) Use_def(GE_thryvar) ==> (not nneg(pluz(c,rvz(cp)))) & ((c = cp) or (not nneg(pluz(cp,rvz(c))))) Assump ==> (e in g) & Stat2: (FORALL x in g | (pluz(x,e) = x) & (pluz(x,rvz(x)) = e) & (rvz(x) in g)) Assump ==> Stat3: (FORALL x in g, y in g | (pluz(x,y) in g) & (pluz(x,y) = pluz(y,x)) & (pluz(x,rvz(y)) = minz(x,y))) Suppose ==> Stat4: not(FORALL x in g | pluz(e,x) = x) x-->Stat4 ==> (x in g) & (pluz(e,x) /= x) (x,e)-->Stat3 ==> pluz(x,e) /= x x-->Stat2 ==> false; Discharge ==> Stat5: (FORALL x in g | pluz(e,x) = x) Assump ==> Stat6: (FORALL x in g | (nneg(x) or nneg(rvz(x))) & ((nneg(x) & nneg(rvz(x))) ¥imp (x = e))) Suppose ==> c = cp EQUAL ==> (not nneg(pluz(c,rvz(c)))) c-->Stat2 ==> pluz(c,rvz(c)) = e EQUAL ==> (not nneg(e)) e-->Stat2 ==> rvz(e) in g (rvz(e))-->Stat5 ==> pluz(e,rvz(e)) = rvz(e) e-->Stat2 ==> pluz(e,rvz(e)) = e EQUAL ==> rvz(e) = e e-->Stat6 ==> nneg(e) or nneg(rvz(e)) EQUAL ==> false; Discharge ==> (not nneg(pluz(cp,rvz(c)))) c-->Stat2 ==> Stat7: rvz(c) in g cp-->Stat2 ==> Stat8: rvz(cp) in g (c,rvz(cp))-->Stat3 ==> pluz(c,rvz(cp)) in g (cp,rvz(c))-->Stat3 ==> pluz(cp,rvz(c)) in g (pluz(c,rvz(cp)))-->Stat6 ==> Stat9: nneg(rvz(pluz(c,rvz(cp)))) (pluz(cp,rvz(c)))-->Stat6 ==> nneg(rvz(pluz(cp,rvz(c)))) (pluz(c,rvz(cp)))-->Stat2 ==> rvz(pluz(c,rvz(cp))) in g (pluz(cp,rvz(c)))-->Stat2 ==> rvz(pluz(cp,rvz(c))) in g Assump ==> Stat10: (FORALL x in g, y in g | ((nneg(x) & nneg(y)) ¥imp (nneg(pluz(x,y))))) (rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c))))-->Stat10(Stat9) ==> nneg(pluz(rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c))))) (rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c))))-->Stat3(Stat9) ==> pluz(rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c)))) in g (cp,rvz(c))-->Stat3(Stat1,Stat7) ==> pluz(cp,rvz(c)) = pluz(rvz(c),cp) (c,rvz(cp))-->Stat3(Stat1,Stat8) ==> pluz(c,rvz(cp)) = pluz(rvz(cp),c) EQUAL ==> nneg(rvz(pluz(rvz(cp),c))) & (not nneg(pluz(rvz(c),cp))) & (rvz(pluz(rvz(cp),c)) in g) (rvz(pluz(rvz(cp),c)),pluz(rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c)))))-->Stat10 ==> nneg(pluz(rvz(pluz(rvz(cp),c)),pluz(rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c)))))) Assump ==> Stat11: (FORALL x in g, y in g, z in g | pluz(pluz(x,y),z) = pluz(x,pluz(y,z))) Suppose ==> pluz(rvz(pluz(rvz(cp),c)),pluz(rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c))))) /= pluz(rvz(c),cp) Suppose ==> Stat12: not(FORALL x in g, y in g | pluz(rvz(x),pluz(x,y)) = y) (x1,y1)-->Stat12 ==> (x1 in g) & (y1 in g) & (pluz(rvz(x1),pluz(x1,y1)) /= y1) x1-->Stat2 ==> rvz(x1) in g (rvz(x1),x1,y1)-->Stat11(Stat12) ==> pluz(rvz(x1),pluz(x1,y1)) = pluz(pluz(rvz(x1),x1),y1) (rvz(x1),x1)-->Stat3 ==> pluz(rvz(x1),x1) = pluz(x1,rvz(x1)) x1-->Stat2 ==> pluz(x1,rvz(x1)) = e y1-->Stat5 ==> pluz(e,y1) = y1 EQUAL(Stat12) ==> false; Discharge ==> Stat13: (FORALL x in g, y in g | pluz(rvz(x),pluz(x,y)) = y) Suppose ==> Stat14: not(FORALL x in g, y in g | rvz(pluz(x,rvz(y))) = pluz(y,rvz(x))) (x2,y2)-->Stat14 ==> (x2 in g) & (y2 in g) & (rvz(pluz(x2,rvz(y2))) /= pluz(y2,rvz(x2))) Suppose ==> Stat15: not(FORALL x in g | rvz(rvz(x)) = x) x3-->Stat15 ==> (x3 in g) & (rvz(rvz(x3)) /= x3) x3-->Stat2 ==> (rvz(x3) in g) & (pluz(x3,rvz(x3)) = e) (rvz(x3),x3)-->Stat3 ==> pluz(rvz(x3),x3) = pluz(x3,rvz(x3)) (rvz(x3),x3)-->Stat13 ==> pluz(rvz(rvz(x3)),pluz(rvz(x3),x3)) = x3 (rvz(x3))-->Stat2 ==> rvz(rvz(x3)) in g (rvz(rvz(x3)))-->Stat2 ==> pluz(rvz(rvz(x3)),e) = rvz(rvz(x3)) EQUAL(Stat15) ==> false; Discharge ==> Stat16: (FORALL x in g | rvz(rvz(x)) = x) Suppose ==> Stat17: not(FORALL x in g, y in g | pluz(rvz(x),pluz(y,x)) = y) (x4,y4)-->Stat17 ==> (x4 in g) & (y4 in g) & (pluz(rvz(x4),pluz(y4,x4)) /= y4) (x4,y4)-->Stat3 ==> pluz(y4,x4) = pluz(x4,y4) (x4,y4)-->Stat13 ==> pluz(rvz(x4),pluz(x4,y4)) = y4 EQUAL(Stat17) ==> false; Discharge ==> Stat18: (FORALL x in g, y in g | pluz(rvz(x),pluz(y,x)) = y) Suppose ==> Stat19: not(FORALL x in g, y in g | pluz(rvz(pluz(x,y)),x) = rvz(y)) (x5,y5)-->Stat19 ==> (x5 in g) & (y5 in g) & (pluz(rvz(pluz(x5,y5)),x5) /= rvz(y5)) (x5,y5)-->Stat3 ==> pluz(x5,y5) in g (pluz(x5,y5))-->Stat2 ==> rvz(pluz(x5,y5)) in g y5-->Stat2 ==> rvz(y5) in g (pluz(x5,y5),rvz(y5))-->Stat18 ==> pluz(rvz(pluz(x5,y5)),pluz(rvz(y5),pluz(x5,y5))) = rvz(y5) (y5,x5)-->Stat18 ==> pluz(rvz(y5),pluz(x5,y5)) = x5 EQUAL(Stat19) ==> false; Discharge ==> Stat20: (FORALL x in g, y in g | pluz(rvz(pluz(x,y)),x) = rvz(y)) Suppose ==> Stat21: not(FORALL x in g, y in g | rvz(pluz(x,y)) = pluz(rvz(x),rvz(y)) ) (x6,y6)-->Stat21 ==> (x6 in g) & (y6 in g) & (rvz(pluz(x6,y6)) /= pluz(rvz(x6),rvz(y6))) (x6,y6)-->Stat3 ==> pluz(x6,y6) in g y6-->Stat2 ==> rvz(y6) in g (rvz(y6),pluz(x6,y6))-->Stat20 ==> pluz(rvz(pluz(rvz(y6),pluz(x6,y6))),rvz(y6)) = rvz(pluz(x6,y6)) (y6,x6)-->Stat18 ==> pluz(rvz(y6),pluz(x6,y6)) = x6 EQUAL(Stat21) ==> false; Discharge ==> Stat22: (FORALL x in g, y in g | rvz(pluz(x,y)) = pluz(rvz(x),rvz(y))) y2-->Stat2 ==> rvz(y2) in g (x2,rvz(y2))-->Stat22 ==> rvz(pluz(x2,rvz(y2))) = pluz(rvz(x2),rvz(rvz(y2))) y2-->Stat16 ==> rvz(rvz(y2)) = y2 x2-->Stat2 ==> rvz(x2) in g (rvz(x2),y2)-->Stat3 ==> pluz(rvz(x2),y2) = pluz(y2,rvz(x2)) EQUAL(Stat14) ==> false; Discharge ==> Stat23: (FORALL x in g, y in g | rvz(pluz(x,rvz(y))) = pluz(y,rvz(x))) (c,cp)-->Stat23 ==> Stat24: rvz(pluz(c,rvz(cp))) = pluz(cp,rvz(c)) Suppose ==> Stat25: pluz(rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c)))) /= e (cp,c)-->Stat23 ==> rvz(pluz(cp,rvz(c))) = pluz(c,rvz(cp)) (cp,rvz(c),pluz(c,rvz(cp)))-->Stat11 ==> pluz(pluz(cp,rvz(c)),pluz(c,rvz(cp))) = pluz(cp,pluz(rvz(c),pluz(c,rvz(cp)))) (c,rvz(cp))-->Stat13 ==> pluz(rvz(c),pluz(c,rvz(cp))) = rvz(cp) cp-->Stat2 ==> pluz(cp,rvz(cp)) = e EQUAL(Stat24) ==> false; Discharge ==> Stat26: pluz(rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c)))) = e (c,rvz(cp))-->Stat3 ==> pluz(c,rvz(cp)) = pluz(rvz(cp),c) (cp,rvz(c))-->Stat3 ==> pluz(cp,rvz(c)) = pluz(rvz(c),cp) (c,rvz(cp))-->Stat23 ==> rvz(pluz(c,rvz(cp))) = pluz(cp,rvz(c)) (pluz(rvz(c),cp))-->Stat2 ==> pluz(pluz(rvz(c),cp),e) = pluz(rvz(c),cp) EQUAL(Stat11) ==> false; Discharge ==> pluz(rvz(pluz(rvz(cp),c)),pluz(rvz(pluz(c,rvz(cp))),rvz(pluz(cp,rvz(c))))) = pluz(rvz(c),cp) EQUAL ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY Ordered_add -- --THEORY Ordered_add(g,e,pluz(i,j),minz(i,j),rvz(i),nneg(j)); -- (e in g) & (FORALL x in g | (pluz(x,e) = x) & (pluz(x,rvz(x)) = e) & (rvz(x) in g)) -- (FORALL x in g, y in g | (pluz(x,y) in g) & (pluz(x,y) = pluz(y,x)) & (pluz(x,rvz(y)) = minz(x,y))) -- (FORALL x in g, y in g, z in g | pluz(pluz(x,y),z) = pluz(x,pluz(y,z))) -- (FORALL x in g, y in g | (nneg(x) & nneg(y)) ¥imp nneg(pluz(x,y))) -- (FORALL x in g | (nneg(x) or nneg(rvz(x))) & ((nneg(x) & nneg(rvz(x))) ¥imp (x = e))) --==>(GE_thryvar,LE_thryvar,GT_thryvar,LT_thryvar) -- (FORALL x,y | GE_thryvar(x,y) ¥eq nneg(x ¥pluz rvz(y))) -- (FORALL x,y | LE_thryva(x,y) ¥eq GE_thryvar(y,x)) -- (FORALL x,y | GT_thryvar(x,y) ¥eq (GE_thryvar(x,y) & (x /= y))) -- (FORALL x,y | LT_thryvar(x,y) ¥eq GT_thryvar(y,x)) -- (FORALL x,y | (LE_thryvar(x,y) ¥eq nneg(y ¥pluz rvz(x)))) -- (FORALL x,y | ((x in g) & (y in g)) ¥imp (GT_thryvar(x,y) ¥eq (nneg(x ¥pluz rvz(y)) & (x /= y)))) -- (FORALL x,y | ((x in g) & (y in g)) ¥imp (GT_thryvar(x,y) ¥eq (nneg(x ¥minz y) & (x /= y)))) -- (FORALL x,y | ((x in g) & (y in g) & ((x = y) or (not GE_thryvar(x,y)))) ¥imp GE_thryvar(y,x)) --END Ordered_add; -- Theorem 424: [If a signed integer and its additive inverse are both nonnegative, the signed integer is zero] (X in Si) ¥imp ((is_nonneg(X) or is_nonneg(S_Rev(X))) & ((is_nonneg(X) & is_nonneg(S_Rev(X))) ¥imp (X = [0,0]))). Proof: Suppose_not(x) ==> Stat1: (x in Si) & ((not(is_nonneg(x) or is_nonneg(S_Rev(x)))) or ((is_nonneg(x) & is_nonneg(S_Rev(x))) & (x /= [0,0]))) x-->T369 ==> Stat2: (x = [car(x),cdr(x)]) & (car(x) = 0 or cdr(x) = 0) & (car(x) in Za) & (cdr(x) in Za) Use_def(is_nonneg) ==> Stat3: (is_nonneg(x) ¥eq (car(x) incs cdr(x))) & (is_nonneg(S_Rev(x)) ¥eq (car(S_Rev(x)) incs cdr(S_Rev(x)))) Use_def(S_Rev) ==> Stat4: S_Rev(x) = [cdr(x),car(x)] (Stat4)ELEM ==> (car(S_Rev(x)) = cdr(x)) & (cdr(S_Rev(x)) = car(x)) (Stat2*)ELEM ==> Stat5: is_nonneg(x) or is_nonneg(S_Rev(x)) (Stat1,Stat5*)ELEM ==> is_nonneg(x) & is_nonneg(S_Rev(x)) & (x /= [0,0]) ELEM ==> Stat6: car(x) = cdr(x) (Stat2,Stat6)ELEM ==> (car(x) = 0) & (cdr(x) = 0) EQUAL ==> false; Discharge ==> QED -- Theorem 425: [The sum of two non-negative signed integers is non-negative] (((X in Si) & (Y in Si) & is_nonneg(X) & is_nonneg(Y))) ¥imp (is_nonneg(X ¥S_PLUS Y) & is_nonneg(X ¥S_TIMES Y)). Proof: Suppose_not(x,y) ==> (x in Si) & (y in Si) & is_nonneg(x) & is_nonneg(y) & (not(is_nonneg(x ¥S_PLUS y) & is_nonneg(x ¥S_TIMES y))) x-->T369 ==> Stat1: (x = [car(x),cdr(x)]) & (car(x) = 0 or cdr(x) = 0) & (car(x) in Za) & (cdr(x) in Za) y-->T369 ==> Stat2: (y = [car(y),cdr(y)]) & (car(y) = 0 or cdr(y) = 0) & (car(y) in Za) & (cdr(y) in Za) Use_def(is_nonneg) ==> Stat3: (car(x) incs cdr(x)) & (car(y) incs cdr(y)) (Stat1,Stat2,Stat3*)ELEM ==> Stat4: (cdr(x) = 0) & (cdr(y) = 0) EQUAL ==> Stat5: (x = [car(x),0]) & (y = [car(y),0]) Use_def(¥S_PLUS) ==> x ¥S_PLUS y = Red([car(x) ¥PLUS car(y),cdr(x) ¥PLUS cdr(y)]) EQUAL ==> x ¥S_PLUS y = Red([car(x) ¥PLUS car(y),0 ¥PLUS 0]) ALGEBRA ==> (0 ¥PLUS 0 = 0) & (car(x) ¥PLUS car(y) in Za) EQUAL ==> x ¥S_PLUS y = Red([car(x) ¥PLUS car(y),0]) (car(x) ¥PLUS car(y))-->T387 ==> Stat6: x ¥S_PLUS y = [car(x) ¥PLUS car(y),0] (Stat6)ELEM ==> car(x ¥S_PLUS y) incs cdr(x ¥S_PLUS y) Use_def(is_nonneg) ==> is_nonneg(x ¥S_PLUS y) Use_def(¥S_TIMES) ==> x ¥S_TIMES y = Red([(car(x) ¥TIMES car(y)) ¥PLUS (cdr(x) ¥TIMES cdr(y)),(car(x) ¥TIMES cdr(y)) ¥PLUS (car(y) ¥TIMES cdr(x))]) EQUAL ==>x ¥S_TIMES y = Red([(car(x) ¥TIMES car(y)) ¥PLUS (0 ¥TIMES 0),(car(x) ¥TIMES 0) ¥PLUS (car(y) ¥TIMES 0)]) ALGEBRA ==> (((car(x) ¥TIMES car(y)) ¥PLUS (0 ¥TIMES 0)) = (car(x) ¥TIMES car(y))) & ((car(x) ¥TIMES 0) ¥PLUS (car(y) ¥TIMES 0) = 0) & ((car(x) ¥TIMES car(y)) in Za) EQUAL ==> (x ¥S_TIMES y = Red([car(x) ¥TIMES car(y),0])) (car(x) ¥TIMES car(y))-->T387 ==> Stat7: x ¥S_TIMES y = [car(x) ¥TIMES car(y),0] (Stat7)ELEM ==> car(x ¥S_TIMES y) incs cdr(x ¥S_TIMES y) Use_def(is_nonneg) ==> is_nonneg(x ¥S_TIMES y) Discharge ==> QED -- -- The following compound of earlier theorems is derived -- uniquely as a trigger for the THEORY Ordered_add. -- Theorem 426: ([0,0] in Si) & (FORALL x in Si | ((x ¥S_PLUS [0,0]) = x) & ((x ¥S_PLUS S_Rev(x)) = [0,0]) & (S_Rev(x) in Si)) & (FORALL x in Si, y in Si | ((x ¥S_PLUS y) in Si) & ((x ¥S_PLUS y) = (y ¥S_PLUS x)) & ((x ¥S_PLUS S_Rev(y)) = (x ¥S_MINUS y))) & (FORALL x in Si, y in Si, z in Si | ((x ¥S_PLUS y) ¥S_PLUS z) = (x ¥S_PLUS (y ¥S_PLUS z))) & (FORALL x in Si, y in Si | (is_nonneg(x) & is_nonneg(y)) ¥imp is_nonneg(x ¥S_PLUS y)) & (FORALL x in Si | (is_nonneg(x) or is_nonneg(S_Rev(x))) & ((is_nonneg(x) & is_nonneg(S_Rev(x))) ¥imp (x = [0,0]))). Proof: Suppose_not ==> AUTO T368 ==> [0,0] in Si Suppose ==> Stat1: not(FORALL x in Si | ((x ¥S_PLUS [0,0]) = x) & ((x ¥S_PLUS S_Rev(x)) = [0,0]) & (S_Rev(x) in Si)) x1-->Stat1(Stat1*) ==> (x1 in Si) & (((x1 ¥S_PLUS [0,0]) /= x1) or ((x1 ¥S_PLUS S_Rev(x1)) /= [0,0]) or (S_Rev(x1) notin Si)) x1-->T405(Stat1*) ==> (x1 ¥S_PLUS [0,0]) = x1 x1-->T391(Stat1*) ==> (S_Rev(x1) in Si) & ((S_Rev(x1) ¥S_PLUS x1) = [0,0]) (x1,S_Rev(x1))-->T381(Stat1*) ==> false; Discharge ==> (FORALL x in Si | ((x ¥S_PLUS [0,0]) = x) & ((x ¥S_PLUS S_Rev(x)) = [0,0]) & (S_Rev(x) in Si)) Suppose ==> Stat2: not(FORALL x in Si, y in Si | ((x ¥S_PLUS y) in Si) & ((x ¥S_PLUS y) = (y ¥S_PLUS x)) & ((x ¥S_PLUS S_Rev(y)) = (x ¥S_MINUS y))) (x2,y2)-->Stat2(Stat2*) ==> (x2 in Si) & (y2 in Si) & (((x2 ¥S_PLUS y2) notin Si) or ((x2 ¥S_PLUS y2) /= (y2 ¥S_PLUS x2)) or ((x2 ¥S_PLUS S_Rev(y2)) /= (x2 ¥S_MINUS y2))) (x2,y2)-->T371(Stat2*) ==> (x2 ¥S_PLUS y2) in Si (x2,y2)-->T381(Stat2*) ==> (x2 ¥S_PLUS y2) = (y2 ¥S_PLUS x2) (x2,y2)-->T398(Stat2*) ==> false; Discharge ==> (FORALL x in Si, y in Si | ((x ¥S_PLUS y) in Si) & ((x ¥S_PLUS y) = (y ¥S_PLUS x)) & ((x ¥S_PLUS S_Rev(y)) = (x ¥S_MINUS y))) Suppose ==> Stat3: not(FORALL x in Si, y in Si, z in Si | ((x ¥S_PLUS y) ¥S_PLUS z) = (x ¥S_PLUS (y ¥S_PLUS z))) (x3,y3,z3)-->Stat3(Stat3*) ==> (x3 in Si) & (y3 in Si) & (z3 in Si) & (((x3 ¥S_PLUS y3) ¥S_PLUS z3) /= (x3 ¥S_PLUS (y3 ¥S_PLUS z3))) (z3,x3,y3)-->T385(Stat3*) ==> false; Discharge ==> (FORALL x in Si, y in Si, z in Si | ((x ¥S_PLUS y) ¥S_PLUS z) = (x ¥S_PLUS (y ¥S_PLUS z))) Suppose ==> Stat4: not(FORALL x in Si, y in Si | (is_nonneg(x) & is_nonneg(y)) ¥imp is_nonneg(x ¥S_PLUS y)) (x4,y4)-->Stat4(Stat4*) ==> (x4 in Si) & (y4 in Si) & is_nonneg(x4) & is_nonneg(y4) & (not is_nonneg(x4 ¥S_PLUS y4)) (x4,y4)-->T425(Stat4*) ==> false; Discharge ==> Stat5: not(FORALL x in Si | (is_nonneg(x) or is_nonneg(S_Rev(x))) & ((is_nonneg(x) & is_nonneg(S_Rev(x))) ¥imp (x = [0,0]))) x5-->Stat5(Stat5*) ==> (x5 in Si) & ((not(is_nonneg(x5) or is_nonneg(S_Rev(x5)))) or (not((is_nonneg(x5) & is_nonneg(S_Rev(x5))) ¥imp (x5 = [0,0])))) x5-->T424(Stat5*) ==> false; Discharge ==> QED -- APPLY(GE_thryvar:S_GE,LE_thryvar:S_LE,GT_thryvar:S_GT,LT_thryvar:S_LT) Ordered_add(g->Si,e->[0,0],pluz(i,j)->(i ¥S_PLUS j),minz(i,j)->(i ¥S_MINUS j),rvz(i)->S_Rev(i),nneg(j)->is_nonneg(j)) ==> Theorem 427: [The ordering of two signed integers is defined by the sign of their differences] (FORALL x, y | (S_GE(x,y) ¥eq is_nonneg(x ¥S_PLUS S_Rev(y))) & (S_LE(x,y) ¥eq S_GE(y,x)) & (S_GT(x,y) ¥eq (S_GE(x,y) & (x /= y))) & (S_LT(x,y) ¥eq S_GT(y,x))) -- Def 00o: Def(X ¥S_GE Y) := S_GE(X,Y) Def 00p: Def(X ¥S_LE Y) := S_LE(X,Y) Def 00q: Def(X ¥S_GT Y) := S_GT(X,Y) Def 00r: Def(X ¥S_LT Y) := S_LT(X,Y) -- Theorem 428: [The ordering of two signed integers is defined by the sign of their differences] ((X ¥S_GE Y) ¥eq is_nonneg(X ¥S_PLUS S_Rev(Y))) & ((X ¥S_LE Y) ¥eq (Y ¥S_GE X)) & ((X ¥S_GT Y) ¥eq ((X ¥S_GE Y) & (X /= Y))) & ((X ¥S_LT Y) ¥eq (Y ¥S_GT X)). Proof: Suppose_not(x,y) ==> AUTO T427 ==> (FORALL x, y | (S_GE(x,y) ¥eq is_nonneg(x ¥S_PLUS S_Rev(y))) & (S_LE(x,y) ¥eq S_GE(y,x)) & (S_GT(x,y) ¥eq (S_GE(x,y) & (x /= y))) & (S_LT(x,y) ¥eq S_GT(y,x))) Use_def(¥S_GE) ==> ((x ¥S_GE y) ¥eq S_GE(x,y)) & ((y ¥S_GE x) ¥eq S_GE(y,x)) Use_def(¥S_LE) ==> (x ¥S_LE y) ¥eq S_LE(x,y) Use_def(¥S_GT) ==> ((x ¥S_GT y) ¥eq S_GT(x,y)) & ((y ¥S_GT x) ¥eq S_GT(y,x)) Use_def(¥S_LT) ==> (x ¥S_LT y) ¥eq S_LT(x,y) EQUAL ==> Stat1: (FORALL x, y | ((x ¥S_GE y) ¥eq is_nonneg(x ¥S_PLUS S_Rev(y))) & ((x ¥S_LE y) ¥eq (y ¥S_GE x)) & ((x ¥S_GT y) ¥eq ((x ¥S_GE y) & (x /= y))) & ((x ¥S_LT y) ¥eq (y ¥S_GT x))) (x,y)-->Stat1(*) ==> false; Discharge ==> QED -- Theorem 429: [The square of any signed integer is non-negative] (X in Si) ¥imp is_nonneg(X ¥S_TIMES X). Proof: Suppose_not(x) ==> (x in Si) & (not is_nonneg(x ¥S_TIMES x)) Suppose ==> is_nonneg(x) (x,x)-->T425 ==> false; Discharge ==> not is_nonneg(x) x-->T424 ==> is_nonneg(S_Rev(x)) x-->T391 ==> S_Rev(x) in Si (S_Rev(x),S_Rev(x))-->T425 ==> is_nonneg(S_Rev(x) ¥S_TIMES S_Rev(x)) ALGEBRA ==> S_Rev(x) ¥S_TIMES S_Rev(x) = x ¥S_TIMES x EQUAL ==> false; Discharge ==> QED -- Theorem 430: [The product of signed integers $x,y$ of which $x$ is positive is non-negative iff $y$ is non-negative] ((X in Si) & (Y in Si) & (X /= [0,0]) & is_nonneg(X)) ¥imp (is_nonneg(X ¥S_TIMES Y) ¥eq is_nonneg(Y)). Proof: Suppose_not(x,y) ==> (x in Si) & (y in Si) & (x /= [0,0]) & is_nonneg(x) & (not (is_nonneg(x ¥S_TIMES y) ¥eq is_nonneg(y))) Suppose ==> is_nonneg(y) (x,y)-->T425 ==> false; Discharge ==> (not is_nonneg(y)) & is_nonneg(x ¥S_TIMES y) y-->T424 ==> is_nonneg(S_Rev(y)) y-->T391 ==> S_Rev(y) in Si (x,S_Rev(y))-->T425 ==> is_nonneg(x ¥S_TIMES S_Rev(y)) ALGEBRA ==> ((x ¥S_TIMES S_Rev(y)) = S_Rev(x ¥S_TIMES y)) & (x ¥S_TIMES y in Si) EQUAL ==> is_nonneg(S_Rev(x ¥S_TIMES y)) (x ¥S_TIMES y)-->T424 ==> x ¥S_TIMES y = [0,0] (y,x)-->T407 ==> Stat1: y = [0,0] Use_def(is_nonneg) ==> not(car(y) incs cdr(y)) (Stat1)Discharge ==> QED -- Theorem 431: [Fractions are pairs of signed integers with non-zero denominator] (X in Fr) ¥eq ((X = [car(X),cdr(X)]) & (car(X) in Si) & (cdr(X) in Si) & (cdr(X) /= [0,0])). Proof: Suppose_not(x) ==> not((x in Fr) ¥eq ((x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]))) Suppose ==> Stat1: (x in Fr) & (not((x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]))) Use_def(Fr) ==> Stat2: x in {[u,y]: u in Si, y in Si | y /= [0,0]} (u,y)-->Stat2 ==> Stat3: (x = [u,y]) & (u in Si) & (y in Si) & (y /= [0,0]) (Stat3*)ELEM ==> Stat4: x = [u,y] (Stat4)ELEM ==> Stat5: (x = [car(x),cdr(x)]) & (car(x) = u) & (cdr(x) = y) (Stat3,Stat5*)ELEM ==> Stat6: (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]) (Stat1,Stat5,Stat6*)Discharge ==> (x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]) & (not(x in Fr)) Use_def(Fr) ==> Stat7: x notin {[u,y]: u in Si, y in Si | y /= [0,0]} (car(x),cdr(x))-->Stat7 ==> not((x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0])) Discharge ==> QED -- Theorem 432: [Fractions are pairs of signed integers with non-zero denominator, 2] ((X in Si) & (Y in Si)) ¥imp (([X,Y] in Fr) ¥eq (Y /= [0,0])). Proof: Suppose_not(x0,y0) ==> AUTO (x0,y0)-->T9(Stat1*) ==> Stat1: (car([x0,y0]) = x0) & (cdr([x0,y0]) = y0) Suppose ==> [x0,y0] in Fr ([x0,y0])-->T431(*) ==> false; Discharge ==> [x0,y0] notin Fr (x0,y0)-->T10(Stat2*) ==> Stat2: [x0,y0] = [car([x0,y0]),cdr([x0,y0])] ([x0,y0])-->T431(*) ==> false; Discharge ==> QED -- Theorem 433: [Rational numbers are classes of pairs of signed integers] (N in Ra) ¥imp ((arb(N) in Fr) & (arb(N) = [car(arb(N)),cdr(arb(N))]) & (car(arb(N)) in Si) & (cdr(arb(N)) in Si) & (cdr(arb(N)) /= [0,0])). Proof: Suppose_not(n) ==> (n in Ra) & (not((arb(n) in Fr) & (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]))) n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) (arb(n))-->T431 ==> false; Discharge ==> QED -- -- Next, as a preliminary toward consideration of the properties of products of rational numbers, -- we prove that if two pairs $x$, $y$ and $w$, $wz$ of formal fractions are given, with $Same_frac(x,y)$ -- and similarly for $x$, $y$, then the formal product of $x$ by $w$ represents the same -- rational number as the formal product of $y$ by $wz$. -- Theorem 434: [Fractions are equivalent if their cross-products are equal] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & (W in Fr) & (Z in Fr) & Same_frac(W,Z)) ¥imp Same_frac([(car(X) ¥S_TIMES cdr(W)) ¥S_PLUS (car(W) ¥S_TIMES cdr(X)),cdr(X) ¥S_TIMES cdr(W)], [(car(Y) ¥S_TIMES cdr(Z)) ¥S_PLUS (car(Z) ¥S_TIMES cdr(Y)),cdr(Y) ¥S_TIMES cdr(Z)]). Proof: Suppose_not(x,y,w,wz) ==> (x in Fr) & (y in Fr) & Same_frac(x,y) & (w in Fr) & (wz in Fr) & Same_frac(w,wz) & (not Same_frac([(car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)),cdr(x) ¥S_TIMES cdr(w)], [(car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)),cdr(y) ¥S_TIMES cdr(wz)])) x-->T431 ==> (x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) y-->T431 ==> (y = [car(y),cdr(y)]) & (car(y) in Si) & (cdr(y) in Si) w-->T431 ==> (w = [car(w),cdr(w)]) & (car(w) in Si) & (cdr(w) in Si) wz-->T431 ==> (wz = [car(wz),cdr(wz)]) & (car(wz) in Si) & (cdr(wz) in Si) Use_def(Same_frac) ==> (car(x) ¥S_TIMES cdr(y) = cdr(x) ¥S_TIMES car(y)) & (car(w) ¥S_TIMES cdr(wz) = cdr(w) ¥S_TIMES car(wz)) Loc_def ==> Stat1: prod1 = [(car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)),cdr(x) ¥S_TIMES cdr(w)] (Stat1)ELEM ==> Stat2: car(prod1) = (car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)) (Stat1)ELEM ==> Stat3: cdr(prod1) = cdr(x) ¥S_TIMES cdr(w) Loc_def ==> Stat4: prod2 = [(car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)),cdr(y) ¥S_TIMES cdr(wz)] (Stat4)ELEM ==> Stat5: car(prod2) = (car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)) (Stat4)ELEM ==> Stat6: cdr(prod2) = cdr(y) ¥S_TIMES cdr(wz) EQUAL ==> not Same_frac(prod1,prod2) Use_def(Same_frac) ==> Stat7: car(prod1) ¥S_TIMES cdr(prod2) /= cdr(prod1) ¥S_TIMES car(prod2) EQUAL(Stat2,Stat3,Stat5,Stat6,Stat7) ==> ((car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x))) ¥S_TIMES (cdr(y) ¥S_TIMES cdr(wz)) /= (cdr(x) ¥S_TIMES cdr(w)) ¥S_TIMES ((car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y))) -- -- To conclude our proof we simply apply the distributive law for signed integers -- to the left and right hand sides of the last inequality seen above, -- ALGEBRA ==> ((cdr(x) ¥S_TIMES cdr(w)) ¥S_TIMES ((car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)))) = ((cdr(x) ¥S_TIMES car(y)) ¥S_TIMES (cdr(w) ¥S_TIMES cdr(wz))) ¥S_PLUS ((cdr(w) ¥S_TIMES car(wz)) ¥S_TIMES (cdr(y) ¥S_TIMES cdr(x))) ALGEBRA ==> ((car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x))) ¥S_TIMES (cdr(y) ¥S_TIMES cdr(wz)) = ((car(x) ¥S_TIMES cdr(y)) ¥S_TIMES (cdr(w) ¥S_TIMES cdr(wz))) ¥S_PLUS ((car(w) ¥S_TIMES cdr(wz)) ¥S_TIMES (cdr(y) ¥S_TIMES cdr(x))) EQUAL ==> false; Discharge ==> QED -- -- The following corollary restates the preceding lemma in an obvious way. -- Theorem 435: [If two pair of fractions are equivalent, their formal sums are also equivalent] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & (W in Fr) & (Z in Fr) & Same_frac(W,Z)) ¥imp (Fr_to_Ra([(car(X) ¥S_TIMES cdr(W)) ¥S_PLUS (car(W) ¥S_TIMES cdr(X)),cdr(X) ¥S_TIMES cdr(W)]) = Fr_to_Ra([(car(Y) ¥S_TIMES cdr(Z)) ¥S_PLUS (car(Z) ¥S_TIMES cdr(Y)),cdr(Y) ¥S_TIMES cdr(Z)])). Proof: Suppose_not(x,y,w,wz) ==> (x in Fr) & (y in Fr) & Same_frac(x,y) & (w in Fr) & (wz in Fr) & Same_frac(w,wz) & (Fr_to_Ra([(car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)),cdr(x) ¥S_TIMES cdr(w)]) /= Fr_to_Ra([(car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)),cdr(y) ¥S_TIMES cdr(wz)])) x-->T431 ==> Stat1: (x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]) w-->T431 ==> (w = [car(w),cdr(w)]) & (car(w) in Si) & (cdr(w) in Si) & (cdr(w) /= [0,0]) (cdr(w),cdr(x))-->T407(Stat1*) ==> cdr(x) ¥S_TIMES cdr(w) /= [0,0] y-->T431 ==> Stat2: (y = [car(y),cdr(y)]) & (car(y) in Si) & (cdr(y) in Si) & (cdr(y) /= [0,0]) wz-->T431 ==> (wz = [car(wz),cdr(wz)]) & (car(wz) in Si) & (cdr(wz) in Si) & (cdr(wz) /= [0,0]) (cdr(wz),cdr(y))-->T407(Stat2*) ==> cdr(y) ¥S_TIMES cdr(wz) /= [0,0] ALGEBRA ==> (car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)) in Si ALGEBRA ==> (cdr(x) ¥S_TIMES cdr(w)) in Si ALGEBRA ==> (car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)) in Si ALGEBRA ==> (cdr(y) ¥S_TIMES cdr(wz)) in Si ((car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)),cdr(x) ¥S_TIMES cdr(w))-->T432(*) ==> [(car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)),cdr(x) ¥S_TIMES cdr(w)] in Fr ((car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)),cdr(y) ¥S_TIMES cdr(wz))-->T432(*) ==> [(car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)),cdr(y) ¥S_TIMES cdr(wz)] in Fr (x,y,w,wz)-->T434 ==> Same_frac([(car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)),cdr(x) ¥S_TIMES cdr(w)], [(car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)),cdr(y) ¥S_TIMES cdr(wz)]) ([(car(x) ¥S_TIMES cdr(w)) ¥S_PLUS (car(w) ¥S_TIMES cdr(x)),cdr(x) ¥S_TIMES cdr(w)],[(car(y) ¥S_TIMES cdr(wz)) ¥S_PLUS (car(wz) ¥S_TIMES cdr(y)),cdr(y) ¥S_TIMES cdr(wz)])-->T422 ==> false Discharge ==> QED -- Theorem 436: [If two pairs of fractions are equivalent, their formal products are also equivalent] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & (W in Fr) & (Z in Fr) & Same_frac(W,Z)) ¥imp Same_frac([car(X) ¥S_TIMES car(W),cdr(X) ¥S_TIMES cdr(W)],[car(Y) ¥S_TIMES car(Z),cdr(Y) ¥S_TIMES cdr(Z)]). Proof: Suppose_not(x,y,w,wz) ==> (x in Fr) & (y in Fr) & Same_frac(x,y) & (w in Fr) & (wz in Fr) & Same_frac(w,wz) & (not Same_frac([car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)],[car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)])) x-->T431 ==> (x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) y-->T431 ==> (y = [car(y),cdr(y)]) & (car(y) in Si) & (cdr(y) in Si) w-->T431 ==> (w = [car(w),cdr(w)]) & (car(w) in Si) & (cdr(w) in Si) wz-->T431 ==> (wz = [car(wz),cdr(wz)]) & (car(wz) in Si) & (cdr(wz) in Si) Use_def(Same_frac) ==> (car(x) ¥S_TIMES cdr(y) = cdr(x) ¥S_TIMES car(y)) & (car(w) ¥S_TIMES cdr(wz) = cdr(w) ¥S_TIMES car(wz)) Use_def(Same_frac) ==> Stat1: (car([car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)])) ¥S_TIMES (cdr([car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)])) /= (cdr([car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)])) ¥S_TIMES (car([car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)])) ELEM ==> car([car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)]) = car(x) ¥S_TIMES car(w) ELEM ==> cdr([car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)]) = cdr(x) ¥S_TIMES cdr(w) ELEM ==> car([car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)]) = car(y) ¥S_TIMES car(wz) ELEM ==> cdr([car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)]) = cdr(y) ¥S_TIMES cdr(wz) EQUAL(Stat1) ==> (car(x) ¥S_TIMES car(w)) ¥S_TIMES (cdr(y) ¥S_TIMES cdr(wz)) /= (cdr(x) ¥S_TIMES cdr(w)) ¥S_TIMES (car(y) ¥S_TIMES car(wz)) ALGEBRA ==> (car(x) ¥S_TIMES car(w)) ¥S_TIMES (cdr(y) ¥S_TIMES cdr(wz)) = (car(x) ¥S_TIMES cdr(y)) ¥S_TIMES (car(w) ¥S_TIMES cdr(wz)) ALGEBRA ==> (cdr(x) ¥S_TIMES cdr(w)) ¥S_TIMES (car(y) ¥S_TIMES car(wz)) = (cdr(x) ¥S_TIMES car(y)) ¥S_TIMES (cdr(w) ¥S_TIMES car(wz)) ELEM ==> (car(x) ¥S_TIMES cdr(y)) ¥S_TIMES (car(w) ¥S_TIMES cdr(wz)) /= (cdr(x) ¥S_TIMES car(y)) ¥S_TIMES (cdr(w) ¥S_TIMES car(wz)) EQUAL ==> false; Discharge ==> QED -- -- The following corollary restates the preceding lemma in an obvious way. -- Theorem 437: [If two pairs of fractions are equivalent, their formal sums define the same rational number] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & (W in Fr) & (Z in Fr) & Same_frac(W,Z)) ¥imp (Fr_to_Ra([car(X) ¥S_TIMES car(W),cdr(X) ¥S_TIMES cdr(W)]) = Fr_to_Ra([car(Y) ¥S_TIMES car(Z),cdr(Y) ¥S_TIMES cdr(Z)])). Proof: Suppose_not(x,y,w,wz) ==> (x in Fr) & (y in Fr) & Same_frac(x,y) & (w in Fr) & (wz in Fr) & Same_frac(w,wz) & (Fr_to_Ra([car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)]) /= Fr_to_Ra([car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)])) x-->T431 ==> Stat1: (x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]) w-->T431 ==> (w = [car(w),cdr(w)]) & (car(w) in Si) & (cdr(w) in Si) & (cdr(w) /= [0,0]) (cdr(w),cdr(x))-->T407(Stat1*) ==> cdr(x) ¥S_TIMES cdr(w) /= [0,0] y-->T431 ==> Stat2: (y = [car(y),cdr(y)]) & (car(y) in Si) & (cdr(y) in Si) & (cdr(y) /= [0,0]) wz-->T431 ==> (wz = [car(wz),cdr(wz)]) & (car(wz) in Si) & (cdr(wz) in Si) & (cdr(wz) /= [0,0]) (cdr(wz),cdr(y))-->T407(Stat2*) ==> cdr(y) ¥S_TIMES cdr(wz) /= [0,0] ALGEBRA ==> (car(x) ¥S_TIMES car(w)) in Si ALGEBRA ==> (cdr(x) ¥S_TIMES cdr(w)) in Si ALGEBRA ==> (car(y) ¥S_TIMES car(wz)) in Si ALGEBRA ==> (cdr(y) ¥S_TIMES cdr(wz)) in Si (car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w))-->T432(*) ==> [car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)] in Fr (car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz))-->T432(*) ==> [car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)] in Fr (x,y,w,wz)-->T436 ==> Same_frac([car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)],[car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)]) ([car(x) ¥S_TIMES car(w),cdr(x) ¥S_TIMES cdr(w)],[car(y) ¥S_TIMES car(wz),cdr(y) ¥S_TIMES cdr(wz)])-->T422 ==> false Discharge ==> QED -- -- Our next lemma gives a variant of the formula for the sum of two rationals; this will be useful later. -- Theorem 438: [The sum of a rational number and a formal fraction can be expressed as a sum of formal fractions] ((X in Ra) & (Y in Si) & (Z in Si) & (Z /= [0,0])) ¥imp (X ¥Ra_PLUS Fr_to_Ra([Y,Z]) = Fr_to_Ra([(car(arb(X)) ¥S_TIMES Z) ¥S_PLUS (cdr(arb(X)) ¥S_TIMES Y),(cdr(arb(X)) ¥S_TIMES Z)])). Proof: Suppose_not(x,y,wz) ==> (x in Ra) & (y in Si) & (wz in Si) & (wz /= [0,0]) & (x ¥Ra_PLUS Fr_to_Ra([y,wz]) /= Fr_to_Ra([(car(arb(x)) ¥S_TIMES wz) ¥S_PLUS (cdr(arb(x)) ¥S_TIMES y),cdr(arb(x)) ¥S_TIMES wz])) -- -- For let $x,y,wz$ be a counterexample to our assertion. Since $x$ is rational, both $arb(x)$ and $[y,wz]$ are fractions. -- By Theorem 431, $[y,wz]$ is a fraction equivalent to the standard representative, $arb(Fr_to_Ra([y,wz]))$, -- of its equivalence class. -- x-->T423 ==> Stat1: arb(x) in Fr (arb(x))-->T431 ==> (arb(x) = [car(arb(x)),cdr(arb(x))]) & (car(arb(x)) in Si) & (cdr(arb(x)) in Si) & (cdr(arb(x)) /= [0,0]) (y,wz)-->T432(*) ==> [y,wz] in Fr ([y,wz])-->T421 ==> Fr_to_Ra([y,wz]) in Ra (Fr_to_Ra([y,wz]))-->T433 ==> arb(Fr_to_Ra([y,wz])) in Fr ([y,wz])-->T421 ==> Same_frac([y,wz],arb(Fr_to_Ra([y,wz]))) T418 ==> Stat2: (FORALL v in Fr, w in Fr | (Same_frac(v,w) ¥eq Same_frac(w,v)) & Same_frac(v,v)) (arb(x),arb(x))-->Stat2(Stat1,Stat1) ==> Same_frac(arb(x),arb(x)) -- -- Using Theorem 435, we can therefore replace $arb(Fr_to_Ra([y,wz])$ by $[y,wz]$ in -- the standard expression for the rational product seen below. -- Use_def(¥Ra_PLUS) ==> x ¥Ra_PLUS Fr_to_Ra([y,wz]) = Fr_to_Ra([(car(arb(x)) ¥S_TIMES cdr(arb(Fr_to_Ra([y,wz])))) ¥S_PLUS (car(arb(Fr_to_Ra([y,wz]))) ¥S_TIMES cdr(arb(x))), cdr(arb(x)) ¥S_TIMES cdr(arb(Fr_to_Ra([y,wz])))]) (arb(x),arb(x),[y,wz],arb(Fr_to_Ra([y,wz])))-->T435 ==> Fr_to_Ra([(car(arb(x)) ¥S_TIMES cdr(arb(Fr_to_Ra([y,wz])))) ¥S_PLUS (car(arb(Fr_to_Ra([y,wz]))) ¥S_TIMES cdr(arb(x))), cdr(arb(x)) ¥S_TIMES cdr(arb(Fr_to_Ra([y,wz])))]) = Fr_to_Ra([(car(arb(x)) ¥S_TIMES cdr([y,wz])) ¥S_PLUS (car([y,wz]) ¥S_TIMES cdr(arb(x))), cdr(arb(x)) ¥S_TIMES cdr([y,wz])]) ELEM ==> (cdr([y,wz]) = wz) & (car([y,wz]) = y) EQUAL ==> x ¥Ra_PLUS Fr_to_Ra([y,wz]) = Fr_to_Ra([(car(arb(x)) ¥S_TIMES wz) ¥S_PLUS (y ¥S_TIMES cdr(arb(x))), cdr(arb(x)) ¥S_TIMES wz]) ALGEBRA ==> y ¥S_TIMES cdr(arb(x)) = cdr(arb(x)) ¥S_TIMES y; EQUAL ==> false; Discharge ==> QED -- Theorem 439: [The product of a rational number and a formal fraction can be expressed as a product of formal fractions] ((X in Ra) & (Y in Si) & (Z in Si) & (Z /= [0,0])) ¥imp (X ¥Ra_TIMES Fr_to_Ra([Y,Z]) = Fr_to_Ra([car(arb(X)) ¥S_TIMES Y,cdr(arb(X)) ¥S_TIMES Z])). Proof: Suppose_not(x,y,wz) ==> (x in Ra) & (y in Si) & (wz in Si) & (wz /= [0,0]) & ((x ¥Ra_TIMES Fr_to_Ra([y,wz])) /= Fr_to_Ra([car(arb(x)) ¥S_TIMES y,cdr(arb(x)) ¥S_TIMES wz])) x-->T433 ==> (arb(x) = [car(arb(x)),cdr(arb(x))]) & (car(arb(x)) in Si) & (cdr(arb(x)) in Si) &( cdr(arb(x)) /= [0,0]) (y,wz)-->T432(*) ==> [y,wz] in Fr ([y,wz])-->T421 ==> Fr_to_Ra([y,wz]) in Ra (Fr_to_Ra([y,wz]))-->T423 ==> arb(Fr_to_Ra([y,wz])) in Fr ([y,wz])-->T421 ==> Same_frac([y,wz],arb(Fr_to_Ra([y,wz]))) x-->T423 ==> Stat1: arb(x) in Fr T418 ==> Stat2: (FORALL v in Fr, w in Fr | (Same_frac(v,w) ¥eq Same_frac(w,v)) & Same_frac(v,v)) (arb(x),arb(x))-->Stat2(Stat1) ==> Same_frac(arb(x),arb(x)) Use_def(¥Ra_TIMES) ==> x ¥Ra_TIMES Fr_to_Ra([y,wz]) = Fr_to_Ra([car(arb(x)) ¥S_TIMES car(arb(Fr_to_Ra([y,wz]))), cdr(arb(x)) ¥S_TIMES cdr(arb(Fr_to_Ra([y,wz])))]) (arb(x),arb(x),[y,wz],arb(Fr_to_Ra([y,wz])))-->T437 ==> x ¥Ra_TIMES Fr_to_Ra([y,wz]) = Fr_to_Ra([car(arb(x)) ¥S_TIMES car([y,wz]), cdr(arb(x)) ¥S_TIMES cdr([y,wz])]) ELEM ==> (car([y,wz]) = y) & (cdr([y,wz]) = wz) EQUAL ==> x ¥Ra_TIMES Fr_to_Ra([y,wz]) = Fr_to_Ra([car(arb(x)) ¥S_TIMES y, cdr(arb(x)) ¥S_TIMES wz]) Discharge ==> QED -- Theorem 440: [Reversing both the numerator and denominator of a formal fraction does not change the rational it represents] (X in Fr) ¥imp Same_frac(X,[S_Rev(car(X)),S_Rev(cdr(X))]). Proof: Suppose_not(x) ==> (x in Fr) & (not Same_frac(x,[S_Rev(car(x)),S_Rev(cdr(x))])) x-->T431 ==> (x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]) Use_def(Same_frac) ==> Stat1: car(x) ¥S_TIMES cdr([S_Rev(car(x)),S_Rev(cdr(x))]) /= cdr(x) ¥S_TIMES car([S_Rev(car(x)),S_Rev(cdr(x))]) (car(x),cdr(x))-->T390 ==> car(x) ¥S_TIMES S_Rev(cdr(x)) = S_Rev(car(x) ¥S_TIMES cdr(x)) (cdr(x),car(x))-->T390 ==> cdr(x) ¥S_TIMES S_Rev(car(x)) = S_Rev(cdr(x) ¥S_TIMES car(x)) (Stat1)ELEM ==> S_Rev(car(x) ¥S_TIMES cdr(x)) /= S_Rev(cdr(x) ¥S_TIMES car(x)) ALGEBRA ==> false; Discharge ==> QED -- -- Next we show that if two fractions, both with positive denominators, are equivalent, -- then one is has a non-negative numerator if and only if the other does. This lemma -- prepares for the proof of the more general statement given by Theorem 444 below. -- Theorem 441: [?] ((X in Fr) & (Y in Fr) & Same_frac(X,Y) & is_nonneg(cdr(X)) & is_nonneg(cdr(Y))) ¥imp ((is_nonneg(car(X)) or car(X) = [0,0]) ¥eq (is_nonneg(car(Y)) or car(Y) = [0,0])). Proof: Suppose_not(x,y) ==> Stat1: (x in Fr) & (y in Fr) & Same_frac(x,y) & is_nonneg(cdr(x)) & is_nonneg(cdr(y)) & (not ((is_nonneg(car(x)) or car(x) = [0,0]) ¥eq (is_nonneg(car(y)) or car(y) = [0,0]))) -- -- For consider a counterexample x,y. It is easily seen that if one of the fractions is zero so is the other. -- Hence we have only to consider the case in which one of the fractions, say x, has a positive numerator and the -- other has a negative numerator. -- x-->T431 ==> (x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]) y-->T431 ==> (y = [car(y),cdr(y)]) & (car(y) in Si) & (cdr(y) in Si) & (cdr(y) /= [0,0]) Use_def(Same_frac) ==> Stat2: car(x) ¥S_TIMES cdr(y) = cdr(x) ¥S_TIMES car(y) Suppose ==> car(x) = [0,0] EQUAL ==> [0,0] ¥S_TIMES cdr(y) = cdr(x) ¥S_TIMES car(y) (cdr(y))-->T401 ==> cdr(x) ¥S_TIMES car(y) = [0,0] (car(y),cdr(x))-->T407(Stat1*) ==> car(y) = [0,0] Discharge ==> Stat3: car(x) /= [0,0] Suppose ==> car(y) = [0,0] EQUAL ==> car(x) ¥S_TIMES cdr(y) = cdr(x) ¥S_TIMES [0,0] ALGEBRA ==> car(x) ¥S_TIMES cdr(y) = [0,0] ¥S_TIMES cdr(x) (cdr(x))-->T401 ==> car(x) ¥S_TIMES cdr(y) = [0,0] (cdr(y),car(x))-->T407(Stat1*) ==> car(x) = [0,0] Discharge ==> Stat4: car(y) /= [0,0] (Stat1,Stat3,Stat4)ELEM ==> not (is_nonneg(car(x)) ¥eq is_nonneg(car(y))) ALGEBRA ==> (cdr(x) ¥S_TIMES car(y) in Si) & (car(x) ¥S_TIMES cdr(y) in Si) -- -- In this case, Theorem 424 tells us that S_Rev(car(y)) must be non-negative. -- A bit of algebra now shows that both car(x) ¥S_TIMES cdr(y) and S_Rev(car(x) ¥S_TIMES cdr(y)) -- must be non-negative. Hence car(x) ¥S_TIMES cdr(y) must be zero, -- and therefore car(x) must also be zero by Theorem 407. -- Suppose ==> Stat5: is_nonneg(car(x)) ELEM ==> not is_nonneg(car(y)) (car(x),cdr(y))-->T425 ==> is_nonneg(car(x) ¥S_TIMES cdr(y)) (car(y))-->T424 ==> is_nonneg(S_Rev(car(y))) (car(y))-->T391 ==> S_Rev(car(y)) in Si (cdr(x),S_Rev(car(y)))-->T425 ==> is_nonneg(cdr(x) ¥S_TIMES S_Rev(car(y))) ALGEBRA ==> Stat6: is_nonneg(S_Rev(cdr(x) ¥S_TIMES car(y))) EQUAL(Stat2,Stat6) ==> is_nonneg(S_Rev(car(x) ¥S_TIMES cdr(y))) (car(x) ¥S_TIMES cdr(y))-->T424 ==> car(x) ¥S_TIMES cdr(y) = [0,0] (cdr(y),car(x))-->T407(Stat1*) ==> false; Discharge ==> Stat7: (not is_nonneg(car(x))) & is_nonneg(car(y)) (cdr(x),car(y))-->T425 ==> is_nonneg(cdr(x) ¥S_TIMES car(y)) (car(x))-->T424 ==> is_nonneg(S_Rev(car(x))) (car(x))-->T391 ==> S_Rev(car(x)) in Si (cdr(y),S_Rev(car(x)))-->T425 ==> is_nonneg(cdr(y) ¥S_TIMES S_Rev(car(x))) ALGEBRA ==> Stat8: is_nonneg(S_Rev(car(x) ¥S_TIMES cdr(y))) EQUAL(Stat2,Stat8) ==> is_nonneg(S_Rev(cdr(x) ¥S_TIMES car(y))) (cdr(x) ¥S_TIMES car(y))-->T424 ==> cdr(x) ¥S_TIMES car(y) = [0,0] (car(y),cdr(x))-->T407(Stat1*) ==> false; Discharge ==> QED -- -- The following theorem generalizes the preceding result by showing that if one of two equivalent -- fractions is non-negative, so is the other. -- Theorem 442: [The sign of the product of the numerator and denominator of a fraction defines the sign of the rational number which it represents] ((X in Fr) & (Y in Fr) & Same_frac(X,Y)) ¥imp (is_nonneg(car(X) ¥S_TIMES cdr(X)) ¥eq is_nonneg(car(Y) ¥S_TIMES cdr(Y))). Proof: Suppose_not(x,y) ==> Stat1: (x in Fr) & (y in Fr) & Same_frac(x,y) & (not (is_nonneg(car(x) ¥S_TIMES cdr(x)) ¥eq is_nonneg(car(y) ¥S_TIMES cdr(y)))) x-->T431 ==> (x = [car(x),cdr(x)]) & (car(x) in Si) & (cdr(x) in Si) & (cdr(x) /= [0,0]) y-->T431 ==> (y = [car(y),cdr(y)]) & (car(y) in Si) & (cdr(y) in Si) & (cdr(y) /= [0,0]) Loc_def ==> ax = car(x) Loc_def ==> dx = cdr(x) Loc_def ==> ay = car(y) Loc_def ==> dy = cdr(y) EQUAL ==> (dx /= [0,0]) & (dy /= [0,0]) Use_def(Same_frac) ==> car(x) ¥S_TIMES cdr(y) = cdr(x) ¥S_TIMES car(y) EQUAL ==> ax ¥S_TIMES dy = dx ¥S_TIMES ay EQUAL ==> Stat2: (ax in Si) & (dx in Si) & (ay in Si) & (dy in Si) EQUAL ==> (ax ¥S_TIMES dy) ¥S_TIMES (dx ¥S_TIMES dy) = (dx ¥S_TIMES ay) ¥S_TIMES (dx ¥S_TIMES dy) EQUAL ==> not (is_nonneg(ax ¥S_TIMES dx) ¥eq is_nonneg(ay ¥S_TIMES dy)) ALGEBRA(Stat2) ==> (dy ¥S_TIMES dy) ¥S_TIMES (ax ¥S_TIMES dx) = (dx ¥S_TIMES dx) ¥S_TIMES (ay ¥S_TIMES dy) EQUAL ==> is_nonneg((dy ¥S_TIMES dy) ¥S_TIMES (ax ¥S_TIMES dx)) ¥eq is_nonneg((dx ¥S_TIMES dx) ¥S_TIMES (ay ¥S_TIMES dy)) dx-->T429 ==> is_nonneg(dx ¥S_TIMES dx) dy-->T429 ==> is_nonneg(dy ¥S_TIMES dy) (dx,dx)-->T407(Stat1*) ==> dx ¥S_TIMES dx /= [0,0] (dy,dy)-->T407(Stat1*) ==> dy ¥S_TIMES dy /= [0,0] ALGEBRA ==> (dx ¥S_TIMES dx in Si) & (ay ¥S_TIMES dy in Si) ALGEBRA ==> (dy ¥S_TIMES dy in Si) & (ax ¥S_TIMES dx in Si) (dy ¥S_TIMES dy,ax ¥S_TIMES dx)-->T430 ==> is_nonneg((dy ¥S_TIMES dy) ¥S_TIMES (ax ¥S_TIMES dx)) ¥eq is_nonneg(ax ¥S_TIMES dx) (dx ¥S_TIMES dx,ay ¥S_TIMES dy)-->T430 ==> is_nonneg((dx ¥S_TIMES dx) ¥S_TIMES (ay ¥S_TIMES dy)) ¥eq is_nonneg(ay ¥S_TIMES dy) Discharge ==> QED -- Theorem 443: [?] (X in Fr) ¥imp (Fr_is_nonneg(X) ¥eq Fr_is_nonneg([S_Rev(car(X)),S_Rev(cdr(X))])). Proof: Suppose_not(n) ==> Stat1: (n in Fr) & (not(Fr_is_nonneg(n) ¥eq Fr_is_nonneg([S_Rev(car(n)),S_Rev(cdr(n))]))) n-->T431 ==> (n = [car(n),cdr(n)]) & (car(n) in Si) & (cdr(n) in Si) & (cdr(n) /= [0,0]) Use_def(Fr_is_nonneg) ==> Stat2: Fr_is_nonneg(n) ¥eq is_nonneg(car(n) ¥S_TIMES cdr(n)) Use_def(Fr_is_nonneg) ==> Stat3: Fr_is_nonneg([S_Rev(car(n)),S_Rev(cdr(n))]) ¥eq is_nonneg(car([S_Rev(car(n)),S_Rev(cdr(n))]) ¥S_TIMES cdr([S_Rev(car(n)),S_Rev(cdr(n))])) (Stat1,Stat2,Stat3*)ELEM ==> not((is_nonneg(car([S_Rev(car(n)),S_Rev(cdr(n))]) ¥S_TIMES cdr([S_Rev(car(n)),S_Rev(cdr(n))]))) ¥eq (is_nonneg(car(n) ¥S_TIMES cdr(n)))) (car(n))-->T391 ==> S_Rev(car(n)) in Si (cdr(n))-->T391 ==> S_Rev(cdr(n)) in Si ELEM ==> car([S_Rev(car(n)),S_Rev(cdr(n))]) = S_Rev(car(n)) ELEM ==> cdr([S_Rev(car(n)),S_Rev(cdr(n))]) = S_Rev(cdr(n)) EQUAL ==> Stat4: not(is_nonneg(S_Rev(car(n)) ¥S_TIMES S_Rev(cdr(n))) ¥eq (is_nonneg(car(n) ¥S_TIMES cdr(n)))) ALGEBRA ==> S_Rev(car(n)) ¥S_TIMES S_Rev(cdr(n)) = car(n) ¥S_TIMES cdr(n) EQUAL(Stat4) ==> false; Discharge ==> QED -- -- Next we show that if two fractions, both with positive denominators, are equivalent, -- then one has a non-negative numerator if and only if the other does. -- Theorem 444: [?] ((X in Fr) & (Y in Fr) & Same_frac(X,Y)) ¥imp (Fr_is_nonneg(X) ¥eq Fr_is_nonneg(Y)). Proof: Suppose_not(n,m) ==> Stat1: (n in Fr) & (m in Fr) & Same_frac(n,m) & (not(Fr_is_nonneg(n) ¥eq Fr_is_nonneg(m))) n-->T431 ==> (n = [car(n),cdr(n)]) & (car(n) in Si) & (cdr(n) in Si) & (cdr(n) /= [0,0]) m-->T431 ==> (m = [car(m),cdr(m)]) & (car(m) in Si) & (cdr(m) in Si) & (cdr(m) /= [0,0]) Use_def(Fr_is_nonneg) ==> (not (is_nonneg(car(n) ¥S_TIMES cdr(n)) ¥eq is_nonneg(car(m) ¥S_TIMES cdr(m)))) Use_def(Same_frac) ==> car(n) ¥S_TIMES cdr(m) = cdr(n) ¥S_TIMES car(m) EQUAL ==> (car(n) ¥S_TIMES cdr(m)) ¥S_TIMES (cdr(n) ¥S_TIMES cdr(m)) = (cdr(n) ¥S_TIMES car(m)) ¥S_TIMES (cdr(n) ¥S_TIMES cdr(m)) ALGEBRA ==> Stat2: (car(n) ¥S_TIMES cdr(n) in Si) & (car(m) ¥S_TIMES cdr(m) in Si) ALGEBRA ==> Stat3: (cdr(n) ¥S_TIMES cdr(n) in Si) & (cdr(m) ¥S_TIMES cdr(m) in Si) ALGEBRA ==> (cdr(m) ¥S_TIMES cdr(m)) ¥S_TIMES (car(n) ¥S_TIMES cdr(n)) = (cdr(n) ¥S_TIMES cdr(n)) ¥S_TIMES (car(m) ¥S_TIMES cdr(m)) (cdr(n))-->T429 ==> Stat4: is_nonneg(cdr(n) ¥S_TIMES cdr(n)) (cdr(m))-->T429 ==> Stat5: is_nonneg(cdr(m) ¥S_TIMES cdr(m)) (cdr(n),cdr(n))-->T407(Stat1*) ==> Stat6: cdr(n) ¥S_TIMES cdr(n) /= [0,0] (cdr(m),cdr(m))-->T407(Stat1*) ==> Stat7: cdr(m) ¥S_TIMES cdr(m) /= [0,0] (cdr(m) ¥S_TIMES cdr(m),car(n) ¥S_TIMES cdr(n))-->T430(Stat2,Stat3,Stat5,Stat7) ==> is_nonneg((cdr(m) ¥S_TIMES cdr(m)) ¥S_TIMES (car(n) ¥S_TIMES cdr(n))) ¥eq is_nonneg(car(n) ¥S_TIMES cdr(n)) (cdr(n) ¥S_TIMES cdr(n),car(m) ¥S_TIMES cdr(m))-->T430(Stat2,Stat3,Stat4,Stat6) ==> is_nonneg((cdr(n) ¥S_TIMES cdr(n)) ¥S_TIMES (car(m) ¥S_TIMES cdr(m))) ¥eq is_nonneg(car(m) ¥S_TIMES cdr(m)) EQUAL ==> false; Discharge ==> QED -- -- Now we are in position to begin consideration of the algebra of rational numbers. -- As a first result of this kind we prove the commutative law for rational numbers. -- Theorem 445: [Commutativity of rational addition] ((N in Ra) & (M in Ra)) ¥imp ((N ¥Ra_PLUS M in Ra) & (N ¥Ra_PLUS M = M ¥Ra_PLUS N)). Proof: Suppose_not(n,m) ==> (n in Ra) & (m in Ra) & ((n ¥Ra_PLUS m notin Ra) or (n ¥Ra_PLUS m /= m ¥Ra_PLUS n)) n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) (arb(n))-->T431 ==> Stat1: (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) (arb(m))-->T431 ==> Stat2: (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) Suppose ==> Stat3: n ¥Ra_PLUS m notin Ra Use_def(¥Ra_PLUS) ==> Fr_to_Ra([(car(arb(n)) ¥S_TIMES cdr(arb(m))) ¥S_PLUS (car(arb(m)) ¥S_TIMES cdr(arb(n))), cdr(arb(n)) ¥S_TIMES cdr(arb(m))]) notin Ra T420 ==> Stat4: (FORALL x | (x in Fr) ¥imp (Fr_to_Ra(x) in Ra)) ([(car(arb(n)) ¥S_TIMES cdr(arb(m))) ¥S_PLUS (car(arb(m)) ¥S_TIMES cdr(arb(n))),cdr(arb(n)) ¥S_TIMES cdr(arb(m))])-->Stat4(Stat3) ==> [(car(arb(n)) ¥S_TIMES cdr(arb(m))) ¥S_PLUS (car(arb(m)) ¥S_TIMES cdr(arb(n))), cdr(arb(n)) ¥S_TIMES cdr(arb(m))] notin Fr ALGEBRA ==> (car(arb(n)) ¥S_TIMES cdr(arb(m))) ¥S_PLUS (car(arb(m)) ¥S_TIMES cdr(arb(n))) in Si ALGEBRA ==> cdr(arb(n)) ¥S_TIMES cdr(arb(m)) in Si (cdr(arb(m)),cdr(arb(n)))-->T407(Stat1,Stat2*) ==> cdr(arb(n)) ¥S_TIMES cdr(arb(m)) /= [0,0] ([(car(arb(n)) ¥S_TIMES cdr(arb(m))) ¥S_PLUS (car(arb(m)) ¥S_TIMES cdr(arb(n))),cdr(arb(n)) ¥S_TIMES cdr(arb(m))])-->T431 ==> false; Discharge ==> (n ¥Ra_PLUS m /= m ¥Ra_PLUS n) Use_def(¥Ra_PLUS) ==> Fr_to_Ra([(car(arb(m)) ¥S_TIMES cdr(arb(n))) ¥S_PLUS (car(arb(n)) ¥S_TIMES cdr(arb(m))), cdr(arb(m)) ¥S_TIMES cdr(arb(n))]) /= Fr_to_Ra([(car(arb(n)) ¥S_TIMES cdr(arb(m))) ¥S_PLUS (car(arb(m)) ¥S_TIMES cdr(arb(n))), cdr(arb(n)) ¥S_TIMES cdr(arb(m))]) ALGEBRA ==> false; Discharge ==> QED -- -- The following corollary of Theorem 438 expresses the sum of two rationals, -- one of them derived explicitly from a fraction, in a form that is sometimes convenient. -- Theorem 446: [?] ((X in Ra) & (Y in Si) & (Z in Si) & (Z /= [0,0])) ¥imp (Fr_to_Ra([Y,Z]) ¥Ra_PLUS X = Fr_to_Ra([(car(arb(X)) ¥S_TIMES Z) ¥S_PLUS (cdr(arb(X)) ¥S_TIMES Y),(cdr(arb(X)) ¥S_TIMES Z)])). Proof: Suppose_not(x,y,z) ==> AUTO (x,y,z)-->T438 ==> Fr_to_Ra([y,z]) ¥Ra_PLUS x /= x ¥Ra_PLUS Fr_to_Ra([y,z]) (y,z)-->T432(*) ==> [y,z] in Fr ([y,z])-->T421 ==> Fr_to_Ra([y,z]) in Ra (x,Fr_to_Ra([y,z]))-->T445 ==> false; Discharge ==> QED -- -- Next we express the sum of two rationals, both derived explicitly from a fraction, in a convenient form. -- Theorem 447: [?] ((X in Si) & (Y in Si) & (Z in Si) & (W in Si) & (Y /= [0,0]) & (W /= [0,0])) ¥imp (Fr_to_Ra([X,Y]) ¥Ra_PLUS Fr_to_Ra([Z,W]) = Fr_to_Ra([(X ¥S_TIMES W) ¥S_PLUS (Z ¥S_TIMES Y),Y ¥S_TIMES W])). Proof: Suppose_not(x,y,wz,w) ==> (x in Si) & (y in Si) & (wz in Si) & (w in Si) & (y /= [0,0]) & (w /= [0,0]) & (Fr_to_Ra([x,y]) ¥Ra_PLUS Fr_to_Ra([wz,w]) /= Fr_to_Ra([(x ¥S_TIMES w) ¥S_PLUS (wz ¥S_TIMES y),y ¥S_TIMES w])) (x,y)-->T432(*) ==> [x,y] in Fr ([x,y])-->T421 ==> Fr_to_Ra([x,y]) in Ra (Fr_to_Ra([x,y]))-->T433 ==> arb(Fr_to_Ra([x,y])) in Fr (arb(Fr_to_Ra([x,y])))-->T431 ==> cdr(arb(Fr_to_Ra([x,y]))) in Si ([x,y])-->T421 ==> Same_frac([x,y],arb(Fr_to_Ra([x,y]))) (Fr_to_Ra([x,y]),wz,w)-->T438 ==> (Fr_to_Ra([x,y]) ¥Ra_PLUS Fr_to_Ra([wz,w])) = Fr_to_Ra([(car(arb(Fr_to_Ra([x,y]))) ¥S_TIMES w) ¥S_PLUS (cdr(arb(Fr_to_Ra([x,y]))) ¥S_TIMES wz), cdr(arb(Fr_to_Ra([x,y]))) ¥S_TIMES w]) (wz,w)-->T432(*) ==> Stat1: [wz,w] in Fr T418 ==> Stat2: (FORALL v in Fr, u in Fr | (Same_frac(v,u) ¥eq Same_frac(u,v)) & Same_frac(v,v)) ([wz,w],[wz,w])-->Stat2 ==> Same_frac([wz,w],[wz,w]) ([x,y],arb(Fr_to_Ra([x,y])),[wz,w],[wz,w])-->T435 ==> Fr_to_Ra([(car([x,y]) ¥S_TIMES cdr([wz,w])) ¥S_PLUS (car([wz,w]) ¥S_TIMES cdr([x,y])), cdr([x,y]) ¥S_TIMES cdr([wz,w])]) = Fr_to_Ra([(car(arb(Fr_to_Ra([x,y]))) ¥S_TIMES cdr([wz,w])) ¥S_PLUS (car([wz,w]) ¥S_TIMES cdr(arb(Fr_to_Ra([x,y])))), cdr(arb(Fr_to_Ra([x,y]))) ¥S_TIMES cdr([wz,w])]) ELEM ==> (car([x,y]) = x) & (cdr([x,y]) = y) & (car([wz,w]) = wz) & (cdr([wz,w]) = w) (wz,cdr(arb(Fr_to_Ra([x,y]))))-->T384 ==> (wz ¥S_TIMES cdr(arb(Fr_to_Ra([x,y])))) = (cdr(arb(Fr_to_Ra([x,y]))) ¥S_TIMES wz) EQUAL ==> Fr_to_Ra([(x ¥S_TIMES w) ¥S_PLUS (wz ¥S_TIMES y),y ¥S_TIMES w]) = Fr_to_Ra([(car(arb(Fr_to_Ra([x,y]))) ¥S_TIMES w) ¥S_PLUS (cdr(arb(Fr_to_Ra([x,y]))) ¥S_TIMES wz), cdr(arb(Fr_to_Ra([x,y]))) ¥S_TIMES w]) Discharge ==> QED -- -- The proof that rational multiplication is commutative is also elementary and algebraic. -- Theorem 448: [Commutativity of rational multiplication] ((N in Ra) & (M in Ra)) ¥imp ((N ¥Ra_TIMES M in Ra) & (N ¥Ra_TIMES M = M ¥Ra_TIMES N)). Proof: Suppose_not(n,m) ==> (n in Ra) & (m in Ra) & ((n ¥Ra_TIMES m notin Ra) or n ¥Ra_TIMES m /= m ¥Ra_TIMES n) n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) (arb(n))-->T431 ==> Stat1: (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) (arb(m))-->T431 ==> Stat2: (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) Suppose ==> Stat3: (n ¥Ra_TIMES m) notin Ra Use_def(¥Ra_TIMES) ==> Fr_to_Ra([car(arb(n)) ¥S_TIMES car(arb(m)),cdr(arb(n)) ¥S_TIMES cdr(arb(m))]) notin Ra T420 ==> Stat4: (FORALL x | (x in Fr) ¥imp (Fr_to_Ra(x) in Ra)) ([car(arb(n)) ¥S_TIMES car(arb(m)),cdr(arb(n)) ¥S_TIMES cdr(arb(m))])-->Stat4(Stat3) ==> [car(arb(n)) ¥S_TIMES car(arb(m)),cdr(arb(n)) ¥S_TIMES cdr(arb(m))] notin Fr ALGEBRA ==> car(arb(n)) ¥S_TIMES car(arb(m)) in Si ALGEBRA ==> cdr(arb(n)) ¥S_TIMES cdr(arb(m)) in Si (cdr(arb(m)),cdr(arb(n)))-->T407(Stat1,Stat2*) ==> cdr(arb(n)) ¥S_TIMES cdr(arb(m)) /= [0,0] ([car(arb(n)) ¥S_TIMES car(arb(m)),cdr(arb(n)) ¥S_TIMES cdr(arb(m))])-->T431 ==> false; Discharge ==> (n ¥Ra_TIMES m /= m ¥Ra_TIMES n) Use_def(¥Ra_TIMES) ==> Fr_to_Ra([car(arb(m)) ¥S_TIMES car(arb(n)),cdr(arb(m)) ¥S_TIMES cdr(arb(n))]) /= Fr_to_Ra([car(arb(n)) ¥S_TIMES car(arb(m)),cdr(arb(n)) ¥S_TIMES cdr(arb(m))]) ALGEBRA ==> false; Discharge ==> QED -- Theorem 449: [?] ((X in Ra) & (Y in Si) & (Z in Si) & (Z /= [0,0])) ¥imp ((Fr_to_Ra([Y,Z]) ¥Ra_TIMES X) = Fr_to_Ra([car(arb(X)) ¥S_TIMES Y,cdr(arb(X)) ¥S_TIMES Z])). Proof: Suppose_not(x,y,wz) ==> (x in Ra) & (y in Si) & (wz in Si) & (wz /= [0,0]) & ((Fr_to_Ra([y,wz]) ¥Ra_TIMES x) /= Fr_to_Ra([car(arb(x)) ¥S_TIMES y,cdr(arb(x)) ¥S_TIMES wz])) (x,y,wz)-->T439 ==> (x ¥Ra_TIMES Fr_to_Ra([y,wz])) = Fr_to_Ra([car(arb(x)) ¥S_TIMES y,cdr(arb(x)) ¥S_TIMES wz]) (y,wz)-->T432(*) ==> [y,wz] in Fr ([y,wz])-->T421 ==> Fr_to_Ra([y,wz]) in Ra (x,Fr_to_Ra([y,wz]))-->T448 ==> false; Discharge ==> QED -- -- Next we prove the associative law for rational addition. -- Theorem 450: [Associative law for rational addition] ((K in Ra) & (N in Ra) & (M in Ra)) ¥imp (N ¥Ra_PLUS (M ¥Ra_PLUS K) = (N ¥Ra_PLUS M) ¥Ra_PLUS K). Proof: Suppose_not(k,n,m) ==> Stat1: (k in Ra) & (n in Ra) & (m in Ra) & (n ¥Ra_PLUS (m ¥Ra_PLUS k) /= (n ¥Ra_PLUS m) ¥Ra_PLUS k) -- -- For let $k,n,m$ be a counterexample to our assertion, so that $arb(k) = [ak,dk]$, $arb(n) = [an,dn]$, $arb(m) = [am,dm]$ -- are fractions with signed integer numerators and denominators. -- n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) Loc_def ==> arn = arb(n) EQUAL ==> (arn in Fr) & (Fr_to_Ra(arn) = n) Loc_def ==> an = car(arn) Loc_def ==> dn = cdr(arn) (arn)-->T431 ==> (arn = [car(arn),cdr(arn)]) & (car(arn) in Si) & (cdr(arn) in Si) & (cdr(arn) /= [0,0]) EQUAL ==> Stat2: (arn = [an,dn]) & (an in Si) & (dn in Si) & (dn /= [0,0]) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) Loc_def ==> arm = arb(m) EQUAL ==> (arm in Fr) & (Fr_to_Ra(arm) = m) Loc_def ==> am = car(arm) Loc_def ==> dm = cdr(arm) (arm)-->T431 ==> (arm = [car(arm),cdr(arm)]) & (car(arm) in Si) & (cdr(arm) in Si) & (cdr(arm) /= [0,0]) EQUAL ==> Stat3: (arm = [am,dm]) & (am in Si) & (dm in Si) & (dm /= [0,0]) k-->T423 ==> (arb(k) in Fr) & (Fr_to_Ra(arb(k)) = k) Loc_def ==> ark = arb(k) EQUAL ==> (ark in Fr) & (Fr_to_Ra(ark) = k) Loc_def ==> ak = car(ark) Loc_def ==> dk = cdr(ark) (ark)-->T431 ==> (ark = [car(ark),cdr(ark)]) & (car(ark) in Si) & (cdr(ark) in Si) & (cdr(ark) /= [0,0]) EQUAL ==> Stat4: (ark = [ak,dk]) & (ak in Si) & (dk in Si) & (dk /= [0,0]) (dk,dm)-->T407(Stat4,Stat3*) ==> dm ¥S_TIMES dk /= [0,0] -- -- By definition of rational addition, $Fr_to_Ra([(am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm),dm ¥S_TIMES dk]) = m + k$ -- and $Fr_to_Ra([(an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn),dn ¥S_TIMES dm]) = n + m$, so that the negative -- of our associative law can be written in the manner seen below. -- Use_def(¥Ra_PLUS) ==> m ¥Ra_PLUS k = Fr_to_Ra([(car(arb(m)) ¥S_TIMES cdr(arb(k))) ¥S_PLUS (car(arb(k)) ¥S_TIMES cdr(arb(m))), cdr(arb(m)) ¥S_TIMES cdr(arb(k))]) EQUAL ==> m ¥Ra_PLUS k = Fr_to_Ra([(am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm),dm ¥S_TIMES dk]) Use_def(¥Ra_PLUS)(Stat2) ==> n ¥Ra_PLUS m = Fr_to_Ra([(car(arb(n)) ¥S_TIMES cdr(arb(m))) ¥S_PLUS (car(arb(m)) ¥S_TIMES cdr(arb(n))), cdr(arb(n)) ¥S_TIMES cdr(arb(m))]) EQUAL ==> n ¥Ra_PLUS m = Fr_to_Ra([(an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn),dn ¥S_TIMES dm]) EQUAL ==> n ¥Ra_PLUS Fr_to_Ra([(am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm),dm ¥S_TIMES dk]) /= Fr_to_Ra([(an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn),dn ¥S_TIMES dm]) ¥Ra_PLUS k ALGEBRA ==> Stat5: ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm) in Si) & ((dm ¥S_TIMES dk) in Si) & ((an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn) in Si) & ((dn ¥S_TIMES dm) in Si) (dm,dk)-->T407 ==> Stat6: dm ¥S_TIMES dk /= [0,0] (n,(am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm),dm ¥S_TIMES dk)-->T438(Stat1,Stat5,Stat6) ==> Fr_to_Ra([(car(arb(n)) ¥S_TIMES (dm ¥S_TIMES dk)) ¥S_PLUS (cdr(arb(n)) ¥S_TIMES ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm))), cdr(arb(n)) ¥S_TIMES (dm ¥S_TIMES dk)]) = (n ¥Ra_PLUS Fr_to_Ra([(am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm),dm ¥S_TIMES dk])) EQUAL ==> Fr_to_Ra([(an ¥S_TIMES (dm ¥S_TIMES dk)) ¥S_PLUS (dn ¥S_TIMES ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm))), dn ¥S_TIMES (dm ¥S_TIMES dk)]) = n ¥Ra_PLUS (m ¥Ra_PLUS k) (dm,dn)-->T407(Stat2,Stat3*) ==> Stat7: dn ¥S_TIMES dm /= [0,0] (k,(an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn),dn ¥S_TIMES dm)-->T446(Stat1,Stat5,Stat7) ==> Fr_to_Ra([(an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn),dn ¥S_TIMES dm]) ¥Ra_PLUS k = Fr_to_Ra([(car(arb(k)) ¥S_TIMES (dn ¥S_TIMES dm)) ¥S_PLUS (cdr(arb(k)) ¥S_TIMES ((an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn))),(cdr(arb(k)) ¥S_TIMES (dn ¥S_TIMES dm))]) EQUAL ==> (n ¥Ra_PLUS m) ¥Ra_PLUS k = Fr_to_Ra([(ak ¥S_TIMES (dn ¥S_TIMES dm)) ¥S_PLUS (dk ¥S_TIMES ((an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn))),(dk ¥S_TIMES (dn ¥S_TIMES dm))]) ELEM ==> Fr_to_Ra([(an ¥S_TIMES (dm ¥S_TIMES dk)) ¥S_PLUS (dn ¥S_TIMES ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm))), dn ¥S_TIMES (dm ¥S_TIMES dk)]) /= Fr_to_Ra([(ak ¥S_TIMES (dn ¥S_TIMES dm)) ¥S_PLUS (dk ¥S_TIMES ((an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn))),(dk ¥S_TIMES (dn ¥S_TIMES dm))]) ALGEBRA ==> false; Discharge ==> QED -- Theorem 451: [The zero rational is the identity for rational addition] (Ra_0 in Ra) & (Ra_1 in Ra) & ((M in Ra) ¥imp (M = M ¥Ra_PLUS Ra_0)). Proof: Suppose_not(m) ==> Stat1: (Ra_0 notin Ra) or (Ra_1 notin Ra) or ((m in Ra) & (m /= m ¥Ra_PLUS Ra_0)) T368 ==> Stat2: ([0,0] in Si) & ([1,0] in Si) T212 ==> Stat3: 1 /= 0 (Stat2)ELEM ==> ([[0,0],[1,0]] = [car([[0,0],[1,0]]),cdr([[0,0],[1,0]])]) & (car([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) /= [0,0]) ([0,0],[1,0])-->T432(*) ==> [[0,0],[1,0]] in Fr ([[0,0],[1,0]])-->T421 ==> Fr_to_Ra([[0,0],[1,0]]) in Ra Use_def(Ra_0) ==> Stat4: Ra_0 in Ra (Stat2)ELEM ==> ([[1,0],[1,0]] = [car([[1,0],[1,0]]),cdr([[1,0],[1,0]])]) & (car([[1,0],[1,0]]) in Si) & (cdr([[1,0],[1,0]]) in Si) & (cdr([[1,0],[1,0]]) /= [0,0]) ([1,0],[1,0])-->T432(*) ==> [[1,0],[1,0]] in Fr ([[1,0],[1,0]])-->T421 ==> Fr_to_Ra([[1,0],[1,0]]) in Ra Use_def(Ra_1) ==> Stat5: Ra_1 in Ra (Stat1,Stat4,Stat5*)ELEM ==> (m in Ra) & (m /= m ¥Ra_PLUS Ra_0) m-->T423 ==> Stat6: (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) (arb(m))-->T431(Stat2*) ==> Stat7: (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) Loc_def ==> Stat8: arm = arb(m) EQUAL ==> Stat9: (arm in Fr) & (Fr_to_Ra(arm) = m) Loc_def ==> am = car(arm) Loc_def ==> dm = cdr(arm) EQUAL ==> (arm = [am,dm]) & (am in Si) & (dm in Si) & (dm /= [0,0]) Use_def(Ra_0) ==> m /= m ¥Ra_PLUS Fr_to_Ra([[0,0],[1,0]]) Use_def(¥Ra_PLUS) ==> m /= Fr_to_Ra([(car(arb(m)) ¥S_TIMES cdr(arb(Fr_to_Ra([[0,0],[1,0]])))) ¥S_PLUS (car(arb(Fr_to_Ra([[0,0],[1,0]]))) ¥S_TIMES cdr(arb(m))), cdr(arb(m)) ¥S_TIMES cdr(arb(Fr_to_Ra([[0,0],[1,0]])))]) ELEM ==> Stat10: (car([[0,0],[1,0]]) = [0,0]) & (cdr([[0,0],[1,0]]) = [1,0]) (Fr_to_Ra([[0,0],[1,0]]))-->T423 ==> arb(Fr_to_Ra([[0,0],[1,0]])) in Fr [[0,0],[1,0]]-->T421 ==> Same_frac([[0,0],[1,0]],arb(Fr_to_Ra([[0,0],[1,0]]))) T418 ==> Stat11: (FORALL v in Fr, w in Fr | (Same_frac(v,w) ¥eq Same_frac(w,v)) & Same_frac(v,v)) (arb(m),arb(m))-->Stat11(Stat8,Stat9) ==> Same_frac(arb(m),arb(m)) (arb(m),arb(m),[[0,0],[1,0]],arb(Fr_to_Ra([[0,0],[1,0]])))-->T435 ==> Stat12: m /= Fr_to_Ra([(car(arb(m)) ¥S_TIMES cdr([[0,0],[1,0]])) ¥S_PLUS (car([[0,0],[1,0]]) ¥S_TIMES cdr(arb(m))), cdr(arb(m)) ¥S_TIMES cdr([[0,0],[1,0]])]) EQUAL(Stat12,Stat10) ==> m /= Fr_to_Ra([(car(arb(m)) ¥S_TIMES [1,0]) ¥S_PLUS ([0,0] ¥S_TIMES cdr(arb(m))), cdr(arb(m)) ¥S_TIMES [1,0]]) (car(arb(m)))-->T401 ==> [1,0] ¥S_TIMES car(arb(m)) = car(arb(m)) (cdr(arb(m)))-->T401 ==> Stat13: [1,0] ¥S_TIMES cdr(arb(m)) = cdr(arb(m)) (cdr(arb(m)))-->T401 ==> [0,0] ¥S_TIMES cdr(arb(m)) = [0,0] (car(arb(m)))-->T405 ==> (car(arb(m)) ¥S_PLUS [0,0]) = car(arb(m)) ALGEBRA(Stat13,Stat2,Stat7) ==> cdr(arb(m)) ¥S_TIMES [1,0] = cdr(arb(m)) ALGEBRA ==> (car(arb(m)) ¥S_TIMES [1,0]) ¥S_PLUS ([0,0] ¥S_TIMES cdr(arb(m))) = car(arb(m)) EQUAL ==> Stat14: m /= Fr_to_Ra([car(arb(m)),cdr(arb(m))]) EQUAL(Stat6,Stat7,Stat14) ==> false; Discharge ==> QED -- -- Next we prove that the rational version of the algebraic law 'x + (-x) = 0'. -- Theorem 452: [The sum of a rational number and its additive inverse is zero] (M in Ra) ¥imp ((Ra_Rev(M) in Ra) & ((M ¥Ra_PLUS Ra_Rev(M)) = Ra_0)). Proof: Suppose_not(m) ==> (m in Ra) & ((Ra_Rev(m) notin Ra) or (m ¥Ra_PLUS Ra_Rev(m)) /= Ra_0) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) (arb(m))-->T431 ==> (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) Loc_def ==> am = car(arb(m)) Loc_def ==> dm = cdr(arb(m)) EQUAL ==> Stat1: (arb(m) = [am,dm]) & (am in Si) & (dm in Si) & (dm /= [0,0]) (dm,dm)-->T407(Stat1*) ==> dm ¥S_TIMES dm /= [0,0] T368 ==> Stat2: ([0,0] in Si) & ([1,0] in Si) ALGEBRA ==> dm ¥S_TIMES dm in Si ([0,0],dm ¥S_TIMES dm)-->T432(Stat1*) ==> Stat3: [[0,0],dm ¥S_TIMES dm] in Fr am-->T391 ==> S_Rev(am) in Si Suppose ==> Ra_Rev(m) notin Ra Use_def(Ra_Rev) ==> Stat4: Fr_to_Ra([S_Rev(car(arb(m))),cdr(arb(m))]) notin Ra T420 ==> Stat5: (FORALL x | (x in Fr) ¥imp (Fr_to_Ra(x) in Ra)) ([S_Rev(car(arb(m))),cdr(arb(m))])-->Stat5(Stat4) ==> [S_Rev(car(arb(m))),cdr(arb(m))] notin Fr EQUAL ==> [S_Rev(am),dm] notin Fr ([S_Rev(am),dm])-->T431 ==> false; Discharge ==> (m ¥Ra_PLUS Ra_Rev(m)) /= Ra_0 -- -- -- Use_def(Ra_Rev) ==> m ¥Ra_PLUS Fr_to_Ra([S_Rev(car(arb(m))),cdr(arb(m))]) /= Ra_0 EQUAL ==> m ¥Ra_PLUS Fr_to_Ra([S_Rev(am),dm]) /= Ra_0 (m,S_Rev(am),dm)-->T438 ==> Fr_to_Ra([(car(arb(m)) ¥S_TIMES dm) ¥S_PLUS (cdr(arb(m)) ¥S_TIMES S_Rev(am)),cdr(arb(m)) ¥S_TIMES dm]) /= Ra_0 EQUAL ==> Ra_0 /= Fr_to_Ra([(am ¥S_TIMES dm) ¥S_PLUS (dm ¥S_TIMES S_Rev(am)),dm ¥S_TIMES dm]) ALGEBRA ==> (am ¥S_TIMES dm) ¥S_PLUS (dm ¥S_TIMES S_Rev(am)) = (am ¥S_TIMES dm) ¥S_MINUS (am ¥S_TIMES dm) ALGEBRA ==> am ¥S_TIMES dm in Si (am ¥S_TIMES dm)-->T404 ==> (am ¥S_TIMES dm) ¥S_PLUS (dm ¥S_TIMES S_Rev(am)) = [0,0] EQUAL ==> Ra_0 /= Fr_to_Ra([[0,0],dm ¥S_TIMES dm]) Use_def(Ra_0) ==> Stat6: Fr_to_Ra([[0,0],[1,0]]) /= Fr_to_Ra([[0,0],dm ¥S_TIMES dm]) ELEM ==> Stat7: (car([[0,0],[1,0]]) = [0,0]) & (cdr([[0,0],[1,0]]) = [1,0]) T212 ==> Stat8: 1 /= 0 (Stat7,Stat8,Stat2)ELEM ==> ([[0,0],[1,0]] = [car([[0,0],[1,0]]),cdr([[0,0],[1,0]])]) & (car([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) /= [0,0]) ([0,0],[1,0])-->T432(*) ==> Stat9: [[0,0],[1,0]] in Fr ([[0,0],[1,0]],[[0,0],dm ¥S_TIMES dm])-->T422(Stat9,Stat3,Stat6) ==> not(Same_frac([[0,0],[1,0]],[[0,0],dm ¥S_TIMES dm])) Use_def(Same_frac) ==> Stat10: [0,0] ¥S_TIMES (dm ¥S_TIMES dm) /= [1,0] ¥S_TIMES [0,0] (dm ¥S_TIMES dm)-->T401 ==> [0,0] ¥S_TIMES (dm ¥S_TIMES dm) = [0,0] (Stat10)ELEM ==> Stat11: [0,0] /= [1,0] ¥S_TIMES [0,0] ([1,0])-->T401 ==> [0,0] ¥S_TIMES [1,0] = [0,0] ALGEBRA(Stat11,Stat2) ==> [0,0] ¥S_TIMES [1,0] = [1,0] ¥S_TIMES [0,0] (Stat11)Discharge ==> QED -- -- Sometimes the folllowing variant of Theorem 452 is more convenient. -- Theorem 453: [The sum of a rational number and its additive inverse is zero, 2] (M in Ra) ¥imp ((Ra_Rev(M) in Ra) & ((Ra_Rev(M) ¥Ra_PLUS M) = Ra_0)). Proof: Suppose_not(m) ==> AUTO (m)-->T452 ==> AUTO (m,Ra_Rev(m))-->T445 ==> false; Discharge ==> QED -- -- We also need to know that the difference of rationals is rational. -- Theorem 454: [The difference of two rationals is rational] ((N in Ra) & (M in Ra)) ¥imp ((N ¥Ra_MINUS M) in Ra). Proof: Suppose_not(n,m) ==> AUTO Use_def(¥Ra_MINUS) ==> not((n ¥Ra_PLUS Ra_Rev(m)) in Ra) m-->T453 ==> Ra_Rev(m) in Ra (n,Ra_Rev(m))-->T445 ==> false; Discharge ==> QED -- -- The following elementary generalization of the preceding theorem gives the -- rational case of the inverse relationship between addition and subtraction. -- Theorem 455: [Rational subtraction is equivalent to addition of the rational negative] ((N in Ra) & (M in Ra)) ¥imp (N = M ¥Ra_PLUS (N ¥Ra_MINUS M)). Proof: Suppose_not(n,m) ==> (n in Ra) & (m in Ra) & (n /= m ¥Ra_PLUS (n ¥Ra_MINUS m)) Use_def(¥Ra_MINUS) ==> n /= m ¥Ra_PLUS (n ¥Ra_PLUS Ra_Rev(m)) m-->T452 ==> Ra_Rev(m) in Ra (n,Ra_Rev(m))-->T445 ==> n ¥Ra_PLUS Ra_Rev(m) = Ra_Rev(m) ¥Ra_PLUS n EQUAL ==> n /= m ¥Ra_PLUS (Ra_Rev(m) ¥Ra_PLUS n) (n,m,Ra_Rev(m))-->T450 ==> n /= (m ¥Ra_PLUS Ra_Rev(m)) ¥Ra_PLUS n m-->T452 ==> m ¥Ra_PLUS Ra_Rev(m) = Ra_0 EQUAL ==> n /= Ra_0 ¥Ra_PLUS n T451 ==> Ra_0 in Ra n-->T451 ==> n ¥Ra_PLUS Ra_0 = n (n,Ra_0)-->T445 ==> false; Discharge ==> QED -- -- Our next theorem states the associative law for rational multiplication. -- Theorem 456: [Associative law for rational multiplication] ((K in Ra) & (N in Ra) & (M in Ra)) ¥imp (N ¥Ra_TIMES (M ¥Ra_TIMES K) = (N ¥Ra_TIMES M) ¥Ra_TIMES K). Proof: Suppose_not(k,n,m) ==> Stat1: (k in Ra) & (n in Ra) & (m in Ra) & (n ¥Ra_TIMES (m ¥Ra_TIMES k) /= (n ¥Ra_TIMES m) ¥Ra_TIMES k) (n,m)-->T448 ==> (n ¥Ra_TIMES m) in Ra (n ¥Ra_TIMES m,k)-->T448 ==> n ¥Ra_TIMES (m ¥Ra_TIMES k) /= k ¥Ra_TIMES (n ¥Ra_TIMES m) n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) k-->T423 ==> (arb(k) in Fr) & (Fr_to_Ra(arb(k)) = k) (arb(n))-->T431 ==> (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) (arb(m))-->T431 ==> (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) (arb(k))-->T431 ==> (arb(k) = [car(arb(k)),cdr(arb(k))]) & (car(arb(k)) in Si) & (cdr(arb(k)) in Si) & (cdr(arb(k)) /= [0,0]) Loc_def ==> an = car(arb(n)) Loc_def ==> am = car(arb(m)) Loc_def ==> ak = car(arb(k)) Loc_def ==> dn = cdr(arb(n)) Loc_def ==> dm = cdr(arb(m)) Loc_def ==> dk = cdr(arb(k)) EQUAL ==> Stat2: (arb(n) = [an,dn]) & (an in Si) & (dn in Si) & (dn /= [0,0]) EQUAL ==> Stat3: (arb(m) = [am,dm]) & (am in Si) & (dm in Si) & (dm /= [0,0]) EQUAL ==> Stat4: (arb(k) = [ak,dk]) & (ak in Si) & (dk in Si) & (dk /= [0,0]) Use_def(¥Ra_TIMES) ==> n ¥Ra_TIMES Fr_to_Ra([car(arb(m)) ¥S_TIMES car(arb(k)),cdr(arb(m)) ¥S_TIMES cdr(arb(k))]) /= k ¥Ra_TIMES Fr_to_Ra([car(arb(n)) ¥S_TIMES car(arb(m)),cdr(arb(n)) ¥S_TIMES cdr(arb(m))]) EQUAL ==> n ¥Ra_TIMES Fr_to_Ra([am ¥S_TIMES ak,dm ¥S_TIMES dk]) /= k ¥Ra_TIMES Fr_to_Ra([an ¥S_TIMES am,dn ¥S_TIMES dm]) (dk,dm)-->T407(Stat3,Stat4*) ==> Stat5: dm ¥S_TIMES dk /= [0,0] (dm,dn)-->T407(Stat3,Stat2*) ==> Stat6: dn ¥S_TIMES dm /= [0,0] ALGEBRA ==> Stat7: (an ¥S_TIMES am in Si) & (dn ¥S_TIMES dm in Si) & (am ¥S_TIMES ak in Si) & (dm ¥S_TIMES dk in Si) ([am ¥S_TIMES ak,dm ¥S_TIMES dk])-->T431(Stat7,Stat5) ==> [am ¥S_TIMES ak,dm ¥S_TIMES dk] in Fr ([an ¥S_TIMES am,dn ¥S_TIMES dm])-->T431(Stat7,Stat6) ==> [an ¥S_TIMES am,dn ¥S_TIMES dm] in Fr (n,am ¥S_TIMES ak,dm ¥S_TIMES dk)-->T439(Stat7,Stat5,Stat1,Stat2,Stat3,Stat4) ==> n ¥Ra_TIMES Fr_to_Ra([am ¥S_TIMES ak,dm ¥S_TIMES dk]) = Fr_to_Ra([car(arb(n)) ¥S_TIMES (am ¥S_TIMES ak),cdr(arb(n)) ¥S_TIMES (dm ¥S_TIMES dk)]) EQUAL ==> n ¥Ra_TIMES Fr_to_Ra([am ¥S_TIMES ak,dm ¥S_TIMES dk]) = Fr_to_Ra([an ¥S_TIMES (am ¥S_TIMES ak),dn ¥S_TIMES (dm ¥S_TIMES dk)]) (k,an ¥S_TIMES am,dn ¥S_TIMES dm)-->T439(Stat7,Stat6,Stat1,Stat2,Stat3,Stat4) ==> k ¥Ra_TIMES Fr_to_Ra([an ¥S_TIMES am,dn ¥S_TIMES dm]) = Fr_to_Ra([car(arb(k)) ¥S_TIMES (an ¥S_TIMES am),cdr(arb(k)) ¥S_TIMES (dn ¥S_TIMES dm)]) EQUAL ==> k ¥Ra_TIMES Fr_to_Ra([an ¥S_TIMES am,dn ¥S_TIMES dm]) = Fr_to_Ra([ak ¥S_TIMES (an ¥S_TIMES am),dk ¥S_TIMES (dn ¥S_TIMES dm)]) ALGEBRA ==> false; Discharge ==> QED -- -- Next we prove that a rational number remains unchanged if its numerator and denominator are multiplied -- by a common integer. -- Theorem 457: [Muliplication of numerator and denominator by a common nonzero function does not change the rational number it represents] ((K in Si) & (N in Si) & (M in Si) & (K /= [0,0]) & (M /= [0,0])) ¥imp (Fr_to_Ra([N,M]) = Fr_to_Ra([K ¥S_TIMES N,K ¥S_TIMES M])). Proof: Suppose_not(k,n,m) ==> (k in Si) & (n in Si) & (m in Si) & (k /= [0,0]) & (m /= [0,0]) & (Fr_to_Ra([n,m]) /= Fr_to_Ra([k ¥S_TIMES n,k ¥S_TIMES m])) (n,m)-->T432(*) ==> [n,m] in Fr ALGEBRA ==> (k ¥S_TIMES n in Si) & (k ¥S_TIMES m in Si) (m,k)-->T407 ==> k ¥S_TIMES m /= [0,0] (k ¥S_TIMES n,k ¥S_TIMES m)-->T432(*) ==> [k ¥S_TIMES n,k ¥S_TIMES m] in Fr ([n,m],[k ¥S_TIMES n,k ¥S_TIMES m])-->T422 ==> not Same_frac([n,m],[k ¥S_TIMES n,k ¥S_TIMES m]) Use_def(Same_frac) ==> n ¥S_TIMES (k ¥S_TIMES m) /= m ¥S_TIMES (k ¥S_TIMES n) ALGEBRA ==> false; Discharge ==> QED -- -- The following theorem states the distributive law for rational numbers. -- Theorem 458: [Distributive law for rationals] ((K in Ra) & (N in Ra) & (M in Ra)) ¥imp (N ¥Ra_TIMES (M ¥Ra_PLUS K) = (N ¥Ra_TIMES M) ¥Ra_PLUS (N ¥Ra_TIMES K)). Proof: Suppose_not(k,n,m) ==> Stat1: (k in Ra) & (n in Ra) & (m in Ra) & (n ¥Ra_TIMES (m ¥Ra_PLUS k) /= (n ¥Ra_TIMES m) ¥Ra_PLUS (n ¥Ra_TIMES k)) -- -- Supposing the contrary, consider the fractions defining each of our three rational numbers. -- n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) k-->T423 ==> (arb(k) in Fr) & (Fr_to_Ra(arb(k)) = k) (arb(n))-->T431 ==> Stat2: (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) (arb(m))-->T431 ==> Stat3: (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) (arb(k))-->T431 ==> Stat4: (arb(k) = [car(arb(k)),cdr(arb(k))]) & (car(arb(k)) in Si) & (cdr(arb(k)) in Si) & (cdr(arb(k)) /= [0,0]) -- -- To keep our notation under control, it is convenient to introduce abbreviations for -- the numerators and denominators of these fractions. -- Loc_def ==> Stat5: an = car(arb(n)) Loc_def ==> Stat6: am = car(arb(m)) Loc_def ==> Stat7: ak = car(arb(k)) Loc_def ==> Stat8: dn = cdr(arb(n)) Loc_def ==> Stat9: dm = cdr(arb(m)) Loc_def ==> Stat10: dk = cdr(arb(k)) EQUAL ==> Stat11: (arb(n) = [an,dn]) & (an in Si) & (dn in Si) & (dn /= [0,0]) EQUAL ==> Stat12: (arb(m) = [am,dm]) & (am in Si) & (dm in Si) & (dm /= [0,0]) EQUAL ==> Stat13: (arb(k) = [ak,dk]) & (ak in Si) & (dk in Si) & (dk /= [0,0]) -- -- It is obvious that the various products entering into the definition of the -- product and sum rationals that will concern us are all signed integers. -- Thus we can express all these product and sum rationals in terms of their defining fractions. -- ALGEBRA ==> Stat14: (an ¥S_TIMES am in Si) & (an ¥S_TIMES ak in Si) & ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm) in Si) & (dn ¥S_TIMES dm in Si) & (dn ¥S_TIMES dk in Si) & (dm ¥S_TIMES dk in Si) (dm,dn)-->T407(Stat11*) ==> Stat15: dn ¥S_TIMES dm /= [0,0] (dk,dn)-->T407(Stat11*) ==> Stat16: dn ¥S_TIMES dk /= [0,0] (dk,dm)-->T407(Stat11*) ==> Stat17: dm ¥S_TIMES dk /= [0,0] Use_def(¥Ra_PLUS) ==> Stat18: m ¥Ra_PLUS k = Fr_to_Ra([(car(arb(m)) ¥S_TIMES cdr(arb(k))) ¥S_PLUS (car(arb(k)) ¥S_TIMES cdr(arb(m))), cdr(arb(m)) ¥S_TIMES cdr(arb(k))]) Use_def(¥Ra_TIMES) ==> Stat19: n ¥Ra_TIMES m = Fr_to_Ra([car(arb(n)) ¥S_TIMES car(arb(m)), cdr(arb(n)) ¥S_TIMES cdr(arb(m))]) Use_def(¥Ra_TIMES) ==> Stat20: n ¥Ra_TIMES k = Fr_to_Ra([car(arb(n)) ¥S_TIMES car(arb(k)), cdr(arb(n)) ¥S_TIMES cdr(arb(k))]) EQUAL ==> m ¥Ra_PLUS k = Fr_to_Ra([(am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm),dm ¥S_TIMES dk]) EQUAL ==> n ¥Ra_TIMES m = Fr_to_Ra([an ¥S_TIMES am,dn ¥S_TIMES dm]) EQUAL ==> n ¥Ra_TIMES k = Fr_to_Ra([an ¥S_TIMES ak,dn ¥S_TIMES dk]) EQUAL ==> Stat21: n ¥Ra_TIMES (m ¥Ra_PLUS k) = n ¥Ra_TIMES Fr_to_Ra([(am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm),dm ¥S_TIMES dk]) ALGEBRA ==> Stat22: (am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm) in Si (n,(am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm),dm ¥S_TIMES dk)-->T439(Stat1,Stat21,Stat22,Stat14,Stat17) ==> Stat23: n ¥Ra_TIMES (m ¥Ra_PLUS k) = Fr_to_Ra([car(arb(n)) ¥S_TIMES ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm)),cdr(arb(n)) ¥S_TIMES (dm ¥S_TIMES dk)]) EQUAL(Stat23,Stat5,Stat8) ==> n ¥Ra_TIMES (m ¥Ra_PLUS k) = Fr_to_Ra([an ¥S_TIMES ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm)),dn ¥S_TIMES (dm ¥S_TIMES dk)]) (an ¥S_TIMES am,dn ¥S_TIMES dm,an ¥S_TIMES ak,dn ¥S_TIMES dk)-->T447(Stat14,Stat15,Stat16,Stat17) ==> Fr_to_Ra([an ¥S_TIMES am,dn ¥S_TIMES dm]) ¥Ra_PLUS Fr_to_Ra([an ¥S_TIMES ak,dn ¥S_TIMES dk]) = Fr_to_Ra([((an ¥S_TIMES am) ¥S_TIMES (dn ¥S_TIMES dk)) ¥S_PLUS ((an ¥S_TIMES ak) ¥S_TIMES (dn ¥S_TIMES dm)), ((dn ¥S_TIMES dm) ¥S_TIMES (dn ¥S_TIMES dk))]) EQUAL ==> (n ¥Ra_TIMES m) ¥Ra_PLUS (n ¥Ra_TIMES k) = Fr_to_Ra([((an ¥S_TIMES am) ¥S_TIMES (dn ¥S_TIMES dk)) ¥S_PLUS ((an ¥S_TIMES ak) ¥S_TIMES (dn ¥S_TIMES dm)), ((dn ¥S_TIMES dm) ¥S_TIMES (dn ¥S_TIMES dk))]) ALGEBRA(Stat11*) ==> (n ¥Ra_TIMES m) ¥Ra_PLUS (n ¥Ra_TIMES k) = Fr_to_Ra([dn ¥S_TIMES (an ¥S_TIMES ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm))), dn ¥S_TIMES (dn ¥S_TIMES (dm ¥S_TIMES dk))]) Loc_def ==> Stat24: aa = (an ¥S_TIMES ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm))) Loc_def ==> Stat25: dd = (dn ¥S_TIMES (dm ¥S_TIMES dk)) -- -- This brings us to the following expressions for the quantities with which we are concerned, -- which must be different if our theorem fails: -- EQUAL ==> Stat26: (n ¥Ra_TIMES m) ¥Ra_PLUS (n ¥Ra_TIMES k) = Fr_to_Ra([dn ¥S_TIMES aa, dn ¥S_TIMES dd]) EQUAL ==> Stat27: n ¥Ra_TIMES (m ¥Ra_PLUS k) = Fr_to_Ra([aa,dd]) Use_def(Same_frac) ==> Stat28: Same_frac([dn ¥S_TIMES aa, dn ¥S_TIMES dd],[aa,dd]) ¥eq (car([dn ¥S_TIMES aa, dn ¥S_TIMES dd]) ¥S_TIMES cdr([aa,dd]) = cdr([dn ¥S_TIMES aa, dn ¥S_TIMES dd]) ¥S_TIMES car([aa,dd])) (Stat28)ELEM ==> (car([dn ¥S_TIMES aa, dn ¥S_TIMES dd]) = dn ¥S_TIMES aa) & (cdr([dn ¥S_TIMES aa, dn ¥S_TIMES dd]) = dn ¥S_TIMES dd) (Stat28)ELEM ==> (car([aa,dd]) = aa) & (cdr([aa,dd]) = dd) EQUAL(Stat28) ==> Stat29: Same_frac([dn ¥S_TIMES aa, dn ¥S_TIMES dd],[aa,dd]) ¥eq ((dn ¥S_TIMES aa) ¥S_TIMES dd = (dn ¥S_TIMES dd) ¥S_TIMES aa) ALGEBRA(Stat11,Stat12,Stat13) ==> Stat30: ((an ¥S_TIMES ((am ¥S_TIMES dk) ¥S_PLUS (ak ¥S_TIMES dm))) in Si) & ((dn ¥S_TIMES (dm ¥S_TIMES dk)) in Si) (dm ¥S_TIMES dk,dn)-->T407(Stat11,Stat17,Stat14*) ==> Stat31: (dn ¥S_TIMES (dm ¥S_TIMES dk)) /= [0,0] EQUAL ==> Stat32: (aa in Si) & (dd in Si) & (dd /= [0,0]) ALGEBRA(Stat11) ==> (dn ¥S_TIMES aa in Si) & (dn ¥S_TIMES dd in Si) (aa,dd)-->T432(Stat32,Stat32*) ==> Stat33: [aa,dd] in Fr ALGEBRA(Stat11) ==> (dn ¥S_TIMES aa) ¥S_TIMES dd = (dn ¥S_TIMES dd) ¥S_TIMES aa (dd,dn)-->T407(Stat11,Stat32*) ==> dn ¥S_TIMES dd /= [0,0] (dn ¥S_TIMES aa, dn ¥S_TIMES dd)-->T432(Stat32*) ==> Stat34: [dn ¥S_TIMES aa, dn ¥S_TIMES dd] in Fr (Stat29)ELEM ==> Stat35: Same_frac([dn ¥S_TIMES aa, dn ¥S_TIMES dd],[aa,dd]) ([dn ¥S_TIMES aa, dn ¥S_TIMES dd],[aa,dd])-->T422(Stat1,Stat26,Stat27,Stat35,Stat33,Stat34) ==> false; Discharge ==> QED -- -- The following result, which is only a slight variant of what has gone before, -- rexpresses the condition that the rational number derived from a fraction -- should be non-negative in terms of the fraction's numerator and denominator. -- Theorem 459: [Expressing the sign of a rational in terms of the numerator and denominator of any representing fraction] ((X in Si) & (Y in Si) & (Y /= [0,0])) ¥imp (Ra_is_nonneg(Fr_to_Ra([X,Y])) ¥eq is_nonneg(X ¥S_TIMES Y)). Proof: Suppose_not(n,m) ==> (n in Si) & (m in Si) & (m /= [0,0]) & (not(Ra_is_nonneg(Fr_to_Ra([n,m])) ¥eq is_nonneg(n ¥S_TIMES m))) (n,m)-->T432(*) ==> [n,m] in Fr ([n,m])-->T421 ==> Fr_to_Ra([n,m]) in Ra (Fr_to_Ra([n,m]))-->T423 ==> arb(Fr_to_Ra([n,m])) in Fr ([n,m])-->T421 ==> Same_frac([n,m],arb(Fr_to_Ra([n,m]))) ([n,m],arb(Fr_to_Ra([n,m])))-->T442 ==> is_nonneg(car(arb(Fr_to_Ra([n,m]))) ¥S_TIMES cdr(arb(Fr_to_Ra([n,m])))) ¥eq is_nonneg(car([n,m]) ¥S_TIMES cdr([n,m])) ELEM ==> (car([n,m]) = n) & (cdr([n,m]) = m) EQUAL ==> is_nonneg(car(arb(Fr_to_Ra([n,m]))) ¥S_TIMES cdr(arb(Fr_to_Ra([n,m])))) ¥eq is_nonneg(n ¥S_TIMES m) Use_def(Ra_is_nonneg) ==> Ra_is_nonneg(Fr_to_Ra([n,m])) ¥eq (is_nonneg(car(arb(Fr_to_Ra([n,m]))) ¥S_TIMES cdr(arb(Fr_to_Ra([n,m]))))) Discharge ==> QED -- -- Next we not that various utility constants are signed integers (or fractions): the zero and unity signed integers, -- likewise the zero and unity fractions. -- Theorem 460: [The unit and zero signed signed integers addition] ([1,0] in Si) & ([0,0] in Si) & ([1,0] /= [0,0]) & ([[0,0],[1,0]] in Fr) & ([[1,0],[1,0]] in Fr). Proof: Suppose_not ==> not( ([1,0] in Si) & ([0,0] in Si) & ([1,0] /= [0,0]) & ([[0,0],[1,0]] in Fr) & ([[1,0],[1,0]] in Fr)) T212 ==> (0 in Za) & (1 in Za) & (0 /= 1) Suppose ==> [1,0] notin Si Use_def(Si) ==> Stat1: [1,0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (1,0)-->Stat1 ==> false; Discharge ==> [1,0] in Si Suppose ==> [0,0] notin Si Use_def(Si) ==> Stat2: [0,0] notin {[x,y]: x in Za, y in Za | x = 0 or y = 0} (0,0)-->Stat2 ==> false; Discharge ==> [0,0] in Si ELEM ==> [1,0] /= [0,0] ([0,0],[1,0])-->T432(*) ==> [[0,0],[1,0]] in Fr ([1,0],[1,0])-->T432(*) ==> [[1,0],[1,0]] in Fr Discharge ==> QED -- -- Our next, quite elementary, result simply state that the unit rational number is the multiplicative unit for rationals. -- Theorem 461: [The unit rational is the rational multiplicative identity] (M in Ra) ¥imp (M = M ¥Ra_TIMES Ra_1). Proof: Suppose_not(m) ==> (m in Ra) & (m /= m ¥Ra_TIMES Ra_1) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) (arb(m))-->T431 ==> (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) Loc_def ==> am = car(arb(m)) Loc_def ==> dm = cdr(arb(m)) Use_def(Ra_1) ==> m /= m ¥Ra_TIMES Fr_to_Ra([[1,0],[1,0]]) T460 ==> ([1,0] in Si) & ([1,0] /= [0,0]) (m,[1,0],[1,0])-->T439 ==> m /= Fr_to_Ra([car(arb(m)) ¥S_TIMES [1,0],cdr(arb(m)) ¥S_TIMES [1,0]]) EQUAL ==> m /= Fr_to_Ra([am ¥S_TIMES [1,0],dm ¥S_TIMES [1,0]]) am-->T402 ==> am ¥S_TIMES [1,0] = am dm-->T402 ==> dm ¥S_TIMES [1,0] = dm EQUAL ==> m /= Fr_to_Ra([am,dm]) EQUAL ==> false; Discharge ==> QED -- -- Next we show that if m is a nonzero rational, its reciprocal Recip(m) is also a rational, -- and is the multiplicative inverse of m. This tells us that the rational numbers form an -- algebraic 'field'. -- Theorem 462: [Multiplication of a rational by its reciprocal gives 1] ((M in Ra) & (M /= Ra_0)) ¥imp ((Recip(M) in Ra) & (M ¥Ra_TIMES Recip(M) = Ra_1)). Proof: Suppose_not(m) ==> Stat1: (m in Ra) & (m /= Ra_0) & (Recip(m) notin Ra or m ¥Ra_TIMES Recip(m) /= Ra_1) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) (arb(m))-->T431 ==> (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) Loc_def ==> am = car(arb(m)) Loc_def ==> dm = cdr(arb(m)) EQUAL ==> Stat2: (arb(m) = [am,dm]) & (am in Si) & (dm in Si) & (dm /= [0,0]) EQUAL ==> [am,dm] in Fr T460 ==> Stat3: ([1,0] in Si) & ([0,0] in Si) & ([1,0] /= [0,0]) & ([[0,0],[1,0]] in Fr) & ([[1,0],[1,0]] in Fr) Suppose ==> am = [0,0] EQUAL ==> am ¥S_TIMES [1,0] = [0,0] ¥S_TIMES [1,0] dm-->T401 ==> [0,0] ¥S_TIMES dm = [0,0] ([1,0])-->T401 ==> [0,0] ¥S_TIMES dm = [0,0] ALGEBRA ==> dm ¥S_TIMES [0,0] = [0,0] ELEM ==> (car([am,dm]) = am) & (cdr([am,dm]) = dm) & (car([[0,0],[1,0]]) = [0,0]) & (cdr([[0,0],[1,0]]) = [1,0]) EQUAL ==> car([am,dm]) ¥S_TIMES cdr([[0,0],[1,0]]) = cdr([am,dm]) ¥S_TIMES car([[0,0],[1,0]]) Use_def(Same_frac) ==> Same_frac([am,dm],[[0,0],[1,0]]) ([am,dm],[[0,0],[1,0]])-->T422 ==> Fr_to_Ra([am,dm]) = Fr_to_Ra([[0,0],[1,0]]) EQUAL ==> Fr_to_Ra([am,dm]) = m Use_def(Ra_0) ==> false; Discharge ==> Stat4: am /= [0,0] Use_def(Recip) ==> Recip(m) = Fr_to_Ra([cdr(arb(m)),car(arb(m))]) (dm,am)-->T432(*) ==> [dm,am] in Fr ALGEBRA ==> (am ¥S_TIMES dm in Si) & (dm ¥S_TIMES am in Si) (am,dm)-->T407(Stat2,Stat4*) ==> dm ¥S_TIMES am /= [0,0] (am ¥S_TIMES dm,dm ¥S_TIMES am)-->T432(*) ==> Stat5: [am ¥S_TIMES dm,dm ¥S_TIMES am] in Fr EQUAL ==> Stat6: Recip(m) = Fr_to_Ra([dm,am]) ([dm,am])-->T421 ==> Stat7: Recip(m) in Ra EQUAL(Stat7,Stat1,Stat6) ==> Stat8: (m ¥Ra_TIMES Fr_to_Ra([dm,am]) /= Ra_1) (m,dm,am)-->T439(Stat1,Stat8,Stat2,Stat4) ==> Fr_to_Ra([car(arb(m)) ¥S_TIMES dm,cdr(arb(m)) ¥S_TIMES am]) /= Ra_1 EQUAL ==> Fr_to_Ra([am ¥S_TIMES dm,dm ¥S_TIMES am]) /= Ra_1 Use_def(Ra_1) ==> Stat9: Fr_to_Ra([am ¥S_TIMES dm,dm ¥S_TIMES am]) /= Fr_to_Ra([[1,0],[1,0]]) ([am ¥S_TIMES dm,dm ¥S_TIMES am],[[1,0],[1,0]])-->T422(Stat9,Stat3,Stat5) ==> not Same_frac([am ¥S_TIMES dm,dm ¥S_TIMES am],[[1,0],[1,0]]) Use_def(Same_frac) ==> Stat10: car([am ¥S_TIMES dm,dm ¥S_TIMES am]) ¥S_TIMES cdr([[1,0],[1,0]]) /= cdr([am ¥S_TIMES dm,dm ¥S_TIMES am]) ¥S_TIMES car([[1,0],[1,0]]) (Stat10)ELEM ==> (am ¥S_TIMES dm) ¥S_TIMES [1,0] /= (dm ¥S_TIMES am) ¥S_TIMES [1,0] ALGEBRA ==> false; Discharge ==> QED -- -- The following corollary of Theorem 462 is of a merely technical nature. -- Theorem 463: ((N in Ra) & (M in Ra) & (M /= Ra_0)) ¥imp (((N ¥Ra_TIMES (M ¥Ra_TIMES M)) ¥Ra_TIMES (Recip(M) ¥Ra_TIMES Recip(M))) = N). Proof: Suppose_not(n,m) ==> AUTO m-->T462 ==> (Recip(m) in Ra) & ((m ¥Ra_TIMES Recip(m)) = Ra_1) (m,m)-->T448 ==> (m ¥Ra_TIMES m) in Ra (Recip(m),Recip(m))-->T448 ==> (Recip(m) ¥Ra_TIMES Recip(m)) in Ra (Recip(m),m ¥Ra_TIMES m,Recip(m))-->T456 ==> ((m ¥Ra_TIMES m) ¥Ra_TIMES (Recip(m) ¥Ra_TIMES Recip(m))) = (((m ¥Ra_TIMES m) ¥Ra_TIMES Recip(m)) ¥Ra_TIMES Recip(m)) (Recip(m) ¥Ra_TIMES Recip(m),n,m ¥Ra_TIMES m)-->T456 ==> (n ¥Ra_TIMES ((m ¥Ra_TIMES m) ¥Ra_TIMES (Recip(m) ¥Ra_TIMES Recip(m)))) = ((n ¥Ra_TIMES (m ¥Ra_TIMES m)) ¥Ra_TIMES (Recip(m) ¥Ra_TIMES Recip(m))) (Recip(m),m,m)-->T456 ==> (m ¥Ra_TIMES (m ¥Ra_TIMES Recip(m))) = ((m ¥Ra_TIMES m) ¥Ra_TIMES Recip(m)) m-->T461 ==> (m = m ¥Ra_TIMES Ra_1) n-->T461 ==> (n = n ¥Ra_TIMES Ra_1) EQUAL ==> false; Discharge ==> QED -- -- The following elementary extension of Theorem 462 gives -- the inverse relationship between rational multiplication and division. -- Theorem 464: [Rational division is multiplication by the reciprocal] ((N in Ra) & (M in Ra) & (M /= Ra_0)) ¥imp (N = M ¥Ra_TIMES (N ¥Ra_OVER M)). Proof: Suppose_not(n,m) ==> (n in Ra) & (m in Ra) & (m /= Ra_0) & (n /= m ¥Ra_TIMES (n ¥Ra_OVER m)) m-->T462 ==> Recip(m) in Ra Use_def(¥Ra_OVER) ==> n ¥Ra_OVER m = n ¥Ra_TIMES Recip(m) EQUAL ==> n /= m ¥Ra_TIMES (n ¥Ra_TIMES Recip(m)) (m,n ¥Ra_TIMES Recip(m))-->T448 ==> n /= m ¥Ra_TIMES (n ¥Ra_TIMES Recip(m)) (n,Recip(m))-->T448 ==> n ¥Ra_TIMES Recip(m) = Recip(m) ¥Ra_TIMES n EQUAL ==> n /= m ¥Ra_TIMES (Recip(m) ¥Ra_TIMES n) (n,m,Recip(m))-->T456 ==> n /= (m ¥Ra_TIMES Recip(m)) ¥Ra_TIMES n m-->T462 ==> m ¥Ra_TIMES Recip(m) = Ra_1 EQUAL ==> n /= Ra_1 ¥Ra_TIMES n T451 ==> Ra_1 in Ra (n,Ra_1)-->T448 ==> n /= n ¥Ra_TIMES Ra_1 n-->T461 ==> false; Discharge ==> QED -- Theorem 465: [0 and 1 have non-negative rationals] Ra_is_nonneg(Ra_0) & Ra_is_nonneg(Ra_1). Proof: Suppose_not ==> not (Ra_is_nonneg(Ra_0) & Ra_is_nonneg(Ra_1)) T368 ==> Stat1: ([0,0] in Si) & ([1,0] in Si) T212 ==> Stat2: 1 /= 0 (Stat1)ELEM ==> ([[0,0],[1,0]] = [car([[0,0],[1,0]]),cdr([[0,0],[1,0]])]) & (car([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) /= [0,0]) ([0,0],[1,0])-->T432(*) ==> [[0,0],[1,0]] in Fr ([1,0],[1,0])-->T432(*) ==> [[1,0],[1,0]] in Fr ([[0,0],[1,0]])-->T421 ==> Fr_to_Ra([[0,0],[1,0]]) in Ra ([[1,0],[1,0]])-->T421 ==> Fr_to_Ra([[1,0],[1,0]]) in Ra (Fr_to_Ra([[0,0],[1,0]]))-->T423 ==> arb(Fr_to_Ra([[0,0],[1,0]])) in Fr (Fr_to_Ra([[1,0],[1,0]]))-->T423 ==> arb(Fr_to_Ra([[1,0],[1,0]])) in Fr Use_def(Ra_0) ==> Ra_0 = Fr_to_Ra([[0,0],[1,0]]) Use_def(Ra_1) ==> Ra_1 = Fr_to_Ra([[1,0],[1,0]]) EQUAL ==> not (Ra_is_nonneg(Fr_to_Ra([[0,0],[1,0]])) & Ra_is_nonneg(Fr_to_Ra([[1,0],[1,0]]))) T460 ==> ([0,0] in Si) & ([1,0] in Si) & ([1,0] /= [0,0]) Use_def(Ra_is_nonneg) ==> (Ra_is_nonneg(Fr_to_Ra([[0,0],[1,0]])) ¥eq is_nonneg(car(arb(Fr_to_Ra([[0,0],[1,0]]))) ¥S_TIMES cdr(arb(Fr_to_Ra([[0,0],[1,0]]))))) & (Ra_is_nonneg(Fr_to_Ra([[1,0],[1,0]])) ¥eq is_nonneg(car(arb(Fr_to_Ra([[1,0],[1,0]]))) ¥S_TIMES cdr(arb(Fr_to_Ra([[1,0],[1,0]]))))) ELEM ==> (car([[0,0],[1,0]]) = [0,0]) & (cdr([[0,0],[1,0]]) = [1,0]) ELEM ==> (car([[1,0],[1,0]]) = [1,0]) & (cdr([[1,0],[1,0]]) = [1,0]) ([[1,0],[1,0]])-->T421 ==> Same_frac([[1,0],[1,0]],arb(Fr_to_Ra([[1,0],[1,0]]))) ([[0,0],[1,0]])-->T421 ==> Same_frac([[0,0],[1,0]],arb(Fr_to_Ra([[0,0],[1,0]]))) ([[1,0],[1,0]],arb(Fr_to_Ra([[1,0],[1,0]])))-->T442 ==> is_nonneg(car([[1,0],[1,0]]) ¥S_TIMES cdr([[1,0],[1,0]])) ¥eq is_nonneg(car(arb(Fr_to_Ra([[1,0],[1,0]]))) ¥S_TIMES cdr(arb(Fr_to_Ra([[1,0],[1,0]])))) ([[0,0],[1,0]],arb(Fr_to_Ra([[0,0],[1,0]])))-->T442 ==> is_nonneg(car([[0,0],[1,0]]) ¥S_TIMES cdr([[0,0],[1,0]])) ¥eq is_nonneg(car(arb(Fr_to_Ra([[0,0],[1,0]]))) ¥S_TIMES cdr(arb(Fr_to_Ra([[0,0],[1,0]])))) EQUAL ==> (Ra_is_nonneg(Fr_to_Ra([[0,0],[1,0]])) ¥eq is_nonneg([0,0] ¥S_TIMES [1,0])) & (Ra_is_nonneg(Fr_to_Ra([[1,0],[1,0]])) ¥eq is_nonneg([1,0] ¥S_TIMES [1,0])) ([0,0])-->T402 ==> [0,0] ¥S_TIMES [1,0] = [0,0] ([1,0])-->T402 ==> [1,0] ¥S_TIMES [1,0] = [1,0] EQUAL ==> Ra_is_nonneg(Fr_to_Ra([[0,0],[1,0]])) ¥eq is_nonneg([0,0]) EQUAL ==> Ra_is_nonneg(Fr_to_Ra([[1,0],[1,0]])) ¥eq is_nonneg([1,0]) Use_def(is_nonneg) ==> Ra_is_nonneg(Fr_to_Ra([[0,0],[1,0]])) & Ra_is_nonneg(Fr_to_Ra([[1,0],[1,0]])) Discharge ==> QED -- -- Next we show that given a rational number $r$, either it or its reverse $Ra_Rev(r)$ -- must be non-negative, and that if both are non-negative $r$ must be zero. -- This is the rational analog of Theorem 424 for signed integers. -- Theorem 466: [One of a rational and its additive inverse is always non-negative, and both are non-negative only if the rational is zero] (X in Ra) ¥imp ((Ra_is_nonneg(X) or Ra_is_nonneg(Ra_Rev(X))) & ((Ra_is_nonneg(X) & Ra_is_nonneg(Ra_Rev(X))) ¥imp (X = Ra_0))). Proof: -- -- This is a duplicate of Theorem 466: one of the two should be suppressed! -- Suppose_not(n) ==> (n in Ra) & ((not (Ra_is_nonneg(n) or Ra_is_nonneg(Ra_Rev(n)))) or (Ra_is_nonneg(n) & Ra_is_nonneg(Ra_Rev(n)) & (n /= Ra_0))) Use_def(Ra_Rev) ==> Ra_Rev(n) = Fr_to_Ra([S_Rev(car(arb(n))),cdr(arb(n))]) EQUAL ==> Ra_is_nonneg(Ra_Rev(n)) ¥eq Ra_is_nonneg(Fr_to_Ra([S_Rev(car(arb(n))),cdr(arb(n))])) n-->T423 ==> Stat1: (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) (arb(n))-->T431 ==> (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) EQUAL ==> [car(arb(n)),cdr(arb(n))] in Fr (car(arb(n)))-->T391 ==> S_Rev(car(arb(n))) in Si (S_Rev(car(arb(n))),cdr(arb(n)))-->T459 ==> Ra_is_nonneg(Ra_Rev(n)) ¥eq is_nonneg(S_Rev(car(arb(n))) ¥S_TIMES cdr(arb(n))) ELEM ==> (not (Ra_is_nonneg(n) or is_nonneg(S_Rev(car(arb(n))) ¥S_TIMES cdr(arb(n))))) or ((Ra_is_nonneg(n) & is_nonneg(S_Rev(car(arb(n))) ¥S_TIMES cdr(arb(n)))) & (n /= Ra_0)) Use_def(Ra_is_nonneg) ==> (not(is_nonneg(car(arb(n)) ¥S_TIMES cdr(arb(n))) or is_nonneg(S_Rev(car(arb(n))) ¥S_TIMES cdr(arb(n))))) or (is_nonneg(car(arb(n)) ¥S_TIMES cdr(arb(n))) & is_nonneg(S_Rev(car(arb(n))) ¥S_TIMES cdr(arb(n))) & (n /= Ra_0)) ALGEBRA ==> S_Rev(car(arb(n))) ¥S_TIMES cdr(arb(n)) = S_Rev(car(arb(n)) ¥S_TIMES cdr(arb(n))) EQUAL ==> (not(is_nonneg(car(arb(n)) ¥S_TIMES cdr(arb(n))) or is_nonneg(S_Rev(car(arb(n)) ¥S_TIMES cdr(arb(n)))))) or (is_nonneg(car(arb(n)) ¥S_TIMES cdr(arb(n))) & is_nonneg(S_Rev(car(arb(n)) ¥S_TIMES cdr(arb(n)))) & (n /= Ra_0)) ALGEBRA ==> car(arb(n)) ¥S_TIMES cdr(arb(n)) in Si (car(arb(n)) ¥S_TIMES cdr(arb(n)))-->T424 ==> Stat2: (car(arb(n)) ¥S_TIMES cdr(arb(n)) = [0,0]) & (n /= Ra_0) (cdr(arb(n)),car(arb(n)))-->T407 ==> car(arb(n)) = [0,0] Use_def(Ra_0) ==> Ra_0 = Fr_to_Ra([[0,0],[1,0]]) Use_def(Same_frac) ==> Stat3: Same_frac([[0,0],[1,0]],[car(arb(n)),cdr(arb(n))]) ¥eq (car([[0,0],[1,0]]) ¥S_TIMES cdr([car(arb(n)),cdr(arb(n))]) = cdr([[0,0],[1,0]]) ¥S_TIMES car([car(arb(n)),cdr(arb(n))])) (Stat3)ELEM ==> Same_frac([[0,0],[1,0]],[car(arb(n)),cdr(arb(n))]) ¥eq ([0,0] ¥S_TIMES cdr(arb(n)) = [1,0] ¥S_TIMES car(arb(n))) EQUAL ==> Stat4: Same_frac([[0,0],[1,0]],[car(arb(n)),cdr(arb(n))]) ¥eq ([0,0] ¥S_TIMES cdr(arb(n)) = [1,0] ¥S_TIMES [0,0]) (cdr(arb(n)))-->T401 ==> [0,0] ¥S_TIMES cdr(arb(n)) = [0,0] T368 ==> [0,0] in Si ([0,0])-->T401 ==> [1,0] ¥S_TIMES [0,0] = [0,0] T368 ==> Stat5: ([0,0] in Si) & ([1,0] in Si) T212 ==> Stat6: 1 /= 0 (Stat5)ELEM ==> ([[0,0],[1,0]] = [car([[0,0],[1,0]]),cdr([[0,0],[1,0]])]) & (car([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) /= [0,0]) ([0,0],[1,0])-->T432(*) ==> [[0,0],[1,0]] in Fr (Stat4)ELEM ==> Same_frac([[0,0],[1,0]],[car(arb(n)),cdr(arb(n))]) ([[0,0],[1,0]],[car(arb(n)),cdr(arb(n))])-->T422 ==> Fr_to_Ra([[0,0],[1,0]]) = Fr_to_Ra([car(arb(n)),cdr(arb(n))]) EQUAL ==> Stat7: Ra_0 = Fr_to_Ra(arb(n)) (Stat7,Stat2,Stat1)Discharge ==> QED -- -- -- Theorem 467: [The unit rational is the identity for multiplication] (X in Ra) ¥imp (X = X ¥Ra_TIMES Ra_1). Proof: Suppose_not(n) ==> (n in Ra) & (n /= n ¥Ra_TIMES Ra_1) Use_def(Ra_1) ==> n /= n ¥Ra_TIMES Fr_to_Ra([[1,0],[1,0]]) T368 ==> ([1,0] in Si) & ([1,0] /= [0,0]) n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) (n,[1,0],[1,0])-->T439 ==> n ¥Ra_TIMES Fr_to_Ra([[1,0],[1,0]]) = Fr_to_Ra([car(arb(n)) ¥S_TIMES [1,0],cdr(arb(n)) ¥S_TIMES [1,0]]) (arb(n))-->T431 ==> (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) (car(arb(n)))-->T402 ==> car(arb(n)) ¥S_TIMES [1,0] = car(arb(n)) (cdr(arb(n)))-->T402 ==> cdr(arb(n)) ¥S_TIMES [1,0] = cdr(arb(n)) EQUAL ==> n ¥Ra_TIMES Fr_to_Ra([[1,0],[1,0]]) = Fr_to_Ra([car(arb(n)),cdr(arb(n))]) EQUAL ==> false; Discharge ==> QED -- -- Next we show that a rational number is zero if and only if the numerator of any one of -- its expressions as a fraction is zero. -- Theorem 468: [The zero rational is represented by any fraction whose numerator is 0] (X in Ra) ¥imp ((X = Ra_0) ¥eq (car(arb(X)) = [0,0])). Proof: Suppose_not(n) ==> (n in Ra) & (not((n = Ra_0) ¥eq (car(arb(n)) = [0,0]))) Use_def(Ra_0) ==> Ra_0 = Fr_to_Ra([[0,0],[1,0]]) T368 ==> Stat1: ([0,0] in Si) & ([1,0] in Si) & ([1,0] /= [0,0]) ([0,0],[1,0])-->T432(*) ==> [[0,0],[1,0]] in Fr ELEM ==> (cdr([[0,0],[1,0]]) = [1,0]) & (car([[0,0],[1,0]]) = [0,0]) n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) (arb(n))-->T431 ==> (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) Suppose ==> car(arb(n)) = [0,0] Suppose ==> not Same_frac(arb(n),[[0,0],[1,0]]) Use_def(Same_frac) ==> cdr(arb(n)) ¥S_TIMES car([[0,0],[1,0]]) /= car(arb(n)) ¥S_TIMES cdr([[0,0],[1,0]]) EQUAL ==> cdr(arb(n)) ¥S_TIMES [0,0] /= [0,0] ¥S_TIMES [1,0] ALGEBRA ==> [0,0] ¥S_TIMES cdr(arb(n)) /= [0,0] ¥S_TIMES [1,0] (cdr(arb(n)))-->T401 ==> [0,0] ¥S_TIMES cdr(arb(n)) = [0,0] ([1,0])-->T401 ==> false; Discharge ==> Same_frac(arb(n),[[0,0],[1,0]]) (arb(n),[[0,0],[1,0]])-->T422 ==> Fr_to_Ra(arb(n)) = Fr_to_Ra([[0,0],[1,0]]) EQUAL ==> false; Discharge ==> (car(arb(n)) /= [0,0]) & (n = Ra_0) ELEM ==> Fr_to_Ra(arb(n)) = Fr_to_Ra([[0,0],[1,0]]) (arb(n),[[0,0],[1,0]])-->T422 ==> Same_frac(arb(n),[[0,0],[1,0]]) Use_def(Same_frac) ==> car(arb(n)) ¥S_TIMES cdr([[0,0],[1,0]]) = cdr(arb(n)) ¥S_TIMES car([[0,0],[1,0]]) EQUAL ==> car(arb(n)) ¥S_TIMES [1,0] = cdr(arb(n)) ¥S_TIMES [0,0] ALGEBRA ==> car(arb(n)) ¥S_TIMES [1,0] = [0,0] ¥S_TIMES cdr(arb(n)) (cdr(arb(n)))-->T401 ==> car(arb(n)) ¥S_TIMES [1,0] = [0,0] ALGEBRA ==> [1,0] ¥S_TIMES car(arb(n)) = [0,0] (car(arb(n)))-->T401 ==> false; Discharge ==> QED -- -- Our next theorem states that the product and sum of any two non-negative rational numbers -- is non-negative. -- Theorem 469: [The sum and product of two non-negative rationals is non-negative] ((X in Ra) & (Y in Ra) & Ra_is_nonneg(X) & Ra_is_nonneg(Y)) ¥imp (Ra_is_nonneg(X ¥Ra_PLUS Y) & Ra_is_nonneg(X ¥Ra_TIMES Y)). Proof: Suppose_not(n,m) ==> (n in Ra) & (m in Ra) & Ra_is_nonneg(n) & Ra_is_nonneg(m) & (not(Ra_is_nonneg(n ¥Ra_PLUS m) & Ra_is_nonneg(n ¥Ra_TIMES m))) n-->T423 ==> (arb(n) in Fr) & (Fr_to_Ra(arb(n)) = n) m-->T423 ==> (arb(m) in Fr) & (Fr_to_Ra(arb(m)) = m) (arb(n))-->T431 ==> (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) (arb(m))-->T431 ==> (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) Loc_def ==> an = car(arb(n)) Loc_def ==> dn = cdr(arb(n)) Loc_def ==> am = car(arb(m)) Loc_def ==> dm = cdr(arb(m)) EQUAL ==> Stat1: (arb(n) = [an,dn]) & (an in Si) & (dn in Si) & (dn /= [0,0]) EQUAL ==> Stat2: (arb(m) = [am,dm]) & (am in Si) & (dm in Si) & (dm /= [0,0]) (dm,dn)-->T407(Stat1,Stat2*) ==> Stat3: dn ¥S_TIMES dm /= [0,0] Use_def(Ra_is_nonneg) ==> is_nonneg(car(arb(n)) ¥S_TIMES cdr(arb(n))) & is_nonneg(car(arb(m)) ¥S_TIMES cdr(arb(m))) EQUAL ==> Stat4: is_nonneg(an ¥S_TIMES dn) & is_nonneg(am ¥S_TIMES dm) ALGEBRA ==> Stat5: (an ¥S_TIMES am in Si) & (dn ¥S_TIMES dm in Si) ALGEBRA ==> Stat6: (an ¥S_TIMES dn in Si) & (am ¥S_TIMES dm in Si) Suppose ==> not Ra_is_nonneg(n ¥Ra_TIMES m) Use_def(¥Ra_TIMES) ==> not Ra_is_nonneg(Fr_to_Ra([car(arb(n)) ¥S_TIMES car(arb(m)),cdr(arb(n)) ¥S_TIMES cdr(arb(m))])) EQUAL ==> not Ra_is_nonneg(Fr_to_Ra([an ¥S_TIMES am, dn ¥S_TIMES dm])) (an ¥S_TIMES am, dn ¥S_TIMES dm)-->T459 ==> not is_nonneg((an ¥S_TIMES am) ¥S_TIMES (dn ¥S_TIMES dm)) ALGEBRA ==> not is_nonneg((an ¥S_TIMES dn) ¥S_TIMES (am ¥S_TIMES dm)) (an ¥S_TIMES dn,am ¥S_TIMES dm)-->T425 ==> false; Discharge ==> not Ra_is_nonneg(n ¥Ra_PLUS m) Use_def(¥Ra_PLUS) ==> not Ra_is_nonneg(Fr_to_Ra([(car(arb(n)) ¥S_TIMES cdr(arb(m))) ¥S_PLUS (car(arb(m)) ¥S_TIMES cdr(arb(n))), cdr(arb(n)) ¥S_TIMES cdr(arb(m))])) EQUAL ==> Stat7: not Ra_is_nonneg(Fr_to_Ra([(an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn), dn ¥S_TIMES dm])) ALGEBRA ==> Stat8: (an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn) in Si ((an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn),dn ¥S_TIMES dm)-->T459(Stat7,Stat8,Stat5,Stat3) ==> not is_nonneg(((an ¥S_TIMES dm) ¥S_PLUS (am ¥S_TIMES dn)) ¥S_TIMES (dn ¥S_TIMES dm)) ALGEBRA ==> not is_nonneg(((an ¥S_TIMES dn) ¥S_TIMES (dm ¥S_TIMES dm)) ¥S_PLUS ((am ¥S_TIMES dm) ¥S_TIMES (dn ¥S_TIMES dn))) dn-->T429 ==> Stat9: is_nonneg(dn ¥S_TIMES dn) dm-->T429 ==> Stat10: is_nonneg(dm ¥S_TIMES dm) ALGEBRA ==> Stat11: (dm ¥S_TIMES dm in Si) & (dn ¥S_TIMES dn in Si) (an ¥S_TIMES dn,dm ¥S_TIMES dm)-->T425(Stat5,Stat4,Stat9,Stat10,Stat6,Stat11) ==> Stat12: is_nonneg((an ¥S_TIMES dn) ¥S_TIMES (dm ¥S_TIMES dm)) (am ¥S_TIMES dm,dn ¥S_TIMES dn)-->T425(Stat5,Stat4,Stat9,Stat10,Stat6,Stat11) ==> is_nonneg((am ¥S_TIMES dm) ¥S_TIMES (dn ¥S_TIMES dn)) ALGEBRA ==> ((an ¥S_TIMES dn) ¥S_TIMES (dm ¥S_TIMES dm) in SI) & ((am ¥S_TIMES dm) ¥S_TIMES (dn ¥S_TIMES dn) in Si) ((an ¥S_TIMES dn) ¥S_TIMES (dm ¥S_TIMES dm),((am ¥S_TIMES dm) ¥S_TIMES (dn ¥S_TIMES dn)))-->T425(Stat12) ==> is_nonneg(((an ¥S_TIMES dn) ¥S_TIMES (dm ¥S_TIMES dm)) ¥S_PLUS ((am ¥S_TIMES dm) ¥S_TIMES (dn ¥S_TIMES dn))) Discharge ==> QED -- -- We add various additional elementary properties of the ordering of rationals. -- -- -- The following compound of earlier theorems is derived -- uniquely as a trigger for the THEORY Ordered_add. -- Theorem 470: (Ra_0 in Ra) & (FORALL x in Ra | ((x ¥Ra_PLUS Ra_0) = x) & ((x ¥Ra_PLUS Ra_Rev(x)) = Ra_0) & (Ra_Rev(x) in Ra)) & (FORALL x in Ra, y in Ra | ((x ¥Ra_PLUS y) in Ra) & ((x ¥Ra_PLUS y) = (y ¥Ra_PLUS x)) & ((x ¥Ra_PLUS Ra_Rev(y)) = (x ¥Ra_MINUS y))) & (FORALL x in Ra, y in Ra, z in Ra | ((x ¥Ra_PLUS y) ¥Ra_PLUS z) = (x ¥Ra_PLUS (y ¥Ra_PLUS z))) & (FORALL x in Ra, y in Ra | (Ra_is_nonneg(x) & Ra_is_nonneg(y)) ¥imp Ra_is_nonneg(x ¥Ra_PLUS y)) & (FORALL x in Ra | (Ra_is_nonneg(x) or Ra_is_nonneg(Ra_Rev(x))) & ((Ra_is_nonneg(x) & Ra_is_nonneg(Ra_Rev(x))) ¥imp (x = Ra_0))). Proof: Suppose_not ==> AUTO ALGEBRA ==> Ra_0 in Ra Suppose ==> Stat1: not(FORALL x in Ra | ((x ¥Ra_PLUS Ra_0) = x) & ((x ¥Ra_PLUS Ra_Rev(x)) = Ra_0) & (Ra_Rev(x) in Ra)) x1-->Stat1(Stat1*) ==> (x1 in Ra) & (not(((x1 ¥Ra_PLUS Ra_0) = x1) & ((x1 ¥Ra_PLUS Ra_Rev(x1)) = Ra_0) & (Ra_Rev(x1) in Ra))) ALGEBRA(Stat1) ==> ((x1 ¥Ra_PLUS Ra_0) = x1) & ((x1 ¥Ra_PLUS Ra_Rev(x1)) = Ra_0) & (Ra_Rev(x1) in Ra) (Stat1)Discharge ==> AUTO Suppose ==> Stat2: not(FORALL x in Ra, y in Ra | ((x ¥Ra_PLUS y) in Ra) & ((x ¥Ra_PLUS y) = (y ¥Ra_PLUS x)) & ((x ¥Ra_PLUS Ra_Rev(y)) = (x ¥Ra_MINUS y))) (x2,y2)-->Stat2(Stat2*) ==> (x2 in Ra) & (y2 in Ra) & (not(((x2 ¥Ra_PLUS y2) in Ra) & ((x2 ¥Ra_PLUS y2) = (y2 ¥Ra_PLUS x2)) & ((x2 ¥Ra_PLUS Ra_Rev(y2)) = (x2 ¥Ra_MINUS y2)))) ALGEBRA(Stat2) ==> ((x2 ¥Ra_PLUS y2) in Ra) & ((x2 ¥Ra_PLUS y2) = (y2 ¥Ra_PLUS x2)) & ((x2 ¥Ra_PLUS Ra_Rev(y2)) = (x2 ¥Ra_MINUS y2)) (Stat2)Discharge ==> AUTO Suppose ==> Stat3: not(FORALL x in Ra, y in Ra, z in Ra | ((x ¥Ra_PLUS y) ¥Ra_PLUS z) = (x ¥Ra_PLUS (y ¥Ra_PLUS z))) (x3,y3,z3)-->Stat3(Stat3*) ==> (x3 in Ra) & (y3 in Ra) & (z3 in Ra) & (((x3 ¥Ra_PLUS y3) ¥Ra_PLUS z3) /= (x3 ¥Ra_PLUS (y3 ¥Ra_PLUS z3))) ALGEBRA(Stat3) ==> false; (Stat3)Discharge ==> AUTO Suppose ==> Stat4: not(FORALL x in Ra, y in Ra | (Ra_is_nonneg(x) & Ra_is_nonneg(y)) ¥imp Ra_is_nonneg(x ¥Ra_PLUS y)) (x4,y4)-->Stat4(Stat4*) ==> (x4 in Ra) & (y4 in Ra) & (not((Ra_is_nonneg(x4) & Ra_is_nonneg(y4)) ¥imp Ra_is_nonneg(x4 ¥Ra_PLUS y4))) (x4,y4)-->T469(Stat4*) ==> false; Discharge ==> Stat5: not(FORALL x in Ra | (Ra_is_nonneg(x) or Ra_is_nonneg(Ra_Rev(x))) & ((Ra_is_nonneg(x) & Ra_is_nonneg(Ra_Rev(x))) ¥imp (x = Ra_0))) x5-->Stat5(Stat5*) ==> (x5 in Ra) & (not((Ra_is_nonneg(x5) or Ra_is_nonneg(Ra_Rev(x5))) & ((Ra_is_nonneg(x5) & Ra_is_nonneg(Ra_Rev(x5))) ¥imp (x5 = Ra_0)))) x5-->T466(Stat5*) ==> false; Discharge ==> QED -- -- -- APPLY(GE_thryvar:Ra_GE,LE_thryvar:Ra_LE,GT_thryvar:Ra_GT,LT_thryvar:Ra_LT) Ordered_add(g->Ra,e->Ra_0,pluz(i,j)->(i ¥Ra_PLUS j),minz(i,j)->(i ¥Ra_MINUS j),rvz(i)->Ra_Rev(i),nneg(j)->Ra_is_nonneg(j)) ==> Theorem 471: [The ordering of two rationals is defined by the sign of their differences, 0] (FORALL x, y | (Ra_GE(x,y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y))) & (Ra_LE(x,y) ¥eq Ra_GE(y,x)) & (Ra_GT(x,y) ¥eq (Ra_GE(x,y) & (x /= y))) & (Ra_LT(x,y) ¥eq Ra_GT(y,x))) & (FORALL x, y | (Ra_LE(x,y) ¥eq Ra_is_nonneg((y ¥Ra_PLUS Ra_Rev(x)))) & (((x in Ra) & (y in Ra)) ¥imp (Ra_GT(x,y) ¥eq (Ra_is_nonneg((x ¥Ra_PLUS Ra_Rev(y))) & (x /= y)))) & (((x in Ra) & (y in Ra)) ¥imp (Ra_GT(x,y) ¥eq (Ra_is_nonneg((x ¥Ra_MINUS y)) & (x /= y))))) & (FORALL x, y | ((x in Ra) & (y in Ra) & ((x = y) or (not Ra_GE(x,y)))) ¥imp Ra_GE(y,x)) -- Def 000o: Def(X ¥Ra_GE Y) := Ra_GE(X,Y) Def 000p: Def(X ¥Ra_LE Y) := Ra_LE(X,Y) Def 000q: Def(X ¥Ra_GT Y) := Ra_GT(X,Y) Def 000r: Def(X ¥Ra_LT Y) := Ra_LT(X,Y) Theorem 472: [The ordering of two rationals is defined by the sign of their differences] (FORALL x,y | ((x ¥Ra_GE y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)))) & (FORALL x,y | (x ¥Ra_LE y) ¥eq (y ¥Ra_GE x)) & (FORALL x,y | ((x ¥Ra_GT y) ¥eq ((x ¥Ra_GE y) & (x /= y)))) & (FORALL x,y | ((x ¥Ra_LT y) ¥eq (y ¥Ra_GT x))) & (FORALL x,y | ((x ¥Ra_LE y) ¥eq Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(x)))) & (FORALL x,y | (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) & (x /= y))))) & (FORALL x,y | (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_MINUS y) & (x /= y))))) & (FORALL x,y | (((x in Ra) & (y in Ra) & ((x = y) or (not(x ¥Ra_GE y)))) ¥imp (y ¥Ra_GE x))). Proof: Suppose_not ==> AUTO T471 ==> Stat1: (FORALL x, y | (Ra_GE(x,y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y))) & (Ra_LE(x,y) ¥eq Ra_GE(y,x)) & (Ra_GT(x,y) ¥eq (Ra_GE(x,y) & (x /= y))) & (Ra_LT(x,y) ¥eq Ra_GT(y,x))) & Stat2: (FORALL x, y | ((x in Ra) & (y in Ra) & ((x = y) or (not Ra_GE(x,y)))) ¥imp Ra_GE(y,x)) & Stat3: (FORALL x, y | (Ra_LE(x,y) ¥eq Ra_is_nonneg((y ¥Ra_PLUS Ra_Rev(x)))) & (((x in Ra) & (y in Ra)) ¥imp (Ra_GT(x,y) ¥eq (Ra_is_nonneg((x ¥Ra_PLUS Ra_Rev(y))) & (x /= y)))) & (((x in Ra) & (y in Ra)) ¥imp (Ra_GT(x,y) ¥eq (Ra_is_nonneg((x ¥Ra_MINUS y)) & (x /= y))))) Suppose ==> Stat4: not(FORALL x,y | ((x ¥Ra_GE y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)))) (x1,y1)-->Stat4(Stat4*) ==> (x1 ¥Ra_GE y1) ¥neq Ra_is_nonneg(x1 ¥Ra_PLUS Ra_Rev(y1)) Use_def(¥Ra_GE) ==> Ra_GE(x1,y1) ¥neq Ra_is_nonneg(x1 ¥Ra_PLUS Ra_Rev(y1)) (x1,y1)-->Stat1(Stat4*) ==> false; Discharge ==> AUTO Suppose ==> Stat5: not(FORALL x,y | (x ¥Ra_LE y) ¥eq (y ¥Ra_GE x)) (x2,y2)-->Stat5(Stat5*) ==> AUTO Use_def(¥Ra_LE) ==> (x2 ¥Ra_LE y2) ¥eq Ra_LE(x2,y2) Use_def(¥Ra_GE) ==> (y2 ¥Ra_GE x2) ¥eq Ra_GE(y2,x2) (x2,y2)-->Stat1(Stat5*) ==> false; Discharge ==> AUTO Suppose ==> Stat6: not(FORALL x,y | ((x ¥Ra_GT y) ¥eq ((x ¥Ra_GE y) & (x /= y)))) (x3,y3)-->Stat6(Stat6*) ==> AUTO Use_def(¥Ra_GT) ==> (x3 ¥Ra_GT y3) ¥eq RA_GT(x3,y3) Use_def(¥Ra_GE) ==> (x3 ¥Ra_GE y3) ¥eq Ra_GE(x3,y3) (x3,y3)-->Stat1(Stat6*) ==> false; Discharge ==> AUTO Suppose ==> Stat7: not(FORALL x,y | ((x ¥Ra_LT y) ¥eq (y ¥Ra_GT x))) (x4,y4)-->Stat7(Stat7*) ==> AUTO (x4,y4)-->Stat1(Stat1,Stat1*) ==> Ra_LT(x4,y4) ¥eq Ra_GT(y4,x4) Use_def(¥Ra_LT) ==> (x4 ¥Ra_LT y4) ¥eq Ra_LT(x4,y4) Use_def(¥Ra_GT) ==> (y4 ¥Ra_GT x4) ¥eq RA_GT(y4,x4) (Stat7*)Discharge ==> AUTO Suppose ==> Stat8: not(FORALL x,y | (((x in Ra) & (y in Ra) & ((x = y) or (not(x ¥Ra_GE y)))) ¥imp (y ¥Ra_GE x))) (x5,y5)-->Stat8(Stat8*) ==> AUTO (x5,y5)-->Stat2(Stat1,Stat1*) ==> ((x5 in Ra) & (y5 in Ra) & ((x5 = y5) or (not Ra_GE(x5,y5)))) ¥imp Ra_GE(y5,x5) Use_def(¥Ra_GE) ==> ((x5 ¥Ra_GE y5) ¥eq Ra_GE(x5,y5)) & ((y5 ¥Ra_GE x5) ¥eq Ra_GE(y5,x5)) (Stat8*)Discharge ==> AUTO Suppose ==> Stat9: not(FORALL x,y | ((x ¥Ra_LE y) ¥eq Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(x)))) (x6,y6)-->Stat9(Stat9*) ==> AUTO (x6,y6)-->Stat3(Stat1,Stat1*) ==> Ra_LE(x6,y6) ¥eq Ra_is_nonneg((y6 ¥Ra_PLUS Ra_Rev(x6))) Use_def(¥Ra_LE) ==> (x6 ¥Ra_LE y6) ¥eq Ra_LE(x6,y6) (Stat9*)Discharge ==> AUTO Suppose ==> Stat10: not(FORALL x,y | (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) & (x /= y))))) (x7,y7)-->Stat10(Stat10*) ==> AUTO (x7,y7)-->Stat3(Stat1,Stat1*) ==> (((x7 in Ra) & (y7 in Ra)) ¥imp (Ra_GT(x7,y7) ¥eq (Ra_is_nonneg((x7 ¥Ra_PLUS Ra_Rev(y7))) & (x7 /= y7)))) Use_def(¥Ra_GT) ==> (x7 ¥Ra_GT y7) ¥eq Ra_GT(x7,y7) (Stat10*)Discharge ==> Stat11: not(FORALL x,y | (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_MINUS y) & (x /= y))))) (x8,y8)-->Stat11(Stat11*) ==> AUTO (x8,y8)-->Stat3(Stat1,Stat1*) ==> (((x8 in Ra) & (y8 in Ra)) ¥imp (Ra_GT(x8,y8) ¥eq (Ra_is_nonneg((x8 ¥Ra_MINUS y8)) & (x8 /= y8)))) Use_def(¥Ra_GT) ==> (x8 ¥Ra_GT y8) ¥eq Ra_GT(x8,y8) (Stat11*)Discharge ==> QED -- Theorem 473: [Various basic properties of rational comparison] ((X ¥Ra_GE Y) ¥eq Ra_is_nonneg(X ¥Ra_PLUS Ra_Rev(Y))) & ((X ¥Ra_LE Y) ¥eq (Y ¥Ra_GE X)) & ((X ¥Ra_GT Y) ¥eq ((X ¥Ra_GE Y) & (X /= Y))) & ((X ¥Ra_LT Y) ¥eq (Y ¥Ra_GT X)) & ((X ¥Ra_LE Y) ¥eq Ra_is_nonneg(Y ¥Ra_PLUS Ra_Rev(X))) & (((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GT Y) ¥eq (Ra_is_nonneg(X ¥Ra_PLUS Ra_Rev(Y)) & (X /= Y)))) & (((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GT Y) ¥eq (Ra_is_nonneg(X ¥Ra_MINUS Y) & (X /= Y)))) & (((X in Ra) & (Y in Ra) & ((X = Y) or (not(X ¥Ra_GE Y)))) ¥imp (Y ¥Ra_GE X)). Proof: Suppose_not(x,y) ==> not(((x ¥Ra_GE y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y))) & ((x ¥Ra_LE y) ¥eq (y ¥Ra_GE x)) & ((x ¥Ra_GT y) ¥eq ((x ¥Ra_GE y) & (x /= y))) & ((x ¥Ra_LT y) ¥eq (y ¥Ra_GT x)) & ((x ¥Ra_LE y) ¥eq Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(x))) & (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) & (x /= y)))) & (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_MINUS y) & (x /= y)))) & (((x in Ra) & (y in Ra) & ((x = y) or (not(x ¥Ra_GE y)))) ¥imp (y ¥Ra_GE x))) Suppose ==> not(((x ¥Ra_GE y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)))) T472 ==> Stat1: (FORALL x,y | ((x ¥Ra_GE y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)))) (x,y)-->Stat1 ==> false; Discharge ==> ((x ¥Ra_GE y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y))) Suppose ==> not(((x ¥Ra_LE y) ¥eq (y ¥Ra_GE x))) T472 ==> Stat2: (FORALL x,y | ((x ¥Ra_LE y) ¥eq (y ¥Ra_GE x))) (x,y)-->Stat2 ==> false; Discharge ==> ((x ¥Ra_LE y) ¥eq (y ¥Ra_GE x)) Suppose ==> not((x ¥Ra_GT y) ¥eq ((x ¥Ra_GE y) & (x /= y))) T472 ==> Stat3: (FORALL x,y | ((x ¥Ra_GT y) ¥eq ((x ¥Ra_GE y) & (x /= y)))) (x,y)-->Stat3 ==> false; Discharge ==> ((x ¥Ra_GT y) ¥eq ((x ¥Ra_GE y) & (x /= y))) Suppose ==> not((x ¥Ra_LT y) ¥eq (y ¥Ra_GT x)) T472 ==> Stat4: (FORALL x,y | ((x ¥Ra_LT y) ¥eq (y ¥Ra_GT x))) (x,y)-->Stat4 ==> false; Discharge ==> ((x ¥Ra_LT y) ¥eq (y ¥Ra_GT x)) Suppose ==> not((x ¥Ra_LE y) ¥eq Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(x))) T472 ==> Stat5: (FORALL x,y | ((x ¥Ra_LE y) ¥eq Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(x)))) (x,y)-->Stat5 ==> false; Discharge ==> ((x ¥Ra_LE y) ¥eq Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(x))) Suppose ==> not(((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) & (x /= y)))) T472 ==> Stat6: (FORALL x,y | (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) & (x /= y))))) (x,y)-->Stat6 ==> false; Discharge ==> (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) & (x /= y)))) Suppose ==> not(((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_MINUS y) & (x /= y)))) T472 ==> Stat7: (FORALL x,y | (((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_GT y) ¥eq (Ra_is_nonneg(x ¥Ra_MINUS y) & (x /= y))))) (x,y)-->Stat7 ==> false; Discharge ==> not(((X in Ra) & (Y in Ra) & ((X = Y) or (not(X ¥Ra_GE Y)))) ¥imp (Y ¥Ra_GE X)) T472 ==> Stat8: (FORALL x,y | (((x in Ra) & (y in Ra) & ((x = y) or (not(x ¥Ra_GE y)))) ¥imp (y ¥Ra_GE x))) (x,y)-->Stat8 ==> false; Discharge ==> QED -- -- The following easy lemmas add more elementary properties of inequality to the preceding. -- Theorem 474: [Greater_than_equal is greater-than and equal] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GE Y) ¥eq ((X ¥Ra_GT Y) or (X = Y))). Proof: Suppose_not(x,y) ==> AUTO (y,x)-->T473 ==> (x = y) ¥imp (x ¥Ra_GE y) (x,y)-->T473 ==> (x ¥Ra_GT y or x = y) ¥eq (x ¥Ra_GE y or x = y) Discharge ==> QED -- Theorem 475: [Less_than_equal is less-than and equal] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_LE Y) ¥eq ((X ¥Ra_LT Y) or (X = Y))). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T473 ==> ((y ¥Ra_GE x) ¥eq (x ¥Ra_LE y)) & ((y ¥Ra_GT x) ¥eq (x ¥Ra_LT y)) (y,x)-->T474 ==> false; Discharge ==> QED -- Theorem 476: [The rationals are a linearly ordered set] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GT Y) or (X = Y) or (Y ¥Ra_GT X)). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T473 ==> x ¥Ra_GE y or y ¥Ra_GE x (y,x)-->T474 ==> (y ¥Ra_GE x) ¥eq (y ¥Ra_GT x or X = Y) (x,y)-->T474 ==> false; Discharge ==> QED -- Theorem 477: [The rationals are a linearly ordered set, 2] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_LT Y) or (X = Y) or (Y ¥Ra_LT X)). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T473 ==> (y ¥Ra_GT x) ¥eq (x ¥Ra_LT y) (y,x)-->T473 ==> (x ¥Ra_GT y) ¥eq (y ¥Ra_LT x) (y,x)-->T476 ==> false; Discharge ==> QED -- Theorem 478: [The rationals are a linearly ordered set,3] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_GT Y) or (Y ¥Ra_GE X)). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T476 ==> AUTO (y,x)-->T474 ==> false; Discharge ==> QED -- Theorem 479: [The rationals are a linearly ordered set,4] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_LT Y) or (Y ¥Ra_LE X)). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T477 ==> AUTO (y,x)-->T475 ==> false; Discharge ==> QED -- Theorem 480: [Transitivity of ordering] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_GE Y) & (Y ¥Ra_GE Z)) ¥imp (X ¥Ra_GE Z)). Proof: Suppose_not(x,y,z) ==> (x in Ra) & (y in Ra) & (z in Ra) & (x ¥Ra_GE y) & (y ¥Ra_GE z) & (not(x ¥Ra_GE z)) (x,y)-->T473 ==> (x ¥Ra_GE y) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) (y,z)-->T473 ==> (y ¥Ra_GE z) ¥eq Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(z)) (x,z)-->T473 ==> (x ¥Ra_GE z) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(z)) ALGEBRA ==> ((x ¥Ra_PLUS Ra_Rev(y)) in Ra) & ((y ¥Ra_PLUS Ra_Rev(z)) in Ra) & ((x ¥Ra_PLUS Ra_Rev(z)) in Ra) ALGEBRA ==> (x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_PLUS (y ¥Ra_PLUS Ra_Rev(z)) = (x ¥Ra_PLUS Ra_Rev(z)) ¥Ra_PLUS (y ¥Ra_PLUS Ra_Rev(y)) y-->T452 ==> y ¥Ra_PLUS Ra_Rev(y) = Ra_0 EQUAL ==> (x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_PLUS (y ¥Ra_PLUS Ra_Rev(z)) = (x ¥Ra_PLUS Ra_Rev(z)) ¥Ra_PLUS Ra_0 ALGEBRA ==> (x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_PLUS (y ¥Ra_PLUS Ra_Rev(z)) = (x ¥Ra_PLUS Ra_Rev(z)) (x ¥Ra_PLUS Ra_Rev(y),y ¥Ra_PLUS Ra_Rev(z))-->T469 ==> Ra_is_nonneg((x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_PLUS (y ¥Ra_PLUS Ra_Rev(z))) EQUAL ==> Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(z)) Discharge ==> QED -- -- Our next lemma simply states that the zero rational is its own negative -- and that the unit rational is positive. -- Theorem 481: [Properties of the rational zero and unit] (Ra_Rev(Ra_0) = Ra_0) & (Ra_1 /= Ra_0) & (Ra_1 ¥Ra_GT Ra_0). Proof: Suppose_not ==> Stat1: (Ra_Rev(Ra_0) /= Ra_0) or (Ra_1 = Ra_0) or (not (Ra_1 ¥Ra_GT Ra_0)) -- -- The first part of this assertion has the following elementary algebraic proof. -- T451 ==> (Ra_0 in Ra) & (Ra_1 in Ra) Ra_0-->T452 ==> (Ra_0 ¥Ra_PLUS Ra_Rev(Ra_0) = Ra_0) & (Ra_Rev(Ra_0) in Ra) (Ra_Rev(Ra_0))-->T451 ==> Ra_Rev(Ra_0) ¥Ra_PLUS Ra_0 = Ra_Rev(Ra_0) (Ra_0,Ra_Rev(Ra_0))-->T445 ==> Stat2: Ra_0 = Ra_Rev(Ra_0) -- -- Similarly, to prove that $Ra_1 /= Ra_0$, we have only to use the definitions of the -- quantities and operators involved, and do a bit of algebra. -- Suppose ==> Ra_1 = Ra_0 Use_def(Ra_1) ==> Fr_to_Ra([[1,0],[1,0]]) = Ra_0 Use_def(Ra_0) ==> Fr_to_Ra([[1,0],[1,0]]) = Fr_to_Ra([[0,0],[1,0]]) T368 ==> Stat3: ([0,0] in Si) & ([1,0] in Si) & ([1,0] /= [0,0]) (Stat3)ELEM ==> (car([[1,0],[1,0]]) in Si) & (cdr([[1,0],[1,0]]) in Si) & (cdr([[1,0],[1,0]]) /= [0,0]) ([1,0],[1,0])-->T432(*) ==> [[1,0],[1,0]] in Fr (Stat3)ELEM ==> (car([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) in Si) & (cdr([[0,0],[1,0]]) /= [0,0]) ([0,0],[1,0])-->T432(*) ==> [[0,0],[1,0]] in Fr ([[1,0],[1,0]],[[0,0],[1,0]])-->T422 ==> Same_frac([[1,0],[1,0]],[[0,0],[1,0]]) Use_def(Same_frac) ==> car([[1,0],[1,0]]) ¥S_TIMES cdr([[0,0],[1,0]]) = cdr([[1,0],[1,0]]) ¥S_TIMES car([[0,0],[1,0]]) TELEM ==> (car([[1,0],[1,0]]) = [1,0]) & (cdr([[1,0],[1,0]]) = [1,0]) TELEM ==> (car([[0,0],[1,0]]) = [0,0]) & (cdr([[0,0],[1,0]]) = [1,0]) EQUAL ==> [1,0] ¥S_TIMES [1,0] = [1,0] ¥S_TIMES [0,0] ([1,0])-->T402 ==> [1,0] = [1,0] ¥S_TIMES [0,0] ([0,0])-->T401 ==> [1,0] = [0,0] T368 ==> false; Discharge ==> Stat4: Ra_1 /= Ra_0 -- -- -- (Ra_1,Ra_0)-->T473 ==> (Ra_1 ¥Ra_GT Ra_0) ¥eq (Ra_is_nonneg(Ra_1 ¥Ra_PLUS Ra_Rev(Ra_0)) & (Ra_1 /= Ra_0)) EQUAL ==> (Ra_1 ¥Ra_GT Ra_0) ¥eq (Ra_is_nonneg(Ra_1 ¥Ra_PLUS Ra_0) & (Ra_1 /= Ra_0)) Ra_1-->T451 ==> Ra_1 ¥Ra_PLUS Ra_0 = Ra_1 EQUAL ==> (Ra_1 ¥Ra_GT Ra_0) ¥eq (Ra_is_nonneg(Ra_1) & (Ra_1 /= Ra_0)) ALGEBRA ==> Stat5: ((Ra_1 ¥Ra_GT Ra_0) ¥eq (Ra_is_nonneg(Ra_1) & (Ra_1 /= Ra_0))) T465 ==> Stat6: Ra_is_nonneg(Ra_1) (Stat2,Stat4,Stat5,Stat6,Stat1*)Discharge ==> QED -- -- Alternate characterization of non-negativity for rationals. -- Theorem 482: [Alternate characterization of non-negativity for rationals] (X in Ra) ¥imp ((Ra_is_nonneg(X) ¥eq (X ¥Ra_GE Ra_0)) & ((X ¥Ra_GT Ra_0) ¥imp Ra_is_nonneg(X))). Proof: Suppose_not(x) ==> AUTO Suppose ==> Stat1: Ra_is_nonneg(x) ¥eq (not(x ¥Ra_GE Ra_0)) (x,Ra_0)-->T473(Stat1*) ==> Ra_is_nonneg(x) ¥eq (not Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(Ra_0))) ()-->T481 ==> AUTO x-->T451(*) ==> x = (x ¥Ra_PLUS Ra_0) EQUAL(Stat1) ==> Stat2: Ra_is_nonneg(x) ¥eq (not Ra_is_nonneg(x)) (Stat2*)ELEM ==> false; Discharge ==> Stat3: (Ra_is_nonneg(x) ¥eq (x ¥Ra_GE Ra_0)) & (x ¥Ra_GT Ra_0) & (not Ra_is_nonneg(x)) (x,Ra_0)-->T473(Stat3*) ==> false; Discharge ==> QED -- -- Our next two theorems give the distributive law for subtraction, first in its simplest form, and then generally. -- We begin with two preliminary lemmas, which give the corresponding rule for fractions. -- Theorem 483: [Reversing the numerators of two equivalent rational fractions leaves them equivalent] ((X in Si) & (Y in Si) & (XP in Si) & (YP in Si) & Same_frac([X,Y],[XP,YP])) ¥imp Same_frac([S_Rev(X),Y],[S_Rev(XP),YP]). Proof: Suppose_not(m,n,mp,np) ==> (m in Si) & (n in Si) & (mp in Si) & (np in Si) & Same_frac([m,n],[mp,np]) & (not Same_frac([S_Rev(m),n],[S_Rev(mp),np])) Use_def(Same_frac) ==> (car([m,n]) ¥S_TIMES cdr([mp,np]) = cdr([m,n]) ¥S_TIMES car([mp,np])) & (not(car([S_Rev(m),n]) ¥S_TIMES cdr([S_Rev(mp),np]) = cdr([S_Rev(m),n]) ¥S_TIMES car([S_Rev(mp),np]))) ELEM ==> (car([m,n]) = m) & (cdr([m,n]) = n) & (car([mp,np]) = mp) & (cdr([mp,np]) = np) ELEM ==> (car([S_Rev(m),n]) = S_Rev(m)) & (cdr([S_Rev(m),n]) = n) & (car([S_Rev(mp),np]) = S_Rev(mp)) & (cdr([S_Rev(mp),np]) = np) EQUAL ==> ((m ¥S_TIMES np) = (n ¥S_TIMES mp)) & (not((S_Rev(m) ¥S_TIMES np) = (n ¥S_TIMES S_Rev(mp)))) m-->T391 ==> S_Rev(m) in Si ALGEBRA ==> (S_Rev(m) ¥S_TIMES np) = (np ¥S_TIMES S_Rev(m)) (np,m)-->T390 ==> (np ¥S_TIMES S_Rev(m)) = S_Rev(np ¥S_TIMES m) (n,mp)-->T390 ==> (n ¥S_TIMES S_Rev(mp)) = S_Rev(n ¥S_TIMES mp) ALGEBRA ==> false; Discharge ==> QED Theorem 484: [Alternate form of Theorem 483] ((X in Si) & (Y in Si) & (Y /= [0,0])) ¥imp (Ra_Rev(Fr_to_Ra([X,Y])) = Fr_to_Ra([S_Rev(X),Y])). Proof: Suppose_not(m,n) ==> ((m in Si) & (n in Si) & (n /= [0,0])) & (Ra_Rev(Fr_to_Ra([m,n])) /= Fr_to_Ra([S_Rev(m),n])) Use_def(Ra_Rev) ==> Ra_Rev(Fr_to_Ra([m,n])) = Fr_to_Ra([S_Rev(car(arb(Fr_to_Ra([m,n])))),cdr(arb(Fr_to_Ra([m,n])))]) (m,n)-->T432(*) ==> [m,n] in Fr m-->T391 ==> S_Rev(m) in Si (S_Rev(m),n)-->T432(*) ==> [S_Rev(m),n] in Fr ([m,n])-->T421 ==> (Fr_to_Ra([m,n]) in Ra) & Same_frac([m,n],arb(Fr_to_Ra([m,n]))) (Fr_to_Ra([m,n]))-->T423 ==> arb(Fr_to_Ra([m,n])) in Fr (arb(Fr_to_Ra([m,n])))-->T431 ==> (arb(Fr_to_Ra([m,n])) = [car(arb(Fr_to_Ra([m,n]))),cdr(arb(Fr_to_Ra([m,n])))]) & (car(arb(Fr_to_Ra([m,n]))) in Si) & (cdr(arb(Fr_to_Ra([m,n]))) in Si) & (cdr(arb(Fr_to_Ra([m,n]))) /= [0,0]) (car(arb(Fr_to_Ra([m,n]))))-->T391 ==> S_Rev(car(arb(Fr_to_Ra([m,n])))) in Si (S_Rev(car(arb(Fr_to_Ra([m,n])))),cdr(arb(Fr_to_Ra([m,n]))))-->T432(*) ==> [S_Rev(car(arb(Fr_to_Ra([m,n])))),cdr(arb(Fr_to_Ra([m,n])))] in Fr EQUAL ==> Same_frac([m,n],[car(arb(Fr_to_Ra([m,n]))),cdr(arb(Fr_to_Ra([m,n])))]) EQUAL ==> [car(arb(Fr_to_Ra([m,n]))),cdr(arb(Fr_to_Ra([m,n])))] in Fr (m,n,car(arb(Fr_to_Ra([m,n]))),cdr(arb(Fr_to_Ra([m,n]))))-->T483 ==> Same_frac([S_Rev(m),n],[S_Rev(car(arb(Fr_to_Ra([m,n])))),cdr(arb(Fr_to_Ra([m,n])))]) ([S_Rev(m),n],[S_Rev(car(arb(Fr_to_Ra([m,n])))),cdr(arb(Fr_to_Ra([m,n])))])-->T422 ==> false; Discharge ==> QED Theorem 485: [First law of signs for rational multiplication] ((X in Ra) & (Y in Ra)) ¥imp ((X ¥Ra_TIMES Ra_Rev(Y)) = Ra_Rev(X ¥Ra_TIMES Y)). Proof: Suppose_not(m,n) ==> Stat1: (m in Ra) & (n in Ra) & (m ¥Ra_TIMES Ra_Rev(n) /= Ra_Rev(m ¥Ra_TIMES n)) n-->T423 ==> (n = Fr_to_Ra(arb(n))) & (arb(n) in Fr) (arb(n))-->T431 ==> (arb(n) = [car(arb(n)),cdr(arb(n))]) & (car(arb(n)) in Si) & (cdr(arb(n)) in Si) & (cdr(arb(n)) /= [0,0]) m-->T423 ==> (m = Fr_to_Ra(arb(m))) & (arb(m) in Fr) (arb(m))-->T431 ==> (arb(m) = [car(arb(m)),cdr(arb(m))]) & (car(arb(m)) in Si) & (cdr(arb(m)) in Si) & (cdr(arb(m)) /= [0,0]) Use_def(Ra_Rev) ==> m ¥Ra_TIMES Ra_Rev(n) = m ¥Ra_TIMES Fr_to_Ra([S_Rev(car(arb(n))),cdr(arb(n))]) (car(arb(n)))-->T391 ==> S_Rev(car(arb(n))) in Si (m,S_Rev(car(arb(n))),cdr(arb(n)))-->T439 ==> m ¥Ra_TIMES Fr_to_Ra([S_Rev(car(arb(n))),cdr(arb(n))]) = Fr_to_Ra([car(arb(m)) ¥S_TIMES S_Rev(car(arb(n))),cdr(arb(m)) ¥S_TIMES cdr(arb(n))]) (car(arb(m)),car(arb(n)))-->T390 ==> car(arb(m)) ¥S_TIMES S_Rev(car(arb(n))) = S_Rev(car(arb(m)) ¥S_TIMES car(arb(n))) EQUAL ==> m ¥Ra_TIMES Fr_to_Ra([S_Rev(car(arb(n))),cdr(arb(n))]) = Fr_to_Ra([S_Rev(car(arb(m)) ¥S_TIMES car(arb(n))),cdr(arb(m)) ¥S_TIMES cdr(arb(n))]) ALGEBRA ==> (car(arb(m)) ¥S_TIMES car(arb(n)) in Si) & (cdr(arb(m)) ¥S_TIMES cdr(arb(n)) in Si) (cdr(arb(n)),cdr(arb(m)))-->T407(Stat1*) ==> cdr(arb(m)) ¥S_TIMES cdr(arb(n)) /= [0,0] (car(arb(m)) ¥S_TIMES car(arb(n)),cdr(arb(m)) ¥S_TIMES cdr(arb(n)))-->T484 ==> m ¥Ra_TIMES Fr_to_Ra([S_Rev(car(arb(n))),cdr(arb(n))]) = Ra_Rev(Fr_to_Ra([car(arb(m)) ¥S_TIMES car(arb(n)),cdr(arb(m)) ¥S_TIMES cdr(arb(n))])) Use_def(¥Ra_TIMES) ==> m ¥Ra_TIMES n = Fr_to_Ra([car(arb(m)) ¥S_TIMES car(arb(n)),cdr(arb(m)) ¥S_TIMES cdr(arb(n))]) EQUAL ==> false; Discharge ==> QED -- Theorem 486: [The reverse of a rational $X$ is the reverse of 1, times $X$] (X in Ra) ¥imp (Ra_Rev(X) = (Ra_Rev(Ra_1) ¥Ra_TIMES X)). Proof: Suppose_not(m) ==>AUTO m-->T461 ==> m = (m ¥Ra_TIMES Ra_1) T451 ==> Ra_1 in Ra Ra_1-->T452 ==> Ra_Rev(Ra_1) in Ra (m,Ra_1)-->T485 ==> (m ¥Ra_TIMES Ra_Rev(Ra_1)) = Ra_Rev(m ¥Ra_TIMES Ra_1) (m,Ra_Rev(Ra_1))-->T448 ==> (m ¥Ra_TIMES Ra_Rev(Ra_1)) = (Ra_Rev(Ra_1) ¥Ra_TIMES m) EQUAL ==> false; Discharge ==> QED -- Theorem 487: ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp ((X ¥Ra_TIMES (Y ¥Ra_MINUS Z)) = (X ¥Ra_TIMES Y) ¥Ra_MINUS (X ¥Ra_TIMES Z)). Proof: Suppose_not(m,n,k) ==> (m in Ra) & (n in Ra) & (k in Ra) & ((m ¥Ra_TIMES (n ¥Ra_MINUS k)) /= (m ¥Ra_TIMES n) ¥Ra_MINUS (m ¥Ra_TIMES k)) Use_def(¥Ra_MINUS) ==> ((m ¥Ra_TIMES (n ¥Ra_PLUS Ra_Rev(k))) /= (m ¥Ra_TIMES n) ¥Ra_PLUS Ra_Rev(m ¥Ra_TIMES k)) k-->T452 ==> Ra_Rev(k) in Ra (Ra_Rev(k),m,n)-->T458 ==> ((m ¥Ra_TIMES n) ¥Ra_PLUS Ra_Rev(m ¥Ra_TIMES k)) /= ((m ¥Ra_TIMES n) ¥Ra_PLUS (m ¥Ra_TIMES Ra_Rev(k))) (m,k)-->T485 ==> Ra_Rev(m ¥Ra_TIMES k) = (m ¥Ra_TIMES Ra_Rev(k)) EQUAL ==> false; Discharge ==> QED -- -- Now we prove that multiplication of two rationals $m$, $n$ satisfying $m ¥Ra_GT n$ by a common -- strictly positive fraction produces two products satisfying the same condition. -- Theorem 488: [Strict monotonicity of rational multiplication over 1st argument] ((X in Ra) & (Y in Ra) & (X1 in Ra) & (X ¥Ra_GT Y) & (X1 ¥Ra_GT Ra_0)) ¥imp ((X ¥Ra_TIMES X1) ¥Ra_GT (Y ¥Ra_TIMES X1)). Proof: Suppose_not(m,n,k) ==> (m in Ra) & (n in Ra) & (k in Ra) & (m ¥Ra_GT n) & (k ¥Ra_GT Ra_0) & (not((m ¥Ra_TIMES k) ¥Ra_GT (n ¥Ra_TIMES k))) (m,n)-->T473 ==> Ra_is_nonneg(m ¥Ra_MINUS n) & (m /= n) T451 ==> Ra_0 in Ra (k,Ra_0)-->T473 ==> Ra_is_nonneg(k ¥Ra_MINUS Ra_0) & (k /= Ra_0) Use_def(¥Ra_MINUS) ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) & Ra_is_nonneg(k ¥Ra_PLUS Ra_Rev(Ra_0)) (m,k)-->T448 ==> (m ¥Ra_TIMES k) in Ra (n,k)-->T448 ==> (n ¥Ra_TIMES k) in Ra (m ¥Ra_TIMES k,n ¥Ra_TIMES k)-->T473 ==> not(Ra_is_nonneg((m ¥Ra_TIMES k) ¥Ra_MINUS (n ¥Ra_TIMES k)) & (m ¥Ra_TIMES k /= n ¥Ra_TIMES k)) Use_def(¥Ra_MINUS) ==> not(Ra_is_nonneg((m ¥Ra_TIMES k) ¥Ra_PLUS Ra_Rev(n ¥Ra_TIMES k)) & (m ¥Ra_TIMES k /= n ¥Ra_TIMES k)) T481 ==> Ra_Rev(Ra_0) = Ra_0 EQUAL ==> Ra_is_nonneg(k ¥Ra_PLUS Ra_0) k-->T451 ==> k ¥Ra_PLUS Ra_0 = k EQUAL ==> Ra_is_nonneg(k) n-->T452 ==> Ra_Rev(n) in Ra (m,Ra_Rev(n))-->T445 ==> m ¥Ra_PLUS Ra_Rev(n) in Ra (k,m ¥Ra_PLUS Ra_Rev(n))-->T469 ==> Ra_is_nonneg(k ¥Ra_TIMES (m ¥Ra_PLUS Ra_Rev(n))) (Ra_Rev(n),k,m)-->T458 ==> k ¥Ra_TIMES (m ¥Ra_PLUS Ra_Rev(n)) = (k ¥Ra_TIMES m) ¥Ra_PLUS (k ¥Ra_TIMES Ra_Rev(n)) (k,n)-->T485 ==> (k ¥Ra_TIMES Ra_Rev(n)) = Ra_Rev(k ¥Ra_TIMES n) EQUAL ==> Ra_is_nonneg((k ¥Ra_TIMES m) ¥Ra_PLUS Ra_Rev(k ¥Ra_TIMES n)) (k,m)-->T448 ==> k ¥Ra_TIMES m = m ¥Ra_TIMES k (k,n)-->T448 ==> k ¥Ra_TIMES n = n ¥Ra_TIMES k EQUAL ==> Ra_is_nonneg((m ¥Ra_TIMES k) ¥Ra_PLUS Ra_Rev(n ¥Ra_TIMES k)) ELEM ==> m ¥Ra_TIMES k = n ¥Ra_TIMES k EQUAL ==> (m ¥Ra_TIMES k) ¥Ra_TIMES Recip(k) = (n ¥Ra_TIMES k) ¥Ra_TIMES Recip(k) k-->T462 ==> (Recip(k) in Ra) & (k ¥Ra_TIMES Recip(k) = Ra_1) (Recip(k),m,k)-->T456 ==> (m ¥Ra_TIMES k) ¥Ra_TIMES Recip(k) = m ¥Ra_TIMES (k ¥Ra_TIMES Recip(k)) (Recip(k),n,k)-->T456 ==> (n ¥Ra_TIMES k) ¥Ra_TIMES Recip(k) = n ¥Ra_TIMES (k ¥Ra_TIMES Recip(k)) EQUAL ==> m ¥Ra_TIMES (k ¥Ra_TIMES Recip(k)) = n ¥Ra_TIMES (k ¥Ra_TIMES Recip(k)) EQUAL ==> m ¥Ra_TIMES Ra_1 = n ¥Ra_TIMES Ra_1 m-->T461 ==> m = m ¥Ra_TIMES Ra_1 n-->T461 ==> n = n ¥Ra_TIMES Ra_1 EQUAL ==> false; Discharge ==> QED -- -- The following lemma states that the product of any rational by zero is zero. -- Theorem 489: (X in Ra) ¥imp (X ¥Ra_TIMES Ra_0 = Ra_0). Proof: Suppose_not(m) ==> (m in Ra) & (m ¥Ra_TIMES Ra_0 /= Ra_0) T481 ==> Ra_Rev(Ra_0) = Ra_0 T451 ==> Ra_0 in Ra (m,Ra_0)-->T448 ==> m ¥Ra_TIMES Ra_0 in Ra (m,Ra_0)-->T485 ==> m ¥Ra_TIMES Ra_Rev(Ra_0) = Ra_Rev(m ¥Ra_TIMES Ra_0) (m ¥Ra_TIMES Ra_0)-->T466 ==> (Ra_is_nonneg(m ¥Ra_TIMES Ra_0) or Ra_is_nonneg(Ra_Rev(m ¥Ra_TIMES Ra_0))) & ((Ra_is_nonneg(m ¥Ra_TIMES Ra_0) & Ra_is_nonneg(Ra_Rev(m ¥Ra_TIMES Ra_0))) ¥imp (m ¥Ra_TIMES Ra_0 = Ra_0)) EQUAL ==> false; Discharge ==> QED -- -- It follows easily from Theorem 488 and Theorem 489 that -- the product of positive rationals is positive. -- Theorem 490: ((X in Ra) & (Y in Ra) & (X ¥Ra_GT Ra_0) & (Y ¥Ra_GT Ra_0)) ¥imp ((X ¥Ra_TIMES Y) ¥Ra_GT Ra_0). Proof: Suppose_not(x,y) ==> AUTO T451 ==> Ra_0 in Ra (x,Ra_0,y)-->T488 ==> (x ¥Ra_TIMES y) ¥Ra_GT (Ra_0 ¥Ra_TIMES y) y-->T489 ==> y ¥Ra_TIMES Ra_0 = Ra_0 (Ra_0,y)-->T448 ==> Ra_0 ¥Ra_TIMES y = Ra_0 EQUAL ==> false; Discharge ==> QED -- -- Next we show that the reciprocal of a positive rational is positive. -- Theorem 491: ((X in Ra) & (X ¥Ra_GT Ra_0)) ¥imp (Recip(X) ¥Ra_GT Ra_0). Proof: Suppose_not(m) ==> (m in Ra) & (m ¥Ra_GT Ra_0) & (not Recip(m) ¥Ra_GT Ra_0) (m,Ra_0)-->T473 ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(Ra_0)) & (m /= Ra_0) m-->T462 ==> (Recip(m) in Ra) & (m ¥Ra_TIMES Recip(m) = Ra_1) (Recip(m))-->T452 ==> Ra_Rev(Recip(m)) in Ra (Recip(m),Ra_0)-->T473 ==> (not Ra_is_nonneg(Recip(m) ¥Ra_PLUS Ra_Rev(Ra_0)) or Recip(m) = Ra_0) T481 ==> Ra_Rev(Ra_0) = Ra_0 EQUAL ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_0) & (m /= Ra_0) & (not Ra_is_nonneg(Recip(m) ¥Ra_PLUS Ra_0) or Recip(m) = Ra_0) (m)-->T451 ==> Stat1: (Ra_1 in Ra) & (m ¥Ra_PLUS Ra_0 = m) (Recip(m))-->T451 ==> Recip(m) ¥Ra_PLUS Ra_0 = Recip(m) EQUAL ==> Ra_is_nonneg(m) & (m /= Ra_0) & (not Ra_is_nonneg(Recip(m)) or Recip(m) = Ra_0) T481 ==> Stat2: Ra_1 /= Ra_0 Suppose ==> Recip(m) = Ra_0 EQUAL ==> m ¥Ra_TIMES Ra_0 = Ra_1 m-->T489 ==> false; Discharge ==> not Ra_is_nonneg(Recip(m)) (Recip(m))-->T466 ==> Ra_is_nonneg(Ra_Rev(Recip(m))) (m,Ra_Rev(Recip(m)))-->T469 ==> Ra_is_nonneg(m ¥Ra_TIMES Ra_Rev(Recip(m))) (m,Recip(m))-->T485 ==> m ¥Ra_TIMES Ra_Rev(Recip(m)) = Ra_Rev(m ¥Ra_TIMES Recip(m)) m-->T462 ==> m ¥Ra_TIMES Recip(m) = Ra_1 EQUAL ==> Stat3: Ra_is_nonneg(Ra_Rev(Ra_1)) T465 ==> Stat4: Ra_is_nonneg(Ra_1) Ra_1-->T466(Stat1,Stat2,Stat3,Stat4) ==> false; Discharge ==> QED -- -- It is important to know that sign reversal commutes with rational addition. -- Theorem 492: ((X in Ra) & (Y in Ra)) ¥imp (Ra_Rev(X ¥Ra_PLUS Y) = (Ra_Rev(X) ¥Ra_PLUS Ra_Rev(Y))). Proof: Suppose_not(m,n) ==> (m in Ra) & (n in Ra) & (Ra_Rev(m ¥Ra_PLUS n) /= (Ra_Rev(m) ¥Ra_PLUS Ra_Rev(n))) ALGEBRA ==> m ¥Ra_PLUS n in Ra n-->T452 ==> Ra_Rev(n) in Ra m-->T452 ==> Ra_Rev(m) in Ra (m ¥Ra_PLUS n)-->T452 ==> Ra_Rev(m ¥Ra_PLUS n) in Ra Loc_def ==> rm = Ra_Rev(m) Loc_def ==> rn = Ra_Rev(n) Loc_def ==> rmpn = Ra_Rev(m ¥Ra_PLUS n) EQUAL ==> (rm in Ra) & (rn in Ra) & (rmpn in Ra) EQUAL ==> rmpn /= rm ¥Ra_PLUS rn m-->T452 ==> (m ¥Ra_PLUS Ra_Rev(m)) = Ra_0 n-->T452 ==> (n ¥Ra_PLUS Ra_Rev(n)) = Ra_0 (m ¥Ra_PLUS n)-->T452 ==> ((m ¥Ra_PLUS n) ¥Ra_PLUS Ra_Rev(m ¥Ra_PLUS n)) = Ra_0 EQUAL ==> (m ¥Ra_PLUS rm) = Ra_0 EQUAL ==> (n ¥Ra_PLUS rn) = Ra_0 EQUAL ==> ((m ¥Ra_PLUS n) ¥Ra_PLUS rmpn) = Ra_0 ALGEBRA ==> (rn ¥Ra_PLUS rm) ¥Ra_PLUS ((m ¥Ra_PLUS n) ¥Ra_PLUS rmpn) = ((n ¥Ra_PLUS rn) ¥Ra_PLUS (m ¥Ra_PLUS rm)) ¥Ra_PLUS rmpn EQUAL ==> (rn ¥Ra_PLUS rm) ¥Ra_PLUS Ra_0 = (Ra_0 ¥Ra_PLUS Ra_0) ¥Ra_PLUS rmpn ALGEBRA ==> (rm ¥Ra_PLUS rn) = rmpn EQUAL ==> false; Discharge ==> QED -- -- Our next three lemmas assert the monotonicity and strict monotonicity of rational addition. -- We prove monotonicity first. -- Theorem 493: [Monotonicity of rational addition] ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GE Y) & (XP ¥Ra_GE YP)) ¥imp ((X ¥Ra_PLUS XP) ¥Ra_GE (Y ¥Ra_PLUS YP)). Proof: Suppose_not(m,n,mp,np) ==> (m in Ra) & (n in Ra) & (mp in Ra) & (np in Ra) & (m ¥Ra_GE n) & ((mp ¥Ra_GE np) & (not((m ¥Ra_PLUS mp) ¥Ra_GE (n ¥Ra_PLUS np)))) ALGEBRA ==> (Ra_Rev(n) in Ra) & (Ra_Rev(np) in Ra) & (m ¥Ra_PLUS Ra_Rev(n) in Ra) & (mp ¥Ra_PLUS Ra_Rev(np) in Ra) (m,n)-->T473 ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) (mp,np)-->T473 ==> Ra_is_nonneg(mp ¥Ra_PLUS Ra_Rev(np)) (m ¥Ra_PLUS mp,n ¥Ra_PLUS np)-->T473 ==> not Ra_is_nonneg((m ¥Ra_PLUS mp) ¥Ra_PLUS Ra_Rev(n ¥Ra_PLUS np)) Loc_def ==> rn = Ra_Rev(n) Loc_def ==> rnp = Ra_Rev(np) EQUAL ==> (rn in Ra) & (rnp in Ra) & (m ¥Ra_PLUS rn in Ra) & (mp ¥Ra_PLUS rnp in Ra) & Ra_is_nonneg(m ¥Ra_PLUS rn) & Ra_is_nonneg(mp ¥Ra_PLUS rnp) (n,np)-->T492 ==> (Ra_Rev(n) ¥Ra_PLUS Ra_Rev(np)) = Ra_Rev(n ¥Ra_PLUS np) EQUAL ==> ((rn ¥Ra_PLUS rnp) = Ra_Rev(n ¥Ra_PLUS np)) & (not Ra_is_nonneg((m ¥Ra_PLUS mp) ¥Ra_PLUS (rn ¥Ra_PLUS rnp))) (m ¥Ra_PLUS rn,mp ¥Ra_PLUS rnp)-->T469 ==> Ra_is_nonneg((m ¥Ra_PLUS rn) ¥Ra_PLUS (mp ¥Ra_PLUS rnp)) ALGEBRA ==> ((m ¥Ra_PLUS rn) ¥Ra_PLUS (mp ¥Ra_PLUS rnp)) = ((m ¥Ra_PLUS mp) ¥Ra_PLUS (rn ¥Ra_PLUS rnp)) EQUAL ==> false; Discharge ==> QED -- -- Next we prove the familiar facts that the reverse of the reverse of a rational $n$ is $n$, -- and that the reciprocal of the reciprocal of non-zero rational $n$ is $n$. -- Theorem 494: (X in Ra) ¥imp (Ra_Rev(Ra_Rev(X)) = X). Proof: Suppose_not(m) ==> (m in Ra) & (Ra_Rev(Ra_Rev(m)) /= m) m-->T452 ==> (Ra_Rev(m) in Ra) & (m ¥Ra_PLUS Ra_Rev(m) = Ra_0) (Ra_Rev(m))-->T452 ==> (Ra_Rev(Ra_Rev(m)) in Ra) & (Ra_Rev(m) ¥Ra_PLUS Ra_Rev(Ra_Rev(m)) = Ra_0) EQUAL ==> (m ¥Ra_PLUS Ra_Rev(m)) ¥Ra_PLUS Ra_Rev(Ra_Rev(m)) = Ra_0 ¥Ra_PLUS Ra_Rev(Ra_Rev(m)) T451 ==> Ra_0 in Ra (Ra_0,Ra_Rev(Ra_Rev(m)))-->T445 ==> Ra_0 ¥Ra_PLUS Ra_Rev(Ra_Rev(m)) = Ra_Rev(Ra_Rev(m)) ¥Ra_PLUS Ra_0 (Ra_Rev(Ra_Rev(m)))-->T451 ==> (m ¥Ra_PLUS Ra_Rev(m)) ¥Ra_PLUS Ra_Rev(Ra_Rev(m)) = Ra_Rev(Ra_Rev(m)) (Ra_Rev(Ra_Rev(m)),m,Ra_Rev(m))-->T450 ==> m ¥Ra_PLUS (Ra_Rev(m) ¥Ra_PLUS Ra_Rev(Ra_Rev(m))) = Ra_Rev(Ra_Rev(m)) EQUAL ==> m ¥Ra_PLUS Ra_0 = Ra_Rev(Ra_Rev(m)) m-->T451 ==> false; Discharge ==> QED -- -- The following elementary consequence of Theorem OM is sometimes more convenient. -- Theorem 495: ((X in Ra) & (Y in Ra)) ¥imp (((X ¥Ra_GE Y) or (Y ¥Ra_GE X)) & (((X ¥Ra_GE Y) & (Y ¥Ra_GE X)) ¥imp (X = Y))). Proof: Suppose_not(m,n) ==> (m in Ra) & (n in Ra) & ((not((m ¥Ra_GE n) or (n ¥Ra_GE m))) or (((m ¥Ra_GE n) & (n ¥Ra_GE m)) & (m /= n))) (m,n)-->T473 ==> (m ¥Ra_GE n) ¥eq Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) (n,m)-->T473 ==> (n ¥Ra_GE m) ¥eq Ra_is_nonneg(n ¥Ra_PLUS Ra_Rev(m)) n-->T452 ==> Ra_Rev(n) in Ra m-->T452 ==> Ra_Rev(m) in Ra (m,Ra_Rev(n))-->T492 ==> Ra_Rev(m ¥Ra_PLUS Ra_Rev(n)) = Ra_Rev(m) ¥Ra_PLUS Ra_Rev(Ra_Rev(n)) n-->T494 ==> Ra_Rev(Ra_Rev(n)) = n EQUAL ==> Ra_Rev(m ¥Ra_PLUS Ra_Rev(n)) = Ra_Rev(m) ¥Ra_PLUS n (Ra_Rev(m),n)-->T445 ==> Ra_Rev(m) ¥Ra_PLUS n = n ¥Ra_PLUS Ra_Rev(m) EQUAL ==> (n ¥Ra_GE m) ¥eq Ra_is_nonneg(Ra_Rev(m ¥Ra_PLUS Ra_Rev(n))) ELEM ==> (not(Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) or Ra_is_nonneg(Ra_Rev(m ¥Ra_PLUS Ra_Rev(n))))) or (Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) & Ra_is_nonneg(Ra_Rev(m ¥Ra_PLUS Ra_Rev(n))) & (m /= n)) ALGEBRA ==> m ¥Ra_PLUS Ra_Rev(n) in Ra (m ¥Ra_PLUS Ra_Rev(n))-->T466 ==> Stat1: (m ¥Ra_PLUS Ra_Rev(n) = Ra_0) & (m /= n) (m,Ra_Rev(n))-->T445 ==> m ¥Ra_PLUS Ra_Rev(n) = Ra_Rev(n) ¥Ra_PLUS m EQUAL ==> n ¥Ra_PLUS (Ra_Rev(n) ¥Ra_PLUS m) = n ¥Ra_PLUS Ra_0 n-->T451 ==> n ¥Ra_PLUS Ra_0 = n (Stat1)ELEM ==> n ¥Ra_PLUS (Ra_Rev(n) ¥Ra_PLUS m) = n (m,n,Ra_Rev(n))-->T450 ==> (n ¥Ra_PLUS Ra_Rev(n)) ¥Ra_PLUS m = n n-->T452 ==> n ¥Ra_PLUS Ra_Rev(n) = Ra_0 EQUAL ==> Ra_0 ¥Ra_PLUS m = n ALGEBRA ==> false; Discharge ==> QED -- -- Theorem 495 allows us to prove various other elementary but useful results concerning the ordering of rationals. -- Theorem 496: [Transitivity of ordering, strict case] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_GE Y) & (Y ¥Ra_GT Z)) ¥imp (X ¥Ra_GT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (y,z)-->T473 ==> (y ¥Ra_GE z) & (y /= z) (x,y,z)-->T480 ==> x ¥Ra_GE z (x,z)-->T473 ==> x = z EQUAL ==> (z ¥Ra_GE y) & (y ¥Ra_GT z) (y,z)-->T473 ==> y ¥Ra_GE z (y,z)-->T495 ==> y = z (y,z)-->T473 ==> false; Discharge ==> QED -- Theorem 497: [Transitivity of ordering, strict case 2] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_GT Y) & (Y ¥Ra_GE Z)) ¥imp (X ¥Ra_GT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (x,y)-->T473 ==> (x ¥Ra_GE y) & (x /= y) (x,y,z)-->T480 ==> x ¥Ra_GE z (x,z)-->T473 ==> x = z EQUAL ==> (z ¥Ra_GT y) & (y ¥Ra_GE z) (z,y)-->T473 ==> z ¥Ra_GE y (y,z)-->T495 ==> y = z (z,y)-->T473 ==> false; Discharge ==> QED -- Theorem 498: [Transitivity of ordering, strict case 3] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_GT Y) & (Y ¥Ra_GT Z)) ¥imp (X ¥Ra_GT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (x,y)-->T473 ==> (x ¥Ra_GE y) (x,y,z)-->T496 ==> false; Discharge ==> QED -- Theorem 499: [Transitivity of ordering by 'less than'] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_LE Y) & (Y ¥Ra_LT Z)) ¥imp (X ¥Ra_LT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (x,y)-->T473 ==> (y ¥Ra_GE x) ¥eq (x ¥Ra_LE y) (y,z)-->T473 ==> (z ¥Ra_GT y) ¥eq (y ¥Ra_LT z) (x,z)-->T473 ==> (z ¥Ra_GT x) ¥eq (x ¥Ra_LT z) (z,y,x)-->T497 ==> false; Discharge ==> QED -- Theorem 500: [Transitivity of ordering by 'less than', 2] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_LT Y) & (Y ¥Ra_LE Z)) ¥imp (X ¥Ra_LT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (x,y)-->T473 ==> (y ¥Ra_GT x) ¥eq (x ¥Ra_LT y) (y,z)-->T473 ==> (z ¥Ra_GE y) ¥eq (y ¥Ra_LE z) (x,z)-->T473 ==> (z ¥Ra_GT x) ¥eq (x ¥Ra_LT z) (z,y,x)-->T496 ==> false; Discharge ==> QED -- Theorem 501: [Transitivity of ordering by 'less than', 3] ((X in Ra) & (Y in Ra) & (Z in Ra)) ¥imp (((X ¥Ra_LT Y) & (Y ¥Ra_LT Z)) ¥imp (X ¥Ra_LT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (x,y)-->T475 ==> (x ¥Ra_LE y) (x,y,z)-->T499 ==> false; Discharge ==> QED -- Next we prove that rational reversal is a monotone decreasing function. -- Theorem 502: ((X in Ra) & (Y in Ra) & (X ¥Ra_GE Y)) ¥imp (Ra_Rev(Y) ¥Ra_GE Ra_Rev(X)). Proof: Suppose_not(m,n) ==> (m in Ra) & (n in Ra) & (m ¥Ra_GE n) & (not(Ra_Rev(n) ¥Ra_GE Ra_Rev(m))) n-->T452 ==> Ra_Rev(n) in Ra m-->T452 ==> Ra_Rev(m) in Ra (Ra_Rev(n),Ra_Rev(m))-->T495 ==> Ra_Rev(m) ¥Ra_GE Ra_Rev(n) (m,n)-->T473 ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) (Ra_Rev(n),Ra_Rev(m))-->T473 ==> not Ra_is_nonneg(Ra_Rev(n) ¥Ra_PLUS Ra_Rev(Ra_Rev(m))) m-->T494 ==> Ra_Rev(Ra_Rev(m)) = m EQUAL ==> not Ra_is_nonneg(Ra_Rev(n) ¥Ra_PLUS m) (Ra_Rev(n),m)-->T445 ==> Ra_Rev(n) ¥Ra_PLUS m = m ¥Ra_PLUS Ra_Rev(n) EQUAL ==> false; Discharge ==> QED -- -- An equally familiar fact is that the reverse of $y$ is smaller than the -- reverse of $x$ when $x,y$ are rational numbers and $x$ is smaller than $y$. -- Theorem 503: ((X in Ra) & (Y in Ra) & (X ¥Ra_GT Y)) ¥imp (Ra_Rev(Y) ¥Ra_GT Ra_Rev(X)). Proof: Suppose_not(x,y) ==> (x in Ra) & (y in Ra) & (x ¥Ra_GT y) & (not(Ra_Rev(y) ¥Ra_GT Ra_Rev(x))) (x,y)-->T473 ==> Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(y)) & (x /= y) (Ra_Rev(y),Ra_Rev(x))-->T473 ==> (not Ra_is_nonneg(Ra_Rev(y) ¥Ra_PLUS Ra_Rev(Ra_Rev(x)))) or (Ra_Rev(y) = Ra_Rev(x)) x-->T494 ==> Ra_Rev(Ra_Rev(x)) = x y-->T494 ==> Ra_Rev(Ra_Rev(y)) = y y-->T452 ==> Ra_Rev(y) in Ra (x,Ra_Rev(y))-->T445 ==> (x ¥Ra_PLUS Ra_Rev(y)) = (Ra_Rev(y) ¥Ra_PLUS x) EQUAL ==> Ra_is_nonneg(Ra_Rev(y) ¥Ra_PLUS Ra_Rev(Ra_Rev(x))) ELEM ==> Ra_Rev(y) = Ra_Rev(x) EQUAL ==> false; Discharge ==> QED -- -- We now combine the preceding lemmas to prove strict monotonicity of rational addition. -- Theorem 504: ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GE Y) & (XP ¥Ra_GT YP)) ¥imp ((X ¥Ra_PLUS XP) ¥Ra_GT (Y ¥Ra_PLUS YP)). Proof: Suppose_not(m,n,mp,np) ==> (m in Ra) & (n in Ra) & (mp in Ra) & (np in Ra) & (m ¥Ra_GE n) & ((mp ¥Ra_GT np) & (not((m ¥Ra_PLUS mp) ¥Ra_GT (n ¥Ra_PLUS np)))) -- -- Suppose that $m$, $n$, $mp$, and $np$ form a counterexample to our theorem. -- Since addition is known to be monotone, we have at least $(m ¥Ra_PLUS mp) ¥Ra_GE (n ¥Ra_PLUS np)$, -- and since the corresponding strict inequality is false we must have $(m ¥Ra_PLUS mp) = (n ¥Ra_PLUS np)$, -- so that $(np ¥Ra_PLUS n) ¥Ra_GE (mp ¥Ra_PLUS m)$ is also true. -- (mp,np)-->T473 ==> mp ¥Ra_GE np (m,n,mp,np)-->T493 ==> (m ¥Ra_PLUS mp) ¥Ra_GE (n ¥Ra_PLUS np) (m ¥Ra_PLUS mp,n ¥Ra_PLUS np)-->T473 ==> m ¥Ra_PLUS mp = n ¥Ra_PLUS np ALGEBRA ==> (n ¥Ra_PLUS np) ¥Ra_GE (m ¥Ra_PLUS mp) ALGEBRA ==> (np ¥Ra_PLUS n) ¥Ra_GE (mp ¥Ra_PLUS m) -- -- By Theorem 502, we have $Ra_Rev(n) ¥Ra_GE Ra_Rev(m)$, and then adding these -- last two inequalities and reassociating we find that $np ¥Ra_GE mp$, so that $np = mp$, -- contradicting $mp ¥Ra_GT np$ an so proving our theorem. -- (m,n)-->T502 ==> Ra_Rev(n) ¥Ra_GE Ra_Rev(m) n-->T452 ==> (Ra_Rev(n) in Ra) & (n ¥Ra_PLUS Ra_Rev(n) = Ra_0) m-->T452 ==> (Ra_Rev(m) in Ra) & (m ¥Ra_PLUS Ra_Rev(m) = Ra_0) ALGEBRA ==> (mp ¥Ra_PLUS m in Ra) & (np ¥Ra_PLUS n in Ra) (np ¥Ra_PLUS n,mp ¥Ra_PLUS m,Ra_Rev(n),Ra_Rev(m))-->T493 ==> ((np ¥Ra_PLUS n) ¥Ra_PLUS Ra_Rev(n)) ¥Ra_GE ((mp ¥Ra_PLUS m) ¥Ra_PLUS Ra_Rev(m)) (Ra_Rev(n),np,n)-->T450 ==> ((np ¥Ra_PLUS n) ¥Ra_PLUS Ra_Rev(n)) = (np ¥Ra_PLUS (n ¥Ra_PLUS Ra_Rev(n))) (Ra_Rev(m),mp,m)-->T450 ==> ((mp ¥Ra_PLUS m) ¥Ra_PLUS Ra_Rev(m)) = (mp ¥Ra_PLUS (m ¥Ra_PLUS Ra_Rev(m))) EQUAL ==> (np ¥Ra_PLUS Ra_0) ¥Ra_GE (mp ¥Ra_PLUS Ra_0) np-->T451 ==> np ¥Ra_PLUS Ra_0 = np mp-->T451 ==> mp ¥Ra_PLUS Ra_0 = mp EQUAL ==> np ¥Ra_GE mp (mp,np)-->T495 ==> mp = np (mp,np)-->T473 ==> false; Discharge ==> QED -- -- -- The following slight variant of Theorem 504 is sometimes more convenient. -- Theorem 505: ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GT Y) & (XP ¥Ra_GE YP)) ¥imp ((X ¥Ra_PLUS XP) ¥Ra_GT (Y ¥Ra_PLUS YP)). Proof: Suppose_not(m,n,mp,np) ==> AUTO (mp,np,m,n)-->T504 ==> AUTO (m,mp)-->T445 ==> m ¥Ra_PLUS mp = mp ¥Ra_PLUS m (n,np)-->T445 ==> n ¥Ra_PLUS np = np ¥Ra_PLUS n EQUAL ==> false; Discharge ==> QED -- Theorem 506: ((X in Ra) & (X /= Ra_0)) ¥imp ((Recip(X) /= Ra_0) & Recip(Recip(X)) = X). Proof: Suppose_not(m) ==> (m in Ra) & (m /= Ra_0) & (Recip(m) = Ra_0 or Recip(Recip(m)) /= m) m-->T462 ==> (Recip(m) in Ra) & (m ¥Ra_TIMES Recip(m) = Ra_1) Suppose ==> Recip(m) = Ra_0 EQUAL ==> (m ¥Ra_TIMES Ra_0 = Ra_1) m-->T489 ==> Ra_0 = Ra_1 T481 ==> false; Discharge ==> (Recip(m) /= Ra_0) (Recip(m))-->T462 ==> (Recip(Recip(m)) in Ra) & (Recip(m) ¥Ra_TIMES Recip(Recip(m)) = Ra_1) EQUAL ==> (m ¥Ra_TIMES Recip(m)) ¥Ra_TIMES Recip(Recip(m)) = Ra_1 ¥Ra_TIMES Recip(Recip(m)) T451 ==> Ra_1 in Ra (Ra_1,Recip(Recip(m)))-->T448 ==> (Ra_1 ¥Ra_TIMES Recip(Recip(m)) = Recip(Recip(m)) ¥Ra_TIMES Ra_1) (Recip(Recip(m)))-->T461 ==> Recip(Recip(m)) ¥Ra_TIMES Ra_1 = Recip(Recip(m)) ELEM ==> (m ¥Ra_TIMES Recip(m)) ¥Ra_TIMES Recip(Recip(m)) = Recip(Recip(m)) (Recip(Recip(m)),m,Recip(m))-->T456 ==> m ¥Ra_TIMES (Recip(m) ¥Ra_TIMES Recip(Recip(m))) = Recip(Recip(m)) EQUAL ==> m ¥Ra_TIMES Ra_1 = Recip(Recip(m)) m-->T461 ==> false; Discharge ==> QED -- Theorem 507: ([2,0] in Si) & (is_nonneg([2,0])) & is_nonneg([1,0]) & (Fr_to_Ra([[1,0],[2,0]]) in Ra) & (Fr_to_Ra([[1,0],[2,0]]) ¥Ra_GT Ra_0). Proof: Suppose_not ==> Stat1: ([2,0] notin Si) or (not is_nonneg([2,0])) or (not is_nonneg([1,0])) or (Fr_to_Ra([[1,0],[2,0]]) notin Ra) or (not (Fr_to_Ra([[1,0],[2,0]]) ¥Ra_GT Ra_0)) -- or (not (((X ¥Ra_GT Ra_0) ¥Ra_TIMES Fr_to_Ra([[1,0],[2,0]])) ¥Ra_GT Ra_0)) T460 ==> ([1,0] in Si) Use_def(is_nonneg) ==> is_nonneg([1,0]) ([1,0],[1,0])-->T425 ==> is_nonneg([1,0] ¥S_PLUS [1,0]) Use_def(¥S_PLUS) ==> ([1,0] ¥S_PLUS [1,0]) = Red([car([1,0]) ¥PLUS car([1,0]),cdr([1,0]) ¥PLUS cdr([1,0])]) T211 ==> (0 in Za) & (1 in Za) & (2 in Za) & Card(0) & Card(1) 0-->T164 ==> 0 = #0 1-->T164 ==> 1 = #1 0-->T247 ==> #0 ¥PLUS 0 = 0 1-->T317 ==> 1 ¥PLUS 1 = next(1) Use_def(2) ==> (1 ¥PLUS 1 = 2) T212 ==> Stat2: (1 /= 0) & (2 /= 0) (Stat2)ELEM ==> Stat3: (car([1,0]) = 1) & (cdr([1,0]) = 0) & ([2,0] /= [0,0]) & ([1,0] /= [0,0]) 2-->T387 ==> Red([2,0]) = [2,0] EQUAL ==> [1,0] ¥S_PLUS [1,0] = [2,0] 0-->T367 ==> Stat4: [0,0] in Si 1-->T367 ==> Stat5: [1,0] in Si 2-->T367 ==> Stat6: [2,0] in Si EQUAL ==> is_nonneg([2,0]) & (not (Fr_to_Ra([[1,0],[2,0]]) ¥Ra_GT Ra_0)) T451 ==> Ra_0 in Ra TELEM ==> [[1,0],[2,0]] in Fr ([[1,0],[2,0]])-->T421 ==> Fr_to_Ra([[1,0],[2,0]]) in Ra (Fr_to_Ra([[1,0],[2,0]]), Ra_0)-->T473 ==> (not Ra_is_nonneg(Fr_to_Ra([[1,0],[2,0]]) ¥Ra_MINUS Ra_0)) or (Fr_to_Ra([[1,0],[2,0]]) = Ra_0) ([[1,0],[2,0]])-->T431(Stat3,Stat5,Stat6*) ==> [[1,0],[2,0]] in Fr Suppose ==> Fr_to_Ra([[1,0],[2,0]]) notin Ra ([[1,0],[2,0]])-->T421(Stat1*) ==> false; Discharge ==> Fr_to_Ra([[1,0],[2,0]]) in Ra Suppose ==> not Ra_is_nonneg(Fr_to_Ra([[1,0],[2,0]]) ¥Ra_MINUS Ra_0) Use_def(¥Ra_MINUS) ==> not Ra_is_nonneg(Fr_to_Ra([[1,0],[2,0]]) ¥Ra_PLUS Ra_Rev(Ra_0)) T481 ==> Ra_Rev(Ra_0) = Ra_0 (Fr_to_Ra([[1,0],[2,0]]))-->T451(*) ==> Fr_to_Ra([[1,0],[2,0]]) ¥Ra_PLUS Ra_0 = Fr_to_Ra([[1,0],[2,0]]) EQUAL ==> not Ra_is_nonneg(Fr_to_Ra([[1,0],[2,0]])) ([1,0],[2,0])-->T425(Stat1*) ==> is_nonneg([1,0] ¥S_TIMES [2,0]) ([1,0],[2,0])-->T459(Stat1*) ==> false; Discharge ==> Fr_to_Ra([[1,0],[2,0]]) = Ra_0 Use_def(Ra_0) ==> Fr_to_Ra([[1,0],[2,0]]) = Fr_to_Ra([[0,0],[1,0]]) T420 ==> Stat7: (FORALL x, y | ((x in Fr) & (y in Fr)) ¥imp ((Same_frac(x,y) ¥eq (Fr_to_Ra(x) = Fr_to_Ra(y))))) ([[0,0],[1,0]])-->T431(Stat3,Stat4,Stat5*) ==> [[0,0],[1,0]] in Fr ([[1,0],[2,0]],[[0,0],[1,0]])-->Stat7(Stat6*) ==> Same_frac([[1,0],[2,0]],[[0,0],[1,0]]) Use_def(Same_frac) ==> Stat8: car([[1,0],[2,0]]) ¥S_TIMES cdr([[0,0],[1,0]]) = cdr([[1,0],[2,0]]) ¥S_TIMES car([[0,0],[1,0]]) TELEM ==> (car([[1,0],[2,0]]) = [1,0]) & (cdr([[0,0],[1,0]]) = [1,0]) & (cdr([[1,0],[2,0]]) = [2,0]) & (car([[0,0],[1,0]]) = [0,0]) EQUAL(Stat8) ==> Stat9: [1,0] ¥S_TIMES [1,0] = [2,0] ¥S_TIMES [0,0] ([1,0])-->T401(Stat5,Stat5) ==> Stat10: [1,0] ¥S_TIMES [1,0] = [1,0] ([2,0])-->T401(Stat6,Stat6) ==> Stat11: [0,0] ¥S_TIMES [2,0] = [0,0] ([0,0],[2,0])-->T384(Stat4,Stat6) ==> Stat12: [0,0] ¥S_TIMES [2,0] = [2,0] ¥S_TIMES [0,0] (Stat9,Stat10,Stat11,Stat12,Stat3*)Discharge ==> QED -- -- The following lemmas supply the evident facts that the strict and nonstrict rational comparisons -- are both transitive relationships. We begin with the nonstrict version. -- Theorem 508: [Transitivity of ordering by 'greater than'] ((X in Ra) & (Y in Ra) & (Z in Ra) & (X ¥Ra_GE Y) & (Y ¥Ra_GE Z)) ¥imp (X ¥Ra_GE Z). Proof: Suppose_not(m,n,j) ==> (m in Ra) & (n in Ra) & (j in Ra) & (m ¥Ra_GE n) & (n ¥Ra_GE j) & (not (m ¥Ra_GE j)) (m,n)-->T473 ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) (n,j)-->T473 ==> Ra_is_nonneg(n ¥Ra_PLUS Ra_Rev(j)) (m,j)-->T473 ==> not Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(j)) m-->T452 ==> (Ra_Rev(m) in Ra) n-->T452 ==> (Ra_Rev(n) in Ra) j-->T452 ==> (Ra_Rev(j) in Ra) ALGEBRA ==> (m ¥Ra_PLUS Ra_Rev(n) in Ra) & (n ¥Ra_PLUS Ra_Rev(j) in Ra) (m ¥Ra_PLUS Ra_Rev(n),n ¥Ra_PLUS Ra_Rev(j))-->T469 ==> Ra_is_nonneg((m ¥Ra_PLUS Ra_Rev(n)) ¥Ra_PLUS (n ¥Ra_PLUS Ra_Rev(j))) (n ¥Ra_PLUS Ra_Rev(j),m,Ra_Rev(n))-->T450 ==> m ¥Ra_PLUS (Ra_Rev(n) ¥Ra_PLUS (n ¥Ra_PLUS Ra_Rev(j))) = (m ¥Ra_PLUS Ra_Rev(n)) ¥Ra_PLUS (n ¥Ra_PLUS Ra_Rev(j)) (Ra_Rev(j),Ra_Rev(n),n)-->T450 ==> (Ra_Rev(n) ¥Ra_PLUS n) ¥Ra_PLUS Ra_Rev(j) = Ra_Rev(n) ¥Ra_PLUS (n ¥Ra_PLUS Ra_Rev(j)) (Ra_Rev(n),n)-->T445 ==> Ra_Rev(n) ¥Ra_PLUS n = n ¥Ra_PLUS Ra_Rev(n) EQUAL ==> Ra_is_nonneg(m ¥Ra_PLUS ((n ¥Ra_PLUS Ra_Rev(n)) ¥Ra_PLUS Ra_Rev(j))) n-->T452 ==> n ¥Ra_PLUS Ra_Rev(n) = Ra_0 EQUAL ==> Ra_is_nonneg(m ¥Ra_PLUS (Ra_0 ¥Ra_PLUS Ra_Rev(j))) T451 ==> Ra_0 in Ra (Ra_0,Ra_Rev(j))-->T445 ==> Ra_0 ¥Ra_PLUS Ra_Rev(j) = Ra_Rev(j) ¥Ra_PLUS Ra_0 (Ra_Rev(j))-->T451 ==> Ra_Rev(j) ¥Ra_PLUS Ra_0 = Ra_Rev(j) EQUAL ==> false; Discharge ==> QED -- -- The preceding lemma can be used to prove the following 'strict' version of itself. -- Theorem 509: [Transitivity of ordering, strict case] ((X in Ra) & (Y in Ra) & (Z in Ra) & (X ¥Ra_GT Y) & (Y ¥Ra_GE Z)) ¥imp (X ¥Ra_GT Z). Proof: Suppose_not(m,n,j) ==> (m in Ra) & (n in Ra) & (j in Ra) & (m ¥Ra_GT n) & (n ¥Ra_GE j) & (not (m ¥Ra_GT j)) (m,n)-->T473 ==> m ¥Ra_GE n (m,n,j)-->T508 ==> m ¥Ra_GE j (m,j)-->T473 ==> m = j EQUAL ==> j ¥Ra_GT n (j,n)-->T473 ==> j ¥Ra_GE n (n,j)-->T495 ==> n = j (j,n)-->T473 ==> false; Discharge ==> QED -- -- It is sometimes convenient to use the following slight variant of the preceding lemma. -- Theorem 510: [Transitivity of ordering, strict case 2] ((X in Ra) & (Y in Ra) & (Z in Ra) & (X ¥Ra_GE Y) & (Y ¥Ra_GT Z)) ¥imp (X ¥Ra_GT Z). Proof: Suppose_not(m,n,j) ==> (m in Ra) & (n in Ra) & (j in Ra) & (m ¥Ra_GE n) & (n ¥Ra_GT j) & (not (m ¥Ra_GT j)) (n,j)-->T473 ==> n ¥Ra_GE j (m,n,j)-->T508 ==> m ¥Ra_GE j (m,j)-->T473 ==> m = j EQUAL ==> j ¥Ra_GE n (n,j)-->T473 ==> n ¥Ra_GE j (n,j)-->T495 ==> n = j (n,j)-->T473 ==> false; Discharge ==> QED -- Theorem 511: ((X in Ra) & (Y in Ra) & (Z in Ra) & (X ¥Ra_GT Y) & (Y ¥Ra_GT Z)) ¥imp (X ¥Ra_GT Z). Proof: Suppose_not(x,y,w) ==> (x in Ra) & (y in Ra) & (w in Ra) & (x ¥Ra_GT y) & (y ¥Ra_GT w) & (not(x ¥Ra_GT w)) (y,w)-->T473 ==> y ¥Ra_GE w (x,y,w)-->T509 ==> false; Discharge ==> QED -- -- The properties of $¥Ra_GT$ are mirrored by properties of $¥Ra_LT$ and hence -- enable us to exploit, in connection with $Ra$, the theory of linear orderings. -- Theorem 512: (FORALL x in Ra, y in Ra, z in Ra | ((x ¥Ra_LT y) & (y ¥Ra_LT z)) ¥imp (x ¥Ra_LT z)). Proof: Suppose_not ==> Stat1: not(FORALL x in Ra, y in Ra, z in Ra | ((x ¥Ra_LT y) & (y ¥Ra_LT z)) ¥imp (x ¥Ra_LT z)) (x,y,w)-->Stat1 ==> (x in Ra) & (y in Ra) & (w in Ra) & (x ¥Ra_LT y) & (y ¥Ra_LT w) & (not (x ¥Ra_LT w)) (x,y)-->T473 ==> y ¥Ra_GT x (y,w)-->T473 ==> w ¥Ra_GT y (w,y)-->T473 ==> w ¥Ra_GE y (w,y,x)-->T510 ==> w ¥Ra_GT x (x,w)-->T473 ==> false; Discharge ==> QED -- Theorem 513: (FORALL x in Ra | not(x ¥Ra_LT x)). Proof: Suppose_not ==> Stat1: not(FORALL x in Ra | not(x ¥Ra_LT x)) x-->Stat1 ==> (x in Ra) & (x ¥Ra_LT x) (x,x)-->T473 ==> false; Discharge ==> QED -- Theorem 514: (FORALL x in Ra, y in Ra | (x ¥Ra_LT y) or (x = y) or (y ¥Ra_LT x)). Proof: Suppose_not ==> Stat1: not(FORALL x in Ra, y in Ra | (x ¥Ra_LT y) or (x = y) or (y ¥Ra_LT x)) (x,y)-->Stat1 ==> (x in Ra) & (y in Ra) & (not((x ¥Ra_LT y) or (x = y) or (y ¥Ra_LT x))) (y,x)-->T495 ==> (y ¥Ra_GE x) or (x ¥Ra_GE y) Suppose ==> y ¥Ra_GE x (y,x)-->T473 ==> y ¥Ra_GT x (x,y)-->T473 ==> false; Discharge ==> (x ¥Ra_GE y) & (x /= y) (x,y)-->T473 ==> (x ¥Ra_GT y) (y,x)-->T473 ==> false; Discharge ==> QED -- APPLY(smaller_thryvar:smaller_Ra,ubs_thryvar:ubs_Ra,min_over_thryvar:min_over_Ra,max_thryvar:max_Ra,lub_thryvar:lub_Ra) linear_order(s0->Ra, arg1_bef_arg2(X,Y)->(X ¥Ra_LT Y)) ==> Theorem 515: (FORALL x, y | smaller_Ra(x,y) = if ((x notin Ra) & (y notin Ra)) then Ra elseif (x notin Ra) then y elseif (y notin Ra) then x elseif (x ¥Ra_LT y) then x else y end if) & (FORALL x, y | smaller_Ra(x,y) = smaller_Ra(y,x)) & (FORALL x, y | ({x,y} ¥incin Ra) ¥imp (smaller_Ra(x,y) in {x,y})) & (FORALL x | (x in next(Ra)) ¥imp (smaller_Ra(x,Ra) = x)) & (FORALL x, y, z | smaller_Ra(x,smaller_Ra(y,z)) = smaller_Ra(smaller_Ra(x,y),z)) & (FORALL x, y | ((x in next(Ra)) & (y in next(Ra))) ¥imp (smaller_Ra(x,y) in next(Ra))) & (FORALL f,p,a | (Svm(f) & (range(f) ¥incin Ra) & Finite(f)) ¥imp (((p in f) ¥imp (min_over_Ra({p}) = (f~[car(p)]))) & (min_over_Ra(f) = smaller_Ra(min_over_Ra(f ¥ON (domain(f) * a)),min_over_Ra(f ¥ON (domain(f) - a)))))) & (FORALL f | (Svm(f) & (range(f) ¥incin Ra) & Finite(f) & (f /= 0)) ¥imp (min_over_Ra(f) in range(f))) & (FORALL x, y | ({x,y} ¥incin Ra) ¥imp ((smaller_Ra(x,y) = x) ¥eq ((x ¥Ra_LT y) or (x = y)))) & (FORALL t | ubs_Ra(t) = {x in Ra | (FORALL y in (t * Ra) | smaller_Ra(y,x) = y)}) & (FORALL t | max_Ra(t) = arb({Ra} + (t * ubs_Ra(t)))) & (FORALL t | lub_Ra(t) = arb({Ra} + {x in ubs_Ra(t) | ubs_Ra(t) ¥incin ubs_Ra({x})})) & (ubs_Ra(0) = Ra) & (max_Ra(0) = Ra) & (FORALL t | (ubs_Ra(t) ¥incin Ra) & (ubs_Ra(t) = ubs_Ra(t * Ra)) & (max_Ra(t) = max_Ra(t * Ra))) & (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin Ra)) ¥imp ((max_Ra(t) in t) & ((x = max_Ra(t)) or ((x ¥Ra_LT max_Ra(t)))))) -- -- For positive rationals, multiplication is also monotone and strictly monotone. -- We prove the nonstrict version of this assertion first. -- Theorem 516: ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GE Y) & (Y ¥Ra_GE Ra_0) & (YP ¥Ra_GE Ra_0) & (XP ¥Ra_GE YP)) ¥imp ((X ¥Ra_TIMES XP) ¥Ra_GE (Y ¥Ra_TIMES YP)). Proof: Suppose_not(m,n,mp,np) ==> (m in Ra) & (n in Ra) & (mp in Ra) & (np in Ra) & (m ¥Ra_GE n) & (mp ¥Ra_GE np) & (n ¥Ra_GE Ra_0) & (np ¥Ra_GE Ra_0) & (not((m ¥Ra_TIMES mp) ¥Ra_GE (n ¥Ra_TIMES np))) (m,n)-->T473 ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) (mp,np)-->T473 ==> Ra_is_nonneg(mp ¥Ra_PLUS Ra_Rev(np)) (m ¥Ra_TIMES mp,n ¥Ra_TIMES np)-->T473 ==> not Ra_is_nonneg((m ¥Ra_TIMES mp) ¥Ra_PLUS Ra_Rev(n ¥Ra_TIMES np)) (np,n)-->T448 ==> n ¥Ra_TIMES np = np ¥Ra_TIMES n (np,n)-->T485 ==> np ¥Ra_TIMES Ra_Rev(n) = Ra_Rev(np ¥Ra_TIMES n) T451 ==> Ra_0 in Ra (np,Ra_0)-->T473 ==> np ¥Ra_GE Ra_0 (m,n,Ra_0)-->T508 ==> m ¥Ra_GE Ra_0 (m,Ra_0)-->T473 ==> m ¥Ra_GE Ra_0 (m,Ra_0)-->T473 ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(Ra_0)) (np,Ra_0)-->T473 ==> Ra_is_nonneg(np ¥Ra_PLUS Ra_Rev(Ra_0)) T481 ==> Ra_Rev(Ra_0) = Ra_0 EQUAL ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_0) & Ra_is_nonneg(np ¥Ra_PLUS Ra_0) ALGEBRA ==> Ra_is_nonneg(m) & Ra_is_nonneg(np) n-->T452 ==> Ra_Rev(n) in Ra np-->T452 ==> (Ra_Rev(np) in Ra) & (np ¥Ra_PLUS Ra_Rev(np) = Ra_0) Loc_def ==> rn = Ra_Rev(n) Loc_def ==> rnp = Ra_Rev(np) EQUAL ==> Ra_is_nonneg(m ¥Ra_PLUS rn) & Ra_is_nonneg(mp ¥Ra_PLUS rnp) & (rn in Ra) & (rnp in Ra) EQUAL ==> (np ¥Ra_PLUS rnp = Ra_0) & (not Ra_is_nonneg((m ¥Ra_TIMES mp) ¥Ra_PLUS (np ¥Ra_TIMES rn))) ALGEBRA ==> (m ¥Ra_PLUS rn in Ra) & (mp ¥Ra_PLUS rnp in Ra) & (m ¥Ra_TIMES (mp ¥Ra_PLUS rnp) in Ra) & (np ¥Ra_TIMES (m ¥Ra_PLUS rn) in Ra) (m,mp ¥Ra_PLUS rnp)-->T469 ==> Ra_is_nonneg(m ¥Ra_TIMES (mp ¥Ra_PLUS rnp)) (np,m ¥Ra_PLUS rn)-->T469 ==> Ra_is_nonneg(np ¥Ra_TIMES (m ¥Ra_PLUS rn)) (m ¥Ra_TIMES (mp ¥Ra_PLUS rnp),np ¥Ra_TIMES (m ¥Ra_PLUS rn))-->T469 ==> Ra_is_nonneg((m ¥Ra_TIMES (mp ¥Ra_PLUS rnp)) ¥Ra_PLUS (np ¥Ra_TIMES (m ¥Ra_PLUS rn))) ALGEBRA ==> Ra_is_nonneg(((m ¥Ra_TIMES mp) ¥Ra_PLUS (np ¥Ra_TIMES rn)) ¥Ra_PLUS ((m ¥Ra_TIMES (np ¥Ra_PLUS rnp)))) EQUAL ==> Ra_is_nonneg(((m ¥Ra_TIMES mp) ¥Ra_PLUS (np ¥Ra_TIMES rn)) ¥Ra_PLUS ((m ¥Ra_TIMES Ra_0))) ALGEBRA ==> Ra_is_nonneg((m ¥Ra_TIMES mp) ¥Ra_PLUS (np ¥Ra_TIMES rn)) EQUAL ==> false; Discharge ==> QED -- -- The following lemma is the 'strict' variant of the preceding. -- Theorem 517: ((X in Ra) & (Y in Ra) & (XP in Ra) & (YP in Ra) & (X ¥Ra_GT Y) & (Y ¥Ra_GT Ra_0) & (YP ¥Ra_GT Ra_0) & (XP ¥Ra_GE YP)) ¥imp ((X ¥Ra_TIMES XP) ¥Ra_GT (Y ¥Ra_TIMES YP)). Proof: Suppose_not(m,n,mp,np) ==> (m in Ra) & (n in Ra) & (mp in Ra) & (np in Ra) & (m ¥Ra_GT n) & (mp ¥Ra_GE np) & (n ¥Ra_GT Ra_0) & (np ¥Ra_GT Ra_0) & (not((m ¥Ra_TIMES mp) ¥Ra_GT (n ¥Ra_TIMES np))) n-->T452 ==> (Ra_Rev(n) in Ra) & (n ¥Ra_PLUS Ra_Rev(n) = Ra_0) T451 ==> Ra_0 in Ra EQUAL ==> m ¥Ra_PLUS (n ¥Ra_PLUS Ra_Rev(n)) = m ¥Ra_PLUS Ra_0 m-->T451 ==> m ¥Ra_PLUS (n ¥Ra_PLUS Ra_Rev(n)) = m (m,n)-->T473 ==> (m ¥Ra_GE n) & (m /= n) (n,Ra_0)-->T473 ==> (n ¥Ra_GE Ra_0) & (n /= Ra_0) (np,Ra_0)-->T473 ==> (np ¥Ra_GE Ra_0) & (np /= Ra_0) (m,n)-->T473 ==> Ra_is_nonneg(m ¥Ra_PLUS Ra_Rev(n)) (mp,np,Ra_0)-->T510 ==> mp ¥Ra_GT Ra_0 (mp,Ra_0)-->T473 ==> (mp ¥Ra_GE Ra_0) & (mp /= Ra_0) (mp,Ra_0)-->T473 ==> Ra_is_nonneg(mp ¥Ra_PLUS Ra_Rev(Ra_0)) T481 ==> Ra_Rev(Ra_0) = Ra_0 EQUAL ==> Ra_is_nonneg(mp ¥Ra_PLUS Ra_0) ALGEBRA ==> Ra_is_nonneg(mp) Loc_def ==> rn = Ra_Rev(n) EQUAL ==> Stat1: (m ¥Ra_PLUS (n ¥Ra_PLUS rn) = m) & Ra_is_nonneg(m ¥Ra_PLUS rn) & (rn in Ra) EQUAL ==> n ¥Ra_PLUS rn = Ra_0 ALGEBRA ==> (m ¥Ra_PLUS rn in Ra) & (n ¥Ra_PLUS rn in Ra) (mp,m ¥Ra_PLUS rn)-->T469 ==> Ra_is_nonneg(mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) ALGEBRA ==> mp ¥Ra_TIMES (m ¥Ra_PLUS rn) = (mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) ¥Ra_PLUS Ra_0 EQUAL(Stat1) ==> (mp ¥Ra_TIMES m) = (mp ¥Ra_TIMES (m ¥Ra_PLUS (n ¥Ra_PLUS rn))) ALGEBRA ==> (m ¥Ra_PLUS (n ¥Ra_PLUS rn)) = (n ¥Ra_PLUS (m ¥Ra_PLUS rn)) EQUAL(Stat1) ==> (mp ¥Ra_TIMES m) = (mp ¥Ra_TIMES (n ¥Ra_PLUS (m ¥Ra_PLUS rn))) (m ¥Ra_PLUS rn,mp,n)-->T458 ==> (mp ¥Ra_TIMES (n ¥Ra_PLUS (m ¥Ra_PLUS rn))) = ((mp ¥Ra_TIMES n) ¥Ra_PLUS (mp ¥Ra_TIMES (m ¥Ra_PLUS rn))) ALGEBRA ==> m ¥Ra_PLUS rn in Ra ALGEBRA ==> ((mp ¥Ra_TIMES n) in Ra) & ((np ¥Ra_TIMES n) in Ra) & ((mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) in Ra) n-->T452 ==> Stat2: n ¥Ra_PLUS Ra_Rev(n) = Ra_0 T465 ==> Stat3: Ra_is_nonneg(Ra_0) EQUAL(Stat2) ==> Ra_is_nonneg(n ¥Ra_PLUS Ra_Rev(n)) (n,n)-->T473 ==> n ¥Ra_GE n Ra_0-->T452 ==> Stat4: Ra_0 ¥Ra_PLUS Ra_Rev(Ra_0) = Ra_0 EQUAL(Stat4,Stat3) ==> Ra_is_nonneg(Ra_0 ¥Ra_PLUS Ra_Rev(Ra_0)) (Ra_0,Ra_0)-->T473 ==> Ra_0 ¥Ra_GE Ra_0 (mp,np,n,n)-->T516 ==> (mp ¥Ra_TIMES n) ¥Ra_GE (np ¥Ra_TIMES n) ALGEBRA ==> Ra_is_nonneg((m ¥Ra_PLUS rn) ¥Ra_PLUS Ra_0) EQUAL ==> Ra_is_nonneg((m ¥Ra_PLUS rn) ¥Ra_PLUS Ra_Rev(Ra_0)) (m ¥Ra_PLUS rn,Ra_0)-->T473 ==> (m ¥Ra_PLUS rn) ¥Ra_GE Ra_0 (mp,Ra_0,m ¥Ra_PLUS rn,Ra_0)-->T516 ==> (mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) ¥Ra_GE (Ra_0 ¥Ra_TIMES Ra_0) Ra_0-->T489 ==> Ra_0 ¥Ra_TIMES Ra_0 = Ra_0 EQUAL ==> (mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) ¥Ra_GE Ra_0 Suppose ==> Stat5: m ¥Ra_PLUS rn = Ra_0 EQUAL(Stat5) ==> (m ¥Ra_PLUS rn) ¥Ra_PLUS n = Ra_0 ¥Ra_PLUS n ALGEBRA ==> m ¥Ra_PLUS (n ¥Ra_PLUS rn) = n EQUAL ==> m ¥Ra_PLUS Ra_0 = n ALGEBRA ==> false; Discharge ==> m ¥Ra_PLUS rn /= Ra_0 Suppose ==> (mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) = Ra_0 EQUAL ==> Stat6: (mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) ¥Ra_TIMES Recip(m ¥Ra_PLUS rn) = Ra_0 ¥Ra_TIMES Recip(m ¥Ra_PLUS rn) (m ¥Ra_PLUS rn)-->T462 ==> (Recip(m ¥Ra_PLUS rn) in Ra) & ((m ¥Ra_PLUS rn) ¥Ra_TIMES Recip(m ¥Ra_PLUS rn) = Ra_1) ALGEBRA ==> mp ¥Ra_TIMES ((m ¥Ra_PLUS rn) ¥Ra_TIMES Recip(m ¥Ra_PLUS rn)) = Ra_0 EQUAL ==> mp ¥Ra_TIMES Ra_1 = Ra_0 ALGEBRA ==> false; Discharge ==> (mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) /= Ra_0 (mp ¥Ra_TIMES (m ¥Ra_PLUS rn),Ra_0)-->T473 ==> (mp ¥Ra_TIMES (m ¥Ra_PLUS rn)) ¥Ra_GT Ra_0 (mp ¥Ra_TIMES n,np ¥Ra_TIMES n,mp ¥Ra_TIMES (m ¥Ra_PLUS rn),Ra_0)-->T504 ==> ((mp ¥Ra_TIMES n) ¥Ra_PLUS (mp ¥Ra_TIMES (m ¥Ra_PLUS rn))) ¥Ra_GT ((np ¥Ra_TIMES n) ¥Ra_PLUS Ra_0) ALGEBRA ==> (mp ¥Ra_TIMES (n ¥Ra_PLUS (m ¥Ra_PLUS rn))) ¥Ra_GT (np ¥Ra_TIMES n) EQUAL ==> false; Discharge ==> QED -- -- Next we show that the mapping of a positive rational to its reciprocal is -- strictly monotone decreasing. -- Theorem 518: [The rational reciprocal is monotone decreasing for positive rationals] ((X in Ra) & (Y in Ra) & (X ¥Ra_GT Y) & (Y ¥Ra_GT Ra_0)) ¥imp (Recip(Y) ¥Ra_GT Recip(X)). Proof: Suppose_not(m,n) ==> (m in Ra) & (n in Ra) & (m ¥Ra_GT n) & (n ¥Ra_GT Ra_0) & (not(Recip(n) ¥Ra_GT Recip(m))) (m,n)-->T473 ==> m ¥Ra_GE n T451 ==> Ra_0 in Ra (m,n,Ra_0)-->T510 ==> m ¥Ra_GT Ra_0 (n,Ra_0)-->T473 ==> (n ¥Ra_GE Ra_0) & (n /= Ra_0) (m,Ra_0)-->T473 ==> (m ¥Ra_GE Ra_0) & (m /= Ra_0) m-->T462 ==> Recip(m) in Ra n-->T462 ==> Recip(n) in Ra (Recip(n),Recip(m))-->T473 ==> (not (Recip(n) ¥Ra_GE Recip(m))) or (Recip(n) = Recip(m)) Suppose ==> Recip(n) = Recip(m) EQUAL ==> Recip(Recip(n)) = Recip(Recip(m)) m-->T506 ==> Recip(Recip(m)) = m n-->T506 ==> Recip(Recip(n)) = n ELEM ==> m = n (m,n)-->T473 ==> false; Discharge ==> not (Recip(n) ¥Ra_GE Recip(m)) (Recip(n),Recip(m))-->T495 ==> Recip(m) ¥Ra_GE Recip(n) n-->T491 ==> Recip(n) ¥Ra_GT Ra_0 (m,n,Recip(m),Recip(n))-->T517 ==> ((m ¥Ra_TIMES Recip(m)) ¥Ra_GT (n ¥Ra_TIMES Recip(n))) m-->T462 ==> m ¥Ra_TIMES Recip(m) = Ra_1 n-->T462 ==> n ¥Ra_TIMES Recip(n) = Ra_1 EQUAL ==> Ra_1 ¥Ra_GT Ra_1 (Ra_1,Ra_1)-->T473 ==> false; Discharge ==> QED -- -- The following result gives us a fact about rationals that will be significant -- when we come to use them for defining real numbers: between any two distinct -- rational numbers there exists a third (their average) which lies between the larger -- and the smaller of the two. -- Theorem 519: [The average of two rational numbers lies between them] ((X in Ra) & (Y in Ra) & (X ¥Ra_GT Y)) ¥imp ((X ¥Ra_GT ((X ¥Ra_PLUS Y) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))) & (((X ¥Ra_PLUS Y) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT Y)). Proof: Suppose_not(m,n) ==> (m in Ra) & (n in Ra) & (m ¥Ra_GT n) & (not ((m ¥Ra_GT ((m ¥Ra_PLUS n) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))) & (((m ¥Ra_PLUS n) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT n))) (m,m)-->T473 ==> m ¥Ra_GE m (n,n)-->T473 ==> n ¥Ra_GE n (n,n,m,n)-->T504 ==> ((n ¥Ra_PLUS m) ¥Ra_GT (n ¥Ra_PLUS n)) (m,m,m,n)-->T504 ==> ((m ¥Ra_PLUS m) ¥Ra_GT (m ¥Ra_PLUS n)) T451 ==> Ra_1 in Ra ALGEBRA ==> (m ¥Ra_PLUS n) ¥Ra_GT (n ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1)) ALGEBRA ==> (m ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT (m ¥Ra_PLUS n) ALGEBRA ==> (Ra_1 in Ra) & (Ra_0 in Ra) & (Ra_1 ¥Ra_PLUS Ra_1 in Ra) ALGEBRA ==> (m ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1)) in Ra ALGEBRA ==> (m ¥Ra_PLUS n in Ra) & (n ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1) in Ra) ALGEBRA ==> (n ¥Ra_TIMES Ra_1 = n) & (m ¥Ra_TIMES Ra_1 = m) T481 ==> Ra_1 ¥Ra_GT Ra_0 (Ra_1,Ra_0)-->T473 ==> Ra_1 ¥Ra_GE Ra_0 (Ra_1,Ra_0,Ra_1,Ra_0)-->T504 ==> (Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT (Ra_0 ¥Ra_PLUS Ra_0) ALGEBRA ==> (Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT Ra_0 (Ra_1 ¥Ra_PLUS Ra_1,Ra_0)-->T473 ==> (Ra_1 ¥Ra_PLUS Ra_1) /= Ra_0 (Ra_1 ¥Ra_PLUS Ra_1)-->T462 ==> Recip(Ra_1 ¥Ra_PLUS Ra_1) in Ra (Ra_1 ¥Ra_PLUS Ra_1)-->T491 ==> Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT Ra_0 (m ¥Ra_PLUS n,n ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1),Recip(Ra_1 ¥Ra_PLUS Ra_1))-->T488 ==> ((m ¥Ra_PLUS n) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT ((n ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) ALGEBRA ==> ((m ¥Ra_PLUS n) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT (n ¥Ra_TIMES ((Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1))) (Ra_1 ¥Ra_PLUS Ra_1)-->T462 ==> (Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1) = Ra_1 EQUAL ==> ((m ¥Ra_PLUS n) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT n Use_def(¥Ra_OVER) ==> ((m ¥Ra_PLUS n) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT n (m ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1),m ¥Ra_PLUS n,Recip(Ra_1 ¥Ra_PLUS Ra_1))-->T488 ==> ((m ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT ((m ¥Ra_PLUS n) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) ALGEBRA ==> (m ¥Ra_TIMES ((Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1))) ¥Ra_GT ((m ¥Ra_PLUS n) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) EQUAL ==> m ¥Ra_GT ((m ¥Ra_PLUS n) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) Use_def(¥Ra_OVER) ==> m ¥Ra_GT ((m ¥Ra_PLUS n) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) Discharge ==> QED -- Theorem 520: [Properties of the rational number 2] ((Ra_1 ¥Ra_PLUS Ra_1) in Ra) & ((Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT Ra_0) & (Recip(Ra_1 ¥Ra_PLUS Ra_1) in Ra) & ((X in Ra) ¥imp ((X ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) in Ra)). Proof: Suppose_not(x) ==> ((Ra_1 ¥Ra_PLUS Ra_1) notin Ra) or (not((Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT Ra_0)) or (Recip(Ra_1 ¥Ra_PLUS Ra_1) notin Ra) or ((x in Ra) & ((x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) notin Ra)) Ra_0-->T451 ==> (Ra_0 in Ra) & (Ra_1 in Ra) & (Ra_0 = (Ra_0 ¥Ra_PLUS Ra_0)) (Ra_1,Ra_1)-->T445 ==> Stat1: (Ra_1 ¥Ra_PLUS Ra_1) in Ra T481 ==> Ra_1 ¥Ra_GT Ra_0 (Ra_1,Ra_0)-->T473 ==> Ra_1 ¥Ra_GE Ra_0 (Ra_1,Ra_0,Ra_1,Ra_0)-->T504 ==> Stat2: (Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT (Ra_0 ¥Ra_PLUS Ra_0) Ra_0-->T451 ==> Ra_0 = (Ra_0 ¥Ra_PLUS Ra_0) EQUAL(Stat2) ==> (Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT Ra_0 (Ra_1 ¥Ra_PLUS Ra_1, Ra_0)-->T473 ==> Stat3: (Ra_1 ¥Ra_PLUS Ra_1) /= Ra_0 (Ra_1 ¥Ra_PLUS Ra_1)-->T462(Stat1,Stat3) ==> Recip(Ra_1 ¥Ra_PLUS Ra_1) in Ra ELEM ==> ((x in Ra) & ((x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) notin Ra)) Use_def(¥Ra_OVER) ==> (x ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) notin Ra (x,Recip(Ra_1 ¥Ra_PLUS Ra_1))-->T448 ==> false; Discharge ==> QED -- -- The next theorem asserts that every rational number $x$ can be obtained as the sum of -- its half plus its half. Its proof derives this general statement from the specific -- case when $x=1$. -- Theorem 521: [Any rational number can be divided into two equal halves] (X in Ra) ¥imp (X = ((X ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_PLUS (X ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)))). Proof: Suppose_not(x) ==> (x in Ra) & (x /= ((x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_PLUS (x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)))) T520 ==> ((Ra_1 ¥Ra_PLUS Ra_1) in Ra) & ((Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_GT Ra_0) & (Recip(Ra_1 ¥Ra_PLUS Ra_1) in Ra) Suppose ==> Ra_1 /= (Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_PLUS Recip(Ra_1 ¥Ra_PLUS Ra_1)) (Ra_1 ¥Ra_PLUS Ra_1, Ra_0)-->T473 ==> (Ra_1 ¥Ra_PLUS Ra_1) /= Ra_0 (Ra_1 ¥Ra_PLUS Ra_1)-->T462 ==> Ra_1 = ((Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) T451 ==> Ra_1 in Ra ((Ra_1 ¥Ra_PLUS Ra_1), Recip(Ra_1 ¥Ra_PLUS Ra_1))-->T448 ==> ((Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) = (Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1)) (Ra_1, Recip(Ra_1 ¥Ra_PLUS Ra_1), Ra_1)-->T458 ==> (Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES (Ra_1 ¥Ra_PLUS Ra_1)) = ((Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES Ra_1) ¥Ra_PLUS (Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES Ra_1)) (Recip(Ra_1 ¥Ra_PLUS Ra_1))-->T461 ==> (Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_TIMES Ra_1) = Recip(Ra_1 ¥Ra_PLUS Ra_1) EQUAL ==> false; Discharge ==> Ra_1 = (Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_PLUS Recip(Ra_1 ¥Ra_PLUS Ra_1)) Use_def(¥Ra_OVER) ==> ((x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_PLUS (x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))) = ((x ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_PLUS (x ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1))) (Recip(Ra_1 ¥Ra_PLUS Ra_1),x,Recip(Ra_1 ¥Ra_PLUS Ra_1))-->T458 ==> ((x ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_PLUS (x ¥Ra_TIMES Recip(Ra_1 ¥Ra_PLUS Ra_1))) = (x ¥Ra_TIMES (Recip(Ra_1 ¥Ra_PLUS Ra_1) ¥Ra_PLUS Recip(Ra_1 ¥Ra_PLUS Ra_1))) x-->T461 ==> (x ¥Ra_TIMES Ra_1) = x EQUAL ==> false; Discharge ==> QED -- -- The following theorem shows that every positive rational number exceeds the sum of two -- smaller, positive and distinct rational numbers. -- Theorem 522: [Every positive rational exceeds the sum of two smaller positive rationals] ((X in Ra) & (X ¥Ra_GT Ra_0)) ¥imp (EXISTS e in Ra, e0 in Ra | (X ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (X ¥Ra_GT (e ¥Ra_PLUS e0))). Proof: Suppose_not(x) ==> ((x in Ra) & (x ¥Ra_GT Ra_0)) & Stat1: (not(EXISTS e in Ra, e0 in Ra | (x ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (x ¥Ra_GT (e ¥Ra_PLUS e0)))) -- -- For, if there could be a counterexample $x$, then we could take $e$ to be one half -- of $x$ and $e0$ to be a half of $e$; and with these values, exploiting previously -- proved lemmas, we would easily come to a contradiction. -- Loc_def ==> e = (x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) x-->T451 ==> (Ra_0 in Ra) & (x = (x ¥Ra_PLUS Ra_0)) (x,Ra_0)-->T519 ==> (x ¥Ra_GT ((x ¥Ra_PLUS Ra_0) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))) & (((x ¥Ra_PLUS Ra_0) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT Ra_0) x-->T520 ==> (x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) in Ra EQUAL ==> (x ¥Ra_GT e) & (e ¥Ra_GT Ra_0) & (e in Ra) (e,e)-->T473 ==> e ¥Ra_GE e (e,Ra_0)-->T473 ==> e ¥Ra_GE Ra_0 Loc_def ==> e0 = (e ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) e-->T451 ==> e = (e ¥Ra_PLUS Ra_0) (e,Ra_0)-->T519 ==> (e ¥Ra_GT ((e ¥Ra_PLUS Ra_0) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))) & (((e ¥Ra_PLUS Ra_0) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT Ra_0) e-->T520 ==> (e ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) in Ra EQUAL ==> (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e0 in Ra) x-->T521 ==> x = ((x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_PLUS (x ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))) EQUAL ==> x = (e ¥Ra_PLUS e) (e,e,e,e0)-->T504 ==> (e ¥Ra_PLUS e) ¥Ra_GT (e ¥Ra_PLUS e0) EQUAL ==> x ¥Ra_GT (e ¥Ra_PLUS e0) (e,Ra_0,e0,Ra_0)-->T504 ==> (e ¥Ra_PLUS e0) ¥Ra_GT (Ra_0 ¥Ra_PLUS Ra_0) Ra_0-->T451 ==> Ra_0 = (Ra_0 ¥Ra_PLUS Ra_0) EQUAL ==> (e ¥Ra_PLUS e0) ¥Ra_GT Ra_0 (e,e0)-->Stat1 ==> false; Discharge ==> QED -- -- As a corallary it follows that any positive rational is larger than some other positive rational. -- Theorem 523: [Every positive rational exceeds some smaller positive rational] ((X in Ra) & (X ¥Ra_GT Ra_0)) ¥imp (EXISTS e in Ra | (X ¥Ra_GT e) & (e ¥Ra_GT Ra_0)). Proof: Suppose_not(x) ==> (x in Ra) & (x ¥Ra_GT Ra_0) & Stat1: (not(EXISTS e in Ra | (x ¥Ra_GT e) & (e ¥Ra_GT Ra_0))) x-->T522 ==> Stat2: (EXISTS e in Ra, e0 in Ra | (x ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (x ¥Ra_GT (e ¥Ra_PLUS e0))) (e,e0)-->Stat2 ==> (e in Ra) & (e0 in Ra) & (x ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) (x,e,e0)-->T511 ==> x ¥Ra_GT e0 e0-->Stat1 ==> false; Discharge ==> QED -- -- It is also useful to know that the square of any rational number is non-negative. -- Theorem 524: [the squares of rational numbers are non-negative] (X in Ra) ¥imp ((X ¥Ra_TIMES X) ¥Ra_GE Ra_0). Proof: Suppose_not(n) ==> (n in Ra) & (not((n ¥Ra_TIMES n) ¥Ra_GE Ra_0)) (n ¥Ra_TIMES n,Ra_0)-->T473 ==> not Ra_is_nonneg((n ¥Ra_TIMES n) ¥Ra_PLUS Ra_Rev(Ra_0)) T481 ==> Ra_Rev(Ra_0) = Ra_0 EQUAL ==> not Ra_is_nonneg((n ¥Ra_TIMES n) ¥Ra_PLUS Ra_0) ALGEBRA ==> not Ra_is_nonneg(n ¥Ra_TIMES n) n-->T452 ==> Ra_Rev(n) in Ra n-->T466 ==> Ra_is_nonneg(n) or Ra_is_nonneg(Ra_Rev(n)) Suppose ==> Ra_is_nonneg(n) (n,n)-->T469 ==> false; Discharge ==> Ra_is_nonneg(Ra_Rev(n)) (Ra_Rev(n),Ra_Rev(n))-->T469 ==> Ra_is_nonneg(Ra_Rev(n) ¥Ra_TIMES Ra_Rev(n)) (Ra_Rev(n),n)-->T485 ==> Ra_Rev(n) ¥Ra_TIMES Ra_Rev(n) = Ra_Rev(Ra_Rev(n) ¥Ra_TIMES n) (Ra_Rev(n),n)-->T448 ==> Ra_Rev(n) ¥Ra_TIMES n = n ¥Ra_TIMES Ra_Rev(n) (n,n)-->T485 ==> Ra_Rev(n ¥Ra_TIMES n) = n ¥Ra_TIMES Ra_Rev(n) EQUAL ==> Ra_Rev(n) ¥Ra_TIMES Ra_Rev(n) = Ra_Rev(Ra_Rev(n ¥Ra_TIMES n)) ALGEBRA ==> (n ¥Ra_TIMES n) in Ra (n ¥Ra_TIMES n)-->T494 ==> Ra_Rev(Ra_Rev(n ¥Ra_TIMES n)) = n ¥Ra_TIMES n EQUAL ==> false; Discharge ==> QED -- APPLY_otter(abs_thryvar:Ra_ABS) orderedGroups(In_domain(x)->(x in Ra), pluz(x,y)->(x ¥Ra_PLUS y), e->Ra_0, rvz(x)->Ra_Rev(x), nneg(x)->Ra_is_nonneg(x), leq(x,y)->(x ¥Ra_LE y)) ==> Theorem 525: [rational numbers meet facts known about ordered groups in general] (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_PLUS y) = (x ¥Ra_PLUS z)) ¥imp (y = z))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_Rev(x ¥Ra_PLUS Ra_Rev(y)) = (y ¥Ra_PLUS Ra_Rev(x)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_LE y) or (y ¥Ra_LE x))) & (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE x)) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (y ¥Ra_LE z)) ¥imp (x ¥Ra_LE z))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (x /= y) & (y ¥Ra_LE z)) ¥imp (x /= z))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (y ¥Ra_LE z) & (y /= z)) ¥imp (x /= z))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp ((x ¥Ra_LE y) ¥imp ((x ¥Ra_PLUS z) ¥Ra_LE (y ¥Ra_PLUS z)))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_PLUS z) = (y ¥Ra_PLUS z)) ¥imp (x = y))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (x /= y)) ¥imp ((x ¥Ra_PLUS z) /= (y ¥Ra_PLUS z)))) & (FORALL x | (x in Ra) ¥imp (Ra_ABS(x ¥Ra_PLUS Ra_Rev(x)) = Ra_0)) & (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE Ra_ABS(x))) & (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_ABS(x)) = Ra_ABS(x))) & (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) & (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_PLUS y) ¥Ra_LE (Ra_ABS(x) ¥Ra_PLUS Ra_ABS(y)))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp ((Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_LE z) ¥imp (y ¥Ra_LE (x ¥Ra_PLUS z)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(x ¥Ra_PLUS y) ¥Ra_LE (Ra_ABS(x) ¥Ra_PLUS Ra_ABS(y)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp ((not(Ra_is_nonneg(x))) ¥imp ((x ¥Ra_LE Ra_ABS(y)) & (x /= Ra_ABS(y))))) & (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (Ra_ABS((x ¥Ra_PLUS Ra_Rev(z))) ¥Ra_LE (Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_PLUS Ra_ABS(y ¥Ra_PLUS Ra_Rev(z))))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_is_nonneg(y) ¥imp ((x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_LE (x ¥Ra_PLUS y)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(Ra_ABS(x) ¥Ra_PLUS Ra_Rev(Ra_ABS(y))) ¥Ra_LE Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)))) & (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(x) ¥Ra_PLUS Ra_Rev(Ra_ABS(Ra_ABS(y) ¥Ra_PLUS Ra_Rev(Ra_ABS(x)))) ¥Ra_LE Ra_ABS(y))) -- --Def 45a: [Absolute value of a rational number] Ra_ABS(X) := if Ra_is_nonneg(X) then X else Ra_Rev(X) end if -- -- Theorem 526: ((X in Ra) & (Y in Ra) & (not(X ¥Ra_LE Y))) ¥imp (X ¥Ra_GT Y). Proof: Suppose_not(x,y) ==> AUTO T525 ==> Stat1: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp ((x ¥Ra_LE y) or (y ¥Ra_LE x))) & Stat2: (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE x)) (x,y)-->Stat1(*) ==> Stat3: y ¥Ra_LE x (y,x)-->T473(Stat3,Stat3*) ==> Stat4: x ¥Ra_GE y x-->Stat2(*) ==> Stat5: x ¥Ra_LE x Suppose ==> x = y EQUAL ==> false; Discharge ==> Stat6: x /= y (x,x)-->T473(Stat5,Stat5*) ==> x ¥Ra_GE x (x,y)-->T473(*) ==> false; Discharge ==> QED -- -- It is useful to keep at hand the facts that the absolute value -- of a rational number is a rational number and that the absolute -- value of the product of two rational numbers equals the product -- of the absolute values of the operands. -- Theorem 527: [The absolute value of a rational $x$ is a non-negative rational no smaller than $x$] (X in Ra) ¥imp ((Ra_ABS(X) in Ra) & (Ra_ABS(X) ¥Ra_GE Ra_0) & (Ra_ABS(X) ¥Ra_GE X)). Proof: Suppose_not(x) ==> (x in Ra) & ((Ra_ABS(x) notin Ra) or (not(Ra_ABS(x) ¥Ra_GE Ra_0)) or (not(Ra_ABS(x) ¥Ra_GE x))) T525 ==> Stat1: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) x-->Stat1 ==> Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if Suppose ==> Ra_ABS(x) notin Ra x-->T452 ==> false; Discharge ==> (Ra_ABS(x) in Ra) & ((not(Ra_ABS(x) ¥Ra_GE Ra_0)) or (not(Ra_ABS(x) ¥Ra_GE x))) (Ra_ABS(x))-->T451 ==> (Ra_ABS(x) = Ra_ABS(x) ¥Ra_PLUS Ra_0) & (Ra_0 in Ra) T481 ==> Ra_Rev(Ra_0) = Ra_0 Suppose ==> Ra_is_nonneg(x) ELEM ==> Ra_ABS(x) = x EQUAL ==> (not(x ¥Ra_GE Ra_0)) or (not(x ¥Ra_GE x)) (x,x)-->T474 ==> not(x ¥Ra_GE Ra_0) (x,Ra_0)-->T473 ==> not Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(Ra_0)) EQUAL ==> not Ra_is_nonneg(x ¥Ra_PLUS Ra_0) x-->T451 ==> x ¥Ra_PLUS Ra_0 = x EQUAL ==> false; Discharge ==> (not(Ra_is_nonneg(x))) & (Ra_ABS(x) = Ra_Rev(x)) x-->T466 ==> Ra_is_nonneg(Ra_Rev(x)) Suppose ==> not(Ra_ABS(x) ¥Ra_GE x) EQUAL ==> not(Ra_Rev(x) ¥Ra_GE x) x-->T452 ==> Ra_Rev(x) in Ra (Ra_Rev(x),x)-->T473 ==> not Ra_is_nonneg(Ra_Rev(x) ¥Ra_PLUS Ra_Rev(x)) (Ra_Rev(x),Ra_Rev(x))-->T469 ==> false; Discharge ==> Ra_ABS(x) ¥Ra_GE x EQUAL ==> Ra_Rev(x) ¥Ra_GE x x-->T466 ==> Ra_is_nonneg(Ra_Rev(x)) EQUAL ==> Ra_is_nonneg(Ra_ABS(x) ¥Ra_PLUS Ra_Rev(Ra_0)) (Ra_ABS(x), Ra_0)-->T473 ==> false; Discharge ==> QED -- --Theorem myTempTheorem3: [just for debugging purposes] (X in Ra) ¥imp (Ra_ABS(X) in Ra). Proof: -- Suppose_not(x) ==> AUTO -- x-->T432==> false; Discharge ==> QED -- Theorem 528: [The absolute value of a non-negative rational $x$ is $x$] (X in Ra) ¥imp ((X ¥Ra_GE Ra_0) ¥eq (Ra_ABS(X) = X)). Proof: Suppose_not(x) ==> AUTO (x,Ra_0)-->T473 ==> (x ¥Ra_GE Ra_0) ¥eq Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(Ra_0)) x-->T451 ==> (Ra_0 in Ra) & (x = (x ¥Ra_PLUS Ra_0)) T481 ==> Ra_Rev(Ra_0) = Ra_0 EQUAL ==> (x ¥Ra_GE Ra_0) ¥eq Ra_is_nonneg(x) T525 ==> Stat1: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) Suppose ==> Ra_is_nonneg(x) x-->Stat1(*) ==> false; Discharge ==> (not Ra_is_nonneg(x)) & (Ra_ABS(x) = x) x-->Stat1(Stat1*) ==> x = Ra_Rev(x) EQUAL(Stat1) ==> (not Ra_is_nonneg(Ra_Rev(x))) x-->T466(*) ==> false; Discharge ==> QED -- Theorem 529: [The absolute value of a rational $x$ greater than $Ra_0$ is $x$] ((X in Ra) & (X ¥Ra_GT Ra_0)) ¥imp (Ra_ABS(X) = X). Proof: Suppose_not(x) ==> AUTO (x,Ra_0)-->T473 ==> x ¥Ra_GE Ra_0 x-->T528 ==> false; Discharge ==> QED -- Theorem 530: [The absolute value of a rational product is the product of the absolute values] ((X in Ra) & (Y in Ra)) ¥imp (Ra_ABS(X ¥Ra_TIMES Y) = (Ra_ABS(X) ¥Ra_TIMES Ra_ABS(Y))). Proof: Suppose_not(x,y) ==> (x in Ra) & (y in Ra) & (Ra_ABS(x ¥Ra_TIMES y) /= (Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y))) -- -- For, assuming $x,y$ to be a counterexample to the desired statement, -- we will reach a contradiction in each one of the possible cases, which are: -- $x=Ra_0$ or $y=Ra_0$; $x$ and $y$ both positive; one of $x,y$ positive, the other -- one negative; both of $x$ and $y$ negative. -- -- We begin by collecting various elementary algebraic -- consequences of our hypothesis. -- ALGEBRA ==> ((x ¥Ra_TIMES y) in Ra) & (Ra_0 in Ra) x-->T452 ==> Ra_Rev(x) in Ra y-->T452 ==> Ra_Rev(y) in Ra x-->T527 ==> Ra_ABS(x) in Ra y-->T527 ==> Ra_ABS(y) in Ra (x,y)-->T448 ==> (x ¥Ra_TIMES y) = (y ¥Ra_TIMES x) x-->T451 ==> x = x ¥Ra_PLUS Ra_0 y-->T451 ==> y = y ¥Ra_PLUS Ra_0 (Ra_Rev(x))-->T451 ==> Ra_Rev(x) = Ra_Rev(x) ¥Ra_PLUS Ra_0 (Ra_Rev(y))-->T451 ==> Ra_Rev(y) = Ra_Rev(y) ¥Ra_PLUS Ra_0 T481 ==> Ra_Rev(Ra_0) = Ra_0 (x ¥Ra_TIMES y)-->T452 ==> Ra_Rev(x ¥Ra_TIMES y) in Ra (Ra_Rev(x ¥Ra_TIMES y))-->T451 ==> Ra_Rev(x ¥Ra_TIMES y) ¥Ra_PLUS Ra_0 = Ra_Rev(x ¥Ra_TIMES y) (Ra_Rev(x ¥Ra_TIMES y),Ra_0)-->T445 ==> Stat1: Ra_0 ¥Ra_PLUS Ra_Rev(x ¥Ra_TIMES y) = Ra_Rev(x ¥Ra_TIMES y) (x,y)-->T485 ==> (x ¥Ra_TIMES Ra_Rev(y)) = Ra_Rev(x ¥Ra_TIMES y) (y,x)-->T485 ==> (y ¥Ra_TIMES Ra_Rev(x)) = Ra_Rev(y ¥Ra_TIMES x) (y,Ra_Rev(x))-->T448 ==> (y ¥Ra_TIMES Ra_Rev(x)) = (Ra_Rev(x) ¥Ra_TIMES y) T525 ==> Stat2: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) & Stat3: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) & Stat4: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) -- -- The case when either $x$ or $y$ is zero readily leads to a contradiction, -- because one of $Ra_ABS(x),Ra_ABS(y)$ is zero in this case, and hence -- the product of $x,y$, its absolute value, and the product of -- $Ra_ABS(x),Ra_ABS(y)$ coincide. -- Suppose ==> (x = Ra_0) or (y = Ra_0) x-->T489 ==> (x ¥Ra_TIMES Ra_0) = Ra_0 y-->T489 ==> (y ¥Ra_TIMES Ra_0) = Ra_0 Suppose ==> ((x ¥Ra_TIMES y) /= Ra_0) or ((Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y)) /= Ra_0) Suppose ==> x = Ra_0 x-->Stat3 ==> Ra_ABS(x) = Ra_0 (Ra_ABS(y))-->T489 ==> (Ra_ABS(y) ¥Ra_TIMES Ra_0) = Ra_0 (Ra_ABS(y),Ra_0)-->T448 ==> (Ra_ABS(y) ¥Ra_TIMES Ra_0) = (Ra_0 ¥Ra_TIMES Ra_ABS(y)) EQUAL ==> false; Discharge ==> y = Ra_0 y-->Stat3 ==> Ra_ABS(y) = Ra_0 (Ra_ABS(x))-->T489 ==> (Ra_ABS(x) ¥Ra_TIMES Ra_0) = Ra_0 EQUAL ==> false; Discharge ==> ((x ¥Ra_TIMES y) = Ra_0) & ((Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y)) = Ra_0) (x ¥Ra_TIMES y)-->Stat3 ==> false; Discharge ==> (x /= Ra_0) & (y /= Ra_0) -- -- The case when $x$ and $y$ are positive is settled with equal ease, because -- in this case the absolute value of $x ¥Ra_TIMES y$, coinciding with -- $x ¥Ra_TIMES y$, equals the product of $x$ and $y$, which -- in their turn are the absolute values of $x$ and $y$. -- Suppose ==> (Ra_0 ¥Ra_LT x) & (Ra_0 ¥Ra_LT y) (Ra_0,x)-->T473 ==> x ¥Ra_GT Ra_0 (x,Ra_0)-->T473 ==> Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(Ra_0)) EQUAL ==> Ra_is_nonneg(x) -- (Ra_0,y)-->T473 ==> y ¥Ra_GT Ra_0 (y,Ra_0)-->T473 ==> Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(Ra_0)) EQUAL ==> Ra_is_nonneg(y) -- (x,y)-->T469 ==> Ra_is_nonneg(x ¥Ra_TIMES y) x-->Stat2 ==> Ra_ABS(x) = x y-->Stat2 ==> Ra_ABS(y) = y (x ¥Ra_TIMES y)-->Stat2 ==> Ra_ABS(x ¥Ra_TIMES y) = (x ¥Ra_TIMES y) EQUAL ==> false; Discharge ==> not((Ra_0 ¥Ra_LT x) & (Ra_0 ¥Ra_LT y)) -- -- The case when $x$ is positive and $y$ is negative is but slightly -- more complicated. The product of $x$ and $y$ is negative, and hence -- the absolute value of this product is the reverse of it. This equals -- the product of $x$ with the reverse of $y$, which turns out to be -- the product of the absolute values of $x$ and $y$. -- Suppose ==> (Ra_0 ¥Ra_LT x) & (y ¥Ra_LT Ra_0) (Ra_0,x)-->T473 ==> x ¥Ra_GT Ra_0 (x,Ra_0)-->T473 ==> Ra_is_nonneg(x ¥Ra_PLUS Ra_Rev(Ra_0)) EQUAL ==> Ra_is_nonneg(x) x-->Stat2 ==> Ra_ABS(x) = x -- (y,Ra_0)-->T473 ==> Ra_0 ¥Ra_GT y (Ra_0,y)-->T473 ==> Ra_is_nonneg(Ra_0 ¥Ra_PLUS Ra_Rev(y)) (Ra_0,Ra_Rev(y))-->T445 ==> Ra_0 ¥Ra_PLUS Ra_Rev(y) = Ra_Rev(y) EQUAL ==> Ra_is_nonneg(Ra_Rev(y)) y-->Stat4 ==> Ra_ABS(Ra_Rev(y)) = Ra_ABS(y) (Ra_Rev(y))-->Stat2 ==> Ra_ABS(y) = Ra_Rev(y) -- EQUAL ==> Ra_Rev(x ¥Ra_TIMES y) = Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y) -- Suppose ==> Ra_is_nonneg(x ¥Ra_TIMES y) -- -- Under this assumption, since $y ¥Ra_LT Ra_0$ yields $Ra_Rev(y) ¥Ra_GT Ra_0$ -- and moreover $x$ is positive, the product $x ¥Ra_TIMES Ra_Rev(y)$ would turn -- out to be positive too; and consequently $Ra_Rev(x ¥Ra_TIMES Ra_Rev(y))$, -- which equals $x ¥Ra_TIMES y$, would be negative. -- (y,Ra_0)-->T473 ==> Ra_0 ¥Ra_GT y (Ra_0,y)-->T503 ==> Ra_Rev(y) ¥Ra_GT Ra_Rev(Ra_0) EQUAL ==> Ra_Rev(y) ¥Ra_GT Ra_0 (x,Ra_0,Ra_Rev(y))-->T488 ==> (x ¥Ra_TIMES Ra_Rev(y)) ¥Ra_GT (Ra_0 ¥Ra_TIMES Ra_Rev(y)) ALGEBRA ==> ((x ¥Ra_TIMES Ra_Rev(y)) in Ra) & ((Ra_0 ¥Ra_TIMES Ra_Rev(y)) in Ra) (x ¥Ra_TIMES Ra_Rev(y),Ra_0 ¥Ra_TIMES Ra_Rev(y))-->T503 ==> Ra_Rev(Ra_0 ¥Ra_TIMES Ra_Rev(y)) ¥Ra_GT Ra_Rev(x ¥Ra_TIMES Ra_Rev(y)) (Ra_Rev(y))-->T489 ==> (Ra_Rev(y) ¥Ra_TIMES Ra_0) = Ra_0 (Ra_Rev(y),Ra_0)-->T448 ==> (Ra_Rev(y) ¥Ra_TIMES Ra_0) = (Ra_0 ¥Ra_TIMES Ra_Rev(y)) (x ¥Ra_TIMES y)-->T494 ==> Ra_Rev(Ra_Rev(x ¥Ra_TIMES y)) = x ¥Ra_TIMES y EQUAL ==> (x ¥Ra_TIMES Ra_Rev(y)) ¥Ra_GT Ra_0 (x ¥Ra_TIMES Ra_Rev(y),Ra_0)-->T503 ==> Ra_Rev(Ra_0) ¥Ra_GT Ra_Rev(x ¥Ra_TIMES Ra_Rev(y)) (x,y)-->T485 ==> x ¥Ra_TIMES Ra_Rev(y) = Ra_Rev(x ¥Ra_TIMES y) EQUAL ==> Ra_0 ¥Ra_GT (x ¥Ra_TIMES y) (Ra_0,x ¥Ra_TIMES y)-->T473 ==> Stat5: Ra_is_nonneg(Ra_0 ¥Ra_PLUS Ra_Rev(x ¥Ra_TIMES y)) EQUAL(Stat1,Stat5) ==> Ra_is_nonneg(Ra_Rev(x ¥Ra_TIMES y)) (x ¥Ra_TIMES y)-->T466 ==> x ¥Ra_TIMES y = Ra_0 (Ra_0,x ¥Ra_TIMES y)-->T473 ==> false; Discharge ==> not Ra_is_nonneg(x ¥Ra_TIMES y) (x ¥Ra_TIMES y)-->Stat2 ==> Ra_ABS(x ¥Ra_TIMES y) = Ra_Rev(x ¥Ra_TIMES y) EQUAL ==> false; Discharge ==> (not((Ra_0 ¥Ra_LT x) & (y ¥Ra_LT Ra_0))) -- -- The case when $y$ is positive and $x$ is negative is -- entirely analogous to the one just discussed. -- Suppose ==> (x ¥Ra_LT Ra_0) & (Ra_0 ¥Ra_LT y) (Ra_0,y)-->T473 ==> y ¥Ra_GT Ra_0 (y,Ra_0)-->T473 ==> Ra_is_nonneg(y ¥Ra_PLUS Ra_Rev(Ra_0)) EQUAL ==> Ra_is_nonneg(y) y-->Stat2 ==> Ra_ABS(y) = y -- (x,Ra_0)-->T473 ==> Ra_0 ¥Ra_GT x (Ra_0,x)-->T473 ==> Ra_is_nonneg(Ra_0 ¥Ra_PLUS Ra_Rev(x)) (Ra_0,Ra_Rev(x))-->T445 ==> Ra_0 ¥Ra_PLUS Ra_Rev(x) = Ra_Rev(x) EQUAL ==> Ra_is_nonneg(Ra_Rev(x)) x-->Stat4 ==> Ra_ABS(Ra_Rev(x)) = Ra_ABS(x) (Ra_Rev(x))-->Stat2 ==> Ra_ABS(x) = Ra_Rev(x) -- EQUAL ==> Ra_Rev(x ¥Ra_TIMES y) = Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y) -- Suppose ==> Ra_is_nonneg(x ¥Ra_TIMES y) -- -- Under this assumption, since $x ¥Ra_LT Ra_0$ yields $Ra_Rev(x) ¥Ra_GT Ra_0$ -- and moreover $y$ is positive, the product $Ra_Rev(x) ¥Ra_TIMES y$ would turn -- out to be positive too; and consequently $Ra_Rev(Ra_Rev(x) ¥Ra_TIMES y)$, -- which equals $x ¥Ra_TIMES y$, would be negative. -- (x,Ra_0)-->T473 ==> Ra_0 ¥Ra_GT x (Ra_0,x)-->T503 ==> Ra_Rev(x) ¥Ra_GT Ra_Rev(Ra_0) EQUAL ==> Ra_Rev(x) ¥Ra_GT Ra_0 (Ra_Rev(x),Ra_0,y)-->T488 ==> (Ra_Rev(x) ¥Ra_TIMES y) ¥Ra_GT (Ra_0 ¥Ra_TIMES y) ALGEBRA ==> ((Ra_Rev(x) ¥Ra_TIMES y) in Ra) & ((Ra_0 ¥Ra_TIMES y) in Ra) (Ra_Rev(x) ¥Ra_TIMES y,Ra_0 ¥Ra_TIMES y)-->T503 ==> Ra_Rev(Ra_0 ¥Ra_TIMES y) ¥Ra_GT Ra_Rev(Ra_Rev(x) ¥Ra_TIMES y) y-->T489 ==> (y ¥Ra_TIMES Ra_0) = Ra_0 (y,Ra_0)-->T448 ==> (y ¥Ra_TIMES Ra_0) = (Ra_0 ¥Ra_TIMES y) (x ¥Ra_TIMES y)-->T494 ==> Ra_Rev(Ra_Rev(x ¥Ra_TIMES y)) = x ¥Ra_TIMES y EQUAL ==> (Ra_Rev(x) ¥Ra_TIMES y) ¥Ra_GT Ra_0 (Ra_Rev(x) ¥Ra_TIMES y,Ra_0)-->T503 ==> Ra_Rev(Ra_0) ¥Ra_GT Ra_Rev(Ra_Rev(x) ¥Ra_TIMES y) (y,x)-->T485 ==> y ¥Ra_TIMES Ra_Rev(x) = Ra_Rev(y ¥Ra_TIMES x) (Ra_Rev(x),y)-->T448 ==> Ra_Rev(x) ¥Ra_TIMES y = y ¥Ra_TIMES Ra_Rev(x) EQUAL ==> Ra_0 ¥Ra_GT (x ¥Ra_TIMES y) (Ra_0,x ¥Ra_TIMES y)-->T473 ==> Stat6: Ra_is_nonneg(Ra_0 ¥Ra_PLUS Ra_Rev(x ¥Ra_TIMES y)) EQUAL(Stat1,Stat6) ==> Ra_is_nonneg(Ra_Rev(x ¥Ra_TIMES y)) (x ¥Ra_TIMES y)-->T466 ==> x ¥Ra_TIMES y = Ra_0 (Ra_0,x ¥Ra_TIMES y)-->T473 ==> false; Discharge ==> not Ra_is_nonneg(x ¥Ra_TIMES y) (x ¥Ra_TIMES y)-->Stat2 ==> Ra_ABS(x ¥Ra_TIMES y) = Ra_Rev(x ¥Ra_TIMES y) EQUAL ==> false; Discharge ==> (not((x ¥Ra_LT Ra_0) & (Ra_0 ¥Ra_LT y))) -- -- The only remaining case is the one in which $x,y$ are negative. -- In this case the absolute value of $x ¥Ra_TIMES y$ coincides with -- $x ¥Ra_TIMES y$ and equals the product of the reverses of $x$ and $y$, which -- in their turn are the absolute values of $x$ and $y$. -- T514 ==> Stat7: (FORALL x in Ra, y in Ra | (x ¥Ra_LT y) or (x = y) or (y ¥Ra_LT x)) (x,Ra_0)-->Stat7 ==> (x = Ra_0) or (x ¥Ra_LT Ra_0) or (Ra_0 ¥Ra_LT x) (y,Ra_0)-->Stat7 ==> (y = Ra_0) or (y ¥Ra_LT Ra_0) or (Ra_0 ¥Ra_LT y) ELEM ==> (x ¥Ra_LT Ra_0) & (y ¥Ra_LT Ra_0) -- (x,Ra_0)-->T473 ==> Ra_0 ¥Ra_GT x (Ra_0,x)-->T473 ==> Ra_is_nonneg(Ra_0 ¥Ra_PLUS Ra_Rev(x)) (Ra_0,Ra_Rev(x))-->T445 ==> Ra_0 ¥Ra_PLUS Ra_Rev(x) = Ra_Rev(x) EQUAL ==> Ra_is_nonneg(Ra_Rev(x)) x-->Stat4 ==> Ra_ABS(Ra_Rev(x)) = Ra_ABS(x) (Ra_Rev(x))-->Stat2 ==> Ra_ABS(x) = Ra_Rev(x) -- (y,Ra_0)-->T473 ==> Ra_0 ¥Ra_GT y (Ra_0,y)-->T473 ==> Ra_is_nonneg(Ra_0 ¥Ra_PLUS Ra_Rev(y)) (Ra_0,Ra_Rev(y))-->T445 ==> Ra_0 ¥Ra_PLUS Ra_Rev(y) = Ra_Rev(y) EQUAL ==> Ra_is_nonneg(Ra_Rev(y)) y-->Stat4 ==> Ra_ABS(Ra_Rev(y)) = Ra_ABS(y) (Ra_Rev(y))-->Stat2 ==> Ra_ABS(y) = Ra_Rev(y) -- (Ra_Rev(x),y)-->T485 ==> Ra_Rev(x) ¥Ra_TIMES Ra_Rev(y) = Ra_Rev(Ra_Rev(x) ¥Ra_TIMES y) (Ra_Rev(x),y)-->T448 ==> (Ra_Rev(x) ¥Ra_TIMES y) = (y ¥Ra_TIMES Ra_Rev(x)) (y,x)-->T485 ==> (y ¥Ra_TIMES Ra_Rev(x)) = Ra_Rev(y ¥Ra_TIMES x) (x ¥Ra_TIMES y)-->T494 ==> Ra_Rev(Ra_Rev(x ¥Ra_TIMES y)) = x ¥Ra_TIMES y -- -- This yields the conclusion -- $x ¥Ra_TIMES y = Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y)$, -- leading to a contradiction. Since all possible cases have -- been analyzed and then discarded, this terminates our proof. -- EQUAL ==> false; Discharge ==> QED -- -- Our next theorem shows that the only divisor of zero, over the rationals, is zero. -- Theorem 531: [If the product of two rationals is 0, one of them is 0] ((X in Ra) & (Y in Ra)) ¥imp (((X ¥Ra_TIMES Y) = Ra_0) ¥eq ((X = Ra_0) or (Y = Ra_0))). Proof: Suppose_not(x,y) ==> Stat1: (x in Ra) & (y in Ra) & (((x ¥Ra_TIMES y) /= Ra_0) ¥eq ((x = Ra_0) or (y = Ra_0))) ALGEBRA ==> Stat2: ((x ¥Ra_TIMES Ra_0) in Ra) & ((x ¥Ra_TIMES Ra_0) = Ra_0) & ((Ra_0 ¥Ra_TIMES y) = Ra_0) Suppose ==> (x = Ra_0) EQUAL ==> (x ¥Ra_TIMES y) = Ra_0 Discharge ==> (x /= Ra_0) Suppose ==> (y = Ra_0) EQUAL ==> (x ¥Ra_TIMES y) = Ra_0 Discharge ==> Stat3: (y /= Ra_0) & ((x ¥Ra_TIMES y) = Ra_0) T525 ==> Stat4: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) x-->T527(Stat1,Stat1) ==> (Ra_ABS(x) in Ra) & (Ra_ABS(x) ¥Ra_GE Ra_0) y-->T527 ==> (Ra_ABS(y) in Ra) & (Ra_ABS(y) ¥Ra_GE Ra_0) x-->Stat4 ==> Ra_ABS(x) /= Ra_0 y-->Stat4 ==> Ra_ABS(y) /= Ra_0 (Ra_ABS(x),Ra_0)-->T473 ==> (Ra_ABS(x) ¥Ra_GT Ra_0) (Ra_ABS(y),Ra_0)-->T473 ==> (Ra_ABS(y) ¥Ra_GT Ra_0) (Ra_ABS(x),Ra_0,Ra_ABS(y))-->T488 ==> (Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y)) ¥Ra_GT (Ra_0 ¥Ra_TIMES Ra_ABS(y)) ALGEBRA ==> ((Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y)) in Ra) & ((Ra_0 ¥Ra_TIMES Ra_ABS(y)) = Ra_0) EQUAL ==> (Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y)) ¥Ra_GT Ra_0 (x ¥Ra_TIMES y)-->Stat4(Stat3,Stat2) ==> Stat5: Ra_ABS(x ¥Ra_TIMES y) = Ra_0 (x,y)-->T530(Stat1,Stat5) ==> (Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y)) = Ra_0 (Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y),Ra_0)-->T473 ==> false; Discharge ==> QED -- -- The following theorem shows that the products $X ¥Ra_TIMES Y$, $X ¥Ra_TIMES Za$ -- are equal only if either $X=Ra_0$ or $Y=Za$. -- Theorem 532: [Cancellation rule for rational multiplication] ((X in Ra) & (Y in Ra) & (U in Ra) & (X /= Ra_0) & ((X ¥Ra_TIMES Y) = (X ¥Ra_TIMES U))) ¥imp (Y = U). Proof: Suppose_not(x,y,z) ==> (x in Ra) & (y in Ra) & (z in Ra) & (x /= Ra_0) & ((x ¥Ra_TIMES y) = (x ¥Ra_TIMES z)) & (y /= z) x-->T462 ==> (Recip(x) in Ra) & ((x ¥Ra_TIMES Recip(x)) = Ra_1) T451 ==> Ra_1 in Ra y-->T461 ==> ((y ¥Ra_TIMES Ra_1) = y) z-->T461 ==> ((z ¥Ra_TIMES Ra_1) = z) (y, Ra_1)-->T448 ==> ((y ¥Ra_TIMES Ra_1) = (Ra_1 ¥Ra_TIMES y)) (z, Ra_1)-->T448 ==> ((z ¥Ra_TIMES Ra_1) = (Ra_1 ¥Ra_TIMES z)) (x,Recip(x))-->T448 ==> ((x ¥Ra_TIMES Recip(x)) = (Recip(x) ¥Ra_TIMES x)) (y,Recip(x),x)-->T456 ==> ((Recip(x) ¥Ra_TIMES (x ¥Ra_TIMES y)) = ((Recip(x) ¥Ra_TIMES x) ¥Ra_TIMES y)) (z,Recip(x),x)-->T456 ==> ((Recip(x) ¥Ra_TIMES (x ¥Ra_TIMES z)) = ((Recip(x) ¥Ra_TIMES x) ¥Ra_TIMES z)) EQUAL ==> false; Discharge ==> QED -- -- Next we show that over rational numbers the reciprocal of a product equals the product of reciprocals. -- Theorem 533: [The reciprocal of a rational product is the product of the reciprocals] ((X in Ra) & (Y in Ra) & (X /= Ra_0) & (Y /= Ra_0)) ¥imp (Recip(X ¥Ra_TIMES Y) = (Recip(X) ¥Ra_TIMES Recip(Y))). Proof: Suppose_not(x,y) ==> (x in Ra) & (y in Ra) & (x /= Ra_0) & (y /= Ra_0) & (Recip(x ¥Ra_TIMES y) /= (Recip(x) ¥Ra_TIMES Recip(y))) ALGEBRA ==> ((x ¥Ra_TIMES y) in Ra) & (Ra_1 in Ra) x-->T462 ==> (Recip(x) in Ra) & ((x ¥Ra_TIMES Recip(x)) = Ra_1) y-->T462 ==> (Recip(y) in Ra) & ((y ¥Ra_TIMES Recip(y)) = Ra_1) (x,y)-->T531 ==> (X ¥Ra_TIMES Y) /= Ra_0 (x ¥Ra_TIMES y)-->T462 ==> (Recip(x ¥Ra_TIMES y) in Ra) & (((x ¥Ra_TIMES y) ¥Ra_TIMES Recip(x ¥Ra_TIMES y)) = Ra_1) ALGEBRA ==> (Recip(x) ¥Ra_TIMES Recip(y)) in Ra -- -- We first prove that if both sides of the identity we are aiming at are multiplied by $(x ¥Ra_TIMES y)$, -- then we get an identity. -- ALGEBRA ==> (((x ¥Ra_TIMES y) ¥Ra_TIMES (Recip(x) ¥Ra_TIMES Recip(y))) = ((x ¥Ra_TIMES Recip(x)) ¥Ra_TIMES (y ¥Ra_TIMES Recip(y)))) & (Ra_1 ¥Ra_TIMES Ra_1 = Ra_1) & ((Recip(x ¥Ra_TIMES y) ¥Ra_TIMES Ra_1) = Recip(x ¥Ra_TIMES y)) -- -- Both sides of this first intermediate identity can now be multiplied by $Recip(x ¥Ra_TIMES y)$. -- This leads to a second intermediate identity. -- EQUAL ==> Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((x ¥Ra_TIMES y) ¥Ra_TIMES (Recip(x) ¥Ra_TIMES Recip(y))) = Recip(x ¥Ra_TIMES y) ALGEBRA ==> (Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((x ¥Ra_TIMES y) ¥Ra_TIMES (Recip(x) ¥Ra_TIMES Recip(y))) = (Recip(x ¥Ra_TIMES y) ¥Ra_TIMES (x ¥Ra_TIMES y)) ¥Ra_TIMES (Recip(x) ¥Ra_TIMES Recip(y))) & ((Recip(x ¥Ra_TIMES y) ¥Ra_TIMES (x ¥Ra_TIMES y)) = ((x ¥Ra_TIMES y) ¥Ra_TIMES Recip(x ¥Ra_TIMES y))) & ((Ra_1 ¥Ra_TIMES (Recip(x) ¥Ra_TIMES Recip(y))) = (Recip(x) ¥Ra_TIMES Recip(y))) -- -- The left-hand side of the second intermediate identity is readily proved to equal -- the left-hand side of the desired identity. The other side was already syntactically -- identical to the right-hand side of the desired equality. This leads to the desired conclusion. -- EQUAL ==> (Recip(x) ¥Ra_TIMES Recip(y)) = Recip(x ¥Ra_TIMES y) Discharge ==> QED -- Theorem 534: [Formula for the sum of two rational quotients] ((X in Ra) & (Y in Ra) & (U in Ra) & (V in Ra) & (X /= Ra_0) & (Y /= Ra_0)) ¥imp (((U ¥Ra_OVER X) ¥Ra_PLUS (V ¥Ra_OVER Y)) = (((Y ¥Ra_TIMES U) ¥Ra_PLUS (X ¥Ra_TIMES V)) ¥Ra_OVER (X ¥Ra_TIMES Y))). Proof: Suppose_not(x,y,u,v) ==> ((x in Ra) & (y in Ra) & (u in Ra) & (v in Ra) & (x /= Ra_0) & (y /= Ra_0)) & (((u ¥Ra_OVER x) ¥Ra_PLUS (v ¥Ra_OVER y)) /= (((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v)) ¥Ra_OVER (x ¥Ra_TIMES y))) -- -- For, if not, then we could find rational numbers $x,y,u,v$ constituting a counterexample. -- Putting $u_o_x = (u ¥Ra_OVER x)$ and $v_o_y = (v ¥Ra_OVER y)$ for brevity, we have -- $(x ¥Ra_TIMES y) ¥Ra_TIMES (u_o_x ¥Ra_PLUS v_o_y) = ((x ¥Ra_TIMES y) ¥Ra_TIMES u_o_x) ¥Ra_PLUS ((x ¥Ra_TIMES y) ¥Ra_TIMES v_o_y)$ -- by distributivity. -- x-->T462 ==> (Recip(x) in Ra) & ((x ¥Ra_TIMES Recip(x)) = Ra_1) y-->T462 ==> (Recip(y) in Ra) & ((y ¥Ra_TIMES Recip(y)) = Ra_1) ALGEBRA ==> ((u ¥Ra_TIMES Recip(x)) in Ra) & ((x ¥Ra_TIMES y) in Ra) & ((x ¥Ra_TIMES v) in Ra) & ((y ¥Ra_TIMES u) in Ra) & ((((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v))) in Ra) (v,Recip(y))-->T448 ==> (v ¥Ra_TIMES Recip(y)) in Ra Use_def(¥Ra_OVER) ==> (u ¥Ra_OVER x = u ¥Ra_TIMES Recip(x)) & (v ¥Ra_OVER y = v ¥Ra_TIMES Recip(y)) Loc_def ==> u_o_x = u ¥Ra_OVER x Loc_def ==> v_o_y = v ¥Ra_OVER y EQUAL ==> (u_o_x in Ra) & (v_o_y in Ra) ALGEBRA ==> (((x ¥Ra_TIMES y) ¥Ra_TIMES (u_o_x ¥Ra_PLUS v_o_y)) = ((x ¥Ra_TIMES y) ¥Ra_TIMES u_o_x) ¥Ra_PLUS ((x ¥Ra_TIMES y) ¥Ra_TIMES v_o_y)) -- -- It follows that -- $Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((x ¥Ra_TIMES y) ¥Ra_TIMES (u_o_v ¥Ra_PLUS v_o_y)) = Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((x ¥Ra_TIMES y) ¥Ra_TIMES u_o_x) ¥Ra_PLUS ((x ¥Ra_TIMES y) ¥Ra_TIMES v_o_y)$, -- where the left-hand side simplifies into $((x ¥Ra_TIMES y) ¥Ra_TIMES (u_o_v ¥Ra_PLUS v_o_y))$ and the right-hand side into -- $Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v))$. -- (x,y)-->T531 ==> (x ¥Ra_TIMES y) /= Ra_0 (x ¥Ra_TIMES y)-->T462 ==> (Recip(x ¥Ra_TIMES y) in Ra) & (((x ¥Ra_TIMES y) ¥Ra_TIMES Recip(x ¥Ra_TIMES y)) = Ra_1) ALGEBRA ==> ((Recip(x ¥Ra_TIMES y) ¥Ra_TIMES (x ¥Ra_TIMES y)) in Ra) & ((Recip(x ¥Ra_TIMES y) ¥Ra_TIMES (x ¥Ra_TIMES y)) = Ra_1) & ((u_o_x ¥Ra_PLUS v_o_y) in Ra) ALGEBRA ==> ((Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((x ¥Ra_TIMES y) ¥Ra_TIMES (u_o_x ¥Ra_PLUS v_o_y))) = ((Recip(x ¥Ra_TIMES y) ¥Ra_TIMES (x ¥Ra_TIMES y)) ¥Ra_TIMES (u_o_x ¥Ra_PLUS v_o_y))) & ((Ra_1 ¥Ra_TIMES (u_o_x ¥Ra_PLUS v_o_y)) = (u_o_x ¥Ra_PLUS v_o_y)) EQUAL ==> (Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((x ¥Ra_TIMES y) ¥Ra_TIMES (u_o_x ¥Ra_PLUS v_o_y))) = (u_o_x ¥Ra_PLUS v_o_y) ALGEBRA ==> (((x ¥Ra_TIMES y) ¥Ra_TIMES (u ¥Ra_TIMES Recip(x))) = ((x ¥Ra_TIMES Recip(x)) ¥Ra_TIMES (y ¥Ra_TIMES u))) & (((x ¥Ra_TIMES y) ¥Ra_TIMES (v ¥Ra_TIMES Recip(y))) = ((y ¥Ra_TIMES Recip(y)) ¥Ra_TIMES (x ¥Ra_TIMES v))) & ((Ra_1 ¥Ra_TIMES (y ¥Ra_TIMES u)) = (y ¥Ra_TIMES u)) & ((Ra_1 ¥Ra_TIMES (x ¥Ra_TIMES v)) = (x ¥Ra_TIMES v)) -- EQUAL ==> (((x ¥Ra_TIMES y) ¥Ra_TIMES (u ¥Ra_TIMES Recip(x))) ¥Ra_PLUS ((x ¥Ra_TIMES y) ¥Ra_TIMES (v ¥Ra_TIMES Recip(y)))) = ((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v)) -- EQUAL ==> (((x ¥Ra_TIMES y) ¥Ra_TIMES u_o_x) ¥Ra_PLUS ((x ¥Ra_TIMES y) ¥Ra_TIMES v_o_y)) = ((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v)) EQUAL ==> (u_o_x ¥Ra_PLUS v_o_y) = (Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v))) ALGEBRA ==> (Recip(x ¥Ra_TIMES y) ¥Ra_TIMES ((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v))) = (((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v)) ¥Ra_TIMES Recip(x ¥Ra_TIMES y)) -- -- In view of the definition of the rational-reciprocal operation, this leads to a contradiction, -- proving our theorem. -- Use_def(¥Ra_OVER) ==> (u_o_x ¥Ra_PLUS v_o_y) = (((y ¥Ra_TIMES u) ¥Ra_PLUS (x ¥Ra_TIMES v)) ¥Ra_OVER (x ¥Ra_TIMES y)) EQUAL ==> false; Discharge ==> QED -- -- Here is an obvious corollary of the preceding theorem: the difference of reciprocals of two rational numbers -- equals the difference of the operands divided by their product. -- Theorem 535: ((X in Ra) & (Y in Ra) & (X /= Ra_0) & (Y /= Ra_0)) ¥imp ((Recip(X) ¥Ra_MINUS Recip(Y)) = ((Y ¥Ra_MINUS X) ¥Ra_OVER (X ¥Ra_TIMES Y))). Proof: Suppose_not(x,y) ==> (x in Ra) & (y in Ra) & (x /= Ra_0) & (y /= Ra_0) & ((Recip(x) ¥Ra_MINUS Recip(y)) /= ((y ¥Ra_MINUS x) ¥Ra_OVER (x ¥Ra_TIMES y))) Use_def(¥Ra_MINUS) ==> ((Recip(x) ¥Ra_MINUS Recip(y)) = (Recip(x) ¥Ra_PLUS Ra_Rev(Recip(y)))) & ((y ¥Ra_MINUS x) = (y ¥Ra_PLUS Ra_Rev(x))) x-->T462 ==> (Recip(x) in Ra) Suppose ==> (Ra_1 ¥Ra_OVER x) /= Recip(x) Use_def(¥Ra_OVER) ==> (Ra_1 ¥Ra_TIMES Recip(x)) /= Recip(x) ALGEBRA ==> false; Discharge ==> (Ra_1 ¥Ra_OVER x) = Recip(x) y-->T462 ==> (Recip(y) in Ra) Suppose ==> (Ra_1 ¥Ra_OVER y) /= Recip(y) Use_def(¥Ra_OVER) ==> (Ra_1 ¥Ra_TIMES Recip(y)) /= Recip(y) ALGEBRA ==> false; Discharge ==> (Ra_1 ¥Ra_OVER y) = Recip(y) ALGEBRA ==> (Ra_1 in Ra) & ((y ¥Ra_TIMES Ra_1) = y) & ((x ¥Ra_TIMES Ra_1) = x) & (Recip(y) = (Recip(y) ¥Ra_TIMES Ra_1)) Ra_1-->T452 ==> (Ra_Rev(Ra_1) in Ra) (Ra_Rev(Ra_1),Recip(y))-->T448 ==> ((Ra_Rev(Ra_1) ¥Ra_TIMES Recip(y)) in Ra) & ((Recip(y) ¥Ra_TIMES Ra_Rev(Ra_1)) = (Ra_Rev(Ra_1) ¥Ra_TIMES Recip(y))) Ra_1-->T494 ==> (Ra_Rev(Ra_Rev(Ra_1)) = Ra_1) EQUAL ==> (Recip(y) = (Recip(y) ¥Ra_TIMES Ra_Rev(Ra_Rev(Ra_1)))) (Recip(y),Ra_Rev(Ra_1))-->T485 ==> Recip(y) = Ra_Rev(Recip(y) ¥Ra_TIMES Ra_Rev(Ra_1)) EQUAL ==> Ra_Rev(Recip(y)) = Ra_Rev(Ra_Rev(Ra_Rev(Ra_1) ¥Ra_TIMES Recip(y))) (Ra_Rev(Ra_1) ¥Ra_TIMES Recip(y))-->T494 ==> Ra_Rev(Recip(y)) = (Ra_Rev(Ra_1) ¥Ra_TIMES Recip(y)) Use_def(¥Ra_OVER) ==> Ra_Rev(Recip(y)) = (Ra_Rev(Ra_1) ¥Ra_OVER y) EQUAL ==> (Recip(x) ¥Ra_MINUS Recip(y)) = ((Ra_1 ¥Ra_OVER x) ¥Ra_PLUS (Ra_Rev(Ra_1) ¥Ra_OVER y)) (x,y,Ra_1,Ra_Rev(Ra_1))-->T534 ==> (Recip(x) ¥Ra_MINUS Recip(y)) = (((y ¥Ra_TIMES Ra_1) ¥Ra_PLUS (x ¥Ra_TIMES Ra_Rev(Ra_1))) ¥Ra_OVER (x ¥Ra_TIMES y)) (x,Ra_1)-->T485 ==> (x ¥Ra_TIMES Ra_Rev(Ra_1)) = Ra_Rev(x ¥Ra_TIMES Ra_1) EQUAL ==> (Recip(x) ¥Ra_MINUS Recip(y)) = ((y ¥Ra_PLUS Ra_Rev(x)) ¥Ra_OVER (x ¥Ra_TIMES y)) EQUAL ==> false; Discharge ==> QED -- -- Let us also show that the absolute value of the reciprocal equals the reciprocal of the absolute value. -- Theorem 536: [The absolute value of the reciprocal equals the reciprocal of the absolute value] ((X in Ra) & (X /= Ra_0)) ¥imp (Ra_ABS(Recip(X)) = Recip(Ra_ABS(X))). Proof: Suppose_not(x) ==> (x in Ra) & (x /= Ra_0) & (Ra_ABS(Recip(x)) /= Recip(Ra_ABS(x))) x-->T462 ==> (Recip(x) in Ra) & ((x ¥Ra_TIMES Recip(x)) = Ra_1) x-->T527 ==> Ra_ABS(x) in Ra (x,Recip(x))-->T530 ==> (Ra_ABS(x) ¥Ra_TIMES Ra_ABS(Recip(x))) = Ra_ABS(x ¥Ra_TIMES Recip(x)) T465 ==> Ra_is_nonneg(Ra_1) T525 ==> Stat1: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) & Stat2: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) Ra_1-->Stat1 ==> Ra_ABS(Ra_1) = Ra_1 x-->Stat2 ==> Ra_ABS(x) /= Ra_0 (Ra_ABS(x))-->T462 ==> (Recip(Ra_ABS(x)) in Ra) & ((Ra_ABS(x) ¥Ra_TIMES Recip(Ra_ABS(x))) = Ra_1) (Recip(Ra_ABS(x)))-->T461 ==> (Recip(Ra_ABS(x)) ¥RA_TIMES Ra_1) = Recip(Ra_ABS(x)) EQUAL ==> (Recip(Ra_ABS(x)) ¥RA_TIMES (Ra_ABS(x) ¥Ra_TIMES Ra_ABS(Recip(x)))) = Recip(Ra_ABS(x)) (Recip(x))-->T527 ==> Ra_ABS(Recip(x)) in Ra (Ra_ABS(Recip(x)),Recip(Ra_ABS(x)),Ra_ABS(x))-->T456 ==> ((Recip(Ra_ABS(x)) ¥RA_TIMES Ra_ABS(x)) ¥Ra_TIMES Ra_ABS(Recip(x))) = Recip(Ra_ABS(x)) (Recip(Ra_ABS(x)),Ra_ABS(x))-->T448 ==> ((Recip(Ra_ABS(x)) ¥RA_TIMES Ra_ABS(x)) in Ra) & ((Recip(Ra_ABS(x)) ¥RA_TIMES Ra_ABS(x)) = Ra_1) (Recip(Ra_ABS(x)) ¥RA_TIMES Ra_ABS(x),Ra_ABS(Recip(x)))-->T448 ==> (Ra_ABS(Recip(x)) ¥Ra_TIMES (Recip(Ra_ABS(x)) ¥RA_TIMES Ra_ABS(x))) = Recip(Ra_ABS(x)) EQUAL ==> (Ra_ABS(Recip(x)) ¥Ra_TIMES Ra_1) = Recip(Ra_ABS(x)) (Ra_ABS(Recip(x)))-->T461 ==> false; Discharge ==> QED -- -- Theorem 537: ((X in Ra) & (Y in Ra)) ¥imp (Ra_ABS(X ¥Ra_MINUS Y) = Ra_ABS(Y ¥Ra_MINUS X)). Proof: Suppose_not(x,y) ==> AUTO T525 ==> Stat1: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) & Stat2: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_Rev(x ¥Ra_PLUS Ra_Rev(y)) = (y ¥Ra_PLUS Ra_Rev(x)))) Use_def(¥Ra_MINUS) ==> Stat3: Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)) /= Ra_ABS(y ¥Ra_PLUS Ra_Rev(x)) y-->T452 ==> Ra_Rev(y) in Ra (x,Ra_Rev(y))-->T445 ==> Stat4: (x ¥Ra_PLUS Ra_Rev(y)) in Ra (x ¥Ra_PLUS Ra_Rev(y))-->Stat1(Stat4*) ==> Ra_ABS(Ra_Rev(x ¥Ra_PLUS Ra_Rev(y))) = Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)) (x,y)-->Stat2 ==> Ra_Rev(x ¥Ra_PLUS Ra_Rev(y)) = (y ¥Ra_PLUS Ra_Rev(x)) EQUAL(Stat3) ==> false; Discharge ==> QED -- Theorem 538: ((X in Ra) & (Y in Ra) & (A in Ra) & (B in Ra) & (Ra_ABS(X) ¥Ra_GT A) & (Ra_ABS(Y) ¥Ra_GT B) & (A ¥Ra_GT Ra_0) & (B ¥Ra_GT Ra_0)) ¥imp (Ra_ABS(Recip(X) ¥Ra_MINUS Recip(Y)) ¥Ra_LE (Ra_ABS(X ¥Ra_MINUS Y) ¥Ra_TIMES (Recip(A) ¥Ra_TIMES Recip(B)))). Proof: Suppose_not(x,y,a,b) ==> Stat1: (x in Ra) & (y in Ra) & (a in Ra) & (b in Ra) & (Ra_ABS(x) ¥Ra_GT a) & (Ra_ABS(y) ¥Ra_GT b) & (a ¥Ra_GT Ra_0) & (b ¥Ra_GT Ra_0) & (not(Ra_ABS(Recip(x) ¥Ra_MINUS Recip(y)) ¥Ra_LE (Ra_ABS(x ¥Ra_MINUS y) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))))) T525 ==> Stat2: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) T451 ==> Ra_0 in Ra x-->T527 ==> Stat3: Ra_ABS(x) in Ra y-->T527 ==> Stat4: Ra_ABS(y) in Ra (Ra_ABS(x),a,Ra_0)-->T511 ==> Stat5: Ra_ABS(x) ¥Ra_GT Ra_0 (Ra_ABS(y),b,Ra_0)-->T511 ==> Stat6: Ra_ABS(y) ¥Ra_GT Ra_0 -- -- Use_def(¥Ra_GT)(Stat1,Stat5*) ==> Stat7: (Ra_ABS(x) /= Ra_0) & (Ra_ABS(y) /= Ra_0) & (a /= Ra_0) & (b /= Ra_0) (Ra_ABS(x),Ra_0)-->T473(Stat5,Stat5*) ==> Stat7: Ra_ABS(x) /= Ra_0 (Ra_ABS(y),Ra_0)-->T473(Stat6,Stat6*) ==> Stat8: Ra_ABS(y) /= Ra_0 (a,Ra_0)-->T473(Stat1,Stat1*) ==> Stat9: a /= Ra_0 (b,Ra_0)-->T473(Stat1,Stat1*) ==> Stat10: b /= Ra_0 Suppose ==> (x = Ra_0) or (y = Ra_0) x-->Stat2(*) ==> x /= Ra_0 y-->Stat2(*) ==> y /= Ra_0 Discharge ==> Stat11: (x /= Ra_0) & (y /= Ra_0) (Ra_ABS(x),a)-->T518(Stat1,Stat5,Stat3*) ==> Stat12: Recip(a) ¥Ra_GT Recip(Ra_ABS(x)) (Ra_ABS(y),b)-->T518(Stat1,Stat6,Stat4*) ==> Recip(b) ¥Ra_GT Recip(Ra_ABS(y)) a-->T462(Stat9,Stat1*) ==> Recip(a) in Ra b-->T462(Stat10,Stat1*) ==> Recip(b) in Ra (Recip(a),Recip(b))-->T448(Stat12*) ==> (Recip(a) ¥Ra_TIMES Recip(b)) in Ra (Ra_ABS(x))-->T462(Stat7,Stat3*) ==> Recip(Ra_ABS(x)) in Ra (Ra_ABS(y))-->T462(Stat8,Stat4*) ==> Recip(Ra_ABS(y)) in Ra (Recip(b),Recip(Ra_ABS(y)))-->T473(Stat6*) ==> Recip(b) ¥Ra_GE Recip(Ra_ABS(y)) (Ra_ABS(x))-->T491(Stat3,Stat5*) ==> Recip(Ra_ABS(x)) ¥Ra_GT Ra_0 (Ra_ABS(y))-->T491(Stat4,Stat6*) ==> Recip(Ra_ABS(y)) ¥Ra_GT Ra_0 (Recip(a),Recip(Ra_ABS(x)),Recip(b),Recip(Ra_ABS(y)))-->T517(Stat12*) ==> (Recip(a) ¥Ra_TIMES Recip(b)) ¥Ra_GT (Recip(Ra_ABS(x)) ¥Ra_TIMES Recip(Ra_ABS(y))) (Ra_ABS(x),Ra_ABS(y))-->T533(Stat7,Stat8,Stat3,Stat4*) ==> Stat13: (Recip(Ra_ABS(x)) ¥Ra_TIMES Recip(Ra_ABS(y))) = Recip(Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y)) (x,y)-->T530(Stat1,Stat1*) ==> (Ra_ABS(x ¥Ra_TIMES y) = (Ra_ABS(x) ¥Ra_TIMES Ra_ABS(y))) EQUAL(Stat5) ==> (Recip(a) ¥Ra_TIMES Recip(b)) ¥Ra_GT Recip(Ra_ABS(x ¥Ra_TIMES y)) ((Recip(a) ¥Ra_TIMES Recip(b)),Recip(Ra_ABS(x ¥Ra_TIMES y)))-->T473(Stat13*) ==> (Recip(a) ¥Ra_TIMES Recip(b)) ¥Ra_GE Recip(Ra_ABS(x ¥Ra_TIMES y)) ALGEBRA(Stat1,Stat1) ==> Stat14: ((x ¥Ra_MINUS y) in Ra) & ((x ¥Ra_TIMES y) in Ra) (x ¥Ra_MINUS y)-->T527(Stat14*) ==> (Ra_ABS(x ¥Ra_MINUS y) in Ra) & (Ra_ABS(x ¥Ra_MINUS y) ¥Ra_GE Ra_0) (Ra_ABS(x ¥Ra_MINUS y),Ra_ABS(x ¥Ra_MINUS y))-->T473(Stat14*) ==> Ra_ABS(x ¥Ra_MINUS y) ¥Ra_GE Ra_ABS(x ¥Ra_MINUS y) (x ¥Ra_TIMES y)-->T527(Stat14*) ==> Stat15: (Ra_ABS(x ¥Ra_TIMES y) in Ra) & (Ra_ABS(x ¥Ra_TIMES y) ¥Ra_GE Ra_0) -- Use_def(¥Ra_GT)(Stat5,Stat6*) ==> (Ra_ABS(x) /= Ra_0) & (Ra_ABS(y) /= Ra_0) (Ra_ABS(x),Ra_0)-->T473(Stat5,Stat5*) ==> Ra_ABS(x) /= Ra_0 (Ra_ABS(y),Ra_0)-->T473(Stat6,Stat6*) ==> Ra_ABS(y) /= Ra_0 (Ra_ABS(x),Ra_ABS(y))-->T531(Stat3*) ==> Ra_ABS(x ¥Ra_TIMES y) /= Ra_0 (Ra_ABS(x ¥Ra_TIMES y),Ra_0)-->T473(Stat15*) ==> Ra_ABS(x ¥Ra_TIMES y) ¥Ra_GT Ra_0 (Ra_ABS(x ¥Ra_TIMES y))-->T491(Stat15*) ==> Recip(Ra_ABS(x ¥Ra_TIMES y)) ¥Ra_GT Ra_0 (Recip(Ra_ABS(x ¥Ra_TIMES y)),Ra_0)-->T473(Stat15*) ==> Recip(Ra_ABS(x ¥Ra_TIMES y)) ¥Ra_GE Ra_0 (Ra_ABS(x ¥Ra_TIMES y))-->T462(Stat15*) ==> Recip(Ra_ABS(x ¥Ra_TIMES y)) in Ra (Ra_ABS(x ¥Ra_MINUS y),Ra_ABS(x ¥Ra_MINUS y),Recip(a) ¥Ra_TIMES Recip(b),Recip(Ra_ABS(x ¥Ra_TIMES y)))-->T516(Stat12*) ==> ((Ra_ABS(x ¥Ra_MINUS y)) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_GE ((Ra_ABS(x ¥Ra_MINUS y)) ¥Ra_TIMES Recip(Ra_ABS(x ¥Ra_TIMES y))) (x ¥Ra_TIMES y)-->Stat2(Stat14*) ==> (x ¥Ra_TIMES y) /= Ra_0 (x ¥Ra_TIMES y)-->T536(Stat14*) ==> Recip(Ra_ABS(x ¥Ra_TIMES y)) = Ra_ABS(Recip(x ¥Ra_TIMES y)) (x ¥Ra_TIMES y)-->T462(Stat14*) ==> Recip(x ¥Ra_TIMES y) in Ra (x ¥Ra_MINUS y,Recip(x ¥Ra_TIMES y))-->T530(Stat14*) ==> (Ra_ABS(x ¥Ra_MINUS y) ¥Ra_TIMES Ra_ABS(Recip(x ¥Ra_TIMES y))) = Ra_ABS((x ¥Ra_MINUS y) ¥Ra_TIMES Recip(x ¥Ra_TIMES y)) EQUAL(Stat14) ==> Stat16: ((Ra_ABS(x ¥Ra_MINUS y)) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_GE Ra_ABS((x ¥Ra_MINUS y) ¥Ra_TIMES Recip(x ¥Ra_TIMES y)) Use_def(¥Ra_OVER)(Stat16*) ==> ((Ra_ABS(x ¥Ra_MINUS y)) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_GE Ra_ABS((x ¥Ra_MINUS y) ¥Ra_OVER (x ¥Ra_TIMES y)) y-->T462(Stat1,Stat11*) ==> Stat17: Recip(y) in Ra x-->T462(Stat1,Stat11*) ==> Stat18: Recip(x) in Ra (y,x)-->T535(Stat1,Stat11*) ==> (Recip(y) ¥Ra_MINUS Recip(x)) = ((x ¥Ra_MINUS y) ¥Ra_OVER (y ¥Ra_TIMES x)) ALGEBRA(Stat1,Stat17,Stat18*) ==> Stat19: ((y ¥Ra_TIMES x) = (x ¥Ra_TIMES y)) & ((Recip(y) ¥Ra_MINUS Recip(x)) in Ra) EQUAL(Stat11) ==> Stat20: ((Ra_ABS(x ¥Ra_MINUS y)) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_GE Ra_ABS(Recip(y) ¥Ra_MINUS Recip(x)) (Ra_ABS(Recip(y) ¥Ra_MINUS Recip(x)),((Ra_ABS(x ¥Ra_MINUS y)) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))))-->T473(Stat20*) ==> Stat21: Ra_ABS(Recip(y) ¥Ra_MINUS Recip(x)) ¥Ra_LE ((Ra_ABS(x ¥Ra_MINUS y)) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) -- -- Since the absolute value of a difference equals the absolute value of the difference -- with arguments interchanged, we can discharge the pending assumption and so complete -- the present proof. -- (Recip(x),Recip(y))-->T537(Stat17,Stat18*) ==> Stat22: Ra_ABS(Recip(x) ¥Ra_MINUS Recip(y)) = Ra_ABS(Recip(y) ¥Ra_MINUS Recip(x)) EQUAL(Stat21,Stat22,Stat1) ==> false; Discharge ==> QED -- -- -- ************************************************************************************************ -- Section 14: Real numbers -- ************************************************************************************************ -- Def 46: [The set of rational sequences] RaSeq := {f: f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} Def 47: [The constant 0 rational sequence] Ra0Seq := Za ¥PROD {Ra_0} Def 48: [The constant 1 rational sequence] Ra1Seq := Za ¥PROD {Ra_1} Def 49: [Pointwise sum of rational sequences] Def(X ¥Ras_PLUS Y) := {[car(p),cdr(p) ¥Ra_PLUS (Y~[car(p)])]: p in X} Def 50: [Pointwise additive inverse of rational sequence] Ras_Rev(X) := {[car(p),Ra_Rev(cdr(p))]: p in X} Def 51: [Pointwise absolute value of rational sequence] Ras_ABS(X) := {[car(p),Ra_ABS(cdr(p))]: p in X} Def 52: [Pointwise difference of rational sequences] Def(X ¥Ras_MINUS Y) := X ¥Ras_PLUS Ras_Rev(Y) Def 53: [Product of rational sequences] Def(X ¥Ras_TIMES Y) := {[car(p),cdr(p) ¥Ra_TIMES (Y~[car(p)])]: p in X} -- Def 54: [Pointwise reciprocal of rational sequence] Ras_Recip(X) := {[#{j: j in i | (X~[j]) /= Ra_0}, Recip(X~[i])]: i in Za | (X~[i]) /= Ra_0} Def 54: [Pointwise reciprocal of rational sequence] Ras_Recip(X) := shifted_seq({[i, Recip(X~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | (X~[i]) /= Ra_0)})) Def 55: [Pointwise quotient of rational sequences] Def(X ¥Ras_OVER Y) := X ¥Ras_TIMES Ras_Recip(Y) Def 56: [Rational Cauchy sequences] RaCauchy := {f: f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} Def 57: [Equivalence of rational sequences] Ra_eqseq(F,G) := (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(F) | Ra_ABS((F~[x]) ¥Ra_MINUS (G~[x])) ¥Ra_GT eps})) -- -- It is obvious that every Rational Cauchy sequence is a rational sequence -- Theorem 539: [Every Rational Cauchy sequence is a rational sequence] RaCauchy ¥incin RaSeq. Proof: Suppose_not ==> Stat1: not(RaCauchy ¥incin RaSeq) f-->Stat1 ==> (f in RaCauchy) & (f notin RaSeq) Use_def(RaCauchy) ==> Stat2: f in {g in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps }))} ()-->Stat2 ==> f in RaSeq; Discharge ==> QED -- -- Moreover, the range of a rational sequence is plainly included in the set of rationals; -- its domain is the set of integers, and each of its image elements is a rational. -- Theorem 540: [The range of a rational sequence is included in the set of rationals] (F in RaSeq) ¥imp ((domain(F) = Za) & Svm(F) & (range(F) ¥incin Ra) & ((X in Za) ¥imp (F~[X] in Ra))). Proof: Suppose_not(f,x) ==> AUTO Use_def(RaSeq) ==> Stat1: f in {g ¥incin (Za ¥PROD Ra) | (domain(g) = Za) & Svm(g)} ()-->Stat1 ==> (f ¥incin (Za ¥PROD Ra)) & Svm(f) & (domain(f) = Za) (f,Za,Ra)-->T141 ==> (range(f) ¥incin Ra) & (x in Za) & (f~[x] notin Ra) -- -- For, assuming $f,x$ to be a counterexample, we are led to a contradiction as follows. -- From Theorem 141, we immediately get that the only conclusion of the theorem's assertion -- which can be false is the implication $((x in Za) ¥imp (f~[x] in Ra))$. -- However, the only remaining possibility is discarded immediately thanks to Theorem 71. -- (x,f)-->T71(*) ==> false; Discharge ==> QED -- -- -- Theorem 541: [Reformulation of condition for sequence equivalence] ({F,G} ¥incin RaSeq) ¥imp (Ra_eqseq(F,G) ¥eq (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((F~[x]) ¥Ra_MINUS (G~[x])) ¥Ra_GT eps}))). Proof: Suppose_not(f,g) ==> AUTO Use_def(Ra_eqseq) ==> Ra_eqseq(f,g) ¥eq (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(f) | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps})) f-->T540 ==> domain(f) = Za EQUAL ==> false; Discharge ==> QED -- Theorem 542: [Condition for rational sequence equality] (FORALL n in Za | ((F in RaSeq) & (G in RaSeq) & (F~[n] = G~[n]))) ¥imp (F = G). Proof: Suppose_not(f,g) ==> AUTO T212(*) ==> Za /= 0 Suppose ==> Stat1: not(FORALL h in RaSeq | ((domain(h) = Za) & Svm(h))) h--> Stat1 ==> (h in RaSeq) & (not((domain(h) = Za) & Svm(h))) Use_def(RaSeq) ==> Stat2: h in {f: f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} f1-->Stat2 ==> (h = f1) & (domain(f1) = Za) & Svm(f1) EQUAL ==> false; Discharge ==> (FORALL h in RaSeq | ((domain(h) = Za) & Svm(h))) (Za,RaSeq)-->T338(*) ==> false; Discharge ==> QED -- -- THEORY pointwiseU(fp,h,d,r,uop(X)) Svm(fp) & (domain(fp) = d) & (range(fp) ¥incin r) (FORALL x in r | uop(x) in r) h = {[car(p),uop(cdr(p))]: p in fp} END pointwiseU -- ENTER_THEORY pointwiseU -- Theorem pointwiseU.1: h = {[u,uop(fp~[u])]: u in d}. Proof: Suppose_not ==> h /= {[u,uop(fp~[u])]: u in d} Assump ==> h = {[car(p),uop(cdr(p))]: p in fp} ELEM ==> {[car(p),uop(cdr(p))]: p in fp} /= {[u,uop(fp~[u])]: u in d} Assump ==> Svm(fp) & (domain(fp) = d) & (range(fp) ¥incin r) fp-->T72 ==> fp = {[w,fp~[w]]: w in domain(fp)} EQUAL ==> {[car(p),uop(cdr(p))]: p in fp} = {[car(p),uop(cdr(p))]: p in {[w,fp~[w]]: w in d}} SIMPLF ==> Stat1: {[car([w,fp~[w]]),uop(cdr([w,fp~[w]]))]: w in d} /= {[u,uop(fp~[u])]: u in d} c-->Stat1 ==> (c in {[car([w,fp~[w]]),uop(cdr([w,fp~[w]]))]: w in d}) ¥eq (c notin {[u,uop(fp~[u])]: u in d}) Suppose ==> Stat2: (c in {[car([w,fp~[w]]),uop(cdr([w,fp~[w]]))]: w in d}) & (c notin {[u,uop(fp~[u])]: u in d}) (w,w)-->Stat2(Stat2) ==> false; Discharge ==> Stat3: (c in {[u,uop(fp~[u])]: u in d}) & (c notin {[car([w,fp~[w]]),uop(cdr([w,fp~[w]]))]: w in d}) (u,u)-->Stat3(Stat3) ==> fail; Discharge ==> QED -- Theorem pointwiseU.2: Svm(h) & (domain(h) = d) & (range(h) ¥incin r). Proof: Suppose_not ==> (not Svm(h)) or (domain(h) /= d) or (not(range(h) ¥incin r)) TpointwiseU.1 ==> h = {[u,uop(fp~[u])]: u in d} APPLY() fcn_symbol(f(u)->uop(fp~[u]), g->h, s->d) ==> (domain(h) = d) & (range(h) = {uop(fp~[u]): u in d}) & Svm(h) ELEM ==> Stat1: not({uop(fp~[u]): u in d} ¥incin r) c-->Stat1 ==> Stat2: (c in {uop(fp~[u]): u in d}) & (c notin r) x-->Stat2 ==> (x in d) & (c = uop(fp~[x])) Assump ==> Svm(fp) & (domain(fp) = d) & (range(fp) ¥incin r) fp-->T72 ==> fp = {[w,fp~[w]]: w in domain(fp)} TELEM ==> range({[w,fp~[w]]: w in domain(fp)}) = {fp~[w]: w in domain(fp)} EQUAL ==> range(fp) = {fp~[w]: w in domain(fp)} EQUAL ==> Stat3: range(fp) = {fp~[w]: w in d} Suppose ==> Stat4: fp~[x] notin range(fp) (Stat3,Stat4)ELEM ==> Stat5: fp~[x] notin {fp~[w]: w in d} x-->Stat5 ==> false; Discharge ==> fp~[x] in r Assump ==> Stat6: (FORALL x in r | uop(x) in r) (fp~[x])-->Stat6 ==> false; Discharge ==> QED -- Theorem pointwiseU.3: (FORALL x in d | h~[x] = uop(fp~[x])). Proof: Suppose_not ==> Stat1: AUTO x-->Stat1 ==> (x in d) & (h~[x] /= uop(fp~[x])) TpointwiseU.1 ==> h = {[u,uop(fp~[u])]: u in d} APPLY() fcn_symbol(f(x)->uop(fp~[x]),g->h,s->d) ==> Stat2: (FORALL x | h~[x] = if x in d then uop(fp~[x]) else 0 end if) x-->Stat2 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY pointwiseU -- --THEORY pointwiseU(fp,h,d,r,uop(X)) -- Svm(fp) & (domain(fp) = d) & (range(fp) ¥incin r) -- (FORALL x in r, y in r | bop(x,y) in r) -- h = {[car(p),uop(cdr(p))]: p in fp} --==> -- h = {[u,uop(fp~[u])]: u in d} -- Svm(h) & (domain(h) = d) & (range(h) ¥incin r) -- (FORALL x in d | h~[x] = uop(fp~[x])) --END pointwiseU -- -- THEORY pointwise(fq,fp,h,d,r,bop(X,Y)) Svm(fq) & (domain(fq) = d) & (range(fq) ¥incin r) Svm(fp) & (domain(fp) = d) & (range(fp) ¥incin r) (FORALL x in r, y in r | bop(x,y) in r) h = {[car(p),bop(cdr(p),fp~[car(p)])]: p in fq} END pointwise -- ENTER_THEORY pointwise -- Theorem pointwise.1: h = {[u,bop(fq~[u],fp~[u])]: u in d}. Proof: Suppose_not ==> h /= {[u,bop(fq~[u],fp~[u])]: u in d} Assump ==> h = {[car(p),bop(cdr(p),fp~[car(p)])]: p in fq} ELEM ==> {[car(p),bop(cdr(p),fp~[car(p)])]: p in fq} /= {[u,bop(fq~[u],fp~[u])]: u in d} Assump ==> Svm(fq) & (domain(fq) = d) & (range(fq) ¥incin r) fq-->T72 ==> fq = {[w,fq~[w]]: w in domain(fq)} EQUAL ==> {[car(p),bop(cdr(p),fp~[car(p)])]: p in fq} = {[car(p),bop(cdr(p),fp~[car(p)])]: p in {[w,fq~[w]]: w in d}} SIMPLF ==> Stat1: {[car([w,fq~[w]]),bop(cdr([w,fq~[w]]),fp~[car([w,fq~[w]])])]: w in d} /= {[u,bop(fq~[u],fp~[u])]: u in d} c-->Stat1 ==> (c in {[car([w,fq~[w]]),bop(cdr([w,fq~[w]]),fp~[car([w,fq~[w]])])]: w in d}) ¥eq (c notin {[u,bop(fq~[u],fp~[u])]: u in d}) Suppose ==> Stat2: (c in {[car([w,fq~[w]]),bop(cdr([w,fq~[w]]),fp~[car([w,fq~[w]])])]: w in d}) & (c notin {[u,bop(fq~[u],fp~[u])]: u in d}) (w,w)-->Stat2(Stat2) ==> false; Discharge ==> Stat3: (c in {[u,bop(fq~[u],fp~[u])]: u in d}) & (c notin {[car([w,fq~[w]]),bop(cdr([w,fq~[w]]),fp~[car([w,fq~[w]])])]: w in d}) (u,u)-->Stat3(Stat3) ==> fail; Discharge ==> QED -- Theorem pointwise.2: Svm(h) & (domain(h) = d) & (range(h) ¥incin r). Proof: Suppose_not ==> (not Svm(h)) or (domain(h) /= d) or (not(range(h) ¥incin r)) Tpointwise.1 ==> h = {[u,bop(fq~[u],fp~[u])]: u in d} APPLY() fcn_symbol(f(u)->bop(fq~[u],fp~[u]), g->h, s->d) ==> (domain(h) = d) & (range(h) = {bop(fq~[u],fp~[u]): u in d}) & Svm(h) ELEM ==> Stat1: not({bop(fq~[u],fp~[u]): u in d} ¥incin r) c-->Stat1 ==> Stat2: (c in {bop(fq~[u],fp~[u]): u in d}) & (c notin r) x-->Stat2 ==> (x in d) & (c = bop(fq~[x],fp~[x])) Assump ==> Svm(fq) & (domain(fq) = d) & (range(fq) ¥incin r) Assump ==> Svm(fp) & (domain(fp) = d) & (range(fp) ¥incin r) fq-->T72 ==> fq = {[w,fq~[w]]: w in domain(fq)} TELEM ==> range({[w,fq~[w]]: w in domain(fq)}) = {fq~[w]: w in domain(fq)} EQUAL ==> range(fq) = {fq~[w]: w in domain(fq)} fp-->T72 ==> fp = {[w,fp~[w]]: w in domain(fp)} TELEM ==> range({[w,fp~[w]]: w in domain(fp)}) = {fp~[w]: w in domain(fp)} EQUAL ==> range(fp) = {fp~[w]: w in domain(fp)} EQUAL ==> Stat3: range(fq) = {fq~[w]: w in d} EQUAL ==> Stat4: range(fp) = {fp~[w]: w in d} Suppose ==> Stat5: fq~[x] notin range(fq) (Stat3,Stat5)ELEM ==> Stat6: fq~[x] notin {fq~[w]: w in d} x-->Stat6 ==> false; Discharge ==> fq~[x] in r Suppose ==> Stat7: fp~[x] notin range(fp) (Stat4,Stat7)ELEM ==> Stat8: fp~[x] notin {fp~[w]: w in d} x-->Stat8 ==> false; Discharge ==> fp~[x] in r Assump ==> Stat9: (FORALL x in r, y in r | bop(x,y) in r) (fq~[x],fp~[x])-->Stat9 ==> false; Discharge ==> QED -- Theorem pointwise.3: (FORALL x in d | h~[x] = bop(fq~[x],fp~[x])). Proof: Suppose_not ==> Stat1: AUTO x-->Stat1 ==> (x in d) & (h~[x] /= bop(fq~[x],fp~[x])) Tpointwise.1 ==> h = {[u,bop(fq~[u],fp~[u])]: u in d} APPLY() fcn_symbol(f(x)->bop(fq~[x],fp~[x]),g->h,s->d) ==> Stat2: (FORALL x | h~[x] = if x in d then bop(fq~[x],fp~[x]) else 0 end if) x-->Stat2 ==> false; Discharge ==> QED -- ENTER_THEORY Set_theory -- --DISPLAY pointwise -- --THEORY pointwise(f,fp,h,d,r,bop(X,Y)) -- Svm(f) & (domain(f) = d) & (range(f) ¥incin r) -- Svm(fp) & (domain(fp) = d) & (range(fp) ¥incin r) -- (FORALL x in r, y in r | bop(x,y) in r) -- h = {[car(p),bop(cdr(p),fp~[car(p)])]: p in f} --==> -- h = {[u,bop(f~[u],fp~[u])]: u in d} -- Svm(h) & (domain(h) = d) & (range(h) ¥incin r) -- (FORALL x in d | h~[x] = bop(f~[x],fp~[x])) --END pointwise -- -- We begin by proving that every constant sequence whose image belongs -- to the rationals is a Cauchy sequence. -- Theorem 543: (X in Ra) ¥imp ((Za ¥PROD {X}) in RaCauchy). Proof: Suppose_not(x2) ==> (x2 in Ra) & ((Za ¥PROD {x2}) notin RaCauchy) Use_def(RaCauchy) ==> Stat1: (Za ¥PROD {x2}) notin {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} Use_def(¥PROD) ==> Za ¥PROD {x2} = {[yy,x]: yy in Za, x in {x2}} SIMPLF ==> (Za ¥PROD {x2}) = {[yy,x2]: yy in Za} APPLY() fcn_symbol(f(yy)->x2, g->(Za ¥PROD {x2}), s->Za) ==> (domain(Za ¥PROD {x2}) = Za) & Svm(Za ¥PROD {x2}) & Stat2: (FORALL yy | ((Za ¥PROD {x2})~[yy]) = if yy in Za then x2 else 0 end if) Suppose ==> (Za ¥PROD {x2}) notin RaSeq (Za,Za,{x2},Ra)-->T256 ==> (Za ¥PROD {x2}) ¥incin (Za ¥PROD Ra) Use_def(RaSeq) ==> Stat3: (Za ¥PROD {x2}) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} ()-->Stat3 ==> false; Discharge ==> (Za ¥PROD {x2}) in RaSeq ()-->Stat1 ==> Stat4: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS(((Za ¥PROD {x2})~[i]) ¥Ra_MINUS ((Za ¥PROD {x2})~[j])) ¥Ra_GT eps }))) eps-->Stat4 ==> (eps in Ra) & (eps ¥Ra_GT Ra_0) & (not Finite({ i * j : i in Za, j in Za | Ra_ABS(((Za ¥PROD {x2})~[i]) ¥Ra_MINUS ((Za ¥PROD {x2})~[j])) ¥Ra_GT eps })) T188 ==> Finite(0) EQUAL ==> Stat5: 0 /= { i * j : i in Za, j in Za | Ra_ABS(((Za ¥PROD {x2})~[i]) ¥Ra_MINUS ((Za ¥PROD {x2})~[j])) ¥Ra_GT eps } (i,j)-->Stat5 ==> Stat6: (i in Za) & (j in Za) & (Ra_ABS(((Za ¥PROD {x2})~[i]) ¥Ra_MINUS ((Za ¥PROD {x2})~[j])) ¥Ra_GT eps) i-->Stat2 ==> ((Za ¥PROD {x2})~[i]) = x2 j-->Stat2 ==> ((Za ¥PROD {x2})~[j]) = x2 ALGEBRA ==> ((x2 ¥Ra_MINUS x2) = Ra_0) & (Ra_0 in Ra) T465 ==> Ra_is_nonneg(Ra_0) T525 ==> Stat7: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) Ra_0-->Stat7 ==> Ra_ABS(Ra_0) = Ra_0 EQUAL(Stat6) ==> Ra_0 ¥Ra_GT eps (Ra_0,eps)-->T473 ==> (Ra_0 ¥Ra_GE eps) & (Ra_0 /= eps) (eps,Ra_0)-->T473 ==> eps ¥Ra_GE Ra_0 (eps,Ra_0)-->T495 ==> false; Discharge ==> QED -- -- -- Theorem 544: (X in Ra) ¥imp (Ras_ABS(Za ¥PROD {X}) = (Za ¥PROD {Ra_ABS(X)})). Proof: Suppose_not(y0) ==> AUTO y0-->T543(*) ==> Stat1: Ras_ABS(Za ¥PROD {y0}) /= (Za ¥PROD {Ra_ABS(y0)}) Use_def(¥PROD)(Stat1*) ==> Ras_ABS(Za ¥PROD {y0}) /= {[x,y]: x in Za, y in {Ra_ABS(y0)}} SIMPLF(Stat1*) ==> Ras_ABS(Za ¥PROD {y0}) /= {[x,Ra_ABS(y0)]: x in Za} Use_def(Ras_ABS)(Stat1*) ==> Stat2: {[x,Ra_ABS(y0)]: x in Za} /= {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})} c-->Stat2(Stat2*) ==> (c in {[x,Ra_ABS(y0)]: x in Za}) ¥eq (c notin {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})}) Suppose ==> Stat3: (c in {[x,Ra_ABS(y0)]: x in Za}) & (c notin {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})}) (k,[k,y0])-->Stat3(Stat3*) ==> (k in Za) & (([k,Ra_ABS(y0)] /= [car([k,y0]),Ra_ABS(cdr([k,y0]))]) or ([k,y0] notin (Za ¥PROD {y0}))) (k,y0)-->T9(*) ==> (car([k,y0]) = k) & (cdr([k,y0]) = y0) EQUAL(Stat3) ==> Stat4: ([k,Ra_ABS(y0)] /= [k,Ra_ABS(y0)]) or ([k,y0] notin (Za ¥PROD {y0})) (Stat4*)ELEM ==> Stat5: [k,y0] notin (Za ¥PROD {y0}) Use_def(¥PROD)(Stat5*) ==> Stat6: [k,y0] notin {[x,y]: x in Za, y in {y0}} (k,y0)-->Stat6(Stat3*) ==> false; Discharge ==> Stat7: (c in {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})}) & (c notin {[x,Ra_ABS(y0)]: x in Za}) (q,car(q))-->Stat7(Stat7*) ==> Stat8: (q in (Za ¥PROD {y0})) & (([car(q),Ra_ABS(cdr(q))] /= [car(q),Ra_ABS(y0)]) or (car(q) notin Za)) Use_def(¥PROD)(Stat8*) ==> Stat9: q in {[x,y]: x in Za, y in {y0}} SIMPLF(Stat9*) ==> Stat10: q in {[x,y0]: x in Za} h-->Stat10(Stat10*) ==> (h in Za) & (q = [h,y0]) (h,y0)-->T9(*) ==> (car([h,y0]) = h) & (cdr([h,y0]) = y0) EQUAL(Stat8) ==> ([h,Ra_ABS(y0)] /= [h,Ra_ABS(y0)]) or (h notin Za) (Stat10*)Discharge ==> QED -- -- As a corollary of Theorem 543, the sequence which has constant value $Ra_0$, -- and the one which has constant value $Ra_1$, are Cauchy sequences. -- Theorem 545: {Ra0Seq,Ra1Seq} ¥incin RaCauchy. Proof: Suppose_not ==> AUTO Use_def(Ra0Seq) ==> Ra0Seq = (Za ¥PROD {Ra_0}) Use_def(Ra1Seq) ==> Ra1Seq = (Za ¥PROD {Ra_1}) ALGEBRA ==> (Ra_0 in Ra) & (Ra_1 in Ra) Ra_0-->T543(*) ==> (Za ¥PROD {Ra_0}) in RaCauchy Ra_1-->T543(*) ==> false; Discharge ==> QED -- -- Every sequence of rational numbers is equivalent to itself: -- Theorem 546: (F in RaSeq) ¥imp ((domain(F) = Za) & Svm(F) & (range(F) ¥incin Ra) & Ra_eqseq(F,F)). Proof: Suppose_not(f) ==> AUTO (f,0)-->T540(*) ==> (range(f) ¥incin Ra) & (not Ra_eqseq(f,f)) Use_def(Ra_eqseq) ==> Stat1: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(f) | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps}))) e-->Stat1 ==> (e in Ra) & (e ¥Ra_GT Ra_0) & (not Finite({x : x in domain(f) | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT e})) TELEM ==> Finite(0) (Stat1)ELEM ==> Stat2: {x : x in domain(f) | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT e} /= 0 x-->Stat2 ==> (x in domain(f)) & (Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT e) (Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])),e)-->T473 ==> Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GE e (x,f)-->T71 ==> Stat3: (f~[x]) in Ra ALGEBRA(Stat3) ==> Stat4: (((f~[x]) ¥Ra_MINUS (f~[x])) = Ra_0) & (Ra_0 in Ra) T465 ==> Ra_is_nonneg(Ra_0) EQUAL(Stat4) ==> Ra_is_nonneg((f~[x]) ¥Ra_MINUS (f~[x])) T525 ==> Stat5: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) ((f~[x]) ¥Ra_MINUS (f~[x]))-->Stat5 ==> Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])) = Ra_0 (Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])), e, Ra_0)-->T510 ==> Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT Ra_0 -- Use_def(¥Ra_GT) ==> false; Discharge ==> QED (Ra_ABS((f~[x]) ¥Ra_MINUS (f~[x])),Ra_0)-->T473 ==> false; Discharge ==> QED -- Theorem 547: ((F in RaSeq) & (N in Za) & (I in Za)) ¥imp ((shifted_seq(F,N)~[I]) = (F~[N ¥PLUS I])). Proof: Suppose_not(h,n,i) ==> AUTO h-->T546(*) ==> (domain(h) = Za) & Svm(h) & (range(h) ¥incin Ra) Use_def(shifted_seq)(*) ==> Stat1: ((h @ Shift(n))~[i]) /= (h~[n ¥PLUS i]) (n,i)-->T339(*) ==> Svm(Shift(n)) & (domain(Shift(n)) = Za) & (range(Shift(n)) ¥incin Za) & ((Shift(n)~[i]) = (n ¥PLUS i)) (h,Shift(n),i)-->T129(*) ==> ((h @ Shift(n))~[i]) = (h~[Shift(n)~[i]]) EQUAL(Stat1) ==> false; Discharge ==> QED -- -- The image of any unsigned integer via $Ras0Seq$ is $Ra_0$; -- the image of any unsigned integer via $Ras1Seq$ is $Ra_1$. -- Theorem 548: (U in Za) ¥imp (((Ra0Seq~[U]) = Ra_0) & ((Ra1Seq~[U]) = Ra_1)). Proof: Suppose_not(u) ==> AUTO T545(*) ==> (Ra0Seq in RaCauchy) & (Ra1Seq in RaCauchy) T539(*) ==> Stat1: (Ra0Seq in RaSeq) & (Ra1Seq in RaSeq) Use_def(Ra0Seq) ==> Stat2: Ra0Seq = (Za ¥PROD {Ra_0}) Use_def(Ra1Seq) ==> Ra1Seq = (Za ¥PROD {Ra_1}) Use_def(¥PROD)(Stat2) ==> (Ra0Seq = {[x,y]: x in Za, y in {Ra_0}}) & (Ra1Seq = {[x,y]: x in Za, y in {Ra_1}}) Suppose ==> Stat3: [u,Ra_0] notin {[x,y]: x in Za, y in {Ra_0}} (u,Ra_0)-->Stat3(*) ==> false; Discharge ==> Stat4: [u,Ra_0] in Ra0Seq Suppose ==> Stat5: [u,Ra_1] notin {[x,y]: x in Za, y in {Ra_1}} (u,Ra_1)-->Stat5(*) ==> false; Discharge ==> Stat6: [u,Ra_1] in Ra1Seq Ra0Seq-->T546(Stat1,Stat1*) ==> Stat7: Svm(Ra0Seq) Ra1Seq-->T546(Stat1,Stat1*) ==> Stat8: Svm(Ra1Seq) (Ra0Seq,[u,Ra_0])-->T74(Stat4,Stat7*) ==> (Ra0Seq~[car([u,Ra_0])]) = cdr([u,Ra_0]) (Ra1Seq,[u,Ra_1])-->T74(Stat6,Stat8*) ==> (Ra1Seq~[car([u,Ra_1])]) = cdr([u,Ra_1]) (u,Ra_0)-->T9(Stat9*) ==> Stat9: (car([u,Ra_0]) = u) & (cdr([u,Ra_0]) = Ra_0) (u,Ra_0)-->T9(Stat10*) ==> Stat10: (car([u,Ra_1]) = u) & (cdr([u,Ra_1]) = Ra_1) EQUAL ==> false; Discharge ==> QED -- -- More generally, in the case of a rational Cauchy sequence $f$, -- every infinite subsequence $g$ of $f$ is a rational Cauchy sequence equivalent to $f$. -- Theorem 549: ((F in RaCauchy) & (G in Subseqs(F)) & (not Finite(G))) ¥imp ((G in RaCauchy) & Ra_eqseq(F,G)). Proof+: Suppose_not(f,g) ==> AUTO Use_def(RaCauchy) ==> Stat1: f in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat1(Stat1*) ==> (f in RaSeq) & Stat2: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps })) Use_def(RaSeq) ==> Stat3: f in {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} ()-->Stat3(Stat3*) ==> (f ¥incin (Za ¥PROD Ra)) & (domain(f) = Za) & Svm(f) Use_def(next(Za)) ==> AUTO APPLY(h_thryvar:h) subseq(g->g,f->f) ==> Stat4: (g = (f @ h)) & one_1_map(h) & (domain(h) in next(Za)) & (range(h) ¥incin domain(f)) & (g ¥incin (domain(f) ¥PROD range(f))) & Svm(g) & (domain(g) in (next(Za) * next(domain(f)))) & ({i in domain(h) | (i ¥nincin (h~[i]))} = 0) & Stat5: (FORALL i in domain(h), j in domain(h) | (i in j) ¥imp ((h~[i]) in (h~[j]))) Use_def(one_1_map) ==> Svm(h) (f,Za,Ra)-->T141(*) ==> (domain(f) ¥incin Za) & (range(f) ¥incin Ra) (domain(f), Za, range(f), Ra)-->T256(*) ==> g ¥incin (Za ¥PROD Ra) Suppose ==> (domain(g) /= Za) or (domain(h) /= Za) (f,h)-->T95(*) ==> domain(f @ h) = domain(h) EQUAL ==> (domain(g) in next(Za)) & (domain(g) = domain(h)) Use_def(next) ==> domain(g) in Za g-->T174(*) ==> (#domain(g) = #g) & Finite(#domain(g)) EQUAL ==> Finite(#g) g-->T193(*) ==> false; Discharge ==> Stat6: (domain(g) = Za) & (domain(h) = Za) Suppose ==> g notin RaCauchy Use_def(RaCauchy) ==> Stat7: g notin {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat7(*) ==> (g notin RaSeq) or (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps }))) Suppose ==> g notin RaSeq Use_def(RaSeq) ==> Stat8: g notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} ()-->Stat8(*) ==> false; Discharge ==> Stat9: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps }))) eps0-->Stat9(*) ==> (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })) eps0-->Stat2(*) ==> Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0 }) (h, { i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })-->T58(*) ==> one_1_map(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })) Suppose ==> domain(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })) /= { i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 } (h, { i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })-->T94 ==> Stat10: not({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 } ¥incin Za) c-->Stat10 ==> Stat11: (c in { i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 }) & (c notin Za) (ip, jp)-->Stat11(Stat11*) ==> (ip in Za) & (jp in Za) & ((ip * jp) notin Za) (ip,jp)-->T366(*) ==> false; Discharge ==> domain(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })) = { i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 } Suppose ==> Stat12: not(range(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })) ¥incin { i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0 }) d-->Stat12(Stat12*) ==> (d in range(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 }))) & (d notin { i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0 }) (h, { i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })-->T123(*) ==> Stat13: d in ({h~[x]: x in domain(h) | x in { i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 }}) iq-->Stat13(Stat6*) ==> Stat14: (iq in Za) & (iq in { i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 }) & ((h~[iq]) notin { i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0 }) (i0, j0, h~[i0], h~[j0])-->Stat14(Stat14*) ==> Stat15: (i0 in Za) & (j0 in Za) & (iq = (i0 * j0)) & (Ra_ABS((g~[i0]) ¥Ra_MINUS (g~[j0])) ¥Ra_GT eps0) & (((h~[iq]) /= (h~[i0]) * (h~[j0])) or ((h~[i0]) notin Za) or ((h~[j0]) notin Za) or (not(Ra_ABS((f~[h~[i0]]) ¥Ra_MINUS (f~[h~[j0]])) ¥Ra_GT eps0))) (f,h,i0)-->T129(*) ==> ((f @ h)~[i0]) = (f~[h~[i0]]) (f,h,j0)-->T129(*) ==> ((f @ h)~[j0]) = (f~[h~[j0]]) EQUAL ==> Ra_ABS((f~[h~[i0]]) ¥Ra_MINUS (f~[h~[j0]])) ¥Ra_GT eps0 (i0, h)-->T71(Stat3*) ==> (h~[i0]) in Za (j0, h)-->T71(Stat3*) ==> (h~[j0]) in Za EQUAL ==> (h~[i0 * j0]) /= (h~[i0]) * (h~[j0]) T206(*) ==> Ord(Za) Suppose ==> i0 = j0 (Stat14*)ELEM ==> (i0 * j0) = i0 EQUAL ==> false; Discharge ==> i0 /= j0 (i0, j0)-->T31(Stat14*) ==> (i0 in j0) or (j0 in i0) Suppose ==> Stat16: i0 in j0 (j0, i0)-->T13(Stat14*) ==> (i0 * j0) = i0 (i0, j0)-->Stat5(Stat6,Stat15,Stat16*) ==> (h~[i0]) in (h~[j0]) --?? (i0, j0)-->Stat5(Stat6*) ==> (h~[i0]) in (h~[j0]) (h~[j0], h~[i0])-->T13(Stat14*) ==> ((h~[i0]) * (h~[j0])) = (h~[i0]) EQUAL ==> false; Discharge ==> Stat17: j0 in i0 (i0, j0)-->T13(Stat14*) ==> (i0 * j0) = j0 (j0, i0)-->Stat5(Stat6,Stat15,Stat17*) ==> (h~[j0]) in (h~[i0]) (h~[i0], h~[j0])-->T13(Stat14*) ==> ((h~[i0]) * (h~[j0])) = (h~[j0]) EQUAL ==> false; Discharge ==> range(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })) ¥incin { i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0 } ({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0 }, range(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 })))-->T189(*) ==> Finite(range(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 }))) (h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 }))-->T191(*) ==> Finite(domain(h ¥ON ({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps0 }))) EQUAL ==> false; Discharge ==> not Ra_eqseq(f,g) Use_def(Ra_eqseq) ==> Stat18: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(f) | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps})) eps1-->Stat18(Stat18*) ==> (eps1 in Ra) & (eps1 ¥Ra_GT Ra_0) & (not Finite({x in domain(f) | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1})) Suppose ==> Finite({x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[h~[x]])) ¥Ra_GT eps1}) EQUAL ==> Stat19: {x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[h~[x]])) ¥Ra_GT eps1} /= {x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS ((f @ h)~[x])) ¥Ra_GT eps1} xp-->Stat19(Stat19*) ==> (xp in Za) & (not((Ra_ABS((f~[xp]) ¥Ra_MINUS (f~[h~[xp]])) ¥Ra_GT eps1) ¥eq (Ra_ABS((f~[xp]) ¥Ra_MINUS ((f @ h)~[xp])) ¥Ra_GT eps1))) (f,h,xp)-->T129(*) ==> ((f @ h)~[xp]) = (f~[h~ [xp]]) EQUAL ==> false; Discharge ==> not Finite({x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[h~[x]])) ¥Ra_GT eps1}) eps1-->Stat2(*) ==> Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps1 }) ({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps1 }, {x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[h~[x]])) ¥Ra_GT eps1})-->T189(*) ==> Stat20: not ({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps1 } incs {x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[h~[x]])) ¥Ra_GT eps1}) i1-->Stat20(*) ==> Stat21: (i1 in {x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (f~[h~[x]])) ¥Ra_GT eps1}) & (i1 notin { i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps1 }) (i1, h~[i1])-->Stat21(Stat3*) ==> Stat22: (i1 in Za) & (((i1 * (h~[i1])) /= i1) or ((h~[i1]) notin Za)) (i1, h)-->T71(Stat3*) ==> Stat23: (i1 * (h~[i1])) /= i1 (Stat4*)ELEM ==> Stat24: i1 notin {i in domain(h) | i ¥nincin (h~[i])} ()-->Stat24(Stat6,Stat23,Stat22*) ==> false; Discharge ==> QED -- -- It follows immediately from Theorem 539 and Theorem 540 that every Cauchy sequence, -- applied to an element of $Za$, returns an element of $Ra$. -- Theorem 550: (F in RaCauchy) ¥imp ((H in Za) ¥imp (F~[H] in Ra)). Proof: Suppose_not(f,h) ==> AUTO T539(*) ==> f in RaSeq (f,h)-->T540 ==> false; Discharge ==> QED -- -- For every Cauchy sequence $f$, there is a subscript $k$ past which the -- distance between any two images $f~[i],f~[j]$ is no larger than any fixed -- positive rational. -- Theorem 551: ((Eps in Ra) & (Eps ¥Ra_GT Ra_0) & (F in RaCauchy)) ¥imp (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (Ra_ABS((F~[i]) ¥Ra_MINUS (F~[j]))) ¥Ra_GT Eps))). Proof+: Suppose_not(eps,f) ==> AUTO Use_def(RaCauchy) ==> Stat1: (f in {g: g in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps }))}) & (eps in Ra) & (eps ¥Ra_GT Ra_0) & Stat2: (not(EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (Ra_ABS((F~[i]) ¥Ra_MINUS (F~[j]))) ¥Ra_GT eps)))) g-->Stat1(Stat1*) ==> (f = g) & (g in RaSeq) & (FORALL eps1 in Ra | (eps1 ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j])) ¥Ra_GT eps1 })) EQUAL ==> Stat3: (FORALL eps1 in Ra | (eps1 ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps1 })) eps-->Stat3(Stat1*) ==> Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }) APPLY() cauchyseq_lemma2(R(i,j)->(Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps)) ==> Stat4: (EXISTS k in Za | (FORALL i in Za, j in Za | (((i incs k) & (j incs k)) ¥imp (not(Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps))))) k-->Stat4(Stat4*) ==> (k in Za) & Stat5: (FORALL i in Za, j in Za | ((i incs k) & (j incs k)) ¥imp (not(Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps))) k-->Stat2(Stat4*) ==> Stat6: not (FORALL i in Za, j in Za | (((i notin k) & (j notin k)) ¥imp (not (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))) ¥Ra_GT eps))) (i,j)-->Stat6(Stat6*) ==> Stat7: (i in Za) & (j in Za) & (i notin k) & (j notin k) & (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps) (i,j)-->Stat5(Stat3*) ==> ((i incs k) & (j incs k)) ¥imp (not(Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps)) (Stat7*)ELEM ==> (not((i incs k) & (j incs k))) T206(*) ==> Ord(Za) & Ord(i) & Ord(j) & Ord(k) (k,i)-->T35(*) ==> (i incs k) (k,j)-->T35(*) ==> false; Discharge ==> QED -- -- It is easily seen that the preceding assertion can be reformulated to assert that -- there is a subscript $k$ past which the -- distance between any two images $f~[i],f~[j]$ is smaller than any fixed -- positive rational. -- Theorem 552: ((Eps in Ra) & (Eps ¥Ra_GT Ra_0) & (F in RaCauchy)) ¥imp (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (Eps ¥Ra_GT (Ra_ABS((F~[i]) ¥Ra_MINUS (F~[j])))) )). Proof: Suppose_not(eps,f) ==> (f in RaCauchy) & (eps in Ra) & (eps ¥Ra_GT Ra_0) & Stat1: (not(EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (eps ¥Ra_GT (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])))) ))) eps-->T523 ==> Stat2: (EXISTS eps0 in Ra | ((eps ¥Ra_GT eps0) & (eps0 ¥Ra_GT Ra_0))) eps0-->Stat2 ==> (eps0 in Ra) & (eps ¥Ra_GT eps0) & (eps0 ¥Ra_GT Ra_0) (eps0,f)-->T551 ==> Stat3: (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0)))) k-->Stat3 ==> (k in Za) & Stat4: (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0))) k-->Stat1 ==> Stat5: not(FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (eps ¥Ra_GT (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))))) -- -- Thus we have a positive $eps0$ smaller than $eps$, and a $k$ such that $Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))$ is no larger than $eps0$ -- if $i$ and $j$ are both larger than $k$. -- (i,j)-->Stat5 ==> (i in Za) & (j in Za) & (i notin k) & (j notin k) & (not(eps ¥Ra_GT (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))))) (i,j)-->Stat4 ==> not(Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps0) T539(*) ==> f in RaSeq (f,i)-->T540 ==> f~[i] in Ra (f,j)-->T540 ==> f~[j] in Ra ALGEBRA ==> (f~[i]) ¥Ra_MINUS (f~[j]) in Ra ((f~[i]) ¥Ra_MINUS (f~[j]))-->T527 ==> Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) in Ra (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])),eps0)-->T476 ==> (eps0 ¥Ra_GT Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))) or (eps0 = Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))) (eps0,Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])))-->T474 ==> eps0 ¥Ra_GE (Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))) (eps,eps0,Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])))-->T497 ==> eps ¥Ra_GT Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) Discharge ==> QED -- -- In preparation for proving that the relation $Ra_eqseq(F,G)$ between rational sequences -- is an equivalence relation, we now establish the following assertion, involving a hybrid -- of transitivity and symmetry: -- Theorem 553: (({F,G,H} ¥incin RaSeq) & Ra_eqseq(F,G) & Ra_eqseq(G,H)) ¥imp Ra_eqseq(H,F). Proof: Suppose_not(f,g,k) ==> AUTO -- -- For, assuming $f,g,k$ to be a counterexample to our -- conclusion, we can derive a contradiction from the fact that the set -- ${x : x in domain(k) | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps}$ -- can be infinite for some positive value of $eps$, unlike the corresponding -- sets which have $f,g$ and $g,k$ in place of $k,f$ respectively. -- Use_def(Ra_eqseq) ==> (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(f) | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps})) & (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(g) | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps})) & (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(k) | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps}))) -- -- Noting that $f,g,k$ have $Za$ as their common domain, -- and have all of their images in $Ra$, we can restate -- our hypothesis more simply. -- f-->T546 ==> (domain(f) = Za) & Svm(f) g-->T546 ==> (domain(g) = Za) & Svm(g) k-->T546 ==> (domain(k) = Za) & Svm(k) EQUAL ==> Stat1: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps})) & Stat2: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps})) & Stat3: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps}))) -- -- Let $eps0$ be a positive value for $eps$ which makes the set -- indicated above infinite; moreover, let $eps1,eps2$ be smaller -- positive values whose addition is smaller than $eps0$ (e.g., -- one could take $eps1=eps2$ to be one half or one third of $eps0$). -- We have assumed the finiteness of the two sets -- ${x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}$, -- ${x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}$. -- eps0-->Stat3 ==> (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0})) eps0-->T522 ==> Stat4: (EXISTS e in Ra, e0 in Ra | (eps0 ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (e ¥Ra_PLUS e0))) (eps1,eps2)-->Stat4 ==> (eps1 in Ra) & (eps2 in Ra) & (eps0 ¥Ra_GT eps1) & (eps1 ¥Ra_GT eps2) & (eps2 ¥Ra_GT Ra_0) & (eps1 ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (eps1 ¥Ra_PLUS eps2)) eps1-->Stat1 ==> Finite({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}) eps2-->Stat2 ==> Finite({x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) -- -- Due to the inequality -- $Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_LE (Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_PLUS Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])))$, -- it turns out that the set -- ${x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}$ -- is included in the union of the two sets -- ${x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}$, -- ${x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}$, -- both of which must be finite, in consequence of the assumptions made. -- Suppose ==> Stat5: not({x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0} ¥incin ({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1} + {x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2})) x-->Stat5 ==> Stat6: (x in {x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}) & Stat7: (x notin {x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}) & Stat8: (x notin {x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) ()-->Stat6 ==> (x in Za) & (Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0) (f,x)-->T540 ==> f~[x] in Ra (g,x)-->T540 ==> g~[x] in Ra (k,x)-->T540 ==> k~[x] in Ra ()-->Stat7 ==> not(Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1) ()-->Stat8 ==> not(Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2) ALGEBRA ==> (((f~[x]) ¥Ra_MINUS (g~[x])) in Ra) & (((g~[x]) ¥Ra_MINUS (k~[x])) in Ra) & (((f~[x]) ¥Ra_MINUS (k~[x])) in Ra) & (((k~[x]) ¥Ra_MINUS (f~[x])) in Ra) & ((eps1 ¥Ra_PLUS eps2) in Ra) ((f~[x]) ¥Ra_MINUS (g~[x]))-->T527 ==> Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) in Ra ((g~[x]) ¥Ra_MINUS (k~[x]))-->T527 ==> Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) in Ra ((k~[x]) ¥Ra_MINUS (f~[x]))-->T527 ==> Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) in Ra ALGEBRA ==> (Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_PLUS Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x]))) in Ra (Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])), eps1)-->T473 ==> (eps1 ¥Ra_GE Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x]))) (Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])), eps2)-->T473 ==> (eps2 ¥Ra_GE Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x]))) T525 ==> Stat9: (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (Ra_ABS((x ¥Ra_PLUS Ra_Rev(z))) ¥Ra_LE (Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)) ¥Ra_PLUS Ra_ABS(y ¥Ra_PLUS Ra_Rev(z))))) & Stat10: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_Rev(x ¥Ra_PLUS Ra_Rev(y)) = (y ¥Ra_PLUS Ra_Rev(x)))) & Stat11: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) (f~[x], g~[x], k~[x])-->Stat9 ==> Ra_ABS((f~[x]) ¥Ra_PLUS Ra_Rev(k~[x])) ¥Ra_LE (Ra_ABS((f~[x]) ¥Ra_PLUS Ra_Rev(g~[x])) ¥Ra_PLUS Ra_ABS((g~[x]) ¥Ra_PLUS Ra_Rev(k~[x]))) (f~[x], k~[x])-->Stat10 ==> Ra_Rev((f~[x]) ¥Ra_PLUS Ra_Rev(k~[x])) = ((k~[x]) ¥Ra_PLUS Ra_Rev(f~[x])) Use_def(¥Ra_MINUS) ==> ((f~[x]) ¥Ra_PLUS Ra_Rev(k~[x])) in Ra ((f~[x]) ¥Ra_PLUS Ra_Rev(k~[x]))-->Stat11 ==> Ra_ABS(Ra_Rev((f~[x]) ¥Ra_PLUS Ra_Rev(k~[x]))) = Ra_ABS((f~[x]) ¥Ra_PLUS Ra_Rev(k~[x])) Use_def(¥Ra_MINUS) ==> (((f~[x]) ¥Ra_PLUS Ra_Rev(k~[x])) = ((f~[x]) ¥Ra_MINUS (k~[x]))) & (((f~[x]) ¥Ra_PLUS Ra_Rev(g~[x])) = ((f~[x]) ¥Ra_MINUS (g~[x]))) & (((g~[x]) ¥Ra_PLUS Ra_Rev(k~[x])) = ((g~[x]) ¥Ra_MINUS (k~[x]))) & (((k~[x]) ¥Ra_PLUS Ra_Rev(f~[x])) = ((k~[x]) ¥Ra_MINUS (f~[x]))) EQUAL ==> Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_LE (Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_PLUS Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x]))) (Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])), Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_PLUS Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])))-->T473 ==> (Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_PLUS Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x]))) ¥Ra_GE Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) (eps1, Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])), eps2, Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])))-->T493 ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GE (Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_PLUS Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x]))) (eps1 ¥Ra_PLUS eps2, Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_PLUS Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])), Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])))-->T508 ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GE (Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x]))) (eps0, eps1 ¥Ra_PLUS eps2, Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])))-->T509 ==> eps0 ¥Ra_GT (Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x]))) (Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])), eps0)-->T473 ==> (Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GE eps0) (eps0, Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])), eps0)-->T509 ==> eps0 ¥Ra_GT eps0 (eps0,eps0)-->T473 ==> false; Discharge ==> {x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0} ¥incin ({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1} + {x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) TELEM ==> Svm({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}) & (range({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}) = {x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}) & (domain({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}) = {x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}) & Svm({x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) & (range({x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) = {x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) & (domain({x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) = {x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) ({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1})-->T192 ==> Finite({x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}) ({x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2})-->T192 ==> Finite({x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) -- -- Accordingly, since the sets -- ${x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}$, -- ${x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}$ -- have the same cardinality, they must both be finite, which contradicts -- our assumption that the former of them is infinite. This contradiction -- leads to the desired conclusion. -- ({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1}, {x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2})-->T236 ==> Finite({x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1} + {x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}) ({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps1} + {x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (k~[x])) ¥Ra_GT eps2}, {x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0})-->T189 ==> Finite({x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}) TELEM ==> Svm({x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}) & (domain({x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}) = {x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}) & (range({x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}) = {x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}) ({x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0})-->T192 ==> Finite({x : x in Za | Ra_ABS((k~[x]) ¥Ra_MINUS (f~[x])) ¥Ra_GT eps0}) Discharge ==> QED -- -- To prepare for showing that the set of rational Cauchy sequences is closed -- under the pointwise algebraic operations introduced above, we prove that -- these operations map rational sequences to rational sequences. -- Theorem 554: ({F,G} ¥incin RaSeq) ¥imp (((F ¥Ras_PLUS G) in RaSeq) & (Ras_ABS(G) in RaSeq) & (Ras_Rev(G) in RaSeq) & ((F ¥Ras_TIMES G) in RaSeq) & ((F ¥Ras_PLUS G) = {[u,((F~[u]) ¥Ra_PLUS (G~[u]))]: u in Za}) & (Ras_ABS(G) = {[u,Ra_ABS(G~[u])]: u in Za}) & (Ras_Rev(G) = {[u,Ra_Rev(G~[u])]: u in Za}) & ((F ¥Ras_TIMES G) = {[u,((F~[u]) ¥Ra_TIMES (G~[u]))]: u in Za})). Proof: Suppose_not(fq,fp) ==> AUTO -- -- Reasoning by contradiction, assume that $fq,fp$ form a counterexample -- to the desired statement. -- fq-->T546(*) ==> Stat1: (domain(fq) = Za) & Svm(fq) & (range(fq) ¥incin Ra) fp-->T546(*) ==> Stat2: (domain(fp) = Za) & Svm(fp) & (range(fp) ¥incin Ra) Use_def(¥Ras_PLUS) ==> (fq ¥Ras_PLUS fp) = {[car(p),cdr(p) ¥Ra_PLUS (fp~[car(p)])]: p in fq} Use_def(Ras_ABS(fp)) ==> AUTO Use_def(Ras_Rev(fp)) ==> AUTO Use_def(¥Ras_TIMES) ==> (fq ¥Ras_TIMES fp) = {[car(p),cdr(p) ¥Ra_TIMES (fp~[car(p)])]: p in fq} -- -- After unfolding the definitions which are directly involved, -- we recall that $Ra$ is closed under addition, multiplication, sign inversion, -- and absolute value operation. This allows us to invoke the THEORY 'pointwise' -- ('pointwiseU' in the monadic case) for each one of these four operations, -- thereby leading to the desired contradiction. -- Suppose ==> Stat3: not(FORALL x in Ra, y in Ra | (x ¥Ra_PLUS y) in Ra) (x1,y1)-->Stat3 ==> Stat4: (x1 in Ra) & (y1 in Ra) & ((x1 ¥Ra_PLUS y1) notin Ra) ALGEBRA(Stat4) ==> (x1 ¥Ra_PLUS y1) in Ra; Discharge ==> AUTO Suppose ==> Stat5: not(FORALL x in Ra, y in Ra | (x ¥Ra_TIMES y) in Ra) (x2,y2)-->Stat5 ==> Stat6: (x2 in Ra) & (y2 in Ra) & ((x2 ¥Ra_TIMES y2) notin Ra) ALGEBRA(Stat6) ==> (x2 ¥Ra_TIMES y2) in Ra; Discharge ==> AUTO Suppose ==> Stat7: not(FORALL x in Ra | Ra_ABS(x) in Ra) x3-->Stat7 ==> (x3 in Ra) & (Ra_ABS(x3) notin Ra) x3-->T527 ==> false; Discharge ==> AUTO Suppose ==> Stat8: not(FORALL x in Ra | Ra_Rev(x) in Ra) x4-->Stat8 ==> Stat9: (x4 in Ra) & (Ra_Rev(x4) notin Ra) ALGEBRA(Stat9) ==> Ra_Rev(x4) in Ra; Discharge ==> AUTO APPLY() pointwise(fq->fq,fp->fp,h->(fq ¥Ras_PLUS fp),d->Za,r->Ra,bop(x,y)->(x ¥Ra_PLUS y)) ==> Stat10: ((fq ¥Ras_PLUS fp) = {[u,((fq~[u]) ¥Ra_PLUS (fp~[u]))]: u in Za}) & Svm(fq ¥Ras_PLUS fp) & (domain(fq ¥Ras_PLUS fp) = Za) & (range(fq ¥Ras_PLUS fp) ¥incin Ra) APPLY() pointwise(fq->fq,fp->fp,h->(fq ¥Ras_TIMES fp),d->Za,r->Ra,bop(x,y)->(x ¥Ra_TIMES y)) ==> Stat11: ((fq ¥Ras_TIMES fp) = {[u,((fq~[u]) ¥Ra_TIMES (fp~[u]))]: u in Za}) & Svm(fq ¥Ras_TIMES fp) & (domain(fq ¥Ras_TIMES fp) = Za) & (range(fq ¥Ras_TIMES fp) ¥incin Ra) APPLY() pointwiseU(fp->fp,h->Ras_ABS(fp),d->Za,r->Ra,uop(x)->Ra_ABS(x)) ==> Stat12: (Ras_ABS(fp) = {[u,Ra_ABS(fp~[u])]: u in Za}) & Svm(Ras_ABS(fp)) & (domain(Ras_ABS(fp)) = Za) & (range(Ras_ABS(fp)) ¥incin Ra) APPLY() pointwiseU(fp->fp,h->Ras_Rev(fp),d->Za,r->Ra,uop(x)->Ra_Rev(x)) ==> Stat13: (Ras_Rev(fp) = {[u,Ra_Rev(fp~[u])]: u in Za}) & Svm(Ras_Rev(fp)) & (domain(Ras_Rev(fp)) = Za) & (range(Ras_Rev(fp)) ¥incin Ra) Use_def(RaSeq) ==> ((fq ¥Ras_PLUS fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) or ((fq ¥Ras_TIMES fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) or (Ras_ABS(fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) or (Ras_Rev(fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) Suppose ==> Stat14: Ras_ABS(fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} Use_def(Svm(Ras_ABS(fp))) ==> AUTO (Ras_ABS(fp),Za,Ra)-->T141(Stat12*) ==> Ras_ABS(fp) ¥incin (Za ¥PROD Ra) ()-->Stat14(Stat12*) ==> false; Discharge ==> ((fq ¥Ras_PLUS fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) or ((fq ¥Ras_TIMES fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) or (Ras_Rev(fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) Suppose ==> Stat15: ((fq ¥Ras_TIMES fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) Use_def(Svm(fq ¥Ras_TIMES fp)) ==> AUTO (fq ¥Ras_TIMES fp,Za,Ra)-->T141(Stat11*) ==> (fq ¥Ras_TIMES fp) ¥incin (Za ¥PROD Ra) ()-->Stat15(Stat11*) ==> false; Discharge ==> ((fq ¥Ras_PLUS fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) or (Ras_Rev(fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) Suppose ==> Stat16: ((fq ¥Ras_PLUS fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)}) Use_def(Svm(fq ¥Ras_PLUS fp)) ==> AUTO (fq ¥Ras_PLUS fp,Za,Ra)-->T141(Stat10*) ==> (fq ¥Ras_PLUS fp) ¥incin (Za ¥PROD Ra) ()-->Stat16(Stat10*) ==> false; Discharge ==> Stat17: Ras_Rev(fp) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} Use_def(Svm(Ras_Rev(fp))) ==> AUTO (Ras_Rev(fp),Za,Ra)-->T141(Stat13*) ==> Ras_Rev(fp) ¥incin (Za ¥PROD Ra) ()-->Stat17(Stat13*) ==> false; Discharge ==> QED -- -- It will often be convenient to use the following simplified (and partly repeated) consequences of the preceding result. -- Theorem 555: (({F1,G1} ¥incin RaSeq) & (N in Za)) ¥imp ((F1~[N] in Ra) & (G1~[N] in Ra) & ((F1 ¥Ras_PLUS G1 in RaSeq) & ((F1 ¥Ras_PLUS G1)~[N] = (F1~[N]) ¥Ra_PLUS (G1~[N]))) & (((Ras_ABS(G1) in RaSeq) & (Ras_ABS(G1)~[N] = Ra_ABS(G1~[N])))) & (((Ras_Rev(G1) in RaSeq) & (Ras_Rev(G1)~[N] = Ra_Rev(G1~[N])))) & (((F1 ¥Ras_TIMES G1 in RaSeq) & (F1 ¥Ras_TIMES G1)~[N] = ((F1~[N]) ¥Ra_TIMES (G1~[N]))))). Proof: Suppose_not(f1,g1,n) ==> AUTO ELEM ==> Stat1: n in Za (f1,n)-->T540(*) ==> (f1~[n]) in Ra (g1,n)-->T540(*) ==> (g1~[n]) in Ra (f1,g1)-->T554(*) ==> ((f1 ¥Ras_PLUS g1) in RaSeq) & (Ras_ABS(g1) in RaSeq) & (Ras_Rev(g1) in RaSeq) & ((f1 ¥Ras_TIMES g1) in RaSeq) & ((f1 ¥Ras_PLUS g1) = {[n,((f1~[n]) ¥Ra_PLUS (g1~[n]))]: n in Za}) & (Ras_ABS(g1) = {[n,Ra_ABS(g1~[n])]: n in Za}) & (Ras_Rev(g1) = {[n,Ra_Rev(g1~[n])]: n in Za}) & ((f1 ¥Ras_TIMES g1) = {[n,((f1~[n]) ¥Ra_TIMES (g1~[n]))]: n in Za}) APPLY() fcn_symbol(f(x)->((f1~[x]) ¥Ra_PLUS (g1~[x])),g->f1 ¥Ras_PLUS g1,s->Za) ==> Stat2: (FORALL x | (x in Za) ¥imp (((f1 ¥Ras_PLUS g1)~[x]) = ((f1~[x]) ¥Ra_PLUS (g1~[x])))) APPLY() fcn_symbol(f(x)->Ra_ABS(g1~[x]),g->Ras_ABS(g1),s->Za) ==> Stat3: (FORALL x | (x in Za) ¥imp ((Ras_ABS(g1)~[x]) = Ra_ABS(g1~[x]))) APPLY() fcn_symbol(f(x)->Ra_Rev(g1~[x]),g->Ras_Rev(g1),s->Za) ==> Stat4: (FORALL x | (x in Za) ¥imp ((Ras_Rev(g1)~[x]) = Ra_Rev(g1~[x]))) APPLY() fcn_symbol(f(x)->((f1~[x]) ¥Ra_TIMES (g1~[x])),g->f1 ¥Ras_TIMES g1,s->Za) ==> Stat5: (FORALL x | (x in Za) ¥imp (((f1 ¥Ras_TIMES g1)~[x]) = ((f1~[x]) ¥Ra_TIMES (g1~[x])))) -- n-->Stat2(Stat1,Stat1*) ==> ((f1 ¥Ras_PLUS g1)~[n]) = ((f1~[n]) ¥Ra_PLUS (g1~[n])) n-->Stat3(Stat1,Stat1*) ==> (Ras_ABS(g1)~[n]) = Ra_ABS(g1~[n]) n-->Stat4(Stat1,Stat1*) ==> (Ras_Rev(g1)~[n]) = Ra_Rev(g1~[n]) n-->Stat5(Stat1,Stat1*) ==> ((f1 ¥Ras_TIMES g1)~[n]) = ((f1~[n]) ¥Ra_TIMES (g1~[n])); Discharge ==> QED -- -- We prove next that the set of rational Cauchy sequences is closed -- under the pointwise algebraic operations introduced above. -- Theorem 556: ({F,G} ¥incin RaCauchy) ¥imp (((F ¥Ras_PLUS G) in RaCauchy) & (Ras_ABS(F) in RaCauchy) & (Ras_Rev(F) in RaCauchy)). Proof: Suppose_not(fq,fp) ==> AUTO -- -- For suppose that $fq,fp$ form a counterexample to our assertion. -- Use_def(RaCauchy) ==> Stat1: (fq in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat2: (fp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) ()-->Stat1(Stat1*) ==> Stat3: (fq in RaSeq) & Stat4: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps })) ()-->Stat2(Stat1*) ==> Stat5: (fp in RaSeq) & Stat6: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps })) (fq,fp)-->T554(Stat1*) ==> Stat7: ((fq ¥Ras_PLUS fp) in RaSeq) (fq,fq)-->T554(Stat1*) ==> Stat8: (Ras_ABS(fq) in RaSeq) & (Ras_Rev(fq) in RaSeq) -- -- Using the definitions of the functions involved, -- and since, by the preceding theorem, our pointwise operations of rational -- sequences produce rational sequences, we can argue as follows: -- Suppose ==> (fq ¥Ras_PLUS fp) notin RaCauchy -- -- Assuming that $fq ¥Ras_PLUS fp$ is not a Cauchy sequence (unlike -- $fq$ and $fp$), there would exist a positive real $eps0$ for which -- the set -- ${ i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_PLUS fp)~[j])) ¥Ra_GT eps0 }$ -- is infinite, unlike the analogous sets which have $fq$ and $fp$, respectively, -- in place of $fq ¥Ras_PLUS fp$, and positive rationals $eps1$ and $eps2$ smaller than -- one half of $eps0$ in place of $eps0$. -- Use_def(RaCauchy) ==> Stat9: (fq ¥Ras_PLUS fp) notin {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat9 ==> Stat10: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_PLUS fp)~[j])) ¥Ra_GT eps })) eps0-->Stat10(Stat10) ==> Stat11: (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not( Finite({ i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_PLUS fp)~[j])) ¥Ra_GT eps0 }))) eps0-->T522 ==> Stat12: (EXISTS e in Ra, e0 in Ra | (eps0 ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (e ¥Ra_PLUS e0))) (eps1,eps2)-->Stat12 ==> Stat13: (eps1 in Ra) & (eps2 in Ra) & (eps2 ¥Ra_GT Ra_0) & (eps1 ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (eps1 ¥Ra_PLUS eps2)) eps1-->Stat4 ==> Finite({ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1 }) eps2-->Stat6 ==> Finite({ i * j : i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2 }) -- -- However, this assumption would lead to conflict with the inequality (holding for all $i,j$) -- $Ra_ABS((fq ¥Ras_PLUS fp)~[i] ¥Ra_MINUS (fq ¥Ras_PLUS fp)~[j]) ¥Ra_LE Ra_ABS((fq~[i] ¥Ra_MINUS fq~[j]) ¥Ras_PLUS (fp~[i] ¥Ra_MINUS fq~[j]))$. -- APPLY() setformer_meet_join(s->Za, t->Za, h(i,j)->(i*j), R(i,j)->(Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1), Q(i,j)->(Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2)) ==> {(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2)} = ({(i*j): i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1 } + {(i*j): i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2 }) ({ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1 }, { i * j : i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2 })-->T189 ==> Finite({(i*j): i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1 } + {(i*j): i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2 }) EQUAL ==> Finite({(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2)}) Suppose ==> Stat14: { i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_PLUS fp)~[j])) ¥Ra_GT eps0 } ¥nincin {(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2)} (i0,j0)-->Stat14 ==> Stat15: (i0 in Za) & (j0 in Za) & (Ra_ABS(((fq ¥Ras_PLUS fp)~[i0]) ¥Ra_MINUS ((fq ¥Ras_PLUS fp)~[j0])) ¥Ra_GT eps0) & (not(Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_GT eps1)) & (not(Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_GT eps2)) (fq,fp,i0)-->T555(Stat3,Stat5,Stat15*) ==> Stat16: (fq~[i0] in Ra) & (fp~[i0] in Ra) & (((fq ¥Ras_PLUS fp)~[i0]) = ((fq~[i0]) ¥Ra_PLUS (fp~[i0]))) (fq,fp,j0)-->T555(Stat3,Stat5,Stat15*) ==> (fq~[j0] in Ra) & (fp~[j0] in Ra) & (((fq ¥Ras_PLUS fp)~[j0]) = ((fq~[j0]) ¥Ra_PLUS (fp~[j0]))) EQUAL(Stat14) ==> Ra_ABS((((fq~[i0]) ¥Ra_PLUS (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_PLUS (fp~[j0])))) ¥Ra_GT eps0 ALGEBRA(Stat16) ==> (((fq~[i0]) ¥Ra_MINUS (fq~[j0])) in Ra) & (((fp~[i0]) ¥Ra_MINUS (fp~[j0])) in Ra) & (((((fq~[i0]) ¥Ra_PLUS (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_PLUS (fp~[j0])))) = (((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0])))) ((fq~[i0]) ¥Ra_MINUS (fq~[j0]))-->T527 ==> Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) in Ra ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))-->T527(Stat14) ==> Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) in Ra (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])), eps1)-->T473(Stat13*) ==> eps1 ¥Ra_GE Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), eps2)-->T473(Stat13*) ==> eps2 ¥Ra_GE Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ALGEBRA(Stat13,Stat13) ==> (eps1 ¥Ra_PLUS eps2) in Ra ALGEBRA(Stat16) ==> ((Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) in Ra) & ((((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) in Ra) (((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0])))-->T527(Stat14) ==> Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) in Ra (eps1, Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])), eps2, Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])))-->T493(Stat13*) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GE (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) T525(Stat14) ==> Stat17: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(x ¥Ra_PLUS y) ¥Ra_LE (Ra_ABS(x) ¥Ra_PLUS Ra_ABS(y)))) ((fq~[i0]) ¥Ra_MINUS (fq~[j0]), (fp~[i0]) ¥Ra_MINUS (fp~[j0]))-->Stat17(Stat14) ==> Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_LE (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) (Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))), (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))))-->T473(Stat14) ==> (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_GE Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) (eps1 ¥Ra_PLUS eps2, (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))), Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))))-->T508(Stat14) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GE Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) EQUAL(Stat15) ==> Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_GT eps0 ((Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))), Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))), eps0)-->T510(Stat11*) ==> ((Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])))) ¥Ra_GT eps0 (eps1 ¥Ra_PLUS eps2, (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))), eps0)-->T510(Stat11*) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GT eps0 (eps1 ¥Ra_PLUS eps2, eps0)-->T473(Stat11*) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GE eps0 (eps0, eps1 ¥Ra_PLUS eps2, eps0)-->T509(Stat11*) ==> eps0 ¥Ra_GT eps0 (eps0,eps0)-->T473(Stat11*) ==> false; Discharge ==> AUTO -- -- Since the inclusion just proves entails that the set on the left-hand side is finite, -- we have reached a contradiction, proving that the pointwise sum of rational Cauchy sequences -- is an alike sequence. -- ({(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2)}, { i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_PLUS fp)~[j])) ¥Ra_GT eps0 })-->T189(Stat11) ==> false; Discharge ==> (Ras_ABS(fq) notin RaCauchy) or (Ras_Rev(fq) notin RaCauchy) -- -- Assuming next that $Ras_ABS(fq)$ is not a Cauchy sequence (unlike $fq$), -- there would exist a positive real $eps3$ for which the set -- ${ i * j : i in Za, j in Za | Ra_ABS((Ras_ABS(fq)~[i]) ¥Ra_MINUS (Ras_ABS(fq)~[j])) ¥Ra_GT eps3 }$ -- is infinite, unlike the analogous set having $fq$ in place of $Ras_ABS(fq)$. -- However, this would lead to a conflict with the inequality (holding for all $i,j$) -- $Ra_ABS(Ras_ABS(fq)~[i] ¥Ra_MINUS Ras_ABS(fq)~[j]) ¥Ra_LE Ra_ABS(fq~[i] ¥Ra_MINUS fq~[j])$. -- Suppose ==> Ras_ABS(fq) notin RaCauchy Use_def(RaCauchy) ==> Stat18: Ras_ABS(fq) notin {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat18 ==> Stat19: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((Ras_ABS(fq)~[i]) ¥Ra_MINUS (Ras_ABS(fq)~[j])) ¥Ra_GT eps })) eps3-->Stat19 ==> (eps3 in Ra) & (eps3 ¥Ra_GT Ra_0) & (not Finite({ i * j : i in Za, j in Za | Ra_ABS((Ras_ABS(fq)~[i]) ¥Ra_MINUS (Ras_ABS(fq)~[j])) ¥Ra_GT eps3 })) eps3-->Stat4 ==> Finite({ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps3 }) -- -- Indeed, since -- ${ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps3 }$ -- is a superset of -- ${ i * j : i in Za, j in Za | Ra_ABS(Ra_ABS(fq~[i]) ¥Ra_MINUS Ra_ABS(fq~[j])) ¥Ra_GT eps3 }$, -- the latter cannot be infinite when the former is finite. -- Suppose ==> Stat20: not({ i * j : i in Za, j in Za | Ra_ABS((Ras_ABS(fq)~[i]) ¥Ra_MINUS (Ras_ABS(fq)~[j])) ¥Ra_GT eps3 } ¥incin { i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps3 }) (i1,j1)-->Stat20 ==> Stat21: (i1 in Za) & (j1 in Za) & (Ra_ABS((Ras_ABS(fq)~[i1]) ¥Ra_MINUS (Ras_ABS(fq)~[j1])) ¥Ra_GT eps3) & (not(Ra_ABS((fq~[i1]) ¥Ra_MINUS (fq~[j1])) ¥Ra_GT eps3)) (fq,fq,i1)-->T555(Stat3,Stat21*) ==> ((Ras_ABS(fq)~[i1]) = Ra_ABS(fq~[i1])) & (fq~[i1] in Ra) (fq,fq,j1)-->T555(Stat3,Stat21*) ==> ((Ras_ABS(fq)~[j1]) = Ra_ABS(fq~[j1])) & (fq~[j1] in Ra) EQUAL(Stat21) ==> Ra_ABS(Ra_ABS(fq~[i1]) ¥Ra_MINUS Ra_ABS(fq~[j1])) ¥Ra_GT eps3 (fq~[i1])-->T527 ==> Ra_ABS(fq~[i1]) in Ra (fq~[j1])-->T527 ==> Ra_ABS(fq~[j1]) in Ra ALGEBRA(Stat21) ==> (((fq~[i1]) ¥Ra_MINUS (fq~[j1])) in Ra) & ((Ra_ABS(fq~[i1]) ¥Ra_MINUS Ra_ABS(fq~[j1])) in Ra) ((fq~[i1]) ¥Ra_MINUS (fq~[j1]))-->T527 ==> Ra_ABS((fq~[i1]) ¥Ra_MINUS (fq~[j1])) in Ra (Ra_ABS(fq~[i1]) ¥Ra_MINUS Ra_ABS(fq~[j1]))-->T527 ==> Ra_ABS(Ra_ABS(fq~[i1]) ¥Ra_MINUS Ra_ABS(fq~[j1])) in Ra T525 ==> Stat22: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(Ra_ABS(x) ¥Ra_PLUS Ra_Rev(Ra_ABS(y))) ¥Ra_LE Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)))) (fq~[i1],fq~[j1])-->Stat22 ==> (Ra_ABS(Ra_ABS(fq~[i1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(fq~[j1]))) ¥Ra_LE Ra_ABS((fq~[i1]) ¥Ra_PLUS Ra_Rev(fq~[j1]))) Use_def(¥Ra_MINUS) ==> Ra_ABS(Ra_ABS(fq~[i1]) ¥Ra_MINUS Ra_ABS(fq~[j1])) ¥Ra_LE Ra_ABS((fq~[i1]) ¥Ra_MINUS (fq~[j1])) (Ra_ABS(Ra_ABS(fq~[i1]) ¥Ra_MINUS Ra_ABS(fq~[j1])), Ra_ABS((fq~[i1]) ¥Ra_MINUS (fq~[j1])))-->T473 ==> Ra_ABS((fq~[i1]) ¥Ra_MINUS (fq~[j1])) ¥Ra_GE Ra_ABS(Ra_ABS(fq~[i1]) ¥Ra_MINUS Ra_ABS(fq~[j1])) (Ra_ABS((fq~[i1]) ¥Ra_MINUS (fq~[j1])), Ra_ABS(Ra_ABS(fq~[i1]) ¥Ra_MINUS Ra_ABS(fq~[j1])), eps3)-->T510 ==> false; Discharge ==> { i * j : i in Za, j in Za | Ra_ABS((Ras_ABS(fq)~[i]) ¥Ra_MINUS (Ras_ABS(fq)~[j])) ¥Ra_GT eps3 } ¥incin { i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps3 } ({ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps3 }, {i * j : i in Za, j in Za | Ra_ABS((Ras_ABS(fq)~[i]) ¥Ra_MINUS (Ras_ABS(fq)~[j])) ¥Ra_GT eps3 })-->T189 ==> false; Discharge ==> Ras_Rev(fq) notin RaCauchy -- -- Third and last, let us assume that $Ras_Rev(fq)$ is not a Cauchy sequence -- (unlike $fq$). Then there would exist a positive real $eps4$ for which the set -- ${ i * j : i in Za, j in Za | Ra_ABS(Ras_Rev(fq)~[i] ¥Ra_MINUS Ras_Rev(fq)~[j]) ¥Ra_GT eps4 }$ -- is infinite, unlike the analogous set having $fq$ in place of $Ras_Rev(fq)$. -- However, this would lead to a conflict with the equality (holding for all $i,j$) -- $Ra_ABS(Ras_Rev(fq)~[i] ¥Ra_MINUS Ras_Rev(fq)~[j]) = Ra_ABS(fq~[i] ¥Ra_MINUS fq~[j])$. -- Use_def(RaCauchy) ==> Stat23: Ras_Rev(fq) notin {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat23 ==> Stat24: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((Ras_Rev(fq)~[i]) ¥Ra_MINUS (Ras_Rev(fq)~[j])) ¥Ra_GT eps })) eps4-->Stat24 ==> Stat25: (eps4 in Ra) & (eps4 ¥Ra_GT Ra_0) & (not Finite({ i * j : i in Za, j in Za | Ra_ABS((Ras_Rev(fq)~[i]) ¥Ra_MINUS (Ras_Rev(fq)~[j])) ¥Ra_GT eps4 })) eps4-->Stat4 ==> Finite({ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps4 }) EQUAL(Stat25) ==> Stat26: { i * j : i in Za, j in Za | Ra_ABS((Ras_Rev(fq)~[i]) ¥Ra_MINUS (Ras_Rev(fq)~[j])) ¥Ra_GT eps4 } /= { i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps4 } (i2,j2)-->Stat26 ==> Stat27: (i2 in Za) & (j2 in Za) & ((Ra_ABS((Ras_Rev(fq)~[i2]) ¥Ra_MINUS (Ras_Rev(fq)~[j2])) ¥Ra_GT eps4) ¥eq (not(Ra_ABS((fq~[i2]) ¥Ra_MINUS (fq~[j2])) ¥Ra_GT eps4))) (fq,fq,i2)-->T555(Stat3,Stat27*) ==> Stat28: ((Ras_Rev(fq)~[i2]) = Ra_Rev(fq~[i2])) & (fq~[i2] in Ra) (fq,fq,j2)-->T555(Stat3,Stat27*) ==> ((Ras_Rev(fq)~[j2]) = Ra_Rev(fq~[j2])) & (fq~[j2] in Ra) EQUAL(Stat26) ==> Stat29: ((Ra_ABS(Ra_Rev(fq~[i2]) ¥Ra_MINUS Ra_Rev(fq~[j2])) ¥Ra_GT eps4) ¥eq (not(Ra_ABS((fq~[i2]) ¥Ra_MINUS (fq~[j2])) ¥Ra_GT eps4))) Suppose ==> Ra_ABS(Ra_Rev(fq~[i2]) ¥Ra_MINUS Ra_Rev(fq~[j2])) /= Ra_ABS((fq~[i2]) ¥Ra_MINUS (fq~[j2])) ALGEBRA(Stat28) ==> (Ra_ABS(Ra_Rev(fq~[i2]) ¥Ra_MINUS Ra_Rev(fq~[j2])) = Ra_ABS(Ra_Rev(fq~[i2]) ¥Ra_PLUS Ra_Rev(Ra_Rev(fq~[j2])))) & (((fq~[j2]) ¥Ra_PLUS Ra_Rev(fq~[i2])) in Ra) & (((fq~[i2]) ¥Ra_PLUS Ra_Rev(fq~[j2])) = ((fq~[i2]) ¥Ra_MINUS (fq~[j2]))) & ((Ra_Rev(fq~[i2]) ¥Ra_MINUS Ra_Rev(fq~[j2])) = ((fq~[j2]) ¥Ra_PLUS Ra_Rev(fq~[i2]))) & (Ra_Rev((fq~[j2]) ¥Ra_PLUS Ra_Rev(fq~[i2])) = ((fq~[i2]) ¥Ra_MINUS (fq~[j2]))) T525 ==> Stat30: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) ((fq~[j2]) ¥Ra_PLUS Ra_Rev(fq~[i2]))-->Stat30 ==> Ra_ABS(Ra_Rev((fq~[j2]) ¥Ra_PLUS Ra_Rev(fq~[i2]))) = Ra_ABS((fq~[j2]) ¥Ra_PLUS Ra_Rev(fq~[i2])) EQUAL(Stat29) ==> false; Discharge ==> Stat31: Ra_ABS(Ra_Rev(fq~[i2]) ¥Ra_MINUS Ra_Rev(fq~[j2])) = Ra_ABS((fq~[i2]) ¥Ra_MINUS (fq~[j2])) Suppose ==> Ra_ABS(Ra_Rev(fq~[i2]) ¥Ra_MINUS Ra_Rev(fq~[j2])) ¥Ra_GT eps4 EQUAL(Stat31) ==> Ra_ABS((fq~[i2]) ¥Ra_MINUS (fq~[j2])) ¥Ra_GT eps4 (Stat29)Discharge ==> not(Ra_ABS(Ra_Rev(fq~[i2]) ¥Ra_MINUS Ra_Rev(fq~[j2])) ¥Ra_GT eps4) EQUAL(Stat31) ==> not(Ra_ABS((fq~[i2]) ¥Ra_MINUS (fq~[j2])) ¥Ra_GT eps4) (Stat29)Discharge ==> QED -- -- Every finite set of rationals has an upper bound. -- Theorem 557: ((S ¥incin Ra) & Finite(S)) ¥imp (EXISTS u in Ra | (FORALL y in S | u ¥Ra_GE y)). Proof: Suppose_not(s) ==> Stat1: (s ¥incin Ra) & Finite(s) & Stat2: (not(EXISTS u in Ra | (FORALL y in s | u ¥Ra_GE y))) -- -- For, assuming the contrary of our thesis to hold for a subset $s$ of $Ra$, it is trivial that -- $s$ is non-void (because $Ra$ is non-void). -- Suppose ==> s = 0 T451 ==> Ra_0 in Ra Ra_0--> Stat2 ==> Stat3: not(FORALL y in s | Ra_0 ¥Ra_GE y) y0-->Stat3 ==> false; Discharge ==> Stat4: s /= 0 s-->T0(Stat4*) ==> arb(s) in s -- -- But then, we can exploit one of the clauses of Theorem 515 to draw the desired contradiction. -- T515 ==> Stat5: (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin Ra)) ¥imp ((max_Ra(t) in t) & ((x = max_Ra(t)) or (x ¥Ra_LT max_Ra(t))))) (s,arb(s))-->Stat5(Stat1*) ==> max_Ra(s) in Ra (max_Ra(s))-->Stat2(Stat5*) ==> Stat6: not(FORALL y in s | max_Ra(s) ¥Ra_GE y) y1-->Stat6(Stat6*) ==> (y1 in s) & (not(max_Ra(s) ¥Ra_GE y1)) (s,y1)-->Stat5(Stat1*) ==> (y1 = max_Ra(s)) or (y1 ¥Ra_LT max_Ra(s)) (y1,max_Ra(s))-->T473(Stat6*) ==> (y1 = max_Ra(s)) or (max_Ra(s) ¥Ra_GT y1) (max_Ra(s),y1)-->T474(Stat1*) ==> false; Discharge ==> QED -- -- Theorem 557 has the following 'integer' analog, needed below. -- Theorem 558: [Every finite set of integers has a strict upper bound] ((S ¥incin Za) & Finite(S)) ¥imp (EXISTS u in Za | (FORALL y in S | y in u)). Proof+: -- -- For supposing that $s$ is a counterexample to the assertion we can easily see that all the members of $s$ must be -- integers and $s$ itself is finite, from which it follows that $(Un(s) + {Un(s)}) in Za$. -- Suppose_not(s) ==> (s ¥incin Za) & Finite(s) & Stat1: (not(EXISTS u in Za | (FORALL y in s | y in u))) Suppose ==> Stat2: not(FORALL x in s | Ord(x)) x1-->Stat2 ==> (x1 in Za) & (not Ord(x1)) ELEM ==> Ord(x1) Discharge ==> AUTO s-->T280 ==> Stat2a: Ord(Un(s)) Suppose ==> Stat3: not(FORALL x in s | Finite(x)) x2-->Stat3(Stat3*) ==> (x2 in s) & (not Finite(x2)) x2-->T206 ==> false Discharge ==> (FORALL x in s | Finite(x)) s-->T238 ==> Stat3a: Finite(Un(s)) (Un(s),Un(s))-->T199(Stat3a*) ==> Finite(Un(s) + {Un(s)}) (Un(s))-->T33(Stat2a*) ==> Ord(Un(s) + {Un(s)}) (Stat3a*)ELEM ==> (Un(s) + {Un(s)}) in Za -- -- Hence by our initial assumption there must exist a $y in s$ which is not in $Un(s) + {Un(s)}$. -- On the other hand $y$ is included in $s$ by definition of union, and since $y$ is not a member of $Un(s)$, while both -- $y$ and $Un(s)$ are ordinals, it follows that $Un(s)$ is included in $y$, so that $y = Un(s)$ and hence $y in {Un(s)}$, -- a contradiction which proves our theorem. -- (Un(s) + {Un(s)})-->Stat1 ==> Stat4: not(FORALL y in s | y in Un(s) + {Un(s)}) y-->Stat4 ==> (y in s) & (not(y in Un(s) + {Un(s)})) & (y in Za) & Ord(y) s-->T274 ==> Stat5: (FORALL x in s | x ¥incin Un(s)) y-->Stat5 ==> y ¥incin Un(s) (Un(s),y)-->T31(Stat2a*) ==> Un(s) in y (y,Un(s))-->T34 ==> false; Discharge ==> QED -- -- Every rational Cauchy sequence has an upper bound. -- Theorem 559: [Every rational Cauchy sequence has an upper bound] (F in RaCauchy) ¥imp (EXISTS x in Ra | (FORALL y in range(F) | y ¥Ra_LE x)). Proof+: Suppose_not(f) ==> (f in RaCauchy) & Stat1: (not(EXISTS x in Ra | (FORALL y in range(f) | y ¥Ra_LE x) )) -- -- For let $f$ be a counterexample to our assertion, i.e. a Cauchy sequence having no upper bound. -- Let $i0$ be an unsigned integer past which the distance between any two components of $f$ is -- always smaller than $Ra_1$. Since $i0$ is a finite set and $f$ a single-valued map, the range -- of $f$ on $i0$ must also be finite. -- T539(*) ==> Stat1a: f in RaSeq f-->T546 ==> Stat2: (domain(f) = Za) & Svm(f) & (range(f) ¥incin Ra) ALGEBRA ==> (Ra_1 in Ra) & (Ra_0 in Ra) T481 ==> Ra_1 ¥Ra_GT Ra_0 (Ra_1,f)-->T552 ==> Stat3: (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (Ra_1 ¥Ra_GT Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))) )) i0-->Stat3 ==> Stat3a: (i0 in Za) & Stat4: (FORALL i in Za, j in Za | ((i notin i0) & (j notin i0)) ¥imp (Ra_1 ¥Ra_GT Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j]))) ) T206 ==> Ord(Za) (Za,i0)-->T13 ==> (i0 ¥incin Za) & Finite(i0) (f,i0)-->T80 ==> Stat5: range(f ¥ON i0) ¥incin Ra (f,i0)-->T57 ==> Svm(f ¥ON i0) (f,i0)-->T94 ==> Stat6: domain(f ¥ON i0) = i0 EQUAL ==> Finite(domain(f ¥ON i0)) (f ¥ON i0)-->T192 ==> Stat7: Finite(range(f ¥ON i0)) (f,i0)-->T126 ==> Stat8: range(f ¥ON i0) = {f~[i]: i in domain(f ¥ON i0)} EQUAL(Stat6,Stat8) ==> Stat9: (range(f ¥ON i0) = {f~[i]: i in i0}) EQUAL(Stat7,Stat5,Stat9) ==> Stat10: Finite({f~[i]: i in i0}) & ({f~[i]: i in i0} ¥incin Ra) (f,f,i0)-->T555(Stat1a,Stat3a*) ==> Stat10a: f~[i0] in Ra ALGEBRA(Stat10a) ==> Stat12: (Ra_Rev(f~[i0]) in Ra) & ((f~[i0] ¥Ra_PLUS Ra_1) in Ra) & ((Ra_1 ¥Ra_PLUS (f~[i0])) in Ra) & (Ra_1 ¥Ra_PLUS (f~[i0]) = (f~[i0]) ¥Ra_PLUS Ra_1) (f~[i0] ¥Ra_PLUS Ra_1)-->T201(*) ==> Stat11: Finite({f~[i0] ¥Ra_PLUS Ra_1}) -- -- It is easily seen that $f~[i0] ¥Ra_PLUS Ra_1$ is an upper bound for the set $f~[j]$ of components of $f$ for which $j notin i0$. -- Indeed, let $j$ be a counterexample to this assertion, i.e. $j notin i0$ and $not((f~[i0] ¥Ra_PLUS Ra_1) ¥Ra_GT f~[j])$. -- But since $Ra_1 ¥Ra_GT ((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0]))$ we must have $f~[i0] ¥Ra_PLUS Ra_1 ¥Ra_GT f~[j]$, -- a contradiction proving our claim. -- Suppose ==> Stat13: (EXISTS j in Za | ((j notin i0) & (not(((f~[i0]) ¥Ra_PLUS Ra_1) ¥Ra_GT (f~[j]))))) j-->Stat13 ==> Stat14: (j in Za) & (j notin i0) & Stat15: (not(((f~[i0]) ¥Ra_PLUS Ra_1) ¥Ra_GT (f~[j]))) (j,i0)-->Stat4 ==> Ra_1 ¥Ra_GT Ra_ABS((f~[j]) ¥Ra_MINUS (f~[i0])) Use_def(¥Ra_MINUS) ==> Ra_1 ¥Ra_GT Ra_ABS((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])) j-->T71(Stat14,Stat2) ==> Stat16: f~[j] in Ra ALGEBRA(Stat10a,Stat16) ==> ((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])) in Ra ((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0]))-->T527 ==> Ra_ABS((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])) in Ra ((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0]))-->T527 ==> Ra_ABS((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])) ¥Ra_GE ((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])) (Ra_1,Ra_ABS((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])),((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])))-->T497 ==> Ra_1 ¥Ra_GT ((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])) (f~[i0],f~[i0])-->T474 ==> (f~[i0]) ¥Ra_GE (f~[i0]) (Ra_1,(f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0]),f~[i0],f~[i0])-->T505 ==> (Ra_1 ¥Ra_PLUS (f~[i0])) ¥Ra_GT (((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])) ¥Ra_PLUS (f~[i0])) ALGEBRA(Stat10a,Stat16) ==> ((((f~[j]) ¥Ra_PLUS Ra_Rev(f~[i0])) ¥Ra_PLUS (f~[i0])) = ((f~[j]) ¥Ra_PLUS (Ra_Rev(f~[i0]) ¥Ra_PLUS (f~[i0])))) & (Ra_Rev(f~[i0]) ¥Ra_PLUS (f~[i0]) = Ra_0) & ((f~[j]) ¥Ra_PLUS Ra_0 = (f~[j])) EQUAL(Stat12) ==> false; Discharge ==> Stat17: not (EXISTS j in Za | ((j notin i0) & (not(((f~[i0]) ¥Ra_PLUS Ra_1) ¥Ra_GT (f~[j]))))) -- -- By Theorem 557, the finite set -- ${f~[i]: i in i0} + {f~[i0] ¥Ra_PLUS Ra_1}$ of rationals has an upper bound $r$. -- ({f~[i]: i in i0},{f~[i0] ¥Ra_PLUS Ra_1})-->T236(Stat10,Stat11) ==> Finite({f~[i]: i in i0} + {f~[i0] ¥Ra_PLUS Ra_1}) ELEM ==> ({f~[i]: i in i0} + {f~[i0] ¥Ra_PLUS Ra_1}) ¥incin Ra ({f~[i]: i in i0} + {f~[i0] ¥Ra_PLUS Ra_1})-->T557 ==> Stat18: (EXISTS u in Ra | (FORALL y in ({f~[i]: i in i0} + {f~[i0] ¥Ra_PLUS Ra_1}) | u ¥Ra_GE y)) r-->Stat18 ==> Stat19: (r in Ra) & Stat20: (FORALL y in ({f~[i]: i in i0} + {f~[i0] ¥Ra_PLUS Ra_1}) | r ¥Ra_GE y) -- -- But it is easily seen that $r$ must also be an upper bound for the entire Cauchy sequence $f$, -- proving our theorem. -- ELEM ==> (f~[i0] ¥Ra_PLUS Ra_1) in {f~[i0] ¥Ra_PLUS Ra_1} (f~[i0] ¥Ra_PLUS Ra_1)-->Stat20 ==> Stat21: r ¥Ra_GE (f~[i0] ¥Ra_PLUS Ra_1) f-->T73 ==> range(f) = {f~[v]: v in domain(f)} EQUAL ==> range(f) = {f~[v]: v in Za} r-->Stat1 ==> Stat22: (r in Ra) & (not (FORALL y in range(f) | y ¥Ra_LE r)) EQUAL(Stat12) ==> not(FORALL y in {f~[v]: v in Za} | y ¥Ra_LE r) SIMPLF ==> Stat23: not (FORALL v in Za | f~[v] ¥Ra_LE r) k-->Stat23 ==> Stat24: (k in Za) & (not((f~[k]) ¥Ra_LE r)) (f~[k],r)-->T473(Stat24) ==> Stat25: not(r ¥Ra_GE (f~[k])) k-->T71(Stat2,Stat24) ==> Stat26: ((f~[k]) in Ra) & Stat27: ((f~[k]) in range(f)) (f~[k])-->Stat20 ==> Stat28: not((f~[k]) in {f~[i]: i in i0}) k-->Stat28 ==> k notin i0 k-->Stat17 ==> Stat29: ((f~[i0]) ¥Ra_PLUS Ra_1) ¥Ra_GT (f~[k]) ((f~[i0]) ¥Ra_PLUS Ra_1,f~[k])-->T474 ==> Stat30: ((f~[i0]) ¥Ra_PLUS Ra_1) ¥Ra_GE (f~[k]) (r,(f~[i0]) ¥Ra_PLUS Ra_1,f~[k])-->T508(Stat22,Stat12,Stat26,Stat30,Stat21) ==> Stat31: r ¥Ra_GE (f~[k]) (Stat25,Stat31*)Discharge ==> QED -- -- As an immediate corollary, every Cauchy sequence has an upper bound -- for the absolute values of its components. -- Theorem 560: (F in RaCauchy) ¥imp (EXISTS x in Ra | (FORALL y in range(F) | Ra_ABS(y) ¥Ra_LT x )). Proof: Suppose_not(f) ==> (f in RaCauchy) & Stat1: (not(EXISTS x in Ra | (FORALL y in range(f) | Ra_ABS(y) ¥Ra_LT x) )) T539(*) ==> f in RaSeq f-->T546 ==> (domain(f) = Za) & Svm(f) & (range(f) ¥incin Ra) (f,f)-->T556 ==> Ras_ABS(f) in RaCauchy (f,f)-->T554 ==> Ras_ABS(f) = {[u, Ra_ABS(f~[u])]: u in Za} (Ras_ABS(f))-->T559 ==> Stat2: (EXISTS x in Ra | (FORALL y in range(Ras_ABS(f)) | y ¥Ra_LE x )) c-->Stat2 ==> (c in Ra) & Stat3: (FORALL y in range(Ras_ABS(f)) | y ¥Ra_LE c ) ALGEBRA ==> (Ra_0 in Ra) & (Ra_1 in Ra) & ((c ¥Ra_PLUS Ra_1) in Ra) (c ¥Ra_PLUS Ra_1)-->Stat1 ==> Stat4: not(FORALL y in range(f) | Ra_ABS(y) ¥Ra_LT (c ¥Ra_PLUS Ra_1)) d-->Stat4 ==> (d in range(f)) & (not(Ra_ABS(d) ¥Ra_LT (c ¥Ra_PLUS Ra_1))) Suppose ==> Ra_ABS(d) notin range(Ras_ABS(f)) f-->T73 ==> Stat5: d in {f~[x]: x in domain(f)} a-->Stat5 ==> (d = f~[a]) & (a in Za) TELEM ==> range({[u, Ra_ABS(f~[u])]: u in Za}) = {Ra_ABS(f~[u]): u in Za} EQUAL ==> (range(Ras_ABS(f)) = {Ra_ABS(f~[u]): u in Za}) & (Ra_ABS(d) = Ra_ABS(f~[a])) ELEM ==> Stat6: Ra_ABS(d) notin {Ra_ABS(f~[u]): u in Za} a-->Stat6 ==> false; Discharge ==> Ra_ABS(d) in range(Ras_ABS(f)) (Ra_ABS(d))-->Stat3 ==> Ra_ABS(d) ¥Ra_LE c (Ra_ABS(d),c)-->T473 ==> c ¥Ra_GE Ra_ABS(d) T481 ==> Ra_1 ¥Ra_GT Ra_0 d-->T527 ==> Ra_ABS(d) in Ra (c,Ra_ABS(d),Ra_1,Ra_0)-->T504 ==> (c ¥Ra_PLUS Ra_1) ¥Ra_GT (Ra_ABS(d) ¥Ra_PLUS Ra_0) ALGEBRA ==> (Ra_ABS(d) ¥Ra_PLUS Ra_0) = Ra_ABS(d) EQUAL ==> (c ¥Ra_PLUS Ra_1) ¥Ra_GT Ra_ABS(d) (Ra_ABS(d),c ¥Ra_PLUS Ra_1)-->T473 ==> false; Discharge ==> QED -- -- Theorem 561: ({F,G} ¥incin RaCauchy) ¥imp (((F ¥Ras_MINUS G) in RaCauchy) & ((F ¥Ras_TIMES G) in RaCauchy)). Proof: Suppose_not(fq,fp) ==> AUTO -- -- Reasoning by contradiction, assume that $fq,fp$ form a counterexample -- to the desired statement. We readily discard the possibility that -- $(fq ¥Ras_MINUS fp) notin RaCauchy$. Only the possibility that -- $(fq ¥Ras_TIMES fp) notin RaCauchy$ must be analyzed in detail, and -- we will reach a contradiction in this case also. -- Suppose ==> Stat1: (fq ¥Ras_MINUS fp) notin RaCauchy Use_def(¥Ras_MINUS)(Stat1*) ==> (fq ¥Ras_PLUS Ras_Rev(fp)) notin RaCauchy (fp,fp)-->T556(*) ==> Ras_Rev(fp) in RaCauchy (fq,Ras_Rev(fp))-->T556(*) ==> false; Discharge ==> Stat2: ({fp,fq} ¥incin RaCauchy) & ((fq ¥Ras_TIMES fp) notin RaCauchy) -- -- Assuming that $fq ¥Ras_TIMES fp$ is not a Cauchy sequence (unlike -- $fq$ and $fp$), there would exist a positive real $eps0$ for which -- the set -- ${ i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_TIMES fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_TIMES fp)~[j])) ¥Ra_GT eps0 }$ -- is infinite, unlike the analogous sets which have $fp$ and $fq$, respectively, -- in place of $fq ¥Ras_TIMES fp$ and have, in place of $eps0$, positive rationals -- $eps1$ and $eps2$ smaller than one half of $eps0 ¥Ra_OVER m$, where $m$ is chosen -- to be larger than the absolute value of any component of $fq$ and of any component -- of $fp$. -- Use_def(RaCauchy)(Stat2*) ==> Stat3: (fq ¥Ras_TIMES fp) notin {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} & Stat4: fq in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} & Stat5: fp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat4(Stat3*) ==> Stat6: (fq in RaSeq) & Stat7: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps })) ()-->Stat5(Stat3*) ==> Stat8: (fp in RaSeq) & Stat9: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps })) fq-->T546(Stat6,Stat6*) ==> Stat10: (domain(fq) = Za) & Svm(fq) & (range(fq) ¥incin Ra) fp-->T546(Stat8,Stat8*) ==> Stat11: (domain(fp) = Za) & Svm(fp) & (range(fp) ¥incin Ra) (fq,fp)-->T554(Stat6*) ==> Stat12: ((fq ¥Ras_TIMES fp) in RaSeq) & Stat13: ((fq ¥Ras_TIMES fp) = {[u,((fq~[u]) ¥Ra_TIMES (fp~[u]))]: u in Za}) ()-->Stat3(Stat3*) ==> Stat14: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_TIMES fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_TIMES fp)~[j])) ¥Ra_GT eps })) eps0-->Stat14(Stat14*) ==> Stat15: (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not( Finite({ i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_TIMES fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_TIMES fp)~[j])) ¥Ra_GT eps0 }))) fq-->T560(Stat2,Stat2*) ==> Stat16: (EXISTS x in Ra | (FORALL y in range(fq) | Ra_ABS(y) ¥Ra_LT x )) mq-->Stat16(Stat16*) ==> (mq in Ra) & Stat17: (FORALL y in range(fq) | Ra_ABS(y) ¥Ra_LT mq ) fp-->T560(Stat2,Stat2*) ==> Stat18: (EXISTS x in Ra | (FORALL y in range(fp) | Ra_ABS(y) ¥Ra_LT x )) mp-->Stat18(Stat18*) ==> (mp in Ra) & Stat19: (FORALL y in range(fp) | Ra_ABS(y) ¥Ra_LT mp ) Loc_def ==> m = if (mq ¥Ra_GT mp) then mq else mp end if (Stat16*)ELEM ==> Stat20: m in Ra Suppose ==> Stat21: not(FORALL y in range(fq) | Ra_ABS(y) ¥Ra_LT m) y1-->Stat21(Stat21*) ==> (y1 in range(fq)) & (not(Ra_ABS(y1) ¥Ra_LT m)) y1-->Stat17(Stat16*) ==> Ra_ABS(y1) ¥Ra_LT mq Suppose ==> m = mq EQUAL(Stat21) ==> false; Discharge ==> m /= mq (Stat18)ELEM ==> not(mq ¥Ra_GT mp) (mq,mp)-->T473(Stat16*) ==> (mp ¥Ra_GE mq) & (m = mp) y1-->T527(Stat10*) ==> Ra_ABS(y1) in Ra (Ra_ABS(y1),mq)-->T473(Stat16*) ==> mq ¥Ra_GT Ra_ABS(y1) (mp,mq,Ra_ABS(y1))-->T510(Stat16*) ==> mp ¥Ra_GT Ra_ABS(y1) EQUAL(Stat21) ==> m ¥Ra_GT Ra_ABS(y1) (Ra_ABS(y1),m)-->T473(Stat20*) ==> false; Discharge ==> Stat22: (FORALL y in range(fq) | Ra_ABS(y) ¥Ra_LT m) Suppose ==> Stat23: not(FORALL y in range(fp) | Ra_ABS(y) ¥Ra_LT m) y2-->Stat23(Stat23*) ==> (y2 in range(fp)) & (not(Ra_ABS(y2) ¥Ra_LT m)) y2-->Stat19(Stat18*) ==> Ra_ABS(y2) ¥Ra_LT mp Suppose ==> m = mp EQUAL(Stat23) ==> false; Discharge ==> m /= mp ELEM ==> (mq ¥Ra_GT mp) & (m = mq) y2-->T527(Stat11*) ==> Ra_ABS(y2) in Ra (Ra_ABS(y2),mp)-->T473(Stat18*) ==> mp ¥Ra_GT Ra_ABS(y2) (mq,mp,Ra_ABS(y2))-->T511(Stat16*) ==> mq ¥Ra_GT Ra_ABS(y2) EQUAL(Stat23) ==> m ¥Ra_GT Ra_ABS(y2) (Ra_ABS(y2),m)-->T473(Stat20*) ==> false; Discharge ==> Stat24: (FORALL y in range(fp) | Ra_ABS(y) ¥Ra_LT m ) ALGEBRA(Stat24) ==> (Ra_0 in Ra) Suppose ==> not(m ¥Ra_GT Ra_0) ALGEBRA(Stat10,Stat10) ==> Stat25: 0 in domain(fq) (0,fq)-->T71(Stat2,Stat10,Stat25*) ==> Stat26: (fq~[0]) in range(fq) (fq~[0])-->Stat22(Stat26*) ==> Ra_ABS(fq~[0]) ¥Ra_LT m (fq~[0])-->T527(Stat10,Stat26*) ==> (Ra_ABS(fq~[0]) ¥Ra_GE Ra_0) & (Ra_ABS(fq~[0]) in Ra) (Ra_ABS(fq~[0]), m)-->T473(Stat26*) ==> m ¥Ra_GT Ra_ABS(fq~[0]) (m, Ra_ABS(fq~[0]), Ra_0)-->T509(Stat2*) ==> false; Discharge ==> AUTO (m, Ra_0)-->T473(Stat2*) ==> m /= Ra_0 m-->T462(Stat20*) ==> Stat27: (Recip(m) in Ra) & ((m ¥Ra_TIMES Recip(m)) = Ra_1) ALGEBRA(Stat20,Stat15,Stat27) ==> (Ra_0 = (Ra_0 ¥Ra_PLUS Ra_0)) & ((eps0 ¥Ra_TIMES Recip(m)) in Ra) & ((Ra_0 ¥Ra_TIMES Recip(m)) = (Recip(m) ¥Ra_TIMES Ra_0)) m-->T491(Stat2*) ==> Recip(m) ¥Ra_GT Ra_0 (eps0, Ra_0, Recip(m))-->T488(Stat2*) ==> (eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT (Ra_0 ¥Ra_TIMES Recip(m)) ALGEBRA(Stat27,Stat27*) ==> (Recip(m) ¥Ra_TIMES Ra_0) = Ra_0 EQUAL(Stat2) ==> (eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT Ra_0 (eps0 ¥Ra_TIMES Recip(m))-->T522(Stat2*) ==> Stat28: (EXISTS e in Ra, e0 in Ra | ((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & ((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT (e ¥Ra_PLUS e0))) (eps1,eps2)-->Stat28 ==> Stat29: (eps1 in Ra) & (eps2 in Ra) & (eps2 ¥Ra_GT Ra_0) & (eps1 ¥Ra_GT Ra_0) & ((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT (eps1 ¥Ra_PLUS eps2)) (eps1,Ra_0)-->T473(Stat2*) ==> (eps1 ¥Ra_GE Ra_0) (eps1,Ra_0,eps2,Ra_0)-->T504(Stat2*) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GT (Ra_0 ¥Ra_PLUS Ra_0) EQUAL(Stat2) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GT Ra_0 m-->T491(Stat2*) ==> Recip(m) ¥Ra_GT Ra_0 ALGEBRA(Stat29,Stat20,Stat15,Stat27) ==> ((eps1 ¥Ra_PLUS eps2) in Ra) & (((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_TIMES m) = (eps0 ¥Ra_TIMES (m ¥Ra_TIMES Recip(m)))) & (((eps1 ¥Ra_PLUS eps2) ¥Ra_TIMES m) = (m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2))) & ((eps0 ¥Ra_TIMES Ra_1) = eps0) (eps0 ¥Ra_TIMES Recip(m), eps1 ¥Ra_PLUS eps2, m)-->T488(Stat2*) ==> ((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_TIMES m) ¥Ra_GT ((eps1 ¥Ra_PLUS eps2) ¥Ra_TIMES m) EQUAL(Stat2) ==> eps0 ¥Ra_GT (m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)) -- eps2-->Stat7 ==> Stat30: Finite({ (i * j) : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2 }) eps1-->Stat9 ==> Stat31: Finite({ (i * j) : i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1 }) -- -- However, this assumption would lead to a conflict with the inequality (holding for all $i,j in Za$) -- $Ra_ABS((fq ¥Ras_TIMES fp)~[i] ¥Ra_MINUS (fq ¥Ras_TIMES fp)~[j]) ¥Ra_LE (m ¥Ra_TIMES Ra_ABS((fq~[i] ¥Ra_MINUS fq~[j]) ¥Ra_PLUS (fp~[i] ¥Ra_MINUS fp~[j])))$, -- as we are about to show. -- APPLY() setformer_meet_join(s->Za, t->Za, h(i,j)->(i*j), R(i,j)->(Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2), Q(i,j)->(Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1)) ==> Stat32: {(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1)} = ({(i*j): i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2 } + {(i*j): i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1 }) ({ i * j : i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2 }, { i * j : i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1 })-->T236(Stat30,Stat31*) ==> Finite({(i*j): i in Za, j in Za | Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2 } + {(i*j): i in Za, j in Za | Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1 }) EQUAL(Stat32) ==> Finite({(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1)}) Suppose ==> Stat33: not({(i * j): i in Za, j in Za | Ra_ABS(((fq ¥Ras_TIMES fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_TIMES fp)~[j])) ¥Ra_GT eps0 } ¥incin {(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1)}) -- -- If we make the temporary assumption that -- $not({(i * j): i in Za, j in Za | Ra_ABS(((fq ¥Ras_TIMES fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_TIMES fp)~[j])) ¥Ra_GT eps0 } ¥incin {(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1)})$, -- then, by proving the above-stated inequality, we reach a contradiction as follows. -- In the first place, observe that if $i0,j0$ are unsigned integers for which $i0*j0$ -- belongs to the set appearing as left-hand side but does not belong to the right-hand side then -- $Ra_ABS((((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0])))) ¥Ra_GT eps0$, -- $(Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_LE eps1) & (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_LE eps2)$. -- (i0,j0)-->Stat33 ==> Stat34: (i0 in Za) & (j0 in Za) & (Ra_ABS(((fq ¥Ras_TIMES fp)~[i0]) ¥Ra_MINUS ((fq ¥Ras_TIMES fp)~[j0])) ¥Ra_GT eps0) & (not(Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_GT eps2)) & (not(Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_GT eps1)) APPLY() fcn_symbol(f(u)->((fq~[u]) ¥Ra_TIMES (fp~[u])), g->(fq ¥Ras_TIMES fp), s->Za) ==> Stat35: (FORALL x | ((fq ¥Ras_TIMES fp)~[x]) = if x in Za then ((fq~[x]) ¥Ra_TIMES (fp~[x])) else 0 end if) i0-->Stat35(Stat34*) ==> ((fq ¥Ras_TIMES fp)~[i0]) = ((fq~[i0]) ¥Ra_TIMES (fp~[i0])) j0-->Stat35(Stat34*) ==> ((fq ¥Ras_TIMES fp)~[j0]) = ((fq~[j0]) ¥Ra_TIMES (fp~[j0])) EQUAL(Stat33) ==> Stat36: Ra_ABS((((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0])))) ¥Ra_GT eps0 -- -- Secondly, we easily check that various quantities belong to $Ra$. -- Suppose ==> (fq~[i0]) notin range(fq) fq-->T73(Stat10*) ==> Stat37: (fq~[i0]) notin {(fq~[j]): j in domain(fq)} i0-->Stat37(Stat10,Stat34*) ==> false; Discharge ==> Stat38: (fq~[i0]) in range(fq) Suppose ==> (fp~[j0]) notin range(fp) fp-->T73(Stat11*) ==> Stat39: (fp~[j0]) notin {(fp~[j]): j in domain(fp)} j0-->Stat39(Stat11,Stat34*) ==> false; Discharge ==> Stat40: (fp~[j0]) in range(fp) (fq,fp,i0)-->T555(Stat6,Stat8,Stat34*) ==> Stat41: ((fq~[i0]) in Ra) & ((fp~[i0]) in Ra) (fq,fp,j0)-->T555(Stat6,Stat8,Stat34*) ==> Stat42: ((fq~[j0]) in Ra) & ((fp~[j0]) in Ra) (fq~[i0])-->T527(Stat41*) ==> Stat43: Ra_ABS(fq~[i0]) in Ra ALGEBRA(Stat41,Stat42) ==> Stat44: (((fq~[i0]) ¥Ra_MINUS (fq~[j0])) in Ra) ((fq~[i0]) ¥Ra_MINUS (fq~[j0]))-->T527(Stat44*) ==> Stat45: (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) in Ra) & (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_GE Ra_0) (fp~[j0])-->T527(Stat41*) ==> Stat46: Ra_ABS(fp~[j0]) in Ra ALGEBRA(Stat42,Stat41) ==> Stat47: ((fp~[i0]) ¥Ra_MINUS (fp~[j0])) in Ra ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))-->T527(Stat41*) ==> Stat48: (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) in Ra) & (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_GE Ra_0) ALGEBRA(Stat20,Stat29) ==> (m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)) in Ra ALGEBRA(Stat41,Stat42) ==> ((((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) in Ra) & (((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) in Ra) & (((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) in Ra) (((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0])))-->T527(Stat41*) ==> Ra_ABS(((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_PLUS ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) in Ra ALGEBRA(Stat48,Stat45,Stat46,Stat43) ==> ((Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) in Ra) & ((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) in Ra) & ((Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) in Ra) & (((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) in Ra) ALGEBRA(Stat41) ==> Stat49: ((Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0])) in Ra) & ((((fq~[i0]) ¥Ra_TIMES (fp~[j0])) ¥Ra_PLUS Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0]))) = Ra_0)) & ((((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_PLUS (Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0])) ¥Ra_PLUS ((fq~[i0]) ¥Ra_TIMES (fp~[j0])))) = ((((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_PLUS Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0]))) ¥Ra_PLUS ((fq~[i0]) ¥Ra_TIMES (fp~[j0])))) ALGEBRA(Stat41,Stat42) ==> Stat50: (((fq~[j0]) ¥Ra_TIMES (fp~[j0])) = ((fp~[j0]) ¥Ra_TIMES (fq~[j0]))) & ((((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_PLUS Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0])) ¥Ra_PLUS ((fq~[i0]) ¥Ra_TIMES (fp~[j0]))) ¥Ra_PLUS Ra_Rev((fq~[j0]) ¥Ra_TIMES (fp~[j0])) = (((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_PLUS Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0]))) ¥Ra_PLUS (((fq~[i0]) ¥Ra_TIMES (fp~[j0])) ¥Ra_PLUS Ra_Rev((fq~[j0]) ¥Ra_TIMES (fp~[j0])))) & (((fq~[i0]) ¥Ra_TIMES (fp~[i0])) in Ra) & (((fq~[i0]) ¥Ra_TIMES (fp~[j0])) in Ra) -- -- By exploiting some of the above membership relations, we easily get -- $(eps1 ¥Ra_PLUS eps2) ¥Ra_GE (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))$, -- and hence -- $eps0 ¥Ra_GT ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))$. -- (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), eps1)-->T473(Stat29*) ==> eps1 ¥Ra_GE Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])), eps2)-->T473(Stat29*) ==> eps2 ¥Ra_GE Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) (eps1, Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), eps2, Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))-->T493(Stat29*) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GE (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) Suppose ==> Stat51: not((m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)) ¥Ra_GE ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))) ALGEBRA(Stat48,Stat45,Stat20) ==> (m ¥Ra_TIMES (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) = ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) Suppose ==> (eps1 ¥Ra_PLUS eps2) = (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) EQUAL(Stat51*) ==> (m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)) = ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) (((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))), (m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)))-->T473(Stat41*) ==> false; Discharge ==> AUTO (eps1 ¥Ra_PLUS eps2, Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))-->T473(Stat41*) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GT (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) (eps1 ¥Ra_PLUS eps2, Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])), m)-->T488(Stat18*) ==> ((eps1 ¥Ra_PLUS eps2) ¥Ra_TIMES m) ¥Ra_GT ((Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) ¥Ra_TIMES m) ALGEBRA(Stat20,Stat29) ==> (m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)) = ((eps1 ¥Ra_PLUS eps2) ¥Ra_TIMES m) ALGEBRA(Stat20,Stat48,Stat45) ==> ((Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) ¥Ra_TIMES m) = (m ¥Ra_TIMES (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) EQUAL(Stat51*) ==> (m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)) ¥Ra_GT ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) ((m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)), ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))))-->T473(Stat51*) ==> false; Discharge ==> AUTO (Stat28*)ELEM ==> (m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2)) ¥Ra_GE ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) ALGEBRA(Stat20,Stat48,Stat45) ==> Stat52: ((m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) in Ra) & ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) in Ra) & (((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) in Ra) (eps0, m ¥Ra_TIMES (eps1 ¥Ra_PLUS eps2), (m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))-->T509(Stat15*) ==> eps0 ¥Ra_GT ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) (eps0, (m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))-->T473(Stat42*) ==> Stat53: eps0 ¥Ra_GE ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) -- -- As a consequence, $eps1 ¥Ra_PLUS eps2$ is greater than or equal to -- $Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_MINUS (fp~[j0])))$, -- because this quantity equals -- $Ra_ABS(((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS ((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))$, -- (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])), eps2)-->T473(Stat35*) ==> eps2 ¥Ra_GE Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), eps1)-->T473(Stat35*) ==> eps1 ¥Ra_GE Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) (eps1, Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), eps2, Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))-->T493(Stat35*) ==> Stat54: (eps1 ¥Ra_PLUS eps2) ¥Ra_GE (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_PLUS Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) Suppose ==> Stat55: (((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) /= (((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS ((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) ALGEBRA(Stat41,Stat42) ==> ((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0])) = ((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[i0]) ¥Ra_TIMES (fp~[j0]))) & ((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0])) = ((fq~[i0]) ¥Ra_TIMES (fp~[j0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) & ((((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[i0]) ¥Ra_TIMES (fp~[j0]))) = (((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_PLUS Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0])))) & ((((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_PLUS Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0]))) ¥Ra_PLUS (((fq~[i0]) ¥Ra_TIMES (fp~[j0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) = (((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_PLUS (Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0])) ¥Ra_PLUS ((fq~[i0]) ¥Ra_TIMES (fp~[j0])))) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) & ((Ra_Rev((fq~[i0]) ¥Ra_TIMES (fp~[j0])) ¥Ra_PLUS ((fq~[i0]) ¥Ra_TIMES (fp~[j0]))) = Ra_0) & ((((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_PLUS Ra_0) = ((fq~[i0]) ¥Ra_TIMES (fp~[i0]))) EQUAL(Stat55) ==> false; Discharge ==> AUTO (Stat54*)ELEM ==> Stat56: (((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) = (((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS ((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) EQUAL(Stat56) ==> Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) = Ra_ABS(((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS ((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) -- ..., in its turn -- $Ra_ABS(((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS ((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))$ -- is smaller than or equal to -- $((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))$, -- T525(Stat57*) ==> Stat57: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(x ¥Ra_PLUS y) ¥Ra_LE (Ra_ABS(x) ¥Ra_PLUS Ra_ABS(y)))) (((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))), ((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))-->Stat57(Stat35*) ==> Ra_ABS(((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS ((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) ¥Ra_LE (Ra_ABS((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS Ra_ABS((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) (fq~[i0], (fp~[i0]) ¥Ra_MINUS (fp~[j0]))-->T530(Stat41,Stat47*) ==> Ra_ABS((fq~[i0]) ¥Ra_TIMES ((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) = (Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) (fp~[j0], (fq~[i0]) ¥Ra_MINUS (fq~[j0]))-->T530(Stat42,Stat44*) ==> Ra_ABS((fp~[j0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) = (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) EQUAL(Stat56) ==> Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) ¥Ra_LE ((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) (Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))), ((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))))-->T473(Stat35*) ==> ((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) ¥Ra_GE Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) -- -- ... which in its turn is smaller than or equal to -- $(m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))$, -- ALGEBRA(Stat20,Stat20) ==> Stat58: m ¥Ra_TIMES Ra_0 = Ra_0 Suppose ==> not((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_GE (Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])))) (fq~[i0])-->Stat22(Stat38,Stat38*) ==> Ra_ABS(fq~[i0]) ¥Ra_LT m (Ra_ABS(fq~[i0]),m)-->T473(Stat35*) ==> m ¥Ra_GT Ra_ABS(fq~[i0]) Suppose ==> Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) ¥Ra_GT Ra_0 (m, Ra_ABS(fq~[i0]), Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])))-->T488(Stat20*) ==> (m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_GT (Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) (m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), (Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))))-->T473(Stat52*) ==> false; Discharge ==> AUTO (Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), Ra_0)-->T473(Stat35*) ==> Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])) = Ra_0 ALGEBRA(Stat43,Stat43) ==> (Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_0) = Ra_0 EQUAL(Stat58*) ==> (m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) = (Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))), (m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))))-->T473(Stat35*) ==> false; Discharge ==> AUTO Suppose ==> not((m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) ¥Ra_GE (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) (fp~[j0])-->Stat24(Stat40,Stat40*) ==> Ra_ABS(fp~[j0]) ¥Ra_LT m (Ra_ABS(fp~[j0]),m)-->T473(Stat35*) ==> m ¥Ra_GT Ra_ABS(fp~[j0]) Suppose ==> Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) ¥Ra_GT Ra_0 (m, Ra_ABS(fp~[j0]), Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))-->T488(Stat20*) ==> (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) ¥Ra_GT (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])), (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))-->T473(Stat58*) ==> false; Discharge ==> AUTO (Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])), Ra_0)-->T473(Stat35*) ==> Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])) = Ra_0 ALGEBRA(Stat46,Stat46) ==> (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_0) = Ra_0 EQUAL(Stat58*) ==> (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) = (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))) ((Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))), (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0]))))-->T473(Stat35*) ==> false; Discharge ==> AUTO (m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0])), m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])), Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))-->T493(Stat20*) ==> ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) ¥Ra_GE ((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) -- -- ... hence, by exploiting the transitivity laws which the ordering of rationals obeys, we -- get to the absurd conclusion that $eps0 ¥Ra_GT eps0$. -- ALGEBRA(Stat41,Stat42*) ==> (((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) in Ra (((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0])))-->T527(Stat41*) ==> Stat59: Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) in Ra (((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))), ((Ra_ABS(fq~[i0]) ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (Ra_ABS(fp~[j0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))), Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))))-->T508(Stat41*) ==> Stat60: ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) ¥Ra_GE Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))) (((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))), Ra_ABS(((fq~[i0]) ¥Ra_TIMES (fp~[i0])) ¥Ra_MINUS ((fq~[j0]) ¥Ra_TIMES (fp~[j0]))), eps0)-->T510(Stat15,Stat59,Stat52,Stat60,Stat36*) ==> Stat61: ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))) ¥Ra_GT eps0 (eps0, ((m ¥Ra_TIMES Ra_ABS((fp~[i0]) ¥Ra_MINUS (fp~[j0]))) ¥Ra_PLUS (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fq~[j0])))), eps0)-->T510(Stat15,Stat52,Stat53,Stat61*) ==> eps0 ¥Ra_GT eps0 (eps0,eps0)-->T473(Stat58*) ==> false; Discharge ==> AUTO (Stat32*)ELEM ==> { (i * j) : i in Za, j in Za | Ra_ABS(((fq ¥Ras_TIMES fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_TIMES fp)~[j])) ¥Ra_GT eps0 } ¥incin {(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps2) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps1)} -- -- Since the inclusion just proved entails that the set on the left-hand side is finite, -- we have reached the desired contradiction, proving the statement of the present theorem. -- ({(i*j): i in Za, j in Za | (Ra_ABS((fq~[i]) ¥Ra_MINUS (fq~[j])) ¥Ra_GT eps1) or (Ra_ABS((fp~[i]) ¥Ra_MINUS (fp~[j])) ¥Ra_GT eps2)}, { i * j : i in Za, j in Za | Ra_ABS(((fq ¥Ras_TIMES fp)~[i]) ¥Ra_MINUS ((fq ¥Ras_TIMES fp)~[j])) ¥Ra_GT eps0 })-->T189(Stat15) ==> false; Discharge ==> QED -- -- Preliminary to showing that the reciprocal of any rational Cauchy sequence not equivalent to the zero sequence -- is, in its turn, a rational Cauchy sequence, we prove that -- for every rational Cauchy sequence $g$ which is not equivalent to the everywhere null sequence, -- there is a positive rational number $eps$ such that all but a finite number of components of $g$ -- have an absolute value exceeding $eps$. -- Theorem 562: ((G in RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp (EXISTS eps in Ra | (eps ¥Ra_GT Ra_0) & Finite({i in Za | eps ¥Ra_GE Ra_ABS(G~[i])})). Proof+: Suppose_not(g) ==> (g in RaCauchy) & (not Ra_eqseq(g,Ra0Seq)) & Stat1: (not (EXISTS eps in Ra | (eps ¥Ra_GT Ra_0) & Finite({i in Za | eps ¥Ra_GE Ra_ABS(g~[i])}))) -- -- For, suppose the contrary, namely that $g$ is a rational Cauchy sequence which is not equivalent to the everywhere null sequence, -- and that $g$ has, for every positive rational $eps$, an infinite number of components whose absolute value does not exceed $eps$. -- We will reach a contradiction as follows. -- -- Various obvious facts immediately follow from $g$ being a non-zero rational Cauchy sequence; in particular: -- (1) there is a positive rational $eps0$ such that infinitely many components of $g$ have an absolute value larger than $eps0$, -- and (2) there is an integer $k0$ such that the distance between any two components of $g$, beyond the $k0$-th component, -- is smaller than $eps1$, where $eps1$ and $eps2$ are positive rationals whose sum is inferior to $eps0$. -- Use_def(Ra_eqseq) ==> Stat2: (not (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(g) | Ra_ABS((g~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps}))) eps0-->Stat2 ==> Stat3: (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({x : x in domain(g) | Ra_ABS((g~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps0})) eps0-->T522 ==> Stat4: (EXISTS e in Ra, e0 in Ra | (eps0 ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (e ¥Ra_PLUS e0))) (eps1,eps2)-->Stat4 ==> Stat5: (eps1 in Ra) & (eps2 in Ra) & (eps2 ¥Ra_GT Ra_0) & (eps1 ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (eps1 ¥Ra_PLUS eps2)) (eps1,g)-->T552 ==> Stat6: (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (eps1 ¥Ra_GT Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j]))) )) k0-->Stat6 ==> Stat6a: (k0 in Za) & Stat7: (FORALL i in Za, j in Za | ((i notin k0) & (j notin k0)) ¥imp (eps1 ¥Ra_GT Ra_ABS((g~[i]) ¥Ra_MINUS (g~[j]))) ) Use_def(RaCauchy) ==> Stat8: g in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat8 ==> Stat9: g in RaSeq g-->T546 ==> (domain(g) = Za) & (range(g) ¥incin Ra) -- -- We then argue that for some integer $k1$ greater than or equal to $k0$, -- the absolute value of the $k1$-th component of $g$ exceeds $eps0$. -- Suppose ==> Stat10: not(EXISTS k in (Za - k0) | Ra_ABS(g~[k]) ¥Ra_GT eps0) Suppose ==> {x : x in domain(g) | Ra_ABS((g~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps0} /= {x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} EQUAL ==> Stat11: {x : x in Za | Ra_ABS((g~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps0} /= {x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} x0-->Stat11 ==> Stat11a: (x0 in Za) & ((Ra_ABS((g~[x0]) ¥Ra_MINUS (Ra0Seq~[x0])) ¥Ra_GT eps0) ¥eq (not(Ra_ABS(g~[x0]) ¥Ra_GT eps0))) x0-->T548(Stat11a*) ==> (Ra0Seq~[x0]) = Ra_0 (g,x0)-->T540(Stat9,Stat11a*) ==> Stat10a: (g~[x0]) in Ra (g~[x0])-->T527(Stat10a*) ==> Ra_ABS(g~[x0]) in Ra ALGEBRA(Stat10a) ==> ((g~[x0]) ¥Ra_MINUS Ra_0) = (g~[x0]) EQUAL(Stat8) ==> false; Discharge ==> AUTO TELEM ==> {x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} = ({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} * k0) + ({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} - k0) EQUAL ==> Stat12: not Finite(({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} * k0) + ({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} - k0)) ({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0},{x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} * k0)-->T189 ==> Finite({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} * k0) ({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} * k0,{x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} - k0)-->T236(Stat12) ==> not Finite({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} - k0) TELEM ==> Finite(0) EQUAL ==> Stat13: ({x : x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0} - k0) /= 0 kp-->Stat13(Stat13*) ==> (kp notin k0) & Stat14: (kp in {x: x in Za | Ra_ABS(g~[x]) ¥Ra_GT eps0}) xp-->Stat14 ==> (kp = xp) & (kp in Za) & (Ra_ABS(g~[xp]) ¥Ra_GT eps0) EQUAL ==> Ra_ABS(g~[kp]) ¥Ra_GT eps0 kp-->Stat10 ==> false; Discharge ==> Stat15: (EXISTS k in (Za - k0) | Ra_ABS(g~[k]) ¥Ra_GT eps0) k1-->Stat15 ==> Stat16: (k1 in (Za - k0)) & (Ra_ABS(g~[k1]) ¥Ra_GT eps0) & (k1 in Za) -- -- If we now take an integer $k2$ greater than $k1$ where the absolute value of $g$ does not exceed $eps2$, ... -- eps2-->Stat1 ==> not Finite({i in Za | eps2 ¥Ra_GE Ra_ABS(g~[i])}) T206 ==> Ord(Za) (Za,k1)-->T13(Stat16) ==> Za = k1 + (Za - k1) Suppose ==> Stat17: {i in Za | eps2 ¥Ra_GE Ra_ABS(g~[i])} /= ({i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])} + {i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])}) Set_monot ==> ({i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])} ¥incin {i in Za | eps2 ¥Ra_GE Ra_ABS(g~[i])}) Set_monot ==> ({i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])} ¥incin {i in Za | eps2 ¥Ra_GE Ra_ABS(g~[i])}) (Stat17)ELEM ==> Stat18: not({i in Za | eps2 ¥Ra_GE Ra_ABS(g~[i])} ¥incin ({i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])} + {i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])})) iq-->Stat18(Stat18) ==> (not(iq in {i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])} + {i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])})) & Stat19: (iq in {i in Za | eps2 ¥Ra_GE Ra_ABS(g~[i])}) ()-->Stat19(Stat18*) ==> (iq in Za) & (eps2 ¥Ra_GE Ra_ABS(g~[iq])) & Stat20: (iq notin {i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])}) & Stat21: (iq notin {i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])}) iq-->Stat20(Stat18*) ==> iq notin k1 iq-->Stat21(Stat18*) ==> false; Discharge ==> {i in Za | eps2 ¥Ra_GE Ra_ABS(g~[i])} = ({i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])} + {i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])}) EQUAL ==> not Finite({i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])} + {i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])}) Suppose ==> Stat22: not({i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])} ¥incin k1) Set_monot ==> {i: i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])} ¥incin {i: i in k1} (Stat22)Discharge ==> AUTO (k1,{i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])})-->T189(Stat16*) ==> Finite({i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])}) ({i in k1 | eps2 ¥Ra_GE Ra_ABS(g~[i])},{i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])})-->T236 ==> not Finite({i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS (g~[i])}) TELEM ==> Finite(0) EQUAL ==> Stat23: {i in (Za - k1) | eps2 ¥Ra_GE Ra_ABS(g~[i])} /= 0 k2-->Stat23 ==> Stat24: (k2 in (Za - k1)) & (eps2 ¥Ra_GE Ra_ABS(g~[k2])) & (k2 in Za) -- -- ...then the distance between $g~[k1]$ and $g~[k2]$ exceeds $eps1$, which is absurd. -- This contradiction gives the desired conclusion. -- T525 ==> Stat25: (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (y ¥Ra_LE z)) ¥imp (x ¥Ra_LE z))) & Stat26: (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE Ra_ABS(x))) & Stat27: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(Ra_ABS(x) ¥Ra_PLUS Ra_Rev(Ra_ABS(y))) ¥Ra_LE Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)))) & Stat28: (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp ((x ¥Ra_LE y) ¥imp ((x ¥Ra_PLUS z) ¥Ra_LE (y ¥Ra_PLUS z)))) & Stat29: (FORALL x,y,z | ((x in Ra) & (y in Ra) & (z in Ra)) ¥imp (((x ¥Ra_LE y) & (x /= y)) ¥imp ((x ¥Ra_PLUS z) /= (y ¥Ra_PLUS z)))) (g,k1)-->T540(Stat9,Stat16*) ==> Stat25a: (g~[k1]) in Ra (g~[k1])-->T527(Stat25a*) ==> Stat26a: Ra_ABS(g~[k1]) in Ra (g,k2)-->T540(Stat9,Stat24*) ==> Stat27a: (g~[k2]) in Ra (g~[k2])-->T527(Stat27a*) ==> Stat30: Ra_ABS(g~[k2]) in Ra ALGEBRA(Stat25a*) ==> Stat31: (((g~[k1]) ¥Ra_MINUS (g~[k2])) = ((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2]))) & ((Ra_ABS(g~[k1]) ¥Ra_MINUS Ra_ABS(g~[k2])) = (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2])))) & (Ra_Rev(Ra_ABS(g~[k2])) in Ra) & ((Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) in Ra) (g~[k1],g~[k2])-->Stat27 ==> Ra_ABS(Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) ¥Ra_LE Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])) (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2])))-->Stat26 ==> Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_LE Ra_ABS(Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2])))-->T527 ==> Ra_ABS(Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) in Ra ALGEBRA(Stat25a,Stat27a) ==> ((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])) in Ra ((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2]))-->T527 ==> Stat33: Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])) in Ra (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2])),Ra_ABS(Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))),Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])))-->Stat25 ==> Stat34: (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) ¥Ra_LE Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])) -- -- -- (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2])),Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])))-->T473(Stat34) ==> Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])) ¥Ra_GE (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) ALGEBRA(Stat26a,Stat30) ==> (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) = (Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_PLUS Ra_ABS(g~[k1])) EQUAL(Stat33) ==> Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])) ¥Ra_GE (Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_PLUS Ra_ABS(g~[k1])) (Ra_Rev(Ra_ABS(g~[k2])),Ra_Rev(Ra_ABS(g~[k2])))-->T495 ==> Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_GE Ra_Rev(Ra_ABS(g~[k2])) (Ra_Rev(Ra_ABS(g~[k2])),Ra_Rev(Ra_ABS(g~[k2])),Ra_ABS(g~[k1]),eps0)-->T504 ==> (Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_PLUS Ra_ABS(g~[k1])) ¥Ra_GT (Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_PLUS eps0) ALGEBRA(Stat26a,Stat30) ==> Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_PLUS Ra_ABS(g~[k1]) = Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2])) ALGEBRA(Stat30,Stat3) ==> Stat41: ((eps0 ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) in Ra) & (Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_PLUS eps0 = eps0 ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) EQUAL(Stat33) ==> Stat35: (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) ¥Ra_GT (eps0 ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) (eps2,Ra_ABS(g~[k2]))-->T502(Stat24,Stat5,Stat30*) ==> Stat36: Ra_Rev(Ra_ABS(g~[k2])) ¥Ra_GE Ra_Rev(eps2) (eps0,eps0)-->T495(Stat3,Stat3*) ==> Stat37: eps0 ¥Ra_GE eps0 ALGEBRA(Stat5,Stat5) ==> Stat38: Ra_Rev(eps2) in Ra (eps0,eps0,Ra_Rev(Ra_ABS(g~[k2])),Ra_Rev(eps2))-->T493(Stat3,Stat36,Stat37,Stat38,Stat31) ==> Stat39: (eps0 ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) ¥Ra_GE (eps0 ¥Ra_PLUS Ra_Rev(eps2)) ALGEBRA(Stat3,Stat5) ==> Stat40: (eps0 ¥Ra_PLUS Ra_Rev(eps2)) in Ra ((Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))),(eps0 ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))),(eps0 ¥Ra_PLUS Ra_Rev(eps2)))-->T509(Stat35,Stat39,Stat31,Stat40,Stat41) ==> (Ra_ABS(g~[k1])¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) ¥Ra_GT (eps0 ¥Ra_PLUS Ra_Rev(eps2)) (Ra_Rev(eps2),Ra_Rev(eps2))-->T495(Stat38,Stat38*) ==> Ra_Rev(eps2) ¥Ra_GE Ra_Rev(eps2) (eps0,eps1 ¥Ra_PLUS eps2)-->T473 ==> eps0 ¥Ra_GE (eps1 ¥Ra_PLUS eps2) ALGEBRA(Stat5,Stat5) ==> (((eps1 ¥Ra_PLUS eps2) ¥Ra_PLUS Ra_Rev(eps2)) = (eps1 ¥Ra_PLUS (eps2 ¥Ra_PLUS Ra_Rev(eps2)))) & ((eps2 ¥Ra_PLUS Ra_Rev(eps2)) = Ra_0) & ((eps1 ¥Ra_PLUS Ra_0) = eps1) & ((eps1 ¥Ra_PLUS eps2) in Ra) (eps0,eps1 ¥Ra_PLUS eps2,Ra_Rev(eps2),Ra_Rev(eps2))-->T493 ==> (eps0 ¥Ra_PLUS Ra_Rev(eps2)) ¥Ra_GE ((eps1 ¥Ra_PLUS eps2) ¥Ra_PLUS Ra_Rev(eps2)) EQUAL(Stat33) ==> (eps0 ¥Ra_PLUS Ra_Rev(eps2)) ¥Ra_GE eps1 ((Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))),(eps0 ¥Ra_PLUS Ra_Rev(eps2)),eps1)-->T509 ==> (Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2]))) ¥Ra_GT eps1 (Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])),Ra_ABS(g~[k1]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[k2])),eps1)-->T510 ==> Stat42: Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])) ¥Ra_GT eps1 Suppose ==> k2 in k0 (k0,k1)-->T35(Stat16,Stat6a*) ==> Stat42a: k0 ¥incin k1 (k1,k2)-->T35(Stat24,Stat16,Stat42a*) ==> k0 ¥incin k2 (k0,k2)-->T35 ==> false; Discharge ==> Stat43: k2 notin k0 (k1,k2)-->Stat7(Stat43,Stat16,Stat24*) ==> eps1 ¥Ra_GT Ra_ABS((g~[k1]) ¥Ra_MINUS (g~[k2])) (eps1,Ra_ABS((g~[k1]) ¥Ra_MINUS (g~[k2])))-->T473 ==> eps1 ¥Ra_GE Ra_ABS((g~[k1]) ¥Ra_MINUS (g~[k2])) Use_def(¥Ra_MINUS) ==> Stat44: eps1 ¥Ra_GE Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])) (eps1,Ra_ABS((g~[k1]) ¥Ra_PLUS Ra_Rev(g~[k2])),eps1)-->T510(Stat44,Stat42,Stat5,Stat33*) ==> eps1 ¥Ra_GT eps1 (eps1,eps1)-->T473 ==> Stat45: eps1 ¥Ra_LT eps1 T513 ==> Stat46: (FORALL x in Ra | not(x ¥Ra_LT x)) eps1-->Stat46(Stat45,Stat5*) ==> false; Discharge ==> QED -- -- An alternative way of stating Theorem 562 is to say that for every rational -- Cauchy sequence $g$ which is not equivalent to the everywhere null sequence, -- there exists a positive rational number $eps$ and an unsigned integer $n$ -- beyond which all the components $g~[i]$ of $g$ have an absolute value greater than $eps$. -- Theorem 563: ((G in RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(G~[i]) ¥Ra_GT eps) & (Ra_ABS(G~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(G~[n]) ¥Ra_GT Ra_0)). Proof: Suppose_not(g) ==> (g in RaCauchy) & (not Ra_eqseq(g,Ra0Seq)) & Stat1: (not(EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(g~[i]) ¥Ra_GT eps) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(g~[n]) ¥Ra_GT Ra_0))) g-->T562 ==> Stat2: (EXISTS eps in Ra | (eps ¥Ra_GT Ra_0) & Finite({i in Za | eps ¥Ra_GE Ra_ABS(g~[i])})) a-->Stat2 ==> (a in Ra) & (a ¥Ra_GT Ra_0) & Finite({i in Za | a ¥Ra_GE Ra_ABS(g~[i])}) Suppose ==> Stat3: not(EXISTS n in Za | (FORALL i in (Za - n) | (Ra_ABS(g~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(g~[n]) ¥Ra_GT Ra_0)) APPLY(bynd_thryvar:m) unsigned_integer_bynd(Q1(i)->(a ¥Ra_GE Ra_ABS(g~[i]))) ==> (m in Za) & (Za incs m) & Ord(m) & (not Finite (Za - m)) & Stat4: (FORALL i in Za | ((a ¥Ra_GE Ra_ABS(g~[i])) ¥imp (i in m))) Use_def(RaCauchy) ==> Stat5: g in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat5 ==> g in RaSeq g-->T546 ==> Stat6: (domain(g) = Za) & (range(g) ¥incin Ra) Suppose ==> Stat7: not(FORALL i in (Za - m) | Ra_ABS(g~[i]) ¥Ra_GT a) i0-->Stat7 ==> Stat8: (i0 in (Za - m)) & (not(Ra_ABS(g~[i0]) ¥Ra_GT a)) (Ra_ABS(g~[i0]),a)-->T473 ==> not((Ra_ABS(g~[i0]) ¥Ra_GT a) & (Ra_ABS(g~[i0]) /= a)) (i0,g)-->T71(Stat6,Stat8) ==> (g~[i0]) in Ra (g~[i0])-->T527 ==> Ra_ABS(g~[i0]) in Ra (Ra_ABS(g~[i0]),a)-->T473 ==> a ¥Ra_GE Ra_ABS(g~[i0]) i0-->Stat4 ==> false; Discharge ==> Stat9: (FORALL i in (Za - m) | Ra_ABS(g~[i]) ¥Ra_GT a) Suppose ==> Stat10: not(FORALL i in (Za - m) | (Ra_ABS(g~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) i1-->Stat10 ==> Stat11: (i1 in (Za - m)) & (not((Ra_ABS(g~[i1]) ¥Ra_GT a) & (Ra_ABS(g~[i1]) ¥Ra_GT Ra_0))) i1-->Stat9 ==> (i1 in (Za - m)) & (Ra_ABS(g~[i1]) ¥Ra_GT a) (Ra_ABS(g~[i1]),a)-->T473 ==> (Ra_ABS(g~[i1]) ¥Ra_GE a) T451 ==> Ra_0 in Ra (i1,g)-->T71(Stat6,Stat11) ==> (g~[i1]) in Ra (g~[i1])-->T527 ==> Ra_ABS(g~[i1]) in Ra (Ra_ABS(g~[i1]),a,Ra_0)-->T510 ==> false; Discharge ==> Stat12: (FORALL i in (Za - m) | (Ra_ABS(g~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) m-->Stat12 ==> Ra_ABS(g~[m]) ¥Ra_GT Ra_0 m-->Stat3 ==> false; Discharge ==> Stat13: (EXISTS n in Za | (FORALL i in (Za - n) | (Ra_ABS(g~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(g~[n]) ¥Ra_GT Ra_0)) n0-->Stat13 ==> (n0 in Za) & (FORALL i in (Za - n0) | (Ra_ABS(g~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(g~[n0]) ¥Ra_GT Ra_0) (a,n0)-->Stat1 ==> false; Discharge ==> QED -- -- It follows from Theorem 563 that for every rational -- Cauchy sequence $h$ which is not equivalent to the everywhere null sequence, -- there exists a positive rational number $eps$ and an unsigned integer $n$ -- beyond which: -- (1) all the components $h~[i]$ of $h$ have an absolute value greater than $eps$; -- (2) all the components $h~[j], h~[i]$ of $h$ differ by less than $eps$. -- Theorem 564: ((H in RaCauchy) & (not Ra_eqseq(H,Ra0Seq))) ¥imp (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | Ra_ABS(H~[i]) ¥Ra_GT eps) & (FORALL i in Za, j in Za | ((i notin n) & (j notin n)) ¥imp (eps ¥Ra_GT (Ra_ABS((H~[i]) ¥Ra_MINUS (H~[j])))))). Proof: Suppose_not(h) ==> ((h in RaCauchy) & (not Ra_eqseq(h,Ra0Seq))) & Stat1: (not(EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | Ra_ABS(h~[i]) ¥Ra_GT eps) & (FORALL i in Za, j in Za | ((i notin n) & (j notin n)) ¥imp (eps ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j]))))))) -- -- Let the Cauchy sequence $h$ be a counterexample to our claim. -- Then, by Theorem 563, there exists a positive rational $eps0$ and an integer $n0$ -- beyond which all the components $h~[i]$ of $h$ have an absolute value greater than $eps0$. -- h-->T563(*) ==> Stat2: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(h~[i]) ¥Ra_GT eps) & (Ra_ABS(h~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(h~[n]) ¥Ra_GT Ra_0)) (eps0,n0)-->Stat2(Stat2*) ==> Stat3: (eps0 in Ra) & (n0 in Za) & (eps0 ¥Ra_GT Ra_0) & Stat4: (FORALL i in (Za - n0) | (Ra_ABS(h~[i]) ¥Ra_GT eps0) & (Ra_ABS(h~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(h~[n0]) ¥Ra_GT Ra_0) -- -- Moreover, exploiting Theorem 552 we can pick an integer $n1$ beyond which -- all the components $h~[j], h~[i]$ of $h$ differ by less than $eps0$. -- (eps0,h)-->T552(*) ==> Stat5: (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (eps0 ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) )) n1-->Stat5(Stat5*) ==> Stat6: (n1 in Za) & Stat7: (FORALL i in Za, j in Za | ((i notin n1) & (j notin n1)) ¥imp (eps0 ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) ) -- -- Hence, letting $n2$ be greater than the maximum of $n0$ and $n1$, it follows that both of -- the preceding conditions are satisfied by all the components $h~[j], h~[i]$ of $h$ beyond $n2$. -- (n0,n1)-->T202(Stat6*) ==> Stat8: Finite({n0,n1}) ({n0,n1})-->T558(Stat3,Stat6,Stat8*) ==> Stat9: (EXISTS i in Za | (FORALL j in {n0,n1} | j in i)) n2-->Stat9(Stat9*) ==> Stat10: (n2 in Za) & Stat11: (FORALL j in {n0,n1} | j in n2) n0-->Stat11(Stat10*) ==> Stat12: n0 in n2 Suppose ==> Stat13: not(FORALL i in (Za - n2) | Ra_ABS(h~[i]) ¥Ra_GT eps0) i0-->Stat13(Stat13*) ==> Stat14: (i0 in (Za - n2)) & (not(Ra_ABS(h~[i0]) ¥Ra_GT eps0)) (n2,n0,i0)-->T208(Stat10,Stat3,Stat12,Stat14) ==> Stat15: i0 notin n0 i0-->Stat4(Stat15,Stat14*) ==> false; Discharge ==> Stat16: (FORALL i in (Za - n2) | Ra_ABS(h~[i]) ¥Ra_GT eps0) n1-->Stat11(Stat10,Stat10*) ==> Stat17: n1 in n2 Suppose ==> Stat18: not(FORALL i in Za, j in Za | ((i notin n2) & (j notin n2)) ¥imp (eps0 ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) ) (i1,i2)-->Stat18(Stat18*)==> Stat19: (i1 in Za) & (i2 in Za) & (i1 notin n2) & (i2 notin n2) & (not(eps0 ¥Ra_GT (Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[i2]))))) (n2,n1,i1)-->T208(Stat10,Stat6,Stat17,Stat19) ==> i1 notin n1 (n2,n1,i2)-->T208(Stat10,Stat6,Stat17,Stat19) ==> i2 notin n1 (i1,i2)-->Stat7(Stat19*) ==> false; Discharge ==> Stat20: (FORALL i in Za, j in Za | ((i notin n2) & (j notin n2)) ¥imp (eps0 ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) ) (eps0,n2)-->Stat1(Stat3,Stat10,Stat16,Stat20*) ==> false; Discharge ==> QED -- -- Preliminary to showing that the reciprocal of any rational Cauchy sequence not equivalent to the zero sequence -- is, in its turn, a rational Cauchy sequence, we prove that every rational Cauchy sequence not equivalent to -- the zero sequence has, from a certain point on, only non-zero components. -- Theorem 565: ((G in RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp ({h in Za | (FORALL i in (Za - h) | (G~[i]) /= Ra_0)} /= 0). Proof: Suppose_not(g) ==> (g in RaCauchy) & (not Ra_eqseq(g,Ra0Seq)) & Stat1: ({h in Za | (FORALL i in (Za - h) | (g~[i]) /= Ra_0)} = 0) g-->T563 ==> Stat2: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(g~[i]) ¥Ra_GT eps) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(g~[n]) ¥Ra_GT Ra_0)) (a,n)-->Stat2 ==> Stat3: (FORALL i in (Za - n) | (Ra_ABS(g~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(g~[n]) ¥Ra_GT Ra_0) & (a in Ra) & (n in Za) & (a ¥Ra_GT Ra_0) n-->Stat1 ==> Stat4: not(FORALL i in (Za - n) | (g~[i]) /= Ra_0) i0-->Stat4 ==> Stat5: (i0 in (Za - n)) & ((g~[i0]) = Ra_0) i0-->Stat3 ==> Ra_ABS(g~[i0]) ¥Ra_GT a Use_def(RaCauchy) ==> Stat6: g in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat6 ==> g in RaSeq g-->T546 ==> Stat7: (domain(g) = Za) & (range(g) ¥incin Ra) (i0,g)-->T71(Stat7,Stat5*) ==> (g~[i0]) in Ra (g~[i0])-->T527 ==> Ra_ABS(g~[i0]) in Ra (a,Ra_0)-->T473(Stat3*) ==> a ¥Ra_GE Ra_0 (Ra_ABS(g~[i0]),a,Ra_0)-->T509 ==> Ra_ABS(g~[i0]) ¥Ra_GT Ra_0 (Ra_ABS(g~[i0]),Ra_0)-->T473 ==> Ra_ABS(g~[i0]) /= Ra_0 T525 ==> Stat8: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) (g~[i0])-->Stat8 ==> false; Discharge ==> QED -- Theorem 566: ((F in RaSeq) & (M = arb({h in Za | (FORALL i in (Za - h) | (F~[i]) /= Ra_0)}))) ¥imp (Ras_Recip(F) = Ras_Recip(shifted_seq(F,M))). Proof+: Suppose_not(f,m) ==> AUTO -- -- Reasoning by contradiction, assume that $f$ is a counterexample. -- Use_def(Ras_Recip) ==> Stat1: (m = arb({h in Za | (FORALL i in (Za - h) | (f~[i]) /= Ra_0)})) & (shifted_seq({[i, Recip(f~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | (f~[i]) /= Ra_0)})) /= shifted_seq({[i, Recip((shifted_seq(f,m))~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)}))) f-->T546(*) ==> Stat2: (domain(f) = Za) & Svm(f) & (range(f) ¥incin Ra) -- -- The integer $m = arb({h in Za | (FORALL i in (Za - h) | (f~[i]) /= Ra_0)})$ cannot be $0$ -- must belongs to the set ${h in Za | (FORALL i in (Za - h) | (f~[i]) /= Ra_0)}$. -- Use_def(Svm)(Stat2*) ==> Is_map(f) Suppose ==> m = 0 f-->T343(Stat2*) ==> shifted_seq(f,0) = f EQUAL ==> false; Discharge ==> Stat3: m /= 0 ({h in Za | (FORALL i in (Za - h) | (f~[i]) /= Ra_0)})-->T0(Stat1,Stat3*) ==> Stat4: m in {h in Za | (FORALL i in (Za - h) | (f~[i]) /= Ra_0)} ()-->Stat4(Stat4*) ==> Stat5: (m in Za) & Stat6: (FORALL i in (Za - m) | (f~[i]) /= Ra_0) -- -- On the other hand, the analogous shift number $n$ required in the determination of the reciprocal of -- $shifted_seq(f,m)$ must be $0$, since $0$ clearly belongs to the set -- ${h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)}$. -- For, assuming the contrary, there would be an unsigned integer $i0$ for which $((shifted_seq(f,m))~[i0]) = Ra_0$. -- However, $(shifted_seq(f,m))~[i0]$ has the same value as $f~[m ¥PLUS i0]$ and the latter cannot be $Ra_0$, because -- $m ¥PLUS i0$ is not smaller than $m$. Therefore [...] -- -- Suppose ==> Stat7: arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)}) /= 0 Loc_def ==> n = arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)}) ({h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)})-->T0(Stat7*) ==> Stat8: (n * {h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)} = 0) & Stat9: (n in {h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)}) ()-->Stat9 ==> n in Za T211 ==> 0 in Za Suppose ==> 0 in {h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)} (n,0)-->T31(Stat7*) ==> false; Discharge ==> Stat10: 0 notin {h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)} ()-->Stat10(Stat8*) ==> Stat11: not(FORALL i in (Za - 0) | ((shifted_seq(f,m))~[i]) /= Ra_0) i0-->Stat11(Stat11*) ==> Stat12: (i0 in Za) & (((shifted_seq(f,m))~[i0]) = Ra_0) Use_def(shifted_seq)(Stat12*) ==> Stat13: ((f @ Shift(m))~[i0]) = Ra_0 (m,i0)-->T339(Stat5,Stat12*) ==> Stat14: Svm(Shift(m)) & (domain(Shift(m)) = Za) & (range(Shift(m)) ¥incin Za) & ((Shift(m)~[i0])=(m ¥PLUS i0)) (f,Shift(m),i0)-->T130(Stat2,Stat14,Stat12,Stat13*) ==> Ra_0 = f~[Shift(m)~[i0]] EQUAL(Stat14) ==> Stat15: Ra_0 = f~[m ¥PLUS i0] (m,i0)-->T292 ==> Stat16: (i0 ¥PLUS m) notin m ALGEBRA(Stat5,Stat12,Stat16) ==> Stat17: ((m ¥PLUS i0) notin m) & ((m ¥PLUS i0) in Za) (m ¥PLUS i0)-->Stat6(Stat17,Stat15*) ==> false; Discharge ==> Stat18: arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(f,m))~[i]) /= Ra_0)}) = 0 ({[i, Recip((shifted_seq(f,m))~[i])]: i in Za})-->T343(Stat18*) ==> Stat19: shifted_seq({[i, Recip((shifted_seq(f,m))~[i])]: i in Za},0) = {[i, Recip((shifted_seq(f,m))~[i])]: i in Za} EQUAL(Stat1,Stat18,Stat19) ==> Stat20: shifted_seq({[i, Recip(f~[i])]: i in Za}, m) /= {[i, Recip((shifted_seq(f,m))~[i])]: i in Za} -- -- We will refute the inequality just obtained, thereby being able to draw the desired conclusion. -- We begin by observing that $shifted_seq({[i, Recip(f~[i])]: i in Za}, m)$ has the same domain as -- ${[i, Recip((shifted_seq(f,m))~[i])]: i in Za}$, namely $Za$. -- ({[i, Recip(f~[i])]: i in Za},m)-->T354(Stat5,Stat5*) ==> domain(shifted_seq({[i, Recip(f~[i])]: i in Za}, m)) = Za TELEM ==> (Za /= 0) & Svm({[i, Recip((shifted_seq(f,m))~[i])]: i in Za}) & (domain({[i, Recip((shifted_seq(f,m))~[i])]: i in Za}) = Za) -- -- Then, picking an unsigned integer $n0$ where the left-hand side of the inequality Stat20 -- has a value differring from the value of the right-hand side, and simplifying the -- expression of the right-hand value relative to $n0$, we get the inequality -- $(shifted_seq({[i, Recip(f~[i])]: i in Za}, m)~[n0]) /= Recip((shifted_seq(f,m))~[n0])$. -- Hence we get -- $(shifted_seq({[i, Recip(f~[i])]: i in Za}, m)~[n0]) /= Recip(f~[m ¥PLUS n0])$. -- (m, {[i, Recip(f~[i])]: i in Za})-->T352(Stat5,Stat5*) ==> shifted_seq({[i, Recip(f~[i])]: i in Za}, m) in Subseqs({[i, Recip(f~[i])]: i in Za}) TELEM ==> Stat21: Svm({[i, Recip(f~[i])]: i in Za}) & (domain({[i, Recip(f~[i])]: i in Za}) = Za) Use_def(next) ==> domain({[i, Recip(f~[i])]: i in Za}) in next(Za) APPLY(h_thryvar:h) subseq(g->shifted_seq({[i, Recip(f~[i])]: i in Za}, m),f->{[i, Recip(f~[i])]: i in Za}) ==> Svm(shifted_seq({[i, Recip(f~[i])]: i in Za}, m)) (shifted_seq({[i, Recip(f~[i])]: i in Za}, m),{[i, Recip((shifted_seq(f,m))~[i])]: i in Za},Za)-->T337(Stat20*) ==> Stat22: not(FORALL i in Za | (shifted_seq({[i, Recip(f~[i])]: i in Za}, m)~[i]) = ({[i, Recip((shifted_seq(f,m))~[i])]: i in Za}~[i])) n0-->Stat22(Stat22*) ==> Stat23: (n0 in Za) & ((shifted_seq({[i, Recip(f~[i])]: i in Za}, m)~[n0]) /= ({[i,Recip((shifted_seq(f,m))~[i])]: i in Za}~[n0])) APPLY() Must_be_svm(b(i)->Recip((shifted_seq(f,m))~[i]),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,Recip((shifted_seq(f,m))~[i])]: i in Za}~[n0]) = Recip((shifted_seq(f,m))~[n0])) Use_def(shifted_seq)(Stat23*) ==> Stat24: (({[i, Recip(f~[i])]: i in Za} @ Shift(m))~[n0]) /= Recip((f @ Shift(m))~[n0]) (m,n0)-->T339(Stat5,Stat23*) ==> Stat25: Svm(Shift(m)) & (domain(Shift(m)) = Za) & (range(Shift(m)) ¥incin Za) & ((Shift(m)~[n0]) = (m ¥PLUS n0)) (f,Shift(m),n0)-->T129(Stat2,Stat23,Stat25*) ==> ((f @ Shift(m))~[n0]) = (f~[Shift(m)~[n0]]) EQUAL(Stat24) ==> Stat26: (({[i, Recip(f~[i])]: i in Za} @ Shift(m))~[n0]) /= Recip(f~[m ¥PLUS n0]) ({[i, Recip(f~[i])]: i in Za},Shift(m),n0)-->T129(Stat23,Stat25,Stat26*) ==> Stat27: ({[i, Recip(f~[i])]: i in Za}~[(Shift(m))~[n0]]) /= Recip(f~[m ¥PLUS n0]) EQUAL(Stat27,Stat25) ==> Stat28: ({[i, Recip(f~[i])]: i in Za}~[m ¥PLUS n0]) /= Recip(f~[m ¥PLUS n0]) -- -- However, the left-hand side of the inequality so obtained can easily be reduced -- to the same form as the right-hand side, which leads to the sought contradiction. -- APPLY() Must_be_svm(b(i)->Recip(f~[i]),s->Za,u->(m ¥PLUS n0)) ==> Stat29: ((m ¥PLUS n0) in Za) ¥imp (({[i, Recip(f~[i])]: i in Za}~[m ¥PLUS n0]) = Recip(f~[m ¥PLUS n0])) (m,n0)-->T283(Stat5,Stat23,Stat29,Stat28*) ==> false; Discharge ==> QED -- -- What follows generalizes the reflexivity property of $Ra_eqseq$ stated by Theorem 546. -- Theorem 567: ((F in RaCauchy) & (M in Za)) ¥imp ((shifted_seq(F,M) in RaCauchy) & Ra_eqseq(F,shifted_seq(F,M))). Proof: Suppose_not(f,m) ==> AUTO -- -- Assume $f,m$ to be a counterexample to our statement. -- To see that $shifted_seq(f,m)$ is infinite (which will allow us to exploit Theorem 354), -- it suffices to show that its domain is $Za$. This yields that this subsequence of $f$ -- is a Cauchy sequence equivalent to $f$, proving the desired statement. -- T539(*) ==> Stat1: f in RaSeq f-->T546(Stat1*) ==> (domain(f) = Za) & (range(f) ¥incin Ra) & Svm(f) (f,m)-->T354(*) ==> Stat2: domain(shifted_seq(f,m)) = Za (shifted_seq(f,m))-->T172(Stat2*) ==> #domain(shifted_seq(f,m)) ¥incin #shifted_seq(f,m) T209(Stat2*) ==> Card(Za) Za-->T164(Stat2*) ==> Za = #Za T206(Stat2*) ==> (not Finite(Za)) EQUAL(Stat2*) ==> (not Finite(#domain(shifted_seq(f,m)))) (#shifted_seq(f,m),#domain(shifted_seq(f,m)))-->T189(Stat2*) ==> (not Finite(shifted_seq(f,m))) (m,f)-->T352(*) ==> shifted_seq(f,m) in Subseqs(f) (f,shifted_seq(f,m))-->T549(*) ==> false; Discharge ==> QED -- -- -- Theorem 568: ((F in RaCauchy) & (not Ra_eqseq(F,Ra0Seq))) ¥imp (EXISTS g in RaCauchy | Ra_eqseq(F,g) & (Ras_Recip(F) = Ras_Recip(g)) & (FORALL i in Za | ((g~[i]) /= Ra_0) & (Ras_Recip(g)~[i] = Recip(g~[i])))). Proof+: Suppose_not(fp) ==> Stat1: (fp in RaCauchy) & (not Ra_eqseq(fp,Ra0Seq)) & Stat2: (not(EXISTS g in RaCauchy | Ra_eqseq(fp,g) & (Ras_Recip(fp) = Ras_Recip(g)) & (FORALL i in Za | ((g~[i]) /= Ra_0) & (Ras_Recip(g)~[i] = Recip(g~[i]))))) -- -- Reasoning by contradiction, assume that $fp$ is a Cauchy sequence, inequivalent -- to the zero sequence, such that no Cauchy sequence $g$ equivalent to $fp$ and whose -- reciprocal equals the reciprocal $Ras_Recip(fp)$ of $fp$ exists fulfilling -- the condition $(FORALL i in Za | ((g~[i]) /= Ra_0) & (Ras_Recip(g)~[i] = Recip(g~[i])))$. -- Use_def(Ras_Recip) ==> Ras_Recip(fp) = shifted_seq({[i, Recip(fp~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | (fp~[i]) /= Ra_0)})) Loc_def ==> Stat3: m0 = arb({h in Za | (FORALL i in (Za - h) | (fp~[i]) /= Ra_0)}) EQUAL ==> Ras_Recip(fp) = shifted_seq({[i, Recip(fp~[i])]: i in Za}, m0) -- -- We will show that if $shifted_seq(fp,m0)$ is taken as $g$ in Stat2, a contradiction -- proving the desired statement arises. -- Observe, in the first place, that the shift number $m0$ used in the definition of -- $Recip(fp)$ belongs to $Za$; accordingly, $shifted_seq(fp,m0)$ is a subsequence -- (not necessarily infinite, a priori) of the sequence $fp$. -- Suppose ==> Stat4: not((m0 in Za) & (FORALL i in (Za - m0) | (fp~[i]) /= Ra_0)) fp-->T565(Stat1,Stat1*) ==> Stat5: {h in Za | (FORALL i in (Za - h) | (fp~[i]) /= Ra_0)} /= 0 ({h in Za | (FORALL i in (Za - h) | (fp~[i]) /= Ra_0)})-->T0(Stat3,Stat5*) ==> Stat6: (m0 in {h in Za | (FORALL i in (Za - h) | (fp~[i]) /= Ra_0)}) ()-->Stat6(Stat4*) ==> false; Discharge ==> Stat7: (m0 in Za) & Stat8: (FORALL i in (Za - m0) | (fp~[i]) /= Ra_0) -- -- The preceding Theorem 566 and Theorem 567 yield that $shifted_seq(fp,m0)$ is a -- Cauchy sequence equivalent to $fp$ and has the same reciprocal as $fp$. -- (fp,m0)-->T567(Stat1,Stat7*) ==> Stat9: (shifted_seq(fp,m0) in RaCauchy) & (Ra_eqseq(fp,shifted_seq(fp,m0))) T539(Stat1,Stat1*) ==> Stat10: fp in RaSeq (fp,m0)-->T566(Stat10,Stat3*) ==> Stat11: Ras_Recip(fp) = Ras_Recip(shifted_seq(fp,m0)) -- -- At this point, all that remains to be proved is that each component of the sequence -- $shifted_seq(fp,m0)$ is non-zero and each component of the reciprocal of this sequence -- equals the reciprocal of the corresponding component of $shifted_seq(fp,m0)$. -- -- -- To see that zero cannot be a component of $shifted_seq(fp,m)$, otherwise stated that -- $((shifted_seq(fp,m0))~[i]) /= Ra_0$ -- for any $i in Za$, it suffices to exploit the definitions -- of the reciprocal of a rational Cauchy sequence and of the $Shift$ sequence. -- Suppose ==> Stat12: not(FORALL i in Za | ((shifted_seq(fp,m0))~[i]) /= Ra_0) i2-->Stat12(Stat12*) ==> Stat13: (i2 in Za) & (((shifted_seq(fp,m0))~[i2]) = Ra_0) Use_def(shifted_seq)(Stat12*) ==> ((fp @ Shift(m0))~[i2]) = Ra_0 fp-->T546(Stat10,Stat10*) ==> Stat14: (domain(fp) = Za) & (range(fp) ¥incin Ra) & Svm(fp) (m0,i2)-->T339(Stat7,Stat13*) ==> Svm(Shift(m0)) & (domain(Shift(m0)) = Za) & (range(Shift(m0)) ¥incin Za) & ((Shift(m0)~[i2])=(m0 ¥PLUS i2)) (fp,Shift(m0),i2)-->T130(Stat13*) ==> Ra_0 = fp~[Shift(m0)~[i2]] EQUAL(Stat14) ==> Stat15: Ra_0 = fp~[m0 ¥PLUS i2] (m0,i2)-->T283(Stat7,Stat13*) ==> (m0 ¥PLUS i2) in Za (m0,i2)-->T292(Stat7,Stat7*) ==> (m0 ¥PLUS i2) notin m0 (m0 ¥PLUS i2)-->Stat8(Stat15*) ==> false; Discharge ==> Stat16: (FORALL i in Za | ((shifted_seq(fp,m0))~[i]) /= Ra_0) -- Suppose ==> Stat17: not(FORALL i in Za | (((shifted_seq(fp,m0))~[i]) /= Ra_0) & ((Ras_Recip(shifted_seq(fp,m0))~[i]) = Recip(shifted_seq(fp,m0)~[i]))) i0-->Stat17(Stat17*) ==> Stat18: (i0 in Za) & ((((shifted_seq(fp,m0))~[i0]) = Ra_0) or ((Ras_Recip(shifted_seq(fp,m0))~[i0]) /= Recip(shifted_seq(fp,m0)~[i0]))) i0-->Stat16(Stat18*) ==> (Ras_Recip(shifted_seq(fp,m0))~[i0]) /= Recip(shifted_seq(fp,m0)~[i0]) -- -- Observe now that on the one hand -- $arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)})$ -- must differ from $0$. -- Use_def(Ras_Recip)(Stat18*) ==> (shifted_seq({[i, Recip((shifted_seq(fp,m0))~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}))~[i0]) /= Recip(shifted_seq(fp,m0)~[i0]) Suppose ==> arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}) = 0 ({[i, Recip((shifted_seq(fp,m0))~[i])]: i in Za})-->T343(Stat18*) ==> shifted_seq({[i, Recip((shifted_seq(fp,m0))~[i])]: i in Za}, 0) = {[i, Recip((shifted_seq(fp,m0))~[i])]: i in Za} EQUAL(Stat18) ==> (shifted_seq({[i, Recip((shifted_seq(fp,m0))~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}))~[i0]) = ({[i, Recip((shifted_seq(fp,m0))~[i])]: i in Za}~[i0]) APPLY() Must_be_svm(b(i)->Recip((shifted_seq(fp,m0))~[i]),s->Za,u->i0) ==> (i0 in Za) ¥imp ({[i,Recip((shifted_seq(fp,m0))~[i])]: i in Za}~[i0] = Recip((shifted_seq(fp,m0))~[i0])) (Stat17*)ELEM ==> false; Discharge ==> Stat19: arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}) /= 0 -- -- But, on the other hand, if it differs from $0$, then $0$ cannot be a member of the -- non-void set -- ${h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}$,... -- ({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)})-->T0(Stat19*) ==> Stat20: (arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}) in {h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}) & (arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}) * {h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)} = 0) ()-->Stat20(Stat20*) ==> arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}) in Za -- (arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}))-->T207(Stat20*) ==> Ord(arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)})) T211 ==> Stat21: Ord(0) & (0 in Za) (arb({h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)}),0)-->T31(Stat19*) ==> Stat22: 0 notin {h in Za | (FORALL i in (Za - h) | ((shifted_seq(fp,m0))~[i]) /= Ra_0)} -- -- ... and hence there must exist a non-negative integer $i1$ such that the $i1$-th component -- of $shifted_seq(fp,m0))~[i1])$ is zero,... -- ()-->Stat22(Stat21*) ==> Stat23: not(FORALL i in (Za - 0) | ((shifted_seq(fp,m0))~[i]) /= Ra_0) i1-->Stat23(Stat23*) ==> Stat24: (i1 in Za) & (((shifted_seq(fp,m0))~[i1]) = Ra_0) -- -- ... a possibility which we have discarded already. -- i1-->Stat16(Stat24*) ==> false; Discharge ==> Stat25: (FORALL i in Za | (((shifted_seq(fp,m0))~[i]) /= Ra_0) & ((Ras_Recip(shifted_seq(fp,m0))~[i]) = Recip(shifted_seq(fp,m0)~[i]))) -- -- Having now proved that $g=shifted_seq(fp,m)$ enjoys all properties appearing in the -- formula Stat2 stating that no sequence $g$ with those properties exists, we reach -- by contradiction the desired conclusion. -- (shifted_seq(fp,m0))-->Stat2(Stat9,Stat11,Stat25*) ==> false; Discharge ==> QED -- -- -- Theorem 569: [The reciprocal of a non-null rational sequence is a rational sequence] ((G in RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp (Ras_Recip(G) in RaSeq). Proof: --?? Suppose_not(gp) ==> Stat1: AUTO Suppose_not(gp) ==> Stat1: (gp in RaCauchy) & (not Ra_eqseq(gp,Ra0Seq)) & (Ras_Recip(gp) notin RaSeq) -- -- Reasoning by contradiction, assume that $gp$ is a Cauchy sequence, inequivalent to the zero sequence, and that -- the reciprocal $Ras_Recip(gp)$ of $gp$ is not an infinite sequence of rational numbers. -- Use_def(Ras_Recip) ==> shifted_seq({[i, Recip(gp~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)})) notin RaSeq Loc_def ==> Stat2: a0 = arb({h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)}) EQUAL ==> shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0) notin RaSeq -- -- Observe, in the first place, that the shift number $a0$ used in the definition of -- $Ras_Recip(gp)$ belongs to $Za$; accordingly, $Recip(gp)$ is a subsequence -- (not necessarily infinite, a priori) of the sequence ${[i, Recip(gp~[i])]: i in Za}$. -- Suppose ==> Stat3: not((a0 in Za) & (FORALL i in (Za - a0) | (gp~[i]) /= Ra_0)) gp-->T565(Stat1,Stat1*) ==> Stat4: {h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)} /= 0 ({h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)})-->T0(Stat2,Stat4*) ==> Stat5: (a0 in {h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)}) ()-->Stat5(Stat3*) ==> false; Discharge ==> Stat6: (a0 in Za) & Stat7: (FORALL i in (Za - a0) | (gp~[i]) /= Ra_0) -- (a0, {[i, Recip(gp~[i])]: i in Za})-->T352(Stat6,Stat6*) ==> shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0) in Subseqs({[i, Recip(gp~[i])]: i in Za}) -- -- Hence $Recip(gp)$ is a single-valued map whose domain and range are included -- in the domain and range of ${[i, Recip(gp~[i])]: i in Za}$ (the former of which -- is $Za$), respectively. -- TELEM ==> Stat8: Svm({[i, Recip(gp~[i])]: i in Za}) & (domain({[i, Recip(gp~[i])]: i in Za}) = Za) Use_def(next) ==> domain({[i, Recip(gp~[i])]: i in Za}) in next(Za) APPLY(h_thryvar:h) subseq(g->shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0),f->{[i, Recip(gp~[i])]: i in Za}) ==> Stat9: Svm(shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0)) & (shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0) ¥incin (domain({[i, Recip(gp~[i])]: i in Za}) ¥PROD range({[i, Recip(gp~[i])]: i in Za}))) -- -- Moreover, the domain of $Recip(gp)$ is precisely $Za$; therefore our -- initial hypothesis becomes that $Recip(gp)$ is not included in $Za ¥PROD Ra$, -- while on the other hand it is included in $Za ¥PROD range({[i, Recip(gp~[i])]: i in Za})$. -- ({[i, Recip(gp~[i])]: i in Za},a0)-->T354(Stat8,Stat6*) ==> Stat10: domain(shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0)) = Za Use_def(RaSeq) ==> Stat11: shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0) notin {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} ()-->Stat11(Stat9*) ==> Stat12: shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0) ¥nincin (Za ¥PROD Ra) -- -- -- Suppose ==> Stat13: shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0) ¥nincin (Za ¥PROD {Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0}) (shifted_seq({[i, Recip(gp~[i])]: i in Za},a0),domain({[i, Recip(gp~[i])]: i in Za}),range({[i, Recip(gp~[i])]: i in Za}))-->T141(Stat9,Stat9*) ==> Stat14: Is_map(shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0)) (shifted_seq({[i, Recip(gp~[i])]: i in Za},a0),Za,{Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0})-->T141(Stat13,Stat10,Stat14*) ==> Stat15: not(range(shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0)) ¥incin {Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0}) d-->Stat15(Stat15*) ==> (d in range(shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0))) & Stat16: (d notin {Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0}) Use_def(shifted_seq)(Stat15*) ==> d in range({[i, Recip(gp~[i])]: i in Za} @ Shift(a0)) Use_def(Shift)(Stat15*) ==> d in range({[i, Recip(gp~[i])]: i in Za} @ {[i, a0 ¥PLUS i]: i in Za}) Use_def(@)(Stat15*) ==> d in range({[car(x),cdr(y)]: x in {[i, a0 ¥PLUS i]: i in Za}, y in {[i, Recip(gp~[i])]: i in Za} | cdr(x) = car(y)}) SIMPLF(Stat15*) ==> Stat17: d in range({[car([i, a0 ¥PLUS i]),cdr([j, Recip(gp~[j])])]: i in Za, j in Za | cdr([i, a0 ¥PLUS i]) = car([j, Recip(gp~[j])])}) (Stat17)ELEM ==> Stat18: d in {Recip(gp~[j]): i in Za, j in Za | (a0 ¥PLUS i) = j} (i1,j1)-->Stat18(Stat18*) ==> Stat19: (i1 in Za) & (j1 in Za) & (d = Recip(gp~[j1])) & ((a0 ¥PLUS i1) = j1) j1-->Stat16(Stat19*) ==> (gp~[j1]) = Ra_0 EQUAL(Stat19) ==> Stat20: (gp~[a0 ¥PLUS i1]) = Ra_0 Suppose ==> Stat21: (a0 ¥PLUS i1) notin (Za - a0) ALGEBRA(Stat6,Stat19,Stat21*) ==> Stat22: ((a0 ¥PLUS i1) in a0) & ((a0 ¥PLUS 0) notin a0) Suppose ==> i1 = 0 EQUAL(Stat19) ==> false; Discharge ==> Stat23: i1 /= 0 (a0,i1)-->T284(Stat6,Stat19,Stat23,Stat22*) ==> false; Discharge ==> Stat24: (a0 ¥PLUS i1) in (Za - a0) (a0 ¥PLUS i1)-->Stat7(Stat24,Stat20*) ==> false; Discharge ==> Stat25: shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0) ¥incin (Za ¥PROD {Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0}) Suppose ==> Stat26: not({Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0 } ¥incin Ra) r0-->Stat26 ==> (r0 notin Ra) & Stat27: (r0 in {Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0}) i0-->Stat27 ==> Stat28: (i0 in Za) & (Recip(gp~[i0]) notin Ra) & ((gp~[i0]) /= Ra_0) (gp,i0)-->T550(Stat28,Stat1*) ==> (gp~[i0]) in Ra (gp~[i0])-->T462(Stat26) ==> false; Discharge ==> Stat29: {Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0} ¥incin Ra (Za,Za,{Recip(gp~[i]): i in Za | (gp~[i]) /= Ra_0},Ra)-->T256(Stat25,Stat29,Stat12*) ==> false; Discharge ==> QED -- -- Next we prove that the reciprocal of any rational Cauchy sequence -- not equivalent to the zero sequence is, in its turn, a rational Cauchy sequence. -- Theorem 570: [Reciprocal and quotient of rational Cauchy sequences are, when defined, Cauchy sequences] (({F,G} ¥incin RaCauchy) & (not Ra_eqseq(G,Ra0Seq))) ¥imp ((Ras_Recip(G) in RaCauchy) & ((F ¥Ras_OVER G) in RaCauchy)). Proof+: Suppose_not(f,gq) ==> AUTO -- -- Reasoning by contradiction, assume that $f,gq$ are Cauchy sequences, $gq$ is inequivalent to the zero sequence, and -- either the reciprocal of $gq$ or the quotient of $f$ by $gq$ fails to be a Cauchy sequence. Of these alternatives, -- the former prevails immediately, and we must therefore proceed assuming that $Recip(gq)$ is not a Cauchy sequence. -- Suppose ==> Ras_Recip(gq) in RaCauchy Use_def(¥Ras_OVER) ==> (f ¥Ras_TIMES Ras_Recip(gq)) notin RaCauchy (f, Ras_Recip(gq))-->T561 ==> false; Discharge ==> Stat1: (gq in RaCauchy) & (not Ra_eqseq(gq,Ra0Seq)) & (Ras_Recip(gq) notin RaCauchy) -- -- Without loss of generality, we can assume that there is a rational -- Cauchy sequence $gp$ whose reciprocal equals the sequence of the -- reciprocals of the individual components of $gp$ and fails to be -- a rational Cauchy sequence. Obviously such sequence $gp$ is not -- equivalent to the everywhere null sequence. -- gq-->T568 ==> Stat2: (EXISTS g in RaCauchy | Ra_eqseq(gq,g) & (Ras_Recip(gq) = Ras_Recip(g)) & (FORALL i in Za | ((g~[i]) /= Ra_0) & (Ras_Recip(g)~[i] = Recip(g~[i])))) gp-->Stat2(Stat1*) ==> Stat3: (gp in RaCauchy) & Ra_eqseq(gq,gp) & (Ras_Recip(gp) notin RaCauchy) & Stat4: (FORALL i in Za | ((gp~[i]) /= Ra_0) & (Ras_Recip(gp)~[i] = Recip(gp~[i]))) Suppose ==> Ra_eqseq(gp,Ra0Seq) T545(Stat3*) ==> Ra0Seq in RaCauchy T539(*) ==> (Ra0Seq in RaSeq) & (gq in RaSeq) & (gp in RaSeq) (gq,gp,Ra0Seq)-->T553(Stat3*) ==> Ra_eqseq(Ra0Seq,gq) Ra0Seq-->T546(Stat3*) ==> Ra_eqseq(Ra0Seq,Ra0Seq) (Ra0Seq,Ra0Seq,gq)-->T553(*) ==> false; Discharge ==> not(Ra_eqseq(gp,Ra0Seq)) -- -- Saying that $Ras_Recip(gp)$ is not a Cauchy sequence amounts to asserting that -- either it is not an infinite sequence of rational numbers -- or for some positive rational number $eps=eps0$ the set -- ${ i * j : i in Za, j in Za | Ra_ABS((shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0)~[i]) ¥Ra_MINUS (shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0)~[j])) ¥Ra_GT eps }$, -- where $a0=arb({h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)})$, is infinite. -- However, the former case must be excluded by Theorem T455a. -- Use_def(RaCauchy)(Stat3*) ==> Stat5: Ras_Recip(gp) notin {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} gp-->T569(Stat3*) ==> (Ras_Recip(gp) in RaSeq) () --> Stat5(Stat5*) ==> (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS(((Ras_Recip(gp))~[i]) ¥Ra_MINUS ((Ras_Recip(gp))~[j])) ¥Ra_GT eps }))) Use_def(Ras_Recip)(Stat5*) ==> Stat6: (shifted_seq({[i, Recip(gp~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)})) in RaSeq) & Stat7: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((shifted_seq({[i, Recip(gp~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)}))~[i]) ¥Ra_MINUS (shifted_seq({[i, Recip(gp~[i])]: i in Za}, arb({h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)}))~[j])) ¥Ra_GT eps }))) Loc_def ==> Stat8: a0 = arb({h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)}) EQUAL(Stat6) ==> Stat9: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0)~[i]) ¥Ra_MINUS (shifted_seq({[i, Recip(gp~[i])]: i in Za}, a0)~[j])) ¥Ra_GT eps }))) -- -- After recalling a few basic facts which will be useful in the ongoing, -- observe that the shift number $a0$ used in the definition of $Recip(gp)$ -- is 0 and hence it belongs to $Za$. This remark enables us to simplify -- Stat9, referring it directly to the sequence -- ${[i, Recip(gp~[i])]: i in Za}$ instead of to one of its shifted -- subsequences. -- T451(Stat9*) ==> Stat10: Ra_0 in Ra T525(Stat9*) ==> Stat11: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) & Stat12: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) & Stat13: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_Rev(x ¥Ra_PLUS Ra_Rev(y)) = (y ¥Ra_PLUS Ra_Rev(x)))) & Stat14: (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE x)) -- Suppose ==> Stat15: not((a0 = 0) & (a0 in Za) & (FORALL i in (Za - a0) | (gp~[i]) /= Ra_0)) T211(Stat15*) ==> Ord(0) & (0 in Za) Suppose ==> Stat16: 0 notin {h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)} ()-->Stat16(Stat15*) ==> Stat17: not(FORALL i in (Za - 0) | (gp~[i]) /= Ra_0) i5-->Stat17(Stat17*) ==> (i5 in Za) & ((gp~[i5]) = Ra_0) i5-->Stat4(Stat17*) ==> false; Discharge ==> Stat18: 0 in {h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)} (Stat8,Stat18)ELEM ==> (0 notin a0) & Stat19: (a0 in {h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)}) ()-->Stat19(Stat18*) ==> (a0 in Za) & (FORALL i in (Za - a0) | (gp~[i]) /= Ra_0) (0,a0)-->T31(Stat15*) ==> false; Discharge ==> Stat20: (a0 = 0) & (a0 in Za) & Stat21: (FORALL i in (Za - a0) | (gp~[i]) /= Ra_0) Suppose ==> Stat22: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS(({[i, Recip(gp~[i])]: i in Za}~[i]) ¥Ra_MINUS ({[i, Recip(gp~[i])]: i in Za}~[j])) ¥Ra_GT eps })) TELEM ==> Is_map({[i, Recip(gp~[i])]: i in Za}) & (domain({[i, Recip(gp~[i])]: i in Za}) = Za) ({[i, Recip(gp~[i])]: i in Za})-->T343(Stat20*) ==> Stat23: shifted_seq({[i, Recip(gp~[i])]: i in Za},0) = {[i, Recip(gp~[i])]: i in Za} EQUAL(Stat23,Stat20,Stat22,Stat9) ==> false; Discharge ==> Stat24: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS(({[i, Recip(gp~[i])]: i in Za}~[i]) ¥Ra_MINUS ({[i, Recip(gp~[i])]: i in Za}~[j])) ¥Ra_GT eps }))) -- -- Having already discarded the possibility that the reciprocal of $gp$ be not an infinite sequence of -- rational numbers, we are left with the other alternative to consider. This will lead to a contradiction too. -- Pick a positive rational number $a$ and a nonnegative integer $n0$ so that all components -- of the sequence $Ra_ABS(gp~[i])$ are, from the $n0$-th on, greater than $a$. The reciprocal of $a$ -- and the square of this reciprocal clearly belong to $Ra$. -- eps0-->Stat24(Stat24,Stat24*) ==> Stat25: (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({ i * j : i in Za, j in Za | Ra_ABS(({[i, Recip(gp~[i])]: i in Za}~[i]) ¥Ra_MINUS ({[i, Recip(gp~[i])]: i in Za}~[j])) ¥Ra_GT eps0 })) gp-->T563 ==> Stat26: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(gp~[i]) ¥Ra_GT eps) & (Ra_ABS(gp~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(gp~[n]) ¥Ra_GT Ra_0)) (a,n0)-->Stat26 ==> Stat27: (a in Ra) & (a ¥Ra_GT Ra_0) & (n0 in Za) & Stat28: (FORALL i in (Za - n0) | (Ra_ABS(gp~[i]) ¥Ra_GT a) & (Ra_ABS(gp~[i]) ¥Ra_GT Ra_0)) (a,Ra_0)-->T473(Stat10,Stat27) ==> Stat29: a /= Ra_0 a-->T462(Stat27*) ==> Stat30: Recip(a) in Ra ALGEBRA(Stat27*) ==> Stat31: ((Recip(a) ¥Ra_TIMES Recip(a)) in Ra) -- -- We begin here the main part of this proof by showing that -- $Ra_ABS(Recip(gp~[i]) ¥Ra_MINUS Recip(gp~[j])) ¥Ra_LE ((Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j]))) ¥Ra_OVER (a ¥Ra_TIMES a))$ -- and -- $({[i, Recip(gp~[i])]: i in Za}~[i]) = Recip(gp~[i])$, -- $({[i, Recip(gp~[i])]: i in Za}~[j]) = Recip(gp~[j])$ -- hold for all $i,j in (Za - n0)$, which we now show in a few lines. -- Suppose ==> Stat32: not(FORALL i in (Za - n0), j in (Za - n0) | Ra_ABS(Recip(gp~[i]) ¥Ra_MINUS Recip(gp~[j])) ¥Ra_LE ((Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a)))) (p,q)-->Stat32(Stat32*) ==> Stat33: (p in (Za - n0)) & (q in (Za - n0)) & (not Ra_ABS(Recip(gp~[p]) ¥Ra_MINUS Recip(gp~[q])) ¥Ra_LE ((Ra_ABS((gp~[p]) ¥Ra_MINUS (gp~[q]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a)))) (gp,p)-->T550(Stat33,Stat3*) ==> Stat34: (gp~[p]) in Ra (gp,q)-->T550(Stat33,Stat3*) ==> Stat35: (gp~[q]) in Ra p-->Stat28 ==> Stat36: Ra_ABS(gp~[p]) ¥Ra_GT a q-->Stat28 ==> Stat37: Ra_ABS(gp~[q]) ¥Ra_GT a (gp~[p],gp~[q],a,a)-->T538(Stat34,Stat35,Stat36,Stat37,Stat27,Stat33*) ==> false; Discharge ==> Stat38: (FORALL i in (Za - n0), j in (Za - n0) | Ra_ABS(Recip(gp~[i]) ¥Ra_MINUS Recip(gp~[j])) ¥Ra_LE ((Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a)))) -- -- Secondly, we show that the set of all intersections $i*j$ with $i,j in (Za-n0)$ such that -- $Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))$ -- is finite; since, moreover, this is a set of unsigned integers, it has an upper bound $u0$. -- Suppose ==> Stat39: (not Finite({i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )})) Set_monot ==> {i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )} ¥incin {i * j : i in Za, j in Za | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )} ({i * j : i in Za, j in Za | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )},{i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )})-->T189(Stat39) ==> (not Finite({i * j : i in Za, j in Za | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )})) Use_def(RaCauchy)(Stat3) ==> Stat40: gp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat40(Stat40) ==> Stat41: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT eps })) ALGEBRA ==> ((eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) in Ra) & (Ra_0 in Ra) & ((Ra_0 ¥Ra_TIMES a) = Ra_0) & ((a ¥Ra_TIMES a) in Ra) & ((Ra_0 ¥Ra_TIMES (a ¥Ra_TIMES a)) = Ra_0) (a,Ra_0,a)-->T488(Stat27) ==> (a ¥Ra_TIMES a) ¥Ra_GT (Ra_0 ¥Ra_TIMES a) EQUAL(Stat41) ==> (a ¥Ra_TIMES a) ¥Ra_GT Ra_0 (eps0,Ra_0,a ¥Ra_TIMES a)-->T488(Stat25) ==> (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) ¥Ra_GT (Ra_0 ¥Ra_TIMES (a ¥Ra_TIMES a)) EQUAL(Stat41) ==> (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) ¥Ra_GT Ra_0 (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))-->Stat41(Stat39*) ==> false; Discharge ==> Stat42: Finite({i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )}) -- Suppose ==> Stat43: not({i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )} ¥incin Za) c2-->Stat43(Stat43) ==> (c2 notin Za) & Stat44: (c2 in {i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )}) (i2,j2)-->Stat44(Stat43) ==> (i2 in Za) & (j2 in Za) & ((i2 * j2) notin Za) T206 ==> Ord(Za) (i2,j2)-->T29(Stat43) ==> false; Discharge ==> Stat45: {i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )} ¥incin Za Loc_def ==> Stat46: u0 = Un({i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )}) -- -- The upper bound $u0$ is also the maximum of -- ${i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )}$, -- provided this set is nonempty. -- ({i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )})-->T320(Stat42) ==> Stat47: (u0 in Za) & (({i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )} /= 0) ¥imp (u0 in {i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a) )})) -- -- Both $n0$ and $next(u0)$ are easily shown to belong to $Za$; therefore the -- larger of them belongs to $Za$; hence, due to a peculiar property of Cauchy sequences -- captured by the THEORY cauchyseq_lemma, -- the set of all intersections $i*j$ with $i,j in (Za-(next(u0) + n0))$ such that -- $Recip(gp~[i]) ¥Ra_MINUS Recip(gp~[j]) ¥Ra_GT eps0$ is infinite. From this set we can -- pick an element $i3*j3$. -- Suppose ==> Stat48: n0 notin {h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)} ()-->Stat48(Stat27*) ==> Stat49: (not(FORALL i in (Za - n0) | (gp~[i]) /= Ra_0)) n1-->Stat49(Stat49) ==> Stat50: (n1 in (Za - n0)) & ((gp~[n1]) = Ra_0) (gp,n1)-->T550(Stat50,Stat3*) ==> (gp~[n1]) in Ra n1-->Stat28(Stat27,Stat50*) ==> Ra_ABS(gp~[n1]) ¥Ra_GT Ra_0 (Ra_ABS(gp~[n1]),Ra_0)-->T473(Stat49*) ==> Ra_ABS(gp~[n1]) /= Ra_0 (gp~[n1])-->Stat11(Stat49*) ==> false; Discharge ==> Stat51: n0 in {h in Za | (FORALL i in (Za - h) | (gp~[i]) /= Ra_0)} (Stat20,Stat51*)ELEM ==> Stat52: n0 notin a0 -- Suppose ==> next(u0) notin Za ALGEBRA(Stat52) ==> 1 in Za u0-->T317(Stat47*) ==> (u0 ¥PLUS 1) = next(u0) (u0,1)-->T283(Stat47*) ==> false; Discharge ==> Stat53: next(u0) in Za (Stat27,Stat27*)ELEM ==> n0 in Za (Stat53)ELEM ==> Ord(n0) & Ord(next(u0)) Suppose ==> (next(u0) + n0) notin Za (next(u0),n0)-->T29(Stat47*) ==> false; Discharge ==> (next(u0) + n0) in Za -- APPLY() cauchyseq_lemma(n0->(next(u0)+n0),R(i,j)->(Ra_ABS(({[i, Recip(gp~[i])]: i in Za}~[i]) ¥Ra_MINUS ({[i, Recip(gp~[i])]: i in Za}~[j])) ¥Ra_GT eps0)) ==> Stat55: not(Finite({ i * j : i in (Za - (next(u0)+n0)), j in (Za - (next(u0)+n0)) | Ra_ABS(({[i, Recip(gp~[i])]: i in Za}~[i]) ¥Ra_MINUS ({[i, Recip(gp~[i])]: i in Za}~[j])) ¥Ra_GT eps0 })) T188(Stat55*) ==> Finite(0) EQUAL(Stat55) ==> Stat56: { i * j : i in (Za - (next(u0)+n0)), j in (Za - (next(u0)+n0)) | Ra_ABS(({[i, Recip(gp~[i])]: i in Za}~[i]) ¥Ra_MINUS ({[i, Recip(gp~[i])]: i in Za}~[j])) ¥Ra_GT eps0 } /= 0 (i3,j3)-->Stat56(Stat56*) ==> Stat57: (i3 in (Za - (next(u0)+n0))) & (j3 in (Za - (next(u0)+n0))) & (Ra_ABS(({[i, Recip(gp~[i])]: i in Za}~[i3]) ¥Ra_MINUS ({[i, Recip(gp~[i])]: i in Za}~[j3])) ¥Ra_GT eps0) -- -- Obviously, $i3$ and $j3$ belong to $Za - n0$. -- (It will turn out later that they do not exceed $next(u0)$ -- and the smaller of them is at most $u0$.) -- (Stat57,Stat57*)ELEM ==> Stat58: (i3 in Za) & (j3 in Za) & (i3 notin n0) & (j3 notin n0) & (i3 notin next(u0)) & (j3 notin next(u0)) -- -- -- Suppose ==> Stat59: Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) Suppose ==> Stat60: (i3 * j3) notin {i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))} (i3,j3)-->Stat60(Stat58*) ==> false; Discharge ==> Stat61: (i3 * j3) in {i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))} ({i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))})-->T274(Stat61*) ==> Stat62: (FORALL x in {i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))} | x ¥incin Un({i * j : i in (Za - n0), j in (Za - n0) | Ra_ABS((gp~[i]) ¥Ra_MINUS (gp~[j])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))})) (i3 * j3)-->Stat62(Stat61,Stat46*) ==> Stat63: (i3 * j3) ¥incin u0 -- (Stat58)ELEM ==> Stat64: Ord(i3) & Ord(j3) (i3,j3)-->T29(Stat64*) ==> Stat66: ((i3 * j3) = i3) or ((j3 * i3) = j3) -- Suppose ==> (not(Ord(i3 * j3))) or ((i3 * j3) notin (Za - next(u0))) Suppose ==> (i3 * j3) = i3 (Stat58,Stat58*)ELEM ==> i3 in (Za - next(u0)) EQUAL(Stat64) ==> false; Discharge ==> Stat67: (i3 * j3) /= i3 (Stat66,Stat67*)ELEM ==> (i3 * j3) = j3 (Stat58,Stat58*)ELEM ==> j3 in (Za - next(u0)) EQUAL(Stat64) ==> false; Discharge ==> Stat68: Ord(i3 * j3) & ((i3 * j3) in (Za - next(u0))) Use_def(next)(Stat68) ==> (i3 * j3) in (Za - (u0+{u0})) (u0,i3 * j3)-->T31(Stat47*) ==> Stat69: (u0 in (i3 * j3)) (Stat69,Stat63*)ELEM ==> false; Discharge ==> Stat70: not(Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) ¥Ra_GT (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))) -- -- -- Suppose ==> Stat71: not(Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) ¥Ra_GT eps0) TELEM ==> Stat72: Svm({[i, Recip(gp~[i])]: i in Za}) & (domain({[i, Recip(gp~[i])]: i in Za}) = Za) Suppose ==> Stat73: [i3,Recip(gp~[i3])] notin {[i,Recip(gp~[i])]: i in Za} i3-->Stat73(Stat58*) ==> false; Discharge ==> Stat74: [i3,Recip(gp~[i3])] in {[i,Recip(gp~[i])]: i in Za} Suppose ==> Stat75: [j3,Recip(gp~[j3])] notin {[i,Recip(gp~[i])]: i in Za} j3-->Stat75(Stat58*) ==> false; Discharge ==> [j3,Recip(gp~[j3])] in {[i,Recip(gp~[i])]: i in Za} ({[i,Recip(gp~[i])]: i in Za},[i3,Recip(gp~[i3])])-->T74(Stat74*) ==> ({[i,Recip(gp~[i])]: i in Za}~[car([i3,Recip(gp~[i3])])]) = cdr([i3,Recip(gp~[i3])]) ({[i,Recip(gp~[i])]: i in Za},[j3,Recip(gp~[j3])])-->T74(Stat74*) ==> ({[i,Recip(gp~[i])]: i in Za}~[car([j3,Recip(gp~[j3])])]) = cdr([j3,Recip(gp~[j3])]) TELEM ==> car([i3,Recip(gp~[i3])]) = i3 TELEM ==> cdr([i3,Recip(gp~[i3])]) = Recip(gp~[i3]) TELEM ==> car([j3,Recip(gp~[j3])]) = j3 TELEM ==> cdr([j3,Recip(gp~[j3])]) = Recip(gp~[j3]) EQUAL(Stat70) ==> Stat76: not(Ra_ABS(({[i, Recip(gp~[i])]: i in Za}~[i3]) ¥Ra_MINUS ({[i, Recip(gp~[i])]: i in Za}~[j3])) ¥Ra_GT eps0) (Stat57,Stat76*)ELEM ==> false; Discharge ==> Stat77: Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) ¥Ra_GT eps0 -- -- -- (gp,j3)-->T550(Stat58,Stat3*) ==> Stat78: (gp~[j3]) in Ra (gp,i3)-->T550(Stat58,Stat3*) ==> Stat79: (gp~[i3]) in Ra Suppose ==> Stat80: Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) notin Ra Suppose ==> Stat81: ((gp~[i3]) = Ra_0) or ((gp~[j3]) = Ra_0) i3-->Stat21(Stat20*) ==> (gp~[i3]) /= Ra_0 j3-->Stat21(Stat20*) ==> (gp~[j3]) /= Ra_0 (Stat81*)Discharge ==> Stat82: not(((gp~[i3]) = Ra_0) or ((gp~[j3]) = Ra_0)) (gp~[j3])-->T462(Stat78,Stat82*) ==> Stat83: Recip(gp~[j3]) in Ra (gp~[i3])-->T462(Stat79,Stat82*) ==> Stat84: Recip(gp~[i3]) in Ra ALGEBRA(Stat83,Stat84) ==> Stat85: (Ra_Rev(Recip(gp~[j3])) in Ra) & ((Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) in Ra) (Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3]))-->T527(Stat85,Stat80*) ==> false; Discharge ==> Stat86: Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) in Ra -- T513(Stat79*) ==> Stat87: (FORALL x in Ra | not(x ¥Ra_LT x)) eps0-->Stat87(Stat25,Stat25*) ==> Stat88: not(eps0 ¥Ra_LT eps0) Suppose ==> Stat89: not(Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) ¥Ra_LE eps0) (Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])),eps0)-->T526(Stat86,Stat25,Stat89*) ==> Stat90: Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) ¥Ra_GT eps0 (i3,j3)-->Stat38(Stat58*) ==> Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) ¥Ra_LE ((Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))) (Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])),((Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))))-->T473(Stat86*) ==> Stat91: ((Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))) ¥Ra_GE Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) ALGEBRA(Stat78,Stat79) ==> ((gp~[i3]) ¥Ra_MINUS (gp~[j3])) in Ra ((gp~[i3]) ¥Ra_MINUS (gp~[j3]))-->T527(Stat91*) ==> Stat92: (Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) in Ra) & (Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) ¥Ra_GE Ra_0) ALGEBRA(Stat92,Stat30) ==> Stat93: ((Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))) in Ra (((Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))),Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])),eps0)-->T510(Stat86,Stat93,Stat25,Stat90,Stat91*) ==> Stat94: ((Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))) ¥Ra_GT eps0 ALGEBRA(Stat25,Stat27,Stat30*) ==> Stat95: ((eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) in Ra) & (Ra_0 in Ra) & ((Ra_0 ¥Ra_TIMES Recip(a)) = Ra_0) (Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])),eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))-->T526(Stat70*) ==> Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) ¥Ra_LE (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) a-->T491(Stat27*) ==> Stat96: Recip(a) ¥Ra_GT Ra_0 (Recip(a),Ra_0,Recip(a))-->T488(Stat30,Stat95,Stat96*) ==> (Recip(a) ¥Ra_TIMES Recip(a)) ¥Ra_GT (Ra_0 ¥Ra_TIMES Recip(a)) EQUAL(Stat95) ==> (Recip(a) ¥Ra_TIMES Recip(a)) ¥Ra_GT Ra_0 (Recip(a) ¥Ra_TIMES Recip(a),Ra_0)-->T473(Stat96*) ==> Stat97: (Recip(a) ¥Ra_TIMES Recip(a)) ¥Ra_GE Ra_0 (Recip(a) ¥Ra_TIMES Recip(a))-->Stat14(Stat31,Stat31*) ==> (Recip(a) ¥Ra_TIMES Recip(a)) ¥Ra_LE (Recip(a) ¥Ra_TIMES Recip(a)) (Recip(a) ¥Ra_TIMES Recip(a),Recip(a) ¥Ra_TIMES Recip(a))-->T473(Stat97*) ==> Stat98: (Recip(a) ¥Ra_TIMES Recip(a)) ¥Ra_GE (Recip(a) ¥Ra_TIMES Recip(a)) (Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])),eps0 ¥Ra_TIMES (a ¥Ra_TIMES a))-->T473(Stat95*) ==> Stat99: (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) ¥Ra_GE Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) (eps0 ¥Ra_TIMES (a ¥Ra_TIMES a),Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])),Recip(a) ¥Ra_TIMES Recip(a),Recip(a) ¥Ra_TIMES Recip(a))-->T516(Stat95,Stat92,Stat31,Stat99,Stat97,Stat98*) ==> ((eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))) ¥Ra_GE (Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))) (eps0,a)-->T463(Stat25,Stat27,Stat29*) ==> ((eps0 ¥Ra_TIMES (a ¥Ra_TIMES a)) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))) = eps0 EQUAL(Stat99*) ==> Stat100: eps0 ¥Ra_GE (Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a))) (eps0,Ra_ABS((gp~[i3]) ¥Ra_MINUS (gp~[j3])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(a)),eps0)-->T510(Stat25,Stat93,Stat100,Stat94*) ==> Stat102: eps0 ¥Ra_GT eps0 (eps0,eps0)-->T473(Stat102,Stat88*) ==> false; Discharge ==> Stat103: Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) ¥Ra_LE eps0 (Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])),eps0)-->T473(Stat103,Stat103*) ==> Stat104: eps0 ¥Ra_GE Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])) (eps0,Ra_ABS(Recip(gp~[i3]) ¥Ra_MINUS Recip(gp~[j3])),eps0)-->T510(Stat25,Stat86,Stat77,Stat104*) ==> eps0 ¥Ra_GT eps0 -- (eps0,eps0)-->T473(Stat88*) ==> false; Discharge ==> QED -- -- Our next lemma states that if $f,fp$ and $g,gp$ are rational -- sequences, with $f$ equivalent to $g$ and $fp$ equivalent to $gp$, then the pointwise -- sum of $f$ and $fp$ is equivalent to the pointwise sum of $g$ and $gp$. -- Theorem 571: (({F,G,Fp,Gp} ¥incin RaSeq) & Ra_eqseq(F,G) & Ra_eqseq(Fp,Gp)) ¥imp Ra_eqseq(F ¥Ras_PLUS Fp, G ¥Ras_PLUS Gp). Proof: Suppose_not(fq,gq,fp,gp) ==> ({fq,gq,fp,gp} ¥incin RaSeq) & Ra_eqseq(fq,gq) & Ra_eqseq(fp,gp) & (not Ra_eqseq(fq ¥Ras_PLUS fp, gq ¥Ras_PLUS gp)) -- -- Suppose that $fq,gq,fp,gp$ are a counterexample to our assertion. Then by definition of equivalence of rational -- sequences, there exists some positive rational number $eps0$ for which the set -- ${x : x in domain(fq ¥Ras_PLUS fp) | Ra_ABS(((fq ¥Ras_PLUS fp)~[x]) ¥Ra_MINUS ((gq ¥Ras_PLUS gp)~[x])) ¥Ra_GT eps0}$ -- is infinite. But $eps0$ can be writen as the sum $eps1,eps2$ of two smaller positive rationals, -- and for these the two analogous sets formed using $fq,gq,eps1$ and $fp,gp,eps2$ respectively, -- are finite. -- (fq,gq)-->T541 ==> Stat1: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (gq~[x])) ¥Ra_GT eps})) (fp,gp)-->T541 ==> Stat2: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((fp~[x]) ¥Ra_MINUS (gp~[x])) ¥Ra_GT eps})) (fq,fp)-->T554 ==> (fq ¥Ras_PLUS fp) in RaSeq (gq,gp)-->T554 ==> (gq ¥Ras_PLUS gp) in RaSeq (fq ¥Ras_PLUS fp,gq ¥Ras_PLUS gp)-->T541 ==> Stat3: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[x]) ¥Ra_MINUS ((gq ¥Ras_PLUS gp)~[x])) ¥Ra_GT eps}))) eps0-->Stat3 ==> (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({x : x in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[x]) ¥Ra_MINUS ((gq ¥Ras_PLUS gp)~[x])) ¥Ra_GT eps0})) eps0-->T522 ==> Stat4: (EXISTS e in Ra, e0 in Ra | (eps0 ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (e ¥Ra_PLUS e0))) (eps1,eps2)-->Stat4 ==> (eps1 in Ra) & (eps2 in Ra) & (eps2 ¥Ra_GT Ra_0) & (eps1 ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (eps1 ¥Ra_PLUS eps2)) eps1-->Stat1 ==> Finite({x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (gq~[x])) ¥Ra_GT eps1}) eps2-->Stat2 ==> Finite({x : x in Za | Ra_ABS((fp~[x]) ¥Ra_MINUS (gp~[x])) ¥Ra_GT eps2}) -- -- However, it is easily seen that the infinite set noted above is included in the union of the -- two other sets, giving a contradiction which proves our theorem. Indeed, it follows that -- there must exit an integer m such that $Ra_ABS(((fq~[m] ¥Ra_PLUS fp~[m]) ¥Ra_MINUS ((gq~[m] ¥Ra_PLUS gp~[m]))) ¥Ra_GT eps0$ -- while $Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_LE eps1$ and $Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m])) ¥Ra_LE eps2$, -- Suppose ==> Stat5: not({x : x in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[x]) ¥Ra_MINUS ((gq ¥Ras_PLUS gp)~[x])) ¥Ra_GT eps0} ¥incin ({x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (gq~[x])) ¥Ra_GT eps1} + {x : x in Za | Ra_ABS((fp~[x]) ¥Ra_MINUS (gp~[x])) ¥Ra_GT eps2})) n--> Stat5 ==> Stat6: (n in {x : x in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[x]) ¥Ra_MINUS ((gq ¥Ras_PLUS gp)~[x])) ¥Ra_GT eps0}) & Stat7: (n notin {x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (gq~[x])) ¥Ra_GT eps1}) & Stat8: (n notin {x : x in Za | Ra_ABS((fp~[x]) ¥Ra_MINUS (gp~[x])) ¥Ra_GT eps2}) m-->Stat6 ==> (n = m) & (m in Za) & (Ra_ABS(((fq ¥Ras_PLUS fp)~[m]) ¥Ra_MINUS ((gq ¥Ras_PLUS gp)~[m])) ¥Ra_GT eps0) m-->Stat7 ==> not (Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_GT eps1) m-->Stat8 ==> not (Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m])) ¥Ra_GT eps2) -- -- which is in contradiction with an elementary rational inequality. -- (fq,m)-->T540 ==> fq~[m] in Ra (gq,m)-->T540 ==> gq~[m] in Ra (fp,m)-->T540 ==> fp~[m] in Ra (gp,m)-->T540 ==> gp~[m] in Ra (fq,fp,m)-->T555 ==> (fq ¥Ras_PLUS fp)~[m] = ((fq~[m]) ¥Ra_PLUS (fp~[m])) (gq,gp,m)-->T555 ==> (gq ¥Ras_PLUS gp)~[m] = ((gq~[m]) ¥Ra_PLUS (gp~[m])) EQUAL ==> Stat9: Ra_ABS(((fq~[m]) ¥Ra_PLUS (fp~[m])) ¥Ra_MINUS ((gq~[m]) ¥Ra_PLUS (gp~[m]))) ¥Ra_GT eps0 ALGEBRA ==> ((fq~[m]) ¥Ra_PLUS (fp~[m])) ¥Ra_MINUS ((gq~[m]) ¥Ra_PLUS (gp~[m])) = ((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m])) EQUAL ==> Ra_ABS(((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))) ¥Ra_GT eps0 ALGEBRA ==> Stat10: (fq~[m]) ¥Ra_MINUS (gq~[m]) in Ra ALGEBRA ==> Stat11: (fp~[m]) ¥Ra_MINUS (gp~[m]) in Ra ((fq~[m]) ¥Ra_MINUS (gq~[m]))-->T527 ==> Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) in Ra ((fp~[m]) ¥Ra_MINUS (gp~[m]))-->T527 ==> Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m])) in Ra (Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])),eps1)-->T478 ==> eps1 ¥Ra_GE Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) (Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m])),eps2)-->T478 ==> eps2 ¥Ra_GE Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m])) (eps1,Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])),eps2,Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m])))-->T493 ==> Stat12: (eps1 ¥Ra_PLUS eps2) ¥Ra_GE (Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m]))) T525 ==> Stat13: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(x ¥Ra_PLUS y) ¥Ra_LE (Ra_ABS(x) ¥Ra_PLUS Ra_ABS(y)))) ((fq~[m]) ¥Ra_MINUS (gq~[m]),(fp~[m]) ¥Ra_MINUS (gp~[m]))-->Stat13(Stat10,Stat11) ==> Ra_ABS(((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))) ¥Ra_LE (Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m]))) (Ra_ABS(((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))),Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m])))-->T473 ==> Stat14: (Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m]))) ¥Ra_GE Ra_ABS(((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))) ALGEBRA ==> Stat15: (eps1 ¥Ra_PLUS eps2 in Ra) & ((Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m]))) in Ra) ALGEBRA ==> (((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))) in Ra ALGEBRA ==> Stat16: (Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m]))) in Ra (((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m])))-->T527 ==> Stat17: Ra_ABS(((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))) in Ra (eps1 ¥Ra_PLUS eps2,Ra_ABS((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS Ra_ABS((fp~[m]) ¥Ra_MINUS (gp~[m])),Ra_ABS(((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))))-->T480(Stat14,Stat12,Stat17,Stat16,Stat15) ==> (eps1 ¥Ra_PLUS eps2) ¥Ra_GE Ra_ABS(((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))) (eps1 ¥Ra_PLUS eps2,Ra_ABS(((fq~[m]) ¥Ra_MINUS (gq~[m])) ¥Ra_PLUS ((fp~[m]) ¥Ra_MINUS (gp~[m]))),eps0)-->T496 ==> Stat18: (eps1 ¥Ra_PLUS eps2) ¥Ra_GT eps0 (eps0,eps1 ¥Ra_PLUS eps2,eps0)-->T498 ==> eps0 ¥Ra_GT eps0 (eps0,eps0)-->T473 ==> false; Discharge ==> {x : x in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[x]) ¥Ra_MINUS ((gq ¥Ras_PLUS gp)~[x])) ¥Ra_GT eps0} ¥incin ({x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (gq~[x])) ¥Ra_GT eps1} + {x : x in Za | Ra_ABS((fp~[x]) ¥Ra_MINUS (gp~[x])) ¥Ra_GT eps2}) ({x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (gq~[x])) ¥Ra_GT eps1},{x : x in Za | Ra_ABS((fp~[x]) ¥Ra_MINUS (gp~[x])) ¥Ra_GT eps2})-->T236 ==> Finite({x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (gq~[x])) ¥Ra_GT eps1} + {x : x in Za | Ra_ABS((fp~[x]) ¥Ra_MINUS (gp~[x])) ¥Ra_GT eps2}) ({x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (gq~[x])) ¥Ra_GT eps1} + {x : x in Za | Ra_ABS((fp~[x]) ¥Ra_MINUS (gp~[x])) ¥Ra_GT eps2},{x : x in Za | Ra_ABS(((fq ¥Ras_PLUS fp)~[x]) ¥Ra_MINUS ((gq ¥Ras_PLUS gp)~[x])) ¥Ra_GT eps0})-->T189 ==> false Discharge ==> QED -- -- A trivial corollary of the lemma stating that when $f,fp$ and $g,gp$ are rational -- sequences with $f$ equivalent to $g$ and $fp$ equivalent to $gp$ then the pointwise -- sum of $f$ and $fp$ is equivalent to the pointwise sum of $g$ and $gp$ is the -- analogous lemma stating the same for rational Cauchy sequences. -- Theorem 572: (({F,G,Fp,Gp} ¥incin RaCauchy) & Ra_eqseq(F,G) & Ra_eqseq(Fp,Gp)) ¥imp Ra_eqseq(F ¥Ras_PLUS Fp, G ¥Ras_PLUS Gp). Proof: Suppose_not(fq,gq,fp,gp) ==> ({fq,gq,fp,gp} ¥incin RaCauchy) & Ra_eqseq(fq,gq) & Ra_eqseq(fp,gp) & (not Ra_eqseq(fq ¥Ras_PLUS fp, gq ¥Ras_PLUS gp)) Use_def(RaCauchy) ==> Stat1: (fq in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat2: (fp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat3: (gq in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat4: (gp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) ()-->Stat1 ==> fq in RaSeq ()-->Stat2 ==> fp in RaSeq ()-->Stat3 ==> gq in RaSeq ()-->Stat4 ==> gp in RaSeq (fq,gq,fp,gp)-->T571 ==> false; Discharge ==> QED -- -- Our next lemma states that when $f,fp$ and $g$ are rational Cauchy -- sequences with $f$ equivalent to $fp$ then the pointwise -- product of $f$ and $g$ is equivalent to the pointwise product of $fp$ and $g$. -- Theorem 573: (({F,Fp,G} ¥incin RaCauchy) & Ra_eqseq(F,Fp)) ¥imp Ra_eqseq(F ¥Ras_TIMES G, Fp ¥Ras_TIMES G). Proof: Suppose_not(fq,fp,gp) ==> AUTO -- -- For, suppose $fq,gq,gp$ to be a counterexample to our assertion. -- The definition of equivalence between rational -- sequences implies that for some positive rational number $eps=eps0$, the set -- ${x : x in domain(fq ¥Ras_TIMES gp) | Ra_ABS(((fq ¥Ras_TIMES gp)~[x]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[x])) ¥Ra_GT eps}$ -- is infinite, whereas the analogous set which has $fq,fp,(eps0 ¥Ra_OVER m)$ -- in place of $(fq ¥Ras_TIMES gp)$, $(fp ¥Ras_TIMES gp)$ is finite, -- where $m$ $eps1$ is a number exceeding the absolute values -- of all components of the sequence $gp$. -- Use_def(Ra_eqseq) ==> Stat1: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(fq) | Ra_ABS((fq~[x]) ¥Ra_MINUS (fp~[x])) ¥Ra_GT eps})) & Stat2: (not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in domain(fq ¥Ras_TIMES gp) | Ra_ABS(((fq ¥Ras_TIMES gp)~[x]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[x])) ¥Ra_GT eps}))) eps0-->Stat2 ==> Stat3: (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({x : x in domain(fq ¥Ras_TIMES gp) | Ra_ABS(((fq ¥Ras_TIMES gp)~[x]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[x])) ¥Ra_GT eps0})) gp-->T560 ==> Stat4: (EXISTS x in Ra | (FORALL y in range(gp) | Ra_ABS(y) ¥Ra_LT x )) m-->Stat4(Stat4) ==> Stat5: (m in Ra) & Stat6: (FORALL y in range(gp) | Ra_ABS(y) ¥Ra_LT m) Use_def(RaCauchy) ==> Stat7: gp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat7 ==> Stat8: gp in RaSeq gp-->T546 ==> Stat9: (domain(gp) = Za) & (range(gp) ¥incin Ra) T451 ==> Stat10: Ra_0 in Ra Suppose ==> not(m ¥Ra_GT Ra_0) T211 ==> 0 in domain(gp) (0,gp)-->T71 ==> (gp~[0]) in range(gp) (gp~[0])-->Stat6 ==> Ra_ABS(gp~[0]) ¥Ra_LT m (gp~[0])-->T527 ==> Ra_ABS(gp~[0]) ¥Ra_GE Ra_0 (Ra_ABS(gp~[0]), m)-->T473 ==> m ¥Ra_GT Ra_ABS(gp~[0]) (gp~[0])-->T527 ==> Ra_ABS(gp~[0]) in Ra (m, Ra_ABS(gp~[0]), Ra_0)-->T509 ==> false; Discharge ==> m ¥Ra_GT Ra_0 (m, Ra_0)-->T473 ==> m /= Ra_0 m-->T462 ==> Stat11: (Recip(m) in Ra) & ((m ¥Ra_TIMES Recip(m)) = Ra_1) m-->T491 ==> Recip(m) ¥Ra_GT Ra_0 Suppose ==> not(Finite({x : x in domain(fq) | Ra_ABS((fq~[x]) ¥Ra_MINUS (fp~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES Recip(m))})) (eps0, Ra_0, Recip(m))-->T488 ==> Stat12: (eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT (Ra_0 ¥Ra_TIMES Recip(m)) (Ra_0, Recip(m))-->T448(Stat10) ==> (Ra_0 ¥Ra_TIMES Recip(m)) = (Recip(m) ¥Ra_TIMES Ra_0) (Recip(m))-->T489(Stat10) ==> (Recip(m) ¥Ra_TIMES Ra_0) = Ra_0 EQUAL(Stat12) ==> (eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT Ra_0 (eps0, Recip(m))-->T448(Stat1) ==> (eps0 ¥Ra_TIMES Recip(m)) in Ra (eps0 ¥Ra_TIMES Recip(m))-->Stat1 ==> false; Discharge ==> Finite({x : x in domain(fq) | Ra_ABS((fq~[x]) ¥Ra_MINUS (fp~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES Recip(m))}) -- -- We will reach the desired contradiction, thus proving the present lemma, by showing that -- the former of the two sets mentioned above is included in the latter. Hence, since the latter -- is finite, the former cannot be infinite. Temporarily assuming that the inclusion does not hold, -- we can find an unsigned integer $i0$ belonging to the former set but not belonging to the latter, -- so that -- $Ra_ABS(((fq ¥Ras_TIMES gp)~[i0]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[i0])) ¥Ra_GT eps0$, -- $not Ra_ABS((fq~[i0]) ¥Ra_MINUS (fp~[i0])) ¥Ra_GT (eps0 ¥Ra_OVER Recip(m))$. -- Suppose ==> Stat13: not({x : x in domain(fq ¥Ras_TIMES gp) | Ra_ABS(((fq ¥Ras_TIMES gp)~[x]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[x])) ¥Ra_GT eps0} ¥incin {x : x in domain(fq) | Ra_ABS((fq~[x]) ¥Ra_MINUS (fp~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES Recip(m))}) Use_def(RaCauchy) ==> Stat14: (fq in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat15: (fp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) ()-->Stat14 ==> Stat16: fq in RaSeq ()-->Stat15 ==> Stat17: fp in RaSeq (fq,gp)-->T554 ==> ((fq ¥Ras_TIMES gp) in RaSeq) & ((fq ¥Ras_TIMES gp) = {[u,((fq~[u]) ¥Ra_TIMES (gp~[u]))]: u in Za}) (fp,gp)-->T554 ==> ((fp ¥Ras_TIMES gp) = {[u,((fp~[u]) ¥Ra_TIMES (gp~[u]))]: u in Za}) fq-->T546 ==> domain(fq) = Za (fq ¥Ras_TIMES gp)-->T546 ==> domain(fq ¥Ras_TIMES gp) = Za EQUAL(Stat13) ==> Stat18: not({x : x in Za | Ra_ABS(((fq ¥Ras_TIMES gp)~[x]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[x])) ¥Ra_GT eps0} ¥incin {x : x in Za | Ra_ABS((fq~[x]) ¥Ra_MINUS (fp~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES Recip(m))}) i0-->Stat18 ==> Stat19: (i0 in Za) & (Ra_ABS(((fq ¥Ras_TIMES gp)~[i0]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[i0])) ¥Ra_GT eps0) & (not Ra_ABS((fq~[i0]) ¥Ra_MINUS (fp~[i0])) ¥Ra_GT (eps0 ¥Ra_TIMES Recip(m))) Use_def(¥Ra_MINUS) ==> (not Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) ¥Ra_GT (eps0 ¥Ra_TIMES Recip(m))) -- -- On the one hand, we observe that -- $(eps0 ¥Ra_OVER Recip(m)) ¥Ra_GE Ra_ABS((fq~[i0]) ¥Ra_MINUS (fp~[i0]))$, -- (fq,fp,i0)-->T555(Stat16,Stat17,Stat19*) ==> Stat20: ((fq~[i0]) in Ra) & ((fp~[i0]) in Ra) ALGEBRA(Stat20) ==> (Ra_Rev(fp~[i0]) in Ra) & (((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) in Ra) ((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))-->T527 ==> (Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) in Ra) & (Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) ¥Ra_GE Ra_0) (gp,i0)-->T540(Stat8,Stat19*) ==> Stat21: (gp~[i0]) in Ra (i0,gp)-->T71(Stat19,Stat9*) ==> (gp~[i0]) in range(gp) (gp~[i0])-->T527 ==> Stat22: Ra_ABS(gp~[i0]) in Ra ((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))-->T527 ==> Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) in Ra ALGEBRA(Stat3,Stat11) ==> (eps0 ¥Ra_TIMES Recip(m)) in Ra (Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])), eps0 ¥Ra_TIMES Recip(m))-->T473 ==> (eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GE Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) -- -- ... so that -- $eps0 ¥Ra_GE (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fp~[i0])))$. -- (m, Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])))-->T448 ==> ((m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) in Ra) & ((m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) = (Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) ¥Ra_TIMES m)) Suppose ==> not(eps0 ¥Ra_GE (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])))) ALGEBRA(Stat3,Stat5,Stat11) ==> (eps0 = eps0 ¥Ra_TIMES Ra_1) & ((m ¥Ra_TIMES Recip(m)) = (Recip(m) ¥Ra_TIMES m)) & ((eps0 ¥Ra_TIMES (Recip(m) ¥Ra_TIMES m)) = ((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_TIMES m)) EQUAL(Stat10) ==> eps0 = ((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_TIMES m) (eps0 ¥Ra_TIMES Recip(m), Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])))-->T473 ==> ((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) or ((eps0 ¥Ra_TIMES Recip(m)) = Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) Suppose ==> (eps0 ¥Ra_TIMES Recip(m)) = Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) EQUAL ==> eps0 = (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])), eps0)-->T473 ==> false; Discharge ==> (eps0 ¥Ra_TIMES Recip(m)) ¥Ra_GT Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) (eps0 ¥Ra_TIMES Recip(m), Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])), m)-->T488(Stat4) ==> ((eps0 ¥Ra_TIMES Recip(m)) ¥Ra_TIMES m) ¥Ra_GT (Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) ¥Ra_TIMES m) EQUAL ==> eps0 ¥Ra_GT (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) (eps0, m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])))-->T473 ==> false; Discharge ==> eps0 ¥Ra_GE (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) -- -- On the other hand, we have that -- $(Ra_ABS(gp~[i0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fp~[i0]))) ¥Ra_GT eps0$, -- APPLY() fcn_symbol(f(u)->((fq~[u]) ¥Ra_TIMES (gp~[u])), g->(fq ¥Ras_TIMES gp), s->Za) ==> Stat23: (FORALL x | ((fq ¥Ras_TIMES gp)~[x]) = if x in Za then ((fq~[x]) ¥Ra_TIMES (gp~[x])) else 0 end if) APPLY() fcn_symbol(f(u)->((fp~[u]) ¥Ra_TIMES (gp~[u])), g->(fp ¥Ras_TIMES gp), s->Za) ==> Stat24: (FORALL x | ((fp ¥Ras_TIMES gp)~[x]) = if x in Za then ((fp~[x]) ¥Ra_TIMES (gp~[x])) else 0 end if) Use_def(¥Ra_MINUS) ==> Stat25: Ra_ABS(((fq ¥Ras_TIMES gp)~[i0]) ¥Ra_PLUS Ra_Rev((fp ¥Ras_TIMES gp)~[i0])) ¥Ra_GT eps0 i0-->Stat23(Stat19,Stat19) ==> ((fq ¥Ras_TIMES gp)~[i0]) = ((fq~[i0]) ¥Ra_TIMES (gp~[i0])) i0-->Stat24(Stat19,Stat19) ==> ((fp ¥Ras_TIMES gp)~[i0]) = ((fp~[i0]) ¥Ra_TIMES (gp~[i0])) ALGEBRA(Stat20,Stat21) ==> (((fq~[i0]) ¥Ra_TIMES (gp~[i0])) in Ra) & (((fq~[i0]) ¥Ra_TIMES (gp~[i0])) = ((gp~[i0]) ¥Ra_TIMES (fq~[i0]))) & (((fp~[i0]) ¥Ra_TIMES (gp~[i0])) in Ra) & (((fp~[i0]) ¥Ra_TIMES (gp~[i0])) = ((gp~[i0]) ¥Ra_TIMES (fp~[i0]))) & (Ra_Rev((gp~[i0]) ¥Ra_TIMES (fp~[i0])) = ((gp~[i0]) ¥Ra_TIMES Ra_Rev(fp~[i0]))) & ((gp~[i0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) = (((gp~[i0]) ¥Ra_TIMES (fq~[i0])) ¥Ra_PLUS ((gp~[i0]) ¥Ra_TIMES Ra_Rev(fp~[i0])))) (gp~[i0], (fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))-->T530 ==> Stat26: Ra_ABS((gp~[i0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) = (Ra_ABS(gp~[i0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) EQUAL(Stat25) ==> Ra_ABS((gp~[i0]) ¥Ra_TIMES ((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) ¥Ra_GT eps0 EQUAL(Stat26) ==> (Ra_ABS(gp~[i0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) ¥Ra_GT eps0 -- -- ... and therefore that -- $(m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_MINUS (fp~[i0]))) ¥Ra_GT eps0$. -- Suppose ==> not((m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) ¥Ra_GT eps0) (gp~[i0])-->Stat6 ==> Ra_ABS(gp~[i0]) ¥Ra_LT m (Ra_ABS(gp~[i0]), m)-->T473 ==> m ¥Ra_GT Ra_ABS(gp~[i0]) Suppose ==> not(Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) ¥Ra_GT Ra_0) (Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])), Ra_0)-->T473(Stat13) ==> Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) = Ra_0 ALGEBRA(Stat22,Stat22) ==> (Ra_ABS(gp~[i0]) ¥Ra_TIMES Ra_0) = Ra_0 EQUAL(Stat26) ==> Ra_0 ¥Ra_GT eps0 (Ra_0,eps0,Ra_0)-->T511 ==> Ra_0 ¥Ra_GT Ra_0 (Ra_0,Ra_0)-->T473 ==> false; Discharge ==> Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])) ¥Ra_GT Ra_0 (m, Ra_ABS(gp~[i0]), Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])))-->T488(Stat4) ==> (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) ¥Ra_GT (Ra_ABS(gp~[i0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) (Ra_ABS(gp~[i0]), Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])))-->T448 ==> (Ra_ABS(gp~[i0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) in Ra (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])), Ra_ABS(gp~[i0]) ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])), eps0)-->T511(Stat1) ==> false; Discharge ==> (m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0]))) ¥Ra_GT eps0 -- -- -- By exploiting one of the transitivity laws which the ordering of rational numbers obeys, we get that $eps0 ¥Ra_GT eps0$, -- an absurdity showing that the desired inclusion between sets actually holds. -- (eps0, m ¥Ra_TIMES Ra_ABS((fq~[i0]) ¥Ra_PLUS Ra_Rev(fp~[i0])), eps0)-->T510 ==> eps0 ¥Ra_GT eps0 (eps0, eps0)-->T473 ==> false; Discharge ==> {x : x in domain(fq) | Ra_ABS((fq~[x]) ¥Ra_MINUS (fp~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES Recip(m))} incs {x : x in domain(fq ¥Ras_TIMES gp) | Ra_ABS(((fq ¥Ras_TIMES gp)~[x]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[x])) ¥Ra_GT eps0} -- -- The desired conclusion now follows immediately. -- ({x : x in domain(fq) | Ra_ABS((fq~[x]) ¥Ra_MINUS (fp~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES Recip(m))}, {x : x in domain(fq ¥Ras_TIMES gp) | Ra_ABS(((fq ¥Ras_TIMES gp)~[x]) ¥Ra_MINUS ((fp ¥Ras_TIMES gp)~[x])) ¥Ra_GT eps0})-->T189 ==> false; Discharge ==> QED -- -- An easy corollary of the preceding lemma is the following: -- When $fq,fp$ and $gq,gp$ are rational Cauchy sequences with $fq$ -- equivalent to $gq$ and $fp$ equivalent to $gp$, the pointwise -- product of $fq$ and $fp$ is equivalent to the pointwise product of $fp$ and $gp$. -- Theorem 574: (({F,G,Fp,Gp} ¥incin RaCauchy) & Ra_eqseq(F,G) & Ra_eqseq(Fp,Gp)) ¥imp Ra_eqseq(F ¥Ras_TIMES Fp, G ¥Ras_TIMES Gp). Proof: Suppose_not(fq,gq,fp,gp) ==> ({fq,gq,fp,gp} ¥incin RaCauchy) & Ra_eqseq(fq,gq) & Ra_eqseq(fp,gp) & (not Ra_eqseq(fq ¥Ras_TIMES fp, gq ¥Ras_TIMES gp)) -- -- For, assuming $fq,gq,fp,gp$ to be a counterexample to the statement of this lemma, we reach -- a contradiction by arguing as follows. If follows from the preceding lemma that -- $gq ¥Ra_TIMES gp$ and $gp ¥Ra_TIMES fq$ are equivalent to -- $fq ¥Ra_TIMES gp$ and to $fp ¥Ra_TIMES fq$, respectively. -- Use_def(RaCauchy) ==> Stat1: (fq in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat2: (fp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat3: (gq in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat4: (gp in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) ()-->Stat1 ==> fq in RaSeq ()-->Stat2 ==> fp in RaSeq ()-->Stat3 ==> gq in RaSeq ()-->Stat4 ==> gp in RaSeq gq-->T546 ==> Ra_eqseq(gq,gq) (fq, gq, gq)-->T553 ==> Ra_eqseq(gq,fq) gp-->T546 ==> Ra_eqseq(gp,gp) (fp, gp, gp)-->T553 ==> Ra_eqseq(gp,fp) (gq, fq, gp)-->T573 ==> Ra_eqseq(gq ¥Ras_TIMES gp, fq ¥Ras_TIMES gp) (gp, fp, fq)-->T573 ==> Ra_eqseq(gp ¥Ras_TIMES fq, fp ¥Ras_TIMES fq) -- -- The sequence $gp ¥Ra_TIMES fq$ is easily shown to equal $fq ¥Ra_TIMES gp$, -- and $fp ¥Ra_TIMES fq$ is likewise shown to equal $fq ¥Ra_TIMES fp$. -- (fq, gp)-->T554 ==> ((fq ¥Ras_TIMES gp) in RaSeq) & ((fq ¥Ras_TIMES gp) = {[u,((fq~[u]) ¥Ra_TIMES (gp~[u]))]: u in Za}) (fp, fq)-->T554 ==> ((fp ¥Ras_TIMES fq) in RaSeq) & ((fp ¥Ras_TIMES fq) = {[u,((fp~[u]) ¥Ra_TIMES (fq~[u]))]: u in Za}) (gq, gp)-->T554 ==> ((gq ¥Ras_TIMES gp) in RaSeq) (gp, fq)-->T554 ==> ((gp ¥Ras_TIMES fq) in RaSeq) & ((gp ¥Ras_TIMES fq) = {[u,((gp~[u]) ¥Ra_TIMES (fq~[u]))]: u in Za}) (fq, fp)-->T554 ==> ((fq ¥Ras_TIMES fp) in RaSeq) & ((fq ¥Ras_TIMES fp) = {[u,((fq~[u]) ¥Ra_TIMES (fp~[u]))]: u in Za}) fq-->T546 ==> Stat5: (domain(fq) = Za) & Svm(fq) & (range(fq) ¥incin Ra) fp-->T546 ==> Stat6: (domain(fp) = Za) & Svm(fp) & (range(fp) ¥incin Ra) gp-->T546 ==> Stat7: (domain(gp) = Za) & Svm(gp) & (range(gp) ¥incin Ra) Suppose ==> (fq ¥Ras_TIMES gp) /= (gp ¥Ras_TIMES fq) EQUAL ==> Stat8: {[u,((fq~[u]) ¥Ra_TIMES (gp~[u]))]: u in Za} /= {[u,((gp~[u]) ¥Ra_TIMES (fq~[u]))]: u in Za} u1-->Stat8 ==> Stat9: (u1 in Za) & (((fq~[u1]) ¥Ra_TIMES (gp~[u1])) /= ((gp~[u1]) ¥Ra_TIMES (fq~[u1]))) (fq~[u1], gp~[u1])-->T448 ==> ((fq~[u1]) notin Ra) or ((gp~[u1]) notin Ra) Suppose ==> (fq~[u1]) notin Ra fq-->T73(Stat5) ==> Stat10: (fq~[u1]) notin {(fq~[j]): j in domain(fq)} u1-->Stat10(Stat5,Stat9) ==> false; Discharge ==> Stat11: (gp~[u1]) notin Ra gp-->T73(Stat7) ==> Stat12: (gp~[u1]) notin {(gp~[j]): j in domain(gp)} u1-->Stat12(Stat7,Stat9) ==> false; Discharge ==> (fq ¥Ras_TIMES gp) = (gp ¥Ras_TIMES fq) Suppose ==> (fp ¥Ras_TIMES fq) /= (fq ¥Ras_TIMES fp) EQUAL ==> Stat13: {[u,((fp~[u]) ¥Ra_TIMES (fq~[u]))]: u in Za} /= {[u,((fq~[u]) ¥Ra_TIMES (fp~[u]))]: u in Za} u2-->Stat13 ==> Stat14: (u2 in Za) & (((fp~[u2]) ¥Ra_TIMES (fq~[u2])) /= ((fq~[u2]) ¥Ra_TIMES (fp~[u2]))) (fp~[u2], fq~[u2])-->T448 ==> ((fp~[u2]) notin Ra) or ((fq~[u2]) notin Ra) Suppose ==> (fp~[u2]) notin Ra fp-->T73(Stat6) ==> Stat15: (fp~[u2]) notin {(fp~[j]): j in domain(fp)} u2-->Stat15(Stat6,Stat14) ==> false; Discharge ==> Stat16: (fq~[u2]) notin Ra fq-->T73(Stat5) ==> Stat17: (fq~[u2]) notin {(fq~[j]): j in domain(fq)} u2-->Stat17(Stat5,Stat14) ==> false; Discharge ==> (fp ¥Ras_TIMES fq) = (fq ¥Ras_TIMES fp) -- -- Therefore, by transitivity of the equivalence relation between rational sequences, we get -- that $gq ¥Ra_TIMES gp$ and $fq ¥Ra_TIMES fp$, a contradiction leading to the desired conclusion. -- EQUAL ==> Ra_eqseq(gq ¥Ras_TIMES gp, gp ¥Ras_TIMES fq) & Ra_eqseq(gp ¥Ras_TIMES fq, fq ¥Ras_TIMES fp) (gq ¥Ras_TIMES gp, gp ¥Ras_TIMES fq, fq ¥Ras_TIMES fp)-->T553 ==> false; Discharge ==> QED -- -- If two rational Cauchy sequences are equivalent, then their negatives are equivalent. -- Theorem 575: (({F,G} ¥incin RaCauchy) & Ra_eqseq(F,G)) ¥imp Ra_eqseq(Ras_Rev(F),Ras_Rev(G)). Proof: Suppose_not(f,g) ==> AUTO T539(*) ==> (f in RaSeq) & (g in RaSeq) (f,f)-->T554 ==> Ras_Rev(f) in RaSeq (g,g)-->T554 ==> Ras_Rev(g) in RaSeq (f,g)-->T541 ==> Stat1: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps})) (Ras_Rev(f),Ras_Rev(g))-->T541 ==> Stat2: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((Ras_Rev(f)~[x]) ¥Ra_MINUS (Ras_Rev(g)~[x])) ¥Ra_GT eps})) eps0-->Stat2 ==> Stat3: (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({x : x in Za | Ra_ABS((Ras_Rev(f)~[x]) ¥Ra_MINUS (Ras_Rev(g)~[x])) ¥Ra_GT eps0})) eps0-->Stat1 ==> Stat4: Finite({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps0}) Suppose ==> Stat5: {x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps0} /= {x : x in Za | Ra_ABS((Ras_Rev(f)~[x]) ¥Ra_MINUS (Ras_Rev(g)~[x])) ¥Ra_GT eps0} x0-->Stat5 ==> Stat6: (x0 in Za) & ((Ra_ABS((f~[x0]) ¥Ra_MINUS (g~[x0])) ¥Ra_GT eps0) ¥eq (not(Ra_ABS((Ras_Rev(f)~[x0]) ¥Ra_MINUS (Ras_Rev(g)~[x0])) ¥Ra_GT eps0))) (f,x0)-->T550 ==> (f~[x0]) in Ra (g,g)-->T556 ==> Ras_Rev(g) in RaCauchy (g,g,x0)-->T555 ==> (Ras_Rev(g)~[x0]) = Ra_Rev(g~[x0]) (f,f,x0)-->T555 ==> (Ras_Rev(f)~[x0]) = Ra_Rev(f~[x0]) (Ras_Rev(g),x0)-->T550(Stat6) ==> Ra_Rev(g~[x0]) in Ra Suppose ==> Ra_ABS((f~[x0]) ¥Ra_MINUS (g~[x0])) = Ra_ABS(Ra_Rev(f~[x0]) ¥Ra_MINUS Ra_Rev(g~[x0])) EQUAL(Stat6) ==> false; Discharge ==> Stat7: Ra_ABS((f~[x0]) ¥Ra_MINUS (g~[x0])) /= Ra_ABS(Ra_Rev(f~[x0]) ¥Ra_MINUS Ra_Rev(g~[x0])) Use_def(¥Ra_MINUS)(Stat7) ==> Stat8: Ra_ABS((f~[x0]) ¥Ra_PLUS Ra_Rev(g~[x0])) /= Ra_ABS(Ra_Rev(f~[x0]) ¥Ra_PLUS Ra_Rev(Ra_Rev(g~[x0]))) (f~[x0],Ra_Rev(g~[x0]))-->T445(Stat6*) ==> Stat9: ((f~[x0]) ¥Ra_PLUS Ra_Rev(g~[x0])) in Ra (f~[x0],Ra_Rev(g~[x0]))-->T492 ==> Ra_Rev((f~[x0]) ¥Ra_PLUS Ra_Rev(g~[x0])) = (Ra_Rev(f~[x0]) ¥Ra_PLUS Ra_Rev(Ra_Rev(g~[x0]))) T525(Stat9*) ==> Stat10: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) ((f~[x0]) ¥Ra_PLUS Ra_Rev(g~[x0]))-->Stat10(Stat10,Stat9*) ==> Ra_ABS(Ra_Rev((f~[x0]) ¥Ra_PLUS Ra_Rev(g~[x0]))) = Ra_ABS((f~[x0]) ¥Ra_PLUS Ra_Rev(g~[x0])) EQUAL(Stat8) ==> false; Discharge ==> Stat11: {x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps0} = {x : x in Za | Ra_ABS((Ras_Rev(f)~[x]) ¥Ra_MINUS (Ras_Rev(g)~[x])) ¥Ra_GT eps0} EQUAL(Stat11,Stat3,Stat4) ==> false; Discharge ==> QED -- -- If two rational Cauchy sequences are equivalent, then their pointwise absolute values are equivalent. -- Theorem 576: (({F,G} ¥incin RaCauchy) & Ra_eqseq(F,G)) ¥imp Ra_eqseq(Ras_ABS(F),Ras_ABS(G)). Proof: Suppose_not(f,g) ==> AUTO -- -- Reasoning by contradiction, let $f,g$ be a counterexample to the statement of this theorem. -- Then we can take a positive rational number $eps0$ such that the set of subscripts -- which index corresponding components of $Ras_ABS(f),Ras_ABS(g)$ differring by more than $eps0$ -- is infinite, whereas the analogous set of subscripts for $f,g$ is finite. -- There is, hence, a nonnegative integer $n0$ belonging to the first but not the second -- of these sets of subscripts. -- T539(*) ==> Stat1: (f in RaSeq) & (g in RaSeq) (f,f)-->T554(*) ==> Ras_ABS(f) in RaSeq (g,g)-->T554(*) ==> Ras_ABS(g) in RaSeq (f,g)-->T541(*) ==> Stat2: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps})) (Ras_ABS(f),Ras_ABS(g))-->T541(*) ==> Stat3: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS(((Ras_ABS(f))~[x]) ¥Ra_MINUS ((Ras_ABS(g))~[x])) ¥Ra_GT eps})) eps0-->Stat3 ==> Stat4: (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({x: x in Za | Ra_ABS(((Ras_ABS(f))~[x]) ¥Ra_MINUS ((Ras_ABS(g))~[x])) ¥Ra_GT eps0})) eps0-->Stat2 ==> Finite({x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps0}) ({x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps0},{x: x in Za | Ra_ABS(((Ras_ABS(f))~[x]) ¥Ra_MINUS ((Ras_ABS(g))~[x])) ¥Ra_GT eps0})-->T189(Stat4*) ==> Stat5: not({x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps0} incs {x: x in Za | Ra_ABS(((Ras_ABS(f))~[x]) ¥Ra_MINUS ((Ras_ABS(g))~[x])) ¥Ra_GT eps0}) n0-->Stat5(Stat5*) ==> Stat6: (n0 in Za) & (Ra_ABS(((Ras_ABS(f))~[n0]) ¥Ra_MINUS ((Ras_ABS(g))~[n0])) ¥Ra_GT eps0) & (not(Ra_ABS((f~[n0]) ¥Ra_MINUS (g~[n0])) ¥Ra_GT eps0)) -- -- Observe that distance between the $f$-image of $n0$ and the $g$-image of $n0$ is -- greater than the distance between the $Ras_ABS(f)$-image of $n0$ and the -- $Ras_ABS(g)$-image of $n0$. -- T525(Stat6*) ==> Stat7: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_ABS(Ra_ABS(x) ¥Ra_PLUS Ra_Rev(Ra_ABS(y))) ¥Ra_LE Ra_ABS(x ¥Ra_PLUS Ra_Rev(y)))) (f,g,n0)-->T555(Stat1,Stat6*) ==> ((f~[n0]) in Ra) & ((g~[n0]) in Ra) (f~[n0],g~[n0])-->Stat7(Stat7*) ==> Stat8: Ra_ABS(Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))) ¥Ra_LE Ra_ABS((f~[n0]) ¥Ra_PLUS Ra_Rev(g~[n0])) (Ra_ABS(Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))),Ra_ABS((f~[n0]) ¥Ra_PLUS Ra_Rev(g~[n0])))-->T473(Stat8*) ==> Stat9: Ra_ABS((f~[n0]) ¥Ra_PLUS Ra_Rev(g~[n0])) ¥Ra_GE Ra_ABS(Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))) Use_def(¥Ra_MINUS)(Stat6,Stat6*) ==> Stat10: (Ra_ABS(((Ras_ABS(f))~[n0]) ¥Ra_PLUS Ra_Rev((Ras_ABS(g))~[n0])) ¥Ra_GT eps0) & (not(Ra_ABS((f~[n0]) ¥Ra_PLUS Ra_Rev(g~[n0])) ¥Ra_GT eps0)) -- -- By simplifying the first clause of Stat10, we obtain an inequality whose left-hand side -- coincides with the right-hand side of the inequality Stat11 -- Suppose ==> Stat12: Ra_ABS(((Ras_ABS(f))~[n0]) ¥Ra_PLUS Ra_Rev((Ras_ABS(g))~[n0])) /= Ra_ABS(Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))) (f,f,n0)-->T555(Stat1,Stat6*) ==> ((Ras_ABS(f))~[n0]) = Ra_ABS(f~[n0]) (g,g,n0)-->T555(Stat1,Stat6*) ==> ((Ras_ABS(g))~[n0]) = Ra_ABS(g~[n0]) EQUAL(Stat12) ==> false; Discharge ==> Stat13: Ra_ABS(((Ras_ABS(f))~[n0]) ¥Ra_PLUS Ra_Rev((Ras_ABS(g))~[n0])) = Ra_ABS(Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))) EQUAL(Stat10,Stat13) ==> Stat14: Ra_ABS(Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))) ¥Ra_GT eps0 -- -- We must briefly digress here to show that both sides of the inequalities Stat9 -- and Stat14 lines designate real numbers, so that we can propagate inequalities by -- exploiting Theorem 510, thus contradicting the second clause of Stat15 -- (g~[n0])-->T452(Stat7*) ==> Ra_Rev(g~[n0]) in Ra (f~[n0],Ra_Rev(g~[n0]))-->T445(Stat7*) ==> ((f~[n0]) ¥Ra_PLUS Ra_Rev(g~[n0])) in Ra ((f~[n0]) ¥Ra_PLUS Ra_Rev(g~[n0]))-->T527(Stat7*) ==> Stat16: Ra_ABS((f~[n0]) ¥Ra_PLUS Ra_Rev(g~[n0])) in Ra (f~[n0])-->T527(Stat7*) ==> Ra_ABS(f~[n0]) in Ra (g~[n0])-->T527(Stat7*) ==> Ra_ABS(g~[n0]) in Ra (Ra_ABS(g~[n0]))-->T452(Stat10*) ==> Ra_Rev(Ra_ABS(g~[n0])) in Ra (Ra_ABS(f~[n0]),Ra_Rev(Ra_ABS(g~[n0])))-->T445(Stat10*) ==> (Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))) in Ra (Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0])))-->T527(Stat10*) ==> Stat17: Ra_ABS(Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))) in Ra (Ra_ABS((f~[n0]) ¥Ra_PLUS Ra_Rev(g~[n0])),Ra_ABS(Ra_ABS(f~[n0]) ¥Ra_PLUS Ra_Rev(Ra_ABS(g~[n0]))),eps0)-->T510(Stat9,Stat14,Stat16,Stat17,Stat4,Stat10*) ==> false; Discharge ==> QED -- -- We can also show that if two rational Cauchy sequences are equivalent, but not -- equivalent to the zero rational sequence, then their reciprocals are equivalent. -- Theorem 577: (({F,G} ¥incin RaCauchy) & Ra_eqseq(F,G) & (not(Ra_eqseq(F,Ra0Seq)))) ¥imp Ra_eqseq(Ras_Recip(F),Ras_Recip(G)). Proof: Suppose_not(h,k) ==> AUTO -- -- Reasoning by contradiction, assume that $f,g$ are a counterexample to -- the statement of this theorem. Without loss of generality, we can assume that -- no shift is needed in order to get $Recip(f)$ from $f$ or to get $Recip(g)$ from $g$. -- Observe also that $g$ is not equivalent to the zero sequence. -- T545 ==> Ra0Seq in RaCauchy T539(*) ==> (h in RaSeq) & (k in RaSeq) & (Ra0Seq in RaSeq) Suppose ==> Ra_eqseq(k,Ra0Seq) (h,k,Ra0Seq)-->T553 ==> Ra_eqseq(Ra0Seq,h) h-->T546 ==> Ra_eqseq(h,h) (Ra0Seq,h,h)-->T553 ==> false; Discharge ==> (not(Ra_eqseq(k,Ra0Seq))) h-->T568 ==> Stat1: (EXISTS g in RaCauchy | Ra_eqseq(h,g) & (Ras_Recip(h) = Ras_Recip(g)) & (FORALL u in Za | ((g~[u]) /= Ra_0) & (Ras_Recip(g)~[u] = Recip(g~[u])))) k-->T568 ==> Stat2: (EXISTS g in RaCauchy | Ra_eqseq(k,g) & (Ras_Recip(k) = Ras_Recip(g)) & (FORALL u in Za | ((g~[u]) /= Ra_0) & (Ras_Recip(g)~[u] = Recip(g~[u])))) f-->Stat1 ==> Stat3: (f in RaCauchy) & Ra_eqseq(h,f) & (Ras_Recip(h) = Ras_Recip(f)) & Stat4: (FORALL u in Za | ((f~[u]) /= Ra_0) & (Ras_Recip(f)~[u] = Recip(f~[u]))) g-->Stat2 ==> Stat5: (g in RaCauchy) & Ra_eqseq(k,g) & (Ras_Recip(k) = Ras_Recip(g)) & Stat6: (FORALL u in Za | ((g~[u]) /= Ra_0) & (Ras_Recip(g)~[u] = Recip(g~[u]))) T539(*) ==> Stat7: (f in RaSeq) & (g in RaSeq) (h,k,g)-->T553 ==> Ra_eqseq(g,h) (g,h,f)-->T553 ==> Ra_eqseq(f,g) Ra0Seq-->T546 ==> Stat8: Ra_eqseq(Ra0Seq,Ra0Seq) Suppose ==> Stat9: Ra_eqseq(f,Ra0Seq) (h,f,Ra0Seq)-->T553 ==> Ra_eqseq(Ra0Seq,h) (Ra0Seq,Ra0Seq,h)-->T553 ==> false; Discharge ==> (not Ra_eqseq(f,Ra0Seq)) Suppose ==> Ra_eqseq(g,Ra0Seq) (f,g,Ra0Seq)-->T553 ==> Ra_eqseq(Ra0Seq,f) (Ra0Seq,Ra0Seq,f)-->T553 ==> false; Discharge ==> (not Ra_eqseq(g,Ra0Seq)) Suppose ==> Ra_eqseq(Ras_Recip(f),Ras_Recip(g)) EQUAL ==> false; Discharge ==> Stat10: (({f,g} ¥incin RaCauchy) & Ra_eqseq(f,g) & (not(Ra_eqseq(f,Ra0Seq))) & (not(Ra_eqseq(g,Ra0Seq)))) & (not Ra_eqseq(Ras_Recip(f),Ras_Recip(g))) -- -- It follows, from the inequivalence between $f$ and the zero sequence -- and exploiting the transitivity of equivalence, that $g$ is not -- equivalent to the zero sequence. Hence the reciprocals of $f,g$ are -- defined and they are rational Cauchy sequences. -- Suppose ==> Ra_eqseq(g,Ra0Seq) (f,g,Ra0Seq)-->T553 ==> Ra_eqseq(Ra0Seq,f) f-->T546 ==> Ra_eqseq(f,f) (Ra0Seq,f,f)-->T553 ==> false; Discharge ==> (not(Ra_eqseq(g,Ra0Seq))) (f,f)-->T570 ==> Ras_Recip(f) in RaCauchy (g,g)-->T570 ==> Ras_Recip(g) in RaCauchy T539(Stat10*) ==> (Ras_Recip(f) in RaSeq) & (Ras_Recip(g) in RaSeq) -- -- There is a threshold $n0$ past which all components of $f$ exceed a certain -- positive rational number $a$. Likewise, there is a threshold $n1$ past which -- all components of $g$ exceed a certain positive rational $b$. Accordingly, if -- we take $n2$ to be the larger of $n0,n1$, past $n2$ every component of $f$ -- will be greater than $a$ and every component of $g$ will be greater than $b$. -- f-->T563 ==> Stat11: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(f~[i]) ¥Ra_GT eps) & (Ra_ABS(f~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(f~[n]) ¥Ra_GT Ra_0)) (a,n0)-->Stat11(Stat11*) ==> Stat12: (a in Ra) & (n0 in Za) & (a ¥Ra_GT Ra_0) & Stat13: (FORALL i in (Za - n0) | (Ra_ABS(f~[i]) ¥Ra_GT a) & (Ra_ABS(f~[i]) ¥Ra_GT Ra_0)) g-->T563 ==> Stat14: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(g~[i]) ¥Ra_GT eps) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) & (Ra_ABS(g~[n]) ¥Ra_GT Ra_0)) (b,n1)-->Stat14(Stat14*) ==> Stat15: (b in Ra) & (n1 in Za) & (b ¥Ra_GT Ra_0) & Stat16: (FORALL i in (Za - n1) | (Ra_ABS(g~[i]) ¥Ra_GT b) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0)) Loc_def ==> Stat17: n2 = Un({n0,n1}) Suppose ==> not( (n2 in Za) & (FORALL i in (Za - n2) | (Ra_ABS(f~[i]) ¥Ra_GT Ra_0) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0) & (Ra_ABS(f~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT b)) ) (n0,n1)-->T202 ==> Stat18: Finite({n0,n1}) ({n0,n1})-->T320(Stat11*) ==> (n2 in Za) & Stat19: (not( (FORALL i in (Za - n2) | (Ra_ABS(f~[i]) ¥Ra_GT Ra_0) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0) & (Ra_ABS(f~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT b) ))) i0-->Stat19(Stat18*) ==> Stat20: (i0 in (Za - n2)) & ((not(Ra_ABS(f~[i0]) ¥Ra_GT Ra_0)) or (not(Ra_ABS(g~[i0]) ¥Ra_GT Ra_0)) or (not(Ra_ABS(f~[i0]) ¥Ra_GT a)) or (not(Ra_ABS(g~[i0]) ¥Ra_GT b)) ) ({n0,n1})-->T274(Stat18*) ==> Stat21: (FORALL x in {n0,n1} | x ¥incin Un({n0,n1})) n0-->Stat21(Stat17,Stat20*) ==> i0 in (Za - n0) n1-->Stat21(Stat17,Stat20*) ==> i0 in (Za - n1) i0-->Stat13(Stat20*) ==> (not(Ra_ABS(g~[i0]) ¥Ra_GT Ra_0)) or (not(Ra_ABS(g~[i0]) ¥Ra_GT b)) i0-->Stat16(Stat20*) ==> false; Discharge ==> Stat22: (n2 in Za) & Stat23: (FORALL i in (Za - n2) | (Ra_ABS(f~[i]) ¥Ra_GT Ra_0) & (Ra_ABS(g~[i]) ¥Ra_GT Ra_0) & (Ra_ABS(f~[i]) ¥Ra_GT a) & (Ra_ABS(g~[i]) ¥Ra_GT b)) -- -- Since we have assumed that $Ras_Recip(f)$ is not equivalent to $Ras_Recip(g)$, -- there must exist a positive rational $eps0$ such that the set of the indices -- of the components of $Ras_Recip(f)$ whose distance from the corresponding -- components of $Ras_Recip(g)$ exceeds $eps0$ is infinite. On the other hand, -- since we have assumed that $f$ is equivalent to $g$, the set of the indices -- of the components of $f$ whose distance from the corresponding components -- of $g$ exceeds $eps0 ¥Ra_TIMES (b ¥Ra_TIMES a)$ is finite. -- (Ras_Recip(f),Ras_Recip(g))-->T541 ==> Stat24: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x: x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps})) eps0-->Stat24 ==> Stat25: (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) & (not Finite({x : x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0})) (b,a)-->T448(Stat12,Stat15*) ==> Stat26: (b ¥Ra_TIMES a) in Ra (b,a)-->T490(Stat12,Stat15*) ==> Stat27: (b ¥Ra_TIMES a) ¥Ra_GT Ra_0 (eps0,b ¥Ra_TIMES a)-->T448(Stat25*) ==> Stat28: (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a)) in Ra (eps0,b ¥Ra_TIMES a)-->T490(Stat25*) ==> (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a)) ¥Ra_GT Ra_0 (f,g)-->T541 ==> Stat29: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT eps})) (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a))-->Stat29(Stat28*) ==> Stat30: Finite({x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a))}) -- -- Of course, since $n2$ is finite, also the set of the indices of -- components of $Ras_Recip(f)$, from the $n2$ on, whose distance from the -- corresponding components of $Ras_Recip(g)$ exceeds $eps0$ is infinite. -- (However, below we will show that this set includes the set of the indices -- of the components of $f$ whose distance from the corresponding components -- of $g$ exceeds $eps0 ¥Ra_TIMES (b ¥Ra_TIMES a)$ is finite, thus getting -- the desired contradiction.) -- Suppose ==> Stat31: Finite({x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0}) Suppose ==> Stat32: not({x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} incs ({x : x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} - n2)) c-->Stat32(Stat32*) ==> Stat33: (c notin {x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0}) & (c notin n2) & Stat34: (c in {x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0}) ()-->Stat34 ==> (c in Za) & (Ra_ABS((Ras_Recip(f)~[c]) ¥Ra_MINUS (Ras_Recip(g)~[c])) ¥Ra_GT eps0) c-->Stat33(Stat33*) ==> false; Discharge ==> {x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} incs ({x : x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} - n2) ({x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0},{x: x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} - n2)-->T189(Stat31*) ==> Stat35: Finite({x: x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} - n2) n2-->T206(Stat22,Stat22*) ==> Finite(n2) ({x: x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} - n2,n2)-->T236(Stat35*) ==> Stat36: Finite(({x: x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} - n2) + n2) (({x: x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} - n2) + n2,{x: x in Za | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0})-->T189(Stat36,Stat25*) ==> false; Discharge ==> Stat37: (not Finite({x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0})) -- -- The following obvious remarks and technical lemma derived from Theorem 525 -- will be useful in the ongoing: -- a-->T491(Stat12,Stat12*) ==> Recip(a) ¥Ra_GT Ra_0 b-->T491(Stat15,Stat15*) ==> Recip(b) ¥Ra_GT Ra_0 (a,Ra_0)-->T473(Stat12,Stat12*) ==> Stat38: a /= Ra_0 (b,Ra_0)-->T473(Stat15,Stat15*) ==> Stat39: b /= Ra_0 a-->T462(Stat12,Stat38*) ==> Stat40: (Recip(a) in Ra) & ((a ¥Ra_TIMES Recip(a)) = Ra_1) b-->T462(Stat15,Stat39*) ==> Stat41: (Recip(b) in Ra) & ((b ¥Ra_TIMES Recip(b)) = Ra_1) (Recip(a),Recip(b))-->T448(Stat40,Stat41*) ==> Stat42: (Recip(a) ¥Ra_TIMES Recip(b)) in Ra -- T525(Stat41*) ==> Stat43: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) & Stat44: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) & Stat45: (FORALL x,y | ((x in Ra) & (y in Ra)) ¥imp (Ra_Rev(x ¥Ra_PLUS Ra_Rev(y)) = (y ¥Ra_PLUS Ra_Rev(x)))) & Stat46: (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE x)) -- -- We now develop the core of this proof, by showing that the inequality -- $Ra_ABS(Recip(f~[i]) ¥Ra_MINUS Recip(g~[i])) ¥Ra_LE ((Ra_ABS((f~[i]) ¥Ra_MINUS (g~[i]))) ¥Ra_OVER (a ¥Ra_TIMES b))$ -- holds for all $i in (Za - n2)$. -- Suppose ==> Stat47: not(FORALL i in (Za - n2) | Ra_ABS(Recip(f~[i]) ¥Ra_MINUS Recip(g~[i])) ¥Ra_LE ((Ra_ABS((f~[i]) ¥Ra_MINUS (g~[i]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b)))) p-->Stat47(Stat47*) ==> Stat48: (p in (Za - n2)) & (not Ra_ABS(Recip(f~[p]) ¥Ra_MINUS Recip(g~[p])) ¥Ra_LE ((Ra_ABS((f~[p]) ¥Ra_MINUS (g~[p]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b)))) (f,g,p)-->T555(Stat48,Stat7*) ==> Stat49: ((f~[p]) in Ra) & ((g~[p]) in Ra) p-->Stat23(Stat48*) ==> Stat50: (Ra_ABS(f~[p]) ¥Ra_GT a) & (Ra_ABS(g~[p]) ¥Ra_GT b) (f~[p],g~[p],a,b)-->T538(Stat49,Stat12,Stat15,Stat50,Stat48*) ==> false; Discharge ==> Stat51: (FORALL i in (Za - n2) | Ra_ABS(Recip(f~[i]) ¥Ra_MINUS Recip(g~[i])) ¥Ra_LE ((Ra_ABS((f~[i]) ¥Ra_MINUS (g~[i]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b)))) -- -- As announced above, we aim at completing the proof of this theorem by showing that the -- infinite set -- ${x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0}$ -- is included in -- ${x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a))}$, -- a fact conflicting with the finiteness of the latter, proved above. -- Suppose ==> Stat52: not({x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a))} incs {x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0}) -- -- Assuming temporarily that the announced inclusion did not hold, we could pick an integer $i2$ -- belonging to the latter set but not belonging to the former. This majorant of $n2$ would meet -- the inequality of Stat53 This readily yields that the rational number -- $((Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b)))$ -- is greater than $eps0$; hence -- $(((Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b)))) ¥Ra_TIMES (a ¥Ra_TIMES b)$ -- is greater than $eps0 ¥Ra_TIMES (a ¥Ra_TIMES b)$. -- i1-->Stat52(Stat52*) ==> Stat54: (i1 in {x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0}) & (i1 notin {x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a))}) (i2,i2)-->Stat54(Stat54*) ==> Stat55: (i2 in Za) & (i2 notin n2) & (Ra_ABS((Ras_Recip(f)~[i2]) ¥Ra_MINUS (Ras_Recip(g)~[i2])) ¥Ra_GT eps0) & (not (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a)))) i2-->Stat51(Stat55*) ==> Stat56: Ra_ABS(Recip(f~[i2]) ¥Ra_MINUS Recip(g~[i2])) ¥Ra_LE ((Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) -- (Ra_ABS(Recip(f~[i2]) ¥Ra_MINUS Recip(g~[i2])),((Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))))-->T473(Stat56,Stat56*) ==> Stat57: ((Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_GE Ra_ABS(Recip(f~[i2]) ¥Ra_MINUS Recip(g~[i2])) (g,f,i2)-->T555(Stat55,Stat7*) ==> Stat58: ((g~[i2]) in Ra) & ((f~[i2]) in Ra) (g~[i2])-->T452(Stat58,Stat58*) ==> Ra_Rev(g~[i2]) in Ra (f~[i2],Ra_Rev(g~[i2]))-->T445(Stat58*) ==> ((f~[i2]) ¥Ra_PLUS Ra_Rev(g~[i2])) in Ra Use_def(¥Ra_MINUS)(Stat58*) ==> Stat59: ((f~[i2]) ¥Ra_MINUS (g~[i2])) in Ra ((f~[i2]) ¥Ra_MINUS (g~[i2]))-->T527(Stat59*) ==> Stat60: Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) in Ra (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])),Recip(a) ¥Ra_TIMES Recip(b))-->T448(Stat60,Stat42*) ==> Stat61: Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b)) in Ra i2-->Stat23(Stat55,Stat55*) ==> (Ra_ABS(f~[i2]) ¥Ra_GT Ra_0) & (Ra_ABS(g~[i2]) ¥Ra_GT Ra_0) (Ra_ABS(f~[i2]),Ra_0)-->T473(Stat61*) ==> Ra_ABS(f~[i2]) /= Ra_0 (Ra_ABS(g~[i2]),Ra_0)-->T473(Stat61*) ==> Ra_ABS(g~[i2]) /= Ra_0 (g~[i2])-->Stat43(Stat58*) ==> Stat62: (g~[i2]) /= Ra_0 (f~[i2])-->Stat43(Stat58*) ==> Stat63: (f~[i2]) /= Ra_0 (g~[i2])-->T462(Stat58*) ==> Stat64: Recip(g~[i2]) in Ra (f~[i2])-->T462(Stat58*) ==> Stat65: Recip(f~[i2]) in Ra (Recip(g~[i2]))-->T452(Stat61*) ==> Ra_Rev(Recip(g~[i2])) in Ra (Recip(f~[i2]),Ra_Rev(Recip(g~[i2])))-->T445(Stat61*) ==> Stat66: (Recip(f~[i2]) ¥Ra_PLUS Ra_Rev(Recip(g~[i2]))) in Ra (Recip(f~[i2]) ¥Ra_PLUS Ra_Rev(Recip(g~[i2])))-->T527(Stat66*) ==> Stat67: Ra_ABS(Recip(f~[i2]) ¥Ra_PLUS Ra_Rev(Recip(g~[i2]))) in Ra ALGEBRA(Stat64,Stat65,Stat67) ==> Ra_ABS(Recip(f~[i2]) ¥Ra_MINUS Recip(g~[i2])) in Ra i2-->Stat4(Stat10,Stat55,Stat63*) ==> (Ras_Recip(f)~[i2]) = Recip(f~[i2]) i2-->Stat6(Stat10,Stat55,Stat62*) ==> (Ras_Recip(g)~[i2]) = Recip(g~[i2]) EQUAL(Stat57) ==> Stat68: (((Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_GE Ra_ABS((Ras_Recip(f)~[i2]) ¥Ra_MINUS (Ras_Recip(g)~[i2]))) & (Ra_ABS((Ras_Recip(f)~[i2]) ¥Ra_MINUS (Ras_Recip(g)~[i2])) in Ra) (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b)),Ra_ABS((Ras_Recip(f)~[i2]) ¥Ra_MINUS (Ras_Recip(g)~[i2])),eps0)-->T510(Stat68,Stat61,Stat25,Stat55*) ==> Stat69: (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_GT eps0 -- (b ¥Ra_TIMES a,b ¥Ra_TIMES a)-->T495(Stat26*) ==> Stat70: (b ¥Ra_TIMES a) ¥Ra_GE (b ¥Ra_TIMES a) (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b)),eps0,b ¥Ra_TIMES a,b ¥Ra_TIMES a)-->T517(Stat61,Stat25,Stat69,Stat26,Stat27,Stat70*) ==> Stat71: ((Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_TIMES (b ¥Ra_TIMES a)) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a)) -- -- Notice, however, that $Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))$ equals -- $(Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_TIMES (b ¥Ra_TIMES a)$. -- Suppose ==> Stat72: Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) /= (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_TIMES (b ¥Ra_TIMES a) (b ¥Ra_TIMES a,Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])),Recip(a) ¥Ra_TIMES Recip(b))-->T456(Stat60,Stat42,Stat26*) ==> Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES ((Recip(a) ¥Ra_TIMES Recip(b)) ¥Ra_TIMES (b ¥Ra_TIMES a)) = (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_TIMES (b ¥Ra_TIMES a) (b ¥Ra_TIMES a,Recip(a),Recip(b))-->T456(Stat26,Stat40,Stat41*) ==> (Recip(a) ¥Ra_TIMES (Recip(b) ¥Ra_TIMES (b ¥Ra_TIMES a))) = ((Recip(a) ¥Ra_TIMES Recip(b)) ¥Ra_TIMES (b ¥Ra_TIMES a)) (a,Recip(b),b)-->T456(Stat41,Stat12,Stat15*) ==> (Recip(b) ¥Ra_TIMES (b ¥Ra_TIMES a)) = ((Recip(b) ¥Ra_TIMES b) ¥Ra_TIMES a) (Recip(b),b)-->T448(Stat15,Stat41*) ==> (Recip(b) ¥Ra_TIMES b) = Ra_1 (Recip(a),a)-->T448(Stat12,Stat40*) ==> (Recip(a) ¥Ra_TIMES a) = Ra_1 a-->T461(Stat12*) ==> a = (a ¥Ra_TIMES Ra_1) T451(Stat72*) ==> Stat73: Ra_1 in Ra (a,Ra_1)-->T448(Stat12,Stat73*) ==> (a ¥Ra_TIMES Ra_1) = (Ra_1 ¥Ra_TIMES a) (Recip(a) ¥Ra_TIMES Recip(b))-->T461(Stat42*) ==> (Recip(a) ¥Ra_TIMES Recip(b)) = ((Recip(a) ¥Ra_TIMES Recip(b)) ¥Ra_TIMES Ra_1) (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])))-->T461(Stat60*) ==> (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))) = ((Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2]))) ¥Ra_TIMES Ra_1) EQUAL(Stat72) ==> false; Discharge ==> Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) = (Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_TIMES (Recip(a) ¥Ra_TIMES Recip(b))) ¥Ra_TIMES (b ¥Ra_TIMES a) EQUAL(Stat71) ==> Stat74: Ra_ABS((f~[i2]) ¥Ra_MINUS (g~[i2])) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a)) -- -- This leads to the desired contradiction, proving the present theorem. -- (Stat74,Stat55*)Discharge ==> Stat75: {x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a))} incs {x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0} -- ({x: x in Za | Ra_ABS((f~[x]) ¥Ra_MINUS (g~[x])) ¥Ra_GT (eps0 ¥Ra_TIMES (b ¥Ra_TIMES a))},{x: x in (Za - n2) | Ra_ABS((Ras_Recip(f)~[x]) ¥Ra_MINUS (Ras_Recip(g)~[x])) ¥Ra_GT eps0})-->T189(Stat75,Stat37,Stat30*) ==> false; Discharge ==> QED -- -- Proof of the algebraic rules for the operations on rational sequences introduced above -- will rest on the fact that two rational sequences are equal if and only if they have -- the same value for each integer, and on the rules -- for calculating the values at each integer of -- -- -- -- Next we prove that the algebraic operations on rational sequences introduced above obey the -- normal commutative, distributive, etc., algebraic laws. Our first two results state -- the commutative laws for addition and multiplication respectively. These results follow trivially -- from the pointwise definitions of the operations $¥Ras_PLUS$ and $¥Ras_TIMES$. -- Theorem 578: ({F,G} ¥incin RaSeq) ¥imp (F ¥Ras_PLUS G = G ¥Ras_PLUS F). Proof: Suppose_not(f,g) ==> AUTO (f ¥Ras_PLUS g,g ¥Ras_PLUS f)-->T542 ==> Stat1: AUTO n-->Stat1 ==> AUTO (f,g)-->T555 ==> (f ¥Ras_PLUS g in RaSeq) & (f~[n] in Ra) & (g~[n] in Ra) & ((f ¥Ras_PLUS g)~[n] = (f~[n]) ¥Ra_PLUS (g~[n])) (g,f)-->T555 ==> (g ¥Ras_PLUS f in RaSeq) & ((g ¥Ras_PLUS f)~[n] = (g~[n]) ¥Ra_PLUS (f~[n])) (f~[n],g~[n])-->T445 ==> false; Discharge ==> QED -- Theorem 579: ({F,G} ¥incin RaSeq) ¥imp (F ¥Ras_TIMES G = G ¥Ras_TIMES F). Proof: Suppose_not(f,g) ==> AUTO (f ¥Ras_TIMES g,g ¥Ras_TIMES f)-->T542 ==> Stat1: AUTO n-->Stat1 ==> AUTO (f,g)-->T555 ==> (f ¥Ras_TIMES g in RaSeq) & (f~[n] in Ra) & (g~[n] in Ra) & ((f ¥Ras_TIMES g)~[n] = (f~[n]) ¥Ra_TIMES (g~[n])) (g,f)-->T555 ==> (g ¥Ras_TIMES f in RaSeq) & ((g ¥Ras_TIMES f)~[n] = (g~[n]) ¥Ra_TIMES (f~[n])) (f~[n],g~[n])-->T448 ==> false; Discharge ==> QED -- -- It is equally easy to prove the associative laws for addition and multiplication -- of rational sequences. Once more, these results follow trivially -- from the pointwise definitions of the operations $¥Ras_PLUS$ and $¥Ras_TIMES$. -- Theorem 580: ({F,G,H} ¥incin RaSeq) ¥imp ((F ¥Ras_PLUS G) ¥Ras_PLUS H = F ¥Ras_PLUS (G ¥Ras_PLUS H)). Proof: -- -- For let f,g,h be a counterexample, and consider the values at a generic integer n of all the function compositions which appear. -- By Theorem 338 the function values ((f ¥Ras_PLUS h) ¥Ras_PLUS h)~[n] and (f ¥Ras_PLUS (h ¥Ras_PLUS h))~[n] must be distinct at n, -- Suppose_not(f,g,h) ==> AUTO ((f ¥Ras_PLUS g) ¥Ras_PLUS h,(f ¥Ras_PLUS (g ¥Ras_PLUS h)))-->T542 ==> Stat1: AUTO n-->Stat1 ==> AUTO (f,g,n)-->T555 ==> ((f ¥Ras_PLUS g) in RaSeq) & (f~[n] in Ra) & (g~[n] in Ra) & ((f ¥Ras_PLUS g)~[n] = (f~[n]) ¥Ra_PLUS (g~[n])) (g,h,n)-->T555 ==> ((g ¥Ras_PLUS h) in RaSeq) & (g~[n] in Ra) & (h~[n] in Ra) & ((g ¥Ras_PLUS h)~[n] = (g~[n]) ¥Ra_PLUS (h~[n])) (f ¥Ras_PLUS g,h,n)-->T555 ==> (((f ¥Ras_PLUS g) ¥Ras_PLUS h) in RaSeq) & (((f ¥Ras_PLUS g) ¥Ras_PLUS h)~[n] = ((f ¥Ras_PLUS g)~[n]) ¥Ra_PLUS (h~[n])) (f,g ¥Ras_PLUS h,n)-->T555 ==> ((f ¥Ras_PLUS (g ¥Ras_PLUS h)) in RaSeq) & ((f ¥Ras_PLUS (g ¥Ras_PLUS h))~[n] = ((f~[n]) ¥Ra_PLUS ((g ¥Ras_PLUS h)~[n]))) -- -- which is easily seen to be impossible if we express these function values in terms of f~[n],g~[n], and h~[n], -- a contradiction which proves our theorem. -- EQUAL ==> ((f~[n]) ¥Ra_PLUS (g~[n])) ¥Ra_PLUS (h~[n]) = ((f ¥Ras_PLUS g) ¥Ras_PLUS h)~[n] EQUAL ==> (f~[n]) ¥Ra_PLUS ((g~[n]) ¥Ra_PLUS (h~[n])) = (f ¥Ras_PLUS (g ¥Ras_PLUS h))~[n] ELEM ==> ((f~[n]) ¥Ra_PLUS (g~[n])) ¥Ra_PLUS (h~[n]) /= (f~[n]) ¥Ra_PLUS ((g~[n]) ¥Ra_PLUS (h~[n])) (h~[n],f~[n],g~[n])-->T450 ==> false; Discharge ==> QED -- Theorem 581: ({F,G,H} ¥incin RaSeq) ¥imp ((F ¥Ras_TIMES G) ¥Ras_TIMES H = F ¥Ras_TIMES (G ¥Ras_TIMES H)). Proof: Suppose_not(fp,gp,hp) ==> ({fp,gp,hp} ¥incin RaSeq) & ((fp ¥Ras_TIMES gp) ¥Ras_TIMES hp /= fp ¥Ras_TIMES (gp ¥Ras_TIMES hp)) (fp,gp)-->T554 ==> ((fp ¥Ras_TIMES gp) in RaSeq) & ((fp ¥Ras_TIMES gp) = {[u,((fp~[u]) ¥Ra_TIMES (gp~[u]))]: u in Za}) (gp,hp)-->T554 ==> ((gp ¥Ras_TIMES hp) in RaSeq) & ((gp ¥Ras_TIMES hp) = {[u,((gp~[u]) ¥Ra_TIMES (hp~[u]))]: u in Za}) (fp ¥Ras_TIMES gp, hp)-->T554 ==> ((fp ¥Ras_TIMES gp) ¥Ras_TIMES hp) = {[u,(((fp ¥Ras_TIMES gp)~[u]) ¥Ra_TIMES (hp~[u]))]: u in Za} (fp, gp ¥Ras_TIMES hp)-->T554 ==> (fp ¥Ras_TIMES (gp ¥Ras_TIMES hp)) = {[u,((fp~[u]) ¥Ra_TIMES ((gp ¥Ras_TIMES hp)~[u]))]: u in Za} EQUAL ==> Stat1: {[u,(((fp ¥Ras_TIMES gp)~[u]) ¥Ra_TIMES (hp~[u]))]: u in Za} /= {[u,((fp~[u]) ¥Ra_TIMES ((gp ¥Ras_TIMES hp)~[u]))]: u in Za} i-->Stat1 ==> (i in Za) & ((((fp ¥Ras_TIMES gp)~[i]) ¥Ra_TIMES (hp~[i])) /= ((fp~[i]) ¥Ra_TIMES ((gp ¥Ras_TIMES hp)~[i]))) APPLY() fcn_symbol(f(u)->((fp~[u]) ¥Ra_TIMES (gp~[u])), g->(fp ¥Ras_TIMES gp), s->Za) ==> Stat2: (FORALL x | ((fp ¥Ras_TIMES gp)~[x]) = if x in Za then ((fp~[x]) ¥Ra_TIMES (gp~[x])) else 0 end if) APPLY() fcn_symbol(f(u)->((gp~[u]) ¥Ra_TIMES (hp~[u])), g->(gp ¥Ras_TIMES hp), s->Za) ==> Stat3: (FORALL x | ((gp ¥Ras_TIMES hp)~[x]) = if x in Za then ((gp~[x]) ¥Ra_TIMES (hp~[x])) else 0 end if) i-->Stat2 ==> ((fp ¥Ras_TIMES gp)~[i]) = ((fp~[i]) ¥Ra_TIMES (gp~[i])) i-->Stat3 ==> ((gp ¥Ras_TIMES hp)~[i]) = ((gp~[i]) ¥Ra_TIMES (hp~[i])) EQUAL ==> (((fp~[i]) ¥Ra_TIMES (gp~[i])) ¥Ra_TIMES (hp~[i])) /= ((fp~[i]) ¥Ra_TIMES ((gp~[i]) ¥Ra_TIMES (hp~[i]))) ELEM ==> (fp in RaSeq) & (gp in RaSeq) &(hp in RaSeq) (fp,i)-->T540 ==> (fp~[i]) in Ra (gp,i)-->T540 ==> (gp~[i]) in Ra (hp,i)-->T540 ==> (hp~[i]) in Ra (hp~[i], fp~[i], gp~[i])-->T456 ==> false; Discharge ==> QED -- Theorem 582: [Double-inversion law for rational sequences] (X in RaSeq) ¥imp (Ras_Rev(Ras_Rev(X))=X). Proof: Suppose_not(h) ==>AUTO (h,h)-->T554 ==> Ras_Rev(h) in RaSeq (h,Ras_Rev(h))-->T554 ==> Ras_Rev(Ras_Rev(h)) in RaSeq h-->T546 ==> Svm(h) & (domain(h) = Za) (Ras_Rev(Ras_Rev(h)))-->T546 ==> Svm(Ras_Rev(Ras_Rev(h))) & (domain(Ras_Rev(Ras_Rev(h))) = Za) h-->T72 ==> h = {[i,h~[i]]: i in domain(h)} (Ras_Rev(Ras_Rev(h)))-->T72 ==> (Ras_Rev(Ras_Rev(h))) = {[i,(Ras_Rev(Ras_Rev(h)))~[i]]: i in domain(Ras_Rev(Ras_Rev(h)))} Suppose ==> {[i,h~[i]]: i in Za} = {[i,(Ras_Rev(Ras_Rev(h)))~[i]]: i in Za} EQUAL ==> false; Discharge ==> Stat1: {[i,h~[i]]: i in Za} /= {[i,(Ras_Rev(Ras_Rev(h)))~[i]]: i in Za} i-->Stat1(Stat1) ==> Stat2: (i in Za) & ((h~[i]) /= ((Ras_Rev(Ras_Rev(h)))~[i])) (h,h,i)-->T555 ==> ((Ras_Rev(h))~[i]) = Ra_Rev(h~[i]) (h,Ras_Rev(h),i)-->T555 ==> ((Ras_Rev(Ras_Rev(h)))~[i]) = Ra_Rev((Ras_Rev(h))~[i]) Suppose ==> (h~[i]) = Ra_Rev(Ra_Rev(h~[i])) EQUAL(Stat2) ==> false; Discharge ==> Stat3: (h~[i]) /= Ra_Rev(Ra_Rev(h~[i])) (h,i)-->T540 ==> (h~[i]) in Ra (h~[i])-->T494(Stat3*) ==>false; Discharge ==> QED -- Theorem 583: [Distributive law for multiplication of rational sequences] ({X,Y,V} ¥incin RaSeq) ¥imp ((X ¥Ras_TIMES (Y ¥Ras_PLUS V)) = ((X ¥Ras_TIMES Y) ¥Ras_PLUS (X ¥Ras_TIMES V))). Proof: Suppose_not(h,k,v) ==>AUTO (h,k)-->T554 ==> (h ¥Ras_TIMES k) in RaSeq (h,v)-->T554 ==> (h ¥Ras_TIMES v) in RaSeq (k,v)-->T554 ==> (k ¥Ras_PLUS v) in RaSeq (h,k ¥Ras_PLUS v)-->T554 ==> (h ¥Ras_TIMES (k ¥Ras_PLUS v)) in RaSeq (h ¥Ras_TIMES k,h ¥Ras_TIMES v)-->T554 ==> ((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v)) in RaSeq h-->T546 ==> Svm(h) & (domain(h) = Za) k-->T546 ==> Svm(k) & (domain(k) = Za) v-->T546 ==> Svm(v) & (domain(v) = Za) (h ¥Ras_TIMES (k ¥Ras_PLUS v))-->T546 ==> Svm(h ¥Ras_TIMES (k ¥Ras_PLUS v)) & (domain(h ¥Ras_TIMES (k ¥Ras_PLUS v)) = Za) ((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v))-->T546 ==> Svm((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v)) & (domain((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v)) = Za) (h ¥Ras_TIMES (k ¥Ras_PLUS v))-->T72 ==> (h ¥Ras_TIMES (k ¥Ras_PLUS v)) = {[i,(h ¥Ras_TIMES (k ¥Ras_PLUS v))~[i]]: i in domain(h ¥Ras_TIMES (k ¥Ras_PLUS v))} ((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v))-->T72 ==> ((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v)) = {[i,((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v))~[i]]: i in domain((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v))} Suppose ==> {[i,(h ¥Ras_TIMES (k ¥Ras_PLUS v))~[i]]: i in Za} = {[i,((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v))~[i]]: i in Za} EQUAL ==> false; Discharge ==> Stat1: {[i,(h ¥Ras_TIMES (k ¥Ras_PLUS v))~[i]]: i in Za} /= {[i,((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v))~[i]]: i in Za} i-->Stat1(Stat1) ==> Stat2: (i in Za) & (((h ¥Ras_TIMES (k ¥Ras_PLUS v))~[i]) /= (((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v))~[i])) (h,k ¥Ras_PLUS v,i)-->T555 ==> ((h ¥Ras_TIMES (k ¥Ras_PLUS v))~[i]) = ((h~[i]) ¥Ra_TIMES ((k ¥Ras_PLUS v)~[i])) (k,v,i)-->T555 ==> ((k ¥Ras_PLUS v)~[i]) = ((k~[i]) ¥Ra_PLUS (v~[i])) (h ¥Ras_TIMES k,h ¥Ras_TIMES v,i)-->T555 ==> (((h ¥Ras_TIMES k) ¥Ras_PLUS (h ¥Ras_TIMES v))~[i]) = (((h ¥Ras_TIMES k)~[i]) ¥Ra_PLUS ((h ¥Ras_TIMES v)~[i])) (h,k,i)-->T555 ==> ((h ¥Ras_TIMES k)~[i]) = ((h~[i]) ¥Ra_TIMES (k~[i])) (h,v,i)-->T555 ==> ((h ¥Ras_TIMES v)~[i]) = ((h~[i]) ¥Ra_TIMES (v~[i])) Suppose ==> (((h~[i]) ¥Ra_TIMES (k~[i])) ¥Ra_PLUS ((h~[i]) ¥Ra_TIMES (v~[i]))) = ((h~[i]) ¥Ra_TIMES ((k~[i]) ¥Ra_PLUS (v~[i]))) EQUAL(Stat2) ==> false; Discharge ==> Stat3: (((h~[i]) ¥Ra_TIMES (k~[i])) ¥Ra_PLUS ((h~[i]) ¥Ra_TIMES (v~[i]))) /= ((h~[i]) ¥Ra_TIMES ((k~[i]) ¥Ra_PLUS (v~[i]))) (h,i)-->T540 ==> (h~[i]) in Ra (k,i)-->T540 ==> (k~[i]) in Ra (v,i)-->T540 ==> (v~[i]) in Ra (v~[i],h~[i],k~[i])-->T458(Stat3*) ==>false; Discharge ==> QED -- Theorem 584: [Law of signs for multiplication of rational sequences] ({X,Y} ¥incin RaSeq) ¥imp ((X ¥Ras_TIMES Ras_Rev(Y)) = Ras_Rev(X ¥Ras_TIMES Y)). Proof: Suppose_not(h,k) ==>AUTO (k,k)-->T554 ==> Ras_Rev(k) in RaSeq (h,Ras_Rev(k))-->T554 ==> (h ¥Ras_TIMES Ras_Rev(k)) in RaSeq (h,k)-->T554 ==> (h ¥Ras_TIMES k) in RaSeq (h,h ¥Ras_TIMES k)-->T554 ==> Ras_Rev(h ¥Ras_TIMES k) in RaSeq (h ¥Ras_TIMES Ras_Rev(k))-->T546 ==> Svm(h ¥Ras_TIMES Ras_Rev(k)) & (domain(h ¥Ras_TIMES Ras_Rev(k)) = Za) (Ras_Rev(h ¥Ras_TIMES k))-->T546 ==> Svm(Ras_Rev(h ¥Ras_TIMES k)) & (domain(Ras_Rev(h ¥Ras_TIMES k)) = Za) (h ¥Ras_TIMES Ras_Rev(k))-->T72 ==> (h ¥Ras_TIMES Ras_Rev(k)) = {[i,(h ¥Ras_TIMES Ras_Rev(k))~[i]]: i in domain(h ¥Ras_TIMES Ras_Rev(k))} (Ras_Rev(h ¥Ras_TIMES k))-->T72 ==> (Ras_Rev(h ¥Ras_TIMES k)) = {[i,(Ras_Rev(h ¥Ras_TIMES k))~[i]]: i in domain(Ras_Rev(h ¥Ras_TIMES k))} Suppose ==> {[i,(h ¥Ras_TIMES Ras_Rev(k))~[i]]: i in Za} = {[i,(Ras_Rev(h ¥Ras_TIMES k))~[i]]: i in Za} EQUAL ==> false; Discharge ==> Stat1: {[i,(h ¥Ras_TIMES Ras_Rev(k))~[i]]: i in Za} /= {[i,(Ras_Rev(h ¥Ras_TIMES k))~[i]]: i in Za} i-->Stat1(Stat1) ==> Stat2: (i in Za) & (((h ¥Ras_TIMES Ras_Rev(k))~[i]) /= ((Ras_Rev(h ¥Ras_TIMES k))~[i])) (h,Ras_Rev(k),i)-->T555 ==> ((h ¥Ras_TIMES Ras_Rev(k))~[i]) = ((h~[i]) ¥Ra_TIMES ((Ras_Rev(k))~[i])) (h,k,i)-->T555 ==> ((Ras_Rev(k))~[i]) = Ra_Rev(k~[i]) (h,h ¥Ras_TIMES k,i)-->T555 ==> ((Ras_Rev(h ¥Ras_TIMES k))~[i]) = Ra_Rev((h ¥Ras_TIMES k)~[i]) (h,k,i)-->T555 ==> ((h ¥Ras_TIMES k)~[i]) = ((h~[i]) ¥Ra_TIMES (k~[i])) EQUAL(Stat2) ==> Stat3: ((h~[i]) ¥Ra_TIMES Ra_Rev(k~[i])) /= Ra_Rev((h~[i]) ¥Ra_TIMES (k~[i])) (h,i)-->T540 ==> (h~[i]) in Ra (k,i)-->T540 ==> (k~[i]) in Ra (h~[i],k~[i])-->T485(Stat3*) ==>false; Discharge ==> QED -- Theorem 585: [Law of signs for multiplication of rational sequences, 2] ({X,Y} ¥incin RaSeq) ¥imp (((Ras_Rev(X) ¥Ras_TIMES Y) = Ras_Rev(X ¥Ras_TIMES Y)) & ((Ras_Rev(X) ¥Ras_TIMES Ras_Rev(Y)) = (X ¥Ras_TIMES Y))). Proof: Suppose_not(x,y) ==>AUTO (x,x)-->T554 ==> Ras_Rev(x) in RaSeq Suppose ==> (Ras_Rev(x) ¥Ras_TIMES y) /= Ras_Rev(x ¥Ras_TIMES y) (Ras_Rev(x),y)-->T579 ==> (Ras_Rev(x) ¥Ras_TIMES y) = (y ¥Ras_TIMES Ras_Rev(x)) (y,x)-->T584 ==> (Ras_Rev(x) ¥Ras_TIMES y) = Ras_Rev(y ¥Ras_TIMES x) (y,x)-->T579 ==> (x ¥Ras_TIMES y) = (y ¥Ras_TIMES x) EQUAL ==> false; Discharge ==> ((Ras_Rev(x) ¥Ras_TIMES y) = Ras_Rev(x ¥Ras_TIMES y)) & ((Ras_Rev(x) ¥Ras_TIMES Ras_Rev(y)) /= (x ¥Ras_TIMES y)) (y,y)-->T554 ==> Ras_Rev(y) in RaSeq (Ras_Rev(x),y)-->T584 ==> (Ras_Rev(x) ¥Ras_TIMES Ras_Rev(y)) = Ras_Rev(Ras_Rev(x) ¥Ras_TIMES y) EQUAL ==> (Ras_Rev(x) ¥Ras_TIMES Ras_Rev(y)) = Ras_Rev(Ras_Rev(x ¥Ras_TIMES y)) (x,y)-->T554 ==> (x ¥Ras_TIMES y) in RaSeq (x ¥Ras_TIMES y)-->T582 ==> false; Discharge ==> QED -- Theorem 586: [Any rational sequence times 0 is 0] (X in RaSeq) ¥imp ((X ¥Ras_TIMES Ra0Seq) = Ra0Seq). Proof: Suppose_not(h) ==> AUTO T545(*) ==> Ra0Seq in RaCauchy T539(*) ==> Stat1: Ra0Seq in RaSeq (h,Ra0Seq)-->T554(*) ==> Stat2: ((h ¥Ras_TIMES Ra0Seq) in RaSeq) & ((h ¥Ras_TIMES Ra0Seq) = {[i,(h~[i]) ¥Ra_TIMES (Ra0Seq~[i])]: i in Za}) (h ¥Ras_TIMES Ra0Seq,Ra0Seq)-->T542(*) ==> Stat3: not(FORALL n in Za | (((h ¥Ras_TIMES Ra0Seq) in RaSeq) & (Ra0Seq in RaSeq) & (((h ¥Ras_TIMES Ra0Seq)~[n]) = (Ra0Seq~[n])))) n0-->Stat3(Stat2,Stat1*) ==> Stat4: (n0 in Za) & (((h ¥Ras_TIMES Ra0Seq)~[n0]) /= (Ra0Seq~[n0])) EQUAL(Stat4,Stat2) ==> ({[i,(h~[i]) ¥Ra_TIMES (Ra0Seq~[i])]: i in Za}~[n0]) /= (Ra0Seq~[n0]) APPLY() Must_be_svm(b(i)->(h~[i]) ¥Ra_TIMES (Ra0Seq~[i]),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,(h~[i]) ¥Ra_TIMES (Ra0Seq~[i])]: i in Za}~[n0]) = ((h~[n0]) ¥Ra_TIMES (Ra0Seq~[n0]))) n0-->T548(Stat4,Stat4*) ==> Stat5: (Ra0Seq~[n0]) = Ra_0 EQUAL(Stat5) ==> ((h~[n0]) ¥Ra_TIMES (Ra0Seq~[n0])) = ((h~[n0]) ¥Ra_TIMES Ra_0) (h,n0)-->T540(*) ==> (h~[n0]) in Ra (h~[n0])-->T489(Stat4*) ==> false; Discharge ==> QED -- Theorem 587: [0 is a right additive identity for rational sequences] (X in RaSeq) ¥imp (X ¥Ras_PLUS Ra0Seq = X). Proof: Suppose_not(h) ==> AUTO T545(*) ==> Ra0Seq in RaCauchy T539(*) ==> Stat1: (Ra0Seq in RaSeq) & (h in RaSeq) (h,Ra0Seq)-->T554(*) ==> Stat2: ((h ¥Ras_PLUS Ra0Seq) in RaSeq) & ((h ¥Ras_PLUS Ra0Seq) = {[i,(h~[i]) ¥Ra_PLUS (Ra0Seq~[i])]: i in Za}) (h ¥Ras_PLUS Ra0Seq,h)-->T542(*) ==> Stat3: not(FORALL n in Za | (((h ¥Ras_PLUS Ra0Seq) in RaSeq) & (h in RaSeq) & (((h ¥Ras_PLUS Ra0Seq)~[n]) = (h~[n])))) n0-->Stat3(*) ==> Stat4: (n0 in Za) & (((h ¥Ras_PLUS Ra0Seq)~[n0]) /= (h~[n0])) EQUAL(Stat4,Stat2) ==> ({[i,(h~[i]) ¥Ra_PLUS (Ra0Seq~[i])]: i in Za}~[n0]) /= (h~[n0]) APPLY() Must_be_svm(b(i)->(h~[i]) ¥Ra_PLUS (Ra0Seq~[i]),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,(h~[i]) ¥Ra_PLUS (Ra0Seq~[i])]: i in Za}~[n0]) = ((h~[n0]) ¥Ra_PLUS (Ra0Seq~[n0]))) n0-->T548(Stat4,Stat4*) ==> Stat5: (Ra0Seq~[n0]) = Ra_0 EQUAL(Stat5) ==> ((h~[n0]) ¥Ra_PLUS (Ra0Seq~[n0])) = ((h~[n0]) ¥Ra_PLUS Ra_0) (h,n0)-->T540(*) ==> (h~[n0]) in Ra (h~[n0])-->T451(Stat4*) ==> false; Discharge ==> QED -- Theorem 588: [1 is a left multiplicative identity for rational sequences] (X in RaSeq) ¥imp (X ¥Ras_TIMES Ra1Seq = X). Proof: Suppose_not(h) ==> AUTO T545(*) ==> Ra1Seq in RaCauchy T539(*) ==> Stat1: Ra1Seq in RaSeq (h,Ra1Seq)-->T554(*) ==> Stat2: ((h ¥Ras_TIMES Ra1Seq) in RaSeq) & ((h ¥Ras_TIMES Ra1Seq) = {[i,(h~[i]) ¥Ra_TIMES (Ra1Seq~[i])]: i in Za}) (h ¥Ras_TIMES Ra1Seq,h)-->T542(*) ==> Stat3: not(FORALL n in Za | (((h ¥Ras_TIMES Ra1Seq) in RaSeq) & (h in RaSeq) & (((h ¥Ras_TIMES Ra1Seq)~[n]) = (h~[n])))) n0-->Stat3(*) ==> Stat4: (n0 in Za) & (((h ¥Ras_TIMES Ra1Seq)~[n0]) /= (h~[n0])) EQUAL(Stat4,Stat2) ==> ({[i,(h~[i]) ¥Ra_TIMES (Ra1Seq~[i])]: i in Za}~[n0]) /= (h~[n0]) APPLY() Must_be_svm(b(i)->(h~[i]) ¥Ra_TIMES (Ra1Seq~[i]),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,(h~[i]) ¥Ra_TIMES (Ra1Seq~[i])]: i in Za}~[n0]) = ((h~[n0]) ¥Ra_TIMES (Ra1Seq~[n0]))) n0-->T548(Stat4,Stat4*) ==> Stat5: (Ra1Seq~[n0]) = Ra_1 EQUAL(Stat5) ==> ((h~[n0]) ¥Ra_TIMES (Ra1Seq~[n0])) = ((h~[n0]) ¥Ra_TIMES Ra_1) (h,n0)-->T540(*) ==> (h~[n0]) in Ra (h~[n0])-->T461(Stat4*) ==> false; Discharge ==> QED -- Theorem 589: [0 is right subtractive identity for rational sequence subtraction] (X in RaSeq) ¥imp (X ¥Ras_MINUS Ra0Seq = X). Proof: Suppose_not(h) ==> AUTO Use_def(¥Ras_MINUS) ==> Stat1: (h ¥Ras_PLUS Ras_Rev(Ra0Seq)) /= h T545(*) ==> Ra0Seq in RaCauchy T539(*) ==> Stat2: Ra0Seq in RaSeq (Ra0Seq,Ra0Seq)-->T554(*) ==> Stat3: (Ras_Rev(Ra0Seq) in RaSeq) & (Ras_Rev(Ra0Seq) = {[i,Ra_Rev(Ra0Seq~[i])]: i in Za}) (h,Ras_Rev(Ra0Seq))-->T554(*) ==> Stat4: ((h ¥Ras_PLUS Ras_Rev(Ra0Seq)) in RaSeq) & ((h ¥Ras_PLUS Ras_Rev(Ra0Seq)) = {[i,(h~[i]) ¥Ra_PLUS ((Ras_Rev(Ra0Seq))~[i])]: i in Za}) (h ¥Ras_PLUS Ras_Rev(Ra0Seq),h)-->T542(Stat1,Stat1*) ==> Stat5: not(FORALL n in Za | ((h ¥Ras_PLUS Ras_Rev(Ra0Seq)) in RaSeq) & (h in RaSeq) & (((h ¥Ras_PLUS Ras_Rev(Ra0Seq))~[n]) = (h~[n]))) n0-->Stat5(*) ==> Stat6: (n0 in Za) & (((h ¥Ras_PLUS Ras_Rev(Ra0Seq))~[n0]) /= (h~[n0])) EQUAL(Stat6,Stat4,Stat3) ==> ({[i,(h~[i]) ¥Ra_PLUS ({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[i])]: i in Za}~[n0]) /= (h~[n0]) APPLY() Must_be_svm(b(i)->(h~[i]) ¥Ra_PLUS ({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[i]),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,(h~[i]) ¥Ra_PLUS ({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[i])]: i in Za}~[n0]) = ((h~[n0]) ¥Ra_PLUS ({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[n0]))) APPLY() Must_be_svm(b(i)->Ra_Rev(Ra0Seq~[i]),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[n0]) = Ra_Rev(Ra0Seq~[n0])) n0-->T548(Stat6*) ==> Stat7: ((Ra0Seq~[n0]) = Ra_0) & (({[i,(h~[i]) ¥Ra_PLUS ({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[i])]: i in Za}~[n0]) = ((h~[n0]) ¥Ra_PLUS ({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[n0]))) & (({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[n0]) = Ra_Rev(Ra0Seq~[n0])) T481 ==> Ra_Rev(Ra_0) = Ra_0 EQUAL(Stat7) ==> ({[i,(h~[i]) ¥Ra_PLUS ({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[i])]: i in Za}~[n0]) = ((h~[n0]) ¥Ra_PLUS Ra_0) (h,n0)-->T540 ==> (h~[n0]) in Ra (h~[n0])-->T451(Stat6*) ==> false; Discharge ==> QED -- Theorem 590: [Basic properties of the signed negative for rational sequences] (X in RaSeq) ¥imp ((Ras_Rev(X) in RaSeq) & ((Ras_Rev(X) ¥Ras_PLUS X) = Ra0Seq) & (Ras_Rev(Ras_Rev(X)) = X)). Proof: Suppose_not(h) ==> AUTO (h,h)-->T554 ==> ((Ras_Rev(h) ¥Ras_PLUS h) /= Ra0Seq) or (Ras_Rev(Ras_Rev(h)) /= h) Suppose ==> Stat1: (h in RaSeq) & ((Ras_Rev(h) ¥Ras_PLUS h) /= Ra0Seq) T545(Stat1*) ==> Ra0Seq in RaCauchy T539(Stat1*) ==> Ra0Seq in RaSeq (h,h)-->T554(Stat1*) ==> Ras_Rev(h) in RaSeq (Ras_Rev(h),h)-->T554(Stat1*) ==> (Ras_Rev(h) ¥Ras_PLUS h) in RaSeq (Ras_Rev(h) ¥Ras_PLUS h,Ra0Seq)-->T542(Stat1,Stat1*) ==> Stat2: not(FORALL n in Za | ((Ras_Rev(h) ¥Ras_PLUS h) in RaSeq) & (Ra0Seq in RaSeq) & (((Ras_Rev(h) ¥Ras_PLUS h)~[n]) = (Ra0Seq~[n]))) n0-->Stat2(Stat1*) ==> (n0 in Za) & (((Ras_Rev(h) ¥Ras_PLUS h)~[n0]) /= (Ra0Seq~[n0])) (Ras_Rev(h),h,n0)-->T555(Stat1*) ==> ((Ras_Rev(h) ¥Ras_PLUS h)~[n0]) = ((Ras_Rev(h)~[n0]) ¥Ra_PLUS (h~[n0])) (h,h,n0)-->T555(Stat1*) ==> (Ras_Rev(h)~[n0]) = Ra_Rev(h~[n0]) n0-->T548(Stat1*) ==> (Ra0Seq~[n0]) = Ra_0 EQUAL(Stat1*) ==> (Ra_Rev(h~[n0]) ¥Ra_PLUS (h~[n0])) /= Ra_0 (h,n0)-->T540(Stat1*) ==> (h~[n0]) in Ra (h~[n0])-->T452(Stat1*) ==> (Ra_Rev(h~[n0]) in Ra) & (((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[n0])) = Ra_0) (h~[n0],Ra_Rev(h~[n0]))-->T445(Stat1*) ==> false; Discharge ==> Stat3: (h in RaSeq) & (Ras_Rev(Ras_Rev(h)) /= h) (h,h)-->T554(Stat3*) ==> Ras_Rev(h) in RaSeq (h,Ras_Rev(h))-->T554(Stat3*) ==> Ras_Rev(Ras_Rev(h)) in RaSeq (Ras_Rev(Ras_Rev(h)),h)-->T542(Stat3,Stat3*) ==> Stat4: not(FORALL n in Za | (Ras_Rev(Ras_Rev(h)) in RaSeq) & (h in RaSeq) & ((Ras_Rev(Ras_Rev(h))~[n]) = (h~[n]))) n1-->Stat4(Stat3*) ==> (n1 in Za) & ((Ras_Rev(Ras_Rev(h))~[n1]) /= (h~[n1])) (h,Ras_Rev(h),n1)-->T555(Stat3*) ==> (Ras_Rev(Ras_Rev(h))~[n1]) = Ra_Rev((Ras_Rev(h))~[n1]) (h,h,n1)-->T555(Stat3*) ==> (Ras_Rev(h)~[n1]) = Ra_Rev(h~[n1]) EQUAL(Stat4*) ==> Ra_Rev(Ra_Rev(h~[n1])) /= (h~[n1]) (h,n1)-->T540(Stat3*) ==> (h~[n1]) in Ra (h~[n1])-->T494(Stat4*) ==> false; Discharge ==> QED -- -- Theorem 591: [Reciprocal sequence principle] ((X in RaCauchy) & (not Ra_eqseq(X,Ra0Seq))) ¥imp Ra_eqseq(X ¥Ras_TIMES Ras_Recip(X),Ra1Seq). Proof: Suppose_not(f) ==>AUTO -- -- Reasoning by contradiction, assume that a counterexample exists. We can, without loss of -- generality, assume that the counterexample to the desired statement is a rational Cauchy -- sequence $g$ whose reciprocal owns, as components, the reciprocals of the components of $g$. -- f-->T568 ==> Stat1: (EXISTS g in RaCauchy | Ra_eqseq(f,g) & (Ras_Recip(f) = Ras_Recip(g)) & (FORALL u in Za | ((g~[u]) /= Ra_0) & ((Ras_Recip(g)~[u]) = Recip(g~[u])))) g-->Stat1 ==> Stat2: (g in RaCauchy) & Ra_eqseq(f,g) & (Ras_Recip(f) = Ras_Recip(g)) & Stat3: (FORALL u in Za | ((g~[u]) /= Ra_0) & ((Ras_Recip(g)~[u]) = Recip(g~[u]))) T545(Stat2*) ==> (Ra0Seq in RaCauchy) & (Ra1Seq in RaCauchy) T539(*) ==> Stat4: (g in RaSeq) & (f in RaSeq) & (Ra0Seq in RaSeq) & (Ra1Seq in RaSeq) Suppose ==> Ra_eqseq(g,Ra0Seq) Ra0Seq-->T546(Stat4,Stat4*) ==> Ra_eqseq(Ra0Seq,Ra0Seq) (g,Ra0Seq,Ra0Seq)-->T553(Stat2*) ==> Ra_eqseq(Ra0Seq,g) f-->T546(Stat2*) ==> Ra_eqseq(f,f) (f,f,g)-->T553(Stat2*) ==> Ra_eqseq(g,f) (Ra0Seq,g,f)-->T553(*) ==> false; Discharge ==> not(Ra_eqseq(g,Ra0Seq)) (g,g)-->T570(Stat2*) ==> Ras_Recip(g) in RaCauchy T539(Stat2*) ==> Stat5: Ras_Recip(g) in RaSeq (g,Ras_Recip(g))-->T554(Stat2*) ==> Stat6: ((g ¥Ras_TIMES Ras_Recip(g)) in RaSeq) & ((g ¥Ras_TIMES Ras_Recip(g)) = {[i,((g~[i]) ¥Ra_TIMES ((Ras_Recip(g))~[i]))]: i in Za}) Ra1Seq-->T546(Stat4,Stat4*) ==> Stat7: Ra_eqseq(Ra1Seq,Ra1Seq) Suppose ==> Stat8: Ra_eqseq(g ¥Ras_TIMES Ras_Recip(g),Ra1Seq) (f,f)-->T570(*) ==> Ras_Recip(f) in RaCauchy (Ras_Recip(g))-->T546(Stat5,Stat5*) ==> Ra_eqseq(Ras_Recip(g),Ras_Recip(g)) EQUAL(Stat2) ==> Stat9: Ra_eqseq(Ras_Recip(f),Ras_Recip(g)) & (Ras_Recip(f) in RaSeq) (f,g,Ras_Recip(f),Ras_Recip(g))-->T574(*) ==> Ra_eqseq(f ¥Ras_TIMES Ras_Recip(f), g ¥Ras_TIMES Ras_Recip(g)) (f,Ras_Recip(f))-->T554(Stat4,Stat9*) ==> (f ¥Ras_TIMES Ras_Recip(f)) in RaSeq (f ¥Ras_TIMES Ras_Recip(f),g ¥Ras_TIMES Ras_Recip(g),Ra1Seq)-->T553(Stat4*) ==> Ra_eqseq(Ra1Seq,f ¥Ras_TIMES Ras_Recip(f)) (Ra1Seq,Ra1Seq,f ¥Ras_TIMES Ras_Recip(f))-->T553(*) ==> false; Discharge ==> Stat10: not(Ra_eqseq(g ¥Ras_TIMES Ras_Recip(g),Ra1Seq)) -- -- Since $g ¥Ras_TIMES Ras_Recip(g)$ is not equivalent to $Ra1Seq$, by reflexivity of -- equivalence these sequences must differ from one another, and hence they must differ -- in the $n0$-th component for some unsigned integer $n0$. -- Suppose ==> Stat11: (g ¥Ras_TIMES Ras_Recip(g)) = Ra1Seq EQUAL(Stat7,Stat10,Stat11) ==> false; Discharge ==> Stat12: (g ¥Ras_TIMES Ras_Recip(g)) /= Ra1Seq (g ¥Ras_TIMES Ras_Recip(g),Ra1Seq)-->T542(Stat12*) ==> Stat13: not(FORALL n in Za | (((g ¥Ras_TIMES Ras_Recip(g)) in RaSeq) & (Ra1Seq in RaSeq) & (((g ¥Ras_TIMES Ras_Recip(g))~[n]) = (Ra1Seq~[n])))) n0-->Stat13(Stat6,Stat4*) ==> Stat14: (n0 in Za) & (((g ¥Ras_TIMES Ras_Recip(g))~[n0]) /= (Ra1Seq~[n0])) -- EQUAL(Stat14,Stat6) ==> (({[i,((g~[i]) ¥Ra_TIMES ((Ras_Recip(g))~[i]))]: i in Za}~[n0]) /= (Ra1Seq~[n0])) APPLY() Must_be_svm(b(i)->((g~[i]) ¥Ra_TIMES ((Ras_Recip(g))~[i])),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,((g~[i]) ¥Ra_TIMES ((Ras_Recip(g))~[i]))]: i in Za}~[n0]) = ((g~[n0]) ¥Ra_TIMES ((Ras_Recip(g))~[n0]))) n0-->T548(Stat14,Stat14*) ==> (Ra1Seq~[n0]) = Ra_1 (Stat14*)ELEM ==> Stat15: ((g~[n0]) ¥Ra_TIMES ((Ras_Recip(g))~[n0])) /= Ra_1 -- (g,n0)-->T540(Stat14,Stat4*) ==> Stat16: (g~[n0]) in Ra n0-->Stat3(Stat14,Stat14*) ==> Stat17: ((g~[n0]) /= Ra_0) & ((Ras_Recip(g)~[n0]) = Recip(g~[n0])) EQUAL(Stat15,Stat17) ==> ((g~[n0]) ¥Ra_TIMES Recip(g~[n0])) /= Ra_1 (g~[n0])-->T462(Stat16*) ==> false; Discharge ==> QED -- -- Theorem 592: [The negative of a sum of rational sequences is the sum of the negatives] ((X in RaSeq) & (Y in RaSeq)) ¥imp (Ras_Rev(X ¥Ras_PLUS Y) = Ras_Rev(X) ¥Ras_PLUS Ras_Rev(Y)). Proof: Suppose_not(h,k) ==>AUTO (h,k)-->T554 ==> ((h ¥Ras_PLUS k) in RaSeq) & (Ras_Rev(k) in RaSeq) (h,h)-->T554 ==> Ras_Rev(h) in RaSeq (Ras_Rev(h),Ras_Rev(k))-->T554 ==> (Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k)) in RaSeq (h,h ¥Ras_PLUS k)-->T554 ==> Ras_Rev(h ¥Ras_PLUS k) in RaSeq (Ras_Rev(h ¥Ras_PLUS k))-->T546 ==> Svm(Ras_Rev(h ¥Ras_PLUS k)) & (domain(Ras_Rev(h ¥Ras_PLUS k)) = Za) (Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k))-->T546 ==> Svm(Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k)) & (domain(Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k)) = Za) (Ras_Rev(h ¥Ras_PLUS k))-->T72(*) ==> Ras_Rev(h ¥Ras_PLUS k) = {[i,Ras_Rev(h ¥Ras_PLUS k)~[i]]: i in domain(Ras_Rev(h ¥Ras_PLUS k))} (Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k))-->T72(*) ==> (Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k)) = {[i,(Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k))~[i]]: i in domain(Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k))} Suppose ==> {[i,Ras_Rev(h ¥Ras_PLUS k)~[i]]: i in Za} = {[i,(Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k))~[i]]: i in Za} EQUAL ==> false; Discharge ==> Stat1: {[i,Ras_Rev(h ¥Ras_PLUS k)~[i]]: i in Za} /= {[i,(Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k))~[i]]: i in Za} i-->Stat1(Stat1) ==> Stat2: (i in Za) & ((Ras_Rev(h ¥Ras_PLUS k)~[i]) /= ((Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k))~[i])) (h,h ¥Ras_PLUS k,i)-->T555 ==> (Ras_Rev(h ¥Ras_PLUS k)~[i]) = Ra_Rev((h ¥Ras_PLUS k)~[i]) (h,k,i)-->T555 ==> ((h ¥Ras_PLUS k)~[i]) = ((h~[i]) ¥Ra_PLUS (k~[i])) (Ras_Rev(h),Ras_Rev(k),i)-->T555 ==> ((Ras_Rev(h) ¥Ras_PLUS Ras_Rev(k))~[i]) = ((Ras_Rev(h)~[i]) ¥Ra_PLUS (Ras_Rev(k)~[i])) (h,h,i)-->T555 ==> (Ras_Rev(h)~[i]) = Ra_Rev(h~[i]) (k,k,i)-->T555 ==> (Ras_Rev(k)~[i]) = Ra_Rev(k~[i]) EQUAL ==> Ra_Rev((h ¥Ras_PLUS k)~[i]) = Ra_Rev((h~[i]) ¥Ra_PLUS (k~[i])) EQUAL ==> ((Ras_Rev(h)~[i]) ¥Ra_PLUS (Ras_Rev(k)~[i])) = (Ra_Rev(h~[i]) ¥Ra_PLUS Ra_Rev(k~[i])) (h,i)-->T540 ==> (h~[i]) in Ra (k,i)-->T540 ==> (k~[i]) in Ra (h~[i])-->T452 ==> Ra_Rev(h~[i]) in Ra (h~[i],k~[i])-->T492(Stat2*) ==> false; Discharge ==> QED -- Theorem 593: [A rational sequence minus itself gives 0] (X in RaSeq) ¥imp ((X ¥Ras_MINUS X) = Ra0Seq). Proof: Suppose_not(h) ==>AUTO T545(*) ==> Ra0Seq in RaCauchy T539(*) ==> Ra0Seq in RaSeq (h,h)-->T554 ==> Ras_Rev(h) in RaSeq (h,Ras_Rev(h))-->T554 ==> (h ¥Ras_PLUS Ras_Rev(h)) in RaSeq Use_def(¥Ras_MINUS) ==> ((h ¥Ras_PLUS Ras_Rev(h)) /= Ra0Seq) Ra0Seq-->T546 ==> Svm(Ra0Seq) & (domain(Ra0Seq) = Za) (h ¥Ras_PLUS Ras_Rev(h))-->T546 ==> Svm(h ¥Ras_PLUS Ras_Rev(h)) & (domain(h ¥Ras_PLUS Ras_Rev(h)) = Za) Ra0Seq-->T72 ==> Ra0Seq = {[i,Ra0Seq~[i]]: i in domain(Ra0Seq)} (h ¥Ras_PLUS Ras_Rev(h))-->T72(*) ==> (h ¥Ras_PLUS Ras_Rev(h)) = {[i,(h ¥Ras_PLUS Ras_Rev(h))~[i]]: i in domain(h ¥Ras_PLUS Ras_Rev(h))} Suppose ==> {[i,Ra0Seq~[i]]: i in Za} = {[i,(h ¥Ras_PLUS Ras_Rev(h))~[i]]: i in Za} EQUAL ==> false; Discharge ==> Stat1: {[i,Ra0Seq~[i]]: i in Za} /= {[i,(h ¥Ras_PLUS Ras_Rev(h))~[i]]: i in Za} i-->Stat1(Stat1) ==> Stat2: (i in Za) & ((Ra0Seq~[i]) /= ((h ¥Ras_PLUS Ras_Rev(h))~[i])) (h,Ras_Rev(h),i)-->T555 ==> ((h ¥Ras_PLUS Ras_Rev(h))~[i]) = ((h~[i]) ¥Ra_PLUS (Ras_Rev(h)~[i])) (h,h,i)-->T555 ==> (Ras_Rev(h)~[i]) = Ra_Rev(h~[i]) i-->T548 ==> (Ra0Seq~[i]) = Ra_0 EQUAL ==> ((h~[i]) ¥Ra_PLUS (Ras_Rev(h)~[i])) = ((h~[i]) ¥Ra_PLUS Ra_Rev(h~[i])) (h,i)-->T540 ==> (h~[i]) in Ra (h~[i])-->T452(Stat2*) ==> false; Discharge ==> QED -- Theorem 594: [Multiplication by $Ras_Rev(Ra1Seq)$] (X in RaSeq) ¥imp (Ras_Rev(X) = (Ras_Rev(Ra1Seq) ¥Ras_TIMES X)). Proof: Suppose_not(h) ==>AUTO T545(*) ==> Ra1Seq in RaCauchy T539(*) ==> Ra1Seq in RaSeq (Ra1Seq,Ra1Seq)-->T554 ==> Ras_Rev(Ra1Seq) in RaSeq (h,h)-->T554 ==> Ras_Rev(h) in RaSeq (Ras_Rev(Ra1Seq),h)-->T554 ==> (Ras_Rev(Ra1Seq) ¥Ras_TIMES h) in RaSeq (Ras_Rev(h))-->T546 ==> Svm(Ras_Rev(h)) & (domain(Ras_Rev(h)) = Za) (Ras_Rev(Ra1Seq) ¥Ras_TIMES h)-->T546 ==> Svm(Ras_Rev(Ra1Seq) ¥Ras_TIMES h) & (domain(Ras_Rev(Ra1Seq) ¥Ras_TIMES h) = Za) (Ras_Rev(h))-->T72 ==> Ras_Rev(h) = {[i,Ras_Rev(h)~[i]]: i in domain(Ras_Rev(h))} (Ras_Rev(Ra1Seq) ¥Ras_TIMES h)-->T72(*) ==> (Ras_Rev(Ra1Seq) ¥Ras_TIMES h) = {[i,(Ras_Rev(Ra1Seq) ¥Ras_TIMES h)~[i]]: i in domain(Ras_Rev(Ra1Seq) ¥Ras_TIMES h)} Suppose ==> {[i,Ras_Rev(h)~[i]]: i in Za} = {[i,(Ras_Rev(Ra1Seq) ¥Ras_TIMES h)~[i]]: i in Za} EQUAL ==> false; Discharge ==> Stat1: {[i,Ras_Rev(h)~[i]]: i in Za} /= {[i,(Ras_Rev(Ra1Seq) ¥Ras_TIMES h)~[i]]: i in Za} i-->Stat1(Stat1) ==> Stat2: (i in Za) & ((Ras_Rev(h)~[i]) /= ((Ras_Rev(Ra1Seq) ¥Ras_TIMES h)~[i])) (Ras_Rev(Ra1Seq),h,i)-->T555 ==> ((Ras_Rev(Ra1Seq) ¥Ras_TIMES h)~[i]) = ((Ras_Rev(Ra1Seq)~[i]) ¥Ra_TIMES (h~[i])) (h,h,i)-->T555 ==> (Ras_Rev(h)~[i]) = Ra_Rev(h~[i]) (h,Ra1Seq,i)-->T555 ==> (Ras_Rev(Ra1Seq)~[i]) = Ra_Rev(Ra1Seq~[i]) i-->T548 ==> (Ra1Seq~[i]) = Ra_1 EQUAL ==> ((Ras_Rev(Ra1Seq)~[i]) ¥Ra_TIMES (h~[i])) = (Ra_Rev(Ra_1) ¥Ra_TIMES (h~[i])) (h,i)-->T540 ==> (h~[i]) in Ra (h~[i])-->T486 ==> false; Discharge ==> QED -- Theorem 595: [The zero sequence is its own negative] Ras_Rev(Ra0Seq) = Ra0Seq. Proof: Suppose_not ==> AUTO T545(*) ==> Ra0Seq in RaCauchy T539(*) ==> Stat1: Ra0Seq in RaSeq (Ra0Seq,Ra0Seq)-->T554(*) ==> Stat2: (Ras_Rev(Ra0Seq) in RaSeq) & (Ras_Rev(Ra0Seq) = {[i,Ra_Rev(Ra0Seq~[i])]: i in Za}) (Ras_Rev(Ra0Seq),Ra0Seq)-->T542(*) ==> Stat3: not(FORALL n in Za | (((Ras_Rev(Ra0Seq)) in RaSeq) & (Ra0Seq in RaSeq) & (((Ras_Rev(Ra0Seq))~[n]) = (Ra0Seq~[n])))) n0-->Stat3(*) ==> Stat4: (n0 in Za) & (((Ras_Rev(Ra0Seq))~[n0]) /= (Ra0Seq~[n0])) EQUAL(Stat4,Stat2) ==> ({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[n0]) /= (Ra0Seq~[n0]) APPLY() Must_be_svm(b(i)->Ra_Rev(Ra0Seq~[i]),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,Ra_Rev(Ra0Seq~[i])]: i in Za}~[n0]) = (Ra_Rev(Ra0Seq~[n0]))) n0-->T548(Stat4,Stat4*) ==> Stat5: (Ra0Seq~[n0]) = Ra_0 T481(Stat5*) ==> Ra_Rev(Ra_0) = Ra_0 EQUAL(Stat5) ==> Ra_Rev(Ra0Seq~[n0]) = Ra_0 (Stat4*)Discharge ==> QED -- Theorem 596: [The zero/unit sequence is its own absolute value] (Ras_ABS(Ra0Seq) = Ra0Seq) & (Ras_ABS(Ra1Seq) = Ra1Seq). Proof: Suppose_not ==> AUTO ()-->T545 ==> AUTO ()-->T539 ==> AUTO (Ra0Seq,Ra0Seq)-->T554(*) ==> Stat1: (Ras_ABS(Ra0Seq) in RaSeq) & (Ras_ABS(Ra0Seq) = {[i,Ra_ABS(Ra0Seq~[i])]: i in Za}) (Ra1Seq,Ra1Seq)-->T554(*) ==> Stat2: (Ras_ABS(Ra1Seq) in RaSeq) & (Ras_ABS(Ra1Seq) = {[i,Ra_ABS(Ra1Seq~[i])]: i in Za}) T525(Stat3*) ==> Stat3: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) & Stat4: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) -- -- Rejection of the assertion, which consists of two alternative cases, -- proceeds quite similarly in either case. -- Suppose ==> Ras_ABS(Ra0Seq) /= Ra0Seq (Ras_ABS(Ra0Seq),Ra0Seq)-->T542(*) ==> Stat5: not(FORALL n in Za | (((Ras_ABS(Ra0Seq)) in RaSeq) & (Ra0Seq in RaSeq) & (((Ras_ABS(Ra0Seq))~[n]) = (Ra0Seq~[n])))) n0-->Stat5(*) ==> Stat6: (n0 in Za) & (((Ras_ABS(Ra0Seq))~[n0]) /= (Ra0Seq~[n0])) EQUAL(Stat6,Stat1) ==> ({[i,Ra_ABS(Ra0Seq~[i])]: i in Za}~[n0]) /= (Ra0Seq~[n0]) APPLY() Must_be_svm(b(i)->Ra_ABS(Ra0Seq~[i]),s->Za,u->n0) ==> (n0 in Za) ¥imp (({[i,Ra_ABS(Ra0Seq~[i])]: i in Za}~[n0]) = (Ra_ABS(Ra0Seq~[n0]))) n0-->T548(Stat6,Stat6*) ==> Stat7: (Ra0Seq~[n0]) = Ra_0 T451(Stat7*) ==> Ra_0 in Ra Ra_0-->Stat3(Stat6*) ==> Ra_ABS(Ra_0) = Ra_0 EQUAL(Stat7) ==> Ra_ABS(Ra0Seq~[n0]) = Ra_0 (Stat6*)Discharge ==> Ras_ABS(Ra1Seq) /= Ra1Seq -- -- (Ras_ABS(Ra1Seq),Ra1Seq)-->T542(*) ==> Stat8: not(FORALL n in Za | (((Ras_ABS(Ra1Seq)) in RaSeq) & (Ra1Seq in RaSeq) & (((Ras_ABS(Ra1Seq))~[n]) = (Ra1Seq~[n])))) n1-->Stat8(*) ==> Stat9: (n1 in Za) & (((Ras_ABS(Ra1Seq))~[n1]) /= (Ra1Seq~[n1])) EQUAL(Stat9,Stat2) ==> ({[i,Ra_ABS(Ra1Seq~[i])]: i in Za}~[n1]) /= (Ra1Seq~[n1]) APPLY() Must_be_svm(b(i)->Ra_ABS(Ra1Seq~[i]),s->Za,u->n1) ==> (n1 in Za) ¥imp (({[i,Ra_ABS(Ra1Seq~[i])]: i in Za}~[n1]) = (Ra_ABS(Ra1Seq~[n1]))) n1-->T548(Stat9,Stat9*) ==> Stat10: (Ra1Seq~[n1]) = Ra_1 T465(Stat10*) ==> Ra_is_nonneg(Ra_1) Ra_1-->Stat4(Stat10*) ==> Ra_ABS(Ra_1) = Ra_1 EQUAL(Stat10) ==> Ra_ABS(Ra1Seq~[n1]) = Ra_1 (Stat9*)Discharge ==> QED -- Theorem 597: [?] ((H in RaCauchy) & Ra_eqseq(H,Ra0Seq)) ¥imp (Ra_eqseq(Ras_ABS(H),Ra0Seq) & (Ra_eqseq(Ras_Rev(H),Ra0Seq))). Proof: Suppose_not(h) ==> AUTO T545(*) ==> Ra0Seq in RaCauchy Suppose ==> Stat1: (not Ra_eqseq(Ras_Rev(h),Ra0Seq)) (h,Ra0Seq)-->T575(*) ==> Ra_eqseq(Ras_Rev(h),Ras_Rev(Ra0Seq)) T595 ==> Ras_Rev(Ra0Seq) = Ra0Seq EQUAL(Stat1) ==> false; Discharge ==> Stat2: (not Ra_eqseq(Ras_ABS(h),Ra0Seq)) (h,Ra0Seq)-->T576(*) ==> Ra_eqseq(Ras_ABS(h),Ras_ABS(Ra0Seq)) T596 ==> Ras_ABS(Ra0Seq) = Ra0Seq EQUAL(Stat2) ==> false; Discharge ==> QED -- Theorem 598: [All terms of a Cauchy sequence not equivalent to zero have the same sign and have an absolute value bounded below beyond a certain point] ((F in RaCauchy) & (not Ra_eqseq(F,Ra0Seq))) ¥imp (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(F~[i]) ¥Ra_GT eps) & (Ra_ABS(F~[i]) = if ((F~[n]) ¥Ra_GE Ra_0) then (F~[i]) else Ra_Rev(F~[i]) end if) )). Proof: Suppose_not(h) ==> ((h in RaCauchy) & (not Ra_eqseq(h,Ra0Seq))) & Stat1: (not(EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS(h~[i]) ¥Ra_GT eps) & (Ra_ABS(h~[i]) = if ((h~[n]) ¥Ra_GE Ra_0) then (h~[i]) else Ra_Rev(h~[i]) end if) ))) T539(*) ==> Stat2: h in RaSeq -- -- Let the Cauchy sequence $h$ be a counterexample to our claim. -- Then it is easily seen that $h$ cannot be equivalent to $Ra0Seq$; hence, -- by Theorem 564, there exists a positive rational $eps0$ and an integer $n0$ -- beyond which all the components $h~[i]$ of $h$ have an absolute value greater than $eps0$ -- and all the components $h~[j], h~[i]$ of $h$ differ by less than $eps0$. -- h-->T564(*) ==> Stat3: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | Ra_ABS(h~[i]) ¥Ra_GT eps) & (FORALL i in Za, j in Za | ((i notin n) & (j notin n)) ¥imp (eps ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) )) (eps0,n0)-->Stat3(Stat3*) ==> Stat4: (eps0 in Ra) & (n0 in Za) & (eps0 ¥Ra_GT Ra_0) & Stat5: (FORALL i in (Za - n0) | Ra_ABS(h~[i]) ¥Ra_GT eps0) & Stat6: (FORALL i in Za, j in Za | ((i notin n0) & (j notin n0)) ¥imp (eps0 ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) ) -- -- Our initial hypothesis now yields the existence of a component, say the $i1$-th, -- beyond the $n0$-th component, whose absolute value does not comply in sign with -- the $n0$-th component. -- (eps0,n0)-->Stat1(Stat4*) ==> Stat7: not(FORALL i in (Za - n0) | (Ra_ABS(h~[i]) ¥Ra_GT eps0) & (Ra_ABS(h~[i]) = if ((h~[n0]) ¥Ra_GE Ra_0) then (h~[i]) else Ra_Rev(h~[i]) end if) ) i1-->Stat7(Stat7*) ==> Stat8: (i1 in (Za - n0)) & (not(Ra_ABS(h~[i1]) ¥Ra_GT eps0) or (Ra_ABS(h~[i1]) /= if ((h~[n0]) ¥Ra_GE Ra_0) then (h~[i1]) else Ra_Rev(h~[i1]) end if)) i1-->Stat5(Stat8*) ==> Stat9: (Ra_ABS(h~[i1]) ¥Ra_GT eps0) & (Ra_ABS(h~[i1]) /= if ((h~[n0]) ¥Ra_GE Ra_0) then (h~[i1]) else Ra_Rev(h~[i1]) end if) -- -- Either $h~[n0]$ is positive, or it is negative. In the first case... -- n0-->Stat5(Stat4*) ==> Stat10: Ra_ABS(h~[n0]) ¥Ra_GT eps0 (h,n0)-->T540(Stat2,Stat4*) ==> Stat11: (h~[n0]) in Ra (h~[n0])-->T527(Stat11*) ==> Stat12: (Ra_ABS(h~[n0]) in Ra) & (Ra_ABS(h~[n0]) ¥Ra_GE Ra_0) (h~[n0])-->T451(Stat11,Stat11*) ==> Stat13: Ra_0 in Ra (Ra_ABS(h~[n0]),eps0,Ra_0)-->T498(Stat12,Stat4,Stat13,Stat10*) ==> Ra_ABS(h~[n0]) ¥Ra_GT Ra_0 (Ra_ABS(h~[n0]),Ra_0)-->T473(Stat13*) ==> Stat14: Ra_ABS(h~[n0]) /= Ra_0 T525(Stat13*) ==> Stat15: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) (h~[n0])-->Stat15(Stat11,Stat14*) ==> Stat16: (h~[n0]) /= Ra_0 (h~[n0],Ra_0)-->T476(Stat11,Stat13,Stat16*) ==> ((h~[n0]) ¥Ra_GT Ra_0) or (Ra_0 ¥Ra_GT (h~[n0])) (h,i1)-->T540(Stat2,Stat8*) ==> Stat17: (h~[i1]) in Ra (h~[i1])-->T452(Stat17*) ==> Stat18: Ra_Rev(h~[i1]) in Ra T481(Stat18*) ==> Stat19: Ra_Rev(Ra_0) = Ra_0 (eps0,eps0)-->T473(Stat19*) ==> Stat20: not(eps0 ¥Ra_GT eps0) eps0-->T451(Stat4,Stat4*) ==> Stat21: eps0 = (eps0 ¥Ra_PLUS Ra_0) Suppose ==> (h~[n0]) ¥Ra_GT Ra_0 -- -- ... we reach a contradiction as follows. Observe that $Ra_ABS(h~[n0])$ equals $h~[n0]$, and -- Stat9 yields that $Ra_ABS(h~[i1]) /= (h~[i1])$ in this case, and hence $h~[i1]$ is negative. -- However, this conflicts with the fact that the distance between $h~[n0]$, which is bigger -- than $eps0$, and $h~[i1]$ is smaller than $eps0$. -- (h~[n0],Ra_0)-->T473(Stat16*) ==> Stat22: (h~[n0]) ¥Ra_GE Ra_0 (h~[n0])-->T529(Stat11*) ==> Stat23: Ra_ABS(h~[n0]) = (h~[n0]) (Stat22,Stat9*)ELEM ==> Stat24: Ra_ABS(h~[i1]) /= (h~[i1]) (h~[i1])-->T528(Stat24,Stat17*) ==> Stat25: not((h~[i1]) ¥Ra_GE Ra_0) (Ra_0,h~[i1])-->T478(Stat13,Stat17,Stat25*) ==> Stat26: Ra_0 ¥Ra_GT (h~[i1]) (Ra_0,h~[i1])-->T503(Stat26,Stat13,Stat17*) ==> Stat27: Ra_Rev(h~[i1]) ¥Ra_GT Ra_Rev(Ra_0) EQUAL(Stat27,Stat19) ==> Stat28: Ra_Rev(h~[i1]) ¥Ra_GT Ra_0 EQUAL(Stat23,Stat10) ==> Stat29: (h~[n0]) ¥Ra_GT eps0 (h~[n0],eps0)-->T473(Stat29*) ==> Stat30: (h~[n0]) ¥Ra_GE eps0 (h~[n0],eps0,Ra_Rev(h~[i1]),Ra_0)-->T504(Stat11,Stat4,Stat18,Stat13,Stat30,Stat28*) ==> Stat31: ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) ¥Ra_GT (eps0 ¥Ra_PLUS Ra_0) EQUAL(Stat31,Stat21) ==> Stat32: ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) ¥Ra_GT eps0 (h~[n0],Ra_Rev(h~[i1]))-->T445(Stat11,Stat18*) ==> Stat33: ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) in Ra ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1]),eps0,Ra_0)-->T498(Stat32,Stat33,Stat4,Stat13*) ==> ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) ¥Ra_GT Ra_0 ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1]))-->T529(Stat33*) ==> Ra_ABS((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) = ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) Use_def(¥Ra_MINUS) ==> (h~[n0]) ¥Ra_MINUS (h~[i1]) = (h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1]) EQUAL(Stat32) ==> Stat34: (Ra_ABS((h~[n0]) ¥Ra_MINUS (h~[i1])) in Ra) & (Ra_ABS((h~[n0]) ¥Ra_MINUS (h~[i1])) ¥Ra_GT eps0) (n0,i1)-->Stat6(Stat4,Stat8*) ==> Stat35: eps0 ¥Ra_GT Ra_ABS((h~[n0]) ¥Ra_MINUS (h~[i1])) (eps0,Ra_ABS((h~[n0]) ¥Ra_MINUS (h~[i1])),eps0)-->T498(Stat4,Stat34,Stat35,Stat20*) ==> false; Discharge ==> Stat36: Ra_0 ¥Ra_GT (h~[n0]) -- -- Hence $h~[n0]$ is negative; but then we reach again a contradiction, -- leading to the desired overall conclusion, as follows. Observe that $Ra_ABS(h~[n0])$ equals -- $Ra_Rev(h~[n0])$, and Stat9 yields that $Ra_ABS(h~[i1]) /= Ra_Rev(h~[i1])$ in this case, -- and hence $h~[i1]$ is positive. However, this conflicts with the fact that the distance -- between $h~[n0]$, which is smaller than $eps0$, and $h~[i1]$ is smaller than $eps0$. -- T525(Stat36*) ==> Stat37: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) (h~[n0])-->Stat37(Stat11,Stat11*) ==> Stat38: Ra_ABS(Ra_Rev(h~[n0])) = Ra_ABS(h~[n0]) (Ra_0,h~[n0])-->T503(Stat36,Stat11,Stat13*) ==> Stat39: Ra_Rev(h~[n0]) ¥Ra_GT Ra_Rev(Ra_0) EQUAL(Stat39,Stat19) ==> Stat40: Ra_Rev(h~[n0]) ¥Ra_GT Ra_0 (h~[n0])-->T452(Stat11,Stat11*) ==> Stat41: Ra_Rev(h~[n0]) in Ra (Ra_Rev(h~[n0]))-->T529(Stat38*) ==> Ra_ABS(h~[n0]) = Ra_Rev(h~[n0]) Suppose ==> Stat42: (h~[n0]) ¥Ra_GE Ra_0 (Ra_0,h~[n0],Ra_0)-->T497(Stat13,Stat11,Stat36,Stat42*) ==> Ra_0 ¥Ra_GT Ra_0 -- Use_def(¥Ra_GT)(Stat42*) ==> false; Discharge ==> Stat43: not((h~[n0]) ¥Ra_GE Ra_0) (Ra_0,Ra_0)-->T473(Stat42*) ==> false; Discharge ==> Stat43: not((h~[n0]) ¥Ra_GE Ra_0) (Stat9,Stat43*)ELEM ==> Stat44: Ra_ABS(h~[i1]) /= Ra_Rev(h~[i1]) (h~[i1])-->Stat37(Stat17,Stat17*) ==> Stat45: Ra_ABS(Ra_Rev(h~[i1])) = Ra_ABS(h~[i1]) (Ra_Rev(h~[i1]))-->T528(Stat44,Stat45,Stat18*) ==> Stat46: not(Ra_Rev(h~[i1]) ¥Ra_GE Ra_0) (Ra_0,Ra_Rev(h~[i1]))-->T478(Stat13,Stat18,Stat46*) ==> Stat47: Ra_0 ¥Ra_GT Ra_Rev(h~[i1]) (Ra_0,Ra_Rev(h~[i1]))-->T503(Stat13,Stat18,Stat47*) ==> Stat48: Ra_Rev(Ra_Rev(h~[i1])) ¥Ra_GT Ra_Rev(Ra_0) (h~[i1])-->T494(Stat17*) ==> Stat49: Ra_Rev(Ra_Rev(h~[i1])) = h~[i1] EQUAL(Stat48,Stat49,Stat19) ==> Stat50: (h~[i1]) ¥Ra_GT Ra_0 (h~[i1])-->T529(Stat17,Stat50*) ==> Stat51: Ra_ABS(h~[i1]) = (h~[i1]) EQUAL(Stat9,Stat51) ==> Stat52: (h~[i1]) ¥Ra_GT eps0 (h~[n0])-->T452(Stat17*) ==> Stat53: Ra_Rev(h~[n0]) in Ra (Ra_Rev(h~[n0]),Ra_0)-->T473(Stat40*) ==> Stat54: Ra_Rev(h~[n0]) ¥Ra_GE Ra_0 (h~[i1],eps0,Ra_Rev(h~[n0]),Ra_0)-->T505(Stat17,Stat4,Stat41,Stat13,Stat52,Stat54*) ==> Stat55: (h~[i1] ¥Ra_PLUS Ra_Rev(h~[n0])) ¥Ra_GT (eps0 ¥Ra_PLUS Ra_0) EQUAL(Stat55,Stat21) ==> Stat56: ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) ¥Ra_GT eps0 (h~[i1],Ra_Rev(h~[n0]))-->T445(Stat17,Stat41*) ==> Stat57: ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) in Ra ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0]),eps0,Ra_0)-->T498(Stat57,Stat4,Stat13,Stat56*) ==> ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) ¥Ra_GT Ra_0 ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0]))-->T529(Stat57*) ==> Ra_ABS((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) = ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) Use_def(¥Ra_MINUS) ==> Stat58: Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])) = Ra_ABS((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) EQUAL(Stat56) ==> Stat59: (Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])) ¥Ra_GT eps0) & (Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])) in Ra) (i1,n0)-->Stat6(Stat8,Stat4*) ==> Stat60: eps0 ¥Ra_GT Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])) (eps0,Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])),eps0)-->T498(Stat59,Stat60,Stat4,Stat20*) ==> false; Discharge ==> QED -- Theorem 599: [All terms of a Cauchy sequence not equivalent to zero have the same sign beyond a certain point] ((F in RaCauchy) & (not Ra_eqseq(F,Ra0Seq))) ¥imp (EXISTS n in Za | shifted_seq(Ras_ABS(F),n) = if ((F~[n]) ¥Ra_GE Ra_0) then shifted_seq(F,n) else shifted_seq(Ras_Rev(F),n) end if). Proof: Suppose_not(h) ==> Stat1: ((h in RaCauchy) & (not Ra_eqseq(h,Ra0Seq))) & Stat2: (not(EXISTS n in Za | shifted_seq(Ras_ABS(h),n) = if ((h~[n]) ¥Ra_GE Ra_0) then shifted_seq(h,n) else shifted_seq(Ras_Rev(h),n) end if)) T539(*) ==> Stat3: h in RaSeq -- -- Let the Cauchy sequence $h$ be a counterexample to our claim. -- Then it is easily seen that $h$ cannot be equivalent to $Ra0Seq$; hence, -- by Theorem 564, there exists a positive rational $eps0$ and an integer $n0$ -- beyond which all the components $h~[i]$ of $h$ have an absolute value greater than $eps0$ -- and all the components $h~[j], h~[i]$ of $h$ differ by less than $eps0$. -- h-->T564(*) ==> Stat4: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | Ra_ABS(h~[i]) ¥Ra_GT eps) & (FORALL i in Za, j in Za | ((i notin n) & (j notin n)) ¥imp (eps ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) )) (eps0,n0)-->Stat4(Stat4*) ==> Stat5: (eps0 in Ra) & (n0 in Za) & (eps0 ¥Ra_GT Ra_0) & Stat6: (FORALL i in (Za - n0) | Ra_ABS(h~[i]) ¥Ra_GT eps0) & Stat7: (FORALL i in Za, j in Za | ((i notin n0) & (j notin n0)) ¥imp (eps0 ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) ) -- -- Our initial hypothesis now yields the existence of a component, say the $i1$-th, -- beyond the $n0$-th component, whose absolute value does not comply in sign with -- the $n0$-th component. -- n0-->Stat2(Stat5*) ==> Stat8: shifted_seq(Ras_ABS(h),n0) /= if ((h~[n0]) ¥Ra_GE Ra_0) then shifted_seq(h,n0) else shifted_seq(Ras_Rev(h),n0) end if (h,n0)-->T567(Stat1,Stat5*) ==> shifted_seq(h,n0) in RaCauchy (h,h)-->T556(Stat1,Stat1*) ==> Stat9: (Ras_Rev(h) in RaCauchy) & (Ras_ABS(h) in RaCauchy) (Ras_Rev(h),n0)-->T567(Stat9,Stat5*) ==> shifted_seq(Ras_Rev(h),n0) in RaCauchy (Ras_ABS(h),n0)-->T567(Stat9,Stat5*) ==> shifted_seq(Ras_ABS(h),n0) in RaCauchy T539(Stat8*) ==> Stat10: (shifted_seq(h,n0) in RaSeq) & (shifted_seq(Ras_Rev(h),n0) in RaSeq) & (shifted_seq(Ras_ABS(h),n0) in RaSeq) & ((if ((h~[n0]) ¥Ra_GE Ra_0) then shifted_seq(h,n0) else shifted_seq(Ras_Rev(h),n0) end if) in RaSeq) (shifted_seq(Ras_ABS(h),n0),if ((h~[n0]) ¥Ra_GE Ra_0) then shifted_seq(h,n0) else shifted_seq(Ras_Rev(h),n0) end if)-->T542(Stat10,Stat8*) ==> Stat11: not(FORALL i in Za | ((shifted_seq(Ras_ABS(h),n0) in RaSeq) & ((if ((h~[n0]) ¥Ra_GE Ra_0) then shifted_seq(h,n0) else shifted_seq(Ras_Rev(h),n0) end if) in RaSeq) & (((shifted_seq(Ras_ABS(h),n0))~[i]) = ((if ((h~[n0]) ¥Ra_GE Ra_0) then shifted_seq(h,n0) else shifted_seq(Ras_Rev(h),n0) end if)~[i])))) i0-->Stat11(Stat10*) ==> Stat12: (i0 in Za) & (((shifted_seq(Ras_ABS(h),n0))~[i0]) /= (if ((h~[n0]) ¥Ra_GE Ra_0) then shifted_seq(h,n0) else shifted_seq(Ras_Rev(h),n0) end if)~[i0]) Loc_def ==> Stat13: i1 = (n0 ¥PLUS i0) (n0,i0)-->T283(Stat5,Stat12*) ==> (n0 ¥PLUS i0) in Za (n0,i0)-->T292(Stat5*) ==> (n0 ¥PLUS i0) notin n0 (Stat13*)ELEM ==> Stat14: i1 in (Za - n0) i1-->Stat6(Stat14*) ==> Stat15: Ra_ABS(h~[i1]) ¥Ra_GT eps0 Suppose ==> Stat16: Ra_ABS(h~[i1]) = if ((h~[n0]) ¥Ra_GE Ra_0) then (h~[i1]) else Ra_Rev(h~[i1]) end if APPLY() if_then_else(p->((h~[n0]) ¥Ra_GE Ra_0),a->shifted_seq(h,n0),b->shifted_seq(Ras_Rev(h),n0),f(x)->(x~[i0])) ==> Stat17: ((if ((h~[n0]) ¥Ra_GE Ra_0) then shifted_seq(h,n0) else shifted_seq(Ras_Rev(h),n0) end if)~[i0]) = (if ((h~[n0]) ¥Ra_GE Ra_0) then ((shifted_seq(h,n0))~[i0]) else ((shifted_seq(Ras_Rev(h),n0))~[i0]) end if) (h,n0,i0)-->T547(Stat3,Stat3,Stat12,Stat5*) ==> ((shifted_seq(h,n0))~[i0]) = (h~[n0 ¥PLUS i0]) T539(Stat9*) ==> Stat18: (Ras_Rev(h) in RaSeq) & (Ras_ABS(h) in RaSeq) (Ras_Rev(h),n0,i0)-->T547(Stat18,Stat9,Stat12,Stat5*) ==> ((shifted_seq(Ras_Rev(h),n0))~[i0]) = ((Ras_Rev(h))~[n0 ¥PLUS i0]) (Ras_ABS(h),n0,i0)-->T547(Stat18,Stat9,Stat12,Stat5*) ==> ((shifted_seq(Ras_ABS(h),n0))~[i0]) = ((Ras_ABS(h))~[n0 ¥PLUS i0]) EQUAL(Stat12) ==> Stat19: ((Ras_ABS(h))~[i1]) /= (if ((h~[n0]) ¥Ra_GE Ra_0) then (h~[i1]) else ((Ras_Rev(h))~[i1]) end if) (h,h,i1)-->T555(Stat3,Stat14*) ==> Stat20: (((Ras_ABS(h))~[i1]) = Ra_ABS(h~[i1])) & (((Ras_Rev(h))~[i1]) = Ra_Rev(h~[i1])) (Stat19,Stat20,Stat16*)ELEM ==> false; Discharge ==> Stat21: Ra_ABS(h~[i1]) /= if ((h~[n0]) ¥Ra_GE Ra_0) then (h~[i1]) else Ra_Rev(h~[i1]) end if -- -- Either $h~[n0]$ is positive, or it is negative. In the first case... -- n0-->Stat6(Stat5*) ==> Stat22: Ra_ABS(h~[n0]) ¥Ra_GT eps0 (h,n0)-->T540(Stat3,Stat5*) ==> Stat23: (h~[n0]) in Ra (h~[n0])-->T527(Stat23*) ==> Stat24: (Ra_ABS(h~[n0]) in Ra) & (Ra_ABS(h~[n0]) ¥Ra_GE Ra_0) (h~[n0])-->T451(Stat23,Stat23*) ==> Stat25: Ra_0 in Ra (Ra_ABS(h~[n0]),eps0,Ra_0)-->T498(Stat24,Stat5,Stat25,Stat22*) ==> Ra_ABS(h~[n0]) ¥Ra_GT Ra_0 (Ra_ABS(h~[n0]),Ra_0)-->T473(Stat25*) ==> Stat26: Ra_ABS(h~[n0]) /= Ra_0 T525(Stat25*) ==> Stat27: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) (h~[n0])-->Stat27(Stat23,Stat26*) ==> Stat28: (h~[n0]) /= Ra_0 (h~[n0],Ra_0)-->T476(Stat23,Stat25,Stat28*) ==> ((h~[n0]) ¥Ra_GT Ra_0) or (Ra_0 ¥Ra_GT (h~[n0])) (h,i1)-->T540(Stat3,Stat14*) ==> Stat29: (h~[i1]) in Ra (h~[i1])-->T452(Stat29*) ==> Stat30: Ra_Rev(h~[i1]) in Ra T481(Stat30*) ==> Stat31: Ra_Rev(Ra_0) = Ra_0 (eps0,eps0)-->T473(Stat31*) ==> Stat32: not(eps0 ¥Ra_GT eps0) eps0-->T451(Stat5,Stat5*) ==> Stat33: eps0 = (eps0 ¥Ra_PLUS Ra_0) Suppose ==> (h~[n0]) ¥Ra_GT Ra_0 -- -- ... we reach a contradiction as follows. Observe that $Ra_ABS(h~[n0])$ equals $h~[n0]$, and -- Stat21 yields that $Ra_ABS(h~[i1]) /= (h~[i1])$ in this case, and hence $h~[i1]$ is negative. -- However, this conflicts with the fact that the distance between $h~[n0]$, which is bigger -- than $eps0$, and $h~[i1]$ is smaller than $eps0$. -- (h~[n0],Ra_0)-->T473(Stat28*) ==> Stat34: (h~[n0]) ¥Ra_GE Ra_0 (h~[n0])-->T529(Stat23*) ==> Stat35: Ra_ABS(h~[n0]) = (h~[n0]) (Stat34,Stat21*)ELEM ==> Stat36: Ra_ABS(h~[i1]) /= (h~[i1]) (h~[i1])-->T528(Stat36,Stat29*) ==> Stat37: not((h~[i1]) ¥Ra_GE Ra_0) (Ra_0,h~[i1])-->T478(Stat25,Stat29,Stat37*) ==> Stat38: Ra_0 ¥Ra_GT (h~[i1]) (Ra_0,h~[i1])-->T503(Stat38,Stat25,Stat29*) ==> Stat39: Ra_Rev(h~[i1]) ¥Ra_GT Ra_Rev(Ra_0) EQUAL(Stat39,Stat31) ==> Stat40: Ra_Rev(h~[i1]) ¥Ra_GT Ra_0 EQUAL(Stat35,Stat22) ==> Stat41: (h~[n0]) ¥Ra_GT eps0 (h~[n0],eps0)-->T473(Stat41*) ==> Stat42: (h~[n0]) ¥Ra_GE eps0 (h~[n0],eps0,Ra_Rev(h~[i1]),Ra_0)-->T504(Stat23,Stat5,Stat30,Stat25,Stat42,Stat40*) ==> Stat43: ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) ¥Ra_GT (eps0 ¥Ra_PLUS Ra_0) EQUAL(Stat43,Stat33) ==> Stat44: ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) ¥Ra_GT eps0 (h~[n0],Ra_Rev(h~[i1]))-->T445(Stat23,Stat30*) ==> Stat45: ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) in Ra ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1]),eps0,Ra_0)-->T498(Stat44,Stat45,Stat5,Stat25*) ==> ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) ¥Ra_GT Ra_0 ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1]))-->T529(Stat45*) ==> Ra_ABS((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) = ((h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1])) Use_def(¥Ra_MINUS) ==> (h~[n0]) ¥Ra_MINUS (h~[i1]) = (h~[n0]) ¥Ra_PLUS Ra_Rev(h~[i1]) EQUAL(Stat44) ==> Stat46: (Ra_ABS((h~[n0]) ¥Ra_MINUS (h~[i1])) in Ra) & (Ra_ABS((h~[n0]) ¥Ra_MINUS (h~[i1])) ¥Ra_GT eps0) (n0,i1)-->Stat7(Stat5,Stat14*) ==> Stat47: eps0 ¥Ra_GT Ra_ABS((h~[n0]) ¥Ra_MINUS (h~[i1])) (eps0,Ra_ABS((h~[n0]) ¥Ra_MINUS (h~[i1])),eps0)-->T498(Stat5,Stat46,Stat47,Stat32*) ==> false; Discharge ==> Stat48: Ra_0 ¥Ra_GT (h~[n0]) -- -- Hence $h~[n0]$ is negative; but then we reach again a contradiction, -- leading to the desired overall conclusion, as follows. Observe that $Ra_ABS(h~[n0])$ equals -- $Ra_Rev(h~[n0])$, and Stat21 yields that $Ra_ABS(h~[i1]) /= Ra_Rev(h~[i1])$ in this case, -- and hence $h~[i1]$ is positive. However, this conflicts with the fact that the distance -- between $h~[n0]$, which is smaller than $eps0$, and $h~[i1]$ is smaller than $eps0$. -- T525(Stat48*) ==> Stat49: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) (h~[n0])-->Stat49(Stat23,Stat23*) ==> Stat50: Ra_ABS(Ra_Rev(h~[n0])) = Ra_ABS(h~[n0]) (Ra_0,h~[n0])-->T503(Stat48,Stat23,Stat25*) ==> Stat51: Ra_Rev(h~[n0]) ¥Ra_GT Ra_Rev(Ra_0) EQUAL(Stat51,Stat31) ==> Stat52: Ra_Rev(h~[n0]) ¥Ra_GT Ra_0 (h~[n0])-->T452(Stat23,Stat23*) ==> Stat53: Ra_Rev(h~[n0]) in Ra (Ra_Rev(h~[n0]))-->T529(Stat50*) ==> Ra_ABS(h~[n0]) = Ra_Rev(h~[n0]) Suppose ==> Stat54: (h~[n0]) ¥Ra_GE Ra_0 (Ra_0,h~[n0],Ra_0)-->T497(Stat25,Stat23,Stat48,Stat54*) ==> Ra_0 ¥Ra_GT Ra_0 -- Use_def(¥Ra_GT)(Stat54*) ==> false; Discharge ==> Stat55: not((h~[n0]) ¥Ra_GE Ra_0) (Ra_0,Ra_0)-->T473(Stat54*) ==> false; Discharge ==> Stat55: not((h~[n0]) ¥Ra_GE Ra_0) (Stat21,Stat55*)ELEM ==> Stat56: Ra_ABS(h~[i1]) /= Ra_Rev(h~[i1]) (h~[i1])-->Stat49(Stat29,Stat29*) ==> Stat57: Ra_ABS(Ra_Rev(h~[i1])) = Ra_ABS(h~[i1]) (Ra_Rev(h~[i1]))-->T528(Stat56,Stat57,Stat30*) ==> Stat58: not(Ra_Rev(h~[i1]) ¥Ra_GE Ra_0) (Ra_0,Ra_Rev(h~[i1]))-->T478(Stat25,Stat30,Stat58*) ==> Stat59: Ra_0 ¥Ra_GT Ra_Rev(h~[i1]) (Ra_0,Ra_Rev(h~[i1]))-->T503(Stat25,Stat30,Stat59*) ==> Stat60: Ra_Rev(Ra_Rev(h~[i1])) ¥Ra_GT Ra_Rev(Ra_0) (h~[i1])-->T494(Stat29*) ==> Stat61: Ra_Rev(Ra_Rev(h~[i1])) = h~[i1] EQUAL(Stat60,Stat61,Stat31) ==> Stat62: (h~[i1]) ¥Ra_GT Ra_0 (h~[i1])-->T529(Stat29,Stat62*) ==> Stat63: Ra_ABS(h~[i1]) = (h~[i1]) EQUAL(Stat15,Stat63) ==> Stat64: (h~[i1]) ¥Ra_GT eps0 (h~[n0])-->T452(Stat29*) ==> Stat65: Ra_Rev(h~[n0]) in Ra (Ra_Rev(h~[n0]),Ra_0)-->T473(Stat52*) ==> Stat66: Ra_Rev(h~[n0]) ¥Ra_GE Ra_0 (h~[i1],eps0,Ra_Rev(h~[n0]),Ra_0)-->T505(Stat29,Stat5,Stat53,Stat25,Stat64,Stat66*) ==> Stat67: (h~[i1] ¥Ra_PLUS Ra_Rev(h~[n0])) ¥Ra_GT (eps0 ¥Ra_PLUS Ra_0) EQUAL(Stat67,Stat33) ==> Stat68: ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) ¥Ra_GT eps0 (h~[i1],Ra_Rev(h~[n0]))-->T445(Stat29,Stat53*) ==> Stat69: ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) in Ra ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0]),eps0,Ra_0)-->T498(Stat69,Stat5,Stat25,Stat68*) ==> ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) ¥Ra_GT Ra_0 ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0]))-->T529(Stat69*) ==> Ra_ABS((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) = ((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) Use_def(¥Ra_MINUS) ==> Stat70: Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])) = Ra_ABS((h~[i1]) ¥Ra_PLUS Ra_Rev(h~[n0])) EQUAL(Stat68) ==> Stat71: (Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])) ¥Ra_GT eps0) & (Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])) in Ra) (i1,n0)-->Stat7(Stat14,Stat5*) ==> Stat72: eps0 ¥Ra_GT Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])) (eps0,Ra_ABS((h~[i1]) ¥Ra_MINUS (h~[n0])),eps0)-->T498(Stat71,Stat72,Stat5,Stat32*) ==> false; Discharge ==> QED -- -- -- Theorem 600: [A rational Cauchy sequence is equivalent to zero iff both it and its additive inverse are equivalent to its absolute value] (F in RaCauchy) ¥imp (Ra_eqseq(F,Ra0Seq) ¥eq (Ra_eqseq(Ras_ABS(F),F) & Ra_eqseq(Ras_ABS(F),Ras_Rev(F)))). Proof: Suppose_not(h) ==> AUTO -- -- Let the Cauchy sequence $h$ be a counterexample to our claim, so that -- $h$ and its pointwise negative and its pointwise absolute values are -- sequences of rational numbers. -- T545(*) ==> Stat1: (Ra0Seq in RaCauchy) & (h in RaCauchy) (h,h)-->T556(Stat1*) ==> Stat2: (Ras_ABS(h) in RaCauchy) & (Ras_Rev(h) in RaCauchy) T539(Stat1*) ==> Stat3: (Ras_ABS(h) in RaSeq) & (Ras_Rev(h) in RaSeq) & (Ra0Seq in RaSeq) & (h in RaSeq) h-->T546(Stat3*) ==> Stat4: (domain(h) = Za) & Svm(h) & (range(h) ¥incin Ra) & Ra_eqseq(h,h) -- -- Then it is easily seen that $h$ cannot be equivalent to $Ra0Seq$. -- Suppose ==> Ra_eqseq(h,Ra0Seq) ELEM ==> Stat5: not((Ra_eqseq(Ras_ABS(h),h) & Ra_eqseq(Ras_ABS(h),Ras_Rev(h)))) h-->T597(*) ==> Ra_eqseq(Ras_ABS(h),Ra0Seq) & Ra_eqseq(Ras_Rev(h),Ra0Seq) Ra0Seq-->T546(*) ==> Ra_eqseq(Ra0Seq,Ra0Seq) (h,Ra0Seq,Ra0Seq)-->T553(*) ==> Ra_eqseq(Ra0Seq,h) (Ras_ABS(h),Ra0Seq,h)-->T553(*) ==> Stat6: Ra_eqseq(h,Ras_ABS(h)) (h,h,Ras_ABS(h))-->T553(Stat3,Stat4,Stat6,Stat5*) ==> (not Ra_eqseq(Ras_ABS(h),Ras_Rev(h))) (Ras_ABS(h),Ra0Seq,Ra0Seq)-->T553(Stat1*) ==> Ra_eqseq(Ra0Seq,Ras_ABS(h)) (Ras_Rev(h),Ra0Seq,Ras_ABS(h))-->T553(Stat1*) ==> false; Discharge ==> Stat7: (h in RaCauchy) & (not Ra_eqseq(h,Ra0Seq)) & Ra_eqseq(Ras_ABS(h),h) & Ra_eqseq(Ras_ABS(h),Ras_Rev(h)) -- -- Hence it must be the reverse implication which fails. -- By Theorem 564 there exists a positive rational $eps0$ and an integer $n0$ -- beyond which all the components $h~[i]$ of $h$ have an absolute value greater than $eps0$ -- and all the components $h~[j], h~[i]$ of $h$ differ by less than $eps0$. -- By the transitivity of equivalence between -- infinite rational sequences, we have that $shifted_seq(Ras_Rev(h),n0)$ and $shifted_seq(h,n0)$ -- are equivalent; therefore the set of subscripts for which the distance between the -- corresponding components of these two sequences exceeds $eps0 ¥Ra_PLUS eps0$ is finite. -- h-->T564(*) ==> Stat8: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | Ra_ABS(h~[i]) ¥Ra_GT eps) & (FORALL i in Za, j in Za | ((i notin n) & (j notin n)) ¥imp (eps ¥Ra_GT (Ra_ABS((h~[i]) ¥Ra_MINUS (h~[j])))) )) (eps0,n0)-->Stat8(Stat8*) ==> Stat9: (eps0 in Ra) & (n0 in Za) & (eps0 ¥Ra_GT Ra_0) & Stat10: (FORALL i in (Za - n0) | Ra_ABS(h~[i]) ¥Ra_GT eps0) (h,n0)-->T567(Stat1,Stat9*) ==> Stat11: (shifted_seq(h,n0) in RaCauchy) & Ra_eqseq(h,shifted_seq(h,n0)) (Ras_Rev(h),n0)-->T567(Stat2,Stat9*) ==> Stat12: (shifted_seq(Ras_Rev(h),n0) in RaCauchy) & Ra_eqseq(Ras_Rev(h),shifted_seq(Ras_Rev(h),n0)) T539(Stat7*) ==> Stat13: (shifted_seq(h,n0) in RaSeq) & (shifted_seq(Ras_Rev(h),n0) in RaSeq) (Ras_ABS(h),h,shifted_seq(h,n0))-->T553(Stat7,Stat11,Stat3,Stat13*) ==> Stat14: Ra_eqseq(shifted_seq(h,n0),Ras_ABS(h)) (Ras_ABS(h),Ras_Rev(h),shifted_seq(Ras_Rev(h),n0))-->T553(Stat7,Stat12,Stat3,Stat13*) ==> Stat15: Ra_eqseq(shifted_seq(Ras_Rev(h),n0),Ras_ABS(h)) (Ras_ABS(h))-->T546(Stat3*) ==> Stat16: Ra_eqseq(Ras_ABS(h),Ras_ABS(h)) (shifted_seq(Ras_Rev(h),n0),Ras_ABS(h),Ras_ABS(h))-->T553(Stat15,Stat16,Stat13,Stat3*) ==> Stat17: Ra_eqseq(Ras_ABS(h),shifted_seq(Ras_Rev(h),n0)) (shifted_seq(h,n0),Ras_ABS(h),shifted_seq(Ras_Rev(h),n0))-->T553(Stat14,Stat17,Stat13,Stat3*) ==> Stat18: Ra_eqseq(shifted_seq(Ras_Rev(h),n0),shifted_seq(h,n0)) (shifted_seq(Ras_Rev(h),n0),shifted_seq(h,n0))-->T541(Stat13,Stat18*) ==> Stat19: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS(((shifted_seq(Ras_Rev(h),n0))~[x]) ¥Ra_MINUS ((shifted_seq(h,n0))~[x])) ¥Ra_GT eps})) Ra_0-->T451(Stat18*) ==> Stat20: (Ra_0 in Ra) & (Ra_0 = (Ra_0 ¥Ra_PLUS Ra_0)) (eps0,eps0)-->T445(Stat9,Stat9*)==> Stat21: (eps0 ¥Ra_PLUS eps0) in Ra (eps0,Ra_0)-->T473(Stat9,Stat9*) ==> Stat22: eps0 ¥Ra_GE Ra_0 (eps0,Ra_0,eps0,Ra_0)-->T504(Stat9,Stat20,Stat22*) ==> (eps0 ¥Ra_PLUS eps0) ¥Ra_GT (Ra_0 ¥Ra_PLUS Ra_0) EQUAL(Stat20*) ==> Stat23: (eps0 ¥Ra_PLUS eps0) ¥Ra_GT Ra_0 (eps0 ¥Ra_PLUS eps0)-->Stat19(Stat21,Stat23*) ==> Finite({x : x in Za | Ra_ABS(((shifted_seq(Ras_Rev(h),n0))~[x]) ¥Ra_MINUS ((shifted_seq(h,n0))~[x])) ¥Ra_GT (eps0 ¥Ra_PLUS eps0)}) -- -- However, it is easy to see that $(shifted_seq(h,n0))~[i]$ and -- $(shifted_seq(Ras_Rev(h),n0))~[i]$ have, for all $i in Za$, opposite signs and the same -- absolute value, so that one of the two equals $Ra_ABS((shifted_seq(h,n0))~[i])$ and the other -- equals the negative of this value; accordingly, the distance between them is twice -- $Ra_ABS((shifted_seq(h,n0))~[i])$, a value exceeding $eps0 ¥Ra_PLUS eps0$. Hence the set -- ${x : x in Za | Ra_ABS(((shifted_seq(Ras_Rev(h),n0))~[x]) ¥Ra_MINUS ((shifted_seq(h,n0))~[x])) ¥Ra_GT (eps0 ¥Ra_PLUS eps0)}$, -- which includes $Za$, cannot be finite, a contradiction leading to the desired overall -- conclusion of this proof. -- Suppose ==> Stat24: not({i: i in Za | true} ¥incin {i : i in Za | Ra_ABS(((shifted_seq(Ras_Rev(h),n0))~[i]) ¥Ra_MINUS ((shifted_seq(h,n0))~[i])) ¥Ra_GT (eps0 ¥Ra_PLUS eps0)}) i1-->Stat24(Stat24*) ==> Stat25: (i1 in Za) & (not (Ra_ABS(((shifted_seq(Ras_Rev(h),n0))~[i1]) ¥Ra_MINUS ((shifted_seq(h,n0))~[i1])) ¥Ra_GT (eps0 ¥Ra_PLUS eps0))) Use_def(shifted_seq)(Stat24*) ==> (not (Ra_ABS(((Ras_Rev(h) @ Shift(n0))~[i1]) ¥Ra_MINUS ((h @ Shift(n0))~[i1])) ¥Ra_GT (eps0 ¥Ra_PLUS eps0))) (n0,i1)-->T339(Stat9,Stat25*) ==> Stat26: Svm(Shift(n0)) & (domain(Shift(n0)) = Za) & (range(Shift(n0)) ¥incin Za) & ((Shift(n0)~[i1]) = (n0 ¥PLUS i1)) (h,Shift(n0),i1)-->T129(Stat4,Stat26,Stat25*) ==> ((h @ Shift(n0))~[i1]) = (h~[Shift(n0)~[i1]]) (Ras_Rev(h))-->T546(Stat3,Stat3*) ==> Stat27: (domain(Ras_Rev(h)) = Za) & Svm(Ras_Rev(h)) & (range(Ras_Rev(h)) ¥incin Ra) & Ra_eqseq(Ras_Rev(h),Ras_Rev(h)) (Ras_Rev(h),Shift(n0),i1)-->T129(Stat27,Stat26,Stat25*) ==> ((Ras_Rev(h) @ Shift(n0))~[i1]) = (Ras_Rev(h)~[Shift(n0)~[i1]]) (n0,i1)-->T283(Stat9,Stat25*) ==> Stat28: (n0 ¥PLUS i1) in Za (h,h,n0 ¥PLUS i1)-->T555(Stat3,Stat28*) ==> (Ras_Rev(h)~[n0 ¥PLUS i1]) = Ra_Rev(h~[n0 ¥PLUS i1]) EQUAL(Stat25*) ==> Stat29: (not (Ra_ABS(Ra_Rev(h~[n0 ¥PLUS i1]) ¥Ra_MINUS (h~[n0 ¥PLUS i1])) ¥Ra_GT (eps0 ¥Ra_PLUS eps0))) (h,n0 ¥PLUS i1)-->T540(Stat3,Stat28*) ==> Stat30: (h~[n0 ¥PLUS i1]) in Ra (h~[n0 ¥PLUS i1])-->T452(Stat29*) ==> Stat31: Ra_Rev(h~[n0 ¥PLUS i1]) in Ra T525(Stat29*) ==> Stat32: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) -- -- Entering into greater detail, let us observe that for each $i1 in Za$ -- $Ra_ABS(Ra_Rev(h~[n0 ¥PLUS i1]) ¥Ra_MINUS (h~[n0 ¥PLUS i1]))$ -- equals the absolute value of twice $Ra_ABS(h~[n0 ¥PLUS i1])$, independently of -- whether $Ra_ABS(h~[n0 ¥PLUS i1])$ equals $h~[n0 ¥PLUS i1]$ or it equals -- the opposite of $h~[n0 ¥PLUS i1]$. Since $Ra_ABS(h~[n0 ¥PLUS i1])$ is nonnegative, -- the same holds for its double, and therefore the absolute value of twice -- $Ra_ABS(h~[n0 ¥PLUS i1])$ equals twice $Ra_ABS(h~[n0 ¥PLUS i1])$. This value -- must be more than twice bigger than $eps0$. -- Suppose ==> Ra_ABS(Ra_Rev(h~[n0 ¥PLUS i1]) ¥Ra_MINUS (h~[n0 ¥PLUS i1])) /= Ra_ABS(Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1])) (h~[n0 ¥PLUS i1])-->Stat32(Stat32,Stat32*) ==> (Ra_ABS(h~[n0 ¥PLUS i1]) = (h~[n0 ¥PLUS i1])) or (Ra_ABS(h~[n0 ¥PLUS i1]) = Ra_Rev(h~[n0 ¥PLUS i1])) Suppose ==> Ra_ABS(h~[n0 ¥PLUS i1]) = (h~[n0 ¥PLUS i1]) (h~[n0 ¥PLUS i1],Ra_Rev(h~[n0 ¥PLUS i1]))-->T537(Stat30,Stat31*) ==> Ra_ABS(Ra_Rev(h~[n0 ¥PLUS i1]) ¥Ra_MINUS (h~[n0 ¥PLUS i1])) = Ra_ABS((h~[n0 ¥PLUS i1]) ¥Ra_MINUS Ra_Rev(h~[n0 ¥PLUS i1])) Use_def(¥Ra_MINUS)(Stat32*) ==> Ra_ABS((h~[n0 ¥PLUS i1]) ¥Ra_MINUS Ra_Rev(h~[n0 ¥PLUS i1])) = Ra_ABS((h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_Rev(Ra_Rev(h~[n0 ¥PLUS i1]))) (h~[n0 ¥PLUS i1])-->T494(Stat30,Stat30*) ==> Ra_Rev(Ra_Rev(h~[n0 ¥PLUS i1])) = (h~[n0 ¥PLUS i1]) EQUAL(Stat32*) ==> false; Discharge ==> Ra_ABS(h~[n0 ¥PLUS i1]) = Ra_Rev(h~[n0 ¥PLUS i1]) Use_def(¥Ra_MINUS)(Stat32*) ==> (Ra_Rev(h~[n0 ¥PLUS i1]) ¥Ra_MINUS (h~[n0 ¥PLUS i1])) = (Ra_Rev(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_Rev(h~[n0 ¥PLUS i1])) EQUAL(Stat32*) ==> false; Discharge ==> Ra_ABS(Ra_Rev(h~[n0 ¥PLUS i1]) ¥Ra_MINUS (h~[n0 ¥PLUS i1])) = Ra_ABS(Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1])) (h~[n0 ¥PLUS i1])-->T527(Stat30,Stat30*) ==> Stat33: (Ra_ABS(h~[n0 ¥PLUS i1]) in Ra) & (Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_GE Ra_0) (Ra_ABS(h~[n0 ¥PLUS i1]),Ra_0,Ra_ABS(h~[n0 ¥PLUS i1]),Ra_0)-->T493(Stat33,Stat20*) ==> Stat34: (Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1])) ¥Ra_GE (Ra_0 ¥Ra_PLUS Ra_0) EQUAL(Stat20,Stat34*) ==> (Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1])) ¥Ra_GE Ra_0 (Ra_ABS(h~[n0 ¥PLUS i1]),Ra_ABS(h~[n0 ¥PLUS i1]))-->T445(Stat33*) ==> (Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1])) in Ra (Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1]))-->T528(Stat34*) ==> Ra_ABS(Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1])) = (Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1])) EQUAL(Stat29*) ==> Stat35: (not ((Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_PLUS Ra_ABS(h~[n0 ¥PLUS i1])) ¥Ra_GT (eps0 ¥Ra_PLUS eps0))) (n0,i1)-->T292(Stat9*) ==> Stat36: (n0 ¥PLUS i1) notin n0 (n0 ¥PLUS i1)-->Stat10(Stat28,Stat36*) ==> Stat37: Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_GT eps0 (Ra_ABS(h~[n0 ¥PLUS i1]),eps0)-->T473(Stat37*) ==> Stat38: Ra_ABS(h~[n0 ¥PLUS i1]) ¥Ra_GE eps0 (Ra_ABS(h~[n0 ¥PLUS i1]),eps0,Ra_ABS(h~[n0 ¥PLUS i1]),eps0)-->T504(Stat37,Stat38,Stat9,Stat35,Stat33*) ==> false; Discharge ==> AUTO T206(Stat23*) ==> (not Finite(Za)) ({i : i in Za | Ra_ABS(((shifted_seq(Ras_Rev(h),n0))~[i]) ¥Ra_MINUS ((shifted_seq(h,n0))~[i])) ¥Ra_GT (eps0 ¥Ra_PLUS eps0)},Za)-->T189(Stat23*) ==> false; Discharge ==> QED -- -- -- Theorem 601: [One of a Cauchy sequence and its additive inverse is always equivalent to a non-negative sequence] ((F in RaCauchy) & (not Ra_eqseq(F,Ra0Seq))) ¥imp (EXISTS n in Za | ((shifted_seq(Ras_ABS(F),n) = shifted_seq(F,n)) & Ra_eqseq(Ras_ABS(F),F)) or ((shifted_seq(Ras_ABS(F),n) = shifted_seq(Ras_Rev(F),n)) & Ra_eqseq(Ras_ABS(F),Ras_Rev(F)))). Proof: Suppose_not(h) ==> AUTO -- -- Let the Cauchy sequence $h$ be a counterexample to our claim, so that -- $h$ and its pointwise negative and its pointwise absolute values are -- sequences of rational numbers. -- (h,h)-->T556(*) ==> Stat1: (h in RaCauchy) & (Ras_ABS(h) in RaCauchy) & (Ras_Rev(h) in RaCauchy) T539(*) ==> Stat2: (Ras_ABS(h) in RaSeq) & (Ras_Rev(h) in RaSeq) & (h in RaSeq) h-->T546(Stat2*) ==> Stat3: (domain(h) = Za) & Svm(h) & (range(h) ¥incin Ra) & Ra_eqseq(h,h) (Ras_Rev(h))-->T546(Stat2,Stat2*) ==> Stat4: (domain(Ras_Rev(h)) = Za) & Svm(Ras_Rev(h)) & (range(Ras_Rev(h)) ¥incin Ra) & Ra_eqseq(Ras_Rev(h),Ras_Rev(h)) ELEM ==> Stat5: (not(EXISTS n in Za | ((shifted_seq(Ras_ABS(h),n) = shifted_seq(h,n)) & Ra_eqseq(Ras_ABS(h),h)) or ((shifted_seq(Ras_ABS(h),n) = shifted_seq(Ras_Rev(h),n)) & Ra_eqseq(Ras_ABS(h),Ras_Rev(h))))) -- -- By Theorem 599, for a suitably chosen unsigned integer $n1$ we have either -- $shifted_seq(Ras_ABS(F),n1) = shifted_seq(F,n1)$, -- hence $Ra_eqseq(shifted_seq(Ras_ABS(F),n1),shifted_seq(F,n1))$, -- or -- $shifted_seq(Ras_ABS(F),n1) = shifted_seq(Ras_Rev(F),n1)$, -- and hence $Ra_eqseq(shifted_seq(Ras_ABS(F),n1),shifted_seq(Ras_Rev(F),n1))$. -- h-->T599(*) ==> Stat6: (EXISTS n in Za | shifted_seq(Ras_ABS(h),n) = if ((h~[n]) ¥Ra_GE Ra_0) then shifted_seq(h,n) else shifted_seq(Ras_Rev(h),n) end if) n1-->Stat6(Stat6*) ==> Stat7: (n1 in Za) & ((shifted_seq(Ras_ABS(h),n1) = shifted_seq(h,n1)) or (shifted_seq(Ras_ABS(h),n1) = shifted_seq(Ras_Rev(h),n1))) (h,n1)-->T567(Stat7,Stat1*) ==> Stat8: (shifted_seq(h,n1) in RaCauchy) & Ra_eqseq(h,shifted_seq(h,n1)) (Ras_ABS(h),n1)-->T567(Stat7,Stat1*) ==> Stat9: (shifted_seq(Ras_ABS(h),n1) in RaCauchy) & Ra_eqseq(Ras_ABS(h),shifted_seq(Ras_ABS(h),n1)) T539(Stat8*) ==> Stat10: (shifted_seq(h,n1) in RaSeq) & (shifted_seq(Ras_ABS(h),n1) in RaSeq) (shifted_seq(Ras_ABS(h),n1))-->T546(Stat10*) ==> Stat11: Ra_eqseq(shifted_seq(Ras_ABS(h),n1),shifted_seq(Ras_ABS(h),n1)) -- -- It is easily seen that $Ra_eqseq(Ras_ABS(h),h)$ in the first of these cases, -- and $Ra_eqseq(Ras_ABS(h),Ras_Rev(h))$ in the second, -- a contradiction proving the first claim of our theorem. -- Suppose ==> shifted_seq(Ras_ABS(h),n1) = shifted_seq(h,n1) EQUAL(Stat11*) ==> Stat12: Ra_eqseq(shifted_seq(h,n1),shifted_seq(Ras_ABS(h),n1)) (h,shifted_seq(h,n1),shifted_seq(Ras_ABS(h),n1))-->T553(Stat8,Stat12,Stat2,Stat10*) ==> Stat13: Ra_eqseq(shifted_seq(Ras_ABS(h),n1),h) (Ras_ABS(h),shifted_seq(Ras_ABS(h),n1),h)-->T553(Stat9,Stat13,Stat10,Stat2*) ==> Stat14: Ra_eqseq(h,Ras_ABS(h)) (h,h,Ras_ABS(h))-->T553(Stat3,Stat14,Stat2,Stat5*) ==> Ra_eqseq(Ras_ABS(h),h) n1-->Stat5(Stat7*) ==> false; Discharge ==> shifted_seq(Ras_ABS(h),n1) = shifted_seq(Ras_Rev(h),n1) EQUAL(Stat11*) ==> Stat15: Ra_eqseq(shifted_seq(Ras_Rev(h),n1),shifted_seq(Ras_ABS(h),n1)) (Ras_Rev(h),n1)-->T567(Stat7,Stat1*) ==> Stat16: (shifted_seq(Ras_Rev(h),n1) in RaCauchy) & Ra_eqseq(Ras_Rev(h),shifted_seq(Ras_Rev(h),n1)) T539(Stat16*) ==> Stat17: shifted_seq(Ras_Rev(h),n1) in RaSeq (Ras_Rev(h),shifted_seq(Ras_Rev(h),n1),shifted_seq(Ras_ABS(h),n1))-->T553(Stat16,Stat15,Stat2,Stat17,Stat10*) ==> Stat18: Ra_eqseq(shifted_seq(Ras_ABS(h),n1),Ras_Rev(h)) (Ras_ABS(h),shifted_seq(Ras_ABS(h),n1),Ras_Rev(h))-->T553(Stat9,Stat18,Stat10,Stat2*) ==> Stat19: Ra_eqseq(Ras_Rev(h),Ras_ABS(h)) (Ras_Rev(h),Ras_Rev(h),Ras_ABS(h))-->T553(Stat4,Stat19,Stat2,Stat5*) ==> Ra_eqseq(Ras_ABS(h),Ras_Rev(h)) n1-->Stat5(Stat7*) ==> false; Discharge ==> QED -- -- -- Theorem 602: [One of a Cauchy sequence $F$ and its additive inverse is always equivalent to a non-negative sequence, and both are equivalent to non-negative sequences only if $F$ is equivalent to zero] (F in RaCauchy) ¥imp ((Ra_eqseq(Ras_ABS(F),F) or Ra_eqseq(Ras_ABS(F),Ras_Rev(F))) & (((Ra_eqseq(Ras_ABS(F),F) & Ra_eqseq(Ras_ABS(F),Ras_Rev(F)))) ¥imp Ra_eqseq(F,Ra0Seq))). Proof: Suppose_not(h) ==> AUTO -- -- Let the Cauchy sequence $h$ be a counterexample to our claim, so that -- $h$ and its pointwise negative and its pointwise absolute values are -- sequences of rational numbers. Thanks to Theorem 600, we know that it -- is our first assertion that fails. But then, by Theorem 601, we get a contradiction. -- (h,h)-->T556(*) ==> Stat1: (Ras_ABS(h) in RaCauchy) & (Ras_Rev(h) in RaCauchy) T539(*) ==> Stat2: (Ras_ABS(h) in RaSeq) & (Ras_Rev(h) in RaSeq) & (h in RaSeq) h-->T546(Stat2*) ==> Stat3: (domain(h) = Za) & Svm(h) & (range(h) ¥incin Ra) & Ra_eqseq(h,h) (Ras_Rev(h))-->T546(Stat2,Stat2*) ==> Stat4: (domain(Ras_Rev(h)) = Za) & Svm(Ras_Rev(h)) & (range(Ras_Rev(h)) ¥incin Ra) & Ra_eqseq(Ras_Rev(h),Ras_Rev(h)) h-->T600(*) ==> Stat5: (not(Ra_eqseq(Ras_ABS(h),h) or Ra_eqseq(Ras_ABS(h),Ras_Rev(h)))) & (h in RaCauchy) & (not Ra_eqseq(h,Ra0Seq)) h-->T601(Stat5*) ==> Stat6: (EXISTS n in Za | ((shifted_seq(Ras_ABS(h),n) = shifted_seq(h,n)) & Ra_eqseq(Ras_ABS(h),h)) or ((shifted_seq(Ras_ABS(h),n) = shifted_seq(Ras_Rev(h),n)) & Ra_eqseq(Ras_ABS(h),Ras_Rev(h)))) n-->Stat6(Stat5*) ==> false; Discharge ==> QED -- -- -- Theorem 603: [The unit Cauchy sequences $Ra0Seq,Ra1Seq$ differ from one another] (not Ra_eqseq(Ra0Seq,Ra1Seq)). Proof: Suppose_not ==> AUTO T545(Stat1*) ==> Stat1: {Ra0Seq,Ra1Seq} ¥incin RaCauchy T539(Stat1*) ==> (Ra0Seq in RaSeq) & (Ra1Seq in RaSeq) (Ra0Seq,Ra1Seq)-->T541(*) ==> Stat2: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((Ra0Seq~[x]) ¥Ra_MINUS (Ra1Seq~[x])) ¥Ra_GT eps})) Ra_1-->T451 ==> (Ra_1 in Ra) & (Ra_0 in Ra) & (Ra_1 = (Ra_1 ¥Ra_PLUS Ra_0)) T481 ==> (Ra_1 ¥Ra_GT Ra_0) & (Ra_Rev(Ra_0) = Ra_0) & (Ra_1 = (Ra_1 ¥Ra_PLUS Ra_0)) Ra_1-->T522 ==> Stat3: (EXISTS e in Ra, e0 in Ra | (Ra_1 ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (Ra_1 ¥Ra_GT (e ¥Ra_PLUS e0))) (eps0,e0)-->Stat3 ==> (eps0 in Ra) & (Ra_1 ¥Ra_GT eps0) & (eps0 ¥Ra_GT Ra_0) eps0-->Stat2(Stat2*) ==> Stat4: Finite({x : x in Za | Ra_ABS((Ra0Seq~[x]) ¥Ra_MINUS (Ra1Seq~[x])) ¥Ra_GT eps0}) T206(Stat4) ==> not Finite({x : x in Za}) EQUAL(Stat4) ==> Stat5: {x : x in Za | Ra_ABS((Ra0Seq~[x]) ¥Ra_MINUS (Ra1Seq~[x])) ¥Ra_GT eps0} /= {x : x in Za} x-->Stat5(Stat5*) ==> (x in Za) & (not(Ra_ABS((Ra0Seq~[x]) ¥Ra_MINUS (Ra1Seq~[x])) ¥Ra_GT eps0)) x-->T548 ==> ((Ra0Seq~[x]) = Ra_0) & ((Ra1Seq~[x]) = Ra_1) (Ra_0,Ra_1)-->T537(Stat2*) ==> Ra_ABS(Ra_0 ¥Ra_MINUS Ra_1) = Ra_ABS(Ra_1 ¥Ra_MINUS Ra_0) EQUAL(Stat5) ==> not(Ra_ABS(Ra_1 ¥Ra_MINUS Ra_0) ¥Ra_GT eps0) Use_def(¥Ra_MINUS) ==> not(Ra_ABS(Ra_1 ¥Ra_PLUS Ra_Rev(Ra_0)) ¥Ra_GT eps0) T465(Stat6) ==> Stat6: Ra_is_nonneg(Ra_1) T525(Stat6) ==> Stat7: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) Ra_1-->Stat7 ==> Ra_ABS(Ra_1) = Ra_1 EQUAL(Stat2) ==> not(Ra_1 ¥Ra_GT eps0) (Stat3*)Discharge ==> QED -- -- -- Theorem 604: [A rational sequence F and its additive inverse have the same absolute value] (F in RaSeq) ¥imp (Ras_ABS(Ras_Rev(F)) = Ras_ABS(F)). Proof: Suppose_not(f) ==>AUTO (Ras_ABS(Ras_Rev(f)),Ras_ABS(f))-->T542 ==> Stat1: AUTO n-->Stat1 ==> AUTO (f,f,n)-->T555 ==> (Ras_Rev(f) in RaSeq) & (Ras_ABS(f) in RaSeq) & (f~[n] in Ra) & (Ras_Rev(f)~[n] = Ra_Rev(f~[n])) & (Ras_ABS(f)~[n] = Ra_ABS(f~[n])) (Ras_Rev(f),Ras_Rev(f),n)-->T555 ==> (Ras_ABS(Ras_Rev(f)) in RaSeq) & (Ras_ABS(Ras_Rev(f))~[n] = Ra_ABS(Ras_Rev(f)~[n])) EQUAL ==> Ra_ABS(Ra_Rev(f~[n])) /= Ra_ABS(f~[n]) T525 ==> Stat2: (FORALL x | (x in Ra) ¥imp (Ra_ABS(Ra_Rev(x)) = Ra_ABS(x))) (f~[n])-->Stat2 ==> false; Discharge ==> QED -- -- -- It is easily seen that the zero and unit rational sequences play their proper algebraic roles. -- Theorem 605: (F in RaSeq) ¥imp (((F ¥Ras_PLUS Ra0Seq) = F) & ((F ¥Ras_TIMES Ra1Seq) = F)). Proof: Suppose_not(f) ==> Stat1: (f in RaSeq) & (((f ¥Ras_PLUS Ra0Seq) /= f) or ((f ¥Ras_TIMES Ra1Seq) /= f)) -- -- Indeed, if we assume the contrary, either the zero rational sequence does not behave -- as additive unit element among rational sequences, or the unit rational does not -- behave as multiplicative unit element. Either alternative will lead to a contradiction, -- and the two proofs will closely resemble each other. -- Use_def(RaSeq) ==> Stat2: f in {f ¥incin (Za ¥PROD Ra) | (domain(f) = Za) & Svm(f)} ()-->Stat2 ==> (domain(f) = Za) & Svm(f) f-->T72 ==> f = {[i,f~[i]]: i in domain(f)} T545 ==> {Ra0Seq,Ra1Seq} ¥incin RaCauchy T539(*) ==> (Ra0Seq in RaSeq) & (Ra1Seq in RaSeq) -- -- Assume first that $Ra0Seq$ does not behave as additive unit element. -- Suppose ==> Stat3: (f ¥Ras_PLUS Ra0Seq) /= f -- -- By the pointwise definition of $¥Ras_PLUS$, the sequence $f ¥Ras_PLUS Ra0Seq$ associates -- the rational value $(f~[u]) ¥Ra_PLUS (Ra0Seq~[u])$ with each unsigned integer $u$. -- (f,Ra0Seq)-->T554 ==> (f ¥Ras_PLUS Ra0Seq) = {[u,((f~[u]) ¥Ra_PLUS (Ra0Seq~[u]))]: u in Za} -- -- On the other hand, $Ra0Seq~[u]$ has value $Ra_0$ for all unsigned integers $u$; therefore, -- since $Ra_0$ behaves as additive unit element among rational numbers, $(f~[u]) ¥Ra_PLUS (Ra0Seq~[u])$ -- always carries the value $f~[u]$. Accordingly the sequence $f ¥Ras_PLUS Ra0Seq$, whose values coincide -- with those of $f$ over the common domain $Za$, must coincide with $f$. -- d-->Stat3 ==> (d in {[u,((f~[u]) ¥Ra_PLUS (Ra0Seq~[u]))]: u in Za}) ¥eq (d notin f) Suppose ==> Stat4: (d notin {[i,f~[i]]: i in domain(f)}) & Stat5: (d in {[u,((f~[u]) ¥Ra_PLUS (Ra0Seq~[u]))]: u in Za}) i0-->Stat5 ==> Stat6: (i0 in Za) & (d = [i0,((f~[i0]) ¥Ra_PLUS (Ra0Seq~[i0]))]) i0-->T548 ==> (Ra0Seq~[i0]) = Ra_0 (f,i0)-->T540(Stat1,Stat6*) ==> (f~[i0]) in Ra (f~[i0])-->T451 ==> ((f~[i0]) ¥Ra_PLUS Ra_0) = (f~[i0]) EQUAL ==> d = [i0,f~[i0]] i0-->Stat4 ==> false; Discharge ==> Stat7: (d in {[i,f~[i]]: i in domain(f)}) & (d notin {[u,((f~[u]) ¥Ra_PLUS (Ra0Seq~[u]))]: u in Za}) (i1,i1)-->Stat7 ==> Stat8: (d = [i1,f~[i1]]) & (i1 in Za) & (d /= [i1,((f~[i1]) ¥Ra_PLUS (Ra0Seq~[i1]))]) i1-->T548 ==> (Ra0Seq~[i1]) = Ra_0 (f,i1)-->T540(Stat1,Stat8*) ==> (f~[i1]) in Ra (f~[i1])-->T451 ==> ((f~[i1]) ¥Ra_PLUS Ra_0) = (f~[i1]) EQUAL ==> false; Discharge ==> Stat9: (f ¥Ras_TIMES Ra1Seq) /= f -- -- We have drawn a contradiction from the assumption that $Ra0Seq$ does not behave as additive unit element; -- hence we must now reason under the assumption that $Ra1Seq$ does not behave as additive unit element. -- By the pointwise definition of $¥Ras_TIMES$, the sequence $f ¥Ras_TIMES Ra1Seq$ associates -- the rational value $(f~[u]) ¥Ra_TIMES (Ra0Seq~[u])$ with each unsigned integer $u$. -- (f,Ra1Seq)-->T554 ==> (f ¥Ras_TIMES Ra1Seq) = {[u,((f~[u]) ¥Ra_TIMES (Ra1Seq~[u]))]: u in Za} Use_def(Ra1Seq) ==> Ra1Seq = Za ¥PROD {Ra_1} Use_def(¥PROD) ==> Ra1Seq = {[x,y]: x in Za, y in {Ra_1}} Suppose ==> Stat10: {[x,y]: x in Za, y in {Ra_1}} /= {[x,Ra_1]: x in Za} cp-->Stat10 ==> (cp in {[x,y]: x in Za, y in {Ra_1}}) ¥eq (cp notin {[x,Ra_1]: x in Za}) Suppose ==> Stat11: (cp in {[x,y]: x in Za, y in {Ra_1}}) & (cp notin {[x,Ra_1]: x in Za}) (x2,y2,x2)-->Stat11 ==> false; Discharge ==> Stat12: (cp in {[x,Ra_1]: x in Za}) & (cp notin {[x,y]: x in Za, y in {Ra_1}}) (x3,x3,Ra_1)-->Stat12 ==> false; Discharge ==> Ra1Seq = {[x,Ra_1]: x in Za} -- -- On the other hand, $Ra1Seq~[u]$ has value $Ra_1$ for all unsigned integers $u$; therefore, -- since $Ra_1$ behaves as multiplicative unit element among rational numbers, $(f~[u]) ¥Ra_TIMES (Ra1Seq~[u])$ -- always carries the value $f~[u]$. Accordingly the sequence $f ¥Ras_TIMES Ra1Seq$, whose values coincide -- with those of $f$ over the common domain $Za$, must coincide with $f$. -- APPLY() fcn_symbol(f(u)->Ra_1, g->Ra1Seq, s->Za) ==> Stat13: (FORALL x | (Ra1Seq~[x]) = if x in Za then Ra_1 else 0 end if) dp-->Stat9 ==> (dp in {[u,((f~[u]) ¥Ra_TIMES (Ra1Seq~[u]))]: u in Za}) ¥eq (dp notin f) Suppose ==> Stat14: (dp notin {[i,f~[i]]: i in domain(f)}) & Stat15: (dp in {[u,((f~[u]) ¥Ra_TIMES (Ra1Seq~[u]))]: u in Za}) i2-->Stat15 ==> (i2 in Za) & (dp = [i2,((f~[i2]) ¥Ra_TIMES (Ra1Seq~[i2]))]) i2-->Stat13 ==> (Ra1Seq~[i2]) = Ra_1 (f,i2)-->T540 ==> (f~[i2]) in Ra (f~[i2])-->T461 ==> ((f~[i2]) ¥Ra_TIMES Ra_1) = (f~[i2]) EQUAL ==> dp = [i2,f~[i2]] i2-->Stat14 ==> false; Discharge ==> Stat16: (dp in {[i,f~[i]]: i in domain(f)}) & (dp notin {[u,((f~[u]) ¥Ra_TIMES (Ra1Seq~[u]))]: u in Za}) (i3,i3)-->Stat16 ==> (dp = [i3,f~[i3]]) & (i3 in Za) & (dp /= [i3,((f~[i3]) ¥Ra_TIMES (Ra1Seq~[i3]))]) i3-->Stat13 ==> (Ra1Seq~[i3]) = Ra_1 (f,i3)-->T540 ==> (f~[i3]) in Ra (f~[i3])-->T461 ==> ((f~[i3]) ¥Ra_TIMES Ra_1) = (f~[i3]) EQUAL ==> false; Discharge ==> QED -- -- We are now ready to state the properties of the relation $Ra_eqseq(F,G)$ -- between rational Cauchy sequences in such a way that we can -- apply the THEORY equivalence_classes -- Theorem 606: (FORALL f in RaCauchy, g in RaCauchy | (Ra_eqseq(f,g) ¥eq Ra_eqseq(g,f)) & Ra_eqseq(f,f)). Proof: Suppose_not ==> Stat1: not(FORALL f in RaCauchy, g in RaCauchy | (Ra_eqseq(f,g) ¥eq Ra_eqseq(g,f)) & Ra_eqseq(f,f)) (f,g)-->Stat1 ==> (f in RaCauchy) & (g in RaCauchy) & ((Ra_eqseq(f,g) ¥eq (not Ra_eqseq(g,f))) or (not Ra_eqseq(f,f))) Suppose ==> (f notin RaSeq) or (g notin RaSeq) or (not Ra_eqseq(f,f)) or (not Ra_eqseq(g,g)) Use_def(RaCauchy) ==> Stat2: (f in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat3: (g in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) ()-->Stat3 ==> g in RaSeq ()-->Stat2 ==> f in RaSeq f-->T546 ==> not Ra_eqseq(g,g) g-->T546 ==> false; Discharge ==> (f in RaSeq) & (g in RaSeq) & Ra_eqseq(f,f) & Ra_eqseq(g,g) & (Ra_eqseq(f,g) ¥eq (not Ra_eqseq(g,f))) (f,f,g)-->T553 ==> Ra_eqseq(g,f) (g,g,f)-->T553 ==> false; Discharge ==> QED -- -- The following lemma reformulates Theorem 606 in a form that is often easier to use. -- Theorem 607: ((F in RaCauchy) & (G in RaCauchy)) ¥imp ((Ra_eqseq(F,G) ¥eq Ra_eqseq(G,F)) & Ra_eqseq(F,F)). Proof: Suppose_not(f,g) ==> AUTO T606 ==> Stat1: AUTO (f,g)-->Stat1 ==> false; Discharge ==> QED -- Theorem 608: (FORALL f in RaCauchy, g in RaCauchy, h in RaCauchy | (Ra_eqseq(f,g) & Ra_eqseq(g,h)) ¥imp Ra_eqseq(f,h)). Proof: Suppose_not ==> Stat1: not(FORALL f in RaCauchy, g in RaCauchy, h in RaCauchy | (Ra_eqseq(f,g) & Ra_eqseq(g,h)) ¥imp Ra_eqseq(f,h)) (f,g,h)-->Stat1 ==> (f in RaCauchy) & (g in RaCauchy) & (h in RaCauchy) & Ra_eqseq(f,g) & Ra_eqseq(g,h) & (not Ra_eqseq(f,h)) Suppose ==> (f notin RaSeq) or (g notin RaSeq) or (h notin RaSeq) Use_def(RaCauchy) ==> Stat2: (f in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat3: (g in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) & Stat4: (h in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))}) ()-->Stat4 ==> h in RaSeq ()-->Stat3 ==> g in RaSeq ()-->Stat2 ==> false; Discharge ==> (f in RaSeq) & (g in RaSeq) & (h in RaSeq) (f,g,h)-->T553 ==> Ra_eqseq(h,f) h-->T546 ==> Ra_eqseq(h,h) (h,h,f)-->T553 ==> false; Discharge ==> QED -- -- Now that we know that '$Ra_eqseq$' is an equivalence relationship, we can apply the -- equivalence_classes theory to it, to derive -- APPLY(Eqc_thryvar:Re,f1_thryvar:Cauchy_to_Re) equivalence_classes(R(x,y)->Ra_eqseq(x,y),s->RaCauchy) ==> Theorem 609: (FORALL x, y | ((x in RaCauchy) & (y in RaCauchy)) ¥imp ((Ra_eqseq(x,y) ¥eq (Cauchy_to_Re(x) = Cauchy_to_Re(y))))) & (FORALL x | (x in Re) ¥imp ((arb(x) in RaCauchy) & (Cauchy_to_Re(arb(x)) = x))) & (FORALL x | (x in RaCauchy) ¥imp (Cauchy_to_Re(x) in Re)) & (FORALL x | (x in RaCauchy) ¥imp Ra_eqseq(x,arb(Cauchy_to_Re(x)))) -- -- To ease its application, it is convenient to rewrite the preceding result as the two following statements. -- Theorem 610: ((X in RaCauchy) & (Y in RaCauchy)) ¥imp ((Ra_eqseq(X,Y) ¥eq (Cauchy_to_Re(X) = Cauchy_to_Re(Y))) & (Cauchy_to_Re(X) in Re) & Ra_eqseq(X,arb(Cauchy_to_Re(X)))). Proof: Suppose_not(x,y) ==> AUTO T609 ==> Stat1: (FORALL x, y | ((x in RaCauchy) & (y in RaCauchy)) ¥imp ((Ra_eqseq(x,y) ¥eq (Cauchy_to_Re(x) = Cauchy_to_Re(y))))) & Stat2: (FORALL x | (x in Re) ¥imp ((arb(x) in RaCauchy) & (Cauchy_to_Re(arb(x)) = x))) & Stat3: (FORALL x | (x in RaCauchy) ¥imp (Cauchy_to_Re(x) in Re)) & Stat4: (FORALL x | (x in RaCauchy) ¥imp Ra_eqseq(x,arb(Cauchy_to_Re(x)))) (x,y)-->Stat1 ==> ((x in RaCauchy) & (y in RaCauchy)) ¥imp ((Ra_eqseq(x,y) ¥eq (Cauchy_to_Re(x) = Cauchy_to_Re(y)))) x-->Stat3 ==> (x in RaCauchy) ¥imp (Cauchy_to_Re(x) in Re) x-->Stat4 ==> false; Discharge ==> QED -- Theorem 611: (X in Re) ¥imp ((arb(X) in RaCauchy) & (arb(X) in RaSeq) & (Cauchy_to_Re(arb(X)) = X)). Proof: Suppose_not(x) ==> AUTO T609 ==> Stat1: (FORALL x, y | ((x in RaCauchy) & (y in RaCauchy)) ¥imp ((Ra_eqseq(x,y) ¥eq (Cauchy_to_Re(x) = Cauchy_to_Re(y))))) & Stat2: (FORALL x | (x in Re) ¥imp ((arb(x) in RaCauchy) & (Cauchy_to_Re(arb(x)) = x))) & Stat3: (FORALL x | (x in RaCauchy) ¥imp (Cauchy_to_Re(x) in Re)) & Stat4: (FORALL x | (x in RaCauchy) ¥imp Ra_eqseq(x,arb(Cauchy_to_Re(x)))) x-->Stat2 ==> (arb(x) in RaCauchy) & (Cauchy_to_Re(arb(x)) = x) T539(*) ==> arb(x) in RaSeq Discharge ==> QED -- Def 58: [The zero real] R_0 := Cauchy_to_Re(Ra0Seq) Def 58a: [The unit real] R_1 := Cauchy_to_Re(Ra1Seq) Def 59: [Real Sum] Def(X ¥R_PLUS Y) := Cauchy_to_Re(arb(X) ¥Ras_PLUS arb(Y)) Def 60: [Real Negative] R_Rev(X) := Cauchy_to_Re(Ras_Rev(arb(X))) Def 61: [Real Subtraction] Def(X ¥R_MINUS Y) := Cauchy_to_Re(arb(X) ¥Ras_MINUS arb(Y)) --Def 62: [Absolute value, i.e. the larger of $X$ and $R_Rev(X)$] abs(X) := Cauchy_to_Re(Ras_ABS(arb(X))) Def 63: [Real Multiplication] Def(X ¥R_TIMES Y) := Cauchy_to_Re(arb(X) ¥Ras_TIMES arb(Y)) Def 64: [Real Reciprocal] R_Recip(X) := Cauchy_to_Re(Ras_Recip(arb(X))) Def 65: [Real Quotient] Def(X ¥R_OVER Y) := X ¥R_TIMES R_Recip(Y) -- Def 66: [Non-negative Real] R_is_nonneg(X) := (Cauchy_to_Re(Ras_ABS(arb(X))) = X) Def 67: [Real Comparison] Def(X ¥R_GT Y) := R_is_nonneg(X ¥R_MINUS Y) & (X /= Y) Def 68: [Real Comparison] Def(X ¥R_GE Y) := R_is_nonneg(X ¥R_MINUS Y) Def 67a: [Real Comparison] Def(X ¥R_LT Y) := R_is_nonneg(Y ¥R_MINUS X) & (X /= Y) Def 68a: [Real Comparison] Def(X ¥R_LE Y) := R_is_nonneg(Y ¥R_MINUS X) -- Theorem 612: (R_0 in Re) & (R_1 in Re). Proof: Suppose_not ==> (R_0 notin Re) or (R_1 notin Re) T545 ==> (Ra0Seq in RaCauchy) & (Ra1Seq in RaCauchy) (Ra0Seq,Ra0Seq)-->T610 ==> Cauchy_to_Re(Ra0Seq) in Re (Ra1Seq,Ra1Seq)-->T610 ==> Cauchy_to_Re(Ra1Seq) in Re Use_def(R_0) ==> R_1 notin Re Use_def(R_1) ==> false; Discharge ==> QED -- Theorem 613: ({X,Y} ¥incin Re) ¥imp (((X ¥R_PLUS Y) in Re) & (R_Rev(X) in Re)). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin Re) & (((x ¥R_PLUS y) notin Re) or (R_Rev(x) notin Re)) x-->T611(*) ==> arb(x) in RaCauchy y-->T611(*) ==> arb(y) in RaCauchy (arb(x),arb(y))-->T556(*) ==> ((arb(x) ¥Ras_PLUS arb(y)) in RaCauchy) & (Ras_ABS(arb(x)) in RaCauchy) & (Ras_Rev(arb(x)) in RaCauchy) (arb(x) ¥Ras_PLUS arb(y),arb(x) ¥Ras_PLUS arb(y))-->T610(*) ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) in Re Use_def(¥R_PLUS) ==> Stat1: R_Rev(x) notin Re (Ras_Rev(arb(x)),Ras_Rev(arb(x)))-->T610(*) ==> Cauchy_to_Re(Ras_Rev(arb(x))) in Re Use_def(R_Rev) ==> false; Discharge ==> QED -- Theorem 614: ({X,Y} ¥incin Re) ¥imp (((X ¥R_MINUS Y) in Re) & ((X ¥R_TIMES Y) in Re)). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin Re) & (((x ¥R_MINUS y) notin Re) or ((x ¥R_TIMES y) notin Re)) x-->T611 ==> arb(x) in RaCauchy y-->T611 ==> arb(y) in RaCauchy (arb(x),arb(y))-->T561 ==> ((arb(x) ¥Ras_MINUS arb(y)) in RaCauchy) & ((arb(x) ¥Ras_TIMES arb(y)) in RaCauchy) (arb(x) ¥Ras_MINUS arb(y),arb(x) ¥Ras_TIMES arb(y))-->T610 ==> Cauchy_to_Re(arb(x) ¥Ras_MINUS arb(y)) in Re Use_def(¥R_MINUS) ==> (x ¥R_TIMES y) notin Re (arb(x) ¥Ras_TIMES arb(y),arb(x) ¥Ras_TIMES arb(y))-->T610 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) in Re Use_def(¥R_TIMES) ==> false; Discharge ==> QED -- -- It is now easy to prove the commutative and associative laws for real addition. -- Theorem 615: [Commutative law for real addition] ({X,Y} ¥incin Re) ¥imp ((X ¥R_PLUS Y) = (Y ¥R_PLUS X)). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin Re) & ((x ¥R_PLUS y) /= (y ¥R_PLUS x)) -- -- For let x,y,v be a counterexample to our assertion, and let arb(x) and arb(y) be Cauchy sequences belonging -- to these equivalence classes (of Cauchy sequences). Then our assertion follows immediately from Theorem 578. -- x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) y-->T611 ==> (arb(y) in RaCauchy) & (arb(y) in RaSeq) (arb(x),arb(y))-->T578 ==> Stat1: (arb(x) ¥Ras_PLUS arb(y)) = (arb(y) ¥Ras_PLUS arb(x)) Use_def(¥R_PLUS) ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) /= Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(x)) EQUAL(Stat1) ==> false; Discharge ==> QED -- -- The following elementary lemma makes subsequent proof of the associative law for real addition easy. -- Theorem 616: [Elementary algebraic lemma for real addition] ((X in RaCauchy) & (Y in RaCauchy)) ¥imp (Cauchy_to_Re(X ¥Ras_PLUS Y) = (Cauchy_to_Re(X) ¥R_PLUS Cauchy_to_Re(Y))). Proof: Suppose_not(x,y) ==> (x in RaCauchy) & (y in RaCauchy) & (Cauchy_to_Re(x ¥Ras_PLUS y) /= (Cauchy_to_Re(x) ¥R_PLUS Cauchy_to_Re(y))) T539(*) ==> (x in RaSeq) & (y in RaSeq) Use_def(¥R_PLUS) ==> Cauchy_to_Re(arb(Cauchy_to_Re(x)) ¥Ras_PLUS arb(Cauchy_to_Re(y))) /= Cauchy_to_Re(x ¥Ras_PLUS y) (x,x)-->T610 ==> Ra_eqseq(x,arb(Cauchy_to_Re(x))) & (Cauchy_to_Re(x) in Re) (y,y)-->T610 ==> Ra_eqseq(y,arb(Cauchy_to_Re(y))) & (Cauchy_to_Re(y) in Re) (x,y)-->T556 ==> (x ¥Ras_PLUS y) in RaCauchy (Cauchy_to_Re(x))-->T611 ==> (arb(Cauchy_to_Re(x)) in RaCauchy) & (arb(Cauchy_to_Re(x)) in RaSeq) (Cauchy_to_Re(y))-->T611 ==> (arb(Cauchy_to_Re(y)) in RaCauchy) & (arb(Cauchy_to_Re(y)) in RaSeq) (x,arb(Cauchy_to_Re(x)),y,arb(Cauchy_to_Re(y)))-->T571 ==> Ra_eqseq(x ¥Ras_PLUS y,arb(Cauchy_to_Re(x)) ¥Ras_PLUS arb(Cauchy_to_Re(y))) (arb(Cauchy_to_Re(x)),arb(Cauchy_to_Re(y)))-->T556 ==> (arb(Cauchy_to_Re(x)) ¥Ras_PLUS arb(Cauchy_to_Re(y))) in RaCauchy (x ¥Ras_PLUS y,arb(Cauchy_to_Re(x)) ¥Ras_PLUS arb(Cauchy_to_Re(y)))-->T610 ==> false; Discharge ==> QED Theorem 617: [Associative law for real addition] ({X,Y,V} ¥incin Re) ¥imp ((X ¥R_PLUS (Y ¥R_PLUS V)) = ((X ¥R_PLUS Y) ¥R_PLUS V)). Proof: Suppose_not(x,y,v) ==> ({x,y,v} ¥incin Re) & ((x ¥R_PLUS (y ¥R_PLUS v)) /= ((x ¥R_PLUS y) ¥R_PLUS v)) -- -- For let x,y,v be a counterexample to our assertion, so arb(x), arb(y), and arb(v) are Cauchy sequences belonging -- to these equivalence classes (of Cauchy sequences). By Theorem 580, pointwise addition of these rational sequences is associative -- x-->T611(*) ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) y-->T611(*) ==> (arb(y) in RaCauchy) & (arb(y) in RaSeq) & (Cauchy_to_Re(arb(y)) = y) v-->T611(*) ==> (arb(v) in RaCauchy) & (arb(v) in RaSeq) & (Cauchy_to_Re(arb(v)) = v) (arb(x),arb(y),arb(v))-->T580(*) ==> ((arb(x) ¥Ras_PLUS (arb(y) ¥Ras_PLUS arb(v))) = ((arb(x) ¥Ras_PLUS arb(y)) ¥Ras_PLUS arb(v))) (arb(y),arb(v))-->T556(*) ==> (arb(y) ¥Ras_PLUS arb(v)) in RaCauchy (arb(x),arb(y))-->T556(*) ==> (arb(x) ¥Ras_PLUS arb(y)) in RaCauchy -- -- But in the case before us equivalence classes of sums are by definition sums of equivalence classes, -- so our theorem follows routinely. -- EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS (arb(y) ¥Ras_PLUS arb(v))) = Cauchy_to_Re((arb(x) ¥Ras_PLUS arb(y)) ¥Ras_PLUS arb(v)) (arb(x),arb(y) ¥Ras_PLUS arb(v))-->T616 ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS (arb(y) ¥Ras_PLUS arb(v))) = (Cauchy_to_Re(arb(x)) ¥R_PLUS Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(v))) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS (arb(y) ¥Ras_PLUS arb(v))) = (x ¥R_PLUS Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(v))) (arb(y),arb(v))-->T616 ==> Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(v)) = (Cauchy_to_Re(arb(y)) ¥R_PLUS Cauchy_to_Re(arb(v))) EQUAL ==> Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(v)) = (y ¥R_PLUS v) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS (arb(y) ¥Ras_PLUS arb(v))) = x ¥R_PLUS (y ¥R_PLUS v) (arb(x) ¥Ras_PLUS arb(y),arb(v))-->T616 ==> Cauchy_to_Re((arb(x) ¥Ras_PLUS arb(y)) ¥Ras_PLUS arb(v)) = Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) ¥R_PLUS Cauchy_to_Re(arb(v)) EQUAL ==> Cauchy_to_Re((arb(x) ¥Ras_PLUS arb(y)) ¥Ras_PLUS arb(v)) = Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) ¥R_PLUS v (arb(x),arb(y))-->T616 ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) = (Cauchy_to_Re(arb(x)) ¥R_PLUS Cauchy_to_Re(arb(y))) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) = (x ¥R_PLUS y) EQUAL ==> false; Discharge ==> QED -- -- Next we prove the corresponding propositions for real multiplication. -- Theorem 618: [Commutative law for real multiplication] ({X,Y} ¥incin Re) ¥imp ((X ¥R_TIMES Y) = (Y ¥R_TIMES X)). Proof: Suppose_not(x,y) ==> ({x,y} ¥incin Re) & ((x ¥R_TIMES y) /= (y ¥R_TIMES x)) -- -- For let x,y,v be a counterexample to our assertion, and let arb(x) and arb(y) be Cauchy sequences belonging -- to these equivalence classes (of Cauchy sequences). Then our assertion follows immediately from Theorem 578. -- x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) y-->T611 ==> (arb(y) in RaCauchy) & (arb(y) in RaSeq) (arb(x),arb(y))-->T579 ==> Stat1: (arb(x) ¥Ras_TIMES arb(y)) = (arb(y) ¥Ras_TIMES arb(x)) Use_def(¥R_TIMES) ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) /= Cauchy_to_Re(arb(y) ¥Ras_TIMES arb(x)) EQUAL(Stat1) ==> false; Discharge ==> QED -- Theorem 619: [Elementary algebraic lemma for real multiplication] ((X in RaCauchy) & (Y in RaCauchy)) ¥imp (Cauchy_to_Re(X ¥Ras_TIMES Y) = (Cauchy_to_Re(X) ¥R_TIMES Cauchy_to_Re(Y))). Proof: Suppose_not(x,y) ==> (x in RaCauchy) & (y in RaCauchy) & (Cauchy_to_Re(x ¥Ras_TIMES y) /= (Cauchy_to_Re(x) ¥R_TIMES Cauchy_to_Re(y))) T539(*) ==> (x in RaSeq) & (y in RaSeq) Use_def(¥R_TIMES) ==> Cauchy_to_Re(arb(Cauchy_to_Re(x)) ¥Ras_TIMES arb(Cauchy_to_Re(y))) /= Cauchy_to_Re(x ¥Ras_TIMES y) (x,x)-->T610 ==> Ra_eqseq(x,arb(Cauchy_to_Re(x))) & (Cauchy_to_Re(x) in Re) (y,y)-->T610 ==> Ra_eqseq(y,arb(Cauchy_to_Re(y))) & (Cauchy_to_Re(y) in Re) (x,y)-->T561 ==> (x ¥Ras_TIMES y) in RaCauchy (Cauchy_to_Re(x))-->T611 ==> (arb(Cauchy_to_Re(x)) in RaCauchy) & (arb(Cauchy_to_Re(x)) in RaSeq) (Cauchy_to_Re(y))-->T611 ==> (arb(Cauchy_to_Re(y)) in RaCauchy) & (arb(Cauchy_to_Re(y)) in RaSeq) (x,arb(Cauchy_to_Re(x)),y,arb(Cauchy_to_Re(y)))-->T574 ==> Ra_eqseq(x ¥Ras_TIMES y,arb(Cauchy_to_Re(x)) ¥Ras_TIMES arb(Cauchy_to_Re(y))) (arb(Cauchy_to_Re(x)),arb(Cauchy_to_Re(y)))-->T561 ==> (arb(Cauchy_to_Re(x)) ¥Ras_TIMES arb(Cauchy_to_Re(y))) in RaCauchy (x ¥Ras_TIMES y,arb(Cauchy_to_Re(x)) ¥Ras_TIMES arb(Cauchy_to_Re(y)))-->T610 ==> false; Discharge ==> QED Theorem 620: [Associative law for real multiplication] ({X,Y,V} ¥incin Re) ¥imp ((X ¥R_TIMES (Y ¥R_TIMES V)) = ((X ¥R_TIMES Y) ¥R_TIMES V)). Proof: Suppose_not(x,y,v) ==> (x in Re) & (y in Re) & (v in Re) & ((x ¥R_TIMES (y ¥R_TIMES v)) /= ((x ¥R_TIMES y) ¥R_TIMES v)) -- -- For let x,y,v be a counterexample to our assertion, and let arb(x), arb(y), and arb(v) be Cauchy sequences belonging -- to these equivalence classes (of Cauchy sequences). By theorem 580, pointwise addition of these rational sequences is associative. -- x-->T611 ==> Stat1: (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) y-->T611 ==> Stat2: (arb(y) in RaCauchy) & (arb(y) in RaSeq) & (Cauchy_to_Re(arb(y)) = y) v-->T611 ==> Stat3: (arb(v) in RaCauchy) & (arb(v) in RaSeq) & (Cauchy_to_Re(arb(v)) = v) (arb(x),arb(y),arb(v))-->T581(Stat1) ==> ((arb(x) ¥Ras_TIMES (arb(y) ¥Ras_TIMES arb(v))) = ((arb(x) ¥Ras_TIMES arb(y)) ¥Ras_TIMES arb(v))) (arb(y),arb(v))-->T561(Stat1) ==> (arb(y) ¥Ras_TIMES arb(v)) in RaCauchy (arb(x),arb(y))-->T561 ==> (arb(x) ¥Ras_TIMES arb(y)) in RaCauchy -- -- But in the case before us equivalence classes of products are by definition products of equivalence classes, -- so our theorem follows routinely. -- EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES (arb(y) ¥Ras_TIMES arb(v))) = Cauchy_to_Re((arb(x) ¥Ras_TIMES arb(y)) ¥Ras_TIMES arb(v)) (arb(x),arb(y) ¥Ras_TIMES arb(v))-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES (arb(y) ¥Ras_TIMES arb(v))) = (Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(arb(y) ¥Ras_TIMES arb(v))) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES (arb(y) ¥Ras_TIMES arb(v))) = (x ¥R_TIMES Cauchy_to_Re(arb(y) ¥Ras_TIMES arb(v))) (arb(y),arb(v))-->T619 ==> Cauchy_to_Re(arb(y) ¥Ras_TIMES arb(v)) = (Cauchy_to_Re(arb(y)) ¥R_TIMES Cauchy_to_Re(arb(v))) EQUAL ==> Cauchy_to_Re(arb(y) ¥Ras_TIMES arb(v)) = (y ¥R_TIMES v) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES (arb(y) ¥Ras_TIMES arb(v))) = x ¥R_TIMES (y ¥R_TIMES v) (arb(x) ¥Ras_TIMES arb(y),arb(v))-->T619 ==> Cauchy_to_Re((arb(x) ¥Ras_TIMES arb(y)) ¥Ras_TIMES arb(v)) = Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) ¥R_TIMES Cauchy_to_Re(arb(v)) EQUAL ==> Cauchy_to_Re((arb(x) ¥Ras_TIMES arb(y)) ¥Ras_TIMES arb(v)) = Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) ¥R_TIMES v (arb(x),arb(y))-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) = (Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(arb(y))) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) = (x ¥R_TIMES y) EQUAL ==> false; Discharge ==> QED -- Theorem 621: [Distributive law for real multiplication] ({X,Y,V} ¥incin Re) ¥imp ((X ¥R_TIMES (Y ¥R_PLUS V)) = ((X ¥R_TIMES Y) ¥R_PLUS (X ¥R_TIMES V))). Proof: Suppose_not(x,y,v) ==> (x in Re) & (y in Re) & (v in Re) & (x ¥R_TIMES (y ¥R_PLUS v) /= (x ¥R_TIMES y) ¥R_PLUS (x ¥R_TIMES v)) -- -- For let x,y,v be a counterexample to our assertion, and let arb(x), arb(y), and arb(v) be Cauchy sequences belonging -- to these equivalence classes (of Cauchy sequences). By theorem 583, pointwise addition of these rational sequences is associative. -- x-->T611 ==> Stat1: (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) y-->T611 ==> Stat2: (arb(y) in RaCauchy) & (arb(y) in RaSeq) & (Cauchy_to_Re(arb(y)) = y) v-->T611 ==> Stat3: (arb(v) in RaCauchy) & (arb(v) in RaSeq) & (Cauchy_to_Re(arb(v)) = v) (arb(x),arb(y),arb(v))-->T583(Stat1) ==> (arb(x) ¥Ras_TIMES (arb(y) ¥Ras_PLUS arb(v))) = ((arb(x) ¥Ras_TIMES arb(y)) ¥Ras_PLUS (arb(x) ¥Ras_TIMES arb(v))) (arb(y),arb(v))-->T556(Stat1) ==> (arb(y) ¥Ras_PLUS arb(v)) in RaCauchy (arb(x),arb(y))-->T561 ==> (arb(x) ¥Ras_TIMES arb(y)) in RaCauchy (arb(x),arb(v))-->T561 ==> (arb(x) ¥Ras_TIMES arb(v)) in RaCauchy -- -- But in the case before us equivalence classes of sums are by definition sums of equivalence classes, -- and similarly for products, so our theorem follows routinely. -- EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES (arb(y) ¥Ras_PLUS arb(v))) = Cauchy_to_Re((arb(x) ¥Ras_TIMES arb(y)) ¥Ras_PLUS (arb(x) ¥Ras_TIMES arb(v))) (arb(x),arb(y) ¥Ras_PLUS arb(v))-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES (arb(y) ¥Ras_PLUS arb(v))) = (Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(v))) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES (arb(y) ¥Ras_PLUS arb(v))) = (x ¥R_TIMES Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(v))) (arb(y),arb(v))-->T616 ==> Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(v)) = (Cauchy_to_Re(arb(y)) ¥R_PLUS Cauchy_to_Re(arb(v))) EQUAL ==> Cauchy_to_Re(arb(y) ¥Ras_PLUS arb(v)) = (y ¥R_PLUS v) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES (arb(y) ¥Ras_PLUS arb(v))) = x ¥R_TIMES (y ¥R_PLUS v) (arb(x) ¥Ras_TIMES arb(y),arb(x) ¥Ras_TIMES arb(v))-->T616 ==> Cauchy_to_Re((arb(x) ¥Ras_TIMES arb(y)) ¥Ras_PLUS (arb(x) ¥Ras_TIMES arb(v))) = Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) ¥R_PLUS Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(v)) (arb(x),arb(y))-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) = Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(arb(y)) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) = x ¥R_TIMES y (arb(x),arb(v))-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(v)) = Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(arb(v)) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(v)) = x ¥R_TIMES v EQUAL ==> false; Discharge ==> QED -- Theorem 622: [Lemma for law of signs] (X in RaCauchy) ¥imp (Cauchy_to_Re(Ras_Rev(X)) = R_Rev(Cauchy_to_Re(X))). Proof: Suppose_not(x) ==> AUTO Use_def(R_Rev) ==> R_Rev(Cauchy_to_Re(x)) = Cauchy_to_Re(Ras_Rev(arb(Cauchy_to_Re(x)))) (x,x)-->T610 ==> Ra_eqseq(x,arb(Cauchy_to_Re(x))) & (Cauchy_to_Re(x) in Re) (Cauchy_to_Re(x))-->T611 ==> arb(Cauchy_to_Re(x)) in RaCauchy (x,arb(Cauchy_to_Re(x)))-->T575 ==> Ra_eqseq(Ras_Rev(x),Ras_Rev(arb(Cauchy_to_Re(x)))) (x,x)-->T556 ==> Ras_Rev(x) in RaCauchy (arb(Cauchy_to_Re(x)),x)-->T556 ==> Ras_Rev(arb(Cauchy_to_Re(x))) in RaCauchy (Ras_Rev(x),Ras_Rev(arb(Cauchy_to_Re(x))))-->T610 ==> Cauchy_to_Re(Ras_Rev(x)) = Cauchy_to_Re(Ras_Rev(arb(Cauchy_to_Re(x)))) Discharge ==> QED -- Theorem 623: [Law of signs for real multiplication] ({X,Y} ¥incin Re) ¥imp (((X ¥R_TIMES R_Rev(Y)) = R_Rev(X ¥R_TIMES Y)) & ((R_Rev(X) ¥R_TIMES Y) = R_Rev(X ¥R_TIMES Y)) & ((R_Rev(X) ¥R_TIMES R_Rev(Y)) = (X ¥R_TIMES Y))). Proof: Suppose_not(x,y) ==> AUTO x-->T611 ==> Stat1: (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) y-->T611 ==> Stat2: (arb(y) in RaCauchy) & (arb(y) in RaSeq) & (Cauchy_to_Re(arb(y)) = y) (arb(x),arb(y))-->T584 ==> ((arb(x) ¥Ras_TIMES Ras_Rev(arb(y))) = Ras_Rev(arb(x) ¥Ras_TIMES arb(y))) (arb(x),arb(y))-->T585 ==> ((Ras_Rev(arb(x)) ¥Ras_TIMES arb(y)) = Ras_Rev(arb(x) ¥Ras_TIMES arb(y))) & ((Ras_Rev(arb(x)) ¥Ras_TIMES Ras_Rev(arb(y))) = (arb(x) ¥Ras_TIMES arb(y))) EQUAL ==> (Cauchy_to_Re(arb(x) ¥Ras_TIMES Ras_Rev(arb(y))) = Cauchy_to_Re(Ras_Rev(arb(x) ¥Ras_TIMES arb(y)))) & (Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_TIMES arb(y)) = Cauchy_to_Re(Ras_Rev(arb(x) ¥Ras_TIMES arb(y)))) & (Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_TIMES Ras_Rev(arb(y))) = Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))) (arb(x),arb(x))-->T556 ==> Ras_Rev(arb(x)) in RaCauchy (arb(y),arb(y))-->T556 ==> Ras_Rev(arb(y)) in RaCauchy (arb(x),arb(y))-->T561 ==> (arb(x) ¥Ras_TIMES arb(y)) in RaCauchy (Ras_Rev(arb(x)),Ras_Rev(arb(y)))-->T619 ==> Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_TIMES Ras_Rev(arb(y))) = Cauchy_to_Re(Ras_Rev(arb(x))) ¥R_TIMES Cauchy_to_Re(Ras_Rev(arb(y))) (arb(x),arb(y))-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) = Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(arb(y)) (arb(x),Ras_Rev(arb(y)))-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES Ras_Rev(arb(y))) = Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(Ras_Rev(arb(y))) (Ras_Rev(arb(x)),arb(y))-->T619 ==> Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_TIMES arb(y)) = Cauchy_to_Re(Ras_Rev(arb(x))) ¥R_TIMES Cauchy_to_Re(arb(y)) Use_def(R_Rev) ==> Cauchy_to_Re(Ras_Rev(arb(x))) = R_Rev(x) Use_def(R_Rev) ==> Cauchy_to_Re(Ras_Rev(arb(y))) = R_Rev(y) (arb(x) ¥Ras_TIMES arb(y))-->T622 ==> Cauchy_to_Re(Ras_Rev(arb(x) ¥Ras_TIMES arb(y))) = R_Rev(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))) EQUAL ==> Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_TIMES arb(y)) = R_Rev(x) ¥R_TIMES y EQUAL ==> Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(arb(y)) = x ¥R_TIMES y EQUAL ==> R_Rev(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))) = R_Rev(x ¥R_TIMES y) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES Ras_Rev(arb(y))) = x ¥R_TIMES R_Rev(y) EQUAL ==> Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_TIMES Ras_Rev(arb(y))) = R_Rev(x) ¥R_TIMES R_Rev(y) Discharge ==> QED -- -- -- Next follow a list of theorems giving various elementary properties of real additon, multiplication, and subtraction. -- In many cases these follow from corresponding algebraic properties of rational Cauchy sequences. -- The style of proof used is often that already seen in our last few proof.s -- Theorem 624: [Any real times 0 is 0] (X in Re) ¥imp ((X ¥R_TIMES R_0) = R_0). Proof: Suppose_not(x) ==> AUTO x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) (arb(x))-->T586 ==> (arb(x) ¥Ras_TIMES Ra0Seq) = Ra0Seq EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES Ra0Seq) = Cauchy_to_Re(Ra0Seq) T545 ==> Ra0Seq in RaCauchy (arb(x),Ra0Seq)-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES Ra0Seq) = Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(Ra0Seq) EQUAL ==> x ¥R_TIMES Cauchy_to_Re(Ra0Seq) = Cauchy_to_Re(Ra0Seq) Use_def(R_0) ==> (x ¥R_TIMES R_0) = R_0 Discharge ==> QED -- Theorem 625: [0 times any real is 0] (X in Re) ¥imp (R_0 ¥R_TIMES X = R_0). Proof: Suppose_not(x) ==> AUTO T612 ==> R_0 in Re (x,R_0)-->T618 ==> R_0 ¥R_TIMES x = x ¥R_TIMES R_0 x-->T624 ==> false; Discharge ==> QED -- Theorem 626: [0 is a right and left additive identity for reals] (X in Re) ¥imp ((X ¥R_PLUS R_0 = X) & (R_0 ¥R_PLUS X = X)). Proof: Suppose_not(x) ==> AUTO x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) (arb(x))-->T605 ==> (arb(x) ¥Ras_PLUS Ra0Seq) = arb(x) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS Ra0Seq) = Cauchy_to_Re(arb(x)) T545 ==> Ra0Seq in RaCauchy (arb(x),Ra0Seq)-->T616 ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS Ra0Seq) = Cauchy_to_Re(arb(x)) ¥R_PLUS Cauchy_to_Re(Ra0Seq) EQUAL ==> Cauchy_to_Re(arb(x)) ¥R_PLUS Cauchy_to_Re(Ra0Seq) = x ¥R_PLUS Cauchy_to_Re(Ra0Seq) Use_def(R_0) ==> x ¥R_PLUS R_0 = x T612 ==> R_0 in Re (x,R_0)-->T615 ==> false; Discharge ==> QED -- Theorem 627: [1 is a right multiplicative identity for reals] (X in Re) ¥imp (X ¥R_TIMES R_1 = X). Proof: Suppose_not(x) ==> AUTO x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) (arb(x))-->T605 ==> (arb(x) ¥Ras_TIMES Ra1Seq) = arb(x) EQUAL ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES Ra1Seq) = Cauchy_to_Re(arb(x)) T545 ==> Ra1Seq in RaCauchy (arb(x),Ra1Seq)-->T619 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES Ra1Seq) = Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(Ra1Seq) EQUAL ==>Cauchy_to_Re(arb(x) ¥Ras_TIMES Ra1Seq) = x ¥R_TIMES Cauchy_to_Re(Ra1Seq) Use_def(R_1) ==> x ¥R_TIMES R_1 = x T612 ==> R_1 in Re (x,R_1)-->T615 ==> false; Discharge ==> QED -- Theorem 628: [1 is a left multiplicative identity for reals] (X in Re) ¥imp (R_1 ¥R_TIMES X = X). Proof: Suppose_not(x) ==> AUTO x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) T612 ==> R_1 in Re (x,R_1)-->T618 ==> R_1 ¥R_TIMES x = x ¥R_TIMES R_1 x-->T627 ==> false; Discharge ==> QED -- Theorem 629: [The zero real is its own negative] R_Rev(R_0) = R_0. Proof: Suppose_not ==> AUTO T595 ==> AUTO Use_def(R_0) ==> R_Rev(Cauchy_to_Re(Ra0Seq)) /= Cauchy_to_Re(Ra0Seq) Use_def(R_Rev) ==> Cauchy_to_Re(Ras_Rev(arb(Cauchy_to_Re(Ra0Seq)))) /= Cauchy_to_Re(Ra0Seq) T545 ==> Ra0Seq in RaCauchy (Ra0Seq,Ra0Seq)-->T610 ==> Ra_eqseq(Ra0Seq,arb(Cauchy_to_Re(Ra0Seq))) & (Cauchy_to_Re(Ra0Seq) in Re) (Cauchy_to_Re(Ra0Seq))-->T611 ==> arb(Cauchy_to_Re(Ra0Seq)) in RaCauchy (arb(Cauchy_to_Re(Ra0Seq)),Ra0Seq)-->T607 ==> Ra_eqseq(arb(Cauchy_to_Re(Ra0Seq)),Ra0Seq) (arb(Cauchy_to_Re(Ra0Seq)),arb(Cauchy_to_Re(Ra0Seq)))-->T556 ==> Ras_Rev(arb(Cauchy_to_Re(Ra0Seq))) in RaCauchy (Ras_Rev(arb(Cauchy_to_Re(Ra0Seq))),Ra0Seq)-->T610 ==> not Ra_eqseq(Ras_Rev(arb(Cauchy_to_Re(Ra0Seq))),Ra0Seq) (arb(Cauchy_to_Re(Ra0Seq)),Ra0Seq)-->T575 ==> Ra_eqseq(Ras_Rev(arb(Cauchy_to_Re(Ra0Seq))),Ras_Rev(Ra0Seq)) T595 ==> Ras_Rev(Ra0Seq) = Ra0Seq EQUAL ==> Ra_eqseq(Ras_Rev(arb(Cauchy_to_Re(Ra0Seq))),Ra0Seq) Discharge ==> QED -- Theorem 630: [0 is right identity for real subtraction] (X in Re) ¥imp (X ¥R_MINUS R_0 = X). Proof: Suppose_not(x) ==> AUTO Use_def(¥R_MINUS) ==> Cauchy_to_Re(arb(x) ¥Ras_MINUS arb(R_0)) /= x Use_def(¥Ras_MINUS) ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS Ras_Rev(arb(R_0))) /= x T612 ==> R_0 in Re R_0-->T611 ==> (arb(R_0)in RaCauchy) & (Cauchy_to_Re(arb(R_0)) = R_0) x-->T611 ==> (arb(x) in RaCauchy) & (Cauchy_to_Re(arb(x)) = x) (arb(R_0),arb(R_0))-->T556 ==> Ras_Rev(arb(R_0)) in RaCauchy (arb(x),Ras_Rev(arb(R_0)))-->T616 ==> Cauchy_to_Re(arb(x)) ¥R_PLUS Cauchy_to_Re(Ras_Rev(arb(R_0))) /= x Use_def(R_Rev) ==> Cauchy_to_Re(Ras_Rev(arb(R_0))) = R_Rev(R_0) T629 ==> Cauchy_to_Re(Ras_Rev(arb(R_0))) = R_0 EQUAL ==> Cauchy_to_Re(arb(x)) ¥R_PLUS R_0 /= x EQUAL ==> x ¥R_PLUS R_0 /= x x-->T626 ==> false; Discharge ==> QED -- Theorem 631: [Real subtraction principle] (X in Re) ¥imp (X ¥R_MINUS X = R_0). Proof: Suppose_not(x) ==> AUTO Use_def(¥R_MINUS) ==> Cauchy_to_Re(arb(x) ¥Ras_MINUS arb(x)) /= R_0 Use_def(¥Ras_MINUS) ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS Ras_Rev(arb(x))) /= R_0 x-->T611 ==> arb(x) in RaCauchy T539(*) ==> arb(x) in RaSeq (arb(x))-->T590 ==> Ras_Rev(arb(x)) ¥Ras_PLUS arb(x) = Ra0Seq EQUAL ==> Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_PLUS arb(x)) = Cauchy_to_Re(Ra0Seq) Use_def(R_0) ==> Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_PLUS arb(x)) = R_0 (arb(x),arb(x))-->T556 ==> Ras_Rev(arb(x)) in RaCauchy (Ras_Rev(arb(x)),arb(x))-->T616 ==> Cauchy_to_Re(Ras_Rev(arb(x))) ¥R_PLUS Cauchy_to_Re(arb(x)) = R_0 (arb(x),Ras_Rev(arb(x)))-->T616 ==> Cauchy_to_Re(arb(x)) ¥R_PLUS Cauchy_to_Re(Ras_Rev(arb(x))) /= R_0 (arb(x),arb(x))-->T610 ==> Cauchy_to_Re(arb(x)) in Re (Ras_Rev(arb(x)),arb(x))-->T610 ==> Cauchy_to_Re(Ras_Rev(arb(x))) in Re (Cauchy_to_Re(arb(x)),Cauchy_to_Re(Ras_Rev(arb(x))))-->T615 ==> false; Discharge ==> QED -- Theorem 632: [Basic properties of the signed negative for reals] (X in Re) ¥imp ((R_Rev(X) in Re) & ((R_Rev(X) ¥R_PLUS X) = R_0)). Proof: Suppose_not(x) ==> AUTO x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) Use_def(R_Rev) ==> R_Rev(x) = Cauchy_to_Re(Ras_Rev(arb(x))) (arb(x),arb(x))-->T556 ==> Ras_Rev(arb(x)) in RaCauchy (Ras_Rev(arb(x)),arb(x))-->T610 ==> R_Rev(x) in Re (arb(x))-->T590 ==> Ras_Rev(arb(x)) ¥Ras_PLUS arb(x) = Ra0Seq EQUAL ==> Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_PLUS arb(x)) = Cauchy_to_Re(Ra0Seq) Use_def(R_0) ==> Cauchy_to_Re(Ras_Rev(arb(x)) ¥Ras_PLUS arb(x)) = R_0 (Ras_Rev(arb(x)),arb(x))-->T616 ==> Cauchy_to_Re(Ras_Rev(arb(x))) ¥R_PLUS Cauchy_to_Re(arb(x)) = R_0 EQUAL ==> (R_Rev(x) ¥R_PLUS x) = R_0 Discharge ==> QED -- Theorem 633: [Basic properties of the signed negative for reals, 2] (X in Re) ¥imp (R_Rev(R_Rev(X)) = X). Proof: Suppose_not(x) ==> AUTO x-->T632(*) ==> R_Rev(x) in Re (R_Rev(x))-->T632(*) ==> R_Rev(R_Rev(x)) in Re (R_Rev(R_Rev(x)),R_Rev(x),x)-->T617(*) ==> ((R_Rev(R_Rev(x)) ¥R_PLUS R_Rev(x)) ¥R_PLUS x) = (R_Rev(R_Rev(x)) ¥R_PLUS (R_Rev(x) ¥R_PLUS x)) x-->T632(*) ==> (R_Rev(x) ¥R_PLUS x) = R_0 (R_Rev(x))-->T632(*) ==> (R_Rev(R_Rev(x)) ¥R_PLUS R_Rev(x)) = R_0 EQUAL ==> (R_0 ¥R_PLUS x) = (R_Rev(R_Rev(x)) ¥R_PLUS R_0) x-->T626(*) ==> x = (R_Rev(R_Rev(x)) ¥R_PLUS R_0) (R_Rev(R_Rev(x)))-->T626(*) ==> R_Rev(R_Rev(x)) = (R_Rev(R_Rev(x)) ¥R_PLUS R_0) Discharge ==> QED -- Theorem 634: [Real additive Cancellation] ((X in Re) & (Y in Re) & (V in Re) & (X ¥R_PLUS V = Y ¥R_PLUS V)) ¥imp (X = Y). Proof: Suppose_not(x,y,v) ==> (x in Re) & (y in Re) & (v in Re) & (x ¥R_PLUS v = y ¥R_PLUS v) & (x /= y) (x,v)-->T613 ==> x ¥R_PLUS v in Re (y,v)-->T613 ==> y ¥R_PLUS v in Re EQUAL ==> ((x ¥R_PLUS v) ¥R_PLUS R_Rev(v)) = ((y ¥R_PLUS v) ¥R_PLUS R_Rev(v)) (v,v)-->T613 ==> R_Rev(v) in Re v-->T632 ==> (R_Rev(v) ¥R_PLUS v) = R_0 (v,R_Rev(v))-->T615 ==> (v ¥R_PLUS R_Rev(v)) = R_0 (x,v,R_Rev(v))-->T617 ==> ((x ¥R_PLUS v) ¥R_PLUS R_Rev(v)) = (x ¥R_PLUS (v ¥R_PLUS R_Rev(v))) (y,v,R_Rev(v))-->T617 ==> ((y ¥R_PLUS v) ¥R_PLUS R_Rev(v)) = (y ¥R_PLUS (v ¥R_PLUS R_Rev(v))) EQUAL ==> (x ¥R_PLUS R_0) = (y ¥R_PLUS R_0) x-->T626 ==> x ¥R_PLUS R_0 = x y-->T626 ==> false; Discharge ==> QED -- Theorem 635: [Real subtraction is addition of the negative] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_MINUS Y) = (X ¥R_PLUS R_Rev(Y))). Proof: Suppose_not(x,y) ==> AUTO x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) y-->T611 ==> (arb(y) in RaCauchy) & (arb(y) in RaSeq) & (Cauchy_to_Re(arb(y)) = y) Use_def(¥R_MINUS) ==> x ¥R_MINUS y = Cauchy_to_Re(arb(x) ¥Ras_MINUS arb(y)) Use_def(¥Ras_MINUS) ==> arb(x) ¥Ras_MINUS arb(y) = arb(x) ¥Ras_PLUS Ras_Rev(arb(y)) EQUAL ==> x ¥R_MINUS y = Cauchy_to_Re(arb(x) ¥Ras_PLUS Ras_Rev(arb(y))) (arb(y),arb(y))-->T556 ==> Ras_Rev(arb(y)) in RaCauchy (arb(x),Ras_Rev(arb(y)))-->T616 ==> x ¥R_MINUS y = Cauchy_to_Re(arb(x)) ¥R_PLUS Cauchy_to_Re(Ras_Rev(arb(y))) EQUAL ==> x ¥R_MINUS y = x ¥R_PLUS Cauchy_to_Re(Ras_Rev(arb(y))) Use_def(R_Rev) ==> R_Rev(y) = Cauchy_to_Re(Ras_Rev(arb(y))) EQUAL ==> false; Discharge ==> QED -- Theorem 636: [The sum of a real number and its additive inverse is zero] (X in Re) ¥imp ((R_Rev(X) in Re) & ((X ¥R_PLUS R_Rev(X)) = R_0)). Proof: Suppose_not(x) ==> AUTO (x,x)-->T613(*) ==> (x ¥R_PLUS R_Rev(x)) /= R_0 (x,x)-->T635 ==> AUTO x-->T631(*) ==> false; Discharge ==> QED -- Theorem 637: [The negative of a real $x$ is zero iff $x$ is zero] (X in Re) ¥imp ((R_Rev(X) = R_0) ¥eq (X = R_0)). Proof: Suppose_not(x) ==> AUTO Suppose ==> x = R_0 ()-->T629 ==> AUTO EQUAL ==> false; Discharge ==> (x /= R_0) & (R_Rev(X) = R_0) x-->T636(*) ==> (x ¥R_PLUS R_Rev(x)) = R_0 x-->T626(*) ==> (x ¥R_PLUS R_0) = x EQUAL ==> false; Discharge ==> QED -- Theorem 638: [The negative of a real sum is the sum of the negatives] ((X in Re) & (Y in Re)) ¥imp (R_Rev(X ¥R_PLUS Y) = R_Rev(X) ¥R_PLUS R_Rev(Y)). Proof: Suppose_not(x,y) ==> AUTO x-->T613 ==> R_Rev(x) in Re y-->T613 ==> R_Rev(y) in Re (R_Rev(x),R_Rev(y))-->T613 ==> R_Rev(x) ¥R_PLUS R_Rev(y) in Re (x,y)-->T613 ==> x ¥R_PLUS y in Re (x ¥R_PLUS y)-->T613 ==> R_Rev(x ¥R_PLUS y) in Re (R_Rev(x ¥R_PLUS y),(R_Rev(x) ¥R_PLUS R_Rev(y)),y)-->T634 ==> R_Rev(x ¥R_PLUS y) ¥R_PLUS y /= (R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS y (R_Rev(x),R_Rev(y),y)-->T617 ==> (R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS y = R_Rev(x) ¥R_PLUS (R_Rev(y) ¥R_PLUS y) y-->T632 ==> R_Rev(y) ¥R_PLUS y = R_0 EQUAL ==> (R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS y = R_Rev(x) ¥R_PLUS R_0 (R_Rev(x))-->T626 ==> R_Rev(x) ¥R_PLUS R_0 = R_Rev(x) EQUAL ==> (R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS y = R_Rev(x) EQUAL ==> ((R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS y) ¥R_PLUS x = R_Rev(x) ¥R_PLUS x x-->T632 ==> ((R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS y) ¥R_PLUS x = R_0 (R_Rev(x),R_Rev(y))-->T613 ==> (R_Rev(x) ¥R_PLUS R_Rev(y)) in Re (R_Rev(x) ¥R_PLUS R_Rev(y),y,x)-->T617 ==> ((R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS y) ¥R_PLUS x = (R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS (y ¥R_PLUS x) (x,y)-->T615 ==> y ¥R_PLUS x = x ¥R_PLUS y EQUAL ==> (R_Rev(x) ¥R_PLUS R_Rev(y)) ¥R_PLUS (x ¥R_PLUS y) = R_0 y-->T632 ==> R_Rev(y) ¥R_PLUS y = R_0 (x,y)-->T613 ==> (x ¥R_PLUS y) in Re (x ¥R_PLUS y)-->T632 ==> R_Rev(x ¥R_PLUS y) ¥R_PLUS (x ¥R_PLUS y) = R_0 (R_Rev(x ¥R_PLUS y),R_Rev(x) ¥R_PLUS R_Rev(y),x ¥R_PLUS y)-->T634 ==> false; Discharge ==> QED -- Theorem 639: [Real addition-subtraction commutativity] ((X in Re) & (Y in Re) & (V in Re)) ¥imp (X ¥R_MINUS (Y ¥R_PLUS V) = (X ¥R_MINUS Y) ¥R_MINUS V). Proof: Suppose_not(x,y,v) ==> AUTO (y,v)-->T613 ==> y ¥R_PLUS v in Re (x,y)-->T614 ==> x ¥R_MINUS y in Re (x,y ¥R_PLUS v)-->T635 ==> (x ¥R_MINUS (y ¥R_PLUS v)) = (x ¥R_PLUS R_Rev(y ¥R_PLUS v)) (x ¥R_MINUS y,v)-->T635 ==> ((x ¥R_MINUS y) ¥R_MINUS v) = ((x ¥R_MINUS y) ¥R_PLUS R_Rev(v)) (x,y)-->T635 ==>x ¥R_MINUS y = x ¥R_PLUS R_Rev(y) EQUAL ==> (x ¥R_PLUS R_Rev(y ¥R_PLUS v)) /= ((x ¥R_PLUS R_Rev(y)) ¥R_PLUS R_Rev(v)) y-->T613 ==> R_Rev(y) in Re v-->T613 ==> R_Rev(v) in Re (x,R_Rev(y),R_Rev(v))-->T617 ==> (x ¥R_PLUS R_Rev(y ¥R_PLUS v)) /= (x ¥R_PLUS (R_Rev(y) ¥R_PLUS R_Rev(v))) (y,v)-->T638 ==> R_Rev(y ¥R_PLUS v) = R_Rev(y) ¥R_PLUS R_Rev(v) EQUAL ==> false; Discharge ==> QED -- Theorem 640: [Real subtraction reverses addition] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_PLUS Y) ¥R_MINUS Y = X). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T613 ==> x ¥R_PLUS y in Re (x ¥R_PLUS y,y)-->T635 ==> (x ¥R_PLUS y) ¥R_MINUS y = (x ¥R_PLUS y) ¥R_PLUS R_Rev(y) y-->T613 ==> R_Rev(y) in Re (x,y,R_Rev(y))-->T617 ==> (x ¥R_PLUS y) ¥R_MINUS y = x ¥R_PLUS (y ¥R_PLUS R_Rev(y)) y-->T632 ==> R_Rev(y) ¥R_PLUS y = R_0 (y,R_Rev(y))-->T615 ==> y ¥R_PLUS R_Rev(y) = R_0 EQUAL ==> (x ¥R_PLUS y) ¥R_MINUS y = x ¥R_PLUS R_0 x-->T626 ==> false; Discharge ==> QED -- Theorem 641: [Real subtraction reverses addition, 2] ((X in Re) & (Y in Re)) ¥imp (X = (Y ¥R_PLUS (X ¥R_MINUS Y))). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T635 ==> x ¥R_MINUS y = x ¥R_PLUS R_Rev(y) y-->T613 ==> R_Rev(y) in Re (x,R_Rev(y))-->T615 ==> x ¥R_MINUS y = R_Rev(y) ¥R_PLUS x EQUAL ==> y ¥R_PLUS (x ¥R_MINUS y) = y ¥R_PLUS (R_Rev(y) ¥R_PLUS x) (y,R_Rev(y),x)-->T617 ==> y ¥R_PLUS (x ¥R_MINUS y) = (y ¥R_PLUS R_Rev(y)) ¥R_PLUS x y-->T632 ==> R_Rev(y) ¥R_PLUS y = R_0 (y,R_Rev(y))-->T615 ==> y ¥R_PLUS R_Rev(y) = R_0 EQUAL ==> y ¥R_PLUS (x ¥R_MINUS y) = R_0 ¥R_PLUS x x-->T626 ==> false; Discharge ==> QED -- Theorem 642: [Multiplication by $R_Rev(R_1)$] (X in Re) ¥imp (R_Rev(X) = R_Rev(R_1) ¥R_TIMES X). Proof: Suppose_not(x) ==> AUTO T612 ==> R_1 in Re (R_1,R_1)-->T613 ==> R_Rev(R_1) in Re (x,x)-->T613 ==> R_Rev(x) in Re (x,R_Rev(R_1))-->T614 ==> x ¥R_TIMES R_Rev(R_1) in Re (x,R_Rev(R_1))-->T618 ==> R_Rev(x) /= x ¥R_TIMES R_Rev(R_1) (R_Rev(x),x ¥R_TIMES R_Rev(R_1),x)-->T634 ==> R_Rev(x) ¥R_PLUS x /= (x ¥R_TIMES R_Rev(R_1)) ¥R_PLUS x x-->T632 ==> R_0 /= (x ¥R_TIMES R_Rev(R_1)) ¥R_PLUS x x-->T627 ==> x = x ¥R_TIMES R_1 EQUAL ==> R_0 /= (x ¥R_TIMES R_Rev(R_1)) ¥R_PLUS (x ¥R_TIMES R_1) (x,R_Rev(R_1),R_1)-->T621 ==> R_0 /= (x ¥R_TIMES (R_Rev(R_1) ¥R_PLUS R_1)) R_1-->T632 ==> R_Rev(R_1) ¥R_PLUS R_1 = R_0 EQUAL ==> R_0 /= x ¥R_TIMES R_0 x-->T624 ==> false; Discharge ==> QED -- Theorem 643: [Distributivity of multiplication over subtraction] ((X in Re) & (Y in Re) & (V in Re)) ¥imp ((X ¥R_TIMES (Y ¥R_MINUS V)) = ((X ¥R_TIMES Y) ¥R_MINUS (X ¥R_TIMES V))). Proof: Suppose_not(x,y,v) ==> AUTO (x,y)-->T614 ==> (x ¥R_TIMES y) in Re (x,v)-->T614 ==> (x ¥R_TIMES v) in Re (x ¥R_TIMES v,x ¥R_TIMES v)-->T613 ==> R_Rev(x ¥R_TIMES v) in Re (v,v)-->T613 ==> R_Rev(v) in Re (y,v)-->T614 ==> (y ¥R_MINUS v) in Re (x,y ¥R_MINUS v)-->T614 ==> x ¥R_TIMES (y ¥R_MINUS v) in Re (x ¥R_TIMES y,x ¥R_TIMES v)-->T614 ==> (x ¥R_TIMES y) ¥R_MINUS (x ¥R_TIMES v) in Re (x ¥R_TIMES (y ¥R_MINUS v),(x ¥R_TIMES y) ¥R_MINUS (x ¥R_TIMES v),x ¥R_TIMES v)-->T634 ==> (x ¥R_TIMES (y ¥R_MINUS v)) ¥R_PLUS (x ¥R_TIMES v) /= ((x ¥R_TIMES y) ¥R_MINUS (x ¥R_TIMES v)) ¥R_PLUS (x ¥R_TIMES v) (x,y ¥R_MINUS v,v)-->T621 ==> (x ¥R_TIMES ((y ¥R_MINUS v) ¥R_PLUS v)) /= ((x ¥R_TIMES y) ¥R_MINUS (x ¥R_TIMES v)) ¥R_PLUS (x ¥R_TIMES v) (x ¥R_TIMES y,x ¥R_TIMES v)-->T635 ==> (x ¥R_TIMES y) ¥R_MINUS (x ¥R_TIMES v) = (x ¥R_TIMES y) ¥R_PLUS R_Rev(x ¥R_TIMES v) EQUAL ==> (x ¥R_TIMES ((y ¥R_MINUS v) ¥R_PLUS v)) /= ((x ¥R_TIMES y) ¥R_PLUS R_Rev(x ¥R_TIMES v)) ¥R_PLUS (x ¥R_TIMES v) (x ¥R_TIMES y,R_Rev(x ¥R_TIMES v),x ¥R_TIMES v)-->T617 ==> (x ¥R_TIMES ((y ¥R_MINUS v) ¥R_PLUS v)) /= (x ¥R_TIMES y) ¥R_PLUS (R_Rev(x ¥R_TIMES v) ¥R_PLUS (x ¥R_TIMES v)) (x ¥R_TIMES v)-->T632 ==> R_Rev(x ¥R_TIMES v) ¥R_PLUS (x ¥R_TIMES v) = R_0 EQUAL ==> (x ¥R_TIMES ((y ¥R_MINUS v) ¥R_PLUS v)) /= (x ¥R_TIMES y) ¥R_PLUS R_0 (x ¥R_TIMES y)-->T626 ==> (x ¥R_TIMES y) ¥R_PLUS R_0 = (x ¥R_TIMES y) ELEM ==> (x ¥R_TIMES ((y ¥R_MINUS v) ¥R_PLUS v)) /= (x ¥R_TIMES y) (y,v)-->T635 ==> y ¥R_MINUS v = y ¥R_PLUS R_Rev(v) EQUAL ==> (x ¥R_TIMES ((y ¥R_PLUS R_Rev(v)) ¥R_PLUS v)) /= (x ¥R_TIMES y) (y,R_Rev(v),v)-->T617 ==> ((y ¥R_PLUS R_Rev(v)) ¥R_PLUS v) = y ¥R_PLUS (R_Rev(v) ¥R_PLUS v) v-->T632 ==> R_Rev(v) ¥R_PLUS v = R_0 EQUAL ==> (x ¥R_TIMES (y ¥R_PLUS R_0)) /= (x ¥R_TIMES y) y-->T626 ==> y ¥R_PLUS R_0 = y EQUAL ==> false; Discharge ==> QED -- Theorem 644: [Additive inverse of real difference] ((X in Re) & (Y in Re)) ¥imp (R_Rev(X ¥R_MINUS Y) = (Y ¥R_MINUS X)). Proof: Suppose_not(x,y) ==> AUTO -- -- Assuming the negative of the statement to hold for $x$ and $y$, -- we reach a contradiction as follows. Theorem 614 -- ensures us that the difference $x ¥R_MINUS y$ belongs to $Re$. -- (x,y)-->T614 ==> AUTO -- -- Moreover, thanks to Theorem 642, -- each term of the form $R_Rev(z)$, with $z in Re$, can be -- rewritten as $R_Rev(R_1) ¥R_TIMES z$. -- x-->T642 ==> AUTO y-->T642 ==> AUTO (x ¥R_MINUS y)-->T642(*) ==> Stat1: (R_Rev(x ¥R_MINUS y) = (R_Rev(R_1) ¥R_TIMES (x ¥R_MINUS y))) & (R_Rev(x) = (R_Rev(R_1) ¥R_TIMES x)) & (R_Rev(y) = (R_Rev(R_1) ¥R_TIMES y)) -- -- After noticing that $R_Rev(R_1),R_Rev(x),R_Rev(y)$ belong to $Re$, -- we can distribute $R_Rev(R_1)$ over the difference $x ¥R_MINUS y$, -- thus obtaining for $R_Rev(x ¥R_MINUS y)$ the expression -- $(R_Rev(R_1) ¥R_TIMES x) ¥R_MINUS (R_Rev(R_1) ¥R_TIMES y)$, -- also writable as $R_Rev(x) ¥R_MINUS R_Rev(y)$, . -- Moreover, note that $R_Rev(R_Rev(y))=y$ by Theorem 633. -- ()-->T612 ==> AUTO (R_1,R_1)-->T613 ==> AUTO (R_Rev(R_1),x,y)-->T643(*) ==> Stat2: R_Rev(x ¥R_MINUS y) = ((R_Rev(R_1) ¥R_TIMES x) ¥R_MINUS (R_Rev(R_1) ¥R_TIMES y)) (x,x)-->T613 ==> AUTO (y,y)-->T613 ==> AUTO y-->T633(*) ==> (R_Rev(R_Rev(y)) = y) & (R_Rev(x) in Re) & (R_Rev(y) in Re) -- -- Hence, if we re-express difference $R_Rev(x) ¥R_MINUS R_Rev(y)$ -- in terms of addition and additive inverse operation, -- then by means of the commutativity of addition we get the desired contradiction. -- (R_Rev(x),R_Rev(y))-->T635(Stat2*) ==> (R_Rev(x) ¥R_MINUS R_Rev(y)) = (R_Rev(x) ¥R_PLUS R_Rev(R_Rev(y))) (R_Rev(x),y)-->T615(*) ==> (R_Rev(x) ¥R_PLUS y) = (y ¥R_PLUS R_Rev(x)) EQUAL(Stat1) ==> R_Rev(x ¥R_MINUS y) = (y ¥R_PLUS R_Rev(x)) (y,x)-->T635(*) ==> false; Discharge ==> QED -- Theorem 645: [Real reciprocal principle] ((X in Re) & (X /= R_0)) ¥imp (X ¥R_TIMES R_Recip(X) = R_1). Proof: Suppose_not(x) ==> AUTO x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) T545(*) ==> (Ra0Seq in RaCauchy) & (Ra1Seq in RaCauchy) Suppose ==> Ra_eqseq(arb(x),Ra0Seq) (arb(x),Ra0Seq)-->T610 ==> x = Cauchy_to_Re(Ra0Seq) Use_def(R_0) ==> false Discharge ==> not Ra_eqseq(arb(x),Ra0Seq) (arb(x),arb(x))-->T570 ==> Ras_Recip(arb(x)) in RaCauchy (arb(x),Ras_Recip(arb(x)))-->T561 ==> arb(x) ¥Ras_TIMES Ras_Recip(arb(x)) in RaCauchy (arb(x))-->T591 ==> Ra_eqseq(arb(x) ¥Ras_TIMES Ras_Recip(arb(x)),Ra1Seq) (arb(x) ¥Ras_TIMES Ras_Recip(arb(x)),Ra1Seq)-->T610 ==> Cauchy_to_Re(arb(x) ¥Ras_TIMES Ras_Recip(arb(x))) = Cauchy_to_Re(Ra1Seq) (arb(x),Ras_Recip(arb(x)))-->T619 ==> Cauchy_to_Re(arb(x)) ¥R_TIMES Cauchy_to_Re(Ras_Recip(arb(x))) = Cauchy_to_Re(Ra1Seq) Use_def(R_Recip) ==> Cauchy_to_Re(arb(x)) ¥R_TIMES R_Recip(x) = Cauchy_to_Re(Ra1Seq) Use_def(R_1) ==> Cauchy_to_Re(arb(x)) ¥R_TIMES R_Recip(x) = R_1 EQUAL ==> false; Discharge ==> QED -- Theorem 646: [Real division principle] ((X in Re) & (X /= R_0)) ¥imp (X ¥R_OVER X = R_1). Proof: Suppose_not(x) ==> AUTO Use_def(¥R_OVER) ==> x ¥R_TIMES R_Recip(x) /= R_1 x-->T645 ==> false; Discharge ==> QED -- Theorem 647: [Basic properties of the reciprocal for reals] ((X in Re) & (X /= R_0)) ¥imp ((R_Recip(X) in Re) & (R_Recip(X) /= R_0) & ((R_Recip(X) ¥R_TIMES X) = R_1)). Proof: Suppose_not(x) ==> AUTO x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) T545(*) ==> (Ra0Seq in RaCauchy) & (Ra1Seq in RaCauchy) Suppose ==> Ra_eqseq(arb(x),Ra0Seq) (arb(x),Ra0Seq)-->T610 ==> x = Cauchy_to_Re(Ra0Seq) Use_def(R_0) ==> false; Discharge ==> not Ra_eqseq(arb(x),Ra0Seq) Use_def(R_Recip) ==> R_Recip(x) = Cauchy_to_Re(Ras_Recip(arb(x))) (arb(x),arb(x))-->T570 ==> Ras_Recip(arb(x)) in RaCauchy (Ras_Recip(arb(x)),arb(x))-->T610 ==> R_Recip(x) in Re Suppose ==> (R_Recip(x) ¥R_TIMES x) /= R_1 x-->T645 ==> (x ¥R_TIMES R_Recip(x)) = R_1 (x,R_Recip(x))-->T618 ==> (x ¥R_TIMES R_Recip(x)) = (R_Recip(x) ¥R_TIMES x) EQUAL ==> false; Discharge ==> R_Recip(x) = R_0 Use_def(R_Recip) ==> Cauchy_to_Re(Ras_Recip(arb(x))) = R_0 Use_def(R_0) ==> Cauchy_to_Re(Ras_Recip(arb(x))) = Cauchy_to_Re(Ra0Seq) (Ras_Recip(arb(x)),Ra0Seq)-->T610 ==> Ra_eqseq(Ras_Recip(arb(x)),Ra0Seq) (arb(x))-->T546 ==> Ra_eqseq(arb(x),arb(x)) (arb(x),arb(x),Ras_Recip(arb(x)),Ra0Seq)-->T574 ==> Ra_eqseq(arb(x) ¥Ras_TIMES Ras_Recip(arb(x)),arb(x) ¥Ras_TIMES Ra0Seq) (arb(x))-->T586 ==> (arb(x) ¥Ras_TIMES Ra0Seq) = Ra0Seq EQUAL ==> Ra_eqseq(arb(x) ¥Ras_TIMES Ras_Recip(arb(x)),Ra0Seq) (arb(x))-->T591 ==> Ra_eqseq(arb(x) ¥Ras_TIMES Ras_Recip(arb(x)),Ra1Seq) T539(*) ==> (Ra1Seq in RaSeq) & (Ras_Recip(arb(x)) in RaSeq) & (Ra0Seq in RaSeq) Ra1Seq-->T546 ==> Ra_eqseq(Ra1Seq,Ra1Seq) (arb(x),Ras_Recip(arb(x)))-->T554 ==> (arb(x) ¥Ras_TIMES Ras_Recip(arb(x))) in RaSeq (arb(x) ¥Ras_TIMES Ras_Recip(arb(x)),Ra1Seq,Ra1Seq)-->T553 ==> Ra_eqseq(Ra1Seq,arb(x) ¥Ras_TIMES Ras_Recip(arb(x))) (Ra1Seq,arb(x) ¥Ras_TIMES Ras_Recip(arb(x)),Ra0Seq)-->T553 ==> Ra_eqseq(Ra0Seq,Ra1Seq) T603 ==> false; Discharge ==> QED -- Theorem 648: [Basic properties of the reciprocal for reals, 2] ((X in Re) & (X /= R_0)) ¥imp (R_Recip(R_Recip(X)) = X). Proof: Suppose_not(x) ==> AUTO x-->T647 ==> (R_Recip(x) in Re) & (R_Recip(x) /= R_0) (R_Recip(x))-->T647 ==> R_Recip(R_Recip(x)) in Re (R_Recip(R_Recip(x)),R_Recip(x),x)-->T620 ==> (R_Recip(R_Recip(x)) ¥R_TIMES R_Recip(x)) ¥R_TIMES x = R_Recip(R_Recip(x)) ¥R_TIMES (R_Recip(x) ¥R_TIMES x) x-->T647 ==> R_Recip(x) ¥R_TIMES x = R_1 (R_Recip(x))-->T647 ==> R_Recip(R_Recip(x)) ¥R_TIMES R_Recip(x) = R_1 EQUAL ==> R_1 ¥R_TIMES x = R_Recip(R_Recip(x)) ¥R_TIMES R_1 x-->T628 ==> x = R_Recip(R_Recip(x)) ¥R_TIMES R_1 (R_Recip(R_Recip(x)))-->T627 ==> R_Recip(R_Recip(x)) = R_Recip(R_Recip(x)) ¥R_TIMES R_1 Discharge ==> QED -- Theorem 649: [Reverse of real reciprocal] ((X in Re) & (X /= R_0)) ¥imp (R_Recip(R_Rev(X)) = R_Rev(R_Recip(X))). Proof: Suppose_not(x) ==> AUTO -- -- We will reduce the expression $(R_Rev(x) ¥R_TIMES R_Recip(R_Rev(x))) ¥R_TIMES R_Rev(R_Recip(x))$ -- to $R_Rev(R_Recip(x))$ on the one hand, and to $R_Recip(R_Recip(x))$ on the other. -- (x,x)-->T613(*) ==> Stat1: R_Rev(x) in Re Suppose ==> R_Rev(x) = R_0 x-->T626(*) ==> (x ¥R_PLUS R_0) = x x-->T636(*) ==> (x ¥R_PLUS R_Rev(x)) = R_0 EQUAL ==> false; Discharge ==> R_Rev(x) /= R_0 (R_Rev(x))-->T647(*) ==> Stat2: (R_Recip(R_Rev(x)) in Re) & (R_Recip(R_Rev(x)) /= R_0) (R_Rev(x))-->T645(*) ==> Stat3: (R_Rev(x) ¥R_TIMES R_Recip(R_Rev(x))) = R_1 x-->T647(*) ==> R_Recip(x) in Re (R_Recip(x),R_Recip(x))-->T613(*) ==> R_Rev(R_Recip(x)) in Re (R_Rev(R_Recip(x)))-->T628(*) ==> (R_1 ¥R_TIMES R_Rev(R_Recip(x))) = R_Rev(R_Recip(x)) EQUAL(Stat3) ==> (R_Rev(x) ¥R_TIMES R_Recip(R_Rev(x))) ¥R_TIMES R_Rev(R_Recip(x)) = R_Rev(R_Recip(x)) -- (R_Rev(x),R_Recip(R_Rev(x)))-->T618(*) ==> Stat4: (R_Rev(x) ¥R_TIMES R_Recip(R_Rev(x))) = (R_Recip(R_Rev(x)) ¥R_TIMES R_Rev(x)) (R_Recip(R_Rev(x)),R_Rev(x))-->T614(Stat1,Stat2*) ==> (R_Recip(R_Rev(x)) ¥R_TIMES R_Rev(x)) in Re (R_Recip(R_Rev(x)) ¥R_TIMES R_Rev(x),R_Recip(x))-->T623(*) ==> ((R_Recip(R_Rev(x)) ¥R_TIMES R_Rev(x)) ¥R_TIMES R_Rev(R_Recip(x))) = R_Rev((R_Recip(R_Rev(x)) ¥R_TIMES R_Rev(x)) ¥R_TIMES R_Recip(x)) (R_Recip(R_Rev(x)),R_Rev(x),R_Recip(x))-->T620(*) ==> ((R_Recip(R_Rev(x)) ¥R_TIMES R_Rev(x)) ¥R_TIMES R_Recip(x)) = (R_Recip(R_Rev(x)) ¥R_TIMES (R_Rev(x) ¥R_TIMES R_Recip(x))) (x,R_Recip(x))-->T623(*) ==> (R_Rev(x) ¥R_TIMES R_Recip(x)) = R_Rev(x ¥R_TIMES R_Recip(x)) x-->T645(*) ==> (x ¥R_TIMES R_Recip(x)) = R_1 T612(*) ==> R_1 in Re (R_Recip(R_Rev(x)),R_1)-->T623(*) ==> (R_Recip(R_Rev(x)) ¥R_TIMES R_Rev(R_1)) = R_Rev(R_Recip(R_Rev(x)) ¥R_TIMES R_1) (R_Recip(R_Rev(x)))-->T627(*) ==> (R_Recip(R_Rev(x)) ¥R_TIMES R_1) = R_Recip(R_Rev(x)) (R_Recip(R_Rev(x)))-->T633(*) ==> R_Rev(R_Rev(R_Recip(R_Rev(x)))) = R_Recip(R_Rev(x)) EQUAL(Stat4) ==> (R_Rev(x) ¥R_TIMES R_Recip(R_Rev(x))) ¥R_TIMES R_Rev(R_Recip(x)) = R_Recip(R_Rev(x)) Discharge ==> QED -- Theorem 650: [Real multiplicative Cancellation] ((X in Re) & (Y in Re) & (V in Re) & (X ¥R_TIMES V = Y ¥R_TIMES V) & (V /= R_0)) ¥imp (X = Y). Proof: Suppose_not(x,y,v) ==> (x in Re) & (y in Re) & (v in Re) & (x ¥R_TIMES v = y ¥R_TIMES v) & (v /= R_0) & (x /= y) (x,v)-->T614 ==> x ¥R_TIMES v in Re (y,v)-->T614 ==> y ¥R_TIMES v in Re EQUAL ==> ((x ¥R_TIMES v) ¥R_TIMES R_Recip(v)) = ((y ¥R_TIMES v) ¥R_TIMES R_Recip(v)) v-->T647 ==> (R_Recip(v) in Re) & (R_Recip(v) /= R_0) & (R_Recip(v) ¥R_TIMES v = R_1) (v,R_Recip(v))-->T618 ==> (v ¥R_TIMES R_Recip(v)) = R_1 (x,v,R_Recip(v))-->T620 ==> ((x ¥R_TIMES v) ¥R_TIMES R_Recip(v)) = (x ¥R_TIMES (v ¥R_TIMES R_Recip(v))) (y,v,R_Recip(v))-->T620 ==> ((y ¥R_TIMES v) ¥R_TIMES R_Recip(v)) = (y ¥R_TIMES (v ¥R_TIMES R_Recip(v))) EQUAL ==> (x ¥R_TIMES R_1) = (y ¥R_TIMES R_1) x-->T627 ==> x ¥R_TIMES R_1 = x y-->T627 ==> false; Discharge ==> QED -- Theorem 651: [Reals are closed under division] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp ((X ¥R_OVER Y in Re) & ((X /= R_0) ¥imp ((X ¥R_OVER Y /= R_0) & (X ¥R_TIMES Y /= R_0)))). Proof: Suppose_not(x,y) ==> AUTO y-->T647 ==> (R_Recip(y) in Re) & (R_Recip(y) /= R_0) T612 ==> R_0 in Re Suppose ==> x ¥R_OVER y notin Re Use_def(¥R_OVER) ==> x ¥R_TIMES R_Recip(y) notin Re (x,R_Recip(y))-->T614 ==> false; Discharge ==> (x /= R_0) & ((x ¥R_OVER y = R_0) or (x ¥R_TIMES y = R_0)) Suppose ==> x ¥R_OVER y = R_0 Use_def(¥R_OVER) ==> x ¥R_TIMES R_Recip(y) = R_0 (R_Recip(y))-->T625 ==> R_0 ¥R_TIMES R_Recip(y) = R_0 (x,R_0,R_Recip(y))-->T650 ==> false; Discharge ==> x ¥R_TIMES y = R_0 y-->T625 ==> R_0 ¥R_TIMES y = R_0 (x,R_0,y)-->T650 ==> false; Discharge ==> QED -- Theorem 652: [Real division is multiplication by the reciprocal] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp ((X ¥R_OVER Y) = (X ¥R_TIMES R_Recip(Y))). Proof: Suppose_not(x,y) ==> AUTO Use_def(¥R_OVER) ==> false; Discharge ==> QED -- Theorem 653: [The reciprocal of a real product is the product of the reciprocals] ((X in Re) & (Y in Re) & (X /= R_0) & (Y /= R_0)) ¥imp ((X ¥R_TIMES Y /= R_0) & R_Recip(X ¥R_TIMES Y) = R_Recip(X) ¥R_TIMES R_Recip(Y)). Proof: Suppose_not(x,y) ==> AUTO x-->T647 ==> (R_Recip(x) in Re) & (R_Recip(x) /= R_0) y-->T647 ==> (R_Recip(y) in Re) & (R_Recip(y) /= R_0) (R_Recip(x),R_Recip(y))-->T614 ==> R_Recip(x) ¥R_TIMES R_Recip(y) in Re (x,y)-->T614 ==> x ¥R_TIMES y in Re Suppose ==> x ¥R_TIMES y = R_0 y-->T625 ==> R_0 ¥R_TIMES y = R_0 T625 ==> R_0 in Re (x,R_0,y)-->T650 ==> false; Discharge ==> x ¥R_TIMES y /= R_0 (x ¥R_TIMES y)-->T647 ==> R_Recip(x ¥R_TIMES y) in Re (R_Recip(x ¥R_TIMES y),(R_Recip(x) ¥R_TIMES R_Recip(y)),y)-->T650 ==> R_Recip(x ¥R_TIMES y) ¥R_TIMES y /= (R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES y (R_Recip(x),R_Recip(y),y)-->T620 ==> (R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES y = R_Recip(x) ¥R_TIMES (R_Recip(y) ¥R_TIMES y) y-->T647 ==> R_Recip(y) ¥R_TIMES y = R_1 EQUAL ==> (R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES y = R_Recip(x) ¥R_TIMES R_1 (R_Recip(x))-->T627 ==> R_Recip(x) ¥R_TIMES R_1 = R_Recip(x) EQUAL ==> (R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES y = R_Recip(x) EQUAL ==> ((R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES y) ¥R_TIMES x = R_Recip(x) ¥R_TIMES x x-->T647 ==> ((R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES y) ¥R_TIMES x = R_1 (R_Recip(x),R_Recip(y))-->T613 ==> (R_Recip(x) ¥R_TIMES R_Recip(y)) in Re (R_Recip(x) ¥R_TIMES R_Recip(y),y,x)-->T620 ==> ((R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES y) ¥R_TIMES x = (R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES (y ¥R_TIMES x) (x,y)-->T618 ==> y ¥R_TIMES x = x ¥R_TIMES y EQUAL ==> (R_Recip(x) ¥R_TIMES R_Recip(y)) ¥R_TIMES (x ¥R_TIMES y) = R_1 y-->T632 ==> R_Recip(y) ¥R_TIMES y = R_1 (x,y)-->T613 ==> (x ¥R_TIMES y) in Re (x ¥R_TIMES y)-->T647 ==> R_Recip(x ¥R_TIMES y) ¥R_TIMES (x ¥R_TIMES y) = R_1 (R_Recip(x ¥R_TIMES y),R_Recip(x) ¥R_TIMES R_Recip(y),x ¥R_TIMES y)-->T650 ==> false; Discharge ==> QED -- Theorem 654: [Real multiplication-division commutativity] ((X in Re) & (Y in Re) & (Y /= R_0) & (V in Re) & (V /= R_0)) ¥imp (X ¥R_OVER (Y ¥R_TIMES V) = (X ¥R_OVER Y) ¥R_OVER V). Proof: Suppose_not(x,y,v) ==> AUTO (x,y)-->T651 ==> x ¥R_OVER y in Re (y,v)-->T651 ==> y ¥R_TIMES v /= R_0 (y,v)-->T614 ==> y ¥R_TIMES v in Re (x,y ¥R_TIMES v)-->T652 ==> (x ¥R_OVER (y ¥R_TIMES v)) = (x ¥R_TIMES R_Recip(y ¥R_TIMES v)) (x ¥R_OVER y,v)-->T652 ==> ((x ¥R_OVER y) ¥R_OVER v) = ((x ¥R_OVER y) ¥R_TIMES R_Recip(v)) (x,y)-->T652 ==>x ¥R_OVER y = x ¥R_TIMES R_Recip(y) EQUAL ==> (x ¥R_TIMES R_Recip(y ¥R_TIMES v)) /= ((x ¥R_TIMES R_Recip(y)) ¥R_TIMES R_Recip(v)) y-->T647 ==> R_Recip(y) in Re v-->T647 ==> R_Recip(v) in Re (x,R_Recip(y),R_Recip(v))-->T620 ==> (x ¥R_TIMES R_Recip(y ¥R_TIMES v)) /= (x ¥R_TIMES (R_Recip(y) ¥R_TIMES R_Recip(v))) (y ¥R_TIMES v)-->T647 ==> R_Recip(y ¥R_TIMES v) in Re (R_Recip(y),R_Recip(v))-->T614 ==> R_Recip(y) ¥R_TIMES R_Recip(v) in Re (x,R_Recip(y ¥R_TIMES v))-->T618 ==> x ¥R_TIMES R_Recip(y ¥R_TIMES v) = R_Recip(y ¥R_TIMES v) ¥R_TIMES x (x,R_Recip(y) ¥R_TIMES R_Recip(v))-->T618 ==> x ¥R_TIMES (R_Recip(y) ¥R_TIMES R_Recip(v)) = (R_Recip(y) ¥R_TIMES R_Recip(v)) ¥R_TIMES x (x,R_Recip(y),R_Recip(v))-->T620 ==> (x ¥R_TIMES R_Recip(y ¥R_TIMES v)) /= (x ¥R_TIMES (R_Recip(y) ¥R_TIMES R_Recip(v))) ELEM ==> (R_Recip(y) ¥R_TIMES R_Recip(v)) ¥R_TIMES x /= R_Recip(y ¥R_TIMES v) ¥R_TIMES x Suppose ==> R_Recip(y ¥R_TIMES v) = R_Recip(y) ¥R_TIMES R_Recip(v) EQUAL ==> false; Discharge ==> R_Recip(y ¥R_TIMES v) /= R_Recip(y) ¥R_TIMES R_Recip(v) (y,v)-->T653 ==> false; Discharge ==> QED -- Theorem 655: [A real divided by itself gives 1] ((X in Re) & (X /= R_0)) ¥imp (X ¥R_OVER X = R_1). Proof: Suppose_not(x) ==> AUTO Use_def(¥R_OVER) ==> x ¥R_TIMES R_Recip(x) /= R_1 x-->T645 ==> false; Discharge ==> QED -- Theorem 656: [Real reciprocal as a quotient] ((X in Re) & (X /= R_0)) ¥imp (R_Recip(X) = R_1 ¥R_OVER X). Proof: Suppose_not(x) ==> AUTO Use_def(¥R_OVER) ==> R_1 ¥R_OVER x = R_1 ¥R_TIMES R_Recip(x) x-->T647 ==> R_Recip(x) in Re (R_Recip(X))-->T628 ==> false; Discharge ==> QED -- Theorem 657: [Distributivity of division over addition] ((X in Re) & (Y in Re) & (V in Re) & (V /= R_0)) ¥imp ((X ¥R_PLUS Y) ¥R_OVER V = ((X ¥R_OVER V) ¥R_PLUS (Y ¥R_OVER V))). Proof: Suppose_not(x,y,v) ==> AUTO Use_def(¥R_OVER) ==> ((x ¥R_PLUS y) ¥R_TIMES R_Recip(v)) /= ((x ¥R_TIMES R_Recip(v)) ¥R_PLUS (y ¥R_TIMES R_Recip(v))) v-->T647 ==> R_Recip(v) in Re (x,y)-->T613 ==> x ¥R_PLUS y in Re (x,R_Recip(v))-->T618 ==> x ¥R_TIMES R_Recip(v) = R_Recip(v) ¥R_TIMES x (y,R_Recip(v))-->T618 ==> y ¥R_TIMES R_Recip(v) = R_Recip(v) ¥R_TIMES y (x ¥R_PLUS y,R_Recip(v))-->T618 ==> ((x ¥R_PLUS y) ¥R_TIMES R_Recip(v)) = (R_Recip(v) ¥R_TIMES (x ¥R_PLUS y)) EQUAL ==> ((x ¥R_TIMES R_Recip(v)) ¥R_PLUS (y ¥R_TIMES R_Recip(v))) = ((R_Recip(v) ¥R_TIMES x) ¥R_PLUS (R_Recip(v) ¥R_TIMES y)) EQUAL ==> (R_Recip(v) ¥R_TIMES (x ¥R_PLUS y)) /= ((R_Recip(v) ¥R_TIMES x) ¥R_PLUS (R_Recip(v) ¥R_TIMES y)) (R_Recip(v),x,y)-->T621 ==> false; Discharge ==> QED -- Theorem 658: [Real division reverses multiplication] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp ((X ¥R_TIMES Y) ¥R_OVER Y = X). Proof: Suppose_not(x,y) ==> AUTO Use_def(¥R_OVER) ==> (x ¥R_TIMES y) ¥R_TIMES R_Recip(y) /= x y-->T647 ==> R_Recip(y) in Re (x,y,R_Recip(y))-->T620 ==> x ¥R_TIMES (y ¥R_TIMES R_Recip(y)) /= x y-->T645 ==> y ¥R_TIMES R_Recip(y) = R_1 EQUAL ==> x ¥R_TIMES R_1 /= x x-->T627 ==> false; Discharge ==> QED -- Theorem 659: [Real division reverses multiplication,2] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp (X = (Y ¥R_TIMES (X ¥R_OVER Y))). Proof: Suppose_not(x,y) ==> AUTO Use_def(¥R_OVER) ==> (y ¥R_TIMES (x ¥R_TIMES R_Recip(y))) /= x y-->T647 ==> R_Recip(y) in Re (x,R_Recip(y))-->T618 ==> x ¥R_TIMES R_Recip(y) = R_Recip(y) ¥R_TIMES x EQUAL ==> (y ¥R_TIMES (R_Recip(y) ¥R_TIMES x)) /= x (y,R_Recip(y),x)-->T620 ==> (y ¥R_TIMES R_Recip(y)) ¥R_TIMES x /= x y-->T645 ==> y ¥R_TIMES R_Recip(y) = R_1 EQUAL ==> R_1 ¥R_TIMES x /= x x-->T628 ==> false; Discharge ==> QED -- Theorem 660: [Distributivity of division over subtraction] ((X in Re) & (Y in Re) & (V in Re) & (V /= R_0)) ¥imp (((X ¥R_MINUS Y) ¥R_OVER V) = ((X ¥R_OVER V) ¥R_MINUS (Y ¥R_OVER V))). Proof: Suppose_not(x,y,v) ==> AUTO Use_def(¥R_OVER) ==> ((x ¥R_MINUS y) ¥R_TIMES R_Recip(v)) /= ((x ¥R_TIMES R_Recip(v)) ¥R_MINUS (y ¥R_TIMES R_Recip(v))) v-->T647 ==> R_Recip(v) in Re (x,y)-->T614 ==> x ¥R_MINUS y in Re (x,R_Recip(v))-->T618 ==> x ¥R_TIMES R_Recip(v) = R_Recip(v) ¥R_TIMES x (y,R_Recip(v))-->T618 ==> y ¥R_TIMES R_Recip(v) = R_Recip(v) ¥R_TIMES y (x ¥R_MINUS y,R_Recip(v))-->T618 ==> ((x ¥R_MINUS y) ¥R_TIMES R_Recip(v)) = (R_Recip(v) ¥R_TIMES (x ¥R_MINUS y)) EQUAL ==> ((x ¥R_TIMES R_Recip(v)) ¥R_MINUS (y ¥R_TIMES R_Recip(v))) = ((R_Recip(v) ¥R_TIMES x) ¥R_MINUS (R_Recip(v) ¥R_TIMES y)) EQUAL ==> (R_Recip(v) ¥R_TIMES (x ¥R_MINUS y)) /= ((R_Recip(v) ¥R_TIMES x) ¥R_MINUS (R_Recip(v) ¥R_TIMES y)) (R_Recip(v),x,y)-->T643 ==> false; Discharge ==> QED -- Theorem 661: (X in Re) ¥imp ((R_Rev(X) = Cauchy_to_Re(arb(R_Rev(X)))) & Ra_eqseq(Ras_ABS(arb(X)),arb(Cauchy_to_Re(Ras_ABS(arb(X)))))). Proof: Suppose_not(x) ==> AUTO -- -- In spite of their different syntactic look, the two conclusions of this theorem -- are obtained by the same formal mechanism. Indeed, both $Ras_Rev(p)$ and $Ras_ABS(p)$ -- are rational Cauchy sequences when $p$ is a rational Cauchy sequence, hence in -- particular when $p=arb(x)$ for some real number $x$. -- Therefore, thanks to Theorem 611, if the operation $Cauchy_to_Re(y)$ is applied -- to either $Ras_Rev(arb(x))$ or $Ras_ABS(arb(x))$, we get the same result as we would -- obtain by applying the operation $Cauchy_to_Re(arb(Cauchy_to_Re(y)))$ to the -- same operand. -- (x,x)-->T613(*) ==> R_Rev(x) in Re (R_Rev(x))-->T611(*) ==> Stat1: (not Ra_eqseq(Ras_ABS(arb(x)),arb(Cauchy_to_Re(Ras_ABS(arb(x)))))) x-->T611(*) ==> arb(x) in RaCauchy (arb(x),arb(x))-->T556(Stat1*) ==> Stat2: Ras_ABS(arb(x)) in RaCauchy (Ras_ABS(arb(x)),Ras_ABS(arb(x)))-->T610(Stat2*) ==> Cauchy_to_Re(Ras_ABS(arb(x))) in Re (Cauchy_to_Re(Ras_ABS(arb(x))))-->T611(Stat2*) ==> arb(Cauchy_to_Re(Ras_ABS(arb(x)))) in RaCauchy (Ras_ABS(arb(x)),arb(Cauchy_to_Re(Ras_ABS(arb(x)))))-->T610(Stat1*) ==> Cauchy_to_Re(Ras_ABS(arb(x))) /= Cauchy_to_Re(arb(Cauchy_to_Re(Ras_ABS(arb(x))))) (Cauchy_to_Re(Ras_ABS(arb(x))))-->T611(Stat2*) ==> false; Discharge ==> QED -- Theorem 662: ((X in Re) & (Y in Re)) ¥imp Ra_eqseq((arb(X) ¥Ras_PLUS arb(Y)),arb(Cauchy_to_Re(arb(X) ¥Ras_PLUS arb(Y)))). Proof: Suppose_not(x,y) ==> AUTO ELEM ==> Stat1: (not Ra_eqseq(arb(x) ¥Ras_PLUS arb(y),arb(Cauchy_to_Re((arb(x) ¥Ras_PLUS arb(y)))))) x-->T611(*) ==> arb(x) in RaCauchy y-->T611(*) ==> arb(y) in RaCauchy (arb(x),arb(y))-->T556(Stat1*) ==> Stat2: (arb(x) ¥Ras_PLUS arb(y)) in RaCauchy (arb(x) ¥Ras_PLUS arb(y),arb(x) ¥Ras_PLUS arb(y))-->T610(Stat2*) ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) in Re (Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))-->T611(Stat2*) ==> arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))) in RaCauchy (arb(x) ¥Ras_PLUS arb(y),arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))))-->T610(Stat1*) ==> Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) /= Cauchy_to_Re(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))) (Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))-->T611(Stat2*) ==> false; Discharge ==> QED -- -- Our next group of theorems, all elementary, deal with real comparisons and a few elementary real inequalities. -- Theorem 663: [Any real $x$ or its reverse is non-negative, and if both are non-negative, then $x = 0$] (X in Re) ¥imp ((R_is_nonneg(X) or R_is_nonneg(R_Rev(X))) & ((R_is_nonneg(X) & R_is_nonneg(R_Rev(X))) ¥imp (X = R_0))). Proof: Suppose_not(x) ==> AUTO ELEM ==> Stat1: not((R_is_nonneg(x) or R_is_nonneg(R_Rev(x))) & ((R_is_nonneg(X) & R_is_nonneg(R_Rev(X))) ¥imp (X = R_0))) x-->T611 ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) (arb(x))-->T602 ==> ((Ra_eqseq(Ras_ABS(arb(x)),arb(x)) or Ra_eqseq(Ras_ABS(arb(x)),Ras_Rev(arb(x))))) & (((Ra_eqseq(Ras_ABS(arb(x)),arb(x)) & Ra_eqseq(Ras_ABS(arb(x)),Ras_Rev(arb(x))))) ¥imp Ra_eqseq(arb(x),Ra0Seq)) (arb(x))-->T604 ==> Ras_ABS(Ras_Rev(arb(x))) = Ras_ABS(arb(x)) EQUAL ==> ((Ra_eqseq(Ras_ABS(arb(x)),arb(x)) or Ra_eqseq(Ras_ABS(Ras_Rev(arb(x))),Ras_Rev(arb(x))))) & (((Ra_eqseq(Ras_ABS(arb(x)),arb(x)) & Ra_eqseq(Ras_ABS(Ras_Rev(arb(x))),Ras_Rev(arb(x))))) ¥imp Ra_eqseq(arb(x),Ra0Seq)) (arb(x),arb(x))-->T556(*) ==> Stat2: (Ras_ABS(arb(x)) in RaCauchy) & (Ras_Rev(arb(x)) in RaCauchy) (Ras_Rev(arb(x)))-->T556(*) ==> Ras_ABS(Ras_Rev(arb(x))) in RaCauchy (Ras_ABS(arb(x)),arb(x))-->T610(*) ==> Ra_eqseq(Ras_ABS(arb(x)),arb(x)) ¥eq (Cauchy_to_Re(Ras_ABS(arb(x))) = Cauchy_to_Re(arb(x))) (Ras_ABS(Ras_Rev(arb(x))),Ras_Rev(arb(x)))-->T610(*) ==> Ra_eqseq(Ras_ABS(Ras_Rev(arb(x))),Ras_Rev(arb(x))) ¥eq (Cauchy_to_Re(Ras_ABS(Ras_Rev(arb(x)))) = Cauchy_to_Re(Ras_Rev(arb(x)))) T545 ==> Ra0Seq in RaCauchy (arb(x),Ra0Seq)-->T610(*) ==> Ra_eqseq(arb(x),Ra0Seq) ¥eq (x = Cauchy_to_Re(Ra0Seq)) Use_def(R_0) ==> Ra_eqseq(arb(x),Ra0Seq) ¥eq (x = R_0) ELEM ==> ((Cauchy_to_Re(Ras_ABS(arb(x))) = x) or (Cauchy_to_Re(Ras_ABS(Ras_Rev(arb(x)))) = Cauchy_to_Re(Ras_Rev(arb(x))))) & (((Cauchy_to_Re(Ras_ABS(arb(x))) = x) & (Cauchy_to_Re(Ras_ABS(Ras_Rev(arb(x)))) = Cauchy_to_Re(Ras_Rev(arb(x))))) ¥imp Ra_eqseq(arb(x),Ra0Seq)) Use_def(R_Rev) ==> R_Rev(x) = Cauchy_to_Re(Ras_Rev(arb(x))) EQUAL ==> Stat3: ((Cauchy_to_Re(Ras_ABS(arb(x))) = x) or (Cauchy_to_Re(Ras_ABS(Ras_Rev(arb(x)))) = R_Rev(x))) & (((Cauchy_to_Re(Ras_ABS(arb(x))) = x) & (Cauchy_to_Re(Ras_ABS(Ras_Rev(arb(x)))) = R_Rev(x))) ¥imp (x = R_0)) Suppose ==> Cauchy_to_Re(Ras_ABS(arb(R_Rev(x)))) /= Cauchy_to_Re(Ras_ABS(Ras_Rev(arb(x)))) (x,x)-->T613(*) ==> R_Rev(x) in Re (R_Rev(x))-->T611(Stat3*) ==> arb(R_Rev(x)) in RaCauchy (arb(R_Rev(x)),arb(R_Rev(x)))-->T556(Stat3*) ==> Ras_ABS(arb(R_Rev(x))) in RaCauchy (Ras_Rev(arb(x)),Ras_Rev(arb(x)))-->T556(Stat2,Stat2*) ==> Ras_ABS(Ras_Rev(arb(x))) in RaCauchy (Ras_ABS(arb(R_Rev(x))),Ras_ABS(Ras_Rev(arb(x))))-->T610(Stat3*) ==> (not Ra_eqseq(Ras_ABS(arb(R_Rev(x))),Ras_ABS(Ras_Rev(arb(x))))) (arb(R_Rev(x)),Ras_Rev(arb(x)))-->T576(Stat2*) ==> (not Ra_eqseq(arb(R_Rev(x)),Ras_Rev(arb(x)))) (arb(R_Rev(x)),Ras_Rev(arb(x)))-->T610(Stat2*) ==> Stat4: Cauchy_to_Re(arb(R_Rev(x))) /= Cauchy_to_Re(Ras_Rev(arb(x))) x-->T661(*) ==> Cauchy_to_Re(arb(R_Rev(x))) = R_Rev(x) Use_def(R_Rev)(Stat4*) ==> false; Discharge ==> Stat5: Cauchy_to_Re(Ras_ABS(arb(R_Rev(x)))) = Cauchy_to_Re(Ras_ABS(Ras_Rev(arb(x)))) -- -- The sought contradiction now follows, from the very definition of the non-negativity predicate. -- --??Use_def(R_is_nonneg)(Stat5*) ==> false; Discharge ==> QED Use_def(R_is_nonneg) ==> Stat6: (R_is_nonneg(x) ¥eq (Cauchy_to_Re(Ras_ABS(arb(x))) = x)) & (R_is_nonneg(R_Rev(x)) ¥eq (Cauchy_to_Re(Ras_ABS(arb(R_Rev(x)))) = R_Rev(x))) (Stat3,Stat5,Stat6,Stat1*)Discharge ==> QED -- Theorem 664: [Each non-negative rational Cauchy sequences is equivalent to its own absolute value] (X in Re) ¥imp (R_is_nonneg(X) ¥eq Ra_eqseq(arb(X),Ras_ABS(arb(X)))). Proof: Suppose_not(x0) ==> AUTO Use_def(R_is_nonneg)(*) ==> Stat1: (x0 in Re) & ((Cauchy_to_Re(Ras_ABS(arb(x0))) = x0) ¥neq Ra_eqseq(arb(x0),Ras_ABS(arb(x0)))) x0-->T611(*) ==> Stat2: (arb(x0) in RaCauchy) & (Cauchy_to_Re(arb(x0)) = x0) (arb(x0),arb(x0))-->T556(Stat2*) ==> Ras_ABS(arb(x0)) in RaCauchy (arb(x0),Ras_ABS(arb(x0)))-->T610(*) ==> false; Discharge ==> QED -- Theorem 665: [The sum of two non-negative rational Cauchy sequences is equivalent to its own absolute value] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp Ra_eqseq(arb(X) ¥Ras_PLUS arb(Y),Ras_ABS(arb(X) ¥Ras_PLUS arb(Y))). Proof+: Suppose_not(x0,y0) ==> AUTO -- -- Reasoning by contradiction, we assume that $x0,y0$ are a counterexample -- to the assertion of this theorem. -- x0-->T611(*) ==> Stat1: arb(x0) in RaCauchy y0-->T611(*) ==> Stat2: arb(y0) in RaCauchy (arb(x0),arb(y0))-->T556(Stat1*) ==> Stat3: ((arb(x0) ¥Ras_PLUS arb(y0)) in RaCauchy) & (Ras_ABS(arb(x0)) in RaCauchy) (arb(x0) ¥Ras_PLUS arb(y0),arb(x0) ¥Ras_PLUS arb(y0))-->T556(Stat3*) ==> Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)) in RaCauchy ()-->T545 ==> AUTO T539(Stat1*) ==> Stat4: {Ra0Seq,arb(x0),arb(y0),arb(x0) ¥Ras_PLUS arb(y0),Ras_ABS(arb(x0)),Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0))} ¥incin RaSeq -- -- One trivial case can be discarded immediately: in a counterample $x0,y0$ to the assertion of this -- theorem, the rational Cauchy sequence $arb(y0)$ cannot be equivalent to $Ra0Seq$. -- Suppose ==> Ra_eqseq(arb(y0),Ra0Seq) (arb(x0),arb(x0))-->T607(Stat1*) ==> Ra_eqseq(arb(x0),arb(x0)) (arb(x0),arb(x0),arb(y0),Ra0Seq)-->T572(Stat1*) ==> Stat5: Ra_eqseq(arb(x0) ¥Ras_PLUS arb(y0),arb(x0) ¥Ras_PLUS Ra0Seq) (arb(x0))-->T605(Stat4,Stat4*) ==> Stat6: (arb(x0) ¥Ras_PLUS Ra0Seq) = arb(x0) EQUAL(Stat5) ==> Stat7: Ra_eqseq(arb(x0) ¥Ras_PLUS arb(y0),arb(x0)) x0-->T664(*) ==> Ra_eqseq(arb(x0),Ras_ABS(arb(x0))) (arb(x0) ¥Ras_PLUS arb(y0),arb(x0),Ras_ABS(arb(x0)))-->T553(Stat4*) ==> Ra_eqseq(Ras_ABS(arb(x0)),arb(x0) ¥Ras_PLUS arb(y0)) (arb(x0) ¥Ras_PLUS arb(y0),arb(x0) ¥Ras_PLUS Ra0Seq)-->T576(Stat3,Stat5,Stat1,Stat6*) ==> Ra_eqseq(Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)),Ras_ABS(arb(x0) ¥Ras_PLUS Ra0Seq)) EQUAL(Stat5) ==> Stat8: Ra_eqseq(Ras_ABS(arb(x0) ¥Ras_PLUS Ra0Seq),arb(x0) ¥Ras_PLUS arb(y0)) & (Ras_ABS(arb(x0) ¥Ras_PLUS Ra0Seq) = Ras_ABS(arb(x0))) (Stat3,Stat8*)ELEM ==> Ras_ABS(arb(x0) ¥Ras_PLUS Ra0Seq) in RaCauchy (Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)),Ras_ABS(arb(x0) ¥Ras_PLUS Ra0Seq),arb(x0) ¥Ras_PLUS arb(y0))-->T553(*) ==> false; Discharge ==> Stat9: (not Ra_eqseq(arb(y0),Ra0Seq)) -- -- Another trivial case can be discarded arguing in an entirely analogous fashion: -- in a counterample $x0,y0$ to the assertion of this theorem, the rational Cauchy sequence -- $arb(x0)$ cannot be equivalent to $Ra0Seq$. -- (arb(y0),arb(y0))-->T556(Stat2*) ==> Stat10: Ras_ABS(arb(y0)) in RaCauchy T539(Stat10*) ==> Stat11: Ras_ABS(arb(y0)) in RaSeq Suppose ==> Ra_eqseq(arb(x0),Ra0Seq) (arb(y0),arb(y0))-->T607(Stat1*) ==> Ra_eqseq(arb(y0),arb(y0)) (arb(x0),Ra0Seq,arb(y0),arb(y0))-->T572(Stat1*) ==> Stat12: Ra_eqseq(arb(x0) ¥Ras_PLUS arb(y0),Ra0Seq ¥Ras_PLUS arb(y0)) (Ra0Seq,arb(y0))-->T578(Stat4,Stat4*) ==> Stat13: (Ra0Seq ¥Ras_PLUS arb(y0)) = (arb(y0) ¥Ras_PLUS Ra0Seq) (arb(y0))-->T605(Stat4,Stat4*) ==> Stat14: (arb(y0) ¥Ras_PLUS Ra0Seq) = arb(y0) EQUAL(Stat12) ==> Stat15: Ra_eqseq(arb(x0) ¥Ras_PLUS arb(y0),arb(y0)) y0-->T664(*) ==> Ra_eqseq(arb(y0),Ras_ABS(arb(y0))) (arb(x0) ¥Ras_PLUS arb(y0),arb(y0),Ras_ABS(arb(y0)))-->T553(Stat4*) ==> Ra_eqseq(Ras_ABS(arb(y0)),arb(x0) ¥Ras_PLUS arb(y0)) (arb(x0) ¥Ras_PLUS arb(y0),Ra0Seq ¥Ras_PLUS arb(y0))-->T576(Stat3,Stat13,Stat14,Stat2,Stat12*) ==> Ra_eqseq(Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)),Ras_ABS(Ra0Seq ¥Ras_PLUS arb(y0))) EQUAL(Stat12) ==> Stat16: Ra_eqseq(Ras_ABS(Ra0Seq ¥Ras_PLUS arb(y0)),arb(x0) ¥Ras_PLUS arb(y0)) & (Ras_ABS(Ra0Seq ¥Ras_PLUS arb(y0)) = Ras_ABS(arb(y0))) (Stat10*)ELEM ==> Ras_ABS(Ra0Seq ¥Ras_PLUS arb(y0)) in RaCauchy (Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)),Ras_ABS(Ra0Seq ¥Ras_PLUS arb(y0)),arb(x0) ¥Ras_PLUS arb(y0))-->T553(*) ==> false; Discharge ==> Stat17: (not Ra_eqseq(arb(x0),Ra0Seq)) -- -- Knowing that neither of $arb(x0),arb(y0)$ can be equivalent to $Ra0Seq$, we can now -- exploit Theorem 598 to pick positive real numbers $eps0,eps1$ and unsigned integers -- $n0,n1$ so that all components of $arb(x0)$ which lie beyond the $n0$-th component -- have an absolute value greater than $eps0$ and they all have the same sign; and, likewise, -- all components of $arb(y0)$ which lie beyond the $n1$-th component -- have an absolute value greater than $eps1$ and they all have the same sign. -- (arb(x0))-->T598(Stat1,Stat17*) ==> Stat18: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS((arb(x0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i]) = if (((arb(x0))~[n]) ¥Ra_GE Ra_0) then ((arb(x0))~[i]) else Ra_Rev((arb(x0))~[i]) end if) )) (eps0,n0)-->Stat18(Stat18*) ==> (eps0 in Ra) & (n0 in Za) & (eps0 ¥Ra_GT Ra_0) & Stat19: (FORALL i in (Za - n0) | (Ra_ABS((arb(x0))~[i]) ¥Ra_GT eps0) & (Ra_ABS((arb(x0))~[i]) = if (((arb(x0))~[n0]) ¥Ra_GE Ra_0) then ((arb(x0))~[i]) else Ra_Rev((arb(x0))~[i]) end if) ) (arb(y0))-->T598(Stat2,Stat9*) ==> Stat20: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS((arb(y0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i]) = if (((arb(y0))~[n]) ¥Ra_GE Ra_0) then ((arb(y0))~[i]) else Ra_Rev((arb(y0))~[i]) end if) )) (eps1,n1)-->Stat20(Stat20*) ==> (eps1 in Ra) & (n1 in Za) & (eps1 ¥Ra_GT Ra_0) & Stat21: (FORALL i in (Za - n1) | (Ra_ABS((arb(y0))~[i]) ¥Ra_GT eps1) & (Ra_ABS((arb(y0))~[i]) = if (((arb(y0))~[n1]) ¥Ra_GE Ra_0) then ((arb(y0))~[i]) else Ra_Rev((arb(y0))~[i]) end if) ) -- -- Indicating by $n$ the greater of $n0,n1$ and by $eps$ the smaller of -- $eps0,eps1$, we hence have that all components of $arb(x0)$ which lie beyond the -- $n$-th component have an absolute value greater than $eps$ and they all have -- the same sign; and, likewise, all components of $arb(y0)$ which lie beyond the -- $n$-th component have an absolute value greater than $eps$ and they all have -- the same sign. -- Loc_def ==> Stat22: n = Un({n0,n1}) (n0,n1)-->T202(Stat22*) ==> Finite({n0,n1}) ({n0,n1})-->T320(Stat18*) ==> Un({n0,n1}) in Za (n0,n1)-->T106(Stat22*) ==> Stat23: (n0 ¥incin n) & (n1 ¥incin n) EQUAL(Stat22) ==> Stat24: n in Za n-->T237(Stat24*) ==> Stat25: (not Finite(Za - n)) Loc_def ==> Stat26: eps = if eps1 ¥Ra_GT eps0 then eps0 else eps1 end if Suppose ==> not((eps in Ra) & (eps ¥Ra_GT Ra_0)) Suppose ==> eps1 ¥Ra_GT eps0 (Stat26*)ELEM ==> eps = eps0 EQUAL(Stat18*) ==> false; Discharge ==> not(eps1 ¥Ra_GT eps0) (Stat26*)ELEM ==> eps = eps1 EQUAL(Stat20*) ==> false; Discharge ==> Stat27: (eps in Ra) & (eps ¥Ra_GT Ra_0) Ra_0-->T451(Stat27*) ==> Stat28: Ra_0 in Ra Suppose ==> Stat29: not(FORALL i in (Za - n) | (Ra_ABS((arb(x0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i]) = if (((arb(x0))~[n0]) ¥Ra_GE Ra_0) then ((arb(x0))~[i]) else Ra_Rev((arb(x0))~[i]) end if) ) i0-->Stat29(Stat22*) ==> (i0 in (Za - n0)) & (not((Ra_ABS((arb(x0))~[i0]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i0]) = if (((arb(x0))~[n0]) ¥Ra_GE Ra_0) then ((arb(x0))~[i0]) else Ra_Rev((arb(x0))~[i0]) end if))) i0-->Stat19(Stat29*) ==> Stat30: (Ra_ABS((arb(x0))~[i0]) ¥Ra_GT eps0) & (not(Ra_ABS((arb(x0))~[i0]) ¥Ra_GT eps)) Suppose ==> eps1 ¥Ra_GT eps0 (Stat26*)ELEM ==> eps = eps0 EQUAL(Stat30*) ==> false; Discharge ==> (not(eps1 ¥Ra_GT eps0)) & (eps = eps1) EQUAL(Stat30*) ==> (not(Ra_ABS((arb(x0))~[i0]) ¥Ra_GT eps1)) (arb(x0),i0)-->T540(Stat4*) ==> ((arb(x0))~[i0]) in Ra ((arb(x0))~[i0])-->T527(Stat30*) ==> Ra_ABS((arb(x0))~[i0]) in Ra (eps1,eps0)-->T478(Stat18*) ==> eps0 ¥Ra_GE eps1 (Ra_ABS((arb(x0))~[i0]),eps0,eps1)-->T509(Stat18*) ==> false; Discharge ==> Stat31: (FORALL i in (Za - n) | (Ra_ABS((arb(x0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i]) = if (((arb(x0))~[n0]) ¥Ra_GE Ra_0) then ((arb(x0))~[i]) else Ra_Rev((arb(x0))~[i]) end if) ) Suppose ==> Stat32: not(FORALL i in (Za - n) | (Ra_ABS((arb(y0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i]) = if (((arb(y0))~[n1]) ¥Ra_GE Ra_0) then ((arb(y0))~[i]) else Ra_Rev((arb(y0))~[i]) end if) ) i1-->Stat32(Stat23,Stat23*) ==> (i1 in (Za - n1)) & (not((Ra_ABS((arb(y0))~[i1]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i1]) = if (((arb(y0))~[n1]) ¥Ra_GE Ra_0) then ((arb(y0))~[i1]) else Ra_Rev((arb(y0))~[i1]) end if))) i1-->Stat21(Stat32*) ==> Stat33: (Ra_ABS((arb(y0))~[i1]) ¥Ra_GT eps1) & (not(Ra_ABS((arb(y0))~[i1]) ¥Ra_GT eps)) Suppose ==> not(eps1 ¥Ra_GT eps0) (Stat26*)ELEM ==> eps = eps1 EQUAL(Stat33*) ==> false; Discharge ==> (eps1 ¥Ra_GT eps0) & (eps = eps0) EQUAL(Stat33*) ==> (not(Ra_ABS((arb(y0))~[i1]) ¥Ra_GT eps0)) (arb(y0),i1)-->T540(Stat4*) ==> ((arb(y0))~[i1]) in Ra ((arb(y0))~[i1])-->T527(Stat33*) ==> Ra_ABS((arb(y0))~[i1]) in Ra (Ra_ABS((arb(y0))~[i1]),eps1,eps0)-->T511(Stat18*) ==> false; Discharge ==> Stat34: (FORALL i in (Za - n) | (Ra_ABS((arb(y0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i]) = if (((arb(y0))~[n1]) ¥Ra_GE Ra_0) then ((arb(y0))~[i]) else Ra_Rev((arb(y0))~[i]) end if) ) -- -- Note that in both cases "the same sign" actually means "positive sign", -- as a consequence of $arb(x0)$ and $arb(y0)$ being non-negative. -- Use_def(R_is_nonneg)(*) ==> Stat35: (Cauchy_to_Re(Ras_ABS(arb(x0))) = x0) & (Cauchy_to_Re(Ras_ABS(arb(y0))) = y0) T525 ==> Stat36: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) & Stat37: (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE x)) Suppose ==> Stat38: not(((eps ¥Ra_PLUS eps) in Ra) & ((eps ¥Ra_PLUS eps) ¥Ra_GT eps)) (eps,eps)-->T445(Stat27,Stat27*) ==> (eps ¥Ra_PLUS eps) in Ra eps-->Stat37(Stat27,Stat27*) ==> eps ¥Ra_LE eps (eps,eps)-->T473(Stat38*) ==> eps ¥Ra_GE eps (eps,eps,eps,Ra_0)-->T504(Stat27*) ==> (eps ¥Ra_PLUS eps) ¥Ra_GT (eps ¥Ra_PLUS Ra_0) eps-->T451(Stat27*) ==> (eps ¥Ra_PLUS Ra_0) = eps EQUAL(Stat38) ==> false; Discharge ==> Stat39: ((eps ¥Ra_PLUS eps) in Ra) & ((eps ¥Ra_PLUS eps) ¥Ra_GT eps) -- Suppose ==> Stat40: not(((arb(x0))~[n0]) ¥Ra_GE Ra_0) -- -- On the one hand, in fact, as far as $(arb(x0))~[n0]$ is concerned, if we assume that the sign -- is negative then, by expanding the definition of $R_is_nonneg(x0)$ in the initial -- definition, we get the equivalence of $Ras_ABS(arb(x0))$ with $arb(x0)$, -- and hence the finiteness of the set -- ${x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps}$. -- x0-->T611(*) ==> Stat41: Cauchy_to_Re(Ras_ABS(arb(x0))) = Cauchy_to_Re(arb(x0)) (Ras_ABS(arb(x0)),arb(x0))-->T610(Stat1,Stat3,Stat41*) ==> Stat42: Ra_eqseq(Ras_ABS(arb(x0)),arb(x0)) (Ras_ABS(arb(x0)),arb(x0))-->T541(Stat4,Stat42*) ==> Stat43: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps})) eps-->Stat43(Stat27,Stat27*) ==> Stat44: Finite({x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps}) --? Set_monot(Stat44*) ==> {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} ¥incin {x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} Set_monot(Stat44) ==> {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} ¥incin {x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} ({x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps},{x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps})-->T189(Stat43*) ==> Stat45: Finite({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps}) -- -- As a consequence, there is an $i2$ no smaller than $n$ in $Za$ satisfying -- $not(Ra_ABS(((Ras_ABS(arb(x0)))~[i2]) ¥Ra_MINUS ((arb(x0))~[i2])) ¥Ra_GT eps)$. -- By the above statement Stat31, such $i2$ must also satisfy the inequality -- $(Ra_ABS((arb(x0))~[i2]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i2]) = Ra_Rev((arb(x0))~[i2]))$. -- Suppose ==> Stat46: (FORALL i in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[i]) ¥Ra_MINUS ((arb(x0))~[i])) ¥Ra_GT eps) Suppose ==> Stat47: {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} incs (Za - n) ({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps},Za - n)-->T189(Stat47,Stat25,Stat45*) ==> false; Discharge ==> Stat48: not({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} incs (Za - n)) i4-->Stat48(Stat48*) ==> (i4 in (Za - n)) & Stat49: (i4 notin {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps}) i4-->Stat46(Stat48*) ==> Ra_ABS(((Ras_ABS(arb(x0)))~[i4]) ¥Ra_MINUS ((arb(x0))~[i4])) ¥Ra_GT eps i4-->Stat49(Stat48*) ==> false; Discharge ==> Stat50: not(FORALL i in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[i]) ¥Ra_MINUS ((arb(x0))~[i])) ¥Ra_GT eps) i2-->Stat50(Stat50*) ==> Stat51: (i2 in (Za - n)) & (not(Ra_ABS(((Ras_ABS(arb(x0)))~[i2]) ¥Ra_MINUS ((arb(x0))~[i2])) ¥Ra_GT eps)) i2-->Stat31(Stat40*) ==> (Ra_ABS((arb(x0))~[i2]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i2]) = Ra_Rev((arb(x0))~[i2])) -- -- Therefore, taking the definitions of $Ras_ARB(_)$ and of $_ ¥Ra_MINUS _$ -- into account, we get that -- $not(Ra_Rev(Ra_ABS((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) ¥Ra_GT eps)$, -- where $Ra_Rev((arb(x0))~[i2])$ exceeds the positive number $eps$. -- Use_def(¥Ra_MINUS)(Stat50*) ==> (((Ras_ABS(arb(x0)))~[i2]) ¥Ra_MINUS ((arb(x0))~[i2])) = (((Ras_ABS(arb(x0)))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) (arb(x0),arb(x0),i2)-->T555(Stat51,Stat4*) ==> ((Ras_ABS(arb(x0)))~[i2]) = Ra_ABS((arb(x0))~[i2]) EQUAL(Stat51) ==> (Ra_Rev((arb(x0))~[i2]) ¥Ra_GT eps) & (not(Ra_ABS(Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) ¥Ra_GT eps)) (arb(x0),i2)-->T540(Stat4,Stat51*) ==> ((arb(x0))~[i2]) in Ra ((arb(x0))~[i2])-->T452(Stat51*) ==> Ra_Rev((arb(x0))~[i2]) in Ra (Ra_Rev((arb(x0))~[i2]),eps,Ra_0)-->T498(Stat27*) ==> Ra_Rev((arb(x0))~[i2]) ¥Ra_GT Ra_0 (Ra_Rev((arb(x0))~[i2]))-->T482(Stat51*) ==> Ra_is_nonneg(Ra_Rev((arb(x0))~[i2])) (Ra_Rev((arb(x0))~[i2]),Ra_Rev((arb(x0))~[i2]))-->T469(Stat51*) ==> Ra_is_nonneg(Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2]))-->Stat36(Stat51) ==> Ra_ABS(Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) = (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) EQUAL(Stat51) ==> Stat52: not(Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2]) ¥Ra_GT eps) (Ra_Rev((arb(x0))~[i2]),eps)-->T473(Stat51*) ==> Ra_Rev((arb(x0))~[i2]) ¥Ra_GE eps (Ra_Rev((arb(x0))~[i2]),eps,Ra_Rev((arb(x0))~[i2]),eps)-->T504(Stat27*) ==> Stat53: (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) ¥Ra_GT (eps ¥Ra_PLUS eps) (Ra_Rev((arb(x0))~[i2]),Ra_Rev((arb(x0))~[i2]))-->T445(Stat51*) ==> Stat54: (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) in Ra (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2]),eps ¥Ra_PLUS eps,eps)-->T498(Stat27,Stat39,Stat54,Stat53,Stat52*) ==> false; Discharge ==> Stat55: ((arb(x0))~[n0]) ¥Ra_GE Ra_0 -- -- On the other hand, concerning $(arb(y0))~[n1]$, we can argue in an entirely -- analogous fashion to draw a contradiction from the temporary assumption that -- this quantity is negative. -- Suppose ==> Stat56: not(((arb(y0))~[n1]) ¥Ra_GE Ra_0) y0-->T611(*) ==> Stat57: Cauchy_to_Re(Ras_ABS(arb(y0))) = Cauchy_to_Re(arb(y0)) (Ras_ABS(arb(y0)),arb(y0))-->T610(Stat2,Stat10,Stat57*) ==> Stat58:Ra_eqseq(Ras_ABS(arb(y0)),arb(y0)) (Ras_ABS(arb(y0)),arb(y0))-->T541(Stat4,Stat11,Stat58*) ==> Stat59: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps})) eps-->Stat59(Stat27,Stat27*) ==> Stat60: Finite({x : x in Za | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps}) Set_monot(Stat60) ==> {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps} ¥incin {x : x in Za | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps} ({x : x in Za | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps},{x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps})-->T189(Stat60*) ==> Stat61: Finite({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps}) Suppose ==> Stat62: (FORALL i in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[i]) ¥Ra_MINUS ((arb(y0))~[i])) ¥Ra_GT eps) Suppose ==> Stat63: {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps} incs (Za - n) ({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps},Za - n)-->T189(Stat63,Stat25,Stat61*) ==> false; Discharge ==> Stat64: not({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps} incs (Za - n)) i5-->Stat64(Stat64*) ==> (i5 in (Za - n)) & Stat65: (i5 notin {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps}) i5-->Stat62(Stat64*) ==> Ra_ABS(((Ras_ABS(arb(y0)))~[i5]) ¥Ra_MINUS ((arb(y0))~[i5])) ¥Ra_GT eps i5-->Stat65(Stat64*) ==> false; Discharge ==> Stat66: not(FORALL i in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[i]) ¥Ra_MINUS ((arb(y0))~[i])) ¥Ra_GT eps) i3-->Stat66(Stat66*) ==> Stat67: (i3 in (Za - n)) & (not(Ra_ABS(((Ras_ABS(arb(y0)))~[i3]) ¥Ra_MINUS ((arb(y0))~[i3])) ¥Ra_GT eps)) i3-->Stat34(Stat56*) ==> (Ra_ABS((arb(y0))~[i3]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i3]) = Ra_Rev((arb(y0))~[i3])) Use_def(¥Ra_MINUS)(Stat66*) ==> (((Ras_ABS(arb(y0)))~[i3]) ¥Ra_MINUS ((arb(y0))~[i3])) = (((Ras_ABS(arb(y0)))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) (arb(y0),arb(y0),i3)-->T555(Stat67,Stat4*) ==> ((Ras_ABS(arb(y0)))~[i3]) = Ra_ABS((arb(y0))~[i3]) EQUAL(Stat67) ==> (Ra_Rev((arb(y0))~[i3]) ¥Ra_GT eps) & (not(Ra_ABS(Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) ¥Ra_GT eps)) (arb(y0),i3)-->T540(Stat4,Stat67*) ==> ((arb(y0))~[i3]) in Ra ((arb(y0))~[i3])-->T452(Stat67*) ==> Ra_Rev((arb(y0))~[i3]) in Ra (Ra_Rev((arb(y0))~[i3]),eps,Ra_0)-->T498(Stat27*) ==> Ra_Rev((arb(y0))~[i3]) ¥Ra_GT Ra_0 (Ra_Rev((arb(y0))~[i3]))-->T482(Stat67*) ==> Ra_is_nonneg(Ra_Rev((arb(y0))~[i3])) (Ra_Rev((arb(y0))~[i3]),Ra_Rev((arb(y0))~[i3]))-->T469(Stat67*) ==> Ra_is_nonneg(Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3]))-->Stat36(Stat67*) ==> Ra_ABS(Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) = (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) EQUAL(Stat67) ==> Stat68: not(Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3]) ¥Ra_GT eps) (Ra_Rev((arb(y0))~[i3]),eps)-->T473(Stat67*) ==> Ra_Rev((arb(y0))~[i3]) ¥Ra_GE eps (Ra_Rev((arb(y0))~[i3]),eps,Ra_Rev((arb(y0))~[i3]),eps)-->T504(Stat27*) ==> Stat69: (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) ¥Ra_GT (eps ¥Ra_PLUS eps) (Ra_Rev((arb(y0))~[i3]),Ra_Rev((arb(y0))~[i3]))-->T445(Stat67*) ==> Stat70: (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) in Ra (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3]),eps ¥Ra_PLUS eps,eps)-->T498(Stat39,Stat27,Stat70,Stat69,Stat68*) ==> false; Discharge ==> Stat71: ((arb(y0))~[n1]) ¥Ra_GE Ra_0 -- -- Now, thanks to Theorem 541, we can reformulate the condition for sequence -- inequivalence which is part of our initial hypothesis as the condition that the set -- ${i : i in Za | Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i])) ¥Ra_GT eps3}$ -- is infinite for a suitable positive rational number $eps3$. -- (arb(x0) ¥Ras_PLUS arb(y0),Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))-->T541(*) ==> Stat72: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({i : i in Za | Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i])) ¥Ra_GT eps})) eps3-->Stat72(Stat72*) ==> Stat73: (eps3 in Ra) & (eps3 ¥Ra_GT Ra_0) & (not Finite({i : i in Za | Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i])) ¥Ra_GT eps3})) -- -- However, it is easy to see that the quantity -- $Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[x]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0))~[x]))$ -- is null for every integer $i$ greater than or equal to $n$, and hence the set under -- examination must be a subset of $n$ which is finite. Hence it will be finite in its -- turn, which leads to a contradiction proving the desired assertion. -- (n,{i : i in Za | Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i])) ¥Ra_GT eps3})-->T189(Stat24,Stat73*) ==> Stat74: not(n incs {i : i in Za | Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i])) ¥Ra_GT eps3}) i6-->Stat74(Stat74*) ==> Stat75: (i6 in {i in Za | Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i])) ¥Ra_GT eps3}) & (i6 notin n) ()-->Stat76(Stat75*) ==> Stat76: (i6 in (Za - n)) & (Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])) ¥Ra_GT eps3) Suppose ==> ((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) = ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6]) (arb(x0) ¥Ras_PLUS arb(y0),i6)-->T540(Stat4,Stat76*) ==> ((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) in Ra (arb(x0) ¥Ras_PLUS arb(y0),arb(x0) ¥Ras_PLUS arb(y0))-->T554(Stat4,Stat4*) ==> (Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0))) in RaSeq (Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)),i6)-->T540(Stat76*) ==> ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6]) in Ra ((arb(x0) ¥Ras_PLUS arb(y0))~[i6],(Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])-->T454(Stat76*) ==> (((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])) in Ra (((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6]))-->T527(Stat76*) ==> Stat77: Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])) in Ra (Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])),eps3,Ra_0)-->T498(Stat76,Stat73,Stat77,Stat28*) ==> Stat78: Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])) ¥Ra_GT Ra_0 (Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])),Ra_0)-->T473(Stat78,Stat28*) ==> Stat79: Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])) /= Ra_0 ((arb(x0) ¥Ras_PLUS arb(y0))~[i6])-->T452(Stat76*) ==> ((((arb(x0) ¥Ras_PLUS arb(y0))~[i6])) ¥Ra_PLUS Ra_Rev(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]))) = Ra_0 T465(Stat79*) ==> Ra_is_nonneg(Ra_0) T525(Stat79*) ==> Stat80: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) Ra_0-->Stat80(Stat79*) ==> Ra_ABS(Ra_0) = Ra_0 EQUAL(Stat76) ==> Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_PLUS Ra_Rev((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])) = Ra_0 Use_def(¥Ra_MINUS)(Stat79*) ==> Ra_ABS(((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6])) = Ra_0 (Stat79*)ELEM ==> false; Discharge ==> Stat81: ((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) /= ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6]) (arb(x0),arb(y0),i6)-->T555(Stat4,Stat76*) ==> ((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) = (((arb(x0))~[i6]) ¥Ra_PLUS ((arb(y0))~[i6])) (arb(x0) ¥Ras_PLUS arb(y0),arb(x0) ¥Ras_PLUS arb(y0),i6)-->T555(Stat4,Stat76*) ==> ((Ras_ABS(arb(x0) ¥Ras_PLUS arb(y0)))~[i6]) = Ra_ABS((arb(x0) ¥Ras_PLUS arb(y0))~[i6]) EQUAL(Stat81) ==> Stat82: (((arb(x0))~[i6]) ¥Ra_PLUS ((arb(y0))~[i6])) /= Ra_ABS(((arb(x0))~[i6]) ¥Ra_PLUS ((arb(y0))~[i6])) -- -- -- Suppose ==> not((((arb(x0))~[i6]) in Ra) & Ra_is_nonneg(((arb(x0))~[i6]))) (arb(x0),i6)-->T540(Stat4,Stat76*) ==> ((arb(x0))~[i6]) in Ra i6-->Stat31(Stat76,Stat55*) ==> Ra_ABS((arb(x0))~[i6]) = ((arb(x0))~[i6]) ((arb(x0))~[i6])-->T528(Stat82*) ==> ((arb(x0))~[i6]) ¥Ra_GE Ra_0 ((arb(x0))~[i6])-->T482(Stat82*) ==> false; Discharge ==> (((arb(x0))~[i6]) in Ra) & Ra_is_nonneg(((arb(x0))~[i6])) Suppose ==> not((((arb(y0))~[i6]) in Ra) & Ra_is_nonneg(((arb(y0))~[i6]))) (arb(y0),i6)-->T540(Stat4,Stat76*) ==> ((arb(y0))~[i6]) in Ra i6-->Stat34(Stat76,Stat71*) ==> Ra_ABS((arb(y0))~[i6]) = ((arb(y0))~[i6]) ((arb(y0))~[i6])-->T528(Stat82*) ==> ((arb(y0))~[i6]) ¥Ra_GE Ra_0 ((arb(y0))~[i6])-->T482(Stat82*) ==> false; Discharge ==> (((arb(y0))~[i6]) in Ra) & Ra_is_nonneg(((arb(y0))~[i6])) ((arb(x0))~[i6],(arb(y0))~[i6])-->T469(Stat82*) ==> Stat83: Ra_is_nonneg(((arb(x0))~[i6]) ¥Ra_PLUS ((arb(y0))~[i6])) ((arb(x0))~[i6],(arb(y0))~[i6])-->T445(Stat82*) ==> (((arb(x0))~[i6]) ¥Ra_PLUS ((arb(y0))~[i6])) in Ra (((arb(x0))~[i6]) ¥Ra_PLUS ((arb(y0))~[i6]))-->T482(Stat83*) ==> (((arb(x0))~[i6]) ¥Ra_PLUS ((arb(y0))~[i6])) ¥Ra_GE Ra_0 (((arb(x0))~[i6]) ¥Ra_PLUS ((arb(y0))~[i6]))-->T528(Stat82*) ==> false; Discharge ==> QED -- Theorem 666: [The product of two non-negative rational Cauchy sequences is equivalent to its own absolute value] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp Ra_eqseq(arb(X) ¥Ras_TIMES arb(Y),Ras_ABS(arb(X) ¥Ras_TIMES arb(Y))). Proof+: Suppose_not(x0,y0) ==> AUTO -- -- Reasoning by contradiction, we assume that $x0,y0$ are a counterexample -- to the assertion of this theorem. -- x0-->T611(*) ==> Stat1: arb(x0) in RaCauchy y0-->T611(*) ==> Stat2: arb(y0) in RaCauchy (arb(x0),arb(y0))-->T556(Stat1*) ==> Stat3: Ras_ABS(arb(x0)) in RaCauchy (arb(x0),arb(y0))-->T561(Stat1*) ==> Stat4: (arb(x0) ¥Ras_TIMES arb(y0)) in RaCauchy (arb(x0) ¥Ras_TIMES arb(y0),arb(x0) ¥Ras_TIMES arb(y0))-->T556(Stat3*) ==> Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)) in RaCauchy ()-->T545 ==> AUTO T539(Stat1*) ==> Stat5: {Ra0Seq,arb(x0),arb(y0),arb(x0) ¥Ras_TIMES arb(y0),Ras_ABS(arb(x0)),Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0))} ¥incin RaSeq -- -- One trivial case can be discarded immediately: in a counterample $x0,y0$ to the assertion of this -- theorem, the rational Cauchy sequence $arb(y0)$ cannot be equivalent to $Ra0Seq$. -- Suppose ==> Ra_eqseq(arb(x0) ¥Ras_TIMES arb(y0),Ra0Seq) ()-->T596 ==> AUTO Ra0Seq-->T546(Stat5,Stat5*) ==> Ra_eqseq(Ra0Seq,Ra0Seq) EQUAL(Stat5) ==> Ra_eqseq(Ras_ABS(Ra0Seq),Ra0Seq) (arb(x0) ¥Ras_TIMES arb(y0))-->T597(Stat4*) ==> Ra_eqseq(Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)),Ra0Seq) (Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)),Ra0Seq,Ra0Seq)-->T553(Stat5*) ==> Ra_eqseq(Ra0Seq,Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0))) (arb(x0) ¥Ras_TIMES arb(y0),Ra0Seq,Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))-->T553(Stat5*) ==> Ra_eqseq(Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)),arb(x0) ¥Ras_TIMES arb(y0)) (arb(x0) ¥Ras_TIMES arb(y0))-->T546(Stat5,Stat5*) ==> Ra_eqseq(arb(x0) ¥Ras_TIMES arb(y0),arb(x0) ¥Ras_TIMES arb(y0)) (Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)),arb(x0) ¥Ras_TIMES arb(y0),arb(x0) ¥Ras_TIMES arb(y0))-->T553(*) ==> false; Discharge ==> (not Ra_eqseq(arb(x0) ¥Ras_TIMES arb(y0),Ra0Seq)) Suppose ==> Ra_eqseq(arb(y0),Ra0Seq) (arb(x0),arb(x0))-->T607(Stat1*) ==> Ra_eqseq(arb(x0),arb(x0)) (arb(x0),arb(x0),arb(y0),Ra0Seq)-->T574(Stat1*) ==> Ra_eqseq(arb(x0) ¥Ras_TIMES arb(y0),arb(x0) ¥Ras_TIMES Ra0Seq) (arb(x0))-->T586(Stat5,Stat5*) ==> (arb(x0) ¥Ras_TIMES Ra0Seq) = Ra0Seq EQUAL(Stat5) ==> false; Discharge ==> Stat6: (not Ra_eqseq(arb(y0),Ra0Seq)) -- -- Another trivial case can be discarded arguing in an entirely analogous fashion: -- in a counterample $x0,y0$ to the assertion of this theorem, the rational Cauchy sequence -- $arb(x0)$ cannot be equivalent to $Ra0Seq$. -- (arb(y0),arb(y0))-->T556(Stat2*) ==> Stat7: Ras_ABS(arb(y0)) in RaCauchy T539(Stat7*) ==> Stat8: Ras_ABS(arb(y0)) in RaSeq Suppose ==> Ra_eqseq(arb(x0),Ra0Seq) (arb(y0),arb(y0))-->T607(Stat1*) ==> Ra_eqseq(arb(y0),arb(y0)) (arb(x0),Ra0Seq,arb(y0),arb(y0))-->T574(Stat1*) ==> Ra_eqseq(arb(x0) ¥Ras_TIMES arb(y0),Ra0Seq ¥Ras_TIMES arb(y0)) (arb(y0))-->T586(Stat5,Stat5*) ==> (arb(y0) ¥Ras_TIMES Ra0Seq) = Ra0Seq (arb(y0),Ra0Seq)-->T579(Stat5,Stat5*) ==> (arb(y0) ¥Ras_TIMES Ra0Seq) = (Ra0Seq ¥Ras_TIMES arb(y0)) EQUAL(Stat5) ==> false; Discharge ==> Stat9: (not Ra_eqseq(arb(x0),Ra0Seq)) -- -- Knowing that neither of $arb(x0),arb(y0)$ can be equivalent to $Ra0Seq$, we can now -- exploit Theorem 598 to pick positive real numbers $eps0,eps1$ and unsigned integers -- $n0,n1$ so that all components of $arb(x0)$ which lie beyond the $n0$-th component -- have an absolute value greater than $eps0$ and they all have the same sign; and, likewise, -- all components of $arb(y0)$ which lie beyond the $n1$-th component -- have an absolute value greater than $eps1$ and they all have the same sign. -- (arb(x0))-->T598(Stat1,Stat9*) ==> Stat10: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS((arb(x0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i]) = if (((arb(x0))~[n]) ¥Ra_GE Ra_0) then ((arb(x0))~[i]) else Ra_Rev((arb(x0))~[i]) end if) )) (eps0,n0)-->Stat10(Stat10*) ==> (eps0 in Ra) & (n0 in Za) & (eps0 ¥Ra_GT Ra_0) & Stat11: (FORALL i in (Za - n0) | (Ra_ABS((arb(x0))~[i]) ¥Ra_GT eps0) & (Ra_ABS((arb(x0))~[i]) = if (((arb(x0))~[n0]) ¥Ra_GE Ra_0) then ((arb(x0))~[i]) else Ra_Rev((arb(x0))~[i]) end if) ) (arb(y0))-->T598(Stat2,Stat6*) ==> Stat12: (EXISTS eps in Ra, n in Za | (eps ¥Ra_GT Ra_0) & (FORALL i in (Za - n) | (Ra_ABS((arb(y0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i]) = if (((arb(y0))~[n]) ¥Ra_GE Ra_0) then ((arb(y0))~[i]) else Ra_Rev((arb(y0))~[i]) end if) )) (eps1,n1)-->Stat12(Stat12*) ==> (eps1 in Ra) & (n1 in Za) & (eps1 ¥Ra_GT Ra_0) & Stat13: (FORALL i in (Za - n1) | (Ra_ABS((arb(y0))~[i]) ¥Ra_GT eps1) & (Ra_ABS((arb(y0))~[i]) = if (((arb(y0))~[n1]) ¥Ra_GE Ra_0) then ((arb(y0))~[i]) else Ra_Rev((arb(y0))~[i]) end if) ) -- -- Indicating by $n$ the greater of $n0,n1$ and by $eps$ the smaller of -- $eps0,eps1$, we hence have that all components of $arb(x0)$ which lie beyond the -- $n$-th component have an absolute value greater than $eps$ and they all have -- the same sign; and, likewise, all components of $arb(y0)$ which lie beyond the -- $n$-th component have an absolute value greater than $eps$ and they all have -- the same sign. -- Loc_def ==> Stat14: n = Un({n0,n1}) (n0,n1)-->T202(Stat14*) ==> Finite({n0,n1}) ({n0,n1})-->T320(Stat10*) ==> Un({n0,n1}) in Za (n0,n1)-->T106(Stat14*) ==> Stat15: (n0 ¥incin n) & (n1 ¥incin n) EQUAL(Stat14) ==> Stat16: n in Za n-->T237(Stat16*) ==> Stat17: (not Finite(Za - n)) Loc_def ==> Stat18: eps = if eps1 ¥Ra_GT eps0 then eps0 else eps1 end if Suppose ==> not((eps in Ra) & (eps ¥Ra_GT Ra_0)) Suppose ==> eps1 ¥Ra_GT eps0 (Stat18*)ELEM ==> eps = eps0 EQUAL(Stat10*) ==> false; Discharge ==> not(eps1 ¥Ra_GT eps0) (Stat18*)ELEM ==> eps = eps1 EQUAL(Stat12*) ==> false; Discharge ==> Stat19: (eps in Ra) & (eps ¥Ra_GT Ra_0) Ra_0-->T451(Stat19*) ==> Stat20: Ra_0 in Ra Suppose ==> Stat21: not(FORALL i in (Za - n) | (Ra_ABS((arb(x0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i]) = if (((arb(x0))~[n0]) ¥Ra_GE Ra_0) then ((arb(x0))~[i]) else Ra_Rev((arb(x0))~[i]) end if) ) i0-->Stat21(Stat14*) ==> (i0 in (Za - n0)) & (not((Ra_ABS((arb(x0))~[i0]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i0]) = if (((arb(x0))~[n0]) ¥Ra_GE Ra_0) then ((arb(x0))~[i0]) else Ra_Rev((arb(x0))~[i0]) end if))) i0-->Stat11(Stat21*) ==> Stat22: (Ra_ABS((arb(x0))~[i0]) ¥Ra_GT eps0) & (not(Ra_ABS((arb(x0))~[i0]) ¥Ra_GT eps)) Suppose ==> eps1 ¥Ra_GT eps0 (Stat18*)ELEM ==> eps = eps0 EQUAL(Stat22*) ==> false; Discharge ==> (not(eps1 ¥Ra_GT eps0)) & (eps = eps1) EQUAL(Stat22*) ==> (not(Ra_ABS((arb(x0))~[i0]) ¥Ra_GT eps1)) (arb(x0),i0)-->T540(Stat5*) ==> ((arb(x0))~[i0]) in Ra ((arb(x0))~[i0])-->T527(Stat22*) ==> Ra_ABS((arb(x0))~[i0]) in Ra (eps1,eps0)-->T478(Stat10*) ==> eps0 ¥Ra_GE eps1 (Ra_ABS((arb(x0))~[i0]),eps0,eps1)-->T509(Stat10*) ==> false; Discharge ==> Stat23: (FORALL i in (Za - n) | (Ra_ABS((arb(x0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i]) = if (((arb(x0))~[n0]) ¥Ra_GE Ra_0) then ((arb(x0))~[i]) else Ra_Rev((arb(x0))~[i]) end if) ) Suppose ==> Stat24: not(FORALL i in (Za - n) | (Ra_ABS((arb(y0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i]) = if (((arb(y0))~[n1]) ¥Ra_GE Ra_0) then ((arb(y0))~[i]) else Ra_Rev((arb(y0))~[i]) end if) ) i1-->Stat24(Stat15,Stat15*) ==> (i1 in (Za - n1)) & (not((Ra_ABS((arb(y0))~[i1]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i1]) = if (((arb(y0))~[n1]) ¥Ra_GE Ra_0) then ((arb(y0))~[i1]) else Ra_Rev((arb(y0))~[i1]) end if))) i1-->Stat13(Stat24*) ==> Stat25: (Ra_ABS((arb(y0))~[i1]) ¥Ra_GT eps1) & (not(Ra_ABS((arb(y0))~[i1]) ¥Ra_GT eps)) Suppose ==> not(eps1 ¥Ra_GT eps0) (Stat18*)ELEM ==> eps = eps1 EQUAL(Stat25*) ==> false; Discharge ==> (eps1 ¥Ra_GT eps0) & (eps = eps0) EQUAL(Stat25*) ==> (not(Ra_ABS((arb(y0))~[i1]) ¥Ra_GT eps0)) (arb(y0),i1)-->T540(Stat5*) ==> ((arb(y0))~[i1]) in Ra ((arb(y0))~[i1])-->T527(Stat25*) ==> Ra_ABS((arb(y0))~[i1]) in Ra (Ra_ABS((arb(y0))~[i1]),eps1,eps0)-->T511(Stat10*) ==> false; Discharge ==> Stat26: (FORALL i in (Za - n) | (Ra_ABS((arb(y0))~[i]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i]) = if (((arb(y0))~[n1]) ¥Ra_GE Ra_0) then ((arb(y0))~[i]) else Ra_Rev((arb(y0))~[i]) end if) ) -- -- Note that in both cases "the same sign" actually means "positive sign", -- as a consequence of $arb(x0)$ and $arb(y0)$ being non-negative. -- Use_def(R_is_nonneg)(*) ==> Stat27: (Cauchy_to_Re(Ras_ABS(arb(x0))) = x0) & (Cauchy_to_Re(Ras_ABS(arb(y0))) = y0) T525 ==> Stat28: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) & Stat29: (FORALL x | (x in Ra) ¥imp (x ¥Ra_LE x)) Suppose ==> Stat30: not(((eps ¥Ra_PLUS eps) in Ra) & ((eps ¥Ra_PLUS eps) ¥Ra_GT eps)) (eps,eps)-->T445(Stat19,Stat19*) ==> (eps ¥Ra_PLUS eps) in Ra eps-->Stat29(Stat19,Stat19*) ==> eps ¥Ra_LE eps (eps,eps)-->T473(Stat30*) ==> eps ¥Ra_GE eps (eps,eps,eps,Ra_0)-->T504(Stat19*) ==> (eps ¥Ra_PLUS eps) ¥Ra_GT (eps ¥Ra_PLUS Ra_0) eps-->T451(Stat19*) ==> (eps ¥Ra_PLUS Ra_0) = eps EQUAL(Stat30) ==> false; Discharge ==> Stat31: ((eps ¥Ra_PLUS eps) in Ra) & ((eps ¥Ra_PLUS eps) ¥Ra_GT eps) -- Suppose ==> Stat32: not(((arb(x0))~[n0]) ¥Ra_GE Ra_0) -- -- On the one hand, in fact, as far as $(arb(x0))~[n0]$ is concerned, if we assume that the sign -- is negative then, by expanding the definition of $R_is_nonneg(x0)$ in the initial -- definition, we get the equivalence of $Ras_ABS(arb(x0))$ with $arb(x0)$, -- and hence the finiteness of the set -- ${x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps}$. -- x0-->T611(*) ==> Stat33: Cauchy_to_Re(Ras_ABS(arb(x0))) = Cauchy_to_Re(arb(x0)) (Ras_ABS(arb(x0)),arb(x0))-->T610(Stat1,Stat3,Stat33*) ==> Stat34: Ra_eqseq(Ras_ABS(arb(x0)),arb(x0)) (Ras_ABS(arb(x0)),arb(x0))-->T541(Stat5,Stat34*) ==> Stat35: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps})) eps-->Stat35(Stat19,Stat19*) ==> Stat36: Finite({x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps}) Set_monot(Stat36) ==> {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} ¥incin {x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} ({x : x in Za | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps},{x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps})-->T189(Stat35*) ==> Stat37: Finite({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps}) -- -- As a consequence, there is an $i2$ no smaller than $n$ in $Za$ satisfying -- $not(Ra_ABS(((Ras_ABS(arb(x0)))~[i2]) ¥Ra_MINUS ((arb(x0))~[i2])) ¥Ra_GT eps)$. -- By the above statement Stat23, such $i2$ must also satisfy the inequality -- $(Ra_ABS((arb(x0))~[i2]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i2]) = Ra_Rev((arb(x0))~[i2]))$. -- Suppose ==> Stat38: (FORALL i in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[i]) ¥Ra_MINUS ((arb(x0))~[i])) ¥Ra_GT eps) Suppose ==> Stat39: {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} incs (Za - n) ({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps},Za - n)-->T189(Stat39,Stat17,Stat37*) ==> false; Discharge ==> Stat40: not({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps} incs (Za - n)) i4-->Stat40(Stat40*) ==> (i4 in (Za - n)) & Stat41: (i4 notin {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[x]) ¥Ra_MINUS ((arb(x0))~[x])) ¥Ra_GT eps}) i4-->Stat38(Stat40*) ==> Ra_ABS(((Ras_ABS(arb(x0)))~[i4]) ¥Ra_MINUS ((arb(x0))~[i4])) ¥Ra_GT eps i4-->Stat41(Stat40*) ==> false; Discharge ==> Stat42: not(FORALL i in (Za - n) | Ra_ABS(((Ras_ABS(arb(x0)))~[i]) ¥Ra_MINUS ((arb(x0))~[i])) ¥Ra_GT eps) i2-->Stat42(Stat42*) ==> Stat43: (i2 in (Za - n)) & (not(Ra_ABS(((Ras_ABS(arb(x0)))~[i2]) ¥Ra_MINUS ((arb(x0))~[i2])) ¥Ra_GT eps)) i2-->Stat23(Stat32*) ==> (Ra_ABS((arb(x0))~[i2]) ¥Ra_GT eps) & (Ra_ABS((arb(x0))~[i2]) = Ra_Rev((arb(x0))~[i2])) -- -- Therefore, taking the definitions of $Ras_ARB(_)$ and of $_ ¥Ra_MINUS _$ -- into account, we get that -- $not(Ra_Rev(Ra_ABS((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) ¥Ra_GT eps)$, -- where $Ra_Rev((arb(x0))~[i2])$ exceeds the positive number $eps$. -- Use_def(¥Ra_MINUS)(Stat42*) ==> (((Ras_ABS(arb(x0)))~[i2]) ¥Ra_MINUS ((arb(x0))~[i2])) = (((Ras_ABS(arb(x0)))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) (arb(x0),arb(x0),i2)-->T555(Stat43,Stat5*) ==> ((Ras_ABS(arb(x0)))~[i2]) = Ra_ABS((arb(x0))~[i2]) EQUAL(Stat43) ==> (Ra_Rev((arb(x0))~[i2]) ¥Ra_GT eps) & (not(Ra_ABS(Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) ¥Ra_GT eps)) (arb(x0),i2)-->T540(Stat5,Stat43*) ==> ((arb(x0))~[i2]) in Ra ((arb(x0))~[i2])-->T452(Stat43*) ==> Ra_Rev((arb(x0))~[i2]) in Ra (Ra_Rev((arb(x0))~[i2]),eps,Ra_0)-->T498(Stat19*) ==> Ra_Rev((arb(x0))~[i2]) ¥Ra_GT Ra_0 (Ra_Rev((arb(x0))~[i2]))-->T482(Stat43*) ==> Ra_is_nonneg(Ra_Rev((arb(x0))~[i2])) (Ra_Rev((arb(x0))~[i2]),Ra_Rev((arb(x0))~[i2]))-->T469(Stat43*) ==> Ra_is_nonneg(Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2]))-->Stat28(Stat43) ==> Ra_ABS(Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) = (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) EQUAL(Stat43) ==> Stat44: not(Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2]) ¥Ra_GT eps) (Ra_Rev((arb(x0))~[i2]),eps)-->T473(Stat43*) ==> Ra_Rev((arb(x0))~[i2]) ¥Ra_GE eps (Ra_Rev((arb(x0))~[i2]),eps,Ra_Rev((arb(x0))~[i2]),eps)-->T504(Stat19*) ==> Stat45: (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) ¥Ra_GT (eps ¥Ra_PLUS eps) (Ra_Rev((arb(x0))~[i2]),Ra_Rev((arb(x0))~[i2]))-->T445(Stat43*) ==> Stat46: (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2])) in Ra (Ra_Rev((arb(x0))~[i2]) ¥Ra_PLUS Ra_Rev((arb(x0))~[i2]),eps ¥Ra_PLUS eps,eps)-->T498(Stat19,Stat31,Stat46,Stat45,Stat44*) ==> false; Discharge ==> Stat47: ((arb(x0))~[n0]) ¥Ra_GE Ra_0 -- -- On the other hand, concerning $(arb(y0))~[n1]$, we can argue in an entirely -- analogous fashion to draw a contradiction from the temporary assumption that -- this quantity is negative. -- Suppose ==> Stat48: not(((arb(y0))~[n1]) ¥Ra_GE Ra_0) y0-->T611(*) ==> Stat49: Cauchy_to_Re(Ras_ABS(arb(y0))) = Cauchy_to_Re(arb(y0)) (Ras_ABS(arb(y0)),arb(y0))-->T610(Stat2,Stat7,Stat49*) ==> Stat50:Ra_eqseq(Ras_ABS(arb(y0)),arb(y0)) (Ras_ABS(arb(y0)),arb(y0))-->T541(Stat5,Stat8,Stat50*) ==> Stat51: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps})) eps-->Stat51(Stat19,Stat19*) ==> Stat52: Finite({x : x in Za | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps}) Set_monot(Stat52) ==> {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps} ¥incin {x : x in Za | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps} ({x : x in Za | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps},{x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps})-->T189(Stat52*) ==> Stat53: Finite({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps}) Suppose ==> Stat54: (FORALL i in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[i]) ¥Ra_MINUS ((arb(y0))~[i])) ¥Ra_GT eps) Suppose ==> Stat55: {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps} incs (Za - n) ({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps},Za - n)-->T189(Stat55,Stat17,Stat53*) ==> false; Discharge ==> Stat56: not({x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps} incs (Za - n)) i5-->Stat56(Stat56*) ==> (i5 in (Za - n)) & Stat57: (i5 notin {x : x in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[x]) ¥Ra_MINUS ((arb(y0))~[x])) ¥Ra_GT eps}) i5-->Stat54(Stat56*) ==> Ra_ABS(((Ras_ABS(arb(y0)))~[i5]) ¥Ra_MINUS ((arb(y0))~[i5])) ¥Ra_GT eps i5-->Stat57(Stat56*) ==> false; Discharge ==> Stat58: not(FORALL i in (Za - n) | Ra_ABS(((Ras_ABS(arb(y0)))~[i]) ¥Ra_MINUS ((arb(y0))~[i])) ¥Ra_GT eps) i3-->Stat58(Stat58*) ==> Stat59: (i3 in (Za - n)) & (not(Ra_ABS(((Ras_ABS(arb(y0)))~[i3]) ¥Ra_MINUS ((arb(y0))~[i3])) ¥Ra_GT eps)) i3-->Stat26(Stat48*) ==> (Ra_ABS((arb(y0))~[i3]) ¥Ra_GT eps) & (Ra_ABS((arb(y0))~[i3]) = Ra_Rev((arb(y0))~[i3])) Use_def(¥Ra_MINUS)(Stat58*) ==> (((Ras_ABS(arb(y0)))~[i3]) ¥Ra_MINUS ((arb(y0))~[i3])) = (((Ras_ABS(arb(y0)))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) (arb(y0),arb(y0),i3)-->T555(Stat59,Stat5*) ==> ((Ras_ABS(arb(y0)))~[i3]) = Ra_ABS((arb(y0))~[i3]) EQUAL(Stat59) ==> (Ra_Rev((arb(y0))~[i3]) ¥Ra_GT eps) & (not(Ra_ABS(Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) ¥Ra_GT eps)) (arb(y0),i3)-->T540(Stat5,Stat59*) ==> ((arb(y0))~[i3]) in Ra ((arb(y0))~[i3])-->T452(Stat59*) ==> Ra_Rev((arb(y0))~[i3]) in Ra (Ra_Rev((arb(y0))~[i3]),eps,Ra_0)-->T498(Stat19*) ==> Ra_Rev((arb(y0))~[i3]) ¥Ra_GT Ra_0 (Ra_Rev((arb(y0))~[i3]))-->T482(Stat59*) ==> Ra_is_nonneg(Ra_Rev((arb(y0))~[i3])) (Ra_Rev((arb(y0))~[i3]),Ra_Rev((arb(y0))~[i3]))-->T469(Stat59*) ==> Ra_is_nonneg(Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3]))-->Stat28(Stat59*) ==> Ra_ABS(Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) = (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) EQUAL(Stat59) ==> Stat60: not(Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3]) ¥Ra_GT eps) (Ra_Rev((arb(y0))~[i3]),eps)-->T473(Stat59*) ==> Ra_Rev((arb(y0))~[i3]) ¥Ra_GE eps (Ra_Rev((arb(y0))~[i3]),eps,Ra_Rev((arb(y0))~[i3]),eps)-->T504(Stat19*) ==> Stat61: (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) ¥Ra_GT (eps ¥Ra_PLUS eps) (Ra_Rev((arb(y0))~[i3]),Ra_Rev((arb(y0))~[i3]))-->T445(Stat59*) ==> Stat62: (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3])) in Ra (Ra_Rev((arb(y0))~[i3]) ¥Ra_PLUS Ra_Rev((arb(y0))~[i3]),eps ¥Ra_PLUS eps,eps)-->T498(Stat31,Stat19,Stat62,Stat61,Stat60*) ==> false; Discharge ==> Stat63: ((arb(y0))~[n1]) ¥Ra_GE Ra_0 -- -- Now, thanks to Theorem 541, we can reformulate the condition for sequence -- inequivalence which is part of our initial hypothesis as the condition that the set -- ${i : i in Za | Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i])) ¥Ra_GT eps3}$ -- is infinite for a suitable positive rational number $eps3$. -- (arb(x0) ¥Ras_TIMES arb(y0),Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))-->T541(*) ==> Stat64: not(FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({i : i in Za | Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i])) ¥Ra_GT eps})) eps3-->Stat64(Stat64*) ==> Stat65: (eps3 in Ra) & (eps3 ¥Ra_GT Ra_0) & (not Finite({i : i in Za | Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i])) ¥Ra_GT eps3})) -- -- However, it is easy to see that the quantity -- $Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[x]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0))~[x]))$ -- is null for every integer $i$ greater than or equal to $n$, and hence the set under -- examination must be a subset of $n$ which is finite. Hence it will be finite in its -- turn, which leads to a contradiction proving the desired assertion. -- (n,{i : i in Za | Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i])) ¥Ra_GT eps3})-->T189(Stat16,Stat65*) ==> Stat66: not(n incs {i : i in Za | Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i])) ¥Ra_GT eps3}) i6-->Stat66(Stat66*) ==> Stat67: (i6 in {i in Za | Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i])) ¥Ra_GT eps3}) & (i6 notin n) ()-->Stat68(Stat67*) ==> Stat68: (i6 in (Za - n)) & (Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])) ¥Ra_GT eps3) Suppose ==> ((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) = ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6]) (arb(x0) ¥Ras_TIMES arb(y0),i6)-->T540(Stat5,Stat68*) ==> ((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) in Ra (arb(x0) ¥Ras_TIMES arb(y0),arb(x0) ¥Ras_TIMES arb(y0))-->T554(Stat5,Stat5*) ==> (Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0))) in RaSeq (Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)),i6)-->T540(Stat68*) ==> ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6]) in Ra ((arb(x0) ¥Ras_TIMES arb(y0))~[i6],(Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])-->T454(Stat68*) ==> (((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])) in Ra (((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6]))-->T527(Stat68*) ==> Stat69: Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])) in Ra (Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])),eps3,Ra_0)-->T498(Stat68,Stat65,Stat69,Stat20*) ==> Stat70: Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])) ¥Ra_GT Ra_0 (Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])),Ra_0)-->T473(Stat70,Stat20*) ==> Stat71: Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])) /= Ra_0 ((arb(x0) ¥Ras_TIMES arb(y0))~[i6])-->T452(Stat68*) ==> ((((arb(x0) ¥Ras_TIMES arb(y0))~[i6])) ¥Ra_PLUS Ra_Rev(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]))) = Ra_0 T465(Stat71*) ==> Ra_is_nonneg(Ra_0) T525(Stat71*) ==> Stat72: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) Ra_0-->Stat72(Stat71*) ==> Ra_ABS(Ra_0) = Ra_0 EQUAL(Stat68) ==> Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_PLUS Ra_Rev((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])) = Ra_0 Use_def(¥Ra_MINUS)(Stat71*) ==> Ra_ABS(((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) ¥Ra_MINUS ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6])) = Ra_0 (Stat71*)ELEM ==> false; Discharge ==> Stat73: ((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) /= ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6]) (arb(x0),arb(y0),i6)-->T555(Stat5,Stat68*) ==> ((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) = (((arb(x0))~[i6]) ¥Ra_TIMES ((arb(y0))~[i6])) (arb(x0) ¥Ras_TIMES arb(y0),arb(x0) ¥Ras_TIMES arb(y0),i6)-->T555(Stat5,Stat68*) ==> ((Ras_ABS(arb(x0) ¥Ras_TIMES arb(y0)))~[i6]) = Ra_ABS((arb(x0) ¥Ras_TIMES arb(y0))~[i6]) EQUAL(Stat73) ==> Stat74: (((arb(x0))~[i6]) ¥Ra_TIMES ((arb(y0))~[i6])) /= Ra_ABS(((arb(x0))~[i6]) ¥Ra_TIMES ((arb(y0))~[i6])) -- -- -- Suppose ==> not((((arb(x0))~[i6]) in Ra) & Ra_is_nonneg(((arb(x0))~[i6]))) (arb(x0),i6)-->T540(Stat5,Stat68*) ==> ((arb(x0))~[i6]) in Ra i6-->Stat23(Stat68,Stat47*) ==> Ra_ABS((arb(x0))~[i6]) = ((arb(x0))~[i6]) ((arb(x0))~[i6])-->T528(Stat74*) ==> ((arb(x0))~[i6]) ¥Ra_GE Ra_0 ((arb(x0))~[i6])-->T482(Stat74*) ==> false; Discharge ==> (((arb(x0))~[i6]) in Ra) & Ra_is_nonneg(((arb(x0))~[i6])) Suppose ==> not((((arb(y0))~[i6]) in Ra) & Ra_is_nonneg(((arb(y0))~[i6]))) (arb(y0),i6)-->T540(Stat5,Stat68*) ==> ((arb(y0))~[i6]) in Ra i6-->Stat26(Stat68,Stat63*) ==> Ra_ABS((arb(y0))~[i6]) = ((arb(y0))~[i6]) ((arb(y0))~[i6])-->T528(Stat74*) ==> ((arb(y0))~[i6]) ¥Ra_GE Ra_0 ((arb(y0))~[i6])-->T482(Stat74*) ==> false; Discharge ==> (((arb(y0))~[i6]) in Ra) & Ra_is_nonneg(((arb(y0))~[i6])) ((arb(x0))~[i6],(arb(y0))~[i6])-->T469(Stat74*) ==> Stat75: Ra_is_nonneg(((arb(x0))~[i6]) ¥Ra_TIMES ((arb(y0))~[i6])) ((arb(x0))~[i6],(arb(y0))~[i6])-->T448(Stat74*) ==> (((arb(x0))~[i6]) ¥Ra_TIMES ((arb(y0))~[i6])) in Ra (((arb(x0))~[i6]) ¥Ra_TIMES ((arb(y0))~[i6]))-->T482(Stat75*) ==> (((arb(x0))~[i6]) ¥Ra_TIMES ((arb(y0))~[i6])) ¥Ra_GE Ra_0 (((arb(x0))~[i6]) ¥Ra_TIMES ((arb(y0))~[i6]))-->T528(Stat74*) ==> false; Discharge ==> QED -- Theorem 667: [The sum and product of two non-negative reals is non-negative] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp (R_is_nonneg(X ¥R_PLUS Y) & R_is_nonneg(X ¥R_TIMES Y)). Proof: Suppose_not(x,y) ==> AUTO x-->T611(*) ==> Stat1: (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) y-->T611(*) ==> Stat2: (arb(y) in RaCauchy) & (arb(y) in RaSeq) & (Cauchy_to_Re(arb(y)) = y) Suppose ==> (not R_is_nonneg(x ¥R_PLUS y)) Use_def(¥R_PLUS) ==> (not R_is_nonneg(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))) Use_def(R_is_nonneg) ==> Stat3: (Cauchy_to_Re(Ras_ABS(arb(x))) = x) & (Cauchy_to_Re(Ras_ABS(arb(y))) = y) & (Cauchy_to_Re(Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))))) /= Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))) (arb(x),arb(y))-->T556(Stat1,Stat2*) ==> (arb(x) ¥Ras_PLUS arb(y)) in RaCauchy -- (arb(x) ¥Ras_PLUS arb(y),arb(x) ¥Ras_PLUS arb(y))-->T610(Stat3*) ==> (Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)) in Re) & (Ra_eqseq(arb(x) ¥Ras_PLUS arb(y),arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))))) (Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))-->T611(Stat3*) ==> arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))) in RaCauchy (arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))),arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))))-->T556(Stat3*) ==> Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))) in RaCauchy (Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))),arb(x) ¥Ras_PLUS arb(y))-->T610(Stat3*) ==> (not Ra_eqseq(Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))),arb(x) ¥Ras_PLUS arb(y))) Suppose ==> Ra_eqseq(Ras_ABS(arb(x) ¥Ras_PLUS arb(y)),Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))))) (arb(x) ¥Ras_PLUS arb(y),arb(x) ¥Ras_PLUS arb(y))-->T556(Stat3*) ==> Ras_ABS(arb(x) ¥Ras_PLUS arb(y)) in RaCauchy (x,y)-->T665(*) ==> Ra_eqseq(arb(x) ¥Ras_PLUS arb(y),Ras_ABS(arb(x) ¥Ras_PLUS arb(y))) T539(Stat3*) ==> ((arb(x) ¥Ras_PLUS arb(y)) in RaSeq) & ((Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))))) in RaSeq) & (Ras_ABS(arb(x) ¥Ras_PLUS arb(y)) in RaSeq) (arb(x) ¥Ras_PLUS arb(y),Ras_ABS(arb(x) ¥Ras_PLUS arb(y)),Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))))-->T553(Stat3*) ==> false; Discharge ==> (not Ra_eqseq(Ras_ABS(arb(x) ¥Ras_PLUS arb(y)),Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y)))))) (arb(x) ¥Ras_PLUS arb(y),arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))))-->T576(Stat3*) ==> (not Ra_eqseq(arb(x) ¥Ras_PLUS arb(y),arb(Cauchy_to_Re(arb(x) ¥Ras_PLUS arb(y))))) (x,y)-->T662(*) ==> false; Discharge ==> (not R_is_nonneg(x ¥R_TIMES y)) -- -- -- Use_def(¥R_TIMES) ==> (not R_is_nonneg(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)))) Use_def(R_is_nonneg) ==> Stat4: (Cauchy_to_Re(Ras_ABS(arb(x))) = x) & (Cauchy_to_Re(Ras_ABS(arb(y))) = y) & (Cauchy_to_Re(Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))))) /= Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))) x-->T611(*) ==> (arb(x) in RaCauchy) & (arb(x) in RaSeq) & (Cauchy_to_Re(arb(x)) = x) y-->T611(*) ==> (arb(y) in RaCauchy) & (arb(y) in RaSeq) & (Cauchy_to_Re(arb(y)) = y) (arb(x),arb(y))-->T561(Stat1,Stat2*) ==> (arb(x) ¥Ras_TIMES arb(y)) in RaCauchy -- (arb(x) ¥Ras_TIMES arb(y),arb(x) ¥Ras_TIMES arb(y))-->T610(Stat4*) ==> (Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)) in Re) & (Ra_eqseq(arb(x) ¥Ras_TIMES arb(y),arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))))) (Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)))-->T611(Stat4*) ==> arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))) in RaCauchy (arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))),arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))))-->T556(Stat4*) ==> Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)))) in RaCauchy (Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)))),arb(x) ¥Ras_TIMES arb(y))-->T610(Stat4*) ==> (not Ra_eqseq(Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)))),arb(x) ¥Ras_TIMES arb(y))) Suppose ==> Ra_eqseq(Ras_ABS(arb(x) ¥Ras_TIMES arb(y)),Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))))) (arb(x) ¥Ras_TIMES arb(y),arb(x) ¥Ras_TIMES arb(y))-->T556(Stat4*) ==> Ras_ABS(arb(x) ¥Ras_TIMES arb(y)) in RaCauchy (x,y)-->T666(*) ==> Ra_eqseq(arb(x) ¥Ras_TIMES arb(y),Ras_ABS(arb(x) ¥Ras_TIMES arb(y))) T539(Stat4*) ==> ((arb(x) ¥Ras_TIMES arb(y)) in RaSeq) & ((Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))))) in RaSeq) & (Ras_ABS(arb(x) ¥Ras_TIMES arb(y)) in RaSeq) (arb(x) ¥Ras_TIMES arb(y),Ras_ABS(arb(x) ¥Ras_TIMES arb(y)),Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)))))-->T553(Stat4*) ==> false; Discharge ==> (not Ra_eqseq(Ras_ABS(arb(x) ¥Ras_TIMES arb(y)),Ras_ABS(arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y)))))) (arb(x) ¥Ras_TIMES arb(y),arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))))-->T576(Stat4*) ==> (not Ra_eqseq(arb(x) ¥Ras_TIMES arb(y),arb(Cauchy_to_Re(arb(x) ¥Ras_TIMES arb(y))))) (x,y)-->T662(*) ==> false; Discharge ==> QED -- Theorem 668: [Transitivity of ordering] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GE Y) & (Y ¥R_GE Z)) ¥imp (X ¥R_GE Z). Proof: Suppose_not(x,y,z0) ==> AUTO Use_def(¥R_GE) ==> R_is_nonneg(x ¥R_MINUS y) & R_is_nonneg(y ¥R_MINUS z0) & (not R_is_nonneg(x ¥R_MINUS z0)) (x,y)-->T635 ==> x ¥R_MINUS y = x ¥R_PLUS R_Rev(y) (y,z0)-->T635 ==> y ¥R_MINUS z0 = y ¥R_PLUS R_Rev(z0) (x,z0)-->T635 ==> x ¥R_MINUS z0 = x ¥R_PLUS R_Rev(z0) EQUAL ==> R_is_nonneg(x ¥R_PLUS R_Rev(y)) & R_is_nonneg(y ¥R_PLUS R_Rev(z0)) & (not R_is_nonneg(x ¥R_PLUS R_Rev(z0))) y-->T613 ==> R_Rev(y) in Re z0-->T613 ==> R_Rev(z0) in Re (x,R_Rev(y))-->T613 ==> x ¥R_PLUS R_Rev(y) in Re (y,R_Rev(z0))-->T613 ==> y ¥R_PLUS R_Rev(z0) in Re (x ¥R_PLUS R_Rev(y),y ¥R_PLUS R_Rev(z0))-->T667 ==> R_is_nonneg((x ¥R_PLUS R_Rev(y)) ¥R_PLUS (y ¥R_PLUS R_Rev(z0))) (x,R_Rev(y),y ¥R_PLUS R_Rev(z0))-->T617 ==> (x ¥R_PLUS R_Rev(y)) ¥R_PLUS (y ¥R_PLUS R_Rev(z0)) = x ¥R_PLUS (R_Rev(y) ¥R_PLUS (y ¥R_PLUS R_Rev(z0))) (R_Rev(y),y,R_Rev(z0))-->T617 ==> R_Rev(y) ¥R_PLUS (y ¥R_PLUS R_Rev(z0)) = (R_Rev(y) ¥R_PLUS y) ¥R_PLUS R_Rev(z0) EQUAL ==> (x ¥R_PLUS R_Rev(y)) ¥R_PLUS (y ¥R_PLUS R_Rev(z0)) = (x ¥R_PLUS ((R_Rev(y) ¥R_PLUS y) ¥R_PLUS R_Rev(z0))) y-->T632 ==> R_Rev(y) ¥R_PLUS y = R_0 EQUAL ==> (x ¥R_PLUS R_Rev(y)) ¥R_PLUS (y ¥R_PLUS R_Rev(z0)) = (x ¥R_PLUS (R_0 ¥R_PLUS R_Rev(z0))) (R_Rev(z0))-->T626 ==> R_0 ¥R_PLUS R_Rev(z0) = R_Rev(z0) EQUAL ==> false; Discharge ==> QED -- Theorem 669: [The reals are a linearly ordered set] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_GT Y) or (X = Y) or (Y ¥R_GT X)). Proof: Suppose_not(x,y) ==> AUTO Use_def(¥R_GT)(*) ==> (x /= y) & (not R_is_nonneg(x ¥R_MINUS y)) & (not R_is_nonneg(y ¥R_MINUS x)) (x,y)-->T644(*) ==> R_Rev(x ¥R_MINUS y) = (y ¥R_MINUS x) EQUAL ==> (not R_is_nonneg(R_Rev(x ¥R_MINUS y))) (x,y)-->T614 ==> AUTO (x ¥R_MINUS y)-->T663(*) ==> false; Discharge ==> QED -- Theorem 670: [The reals are a linearly ordered set, 2] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_LT Y) or (X = Y) or (Y ¥R_LT X)). Proof: Suppose_not(x,y) ==> AUTO (y,x)-->T669(*) ==> (y ¥R_GT x) or (y = x) or (x ¥R_GT y) Use_def(¥R_GT)(*) ==> (R_is_nonneg(y ¥R_MINUS x) & (y /= x)) or (y = x) or (R_is_nonneg(x ¥R_MINUS y) & (x /= y)) Use_def(¥R_LT)(*) ==> false; Discharge ==> QED -- Theorem 671: [0 and 1 are non-negative reals] R_is_nonneg(R_0) & R_is_nonneg(R_1). Proof: Suppose_not ==> AUTO Use_def(R_is_nonneg) ==> Stat1: (Cauchy_to_Re(Ras_ABS(arb(R_0))) /= R_0) or (Cauchy_to_Re(Ras_ABS(arb(R_1))) /= R_1) ()-->T545 ==> AUTO ()-->T596 ==> AUTO Suppose ==> Stat2: Cauchy_to_Re(Ras_ABS(arb(R_0))) /= R_0 Use_def(R_0)(Stat2*) ==> Cauchy_to_Re(Ras_ABS(arb(Cauchy_to_Re(Ra0Seq)))) /= Cauchy_to_Re(Ra0Seq) (Ra0Seq,Ra0Seq)-->T610(Stat1*) ==> Stat3: Ra_eqseq(Ra0Seq,arb(Cauchy_to_Re(Ra0Seq))) & (Cauchy_to_Re(Ra0Seq) in Re) (Cauchy_to_Re(Ra0Seq))-->T611(Stat3*) ==> arb(Cauchy_to_Re(Ra0Seq)) in RaCauchy (Ra0Seq,arb(Cauchy_to_Re(Ra0Seq)))-->T576(Stat1*) ==> Ra_eqseq(Ras_ABS(Ra0Seq),Ras_ABS(arb(Cauchy_to_Re(Ra0Seq)))) EQUAL(Stat1) ==> Ra_eqseq(Ra0Seq,Ras_ABS(arb(Cauchy_to_Re(Ra0Seq)))) (arb(Cauchy_to_Re(Ra0Seq)),Ra0Seq)-->T556(Stat1*) ==> Ras_ABS(arb(Cauchy_to_Re(Ra0Seq))) in RaCauchy (Ra0Seq,Ras_ABS(arb(Cauchy_to_Re(Ra0Seq))))-->T610(Stat1*) ==> false; Discharge ==> Stat4: Cauchy_to_Re(Ras_ABS(arb(R_1))) /= R_1 -- -- The rest of this proof is entirely analogous to the part of it which precedes. -- Use_def(R_1)(Stat4*) ==> Cauchy_to_Re(Ras_ABS(arb(Cauchy_to_Re(Ra1Seq)))) /= Cauchy_to_Re(Ra1Seq) (Ra1Seq,Ra1Seq)-->T610(Stat1*) ==> Stat5: Ra_eqseq(Ra1Seq,arb(Cauchy_to_Re(Ra1Seq))) & (Cauchy_to_Re(Ra1Seq) in Re) (Cauchy_to_Re(Ra1Seq))-->T611(Stat5*) ==> arb(Cauchy_to_Re(Ra1Seq)) in RaCauchy (Ra1Seq,arb(Cauchy_to_Re(Ra1Seq)))-->T576(Stat1*) ==> Ra_eqseq(Ras_ABS(Ra1Seq),Ras_ABS(arb(Cauchy_to_Re(Ra1Seq)))) EQUAL(Stat1) ==> Ra_eqseq(Ra1Seq,Ras_ABS(arb(Cauchy_to_Re(Ra1Seq)))) (arb(Cauchy_to_Re(Ra1Seq)),Ra1Seq)-->T556(Stat1*) ==> Ras_ABS(arb(Cauchy_to_Re(Ra1Seq))) in RaCauchy (Ra1Seq,Ras_ABS(arb(Cauchy_to_Re(Ra1Seq))))-->T610(Stat1*) ==> false; Discharge ==> QED -- Theorem 672: [The reals are a linearly ordered set, 3] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_GE Y) or (Y ¥R_GE X)) & (((X ¥R_GE Y) & (Y ¥R_GE X)) ¥imp (X = Y))). Proof: Suppose_not(x,y) ==> AUTO Use_def(¥R_GE)(*) ==> not(((R_is_nonneg(x ¥R_MINUS y) or R_is_nonneg(y ¥R_MINUS x)) & ((R_is_nonneg(x ¥R_MINUS y) & R_is_nonneg(y ¥R_MINUS x)) ¥imp (x = y)))) (x,y)-->T669(*) ==> Stat1: (x ¥R_GT y) or (x = y) or (y ¥R_GT x) Use_def(¥R_GT)(Stat1*) ==> Stat2: (R_is_nonneg(x ¥R_MINUS y) & (x /= y)) or (x = y) or (R_is_nonneg(y ¥R_MINUS x) & (y /= x)) Suppose ==> not(R_is_nonneg(x ¥R_MINUS y) or R_is_nonneg(y ¥R_MINUS x)) (Stat2*)ELEM ==> x = y x-->T631(*) ==> (x ¥R_MINUS x) = R_0 T671(*) ==> R_is_nonneg(R_0) EQUAL(Stat2) ==> false; Discharge ==> Stat3: R_is_nonneg(x ¥R_MINUS y) & R_is_nonneg(y ¥R_MINUS x) & (x /= y) (x,y)-->T644(*) ==> R_Rev(x ¥R_MINUS y) = (y ¥R_MINUS x) EQUAL(Stat3*) ==> R_is_nonneg(R_Rev(x ¥R_MINUS y)) (x,y)-->T614(*) ==> (x ¥R_MINUS y) in Re (x ¥R_MINUS y)-->T663(Stat3*) ==> (x ¥R_MINUS y) = R_0 (x,y)-->T641(*) ==> x = y ¥R_PLUS (x ¥R_MINUS y) y-->T626(*) ==> y ¥R_PLUS R_0 = y EQUAL(Stat3) ==> false; Discharge ==> QED -- Theorem 673: [The ordering of reals is defined by the sign of their differences] ((((X in Re) & (Y in Re)) ¥imp ((X ¥R_GE Y) ¥eq R_is_nonneg(X ¥R_PLUS R_Rev(Y))))) & ((X ¥R_LE Y) ¥eq (Y ¥R_GE X)) & ((X ¥R_GT Y) ¥eq ((X ¥R_GE Y) & (X /= Y))) & ((X ¥R_LT Y) ¥eq (Y ¥R_GT X)). Proof: Suppose_not(x,y) ==> AUTO Use_def(¥R_LE) ==> (x ¥R_LE y) ¥eq R_is_nonneg(y ¥R_MINUS x) --?? Use_def(y ¥R_GE x) ==> AUTO Use_def(¥R_GE) ==> Stat1: (x ¥R_LE y) ¥eq (y ¥R_GE x) Use_def(¥R_LT) ==> (x ¥R_LT y) ¥eq (R_is_nonneg(y ¥R_MINUS x) & (x /= y)) Use_def(¥R_GT) ==> (y ¥R_GT x) ¥eq (R_is_nonneg(y ¥R_MINUS x) & (y /= x)) Use_def(¥R_GE) ==> (x ¥R_GE y) ¥eq R_is_nonneg(x ¥R_MINUS y) Use_def(¥R_GT) ==> Stat2: (x in Re) & (y in Re) & (not((x ¥R_GE y) ¥eq R_is_nonneg(x ¥R_PLUS R_Rev(y)))) (x,y)-->T635(Stat2*) ==> (x ¥R_MINUS y) = (x ¥R_PLUS R_Rev(y)) EQUAL ==> false; Discharge ==> QED -- Theorem 674: [Various basic properties of real comparison, quantified form] (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GE y) ¥eq R_is_nonneg(x ¥R_PLUS R_Rev(y)))) & (FORALL x, y | ((x ¥R_LE y) ¥eq (y ¥R_GE x))) & (FORALL x, y | ((x ¥R_GT y) ¥eq ((x ¥R_GE y) & (x /= y)))) & (FORALL x, y | ((x ¥R_LT y) ¥eq (y ¥R_GT x))) & (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq (R_is_nonneg(y ¥R_PLUS R_Rev(x))))) & (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_PLUS R_Rev(y)) & (x /= y)))) & (FORALL x, y | (((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_MINUS y) & (x /= y))))) & (FORALL x, y | ((x in Re) & (y in Re) & ((x = y) or (not(x ¥R_GE y)))) ¥imp (y ¥R_GE x)). Proof: Suppose_not ==> AUTO Suppose ==> Stat1: not(FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GE y) ¥eq R_is_nonneg(x ¥R_PLUS R_Rev(y)))) (x1,y1)-->Stat1(Stat1*) ==> (x1 in Re) & (y1 in Re) & (not((x1 ¥R_GE y1) ¥eq R_is_nonneg(x1 ¥R_PLUS R_Rev(y1)))) (x1,y1)-->T673(Stat1*) ==> false; Discharge ==> (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GE y) ¥eq R_is_nonneg(x ¥R_PLUS R_Rev(y)))) Suppose ==> Stat2: not(FORALL x, y | (x ¥R_LE y) ¥eq (y ¥R_GE x)) (x2,y2)-->Stat2(Stat2*) ==> not((x2 ¥R_LE y2) ¥eq (y2 ¥R_GE x2)) (x2,y2)-->T673(Stat2*) ==> false; Discharge ==> (FORALL x, y | (x ¥R_LE y) ¥eq (y ¥R_GE x)) Suppose ==> Stat3: not(FORALL x, y | (x ¥R_GT y) ¥eq ((x ¥R_GE y) & (x /= y))) (x3,y3)-->Stat3(Stat3*) ==> not((x3 ¥R_GT y3) ¥eq ((x3 ¥R_GE y3) & (x3 /= y3))) (x3,y3)-->T673(Stat3*) ==> false; Discharge ==> (FORALL x, y | (x ¥R_GT y) ¥eq ((x ¥R_GE y) & (x /= y))) Suppose ==> Stat4: not(FORALL x, y | (x ¥R_LT y) ¥eq (y ¥R_GT x)) (x4,y4)-->Stat4(Stat4*) ==> not((x4 ¥R_LT y4) ¥eq (y4 ¥R_GT x4)) (x4,y4)-->T673(Stat4*) ==> false; Discharge ==> (FORALL x, y | (x ¥R_LT y) ¥eq (y ¥R_GT x)) Suppose ==> Stat5: not(FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq (R_is_nonneg(y ¥R_PLUS R_Rev(x))))) (x5,y5)-->Stat5(Stat5*) ==> (x5 in Re) & (y5 in Re) & (not((x5 ¥R_LE y5) ¥eq (R_is_nonneg(y5 ¥R_PLUS R_Rev(x5))))) (x5,y5)-->T673(Stat5*) ==> (x5 ¥R_LE y5) ¥eq (y5 ¥R_GE x5) (y5,x5)-->T673(Stat5*) ==> false; Discharge ==> (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq (R_is_nonneg(y ¥R_PLUS R_Rev(x))))) Suppose ==> Stat6: not(FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_PLUS R_Rev(y)) & (x /= y)))) (x6,y6)-->Stat6(Stat6*) ==> not(((x6 in Re) & (y6 in Re)) ¥imp ((x6 ¥R_GT y6) ¥eq (R_is_nonneg(x6 ¥R_PLUS R_Rev(y6)) & (x6 /= y6)))) (x6,y6)-->T673(Stat6*) ==> (x6 ¥R_GT y6) ¥eq ((x6 ¥R_GE y6) & (x6 /= y6)) (x6,y6)-->T673(Stat6*) ==> false; Discharge ==> Stat7: (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_PLUS R_Rev(y)) & (x /= y)))) Suppose ==> Stat8: not(FORALL x, y | (((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_MINUS y) & (x /= y))))) (x7,y7)-->Stat8(Stat8*) ==> not(((x7 in Re) & (y7 in Re)) ¥imp ((x7 ¥R_GT y7) ¥eq (R_is_nonneg(x7 ¥R_MINUS y7) & (x7 /= y7)))) (x7,y7)-->T635(Stat8*) ==> (x7 ¥R_MINUS y7) = (x7 ¥R_PLUS R_Rev(y7)) EQUAL(Stat8) ==> not(((x7 in Re) & (y7 in Re)) ¥imp ((x7 ¥R_GT y7) ¥eq (R_is_nonneg(x7 ¥R_PLUS R_Rev(y7)) & (x7 /= y7)))) (x7,y7)-->Stat7(Stat8*) ==> false; Discharge ==> Stat9: not(FORALL x, y | ((x in Re) & (y in Re) & ((x = y) or (not(x ¥R_GE y)))) ¥imp (y ¥R_GE x)) (x8,y8)-->Stat9(Stat9*) ==> ((x8 in Re) & (y8 in Re) & ((x8 = y8) or (not(x8 ¥R_GE y8)))) & (not(y8 ¥R_GE x8)) (x8,y8)-->T672(Stat9*) ==> (x8 ¥R_GE y8) or (y8 ¥R_GE x8) Suppose ==> x8 = y8 EQUAL(Stat9) ==> false; Discharge ==> x8 /= y8 (Stat9*)Discharge ==> QED -- Theorem 675: [Various basic properties of real comparison] (((X in Re) & (Y in Re)) ¥imp ((X ¥R_GE Y) ¥eq R_is_nonneg(X ¥R_PLUS R_Rev(Y)))) & ((X ¥R_LE Y) ¥eq (Y ¥R_GE X)) & ((X ¥R_GT Y) ¥eq ((X ¥R_GE Y) & (X /= Y))) & ((X ¥R_LT Y) ¥eq (Y ¥R_GT X)) & (((X in Re) & (Y in Re)) ¥imp ((X ¥R_LE Y) ¥eq R_is_nonneg(Y ¥R_PLUS R_Rev(X)))) & (((X in Re) & (Y in Re)) ¥imp ((X ¥R_GT Y) ¥eq (R_is_nonneg(X ¥R_PLUS R_Rev(Y)) & (X /= Y)))) & (((X in Re) & (Y in Re)) ¥imp ((X ¥R_GT Y) ¥eq (R_is_nonneg(X ¥R_MINUS Y) & (X /= Y)))) & (((X in Re) & (Y in Re) & ((X = Y) or (not(X ¥R_GE Y)))) ¥imp (Y ¥R_GE X)). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T673(*) ==> not((((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq R_is_nonneg(y ¥R_PLUS R_Rev(x)))) & (((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_PLUS R_Rev(y)) & (x /= y)))) & (((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_MINUS y) & (x /= y)))) & (((x in Re) & (y in Re) & ((x = y) or (not(x ¥R_GE y)))) ¥imp (y ¥R_GE x))) T674(*) ==> Stat1: (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq (R_is_nonneg(y ¥R_PLUS R_Rev(x))))) & Stat2: (FORALL x, y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_PLUS R_Rev(y)) & (x /= y)))) & Stat3: (FORALL x, y | (((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_MINUS y) & (x /= y))))) & Stat4: (FORALL x, y | ((x in Re) & (y in Re) & ((x = y) or (not(x ¥R_GE y)))) ¥imp (y ¥R_GE x)) Suppose ==> Stat5: not(((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq R_is_nonneg(y ¥R_PLUS R_Rev(x)))) (x,y)-->Stat1(Stat5*) ==> false; Discharge ==> (((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq R_is_nonneg(y ¥R_PLUS R_Rev(x)))) Suppose ==> Stat6: not(((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_PLUS R_Rev(y)) & (x /= y)))) (x,y)-->Stat2(Stat6*) ==> false; Discharge ==> (((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_PLUS R_Rev(y)) & (x /= y)))) Suppose ==> Stat7: not(((x in Re) & (y in Re)) ¥imp ((x ¥R_GT y) ¥eq (R_is_nonneg(x ¥R_MINUS y) & (x /= y)))) (x,y)-->Stat3(Stat7*) ==> false; Discharge ==> Stat8: not(((x in Re) & (y in Re) & ((x = y) or (not(x ¥R_GE y)))) ¥imp (y ¥R_GE x)) (x,y)-->Stat4(Stat8*) ==> false; Discharge ==> QED -- Theorem 676: [Mutual exclusion of strict real comparators] ((X in Re) & (Y in Re) & (X ¥R_GT Y)) ¥imp (not(X ¥R_LT Y)). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T675(*) ==> (x ¥R_GE y) & (x /= y) & (y ¥R_GT x) (y,x)-->T675(*) ==> y ¥R_GE x (x,y)-->T672(*) ==> false Discharge ==> QED -- Theorem 677: [Transitivity of ordering, strict case] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GT Y) & (Y ¥R_GE Z)) ¥imp (X ¥R_GT Z). Proof: Suppose_not(x,y,z) ==> AUTO (x,y)-->T673(*) ==> x ¥R_GE y (x,y,z)-->T668(*) ==> x ¥R_GE z (x,z)-->T673(*) ==> x = z EQUAL ==> y ¥R_GE x (x,y)-->T672(*) ==> x = y EQUAL ==> x ¥R_GT x (x,x)-->T673(*) ==> false; Discharge ==> QED -- Theorem 678: [Transitivity of ordering, strict case 2] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GE Y) & (Y ¥R_GT Z)) ¥imp (X ¥R_GT Z). Proof: Suppose_not(x,y,z) ==> AUTO (y,z)-->T673(*) ==> y ¥R_GE z (x,y,z)-->T668(*) ==> x ¥R_GE z (x,z)-->T673(*) ==> x = z EQUAL ==> y ¥R_GE x (x,y)-->T672(*) ==> x = y EQUAL ==> x ¥R_GT x (x,x)-->T673(*) ==> false; Discharge ==> QED -- Theorem 679: [Transitivity of ordering,strict case 3] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GT Y) & (Y ¥R_GT Z)) ¥imp (X ¥R_GT Z). Proof: Suppose_not(x,y,z) ==> AUTO (x,y)-->T673(*) ==> x ¥R_GE y (x,y,z)-->T678(*) ==> false; Discharge ==> QED -- Theorem 680: [Greater_than_equal is greater-than and equal] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_GE Y) ¥eq ((X ¥R_GT Y) or (X = Y))). Proof: Suppose_not(x,y) ==> AUTO Suppose ==> x ¥R_GT y (x,y)-->T673(*) ==> false; Discharge ==> not(x ¥R_GT y) Suppose ==> x = y (x,x)-->T672(*) ==> x ¥R_GE x EQUAL ==> false; Discharge ==> (x /= y) & (x ¥R_GE y) (x,y)-->T673(*) ==> false; Discharge ==> QED -- Theorem 681: [Greater_than_equal is greater-than and equal] (X in Re) ¥imp ((X ¥R_GE R_0) ¥eq R_is_nonneg(X)). Proof: Suppose_not(x) ==> AUTO T612(*) ==> R_0 in Re (x,R_0)-->T680(*) ==> (x ¥R_GE R_0) ¥eq ((x ¥R_GT R_0) or (x = R_0)) (x,R_0)-->T675(*) ==> (x ¥R_GE R_0) ¥eq ((R_is_nonneg(x ¥R_MINUS R_0) & (x /= R_0)) or (x = R_0)) x-->T630(*) ==> (x ¥R_MINUS R_0) = x EQUAL ==> (x ¥R_GE R_0) ¥eq ((R_is_nonneg(x) & (x /= R_0)) or (x = R_0)) ELEM ==> Stat1: not(((R_is_nonneg(x) & (x /= R_0)) or (x = R_0)) ¥imp R_is_nonneg(x)) Suppose ==> x = R_0 ()-->T671 ==> AUTO EQUAL(Stat1) ==> false; Discharge ==> x /= R_0 (Stat1*)Discharge ==> QED -- Theorem 682: [Less_than_equal is less-than and equal] ((X in Re) & (Y in Re)) ¥imp ((X ¥R_LE Y) ¥eq ((X ¥R_LT Y) or (X = Y))). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T673(*) ==> ((x ¥R_LE y) ¥eq (y ¥R_GE x)) & ((x ¥R_LT y) ¥eq (y ¥R_GT x)) (y,x)-->T680(*) ==> false; Discharge ==> QED -- Theorem 683: [Transitivity of ordering by 'less than'] ((X in Re) & (Y in Re) & (Z in Re)) ¥imp (((X ¥R_LE Y) & (Y ¥R_LT Z)) ¥imp (X ¥R_LT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (y,z)-->T673(*) ==> z ¥R_GT y (x,y)-->T673(*) ==> y ¥R_GE x (x,z)-->T673(*) ==> not(z ¥R_GT x) (z,y,x)-->T677(*) ==> false; Discharge ==> QED -- Theorem 684: [Transitivity of ordering by 'less than', 2] ((X in Re) & (Y in Re) & (Z in Re)) ¥imp (((X ¥R_LT Y) & (Y ¥R_LE Z)) ¥imp (X ¥R_LT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (y,z)-->T673(*) ==> z ¥R_GE y (x,y)-->T673(*) ==> y ¥R_GT x (x,z)-->T673(*) ==> not(z ¥R_GT x) (z,y,x)-->T678(*) ==> false; Discharge ==> QED -- Theorem 685: [Transitivity of ordering by 'less than', 3] ((X in Re) & (Y in Re) & (Z in Re)) ¥imp (((X ¥R_LT Y) & (Y ¥R_LT Z)) ¥imp (X ¥R_LT Z)). Proof: Suppose_not(x,y,z) ==> AUTO (y,z)-->T673(*) ==> z ¥R_GT y (x,y)-->T673(*) ==> y ¥R_GT x (x,z)-->T673(*) ==> not(z ¥R_GT x) (z,y,x)-->T679(*) ==> false; Discharge ==> QED -- Theorem 686: [No real is less than itself] not(X ¥R_LT X). Proof: Suppose_not(x) ==> AUTO Use_def(¥R_LT) ==> false; Discharge ==> QED -- -- The properties of $¥R_GT$ are mirrored by properties of $¥R_LT$ and hence -- enable us to exploit, in connection with $Re$, the theory of linear orderings. -- Theorem 687: (FORALL x in Re, y in Re, z in Re | ((x ¥R_LT y) & (y ¥R_LT z)) ¥imp (x ¥R_LT z)). Proof: Suppose_not ==> Stat1: not(FORALL x in Re, y in Re, z in Re | ((x ¥R_LT y) & (y ¥R_LT z)) ¥imp (x ¥R_LT z)) (x,y,w)-->Stat1(*) ==> (x in Re) & (y in Re) & (w in Re) & (x ¥R_LT y) & (y ¥R_LT w) & (not (x ¥R_LT w)) (x,y)-->T675(*) ==> y ¥R_GT x (y,w)-->T675(*) ==> w ¥R_GT y (w,y)-->T675(*) ==> w ¥R_GE y (w,y,x)-->T678(*) ==> w ¥R_GT x (x,w)-->T675 ==> false; Discharge ==> QED -- Theorem 688: (FORALL x in Re | not(x ¥R_LT x)). Proof: Suppose_not ==> Stat1: not(FORALL x in Re | not(x ¥R_LT x)) x-->Stat1(*) ==> (x in Re) & (x ¥R_LT x) x-->T686(*) ==> false; Discharge ==> QED -- Theorem 689: (FORALL x in Re, y in Re | (x ¥R_LT y) or (x = y) or (y ¥R_LT x)). Proof: Suppose_not ==> Stat1: not(FORALL x in Re, y in Re | (x ¥R_LT y) or (x = y) or (y ¥R_LT x)) (x,y)-->Stat1(*) ==> (x in Re) & (y in Re) & (not((x ¥R_LT y) or (x = y) or (y ¥R_LT x))) (y,x)-->T672(*) ==> (y ¥R_GE x) or (x ¥R_GE y) Suppose ==> y ¥R_GE x (y,x)-->T675(*) ==> y ¥R_GT x (x,y)-->T675(*) ==> false; Discharge ==> (x ¥R_GE y) & (x /= y) (x,y)-->T675(*) ==> (x ¥R_GT y) (y,x)-->T675(*) ==> false; Discharge ==> QED -- APPLY(smaller_thryvar:smaller_Re,ubs_thryvar:ubs_Re,min_over_thryvar:min_over_Re,max_thryvar:max_Re,lub_thryvar:lub_Re) linear_order(s0->Re, arg1_bef_arg2(X,Y)->(X ¥R_LT Y)) ==> Theorem 690: (FORALL x, y | smaller_Re(x,y) = if ((x notin Re) & (y notin Re)) then Re elseif (x notin Re) then y elseif (y notin Re) then x elseif (x ¥R_LT y) then x else y end if) & (FORALL x, y | smaller_Re(x,y) = smaller_Re(y,x)) & (FORALL x, y | ({x,y} ¥incin Re) ¥imp (smaller_Re(x,y) in {x,y})) & (FORALL x | (x in next(Re)) ¥imp (smaller_Re(x,Re) = x)) & (FORALL x, y, z | smaller_Re(x,smaller_Re(y,z)) = smaller_Re(smaller_Re(x,y),z)) & (FORALL x, y | ((x in next(Re)) & (y in next(Re))) ¥imp (smaller_Re(x,y) in next(Re))) & (FORALL f,p,a | (Svm(f) & (range(f) ¥incin Re) & Finite(f)) ¥imp (((p in f) ¥imp (min_over_Re({p}) = (f~[car(p)]))) & (min_over_Re(f) = smaller_Re(min_over_Re(f ¥ON (domain(f) * a)),min_over_Re(f ¥ON (domain(f) - a)))))) & (FORALL f | (Svm(f) & (range(f) ¥incin Re) & Finite(f) & (f /= 0)) ¥imp (min_over_Re(f) in range(f))) & (FORALL x, y | ({x,y} ¥incin Re) ¥imp ((smaller_Re(x,y) = x) ¥eq ((x ¥R_LT y) or (x = y)))) & (FORALL t | ubs_Re(t) = {x in Re | (FORALL y in (t * Re) | smaller_Re(y,x) = y)}) & (FORALL t | max_Re(t) = arb({Re} + (t * ubs_Re(t)))) & (FORALL t | lub_Re(t) = arb({Re} + {x in ubs_Re(t) | ubs_Re(t) ¥incin ubs_Re({x})})) & (ubs_Re(0) = Re) & (max_Re(0) = Re) & (FORALL t | (ubs_Re(t) ¥incin Re) & (ubs_Re(t) = ubs_Re(t * Re)) & (max_Re(t) = max_Re(t * Re))) & (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin Re)) ¥imp ((max_Re(t) in t) & ((x = max_Re(t)) or ((x ¥R_LT max_Re(t)))))) -- Theorem 691: [Sign reversal inverts comparisons] ((X in Re) & (Y in Re) & (X ¥R_GE Y)) ¥imp (R_Rev(Y) ¥R_GE R_Rev(X)). Proof: Suppose_not(x,y) ==> AUTO (x,x)-->T613(*) ==> R_Rev(x) in Re (y,y)-->T613(*) ==> R_Rev(y) in Re (R_Rev(y),R_Rev(x))-->T675(*) ==> (not R_is_nonneg(R_Rev(y) ¥R_PLUS R_Rev(R_Rev(x)))) x-->T633(*) ==> R_Rev(R_Rev(x)) = x EQUAL ==> (not R_is_nonneg(R_Rev(y) ¥R_PLUS x)) (R_Rev(y),x)-->T613(*) ==> (R_Rev(y) ¥R_PLUS x) in Re (R_Rev(y) ¥R_PLUS x)-->T663(*) ==> R_is_nonneg(R_Rev(R_Rev(y) ¥R_PLUS x)) (R_Rev(y),x)-->T638(*) ==> R_Rev(R_Rev(y) ¥R_PLUS x) = R_Rev(R_Rev(y)) ¥R_PLUS R_Rev(x) y-->T633(*) ==> R_Rev(R_Rev(y)) = y EQUAL ==> R_is_nonneg(y ¥R_PLUS R_Rev(x)) (y,x)-->T675(*) ==> y ¥R_GE x (x,y)-->T672(*) ==> y = x (R_Rev(y),R_Rev(y))-->T672(*) ==> R_Rev(y) ¥R_GE R_Rev(y) EQUAL ==> false; Discharge ==> QED -- Theorem 692: [Sign reversal inverts comparisons,2] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_GE Y) ¥eq (R_Rev(Y) ¥R_GE R_Rev(X))) & ((X ¥R_GT Y) ¥eq (R_Rev(Y) ¥R_GT R_Rev(X)))). Proof: Suppose_not(x,y) ==> AUTO (y,y)-->T613(*) ==> R_Rev(y) in Re (x,x)-->T613(*) ==> R_Rev(x) in Re x-->T633(*) ==> R_Rev(R_Rev(x)) = x y-->T633(*) ==> R_Rev(R_Rev(y)) = y Suppose ==> not((x ¥R_GE y) ¥eq (R_Rev(y) ¥R_GE R_Rev(x))) (x,y)-->T691(*) ==> (R_Rev(y) ¥R_GE R_Rev(x)) & (not(x ¥R_GE y)) (R_Rev(y),R_Rev(x))-->T691(*) ==> R_Rev(R_Rev(x)) ¥R_GE R_Rev(R_Rev(y)) EQUAL ==> false; Discharge ==> not((x ¥R_GT y) ¥eq (R_Rev(y) ¥R_GT R_Rev(x))) Suppose ==> (x ¥R_GT y) & (not(R_Rev(y) ¥R_GT R_Rev(x))) (x,y)-->T675(*) ==> (x ¥R_GE y) & (x /= y) (x,y)-->T691(*) ==> R_Rev(y) ¥R_GE R_Rev(x) (R_Rev(y),R_Rev(x))-->T675(*) ==> R_Rev(y) = R_Rev(x) EQUAL ==> false; Discharge ==> (R_Rev(y) ¥R_GT R_Rev(x)) & (not(x ¥R_GT y)) (R_Rev(y),R_Rev(x))-->T675(*) ==> (R_Rev(y) ¥R_GE R_Rev(x)) & (R_Rev(y) /= R_Rev(x)) (R_Rev(y),R_Rev(x))-->T691(*) ==> R_Rev(R_Rev(x)) ¥R_GE R_Rev(R_Rev(y)) y-->T633(*) ==> R_Rev(R_Rev(y)) = y x-->T633(*) ==> R_Rev(R_Rev(x)) = x EQUAL ==> x ¥R_GE y (x,y)-->T675(*) ==> x = y EQUAL ==> false; Discharge ==> QED -- -- Theorem 693: [Properties of the real zero and unit] (R_Rev(R_0) = R_0) & (R_1 /= R_0) & (R_1 ¥R_GT R_0) & (R_Recip(R_1) = R_1). Proof: Suppose_not ==> AUTO ()-->T629 ==> AUTO ()-->T612 ==> AUTO Suppose ==> R_1 = R_0 Use_def(R_1) ==> Cauchy_to_Re(Ra1Seq) = R_0 Use_def(R_0) ==> R_0 = Cauchy_to_Re(Ra0Seq) EQUAL ==> Cauchy_to_Re(Ra1Seq) = Cauchy_to_Re(Ra0Seq) ()-->T545 ==> AUTO (Ra1Seq,Ra0Seq)-->T610(*) ==> Ra_eqseq(Ra1Seq,Ra0Seq) ()-->T539 ==> AUTO Ra_1-->T451 ==> (Ra_0 in Ra) & (Ra_1 in Ra) & (Ra_1 = (Ra_1 ¥Ra_PLUS Ra_0)) ()-->T481 ==> AUTO (Ra1Seq,Ra0Seq)-->T541(*) ==> Stat1: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({x : x in Za | Ra_ABS((Ra1Seq~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps})) (Ra_1,Ra_0)-->T519(*) ==> (Ra_1 ¥Ra_GT ((Ra_1 ¥Ra_PLUS Ra_0) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1))) & (((Ra_1 ¥Ra_PLUS Ra_0) ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) ¥Ra_GT Ra_0) Loc_def ==> eps = (Ra_1 ¥Ra_OVER (Ra_1 ¥Ra_PLUS Ra_1)) EQUAL ==> Stat2: (Ra_1 ¥Ra_GT eps) & (eps ¥Ra_GT Ra_0) Ra_1-->T520(*) ==> eps in Ra eps-->Stat1(*) ==> Finite({x : x in Za | Ra_ABS((Ra1Seq~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps}) 0-->T206(*) ==> (not Finite(Za)) ({x : x in Za | Ra_ABS((Ra1Seq~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps},Za)-->T189(Stat1*) ==> Stat3: not({x : x in Za | Ra_ABS((Ra1Seq~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps} incs Za) i-->Stat3(Stat3*) ==> Stat4: (i notin {x : x in Za | Ra_ABS((Ra1Seq~[x]) ¥Ra_MINUS (Ra0Seq~[x])) ¥Ra_GT eps}) & (i in Za) i-->Stat4(Stat4*) ==> not(Ra_ABS((Ra1Seq~[i]) ¥Ra_MINUS (Ra0Seq~[i])) ¥Ra_GT eps) i-->T548(Stat4*) ==> ((Ra0Seq~[i]) = Ra_0) & ((Ra1Seq~[i]) = Ra_1) EQUAL(Stat4) ==> not(Ra_ABS(Ra_1 ¥Ra_MINUS Ra_0) ¥Ra_GT eps) Use_def(¥Ra_MINUS)(Stat4*) ==> not(Ra_ABS(Ra_1 ¥Ra_PLUS Ra_Rev(Ra_0)) ¥Ra_GT eps) EQUAL ==> Stat5: not(Ra_ABS(Ra_1) ¥Ra_GT eps) T465(Stat6) ==> Stat6: Ra_is_nonneg(Ra_1) T525(Stat6) ==> Stat7: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) Ra_1-->Stat7(Stat6*) ==> Stat8: Ra_ABS(Ra_1) = Ra_1 EQUAL(Stat2,Stat5,Stat8) ==> false; Discharge ==> (R_1 /= R_0) & (not((R_1 ¥R_GT R_0) & (R_Recip(R_1) = R_1))) Suppose ==> (not (R_1 ¥R_GT R_0)) (R_1,R_0)-->T675(*) ==> (not R_is_nonneg(R_1 ¥R_PLUS R_Rev(R_0))) R_1-->T626(*) ==> (R_1 ¥R_PLUS R_0) = R_1 ()-->T671 ==> AUTO EQUAL ==> false; Discharge ==> R_Recip(R_1) /= R_1 R_1-->T645(*) ==> (R_1 ¥R_TIMES R_Recip(R_1)) = R_1 R_1-->T647(*) ==> R_Recip(R_1) in Re (R_Recip(R_1))-->T628(*) ==> false; Discharge ==> QED -- Theorem 694: [Monotonicity of addition over 2nd argument] ((X in Re) & (XP in Re) & (YP in Re) & (XP ¥R_GE YP)) ¥imp ((X ¥R_PLUS XP) ¥R_GE (X ¥R_PLUS YP)). Proof: Suppose_not(x,xp,yp) ==> AUTO Use_def(¥R_GE) ==> Stat1: (x in Re) & (xp in Re) & (yp in Re) & R_is_nonneg(xp ¥R_MINUS yp) & (not R_is_nonneg((x ¥R_PLUS xp) ¥R_MINUS (x ¥R_PLUS yp))) (x,xp)-->T615(Stat1,Stat1*) ==> Stat2: (x ¥R_PLUS xp) = (xp ¥R_PLUS x) (x,yp)-->T615(Stat1,Stat1*) ==> Stat3: (x ¥R_PLUS yp) = (yp ¥R_PLUS x) (xp,x)-->T613(Stat1,Stat1*) ==> Stat4: (xp ¥R_PLUS x) in Re (yp,x)-->T613(Stat1,Stat1*) ==> Stat5: ((yp ¥R_PLUS x) in Re) & (R_Rev(yp) in Re) (xp ¥R_PLUS x,yp ¥R_PLUS x)-->T635(Stat4*) ==> Stat6: ((xp ¥R_PLUS x) ¥R_MINUS (yp ¥R_PLUS x)) = ((xp ¥R_PLUS x) ¥R_PLUS R_Rev(yp ¥R_PLUS x)) (yp ¥R_PLUS x,yp ¥R_PLUS x)-->T613(Stat5*) ==> Stat7: R_Rev(yp ¥R_PLUS x) in Re (xp,x,R_Rev(yp ¥R_PLUS x))-->T617(Stat1,Stat7*) ==> Stat8: ((xp ¥R_PLUS x) ¥R_PLUS R_Rev(yp ¥R_PLUS x)) = (xp ¥R_PLUS (x ¥R_PLUS R_Rev(yp ¥R_PLUS x))) (yp,x)-->T638(Stat1,Stat1*) ==> Stat9: R_Rev(yp ¥R_PLUS x) = R_Rev(yp) ¥R_PLUS R_Rev(x) (R_Rev(yp),x)-->T641(Stat1,Stat5*) ==> Stat10: (x ¥R_PLUS (R_Rev(yp) ¥R_MINUS x)) = R_Rev(yp) (xp,yp)-->T635(Stat1,Stat1*) ==> Stat11: (xp ¥R_MINUS yp) = (xp ¥R_PLUS R_Rev(yp)) EQUAL(Stat1,Stat2,Stat3,Stat6,Stat8,Stat9,Stat10,Stat11*) ==> false; Discharge ==> QED -- Theorem 695: [Monotonicity of real addition] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE Y) & (XP ¥R_GE YP)) ¥imp ((X ¥R_PLUS XP) ¥R_GE (Y ¥R_PLUS YP)). Proof: Suppose_not(x,y,xp,yp) ==> AUTO (x,xp,yp)-->T694(*) ==> (x ¥R_PLUS xp) ¥R_GE (x ¥R_PLUS yp) (yp,x,y)-->T694(*) ==> (yp ¥R_PLUS x) ¥R_GE (yp ¥R_PLUS y) (yp,x)-->T615(*) ==> (yp ¥R_PLUS x) = (x ¥R_PLUS yp) (yp,y)-->T615(*) ==> (yp ¥R_PLUS y) = (y ¥R_PLUS yp) EQUAL ==> (x ¥R_PLUS yp) ¥R_GE (y ¥R_PLUS yp) (x,xp)-->T613(*) ==> (x ¥R_PLUS xp) in Re (x,yp)-->T613(*) ==> (x ¥R_PLUS yp) in Re (y,yp)-->T613(*) ==> (y ¥R_PLUS yp) in Re (x ¥R_PLUS xp,x ¥R_PLUS yp,y ¥R_PLUS yp)-->T668(*) ==> false; Discharge ==> QED -- Theorem 696: [Strict monotonicity of addition] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE Y) & (XP ¥R_GT YP)) ¥imp ((X ¥R_PLUS XP) ¥R_GT (Y ¥R_PLUS YP)). Proof: Suppose_not(x,y,xp,yp) ==> AUTO -- -- Suppose that $x$, $y$, $xp$, and $yp$ form a counterexample to our theorem. -- Since addition is known to be monotone, we have at least $(x ¥R_PLUS xp) ¥R_GE (y ¥R_PLUS yp)$, -- and since the corresponding strict inequality is false we must have $(x ¥R_PLUS xp) = (x ¥R_PLUS xp)$, -- so that $(xp ¥R_PLUS x) ¥Ra_GE (yp ¥R_PLUS y)$ is also true. -- (xp,yp)-->T675(*) ==> Stat1: (xp ¥R_GE yp) & (xp /= yp) (x,y,xp,yp)-->T695(*) ==> (x ¥R_PLUS xp) ¥R_GE (y ¥R_PLUS yp) (x ¥R_PLUS xp,y ¥R_PLUS yp)-->T675(*) ==> (x ¥R_PLUS xp) = (y ¥R_PLUS yp) (x,xp)-->T613(*) ==> Stat2: (x ¥R_PLUS xp) in Re (y,yp)-->T613(*) ==> (y ¥R_PLUS yp) in Re (y ¥R_PLUS yp,x ¥R_PLUS xp)-->T680(*) ==> (y ¥R_PLUS yp) ¥R_GE (x ¥R_PLUS xp) (x,xp)-->T615(*) ==> (x ¥R_PLUS xp) = (xp ¥R_PLUS x) (y,yp)-->T615(*) ==> (y ¥R_PLUS yp) = (yp ¥R_PLUS y) EQUAL(Stat2) ==> ((yp ¥R_PLUS y) ¥R_GE (xp ¥R_PLUS x)) & ((xp ¥R_PLUS x) in Re) & ((yp ¥R_PLUS y) in Re) -- -- By Theorem 691, we have $R_Rev(y) ¥R_GE R_Rev(x)$, and then adding these -- last two inequalities and reassociating we find that $yp ¥R_GE xp$, so that $yp = xp$, -- contradicting $xp ¥R_GT yp$ an so proving our theorem. -- (x,y)-->T691(*) ==> R_Rev(y) ¥R_GE R_Rev(x) y-->T636(*) ==> (R_Rev(y) in Re) & ((y ¥R_PLUS R_Rev(y)) = R_0) x-->T636(*) ==> (R_Rev(x) in Re) & ((x ¥R_PLUS R_Rev(x)) = R_0) (yp ¥R_PLUS y,xp ¥R_PLUS x,R_Rev(y),R_Rev(x))-->T695(*) ==> ((yp ¥R_PLUS y) ¥R_PLUS R_Rev(y)) ¥R_GE ((xp ¥R_PLUS x) ¥R_PLUS R_Rev(x)) (yp,y,R_Rev(y))-->T617(*) ==> ((yp ¥R_PLUS y) ¥R_PLUS R_Rev(y)) = (yp ¥R_PLUS (y ¥R_PLUS R_Rev(y))) (xp,x,R_Rev(x))-->T617(*) ==> ((xp ¥R_PLUS x) ¥R_PLUS R_Rev(x)) = (xp ¥R_PLUS (x ¥R_PLUS R_Rev(x))) EQUAL ==> (yp ¥R_PLUS R_0) ¥R_GE (xp ¥R_PLUS R_0) yp-->T626(*) ==> (yp ¥R_PLUS R_0) = yp xp-->T626(*) ==> (xp ¥R_PLUS R_0) = xp EQUAL ==> yp ¥R_GE xp (xp,yp)-->T672(*) ==> false; Discharge ==> QED -- Theorem 697: [Strict monotonicity of addition] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GT Y) & (XP ¥R_GE YP)) ¥imp ((X ¥R_PLUS XP) ¥R_GT (Y ¥R_PLUS YP)). Proof: Suppose_not(x,y,xp,yp) ==> AUTO (xp,yp,x,y)-->T696(*) ==> (xp ¥R_PLUS x) ¥R_GT (yp ¥R_PLUS y) ALGEBRA ==> ((xp ¥R_PLUS x) = (x ¥R_PLUS xp)) & ((yp ¥R_PLUS y) = (y ¥R_PLUS yp)) EQUAL ==> false; Discharge ==> QED -- Theorem 698: [Strict monotonicity of addition, 2] ((X in Re) & (Y in Re) & (V in Re) & (X ¥R_GE Y)) ¥imp (((Y ¥R_PLUS V) ¥R_GE (X ¥R_PLUS V)) ¥eq (X = Y)). Proof: Suppose_not(x,y,v) ==> AUTO (y,v)-->T613(*) ==> Stat1: (y ¥R_PLUS v) in Re (x,v)-->T613(*) ==> (x ¥R_PLUS v) in Re Suppose ==> x = y EQUAL ==> (y ¥R_PLUS v) = (x ¥R_PLUS v) (y ¥R_PLUS v,x ¥R_PLUS v)-->T680(*) ==> false; Discharge ==> x /= y (x,y)-->T680(*) ==> x ¥R_GT y (v,v)-->T680(*) ==> v ¥R_GE v (v,v,x,y)-->T696(*) ==> Stat2: (v ¥R_PLUS x) ¥R_GT (v ¥R_PLUS y) (v,x)-->T615(*) ==> (v ¥R_PLUS x) = (x ¥R_PLUS v) (v,y)-->T615(*) ==> (v ¥R_PLUS y) = (y ¥R_PLUS v) EQUAL(Stat2) ==> (x ¥R_PLUS v) ¥R_GT (y ¥R_PLUS v) (x ¥R_PLUS v,y ¥R_PLUS v)-->T673(Stat1*) ==> ((x ¥R_PLUS v) ¥R_GE (y ¥R_PLUS v)) & ((x ¥R_PLUS v) /= (y ¥R_PLUS v)) (x ¥R_PLUS v,y ¥R_PLUS v)-->T672(*) ==> false; Discharge ==> QED -- Theorem 699: ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y) & (X ¥R_PLUS Y = R_0)) ¥imp ((X = R_0) & (Y = R_0)). Proof: Suppose_not(x,y) ==> Stat1: (x in Re) & (y in Re) & R_is_nonneg(x) & R_is_nonneg(y) & (x ¥R_PLUS y = R_0) & ((x /= R_0) or (y /= R_0)) x-->T681(*) ==> Stat2: x ¥R_GE R_0 y-->T681(*) ==> Stat3: y ¥R_GE R_0 T612(*) ==> Stat4: R_0 in Re R_0-->T626(Stat4*) ==> Stat5: R_0 ¥R_PLUS R_0 = R_0 Suppose ==> Stat6: y /= R_0 (y, R_0)-->T680(Stat1, Stat3, Stat4, Stat6*) ==> Stat7: y ¥R_GT R_0 (x,R_0,y,R_0)-->T696(Stat1, Stat4, Stat2, Stat7*) ==> Stat8: (x ¥R_PLUS y) ¥R_GT (R_0 ¥R_PLUS R_0) EQUAL(Stat8, Stat5*) ==> (x ¥R_PLUS y) ¥R_GT R_0 Use_def(¥R_GT) ==> false; Discharge ==> Stat9: x /= R_0 (x, R_0)-->T680(Stat1, Stat2, Stat4, Stat9*) ==> Stat10: x ¥R_GT R_0 (y,R_0,x,R_0)-->T696(Stat1, Stat4, Stat3, Stat10*) ==> Stat11: (y ¥R_PLUS x) ¥R_GT (R_0 ¥R_PLUS R_0) EQUAL(Stat11, Stat5*) ==> Stat12: (y ¥R_PLUS x) ¥R_GT R_0 (y, x)-->T615(Stat1, Stat1*) ==> Stat13: (y ¥R_PLUS x) = (x ¥R_PLUS y) EQUAL(Stat12, Stat13*) ==> Stat14: (x ¥R_PLUS y) ¥R_GT R_0 Use_def(¥R_GT)(Stat1, Stat14) ==> false; Discharge ==> QED -- Theorem 700: [The product of two reals is 0 if and only if one of them is 0] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_TIMES Y) = R_0) ¥eq ((X = R_0) or (Y = R_0))). Proof: Suppose_not(x,y) ==> AUTO Suppose ==> x = R_0 y-->T625(*) ==> (R_0 ¥R_TIMES y) = R_0 EQUAL ==> false; Discharge ==> Stat1: x /= R_0 Suppose ==> y = R_0 x-->T624(*) ==> (x ¥R_TIMES R_0) = R_0 EQUAL ==> false; Discharge ==> (y /= R_0) & ((x ¥R_TIMES y) = R_0) (x,y)-->T658(*) ==> ((x ¥R_TIMES y) ¥R_OVER y) = x y-->T647(*) ==> Stat2: R_Recip(y) in Re (R_Recip(y))-->T625(Stat2*) ==> (R_0 ¥R_TIMES R_Recip(y)) = R_0 Use_def(¥R_OVER)(Stat2*) ==> (R_0 ¥R_OVER y) = R_0 EQUAL(Stat1) ==> false; Discharge ==> QED -- Theorem 701: [Monotonicity of multiplication over 2nd argument] ((X in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE R_0) & (XP ¥R_GE YP)) ¥imp ((X ¥R_TIMES XP) ¥R_GE (X ¥R_TIMES YP)). Proof: Suppose_not(x,xp,yp) ==> AUTO (xp,yp)-->T614(*) ==> Stat1: (xp ¥R_MINUS yp) in Re (x,xp,yp)-->T643(*) ==> Stat2: (x ¥R_TIMES (xp ¥R_MINUS yp)) = ((x ¥R_TIMES xp) ¥R_MINUS (x ¥R_TIMES yp)) Use_def(¥R_GE)(*) ==> Stat3: (x in Re) & R_is_nonneg(x ¥R_MINUS R_0) & R_is_nonneg(xp ¥R_MINUS yp) & (not R_is_nonneg((x ¥R_TIMES xp) ¥R_MINUS (x ¥R_TIMES yp))) x-->T630(Stat3,Stat3*) ==> (x ¥R_MINUS R_0) = x EQUAL(Stat2*) ==> Stat4: R_is_nonneg(x) & (not R_is_nonneg(x ¥R_TIMES (xp ¥R_MINUS yp))) (x,xp ¥R_MINUS yp)-->T667(Stat1,Stat3,Stat4*) ==> false; Discharge ==> QED -- Theorem 702: [Monotonicity of multiplication] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE Y) & (Y ¥R_GE R_0) & (YP ¥R_GE R_0) & (XP ¥R_GE YP)) ¥imp ((X ¥R_TIMES XP) ¥R_GE (Y ¥R_TIMES YP)). Proof: Suppose_not(x,y,xp,yp) ==> AUTO T612(*) ==> R_0 in Re (x,y,R_0)-->T668(*) ==> x ¥R_GE R_0 (x,xp,yp)-->T701(*) ==> (x ¥R_TIMES xp) ¥R_GE (x ¥R_TIMES yp) (yp,x,y)-->T701(*) ==> (yp ¥R_TIMES x) ¥R_GE (yp ¥R_TIMES y) (yp,x)-->T618(*) ==> (yp ¥R_TIMES x) = (x ¥R_TIMES yp) (yp,y)-->T618(*) ==> (yp ¥R_TIMES y) = (y ¥R_TIMES yp) EQUAL ==> (x ¥R_TIMES yp) ¥R_GE (y ¥R_TIMES yp) (x,xp)-->T614(*) ==> (x ¥R_TIMES xp) in Re (x,yp)-->T614(*) ==> (x ¥R_TIMES yp) in Re (y,yp)-->T614(*) ==> (y ¥R_TIMES yp) in Re (x ¥R_TIMES xp,x ¥R_TIMES yp,y ¥R_TIMES yp)-->T668(*) ==> false; Discharge ==> QED -- Theorem 703: [Strict monotonicity of multiplication over 2nd argument] ((X in Re) & (XP in Re) & (YP in Re) & (X ¥R_GT R_0) & (XP ¥R_GT YP)) ¥imp ((X ¥R_TIMES XP) ¥R_GT (X ¥R_TIMES YP)). Proof: Suppose_not(x,xp,yp) ==> AUTO (xp,yp)-->T673(*) ==> xp ¥R_GE yp (x,R_0)-->T673(*) ==> x ¥R_GE R_0 (x,x)-->T672(*) ==> x ¥R_GE x (x,xp,yp)-->T701(*) ==> (x ¥R_TIMES xp) ¥R_GE (x ¥R_TIMES yp) (x ¥R_TIMES xp,x ¥R_TIMES yp)-->T673(*) ==> Stat1: (x ¥R_TIMES xp) = (x ¥R_TIMES yp) (xp,yp)-->T675(*) ==> R_is_nonneg(xp ¥R_MINUS yp) & (xp /= yp) (xp,yp)-->T641(*) ==> xp = (yp ¥R_PLUS (xp ¥R_MINUS yp)) (xp,yp)-->T614(*) ==> (xp ¥R_MINUS yp) in Re (x,yp,xp ¥R_MINUS yp)-->T621(*) ==> (x ¥R_TIMES (yp ¥R_PLUS (xp ¥R_MINUS yp))) = ((x ¥R_TIMES yp) ¥R_PLUS (x ¥R_TIMES (xp ¥R_MINUS yp))) (x,yp)-->T614(*) ==> Stat2: (x ¥R_TIMES yp) in Re (x ¥R_TIMES yp)-->T626(*) ==> ((x ¥R_TIMES yp) ¥R_PLUS R_0) = (x ¥R_TIMES yp) EQUAL(Stat1) ==> ((x ¥R_TIMES yp) ¥R_PLUS R_0) = ((x ¥R_TIMES yp) ¥R_PLUS (x ¥R_TIMES (xp ¥R_MINUS yp))) (x,xp ¥R_MINUS yp)-->T614(*) ==> (x ¥R_TIMES (xp ¥R_MINUS yp)) in Re (x ¥R_TIMES yp,x ¥R_TIMES (xp ¥R_MINUS yp))-->T615(*) ==> ((x ¥R_TIMES yp) ¥R_PLUS (x ¥R_TIMES (xp ¥R_MINUS yp))) = ((x ¥R_TIMES (xp ¥R_MINUS yp)) ¥R_PLUS (x ¥R_TIMES yp)) T612(*) ==> R_0 in Re (x ¥R_TIMES yp,R_0)-->T615(*) ==> ((x ¥R_TIMES yp) ¥R_PLUS R_0) = (R_0 ¥R_PLUS (x ¥R_TIMES yp)) (R_0,x ¥R_TIMES (xp ¥R_MINUS yp),x ¥R_TIMES yp)-->T634(Stat2*) ==> (x ¥R_TIMES (xp ¥R_MINUS yp)) = R_0 (x,R_0)-->T675(*) ==> x /= R_0 (x,xp ¥R_MINUS yp)-->T700(*) ==> (xp ¥R_MINUS yp) = R_0 yp-->T626(*) ==> yp ¥R_PLUS R_0 = yp EQUAL(Stat1) ==> false; Discharge ==> QED -- Theorem 704: [Strict monotonicity of multiplication] ((X in Re) & (Y in Re) & (XP in Re) & (YP in Re) & (X ¥R_GE Y) & (Y ¥R_GT R_0) & (YP ¥R_GT R_0) & (XP ¥R_GT YP)) ¥imp ((X ¥R_TIMES XP) ¥R_GT (Y ¥R_TIMES YP)). Proof: Suppose_not(x,y,xp,yp) ==> AUTO T612(*) ==> R_0 in Re (x,y,R_0)-->T678(*) ==> x ¥R_GT R_0 Suppose ==> x = y EQUAL ==> not((x ¥R_TIMES xp) ¥R_GT (x ¥R_TIMES yp)) (x,xp,yp)-->T703(*) ==> false; Discharge ==> x /= y (x,y)-->T673(*) ==> x ¥R_GT y (x,y,R_0)-->T679(*) ==> x ¥R_GT R_0 (xp,yp,R_0)-->T679(*) ==> xp ¥R_GT R_0 (xp,x,y)-->T703(*) ==> Stat1: (xp ¥R_TIMES x) ¥R_GT (xp ¥R_TIMES y) (xp,x)-->T618(*) ==> (xp ¥R_TIMES x) = (x ¥R_TIMES xp) (xp,y)-->T618(*) ==> (xp ¥R_TIMES y) = (y ¥R_TIMES xp) EQUAL(Stat1) ==> (x ¥R_TIMES xp) ¥R_GT (y ¥R_TIMES xp) (y,xp,yp)-->T703(*) ==> (y ¥R_TIMES xp) ¥R_GT (y ¥R_TIMES yp) (x,xp)-->T614(*) ==> (x ¥R_TIMES xp) in Re (y,xp)-->T614(*) ==> (y ¥R_TIMES xp) in Re (y,yp)-->T614(*) ==> (y ¥R_TIMES yp) in Re (x ¥R_TIMES xp,y ¥R_TIMES xp,y ¥R_TIMES yp)-->T679(*) ==> false; Discharge ==> QED -- Theorem 705: [Multiplication by a positive real is strictly monotone] ((X in Re) & (Y in Re) & (Z in Re) & (X ¥R_GT Y) & (Z ¥R_GT R_0)) ¥imp ((X ¥R_TIMES Z) ¥R_GT (Y ¥R_TIMES Z)). Proof: Suppose_not(x,y,v) ==> AUTO (v,v)-->T672(*) ==> v ¥R_GE v (v,R_0)-->T673(*) ==> (v ¥R_GE R_0) & (v /= R_0) Suppose ==> y ¥R_GT R_0 (v,v,x,y)-->T704(*) ==> (v ¥R_TIMES x) ¥R_GT (v ¥R_TIMES y) (v,x)-->T618(*) ==> (v ¥R_TIMES x) = (x ¥R_TIMES v) (v,y)-->T618(*) ==> (v ¥R_TIMES y) = (y ¥R_TIMES v) EQUAL ==> false; Discharge ==> not(y ¥R_GT R_0) ()-->T612 ==> AUTO (y,R_0)-->T669(*) ==> (y = R_0) or (R_0 ¥R_GT y) (x,v)-->T614(*) ==> (x ¥R_TIMES v) in Re v-->T625(*) ==> (R_0 ¥R_TIMES v) = R_0 Suppose ==> y = R_0 EQUAL ==> Stat1: (x ¥R_GT R_0) & (not((x ¥R_TIMES v) ¥R_GT R_0)) (x,R_0)-->T673(Stat1*) ==> (x ¥R_GE R_0) & (x /= R_0) (R_0,R_0)-->T672(*) ==> R_0 ¥R_GE R_0 (x,R_0,v,R_0)-->T702(*) ==> (x ¥R_TIMES v) ¥R_GE (R_0 ¥R_TIMES R_0) R_0-->T625(*) ==> (R_0 ¥R_TIMES R_0) = R_0 EQUAL ==> (x ¥R_TIMES v) ¥R_GE R_0 (x ¥R_TIMES v,R_0)-->T680(*) ==> (x ¥R_TIMES v) = R_0 (x,v)-->T653(*) ==> false; Discharge ==> (y /= R_0) & (R_0 ¥R_GT y) (x,y)-->T692(*) ==> R_Rev(y) ¥R_GT R_Rev(x) (R_Rev(y),R_Rev(x))-->T673(*) ==> R_Rev(y) ¥R_GE R_Rev(x) (y,y)-->T613(*) ==> R_Rev(y) in Re (R_0,y)-->T692(*) ==> R_Rev(y) ¥R_GT R_Rev(R_0) ()-->T693 ==> AUTO EQUAL ==> R_Rev(y) ¥R_GT R_0 (R_Rev(y),R_0)-->T673(*) ==> R_Rev(y) ¥R_GE R_0 (R_0,R_0)-->T672(*) ==> R_0 ¥R_GE R_0 (y,v)-->T614(*) ==> (y ¥R_TIMES v) in Re Suppose ==> x = R_0 v-->T624(*) ==> (v ¥R_TIMES R_0) = R_0 (v,v,R_Rev(y),R_0)-->T702(*) ==> (v ¥R_TIMES R_Rev(y)) ¥R_GE (v ¥R_TIMES R_0) (v,y)-->T623(*) ==> (v ¥R_TIMES R_Rev(y)) = R_Rev(v ¥R_TIMES y) (v,x)-->T623(*) ==> (v ¥R_TIMES R_Rev(x)) = R_Rev(v ¥R_TIMES x) (v,y)-->T618(*) ==> (v ¥R_TIMES y) = (y ¥R_TIMES v) (v,x)-->T618(*) ==> (v ¥R_TIMES x) = (x ¥R_TIMES v) EQUAL ==> (R_Rev(y ¥R_TIMES v) ¥R_GE R_Rev(R_0)) & (not(R_0 ¥R_GT (y ¥R_TIMES v))) (R_0,y ¥R_TIMES v)-->T692(*) ==> R_0 ¥R_GE (y ¥R_TIMES v) (R_0,y ¥R_TIMES v)-->T680(*) ==> R_0 = (y ¥R_TIMES v) (y,v)-->T700(*) ==> false; Discharge ==> x /= R_0 (x,R_0)-->T669(*) ==> (x ¥R_GT R_0) or (R_0 ¥R_GT x) (y,v)-->T623(*) ==> (R_Rev(y) ¥R_TIMES v) = R_Rev(y ¥R_TIMES v) Suppose ==> x ¥R_GT R_0 (x,R_0)-->T673(*) ==> (x ¥R_GE R_0) & (x /= R_0) (x,R_0,v,v)-->T702(*) ==> (x ¥R_TIMES v) ¥R_GE (R_0 ¥R_TIMES v) EQUAL ==> (x ¥R_TIMES v) ¥R_GE R_0 (x,v)-->T700(*) ==> (x ¥R_TIMES v) /= R_0 (x ¥R_TIMES v,R_0)-->T680(*) ==> (x ¥R_TIMES v) ¥R_GT R_0 (R_Rev(y),R_0,v,v)-->T702(*) ==> (R_Rev(y) ¥R_TIMES v) ¥R_GE (R_0 ¥R_TIMES v) EQUAL ==> R_Rev(y ¥R_TIMES v) ¥R_GE R_Rev(R_0) (R_0,y ¥R_TIMES v)-->T692(*) ==> R_0 ¥R_GE (y ¥R_TIMES v) (x ¥R_TIMES v,R_0,y ¥R_TIMES v)-->T677(*) ==> false; Discharge ==> R_0 ¥R_GT x (R_0,x)-->T692(*) ==> R_Rev(x) ¥R_GT R_Rev(R_0) EQUAL ==> R_Rev(x) ¥R_GT R_0 (x,x)-->T613(*) ==> R_Rev(x) in Re (v,v,R_Rev(y),R_Rev(x))-->T704(*) ==> (v ¥R_TIMES R_Rev(y)) ¥R_GT (v ¥R_TIMES R_Rev(x)) (v,R_Rev(y))-->T618(*) ==> (v ¥R_TIMES R_Rev(y)) = (R_Rev(y) ¥R_TIMES v) (v,R_Rev(x))-->T618(*) ==> (v ¥R_TIMES R_Rev(x)) = (R_Rev(x) ¥R_TIMES v) (x,v)-->T623(*) ==> (R_Rev(x) ¥R_TIMES v) = R_Rev(x ¥R_TIMES v) EQUAL ==> R_Rev(y ¥R_TIMES v) ¥R_GT R_Rev(x ¥R_TIMES v) (x ¥R_TIMES v,y ¥R_TIMES v)-->T692(*) ==> false; Discharge ==> QED -- Theorem 706: [The product of reals $x,y$ of which $x$ is positive is non-negative iff $y$ is non-negative] ((X in Re) & (Y in Re) & (X /= R_0) & R_is_nonneg(X)) ¥imp (R_is_nonneg(X ¥R_TIMES Y) ¥eq R_is_nonneg(Y)). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T614(*) ==> Stat1: (x ¥R_TIMES y) in Re ()-->T612 ==> AUTO ()-->T671 ==> AUTO ()-->T693 ==> AUTO Suppose ==> not(x ¥R_GT R_0) x-->T681(*) ==> x ¥R_GE R_0 (x,R_0)-->T680(*) ==> false; Discharge ==> x ¥R_GT R_0 Suppose ==> R_is_nonneg(y) y-->T681(*) ==> y ¥R_GE R_0 (y,R_0)-->T680(*) ==> (y ¥R_GT R_0) or (y = R_0) Suppose ==> y = R_0 x-->T624(*) ==> (x ¥R_TIMES R_0) = R_0 EQUAL ==> false; Discharge ==> (y ¥R_GT R_0) (x,R_0,y)-->T705(*) ==> (x ¥R_TIMES y) ¥R_GT (R_0 ¥R_TIMES y) y-->T625(*) ==> (R_0 ¥R_TIMES y) = R_0 EQUAL ==> (x ¥R_TIMES y) ¥R_GT R_0 (x ¥R_TIMES y,R_0)-->T680(*) ==> (x ¥R_TIMES y) ¥R_GE R_0 (x ¥R_TIMES y)-->T681(*) ==> false; Discharge ==> Stat2: (not R_is_nonneg(y)) & R_is_nonneg(x ¥R_TIMES y) y-->T663(*) ==> R_is_nonneg(R_Rev(y)) (y,y)-->T613(*) ==> R_Rev(y) in Re (R_Rev(y))-->T681(Stat2*) ==> R_Rev(y) ¥R_GE R_0 (R_Rev(y),R_0)-->T680(*) ==> (R_Rev(y) ¥R_GT R_0) or (R_Rev(y) = R_0) Suppose ==> R_Rev(y) = R_0 y-->T633(*) ==> R_Rev(R_Rev(y)) = y EQUAL ==> false; Discharge ==> R_Rev(y) ¥R_GT R_0 (x,R_0,R_Rev(y))-->T705(*) ==> Stat3: (x ¥R_TIMES R_Rev(y)) ¥R_GT (R_0 ¥R_TIMES R_Rev(y)) (R_Rev(y))-->T625(*) ==> (R_0 ¥R_TIMES R_Rev(y)) = R_0 EQUAL(Stat3) ==> (x ¥R_TIMES R_Rev(y)) ¥R_GT R_0 (x,y)-->T623(*) ==> (x ¥R_TIMES R_Rev(y)) = R_Rev(x ¥R_TIMES y) EQUAL ==> R_Rev(x ¥R_TIMES y) ¥R_GT R_0 (x ¥R_TIMES y,x ¥R_TIMES y)-->T613(Stat1,Stat1*) ==> Stat4: R_Rev(x ¥R_TIMES y) in Re (R_Rev(x ¥R_TIMES y),R_0)-->T680(*) ==> R_Rev(x ¥R_TIMES y) ¥R_GE R_0 (R_Rev(x ¥R_TIMES y))-->T681(Stat4*) ==> Stat5: R_is_nonneg(R_Rev(x ¥R_TIMES y)) (R_Rev(y))-->T681(Stat2*) ==> R_Rev(y) ¥R_GE R_0 (x ¥R_TIMES y)-->T663(Stat1,Stat2,Stat5*) ==> (x ¥R_TIMES y) = R_0 (x,R_0)-->T675(*) ==> x /= R_0 (R_Rev(y),R_0)-->T675(*) ==> R_Rev(y) /= R_0 Suppose ==> y = R_0 EQUAL ==> false; Discharge ==> y /= R_0 (x,y)-->T700(*) ==> false; Discharge ==> QED -- Theorem 707: [The product of nonnegative reals is non-negative] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y)) ¥imp R_is_nonneg(X ¥R_TIMES Y). Proof: Suppose_not(x,y) ==> AUTO x-->T706(*) ==> x = R_0 y-->T625(*) ==> (R_0 ¥R_TIMES y) = R_0 EQUAL ==> (not R_is_nonneg(R_0)) T671 ==> false; Discharge ==> QED -- Theorem 708: [Condition for positiveness of a product of reals] ((X in Re) & (Y in Re)) ¥imp (((X ¥R_TIMES Y) ¥R_GT R_0) ¥eq (((X ¥R_GT R_0) & (Y ¥R_GT R_0)) or ((R_0 ¥R_GT X) & (R_0 ¥R_GT Y)))). Proof: Suppose_not(x,y) ==> AUTO -- -- By the trichotomic property of the ordering relation on reals, there are -- six cases to be considered, namely the combinations of one of the possibilities -- $x = R_0,x ¥R_GT R_0,R_0 ¥R_GT x$ with one of the possibilities -- $y = R_0,y ¥R_GT R_0,R_0 ¥R_GT y$. We will see that in none of the cases -- the assertion of this theorem cannot be false. -- ()-->T612 ==> AUTO (x,R_0)-->T669(*) ==> Stat1: (x = R_0) or (x ¥R_GT R_0) or (R_0 ¥R_GT x) (y,R_0)-->T669(*) ==> (y = R_0) or (y ¥R_GT R_0) or (R_0 ¥R_GT y) Suppose ==> x = R_0 y-->T625(*) ==> (R_0 ¥R_TIMES y) = R_0 EQUAL ==> (x ¥R_TIMES y) = R_0 (x ¥R_TIMES y,R_0)-->T673(*) ==> not((x ¥R_TIMES y) ¥R_GT R_0) (x,R_0)-->T673(*) ==> not(x ¥R_GT R_0) (R_0,x)-->T673(*) ==> false; Discharge ==> x /= R_0 Suppose ==> y = R_0 x-->T624(*) ==> (x ¥R_TIMES R_0) = R_0 EQUAL ==> (x ¥R_TIMES y) = R_0 (x ¥R_TIMES y,R_0)-->T673(*) ==> not((x ¥R_TIMES y) ¥R_GT R_0) (y,R_0)-->T673(*) ==> not(y ¥R_GT R_0) (R_0,y)-->T673(*) ==> false; Discharge ==> y /= R_0 (x,y)-->T614(*) ==> Stat2: (x ¥R_TIMES y) in Re (x,y)-->T700(*) ==> (x ¥R_TIMES y) /= R_0 Suppose ==> (x ¥R_GT R_0) & (y ¥R_GT R_0) (x,R_0)-->T673(*) ==> x ¥R_GE R_0 (y,R_0)-->T673(*) ==> y ¥R_GE R_0 x-->T681(*) ==> R_is_nonneg(x) y-->T681(*) ==> R_is_nonneg(y) (x,y)-->T707(*) ==> R_is_nonneg(x ¥R_TIMES y) (x ¥R_TIMES y)-->T681(*) ==> (x ¥R_TIMES y) ¥R_GE R_0 (x ¥R_TIMES y,R_0)-->T673(*) ==> false; Discharge ==> not((x ¥R_GT R_0) & (y ¥R_GT R_0)) (x,x)-->T613(*) ==> R_Rev(x) in Re (y,y)-->T613(*) ==> R_Rev(y) in Re Suppose ==> (not(x ¥R_GT R_0)) & (not(y ¥R_GT R_0)) (x,R_0)-->T680(*) ==> not(x ¥R_GE R_0) (y,R_0)-->T680(*) ==> not(y ¥R_GE R_0) x-->T681(*) ==> (not R_is_nonneg(x)) y-->T681(*) ==> (not R_is_nonneg(y)) x-->T663(*) ==> R_is_nonneg(R_Rev(x)) y-->T663(*) ==> R_is_nonneg(R_Rev(y)) (R_Rev(x),R_Rev(y))-->T707(*) ==> R_is_nonneg(R_Rev(x) ¥R_TIMES R_Rev(y)) (x,y)-->T623(*) ==> (R_Rev(x) ¥R_TIMES R_Rev(y)) = (x ¥R_TIMES y) EQUAL ==> R_is_nonneg(x ¥R_TIMES y) (x ¥R_TIMES y)-->T681(*) ==> (x ¥R_TIMES y) ¥R_GE R_0 (x ¥R_TIMES y,R_0)-->T673(*) ==> false; Discharge ==> (x ¥R_GT R_0) or (y ¥R_GT R_0) Suppose ==> x ¥R_GT R_0 (x,R_0)-->T680(*) ==> x ¥R_GE R_0 x-->T681(*) ==> R_is_nonneg(x) (y,R_0)-->T680(*) ==> not(y ¥R_GE R_0) y-->T681(*) ==> not(R_is_nonneg(y)) y-->T663(*) ==> R_is_nonneg(R_Rev(y)) (x,R_Rev(y))-->T707(*) ==> R_is_nonneg(x ¥R_TIMES R_Rev(y)) (x,y)-->T623(*) ==> (x ¥R_TIMES R_Rev(y)) = R_Rev(x ¥R_TIMES y) EQUAL ==> R_is_nonneg(R_Rev(x ¥R_TIMES y)) (x ¥R_TIMES y)-->T663(*) ==> (not R_is_nonneg(x ¥R_TIMES y)) (x ¥R_TIMES y)-->T681(*) ==> not((x ¥R_TIMES y) ¥R_GE R_0) (y,R_0)-->T673(*) ==> not(y ¥R_GT R_0) (x,R_0)-->T672(*) ==> not(R_0 ¥R_GE x) (R_0,x)-->T673(*) ==> not(R_0 ¥R_GT x) (x ¥R_TIMES y,R_0)-->T673(*) ==> false; Discharge ==> y ¥R_GT R_0 (y,R_0)-->T680(*) ==> y ¥R_GE R_0 y-->T681(*) ==> R_is_nonneg(y) (x,R_0)-->T680(*) ==> not(x ¥R_GE R_0) x-->T681(*) ==> (not R_is_nonneg(x)) x-->T663(*) ==> R_is_nonneg(R_Rev(x)) (R_Rev(x),y)-->T707(*) ==> R_is_nonneg(R_Rev(x) ¥R_TIMES y) (x,y)-->T623(*) ==> (R_Rev(x) ¥R_TIMES y) = R_Rev(x ¥R_TIMES y) EQUAL ==> R_is_nonneg(R_Rev(x ¥R_TIMES y)) (x ¥R_TIMES y)-->T663(*) ==> (not R_is_nonneg(x ¥R_TIMES y)) (x ¥R_TIMES y)-->T681(*) ==> not((x ¥R_TIMES y) ¥R_GE R_0) (x,R_0)-->T673(*) ==> not(x ¥R_GT R_0) (y,R_0)-->T672(*) ==> not(R_0 ¥R_GE y) (R_0,y)-->T673(*) ==> not(R_0 ¥R_GT y) (x ¥R_TIMES y,R_0)-->T673(*) ==> false; Discharge ==> QED -- Theorem 709: [The reciprocal of a positive real is positive] ((X in Re) & (X ¥R_GT R_0)) ¥imp (R_Recip(X) ¥R_GT R_0). Proof: Suppose_not(x) ==> AUTO ()-->T612 ==> AUTO (x,R_0)-->T675(*) ==> x /= R_0 x-->T647(*) ==> (R_Recip(x) in Re) & (R_Recip(x) /= R_0) & ((R_Recip(x) ¥R_TIMES x) = R_1) (R_Recip(x),x)-->T618(*) ==> (R_Recip(x) ¥R_TIMES x) = (x ¥R_TIMES R_Recip(x)) ()-->T671 ==> AUTO EQUAL ==> R_is_nonneg(x ¥R_TIMES R_Recip(x)) (x,R_0)-->T675(*) ==> x ¥R_GE R_0 x-->T681(*) ==> R_is_nonneg(x) ()-->T693(*) ==> AUTO (x,R_Recip(x))-->T706(*) ==> R_is_nonneg(R_Recip(x)) (R_Recip(x))-->T681(*) ==> R_Recip(x) ¥R_GE R_0 (R_Recip(x),R_0)-->T680(*) ==> R_Recip(x) = R_0 EQUAL ==> (R_0 ¥R_TIMES x) = R_1 x-->T625 ==> AUTO ()-->T693(*) ==> false; Discharge ==> QED -- Theorem 710: [The sum of non-negative reals is at least as big at each addend] ((X in Re) & (Y in Re) & (X ¥R_GE R_0)) ¥imp ((X ¥R_PLUS Y) ¥R_GE Y). Proof: Suppose_not(x,y) ==> AUTO (y,y)-->T672(*) ==> y ¥R_GE y ()-->T612() ==> AUTO (x,R_0,y,y)-->T695(*) ==> (x ¥R_PLUS y) ¥R_GE (R_0 ¥R_PLUS y) y-->T626(*) ==> (R_0 ¥R_PLUS y) = y EQUAL ==> false; Discharge ==> QED -- Theorem 711: [The sum of non-negative reals is zero only if the addends are zero] ((X in Re) & (Y in Re) & R_is_nonneg(X) & R_is_nonneg(Y) & (X ¥R_PLUS Y = R_0)) ¥imp ((X = R_0) & (Y = R_0)). Proof: Suppose_not(x,y) ==> AUTO ALGEBRA ==> Stat1: ((y ¥R_PLUS x) = R_0) & ((x ¥R_PLUS y) = R_0) & (R_0 in Re) & (x in Re) & (y in Re) x-->T681(*) ==> Stat2: x ¥R_GE R_0 (x,y)-->T710(*) ==> Stat3: (x ¥R_PLUS y) ¥R_GE y EQUAL(Stat1,Stat3) ==> Stat4: R_0 ¥R_GE y y-->T681(*) ==> Stat5: y ¥R_GE R_0 (y,x)-->T710(*) ==> Stat6: (y ¥R_PLUS x) ¥R_GE x EQUAL(Stat1,Stat6) ==> Stat7: R_0 ¥R_GE x (x,R_0)-->T680(Stat2,Stat1*) ==> Stat8: (x ¥R_GT R_0) or (x = R_0) (y,R_0)-->T680(Stat5,Stat1*) ==> Stat9: (y ¥R_GT R_0) or (y = R_0) Suppose ==> x /= R_0 (Stat8*)ELEM ==> Stat10: x ¥R_GT R_0 (R_0,x,R_0)-->T678(Stat7,Stat10,Stat1*) ==> Stat11: R_0 ¥R_GT R_0 (R_0,R_0)-->T673(Stat11*) ==> false; Discharge ==> y /= R_0 (Stat9*)ELEM ==> Stat12: y ¥R_GT R_0 (R_0,y,R_0)-->T678(Stat4,Stat12,Stat1*) ==> Stat13: R_0 ¥R_GT R_0 (R_0,R_0)-->T673(Stat13*) ==> false Discharge ==> QED -- Theorem 712: [The reciprocal is monotone decreasing for positive reals] ((X in Re) & (Y in Re) & (X ¥R_GT Y) & (Y ¥R_GT R_0)) ¥imp (R_Recip(Y) ¥R_GT R_Recip(X)). Proof: Suppose_not(x,y) ==> AUTO T612(*) ==> Stat1: (R_0 in Re) & (R_1 in Re) (x,y,R_0)-->T679(*) ==> x ¥R_GT R_0 (x,R_0)-->T675(*) ==> x /= R_0 (y,R_0)-->T675(*) ==> y /= R_0 Suppose ==> Stat2: R_Recip(x) = R_Recip(y) x-->T648(*) ==> R_Recip(R_Recip(x)) = x y-->T648(*) ==> R_Recip(R_Recip(y)) = y (x,y)-->T675(*) ==> x /= y EQUAL(Stat2) ==> false; Discharge ==> R_Recip(x) /= R_Recip(y) x-->T647(*) ==> Stat3: (R_Recip(x) in Re) & (R_Recip(x) /= R_0) & ((R_Recip(x) ¥R_TIMES x) = R_1) y-->T647(*) ==> (R_Recip(y) in Re) & (R_Recip(y) /= R_0) & ((R_Recip(y) ¥R_TIMES y) = R_1) Suppose ==> R_Recip(x) ¥R_GT R_Recip(y) (R_Recip(x),R_Recip(y))-->T675(Stat3*) ==> R_Recip(x) ¥R_GE R_Recip(y) y-->T709(*) ==> R_Recip(y) ¥R_GT R_0 (R_Recip(x),R_Recip(y),x,y)-->T704(*) ==> (R_Recip(x) ¥R_TIMES x) ¥R_GT (R_Recip(y) ¥R_TIMES y) EQUAL(Stat3) ==> R_1 ¥R_GT R_1 (R_1,R_1)-->T675(Stat1*) ==> false; Discharge ==> not(R_Recip(x) ¥R_GT R_Recip(y)) (R_Recip(x),R_Recip(y))-->T669(*) ==> false; Discharge ==> QED -- Theorem 713: [Two non-null reals are equal iff their reciprocals are equal] ((X in Re) & (X /= R_0) & (Y in Re) & (Y /= R_0) & (R_Recip(X) = R_Recip(Y))) ¥imp (X = Y). Proof: Suppose_not(x,y) ==> AUTO ELEM ==> R_Recip(x) = R_Recip(y) y-->T645(*) ==> (y ¥R_TIMES R_Recip(y)) = R_1 EQUAL ==> (y ¥R_TIMES R_Recip(x)) = R_1 x-->T645(*) ==> (x ¥R_TIMES R_Recip(x)) = R_1 y-->T647(*) ==> (R_Recip(x) in Re) & (R_Recip(x) /= R_0) (x,y,R_Recip(x))-->T650(*) ==> false; Discharge ==> QED -- Theorem 714: [The square of any real is non-negative] (X in Re) ¥imp R_is_nonneg(X ¥R_TIMES X). Proof: Suppose_not(x) ==> AUTO x-->T663(*) ==> R_is_nonneg(x) or R_is_nonneg(R_Rev(x)) Suppose ==> R_is_nonneg(x) (x,x)-->T707(*) ==> false; Discharge ==> R_is_nonneg(R_Rev(x)) (x,x)-->T613(*) ==> R_Rev(x) in Re (R_Rev(x),R_Rev(x))-->T707(*) ==> R_is_nonneg(R_Rev(x) ¥R_TIMES R_Rev(x)) (x,x)-->T623 ==> (R_Rev(x) ¥R_TIMES R_Rev(x)) = (x ¥R_TIMES x) EQUAL ==> false; Discharge ==> QED -- Theorem 715: [Monotonicity of squaring] ((X in Re) & (Y in Re) & (X ¥R_GE R_0) & (Y ¥R_GE R_0)) ¥imp ((X ¥R_GE Y) ¥eq ((X ¥R_TIMES X) ¥R_GE (Y ¥R_TIMES Y))). Proof: Suppose_not(x,y) ==> AUTO (x,y,x,y)-->T702(*) ==> Stat1: ((x ¥R_TIMES x) ¥R_GE (y ¥R_TIMES y)) & (not(x ¥R_GE y)) & (x in Re) & (y in Re) & (x ¥R_GE R_0) & (y ¥R_GE R_0) (y,y)-->T614(Stat1,Stat1*) ==> (y ¥R_TIMES y) in Re (y,y)-->T672(Stat1,Stat1*) ==> y ¥R_GE y x-->T624(Stat1,Stat1*) ==> (x ¥R_TIMES R_0) = R_0 y-->T624(Stat1,Stat1*) ==> (y ¥R_TIMES R_0) = R_0 T612(Stat2*) ==> Stat2: R_0 in Re (R_0,R_0)-->T672(Stat2*) ==> R_0 ¥R_GE R_0 Suppose ==> x = R_0 (y,R_0,y,R_0)-->T702(Stat1*) ==> (y ¥R_TIMES y) ¥R_GE (R_0 ¥R_TIMES R_0) EQUAL(Stat1) ==> (R_0 ¥R_GE (y ¥R_TIMES y)) & ((y ¥R_TIMES y) ¥R_GE R_0) (R_0,y ¥R_TIMES y)-->T675(Stat1*) ==> Stat3: (R_0 ¥R_GT (y ¥R_TIMES y)) or (R_0 = (y ¥R_TIMES y)) Suppose ==> R_0 ¥R_GT (y ¥R_TIMES y) (R_0,y ¥R_TIMES y,R_0)-->T677(Stat1*) ==> R_0 ¥R_GT R_0 (R_0,R_0)-->T673(Stat1*) ==> false; Discharge ==> Stat4: not(R_0 ¥R_GT (y ¥R_TIMES y)) (y,y)-->T700(Stat1,Stat3,Stat4*) ==> y = R_0 EQUAL(Stat1) ==> false; Discharge ==> Stat5: x /= R_0 Suppose ==> y = R_0 EQUAL(Stat1) ==> false; Discharge ==> Stat6: y /= R_0 (x,x)-->T614(Stat1,Stat1*) ==> (x ¥R_TIMES x) in Re (x,x)-->T672(Stat1,Stat1*) ==> x ¥R_GE x (x,x,x,R_0)-->T702(Stat1*) ==> (x ¥R_TIMES x) ¥R_GE (x ¥R_TIMES R_0) (y,y,y,R_0)-->T702(Stat1*) ==> (y ¥R_TIMES y) ¥R_GE (y ¥R_TIMES R_0) EQUAL(Stat1) ==> ((x ¥R_TIMES x) ¥R_GE R_0) & ((y ¥R_TIMES y) ¥R_GE R_0) x-->T647(Stat1,Stat5*) ==> Stat7: (R_Recip(x) in Re) & (R_Recip(x) /= R_0) & ((R_Recip(x) ¥R_TIMES x) = R_1) y-->T647(Stat1,Stat6*) ==> Stat8: (R_Recip(y) in Re) & (R_Recip(y) /= R_0) & ((R_Recip(y) ¥R_TIMES y) = R_1) (x,R_0)-->T675(Stat1,Stat2,Stat5*) ==> Stat9: x ¥R_GT R_0 (y,R_0)-->T675(Stat1,Stat2,Stat6*) ==> Stat10: y ¥R_GT R_0 x-->T709(Stat1,Stat9*) ==> Stat11: R_Recip(x) ¥R_GT R_0 y-->T709(Stat1,Stat10*) ==> Stat12: R_Recip(y) ¥R_GT R_0 (R_Recip(x),R_0)-->T675(Stat11,Stat7,Stat2*) ==> R_Recip(x) ¥R_GE R_0 (R_Recip(y),R_0)-->T675(Stat12,Stat8,Stat2*) ==> R_Recip(y) ¥R_GE R_0 Suppose ==> Stat13: not(R_Recip(x) ¥R_GE R_Recip(y)) (x,y)-->T672(Stat1,Stat1*) ==> Stat14: y ¥R_GE x Suppose ==> Stat15: y = x EQUAL(Stat15) ==> Stat16: R_Recip(x) = R_Recip(y) (R_Recip(x), R_Recip(y))-->T680(Stat7,Stat8,Stat16,Stat13*) ==> false; Discharge ==> Stat17: y /= x (y, x)-->T680(Stat1, Stat14, Stat17*) ==> Stat18: y ¥R_GT x (R_Recip(x), R_Recip(y))-->T672(Stat7, Stat8, Stat13*) ==> Stat19: R_Recip(y) ¥R_GE R_Recip(x) (R_Recip(y), R_Recip(x), y, x)-->T704(Stat1, Stat9, Stat7, Stat8, Stat11, Stat18, Stat19*) ==> Stat20: (R_Recip(y) ¥R_TIMES y) ¥R_GT (R_Recip(x) ¥R_TIMES x) EQUAL(Stat7, Stat8, Stat20*) ==> Stat21: R_1 ¥R_GT R_1 Use_def(¥R_GT)(Stat21*) ==> false; Discharge ==> R_Recip(x) ¥R_GE R_Recip(y) (x ¥R_TIMES x,y ¥R_TIMES y,R_Recip(x),R_Recip(y))-->T702(Stat1*) ==> ((x ¥R_TIMES x) ¥R_TIMES R_Recip(x)) ¥R_GE ((y ¥R_TIMES y) ¥R_TIMES R_Recip(y)) (x,x,R_Recip(x))-->T620(Stat1,Stat7*) ==> ((x ¥R_TIMES x) ¥R_TIMES R_Recip(x)) = (x ¥R_TIMES (x ¥R_TIMES R_Recip(x))) (y,y,R_Recip(y))-->T620(Stat1,Stat8*) ==> ((y ¥R_TIMES y) ¥R_TIMES R_Recip(y)) = (y ¥R_TIMES (y ¥R_TIMES R_Recip(y))) (x,R_Recip(x))-->T618(Stat1,Stat7*) ==> (x ¥R_TIMES R_Recip(x)) = (R_Recip(x) ¥R_TIMES x) (y,R_Recip(y))-->T618(Stat1,Stat8*) ==> (y ¥R_TIMES R_Recip(y)) = (R_Recip(y) ¥R_TIMES y) x-->T627(Stat1,Stat1*) ==> (x ¥R_TIMES R_1) = x y-->T627(Stat1,Stat1*) ==> (y ¥R_TIMES R_1) = y EQUAL(Stat1) ==> false; Discharge ==> QED -- Theorem 716: [Properties of the real number 2] ((R_1 ¥R_PLUS R_1) in Re) & ((R_1 ¥R_PLUS R_1) ¥R_GT R_0) & (R_Recip(R_1 ¥R_PLUS R_1) in Re) & (R_Recip(R_1 ¥R_PLUS R_1) /= R_0) & ((X in Re) ¥imp ((X ¥R_OVER (R_1 ¥R_PLUS R_1)) in Re)). Proof: Suppose_not(x) ==> AUTO -- -- Let us recall that $R_0,R_1$ belong to $Re$ and that twice $R_0$ is $R_0$. -- Moreover, $R_0$ is self-negative and is smaller that $R_1$. Hence, by -- the strict monotonicity of addition, twice $R_1$ exceeds $R_0$. -- ()-->T693 ==> AUTO (R_1,R_0)-->T673(*) ==> R_1 ¥R_GE R_0 ()-->T612 ==> AUTO (R_0,R_0)-->T672(*) ==> R_0 ¥R_GE R_0 (R_1,R_0,R_1,R_0)-->T696(*) ==> Stat1: (R_1 ¥R_PLUS R_1) ¥R_GT (R_0 ¥R_PLUS R_0) R_0-->T626 ==> (R_0 ¥R_PLUS R_0) = R_0 EQUAL(Stat1) ==> Stat2: (R_1 ¥R_PLUS R_1) ¥R_GT R_0 -- -- It follows from the fact that $R_1 ¥R_PLUS R_1$ is non-zero that its reciprocal -- belongs to $Re$ and is non-zero. Hence, the only way the assertion could -- be false would be the existence of a real number $x$ exists whose quotient by -- $R_1 ¥R_PLUS R_1$ does not belong to $Re$. -- (R_1 ¥R_PLUS R_1,R_0)-->T673(Stat2*) ==> (R_1 ¥R_PLUS R_1) /= R_0 (R_1,R_1)-->T613(*) ==> (R_1 ¥R_PLUS R_1) in Re (R_1 ¥R_PLUS R_1)-->T647(*) ==> Stat3: (R_Recip(R_1 ¥R_PLUS R_1) in Re) & (x in Re) & ((x ¥R_OVER (R_1 ¥R_PLUS R_1)) notin Re) (x,R_Recip(R_1 ¥R_PLUS R_1))-->T614(Stat3*) ==> (x ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) in Re Use_def(¥R_OVER)(Stat3*) ==> false; Discharge ==> QED -- -- The following proof is entirely analogous to the proof of Theorem 521 concerning rationals. -- Theorem 717: [Any real number can be divided into two equal halves] (X in Re) ¥imp (X = (X ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_PLUS (X ¥R_OVER (R_1 ¥R_PLUS R_1))). Proof: Suppose_not(x) ==> AUTO x-->T716(*) ==> ((R_1 ¥R_PLUS R_1) in Re) & ((R_1 ¥R_PLUS R_1) ¥R_GT R_0) & (R_Recip(R_1 ¥R_PLUS R_1) in Re) & (R_Recip(R_1 ¥R_PLUS R_1) /= R_0) & ((x in Re) ¥imp ((x ¥R_OVER (R_1 ¥R_PLUS R_1)) in Re)) T612(*) ==> (R_0 in Re) & (R_1 in Re) (R_1 ¥R_PLUS R_1,R_0)-->T675(*) ==> (R_1 ¥R_PLUS R_1) /= R_0 Suppose ==> R_1 /= (R_Recip(R_1 ¥R_PLUS R_1) ¥R_PLUS R_Recip(R_1 ¥R_PLUS R_1)) (R_1 ¥R_PLUS R_1)-->T645(*) ==> R_1 = ((R_1 ¥R_PLUS R_1) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) ((R_1 ¥R_PLUS R_1),R_Recip(R_1 ¥R_PLUS R_1))-->T618(*) ==> ((R_1 ¥R_PLUS R_1) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) = (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (R_1 ¥R_PLUS R_1)) (R_Recip(R_1 ¥R_PLUS R_1),R_1,R_1)-->T621(*) ==> (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (R_1 ¥R_PLUS R_1)) = ((R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES R_1) ¥R_PLUS (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES R_1)) (R_Recip(R_1 ¥R_PLUS R_1))-->T627(*) ==> (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES R_1) = R_Recip(R_1 ¥R_PLUS R_1) EQUAL ==> false; Discharge ==> R_1 = (R_Recip(R_1 ¥R_PLUS R_1) ¥R_PLUS R_Recip(R_1 ¥R_PLUS R_1)) (x,R_1 ¥R_PLUS R_1)-->T652(*) ==> (x ¥R_OVER (R_1 ¥R_PLUS R_1)) = (x ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) EQUAL ==> ((x ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_PLUS (x ¥R_OVER (R_1 ¥R_PLUS R_1))) = ((x ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) ¥R_PLUS (x ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1))) (x,R_Recip(R_1 ¥R_PLUS R_1),R_Recip(R_1 ¥R_PLUS R_1))-->T621(*) ==> ((x ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) ¥R_PLUS (x ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1))) = (x ¥R_TIMES (R_Recip(R_1 ¥R_PLUS R_1) ¥R_PLUS R_Recip(R_1 ¥R_PLUS R_1))) x-->T627(*) ==> (x ¥R_TIMES R_1) = x EQUAL ==> false; Discharge ==> QED -- -- The following proof is closely analogous to the proof of Theorem 519 concerning rationals. -- Theorem 718: [The average of two real numbers lies between them] ((X in Re) & (Y in Re) & (X ¥R_GT Y)) ¥imp ((X ¥R_GT ((X ¥R_PLUS Y) ¥R_OVER (R_1 ¥R_PLUS R_1))) & (((X ¥R_PLUS Y) ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_GT Y)). Proof: Suppose_not(m,n) ==> AUTO (m,m)-->T672(*) ==> m ¥R_GE m (n,n)-->T672(*) ==> n ¥R_GE n (n,n,m,n)-->T696(*) ==> (n ¥R_PLUS m) ¥R_GT (n ¥R_PLUS n) (m,m,m,n)-->T696(*) ==> (m ¥R_PLUS m) ¥R_GT (m ¥R_PLUS n) n-->T627(*) ==> (n ¥R_TIMES R_1) = n m-->T627(*) ==> (m ¥R_TIMES R_1) = m T612(*) ==> (R_0 in Re) & (R_1 in Re) (n,R_1,R_1)-->T621(*) ==> ((n ¥R_TIMES R_1) ¥R_PLUS (n ¥R_TIMES R_1)) = (n ¥R_TIMES (R_1 ¥R_PLUS R_1)) (m,R_1,R_1)-->T621(*) ==> ((m ¥R_TIMES R_1) ¥R_PLUS (m ¥R_TIMES R_1)) = (m ¥R_TIMES (R_1 ¥R_PLUS R_1)) (n,m)-->T615(*) ==> (n ¥R_PLUS m) = (m ¥R_PLUS n) (m,n)-->T613(*) ==> (m ¥R_PLUS n) in Re (m ¥R_PLUS n)-->T716(*) ==> ((R_1 ¥R_PLUS R_1) in Re) & ((R_1 ¥R_PLUS R_1) ¥R_GT R_0) & (R_Recip(R_1 ¥R_PLUS R_1) in Re) (R_1 ¥R_PLUS R_1,R_0)-->T673(*) ==> (R_1 ¥R_PLUS R_1) /= R_0 (R_1 ¥R_PLUS R_1)-->T709(*) ==> R_Recip(R_1 ¥R_PLUS R_1) ¥R_GT R_0 (R_Recip(R_1 ¥R_PLUS R_1),m ¥R_PLUS n)-->T618(*) ==> (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (m ¥R_PLUS n)) = ((m ¥R_PLUS n) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) (R_1 ¥R_PLUS R_1)-->T645(*) ==> ((R_1 ¥R_PLUS R_1) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) = R_1 (m ¥R_PLUS n,R_1 ¥R_PLUS R_1)-->T652(*) ==> ((m ¥R_PLUS n) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) = ((m ¥R_PLUS n) ¥R_OVER (R_1 ¥R_PLUS R_1)) Suppose ==> not(((m ¥R_PLUS n) ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_GT n) (n,R_1 ¥R_PLUS R_1)-->T614(*) ==> (n ¥R_TIMES (R_1 ¥R_PLUS R_1)) in Re EQUAL ==> (m ¥R_PLUS n) ¥R_GT (n ¥R_TIMES (R_1 ¥R_PLUS R_1)) (R_Recip(R_1 ¥R_PLUS R_1),m ¥R_PLUS n,n ¥R_TIMES (R_1 ¥R_PLUS R_1))-->T703(*) ==> (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (m ¥R_PLUS n)) ¥R_GT (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (n ¥R_TIMES (R_1 ¥R_PLUS R_1))) (R_Recip(R_1 ¥R_PLUS R_1),n ¥R_TIMES (R_1 ¥R_PLUS R_1))-->T618(*) ==> (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (n ¥R_TIMES (R_1 ¥R_PLUS R_1))) = ((n ¥R_TIMES (R_1 ¥R_PLUS R_1)) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) (n,R_1 ¥R_PLUS R_1,R_Recip(R_1 ¥R_PLUS R_1))-->T620(*) ==> ((n ¥R_TIMES (R_1 ¥R_PLUS R_1)) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) = (n ¥R_TIMES ((R_1 ¥R_PLUS R_1) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1))) EQUAL ==> false; Discharge ==> not(m ¥R_GT ((m ¥R_PLUS n) ¥R_OVER (R_1 ¥R_PLUS R_1))) (m,R_1 ¥R_PLUS R_1)-->T614(*) ==> (m ¥R_TIMES (R_1 ¥R_PLUS R_1)) in Re EQUAL ==> ((m ¥R_TIMES (R_1 ¥R_PLUS R_1)) ¥R_GT (m ¥R_PLUS n)) (R_Recip(R_1 ¥R_PLUS R_1),m ¥R_TIMES (R_1 ¥R_PLUS R_1),m ¥R_PLUS n)-->T703(*) ==> (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (m ¥R_TIMES (R_1 ¥R_PLUS R_1))) ¥R_GT (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (m ¥R_PLUS n)) (R_Recip(R_1 ¥R_PLUS R_1),m ¥R_TIMES (R_1 ¥R_PLUS R_1))-->T618(*) ==> (R_Recip(R_1 ¥R_PLUS R_1) ¥R_TIMES (m ¥R_TIMES (R_1 ¥R_PLUS R_1))) = ((m ¥R_TIMES (R_1 ¥R_PLUS R_1)) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) EQUAL ==> ((m ¥R_TIMES (R_1 ¥R_PLUS R_1)) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) ¥R_GT ((m ¥R_PLUS n) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) (m,R_1 ¥R_PLUS R_1,R_Recip(R_1 ¥R_PLUS R_1))-->T620(*) ==> ((m ¥R_TIMES (R_1 ¥R_PLUS R_1)) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1)) = (m ¥R_TIMES ((R_1 ¥R_PLUS R_1) ¥R_TIMES R_Recip(R_1 ¥R_PLUS R_1))) EQUAL ==> false; Discharge ==> QED -- -- -- The following proof is entirely analogous to the proof of Theorem 522 concerning rationals. -- Theorem 719: [Every positive real exceeds the sum of two smaller positive reals] ((X in Re) & (X ¥R_GT R_0)) ¥imp (EXISTS e in Re , e0 in Re | (X ¥R_GT e) & (e ¥R_GT e0) & (e0 ¥R_GT R_0) & (e ¥R_GT R_0) & (X ¥R_GT (e ¥R_PLUS e0))). Proof: Suppose_not(x) ==> AUTO -- -- For, if there could be a counterexample $x$, then we could take $e$ to be one half -- of $x$ and $e0$ to be a half of $e$; and with these values, exploiting previously -- proved lemmas, we would easily come to a contradiction. -- Loc_def ==> e = (x ¥R_OVER (R_1 ¥R_PLUS R_1)) T612(*) ==> R_0 in Re x-->T626(*) ==> x = (x ¥R_PLUS R_0) (x,R_0)-->T718(*) ==> (x ¥R_GT ((x ¥R_PLUS R_0) ¥R_OVER (R_1 ¥R_PLUS R_1))) & (((x ¥R_PLUS R_0) ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_GT R_0) x-->T716(*) ==> (x ¥R_OVER (R_1 ¥R_PLUS R_1)) in Re EQUAL ==> (x ¥R_GT e) & (e ¥R_GT R_0) & (e in Re) (e,e)-->T672(*) ==> e ¥R_GE e (e,R_0)-->T673(*) ==> e ¥R_GE R_0 Loc_def ==> e0 = (e ¥R_OVER (R_1 ¥R_PLUS R_1)) e-->T626(*) ==> e = (e ¥R_PLUS R_0) (e,R_0)-->T718(*) ==> (e ¥R_GT ((e ¥R_PLUS R_0) ¥R_OVER (R_1 ¥R_PLUS R_1))) & (((e ¥R_PLUS R_0) ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_GT R_0) e-->T716(*) ==> (e ¥R_OVER (R_1 ¥R_PLUS R_1)) in Re EQUAL ==> (e ¥R_GT e0) & (e0 ¥R_GT R_0) & (e in Re) x-->T717(*) ==> x = ((x ¥R_OVER (R_1 ¥R_PLUS R_1)) ¥R_PLUS (x ¥R_OVER (R_1 ¥R_PLUS R_1))) EQUAL ==> x = (e ¥R_PLUS e) (e,e,e,e0)-->T696(*) ==> (e ¥R_PLUS e) ¥R_GT (e ¥R_PLUS e0) EQUAL ==> x ¥R_GT (e ¥R_PLUS e0) (e,R_0,e0,R_0)-->T696(*) ==> (e ¥R_PLUS e0) ¥R_GT (R_0 ¥R_PLUS R_0) R_0-->T626(*) ==> R_0 = (R_0 ¥R_PLUS R_0) EQUAL ==> (e ¥R_PLUS e0) ¥R_GT R_0 ELEM ==> Stat1: (not(EXISTS e in Re, e0 in Re | (x ¥R_GT e) & (e ¥R_GT e0) & (e0 ¥R_GT R_0) & (e ¥R_GT R_0) & (x ¥R_GT (e ¥R_PLUS e0)))) (e,e0)-->Stat1(*) ==> false; Discharge ==> QED -- -- The following proof is entirely analogous to the proof of Theorem 523 concerning rationals. -- Theorem 720: [Every positive real exceeds some smaller positive real] ((X in Re) & (X ¥R_GT R_0)) ¥imp (EXISTS e in Re | (X ¥R_GT e) & (e ¥R_GT R_0)). Proof: Suppose_not(x) ==> AUTO x-->T719(*) ==> Stat1: (EXISTS e in Re, e0 in Re | (x ¥R_GT e) & (e ¥R_GT e0) & (e0 ¥R_GT R_0) & (e ¥R_GT R_0) & (x ¥R_GT (e ¥R_PLUS e0))) (e,e0)-->Stat1(Stat1*) ==> (e in Re) & (e0 in Re) & (x ¥R_GT e) & (e ¥R_GT e0) & (e0 ¥R_GT R_0) (x,e,e0)-->T679(*) ==> x ¥R_GT e0 ELEM ==> Stat2: (not(EXISTS e in Re | (x ¥R_GT e) & (e ¥R_GT R_0))) e0-->Stat2(*) ==> false; Discharge ==> QED -- Theorem 721: [Trigger for Otter theory 'orderedGroups'] (R_0 in Re) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) in Re)) & (FORALL x | (x in Re) ¥imp (R_Rev(x) in Re)) & (FORALL x,y,z | ((x in Re) & (y in Re) & (z in Re)) ¥imp (((x ¥R_PLUS y) ¥R_PLUS z) = (x ¥R_PLUS (y ¥R_PLUS z)))) & (FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_0) = x)) & (FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_Rev(x)) = R_0)) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) = (y ¥R_PLUS x))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((R_is_nonneg(x) & R_is_nonneg(y)) ¥imp R_is_nonneg(x ¥R_PLUS y))) & (FORALL x | (x in Re) ¥imp (R_is_nonneg(x) or R_is_nonneg(R_Rev(x)))) & (FORALL x | (x in Re) ¥imp ((R_is_nonneg(x) & R_is_nonneg(R_Rev(x))) ¥imp (x = R_0))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq R_is_nonneg(y ¥R_PLUS R_Rev(x)))). Proof: Suppose_not ==> AUTO ()-->T612 ==> AUTO Suppose ==> Stat1: not(FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) in Re)) (x1,y1)-->Stat1(Stat1*) ==> (x1 in Re) & (y1 in Re) & ((x1 ¥R_PLUS y1) notin Re) (x1,y1)-->T613(Stat1*) ==> false; Discharge ==> (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) in Re)) Suppose ==> Stat2: not(FORALL x | (x in Re) ¥imp (R_Rev(x) in Re)) x2-->Stat2(Stat2*) ==> (x2 in Re) & (R_Rev(x2) notin Re) (x2,x2)-->T613(Stat2*) ==> false; Discharge ==> (FORALL x | (x in Re) ¥imp (R_Rev(x) in Re)) Suppose ==> Stat3: not(FORALL x,y,z | ((x in Re) & (y in Re) & (z in Re)) ¥imp (((x ¥R_PLUS y) ¥R_PLUS z) = (x ¥R_PLUS (y ¥R_PLUS z)))) (x3,y3,z3)-->Stat3(Stat3*) ==> (x3 in Re) & (y3 in Re) & (z3 in Re) & (((x3 ¥R_PLUS y3) ¥R_PLUS z3) /= (x3 ¥R_PLUS (y3 ¥R_PLUS z3))) (x3,y3,z3)-->T617(Stat3*) ==> false; Discharge ==> (FORALL x,y,z | ((x in Re) & (y in Re) & (z in Re)) ¥imp (((x ¥R_PLUS y) ¥R_PLUS z) = (x ¥R_PLUS (y ¥R_PLUS z)))) Suppose ==> Stat4: not(FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_0) = x)) x4-->Stat4(Stat4*) ==> (x4 in Re) & ((x4 ¥R_PLUS R_0) /= x4) x4-->T626(Stat4*) ==> false; Discharge ==> (FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_0) = x)) Suppose ==> Stat5: not(FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_Rev(x)) = R_0)) x5-->Stat5(Stat5*) ==> (x5 in Re) & ((x5 ¥R_PLUS R_Rev(x5)) /= R_0) (x5,x5)-->T635(Stat5*) ==> (x5 ¥R_MINUS x5) /= R_0 x5-->T631(Stat5*) ==> false; Discharge ==> (FORALL x | (x in Re) ¥imp ((x ¥R_PLUS R_Rev(x)) = R_0)) Suppose ==> Stat6: not(FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) = (y ¥R_PLUS x))) (x6,y6)-->Stat6(Stat6*) ==> (x6 in Re) & (y6 in Re) & ((x6 ¥R_PLUS y6) /= (y6 ¥R_PLUS x6)) (x6,y6)-->T615(Stat6*) ==> false; Discharge ==> (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) = (y ¥R_PLUS x))) Suppose ==> Stat7: not(FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((R_is_nonneg(x) & R_is_nonneg(y)) ¥imp R_is_nonneg(x ¥R_PLUS y))) (x7,y7)-->Stat7(Stat7*) ==> (x7 in Re) & (y7 in Re) & R_is_nonneg(x7) & R_is_nonneg(y7) & (not R_is_nonneg(x7 ¥R_PLUS y7)) (x7,y7)-->T667(Stat7*) ==> false; Discharge ==> (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((R_is_nonneg(x) & R_is_nonneg(y)) ¥imp R_is_nonneg(x ¥R_PLUS y))) Suppose ==> Stat8: not(FORALL x | (x in Re) ¥imp (R_is_nonneg(x) or R_is_nonneg(R_Rev(x)))) x8-->Stat8(Stat8*) ==> (x8 in Re) & (not(R_is_nonneg(x8) or R_is_nonneg(R_Rev(x8)))) x8-->T663(Stat8*) ==> false; Discharge ==> (FORALL x | (x in Re) ¥imp (R_is_nonneg(x) or R_is_nonneg(R_Rev(x)))) Suppose ==> Stat9: not(FORALL x | (x in Re) ¥imp ((R_is_nonneg(x) & R_is_nonneg(R_Rev(x))) ¥imp (x = R_0))) x9-->Stat9(Stat9*) ==> (x9 in Re) & R_is_nonneg(x9) & R_is_nonneg(R_Rev(x9)) & (x9 /= R_0) x9-->T663(Stat9*) ==> false; Discharge ==> Stat10: not(FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_LE y) ¥eq R_is_nonneg(y ¥R_PLUS R_Rev(x)))) (x0,y0)-->Stat10(Stat10*) ==> (x0 in Re) & (y0 in Re) & (not((x0 ¥R_LE y0) ¥eq R_is_nonneg(y0 ¥R_PLUS R_Rev(x0)))) (x0,y0)-->T675(Stat10*) ==> false; Discharge ==> QED -- APPLY_otter(abs_thryvar:abs) orderedGroups(In_domain(x)->(x in Re), pluz(x,y)->(x ¥R_PLUS y), e->R_0, rvz(x)->R_Rev(x), nneg(x)->R_is_nonneg(x), leq(x,y)->(x ¥R_LE y)) ==> Theorem 722: [Basic properties of the absolute value function] (FORALL x | abs(x) = if R_is_nonneg(x) then x else R_Rev(x) end if) & (FORALL x | (x in Re) ¥imp (x ¥R_LE abs(x))) & (FORALL x | (x in Re) ¥imp (abs(abs(x)) = abs(x))) & (FORALL x | (x in Re) ¥imp ((abs(x) = R_0) ¥eq (x = R_0))) & (FORALL x | (x in Re) ¥imp (abs(R_Rev(x)) = abs(x))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((x ¥R_PLUS y) ¥R_LE (abs(x) ¥R_PLUS abs(y)))) & (FORALL x,y,z | ((x in Re) & (y in Re) & (z in Re)) ¥imp ((abs(x ¥R_PLUS R_Rev(y)) ¥R_LE z) ¥imp (y ¥R_LE (x ¥R_PLUS z)))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(x ¥R_PLUS y) ¥R_LE (abs(x) ¥R_PLUS abs(y)))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp ((not(R_is_nonneg(x))) ¥imp ((x ¥R_LE abs(y)) & (x /= abs(y))))) & (FORALL x,y,z | ((x in Re) & (y in Re) & (z in Re)) ¥imp (abs((x ¥R_PLUS R_Rev(z))) ¥R_LE (abs(x ¥R_PLUS R_Rev(y)) ¥R_PLUS abs(y ¥R_PLUS R_Rev(z))))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(abs(x) ¥R_PLUS R_Rev(abs(y))) ¥R_LE abs(x ¥R_PLUS R_Rev(y)))) & (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(x) ¥R_PLUS R_Rev(abs(abs(y) ¥R_PLUS R_Rev(abs(x)))) ¥R_LE abs(y))) -- Theorem 723: [The absolute value of $x$ is a non-negative real no smaller than $x$] (X in Re) ¥imp ((abs(X) in Re) & (abs(X) ¥R_GE R_0) & (abs(X) ¥R_GE X) & (R_is_nonneg(abs(X)))). Proof: Suppose_not(x) ==> AUTO T722(*) ==> Stat1: (FORALL x | abs(x) = if R_is_nonneg(x) then x else R_Rev(x) end if) & (x in Re) x-->Stat1(Stat1*) ==> abs(x) = if R_is_nonneg(x) then x else R_Rev(x) end if (x,x)-->T613(Stat1*) ==> R_Rev(x) in Re (Stat1*)ELEM ==> abs(x) in Re Suppose ==> Stat2: R_is_nonneg(x) x-->T681(Stat1*) ==> (x ¥R_GE R_0) & (abs(x) = x) (x,x)-->T672(Stat1*) ==> x ¥R_GE x EQUAL(Stat2) ==> (abs(x) ¥R_GE R_0) & (abs(x) ¥R_GE x) & R_is_nonneg(abs(x)) Discharge ==> (not R_is_nonneg(x)) x-->T663(Stat1*) ==> Stat3: R_is_nonneg(R_Rev(x)) & (abs(x) = R_Rev(x)) EQUAL(Stat3) ==> R_is_nonneg(abs(x)) (abs(x))-->T681(Stat1*) ==> abs(x) ¥R_GE R_0 x-->T681(Stat1*) ==> not(x ¥R_GE R_0) T612(Stat3*) ==> R_0 in Re (x,R_0)-->T672(Stat1*) ==> R_0 ¥R_GE x (abs(x),R_0,x)-->T668(*) ==> false; Discharge ==> QED -- Theorem 724: [The absolute value of $x$ is whichever of $x$ and $-x$ is non-negative] (X in Re) ¥imp (abs(X) = if R_is_nonneg(X) then X else R_Rev(X) end if). Proof: Suppose_not(x) ==> AUTO T722(*) ==> Stat1: (FORALL x | abs(x) = if R_is_nonneg(x) then x else R_Rev(x) end if) & (x in Re) x-->Stat1(*) ==> false; Discharge ==> QED -- Theorem 725: [The absolute value of $x$ is whichever of $x$ and $-x$ is non-negative, 2] (X in Re) ¥imp (abs(X) = if R_is_nonneg(R_Rev(X)) then R_Rev(X) else X end if). Proof: Suppose_not(x) ==> AUTO Suppose ==> Stat1: x = R_0 ()-->T629(*) ==> AUTO ()-->T671(*) ==> AUTO EQUAL(Stat1) ==> (R_Rev(x) = R_0) & R_is_nonneg(R_Rev(x)) ELEM ==> abs(x) /= R_Rev(x) T722(*) ==> Stat2: (FORALL x | (x in Re) ¥imp ((abs(x) = R_0) ¥eq (x = R_0))) x-->Stat2(*) ==> abs(x) = R_0 x-->Stat2(*) ==> false; Discharge ==> x /= R_0 x-->T663(*) ==> R_is_nonneg(x) ¥neq R_is_nonneg(R_Rev(x)) Suppose ==> (not R_is_nonneg(R_Rev(x))) x-->T724(*) ==> false; Discharge ==> R_is_nonneg(R_Rev(x)) x-->T724(*) ==> false; Discharge ==> QED -- Theorem 726: [The absolute value of a real product is the product of absolute values] ((X in Re) & (Y in Re)) ¥imp (abs(X ¥R_TIMES Y) = (abs(X) ¥R_TIMES abs(Y))). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T614(*) ==> Stat1: (x ¥R_TIMES y) in Re Suppose ==> Stat2: (x = R_0) or (y = R_0) T722(*) ==> Stat3: (FORALL x | (x in Re) ¥imp ((abs(x) = R_0) ¥eq (x = R_0))) & (x in Re) & (y in Re) Suppose ==> not((abs(x) = R_0) or (abs(y) = R_0)) Suppose ==> x = R_0 x-->Stat3(Stat3*) ==> false; Discharge ==> y = R_0 y-->Stat3(Stat3*) ==> false; Discharge ==> Stat4: (abs(x) = R_0) or (abs(y) = R_0) (x,y)-->T700(Stat2*) ==> (x ¥R_TIMES y) = R_0 (x ¥R_TIMES y)-->Stat3(*) ==> Stat5: (abs(x) ¥R_TIMES abs(y)) /= R_0 x-->T723(Stat3*) ==> abs(x) in Re y-->T723(Stat3*) ==> abs(y) in Re (abs(x),abs(y))-->T700(Stat4*) ==> false; Discharge ==> Stat6: (x /= R_0) & (y /= R_0) & (x in Re) & (y in Re) x-->T724(Stat6,Stat6*) ==> Stat7: abs(x) = if R_is_nonneg(x) then x else R_Rev(x) end if y-->T724(Stat6,Stat6*) ==> Stat8: abs(y) = if R_is_nonneg(y) then y else R_Rev(y) end if (x ¥R_TIMES y)-->T724(Stat1*) ==> Stat9: abs(x ¥R_TIMES y) = if R_is_nonneg(x ¥R_TIMES y) then (x ¥R_TIMES y) else R_Rev(x ¥R_TIMES y) end if x-->T642(Stat6,Stat6*) ==> R_Rev(x) = (R_Rev(R_1) ¥R_TIMES x) y-->T642(Stat6,Stat6*) ==> R_Rev(y) = (R_Rev(R_1) ¥R_TIMES y) (x ¥R_TIMES y)-->T642(Stat1,Stat1*) ==> R_Rev(x ¥R_TIMES y) = (R_Rev(R_1) ¥R_TIMES (x ¥R_TIMES y)) (x,y)-->T623(Stat6,Stat6*) ==> Stat10: (((x ¥R_TIMES R_Rev(y)) = R_Rev(x ¥R_TIMES y)) & ((R_Rev(x) ¥R_TIMES y) = R_Rev(x ¥R_TIMES y)) & ((R_Rev(x) ¥R_TIMES R_Rev(y)) = (x ¥R_TIMES y))) (x,x)-->T613(Stat6,Stat6*) ==> R_Rev(x) in Re (y,y)-->T613(Stat6,Stat6*) ==> R_Rev(y) in Re Suppose ==> Stat11: R_is_nonneg(x) & R_is_nonneg(y) (x,y)-->T667(Stat6,Stat11*) ==> Stat12: R_is_nonneg(x ¥R_TIMES y) (Stat7,Stat8,Stat9,Stat11,Stat12*)ELEM ==> (abs(x) = x) & (abs(y) = y) & (abs(x ¥R_TIMES y) = (x ¥R_TIMES y)) EQUAL ==> false; Discharge ==> not(R_is_nonneg(x) & R_is_nonneg(y)) (x,y)-->T700(*) ==> Stat13: ((x ¥R_TIMES y) /= R_0) & (x in Re) & (y in Re) Suppose ==> Stat14: R_is_nonneg(x) & (not R_is_nonneg(y)) y-->T663(Stat10*) ==> R_is_nonneg(R_Rev(y)) (x,R_Rev(y))-->T667(Stat10*) ==> R_is_nonneg(x ¥R_TIMES R_Rev(y)) EQUAL(Stat10) ==> R_is_nonneg(R_Rev(x ¥R_TIMES y)) (x ¥R_TIMES y)-->T663(Stat1*) ==> abs(x ¥R_TIMES y) = R_Rev(x ¥R_TIMES y) (Stat7,Stat8,Stat9,Stat14*)ELEM ==> (abs(x) = x) & (abs(y) = R_Rev(y)) EQUAL ==> false; Discharge ==> not(R_is_nonneg(x) & (not R_is_nonneg(y))) Suppose ==> Stat15: R_is_nonneg(y) & (not R_is_nonneg(x)) x-->T663(Stat10*) ==> R_is_nonneg(R_Rev(x)) (R_Rev(x),y)-->T667(Stat10*) ==> R_is_nonneg(R_Rev(x) ¥R_TIMES y) EQUAL(Stat10) ==> R_is_nonneg(R_Rev(x ¥R_TIMES y)) (x ¥R_TIMES y)-->T663(Stat1*) ==> abs(x ¥R_TIMES y) = R_Rev(x ¥R_TIMES y) (Stat7,Stat8,Stat9,Stat15*)ELEM ==> (abs(x) = R_Rev(x)) & (abs(y) = y) EQUAL ==> false; Discharge ==> Stat16: (not R_is_nonneg(x)) & (not R_is_nonneg(y)) x-->T663(Stat13*) ==> R_is_nonneg(R_Rev(x)) y-->T663(Stat13*) ==> R_is_nonneg(R_Rev(y)) (R_Rev(x),R_Rev(y))-->T667(Stat10*) ==> R_is_nonneg(R_Rev(x) ¥R_TIMES R_Rev(y)) EQUAL(Stat10) ==> Stat17: R_is_nonneg(x ¥R_TIMES y) (Stat7,Stat8,Stat9,Stat16,Stat17*)ELEM ==> (abs(x) = R_Rev(x)) & (abs(y) = R_Rev(y)) & (abs(x ¥R_TIMES y) = (x ¥R_TIMES y)) EQUAL ==> false; Discharge ==> QED -- -- -- Theorem 727: [$x$ and $-x$ have the same absolute value] (X in Re) ¥imp (abs(X) = abs(R_Rev(X))). Proof: Suppose_not(x) ==> AUTO T722(*) ==> Stat1: (FORALL x | (x in Re) ¥imp (abs(R_Rev(x)) = abs(x))) x-->Stat1(*) ==> false; Discharge ==> QED -- -- -- --Theorem OM: [Another characterization of the absolute value of a real] (X in Re) ¥imp (abs(X) = Cauchy_to_Re(Ras_ABS(arb(X)))). Proof: --Suppose_not(x) ==> AUTO -- x-->T724(*) ==> abs(x) = if R_is_nonneg(x) then x else R_Rev(x) end if -- Suppose ==> R_is_nonneg(x) -- ELEM ==> abs(x) = x -- EQUAL ==> x /= Cauchy_to_Re(Ras_ABS(arb(x))) -- x-->T664(*) ==> Ra_eqseq(arb(x),Ras_ABS(arb(x))) -- x-->T611(*) ==> (arb(x) in RaCauchy) & (Cauchy_to_Re(arb(x)) = x) -- (arb(x),arb(x))-->T556(*) ==> Ras_ABS(arb(x)) in RaCauchy -- (arb(x),Ras_ABS(arb(x)))-->T610(*) ==> false; Discharge ==> (not R_is_nonneg(x)) & (abs(x) = R_Rev(x)) -- Use_def(R_is_nonneg)(*) ==> Stat1: (Cauchy_to_Re(Ras_ABS(arb(x))) /= x) & (R_Rev(x) /= Cauchy_to_Re(Ras_ABS(arb(X)))) -- Use_def(R_Rev)(Stat1*) ==> Cauchy_to_Re(Ras_ABS(arb(x))) /= Cauchy_to_Re(Ras_Rev(arb(x))) --Tsomehow ==> false; Discharge ==> QED -- -- -- Theorem 728: [Monotonicity of addition, 2] ((X in Re) & (Y in Re) & R_is_nonneg(R_Rev(Y))) ¥imp ((X ¥R_GT (X ¥R_PLUS Y)) or (X = (X ¥R_PLUS Y))). Proof: Suppose_not(x,y) ==> AUTO -- -- Assuming the contrary of the assertion to hold for $x,y$, we easily obtain $R_0 ¥R_GE y$ -- and hence, by T613 ==> AUTO (R_Rev(y))-->T681(*) ==> R_Rev(y) ¥R_GE R_0 ()-->T612 ==> AUTO (R_Rev(y),R_0)-->T691(*) ==> Stat1: R_Rev(R_0) ¥R_GE R_Rev(R_Rev(y)) ()-->T629 ==> AUTO y-->T633(*) ==> R_Rev(R_Rev(y)) = y EQUAL(Stat1) ==> R_0 ¥R_GE y (x,x)-->T672(*) ==> x ¥R_GE x (x,x,R_0,y)-->T695(*) ==> (x ¥R_PLUS R_0) ¥R_GE (x ¥R_PLUS y) -- -- Since $(x ¥R_PLUS R_0) = R_0$ and -- $(x ¥R_GE (x ¥R_PLUS y)) ¥eq ((x ¥R_GT (x ¥R_PLUS y)) or (x = (x ¥R_PLUS y)))$, -- we readily get into a contradiction, which gives us the desired conclusion. -- (x,y)-->T613 ==> AUTO (x,x ¥R_PLUS y)-->T680(*) ==> not(x ¥R_GE (x ¥R_PLUS y)) x-->T626(*) ==> (x ¥R_PLUS R_0) = x EQUAL ==> false; Discharge ==> QED -- Theorem 729: ((X in Re) & (Y in Re) & R_is_nonneg(X) & (not R_is_nonneg(Y))) ¥imp ((X ¥R_GE abs(X ¥R_PLUS Y)) or (R_Rev(Y) ¥R_GE abs(X ¥R_PLUS Y))). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T613(*) ==> Stat1: ((x ¥R_PLUS y) in Re) & (R_Rev(x) in Re) (y,y)-->T613(*) ==> Stat2: (R_Rev(y) in Re) (x ¥R_PLUS y)-->T723(*) ==> abs(x ¥R_PLUS y) in Re (x ¥R_PLUS y)-->T723(Stat1*) ==> (abs(x ¥R_PLUS y) in Re) & (abs(x ¥R_PLUS y) ¥R_GE R_0) & (abs(x ¥R_PLUS y) ¥R_GE (x ¥R_PLUS y)) (x,abs(x ¥R_PLUS y))-->T680(*) ==> not((x ¥R_GT abs(x ¥R_PLUS y)) or (x = abs(x ¥R_PLUS y)) or (R_Rev(y) ¥R_GE abs(x ¥R_PLUS y))) (R_Rev(y),abs(x ¥R_PLUS y))-->T680(*) ==> Stat3: (x in Re) & (y in Re) & R_is_nonneg(x) & (not (R_is_nonneg(y))) & (not((x ¥R_GT abs(x ¥R_PLUS y)) or (x = abs(x ¥R_PLUS y)) or (R_Rev(y) ¥R_GT abs(x ¥R_PLUS y)) or (R_Rev(y) = abs(x ¥R_PLUS y)))) y-->T663(*) ==> R_is_nonneg(R_Rev(y)) y-->T725(*) ==> abs(y) = R_Rev(y) (x,y)-->T728(*) ==> (x ¥R_GT (x ¥R_PLUS y)) or (x = (x ¥R_PLUS y)) x-->T633(*) ==> R_Rev(R_Rev(x)) = x EQUAL ==> R_is_nonneg(R_Rev(R_Rev(x))) x-->T724(*) ==> abs(x) = x (R_Rev(y),R_Rev(x))-->T728(*) ==> Stat4: (R_Rev(y) ¥R_GT (R_Rev(y) ¥R_PLUS R_Rev(x))) or (R_Rev(y) = (R_Rev(y) ¥R_PLUS R_Rev(x))) Suppose ==> Stat5: R_is_nonneg(x ¥R_PLUS y) (x ¥R_PLUS y)-->T724(Stat1,Stat5*) ==> abs(x ¥R_PLUS y) = x ¥R_PLUS y EQUAL ==> (x ¥R_GT abs(x ¥R_PLUS y)) or (x = abs(x ¥R_PLUS y)) (x,abs(x ¥R_PLUS y))-->T680(*) ==> false; Discharge ==> Stat6: (not R_is_nonneg(x ¥R_PLUS y)) (x ¥R_PLUS y)-->T663(Stat1*) ==> R_is_nonneg(R_Rev(x ¥R_PLUS y)) (x ¥R_PLUS y)-->T725(*) ==> abs(x ¥R_PLUS y) = R_Rev(x ¥R_PLUS y) (x ¥R_PLUS y)-->T724(Stat1,Stat6*) ==> abs(x ¥R_PLUS y) = R_Rev(x ¥R_PLUS y) (x,y)-->T638(*) ==> abs(x ¥R_PLUS y) = (R_Rev(x) ¥R_PLUS R_Rev(y)) (R_Rev(x),R_Rev(y))-->T615(*) ==> (R_Rev(x) ¥R_PLUS R_Rev(y)) = (R_Rev(y) ¥R_PLUS R_Rev(x)) EQUAL(Stat4) ==> (R_Rev(y) ¥R_GT abs(x ¥R_PLUS y)) or (R_Rev(y) = abs(x ¥R_PLUS y)) (R_Rev(y),abs(x ¥R_PLUS y))-->T680(*) ==> false; Discharge ==> QED -- Theorem 730: ((X in Re) & (Y in Re)) ¥imp (((X ¥R_PLUS abs(Y)) ¥R_GE X)). Proof: Suppose_not(x,y) ==> AUTO y-->T723(*) ==> Stat1: (abs(y) in Re) & R_is_nonneg(abs(y)) (abs(y))-->T633(*) ==> R_Rev(R_Rev(abs(y))) = abs(y) (abs(y),abs(y))-->T613(*) ==> R_Rev(abs(y)) in Re EQUAL(Stat1) ==> R_is_nonneg(R_Rev(R_Rev(abs(y)))) (x,x)-->T613(*) ==> R_Rev(x) in Re (R_Rev(x),R_Rev(abs(y)))-->T728(*) ==> (R_Rev(x) ¥R_GT (R_Rev(x) ¥R_PLUS R_Rev(abs(y)))) or (R_Rev(x) = (R_Rev(x) ¥R_PLUS R_Rev(abs(y)))) (R_Rev(x),R_Rev(abs(y)))-->T613(*) ==> (R_Rev(x) ¥R_PLUS R_Rev(abs(y))) in Re (R_Rev(x),R_Rev(x) ¥R_PLUS R_Rev(abs(y)))-->T680(*) ==> R_Rev(x) ¥R_GE (R_Rev(x) ¥R_PLUS R_Rev(abs(y))) (R_Rev(x),R_Rev(x) ¥R_PLUS R_Rev(abs(y)))-->T691(*) ==> Stat2: R_Rev(R_Rev(x) ¥R_PLUS R_Rev(abs(y))) ¥R_GE R_Rev(R_Rev(x)) x-->T723(*) ==> abs(x) in Re (abs(x))-->T633(Stat2) ==> R_Rev(R_Rev(abs(x))) = abs(x) x-->T633(*) ==> R_Rev(R_Rev(x)) = x (R_Rev(x),R_Rev(abs(y)))-->T638(Stat1*) ==> R_Rev(R_Rev(x) ¥R_PLUS R_Rev(abs(y))) = (R_Rev(R_Rev(x)) ¥R_PLUS R_Rev(R_Rev(abs(y)))) EQUAL ==> false; Discharge ==> QED -- Theorem 731: ((X in Re) & (Y in Re)) ¥imp (((abs(X) ¥R_PLUS abs(Y)) ¥R_GT abs(X ¥R_PLUS Y)) or ((abs(X) ¥R_PLUS abs(Y)) = abs(X ¥R_PLUS Y))). Proof: Suppose_not(x,y) ==> AUTO T722(*) ==> Stat1: (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(x ¥R_PLUS y) ¥R_LE (abs(x) ¥R_PLUS abs(y)))) (x,y)-->Stat1(*) ==> Stat2: (x in Re) & (y in Re) & (abs(x ¥R_PLUS y) ¥R_LE (abs(x) ¥R_PLUS abs(y))) (x,y)-->T613(Stat2*) ==> Stat3: (x ¥R_PLUS y) in Re (x ¥R_PLUS y)-->T723(Stat3*) ==> abs(x ¥R_PLUS y) in Re x-->T723(Stat2*) ==> abs(x) in Re y-->T723(Stat2*) ==> abs(y) in Re (abs(x),abs(y))-->T613(Stat3*) ==> (abs(x) ¥R_PLUS abs(y)) in Re (abs(x) ¥R_PLUS abs(y),abs(x ¥R_PLUS y))-->T680(*) ==> not((abs(x) ¥R_PLUS abs(y)) ¥R_GE abs(x ¥R_PLUS y)) (abs(x ¥R_PLUS y),abs(x) ¥R_PLUS abs(y))-->T673(Stat2*) ==> false; Discharge ==> QED -- Theorem 732: [The absolute value of a real quotient is the quotient of absolute values] ((X in Re) & (Y in Re) & (Y /= R_0)) ¥imp ((abs(X) ¥R_OVER abs(Y)) = abs(X ¥R_OVER Y)). Proof: Suppose_not(x,y) ==> AUTO -- -- Regarding the right-hand side of the supposed inequality, we easily reduce -- it to the form $(abs(x) ¥R_TIMES abs(R_Recip(y)))$. -- (x,y)-->T652(*) ==> Stat1: ((x ¥R_OVER y) = (x ¥R_TIMES R_Recip(y))) & (x in Re) & (y in Re) & (y /= R_0) y-->T647(Stat1*) ==> Stat2: (R_Recip(y) in Re) & (R_Recip(y) /= R_0) (x,R_Recip(y))-->T726(Stat1*) ==> abs(x ¥R_TIMES R_Recip(y)) = (abs(x) ¥R_TIMES abs(R_Recip(y))) EQUAL ==> Stat3: (abs(x) ¥R_OVER abs(y)) /= (abs(x) ¥R_TIMES abs(R_Recip(y))) -- -- By reducing the left-hand side of the supposed inequality to the same form -- to which we have reduced the right-hand side, -- we will reach a contradiction and hence the desired conclusion. -- As a preliminary step, after observing that $abs(y) /= R_0$, -- we reduce the left-hand side to a form where $R_Recip(abs(y))$ -- appears in place of $abs(R_Recip(y))$. -- y-->T723(Stat1,Stat1*) ==> Stat4: (abs(y) in Re) & (abs(y) ¥R_GE R_0) & (abs(y) ¥R_GE y) & R_is_nonneg(abs(y)) Suppose ==> Stat5: abs(y) = R_0 EQUAL(Stat3) ==> Stat6: R_0 ¥R_GE y T612(Stat7*) ==> Stat7: R_0 in Re (R_0,y)-->T673(Stat1,Stat6,Stat7*) ==> R_is_nonneg(R_0 ¥R_PLUS R_Rev(y)) (y,y)-->T613(Stat1,Stat1*) ==> R_Rev(y) in Re (R_Rev(y))-->T626(Stat7*) ==> (R_0 ¥R_PLUS R_Rev(y)) = R_Rev(y) EQUAL(Stat7) ==> R_is_nonneg(R_Rev(y)) y-->T725(Stat1,Stat5*) ==> R_0 = R_Rev(y) T693 ==> R_Rev(R_0) = R_0 y-->T633(Stat1,Stat1*) ==> R_Rev(R_Rev(y)) = y EQUAL(Stat1) ==> false; Discharge ==> Stat8: abs(y) /= R_0 x-->T723(Stat1,Stat1*) ==> abs(x) in Re (abs(x),abs(y))-->T652(Stat3*) ==> Stat9: (abs(x) ¥R_TIMES R_Recip(abs(y))) /= (abs(x) ¥R_TIMES abs(R_Recip(y))) -- -- Then we show that $R_Recip(abs(y))$ and $abs(R_Recip(y))$ are, -- as a matter of fact, the same number, thus reaching the expected contradiction. -- This part of the proof splits into the case when $y$ is positive and the -- case when $y$ is negative. -- Suppose ==> Stat10: R_Recip(abs(y)) /= abs(R_Recip(y)) Suppose ==> Stat11: R_is_nonneg(y) & (not R_is_nonneg(R_Rev(y))) y-->T724(Stat1,Stat11*) ==> abs(y) = y y-->T630(Stat1,Stat1*) ==> (y ¥R_MINUS R_0) = y EQUAL(Stat9) ==> Stat12: (R_Recip(y) /= abs(R_Recip(y))) & R_is_nonneg(y ¥R_MINUS R_0) Use_def(¥R_GT)(Stat1,Stat12*) ==> Stat13: y ¥R_GT R_0 y-->T709(Stat1,Stat13*) ==> R_Recip(y) ¥R_GT R_0 Use_def(¥R_GT)(Stat13*) ==> R_is_nonneg(R_Recip(y) ¥R_MINUS R_0) (R_Recip(y))-->T630(Stat2,Stat2*) ==> (R_Recip(y) ¥R_MINUS R_0) = R_Recip(y) EQUAL(Stat13) ==> Stat14: R_is_nonneg(R_Recip(y)) (R_Recip(y))-->T724(Stat2,Stat14*) ==> abs(R_Recip(y)) = R_Recip(y) EQUAL(Stat10) ==> false; Discharge ==> Stat15: not(R_is_nonneg(y) & (not R_is_nonneg(R_Rev(y)))) y-->T663(Stat1,Stat15*) ==> Stat16: (not R_is_nonneg(y)) & R_is_nonneg(R_Rev(y)) y-->T724(Stat1,Stat16*) ==> Stat17: abs(y) = R_Rev(y) (R_Rev(y))-->T630(Stat4,Stat17*) ==> (R_Rev(y) ¥R_MINUS R_0) = R_Rev(y) EQUAL(Stat10) ==> (R_Recip(R_Rev(y)) /= abs(R_Recip(y))) & R_is_nonneg(R_Rev(y) ¥R_MINUS R_0) Use_def(¥R_GT)(Stat8,Stat17*) ==> Stat18: R_Rev(y) ¥R_GT R_0 (R_Rev(y))-->T709(Stat4,Stat17,Stat18*) ==> R_Recip(R_Rev(y)) ¥R_GT R_0 Use_def(¥R_GT)(Stat13*) ==> Stat19: R_is_nonneg(R_Recip(R_Rev(y)) ¥R_MINUS R_0) (R_Rev(y))-->T647(Stat4,Stat17,Stat8*) ==> Stat20: (R_Recip(R_Rev(y)) in Re) & (R_Recip(R_Rev(y)) /= R_0) (R_Recip(R_Rev(y)))-->T630(Stat20,Stat20*) ==> (R_Recip(R_Rev(y)) ¥R_MINUS R_0) = R_Recip(R_Rev(y)) EQUAL(Stat18) ==> Stat21: R_is_nonneg(R_Recip(R_Rev(y))) (R_Recip(R_Rev(y)))-->T724(Stat20,Stat21*) ==> abs(R_Recip(R_Rev(y))) = R_Recip(R_Rev(y)) y-->T649(Stat1,Stat1*) ==> R_Recip(R_Rev(y)) = R_Rev(R_Recip(y)) EQUAL(Stat10) ==> Stat22: abs(R_Rev(R_Recip(y))) /= abs(R_Recip(y)) (R_Recip(y))-->T727(Stat2,Stat22*) ==> false; Discharge ==> R_Recip(abs(y)) = abs(R_Recip(y)) EQUAL(Stat9*) ==> false; Discharge ==> QED -- -- The equivalent real of a rational number $r$ -- is the real number defined by the constant Cauchy -- sequence all of whose values are $r$. -- Def 69: [Embedding of rationals into reals] ReRa(X) := Cauchy_to_Re(Za ¥PROD {X}) -- -- In preparation for Theorem 736, we need the following two elementary lemmas. -- Theorem 733: (X in Ra) ¥imp (Ra_is_nonneg(X) ¥eq Ra_eqseq(Za ¥PROD {Ra_ABS(X)},Za ¥PROD {X})). Proof: Suppose_not(x0) ==> AUTO x0-->T452(*) ==> Ra_Rev(x0) in Ra T525(*) ==> Stat1: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) & Stat2: (FORALL x | (x in Ra) ¥imp (Ra_ABS(x ¥Ra_PLUS Ra_Rev(x)) = Ra_0)) & Stat3: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) x0-->T543(*) ==> (Za ¥PROD {x0}) in RaCauchy (Ra_Rev(x0))-->T543(*) ==> (Za ¥PROD {Ra_Rev(x0)}) in RaCauchy T539(Stat1*) ==> ((Za ¥PROD {x0}) in RaSeq) & ((Za ¥PROD {Ra_Rev(x0)}) in RaSeq) Suppose ==> Ra_is_nonneg(x0) & (not Ra_eqseq(Za ¥PROD {Ra_ABS(x0)},Za ¥PROD {x0})) x0-->Stat1(Stat1) ==> Ra_ABS(x0) = x0 EQUAL(Stat1) ==> (not Ra_eqseq(Za ¥PROD {x0}, Za ¥PROD {x0})) (Za ¥PROD {x0})-->T546(Stat1*) ==> false; Discharge ==> (not Ra_is_nonneg(x0)) & Ra_eqseq(Za ¥PROD {Ra_ABS(x0)},Za ¥PROD {x0}) x0-->Stat1(Stat1*) ==> Ra_ABS(x0) = Ra_Rev(x0) EQUAL(Stat1) ==> Ra_eqseq(Za ¥PROD {Ra_Rev(x0)},Za ¥PROD {x0}) (Za ¥PROD {Ra_Rev(x0)},Za ¥PROD {x0})-->T541(Stat1*) ==> Stat4: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({i: i in Za | Ra_ABS(((Za ¥PROD {Ra_Rev(x0)})~[i]) ¥Ra_MINUS ((Za ¥PROD {x0})~[i])) ¥Ra_GT eps})) (Ra_Rev(x0),x0)-->T454(*) ==> (Ra_Rev(x0) ¥Ra_MINUS x0) in Ra Suppose ==> (not((Ra_Rev(x0) ¥Ra_MINUS x0) ¥Ra_GT Ra_0)) Use_def(¥Ra_MINUS)(Stat4*) ==> (not((Ra_Rev(x0) ¥Ra_PLUS Ra_Rev(x0)) ¥Ra_GT Ra_0)) x0-->T451(*) ==> (Ra_0 in Ra) & (x0 = (x0 ¥Ra_PLUS Ra_0)) Suppose ==> Ra_Rev(x0) = Ra_0 x0-->Stat2(*) ==> Ra_ABS(x0 ¥Ra_PLUS Ra_Rev(x0)) = Ra_0 (x0,Ra_Rev(x0))-->T445(*) ==> (x0 ¥Ra_PLUS Ra_Rev(x0)) in Ra (x0 ¥Ra_PLUS Ra_Rev(x0))-->Stat3(*) ==> (x0 ¥Ra_PLUS Ra_Rev(x0)) = Ra_0 EQUAL(Stat4) ==> x0 = Ra_0 T465(*) ==> Ra_is_nonneg(Ra_0) EQUAL(Stat1) ==> false; Discharge ==> Ra_Rev(x0) /= Ra_0 x0-->T466(*) ==> Ra_is_nonneg(Ra_Rev(x0)) (Ra_Rev(x0))-->T482(*) ==> Ra_Rev(x0) ¥Ra_GE Ra_0 (Ra_Rev(x0),Ra_0)-->T473(*) ==> Ra_Rev(x0) ¥Ra_GT Ra_0 (Ra_Rev(x0),Ra_0,Ra_Rev(x0),Ra_0)-->T505(*) ==> (Ra_Rev(x0) ¥Ra_PLUS Ra_Rev(x0)) ¥Ra_GT (Ra_0 ¥Ra_PLUS Ra_0) Ra_0-->T451(*) ==> Ra_0 = (Ra_0 ¥Ra_PLUS Ra_0) EQUAL(Stat4) ==> false; Discharge ==> (Ra_Rev(x0) ¥Ra_MINUS x0) ¥Ra_GT Ra_0 (Ra_Rev(x0) ¥Ra_MINUS x0)-->T522(*) ==> Stat5: (EXISTS e in Ra, e0 in Ra | ((Ra_Rev(x0) ¥Ra_MINUS x0) ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & ((Ra_Rev(x0) ¥Ra_MINUS x0) ¥Ra_GT (e ¥Ra_PLUS e0))) (e,e0)-->Stat5(Stat5*) ==> (e in Ra) & (e ¥Ra_GT Ra_0) & ((Ra_Rev(x0) ¥Ra_MINUS x0) ¥Ra_GT e) Suppose ==> Za = {i: i in Za | Ra_ABS(((Za ¥PROD {Ra_Rev(x0)})~[i]) ¥Ra_MINUS ((Za ¥PROD {x0})~[i])) ¥Ra_GT e} e-->Stat4(Stat4*) ==> Finite({i: i in Za | Ra_ABS(((Za ¥PROD {Ra_Rev(x0)})~[i]) ¥Ra_MINUS ((Za ¥PROD {x0})~[i])) ¥Ra_GT e}) EQUAL(Stat5*) ==> Finite(Za) 0-->T206(Stat5*) ==> false; Discharge ==> Stat6: Za /= {i: i in Za | Ra_ABS(((Za ¥PROD {Ra_Rev(x0)})~[i]) ¥Ra_MINUS ((Za ¥PROD {x0})~[i])) ¥Ra_GT e} SIMPLF(Stat6*) ==> Stat7: {i: i in Za} /= {i: i in Za | Ra_ABS(((Za ¥PROD {Ra_Rev(x0)})~[i]) ¥Ra_MINUS ((Za ¥PROD {x0})~[i])) ¥Ra_GT e} i0-->Stat7(Stat7*) ==> Stat8: (i0 in Za) & (not(Ra_ABS(((Za ¥PROD {Ra_Rev(x0)})~[i0]) ¥Ra_MINUS ((Za ¥PROD {x0})~[i0])) ¥Ra_GT e)) Suppose ==> (((Za ¥PROD {Ra_Rev(x0)})~[i0]) = Ra_Rev(x0)) & (((Za ¥PROD {x0})~[i0]) = x0) (Ra_Rev(x0) ¥Ra_MINUS x0)-->T529(Stat4*) ==> Ra_ABS(Ra_Rev(x0) ¥Ra_MINUS x0) = (Ra_Rev(x0) ¥Ra_MINUS x0) EQUAL(Stat5) ==> false; Discharge ==> (not((((Za ¥PROD {Ra_Rev(x0)})~[i0]) = Ra_Rev(x0)) & (((Za ¥PROD {x0})~[i0]) = x0))) Suppose ==> Stat9: ((Za ¥PROD {Ra_Rev(x0)})~[i0]) /= Ra_Rev(x0) Use_def(¥PROD)(Stat9*) ==> (Za ¥PROD {Ra_Rev(x0)}) = {[x,y]: x in Za, y in {Ra_Rev(x0)}} SIMPLF(Stat9*) ==> (Za ¥PROD {Ra_Rev(x0)}) = {[x,Ra_Rev(x0)]: x in Za} APPLY() fcn_symbol(f(yy)->Ra_Rev(x0), g->(Za ¥PROD {Ra_Rev(x0)}), s->Za) ==> (domain(Za ¥PROD {Ra_Rev(x0)}) = Za) & Svm(Za ¥PROD {Ra_Rev(x0)}) & Stat10: (FORALL yy | ((Za ¥PROD {Ra_Rev(x0)})~[yy]) = if yy in Za then Ra_Rev(x0) else 0 end if) i0-->Stat10(Stat8) ==> false; Discharge ==> Stat11: ((Za ¥PROD {x0})~[i0]) /= x0 Use_def(¥PROD)(Stat11*) ==> (Za ¥PROD {x0}) = {[x,y]: x in Za, y in {x0}} SIMPLF(Stat11*) ==> (Za ¥PROD {x0}) = {[x,x0]: x in Za} APPLY() fcn_symbol(f(yy)->x0, g->(Za ¥PROD {x0}), s->Za) ==> (domain(Za ¥PROD {x0}) = Za) & Svm(Za ¥PROD {x0}) & Stat12: (FORALL yy | ((Za ¥PROD {x0})~[yy]) = if yy in Za then x0 else 0 end if) i0-->Stat12(Stat8) ==> false; Discharge ==> QED -- -- -- Theorem 734: (X in Ra) ¥imp (R_is_nonneg(Cauchy_to_Re(Za ¥PROD {X})) ¥eq (ReRa(Ra_ABS(X)) = ReRa(X))). Proof: Suppose_not(y0) ==> AUTO T608(Stat1*) ==> Stat1: (FORALL f in RaCauchy, g in RaCauchy, h in RaCauchy | (Ra_eqseq(f,g) & Ra_eqseq(g,h)) ¥imp Ra_eqseq(f,h)) y0-->T544(*) ==> Stat2: Ras_ABS(Za ¥PROD {y0}) = (Za ¥PROD {Ra_ABS(y0)}) Use_def(ReRa) ==> Stat3: (y0 in Ra) & (not(R_is_nonneg(Cauchy_to_Re(Za ¥PROD {y0})) ¥eq (Cauchy_to_Re(Za ¥PROD {Ra_ABS(y0)}) = Cauchy_to_Re(Za ¥PROD {y0})))) y0-->T527(Stat3*) ==> Ra_ABS(y0) in Ra y0-->T543(Stat3*) ==> Stat4: (Za ¥PROD {y0}) in RaCauchy (Ra_ABS(y0))-->T543(Stat3*) ==> (Za ¥PROD {Ra_ABS(y0)}) in RaCauchy (Za ¥PROD {y0},Za ¥PROD {y0})-->T610(Stat3*) ==> (Cauchy_to_Re(Za ¥PROD {y0}) in Re) & Ra_eqseq(Za ¥PROD {y0},arb(Cauchy_to_Re(Za ¥PROD {y0}))) (Za ¥PROD {Ra_ABS(y0)},Za ¥PROD {y0})-->T610(Stat3*) ==> (Cauchy_to_Re(Za ¥PROD {Ra_ABS(y0)}) in Re) & Ra_eqseq(Za ¥PROD {Ra_ABS(y0)},arb(Cauchy_to_Re(Za ¥PROD {Ra_ABS(y0)}))) & ((Cauchy_to_Re(Za ¥PROD {Ra_ABS(y0)}) = Cauchy_to_Re(Za ¥PROD {y0})) ¥eq (Ra_eqseq(Za ¥PROD {Ra_ABS(y0)},Za ¥PROD {y0}))) (Cauchy_to_Re(Za ¥PROD {y0}))-->T664(Stat3*) ==> R_is_nonneg(Cauchy_to_Re(Za ¥PROD {y0})) ¥eq Ra_eqseq(arb(Cauchy_to_Re(Za ¥PROD {y0})),Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0})))) (Cauchy_to_Re(Za ¥PROD {y0}))-->T611(Stat3*) ==> Stat5: arb(Cauchy_to_Re(Za ¥PROD {y0})) in RaCauchy (arb(Cauchy_to_Re(Za ¥PROD {y0})),arb(Cauchy_to_Re(Za ¥PROD {y0})))-->T556(Stat5,Stat5*) ==> Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0}))) in RaCauchy (Za ¥PROD {y0},Za ¥PROD {y0})-->T556(Stat4,Stat4*) ==> Ras_ABS(Za ¥PROD {y0}) in RaCauchy (Za ¥PROD {y0},arb(Cauchy_to_Re(Za ¥PROD {y0})))-->T576(Stat3*) ==> Stat6: Ra_eqseq(Ras_ABS(Za ¥PROD {y0}),Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0})))) Suppose ==> R_is_nonneg(Cauchy_to_Re(Za ¥PROD {y0})) (Stat3*)ELEM ==> Ra_eqseq(arb(Cauchy_to_Re(Za ¥PROD {y0})),Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0})))) & (not Ra_eqseq(Za ¥PROD {Ra_ABS(y0)},Za ¥PROD {y0})) (Za ¥PROD {y0},arb(Cauchy_to_Re(Za ¥PROD {y0})),Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0}))))-->Stat1(Stat3*) ==> Ra_eqseq(Za ¥PROD {y0},Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0})))) (Ras_ABS(Za ¥PROD {y0}),Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0}))))-->T607(Stat3*) ==> Ra_eqseq(Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0}))),Ras_ABS(Za ¥PROD {y0})) (Za ¥PROD {y0},Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0}))),Ras_ABS(Za ¥PROD {y0}))-->Stat1(Stat3*) ==> Ra_eqseq(Za ¥PROD {y0},Ras_ABS(Za ¥PROD {y0})) (Za ¥PROD {y0},Ras_ABS(Za ¥PROD {y0}))-->T607(Stat3*) ==> Ra_eqseq(Ras_ABS(Za ¥PROD {y0}),Za ¥PROD {y0}) EQUAL(Stat2) ==> false; Discharge ==> (not R_is_nonneg(Cauchy_to_Re(Za ¥PROD {y0}))) (Stat3*)ELEM ==> Stat7: (not Ra_eqseq(arb(Cauchy_to_Re(Za ¥PROD {y0})),Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0}))))) & Ra_eqseq(Za ¥PROD {Ra_ABS(y0)},Za ¥PROD {y0}) EQUAL(Stat2,Stat6) ==> Ra_eqseq(Za ¥PROD {Ra_ABS(y0)},Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0})))) (Za ¥PROD {Ra_ABS(y0)},Za ¥PROD {y0})-->T607(Stat3*) ==> Ra_eqseq(Za ¥PROD {y0},Za ¥PROD {Ra_ABS(y0)}) (Za ¥PROD {y0},arb(Cauchy_to_Re(Za ¥PROD {y0})))-->T607(Stat3*) ==> Ra_eqseq(arb(Cauchy_to_Re(Za ¥PROD {y0})),Za ¥PROD {y0}) (arb(Cauchy_to_Re(Za ¥PROD {y0})),Za ¥PROD {y0},Za ¥PROD {Ra_ABS(y0)})-->Stat1(Stat3*) ==> Ra_eqseq(arb(Cauchy_to_Re(Za ¥PROD {y0})),Za ¥PROD {Ra_ABS(y0)}) (arb(Cauchy_to_Re(Za ¥PROD {y0})),Za ¥PROD {Ra_ABS(y0)},Ras_ABS(arb(Cauchy_to_Re(Za ¥PROD {y0}))))-->Stat1(Stat3*) ==> false; Discharge ==> QED -- -- The following two elementary theorems simply notes that the embedding of rationals into reals -- defined by the function ReRa just introduced is an isomorphism in all respects. -- Theorem 735: [The embedding of rationals into reals preserves all elementary algebraic operations, 1] (Y in Ra) ¥imp ((ReRa(Y) in Re) & (ReRa(Ra_Rev(Y)) = R_Rev(ReRa(Y))) & (R_is_nonneg(ReRa(Y)) ¥eq Ra_is_nonneg(Y)) & (ReRa(Ra_ABS(Y)) = abs(ReRa(Y)))). Proof: Suppose_not(y0) ==> AUTO Use_def(ReRa)(*) ==> Stat1: (ReRa(y0) = Cauchy_to_Re(Za ¥PROD {y0})) & (y0 in Ra) y0-->T543(*) ==> Stat2: (Za ¥PROD {y0}) in RaCauchy (Za ¥PROD {y0},Za ¥PROD {y0})-->T610(Stat1*) ==> Stat3: ReRa(y0) in Re Suppose ==> ReRa(Ra_Rev(y0)) /= R_Rev(ReRa(y0)) (Za ¥PROD {y0})-->T622(*) ==> Cauchy_to_Re(Ras_Rev(Za ¥PROD {y0})) = R_Rev(Cauchy_to_Re(Za ¥PROD {y0})) Use_def(ReRa(Ra_Rev(y0))) ==> AUTO Use_def(Ras_Rev(Za ¥PROD {y0})) ==> AUTO Suppose ==> (Za ¥PROD {Ra_Rev(y0)}) = {[car(p),Ra_Rev(cdr(p))]: p in (Za ¥PROD {y0})} EQUAL ==> false; Discharge ==> Stat4: (Za ¥PROD {Ra_Rev(y0)}) /= {[car(p),Ra_Rev(cdr(p))]: p in (Za ¥PROD {y0})} p1-->Stat4(Stat4*) ==> (p1 in (Za ¥PROD {Ra_Rev(y0)})) ¥eq (p1 notin {[car(p),Ra_Rev(cdr(p))]: p in (Za ¥PROD {y0})}) Use_def(¥PROD) ==> (Za ¥PROD {Ra_Rev(y0)}) = {[x,y]: x in Za, y in {Ra_Rev(y0)}} SIMPLF(Stat4*) ==> (p1 in {[x,Ra_Rev(y0)]: x in Za}) ¥eq (p1 notin {[car(p),Ra_Rev(cdr(p))]: p in (Za ¥PROD {y0})}) Suppose ==> Stat5: (p1 in {[x,Ra_Rev(y0)]: x in Za}) & (p1 notin {[car(p),Ra_Rev(cdr(p))]: p in (Za ¥PROD {y0})}) (x1,[x1,y0])-->Stat5(Stat5*) ==> (x1 in Za) & (p1 = [x1,Ra_Rev(y0)]) & ((p1 /= [car([x1,y0]),Ra_Rev(cdr([x1,y0]))]) or ([x1,y0] notin (Za ¥PROD {y0}))) (x1,y0)-->T9 ==> AUTO EQUAL(Stat5) ==> (p1 = [car([x1,y0]),Ra_Rev(cdr([x1,y0]))]) Use_def(¥PROD)(Stat5*) ==> Stat6: [x1,y0] notin {[x,y]: x in Za, y in {y0}} (x1,y0)-->Stat6(Stat5*) ==> false; Discharge ==> Stat7: (p1 in {[car(p),Ra_Rev(cdr(p))]: p in (Za ¥PROD {y0})}) & (p1 notin {[x,Ra_Rev(y0)]: x in Za}) (p2,car(p2))-->Stat7(Stat7*) ==> Stat8: (p1 = [car(p2),Ra_Rev(cdr(p2))]) & (p2 in (Za ¥PROD {y0})) & ((p1 /= [car(p2),Ra_Rev(y0)]) or (car(p2) notin Za)) Use_def(¥PROD)(Stat8*) ==> Stat9: p2 in {[x,y]: x in Za, y in {y0}} (x2,y2)-->Stat9(Stat8*) ==> Stat10: (x2 in Za) & (y2 = y0) & (p2 = [x2,y2]) & (([car(p2),Ra_Rev(cdr(p2))] /= [car(p2),Ra_Rev(y0)]) or (car(p2) notin Za)) (x2,y2)-->T9 ==> AUTO EQUAL(Stat10) ==> Stat11: (car(p2) = x2) & (cdr(p2) = y0) (Stat10*)ELEM ==> [car(p2),Ra_Rev(cdr(p2))] /= [car(p2),Ra_Rev(y0)] EQUAL(Stat11) ==> false; Discharge ==> Stat12: ReRa(Ra_Rev(y0)) = R_Rev(ReRa(y0)) Suppose ==> Stat13: not(R_is_nonneg(Cauchy_to_Re(Za ¥PROD {y0})) ¥eq Ra_is_nonneg(y0)) y0-->T734(Stat13,Stat1*) ==> Stat14: (not((ReRa(Ra_ABS(y0)) = ReRa(y0)) ¥eq Ra_is_nonneg(y0))) y0-->T733(Stat14,Stat13,Stat1*) ==> Stat15: (not((ReRa(Ra_ABS(y0)) = ReRa(y0)) ¥eq Ra_eqseq(Za ¥PROD {Ra_ABS(y0)},Za ¥PROD {y0}))) Use_def(ReRa)(Stat15*) ==> Stat16: (not((Cauchy_to_Re(Za ¥PROD {Ra_ABS(y0)}) = Cauchy_to_Re(Za ¥PROD {y0})) ¥eq Ra_eqseq(Za ¥PROD {Ra_ABS(y0)},Za ¥PROD {y0}))) y0-->T527(Stat1*) ==> Stat17: Ra_ABS(y0) in Ra (Ra_ABS(y0))-->T543(Stat17*) ==> Stat18: (Za ¥PROD {Ra_ABS(y0)}) in RaCauchy (Za ¥PROD {Ra_ABS(y0)},Za ¥PROD {y0})-->T610(Stat18,Stat2,Stat16*) ==> false; Discharge ==> Stat19: R_is_nonneg(Cauchy_to_Re(Za ¥PROD {y0})) ¥eq Ra_is_nonneg(y0) Use_def(ReRa)(Stat19*) ==> R_is_nonneg(ReRa(y0)) ¥eq Ra_is_nonneg(y0) ELEM ==> ReRa(Ra_ABS(y0)) /= abs(ReRa(y0)) Suppose ==> Stat20: Cauchy_to_Re(Ras_ABS(Za ¥PROD {y0})) /= abs(Cauchy_to_Re(Za ¥PROD {y0})) (Cauchy_to_Re(Za ¥PROD {y0}))-->T724(Stat1,Stat3*) ==> abs(Cauchy_to_Re(Za ¥PROD {y0})) = if R_is_nonneg(Cauchy_to_Re(Za ¥PROD {y0})) then Cauchy_to_Re(Za ¥PROD {y0}) else R_Rev(Cauchy_to_Re(Za ¥PROD {y0})) end if T525(*) ==> Stat21: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) y0-->Stat21(Stat21*) ==> Ra_ABS(y0) = if Ra_is_nonneg(y0) then y0 else Ra_Rev(y0) end if APPLY() if_then_else(p->Ra_is_nonneg(y0),a->y0,b->Ra_Rev(y0),f(x)->Cauchy_to_Re(Za ¥PROD {x})) ==> Cauchy_to_Re(Za ¥PROD {if Ra_is_nonneg(y0) then y0 else Ra_Rev(y0) end if}) = if Ra_is_nonneg(y0) then Cauchy_to_Re(Za ¥PROD {y0}) else Cauchy_to_Re(Za ¥PROD {Ra_Rev(y0)}) end if Use_def(ReRa)(Stat12,Stat12*) ==> R_Rev(Cauchy_to_Re(Za ¥PROD {y0})) = Cauchy_to_Re(Za ¥PROD {Ra_Rev(y0)}) y0-->T544(Stat1,Stat1*) ==> Ras_ABS(Za ¥PROD {y0}) = (Za ¥PROD {Ra_ABS(y0)}) EQUAL(Stat20) ==> Stat22: if Ra_is_nonneg(y0) then Cauchy_to_Re(Za ¥PROD {y0}) else Cauchy_to_Re(Za ¥PROD {Ra_Rev(y0)}) end if /= if R_is_nonneg(Cauchy_to_Re(Za ¥PROD {y0})) then Cauchy_to_Re(Za ¥PROD {y0}) else Cauchy_to_Re(Za ¥PROD {Ra_Rev(y0)}) end if (Stat22,Stat19)ELEM ==> false; Discharge ==> Cauchy_to_Re(Ras_ABS(Za ¥PROD {y0})) = abs(Cauchy_to_Re(Za ¥PROD {y0})) Use_def(ReRa(Ra_ABS(y0))) ==> AUTO Use_def(Ras_ABS(Za ¥PROD {y0})) ==> AUTO Suppose ==> (Za ¥PROD {Ra_ABS(y0)}) = {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})} EQUAL ==> false; Discharge ==> Stat23: (Za ¥PROD {Ra_ABS(y0)}) /= {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})} p8-->Stat23(Stat23*) ==> (p8 in (Za ¥PROD {Ra_ABS(y0)})) ¥eq (p8 notin {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})}) Use_def(¥PROD) ==> (Za ¥PROD {Ra_ABS(y0)}) = {[x,y]: x in Za, y in {Ra_ABS(y0)}} SIMPLF(Stat23*) ==> (p8 in {[x,Ra_ABS(y0)]: x in Za}) ¥eq (p8 notin {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})}) Suppose ==> Stat24: (p8 in {[x,Ra_ABS(y0)]: x in Za}) & (p8 notin {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})}) (x8,[x8,y0])-->Stat24(Stat24*) ==> (x8 in Za) & (p8 = [x8,Ra_ABS(y0)]) & ((p8 /= [car([x8,y0]),Ra_ABS(cdr([x8,y0]))]) or ([x8,y0] notin (Za ¥PROD {y0}))) (x8,y0)-->T9 ==> AUTO EQUAL(Stat24) ==> (p8 = [car([x8,y0]),Ra_ABS(cdr([x8,y0]))]) Use_def(¥PROD)(Stat24*) ==> Stat25: [x8,y0] notin {[x,y]: x in Za, y in {y0}} (x8,y0)-->Stat25(Stat24*) ==> false; Discharge ==> Stat26: (p8 in {[car(p),Ra_ABS(cdr(p))]: p in (Za ¥PROD {y0})}) & (p8 notin {[x,Ra_ABS(y0)]: x in Za}) (p9,car(p9))-->Stat26(Stat26*) ==> Stat27: (p8 = [car(p9),Ra_ABS(cdr(p9))]) & (p9 in (Za ¥PROD {y0})) & ((p8 /= [car(p9),Ra_ABS(y0)]) or (car(p9) notin Za)) Use_def(¥PROD)(Stat27*) ==> Stat28: p9 in {[x,y]: x in Za, y in {y0}} (x9,y9)-->Stat28(Stat27*) ==> Stat29: (x9 in Za) & (y9 = y0) & (p9 = [x9,y9]) & (([car(p9),Ra_ABS(cdr(p9))] /= [car(p9),Ra_ABS(y0)]) or (car(p9) notin Za)) (x9,y9)-->T9 ==> AUTO EQUAL(Stat29) ==> Stat30: (car(p9) = x9) & (cdr(p9) = y0) (Stat29*)ELEM ==> [car(p9),Ra_ABS(cdr(p9))] /= [car(p9),Ra_ABS(y0)] EQUAL(Stat30) ==> false; Discharge ==> QED -- Theorem 736: [The embedding of rationals into reals preserves all elementary algebraic operations, 2] ((X in Ra) & (Y in Ra)) ¥imp ((ReRa(X) in Re) & (ReRa(Y) in Re) & (ReRa(X ¥Ra_PLUS Y) = ReRa(X) ¥R_PLUS ReRa(Y)) & (ReRa(X ¥Ra_TIMES Y) = ReRa(X) ¥R_TIMES ReRa(Y))). Proof: Suppose_not(x0,y0) ==> AUTO Use_def(ReRa)(*) ==> Stat1: (ReRa(x0) = Cauchy_to_Re(Za ¥PROD {x0})) & (ReRa(y0) = Cauchy_to_Re(Za ¥PROD {y0})) & (y0 in Ra) x0-->T543(*) ==> (Za ¥PROD {x0}) in RaCauchy y0-->T543(*) ==> Stat2: (Za ¥PROD {y0}) in RaCauchy (Za ¥PROD {x0},Za ¥PROD {x0})-->T610(Stat1*) ==> ReRa(x0) in Re y0-->T735(Stat1*) ==> Stat3: (ReRa(y0) in Re) & (ReRa(Ra_Rev(y0)) = R_Rev(ReRa(y0))) Suppose ==> Stat4: ReRa(x0 ¥Ra_PLUS y0) /= (ReRa(x0) ¥R_PLUS ReRa(y0)) Use_def(ReRa)(*) ==> ReRa(x0 ¥Ra_PLUS y0) = Cauchy_to_Re(Za ¥PROD {x0 ¥Ra_PLUS y0}) (Za ¥PROD {x0},Za ¥PROD {y0})-->T616(Stat1*) ==> Cauchy_to_Re((Za ¥PROD {x0}) ¥Ras_PLUS (Za ¥PROD {y0})) = (Cauchy_to_Re(Za ¥PROD {x0}) ¥R_PLUS Cauchy_to_Re(Za ¥PROD {y0})) EQUAL(Stat1) ==> Cauchy_to_Re(Za ¥PROD {x0 ¥Ra_PLUS y0}) /= Cauchy_to_Re((Za ¥PROD {x0}) ¥Ras_PLUS (Za ¥PROD {y0})) Suppose ==> (Za ¥PROD {x0 ¥Ra_PLUS y0}) = ((Za ¥PROD {x0}) ¥Ras_PLUS (Za ¥PROD {y0})) EQUAL(Stat4*) ==> false; Discharge ==> (Za ¥PROD {x0 ¥Ra_PLUS y0}) /= ((Za ¥PROD {x0}) ¥Ras_PLUS (Za ¥PROD {y0})) Use_def(¥Ras_PLUS)(Stat4*) ==> Stat5: (Za ¥PROD {x0 ¥Ra_PLUS y0}) /= {[car(p),cdr(p) ¥Ra_PLUS ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})} p3-->Stat5(Stat5*) ==> (p3 in (Za ¥PROD {x0 ¥Ra_PLUS y0})) ¥eq (p3 notin {[car(p),cdr(p) ¥Ra_PLUS ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})}) Use_def(¥PROD) ==> (Za ¥PROD {x0 ¥Ra_PLUS y0}) = {[x,y]: x in Za, y in {x0 ¥Ra_PLUS y0}} SIMPLF(Stat5*) ==> (p3 in {[x,x0 ¥Ra_PLUS y0]: x in Za}) ¥eq (p3 notin {[car(p),cdr(p) ¥Ra_PLUS ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})}) Suppose ==> Stat6: (p3 in {[x,x0 ¥Ra_PLUS y0]: x in Za}) & (p3 notin {[car(p),cdr(p) ¥Ra_PLUS ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})}) (x3,[x3,x0])-->Stat6(Stat6*) ==> (x3 in Za) & (p3 = [x3,x0 ¥Ra_PLUS y0]) & ((p3 /= [car([x3,x0]),cdr([x3,x0]) ¥Ra_PLUS ((Za ¥PROD {y0})~[car([x3,x0])])]) or ([x3,x0] notin (Za ¥PROD {x0}))) (x3,x0)-->T9 ==> AUTO (x3,Za,y0)-->T142(Stat6*) ==> ((Za ¥PROD {y0})~[x3]) = y0 EQUAL(Stat6) ==> ((Za ¥PROD {y0})~[car([x3,x0])]) = y0 EQUAL(Stat6) ==> (p3 = [car([x3,x0]),cdr([x3,x0]) ¥Ra_PLUS ((Za ¥PROD {y0})~[car([x3,x0])])]) Use_def(¥PROD)(Stat6*) ==> Stat7: [x3,x0] notin {[x,y]: x in Za, y in {x0}} (x3,x0)-->Stat7(Stat6*) ==> false; Discharge ==> Stat8: (p3 in {[car(p),cdr(p) ¥Ra_PLUS ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})}) & (p3 notin {[x,x0 ¥Ra_PLUS y0]: x in Za}) (p4,car(p4))-->Stat8(Stat8*) ==> Stat9: (p3 = [car(p4),cdr(p4) ¥Ra_PLUS ((Za ¥PROD {y0})~[car(p4)])]) & (p4 in (Za ¥PROD {x0})) & ((p3 /= [car(p4),x0 ¥Ra_PLUS y0]) or (car(p4) notin Za)) Use_def(¥PROD)(Stat9*) ==> Stat10: p4 in {[x,y]: x in Za, y in {x0}} (x4,y4)-->Stat10(Stat9*) ==> Stat11: (x4 in Za) & (y4 = x0) & (p4 = [x4,y4]) & (([car(p4),cdr(p4) ¥Ra_PLUS ((Za ¥PROD {y0})~[car(p4)])] /= [car(p4),x0 ¥Ra_PLUS y0]) or (car(p4) notin Za)) (x4,y4)-->T9 ==> AUTO EQUAL(Stat11) ==> Stat12: (car(p4) = x4) & (cdr(p4) = y4) (Stat11*)ELEM ==> [car(p4),cdr(p4) ¥Ra_PLUS ((Za ¥PROD {y0})~[car(p4)])] /= [car(p4),x0 ¥Ra_PLUS y0] (car(p4),Za,y0)-->T142(Stat11*) ==> ((Za ¥PROD {y0})~[car(p4)]) = y0 EQUAL(Stat11) ==> false; Discharge ==> Stat13: ReRa(x0 ¥Ra_TIMES y0) /= (ReRa(x0) ¥R_TIMES ReRa(y0)) Use_def(ReRa)(*) ==> ReRa(x0 ¥Ra_TIMES y0) = Cauchy_to_Re(Za ¥PROD {x0 ¥Ra_TIMES y0}) (Za ¥PROD {x0},Za ¥PROD {y0})-->T619(Stat1*) ==> Cauchy_to_Re((Za ¥PROD {x0}) ¥Ras_TIMES (Za ¥PROD {y0})) = (Cauchy_to_Re(Za ¥PROD {x0}) ¥R_TIMES Cauchy_to_Re(Za ¥PROD {y0})) EQUAL ==> Cauchy_to_Re(Za ¥PROD {x0 ¥Ra_TIMES y0}) /= Cauchy_to_Re((Za ¥PROD {x0}) ¥Ras_TIMES (Za ¥PROD {y0})) Suppose ==> (Za ¥PROD {x0 ¥Ra_TIMES y0}) = ((Za ¥PROD {x0}) ¥Ras_TIMES (Za ¥PROD {y0})) EQUAL(Stat13*) ==> false; Discharge ==> (Za ¥PROD {x0 ¥Ra_TIMES y0}) /= ((Za ¥PROD {x0}) ¥Ras_TIMES (Za ¥PROD {y0})) Use_def(¥Ras_TIMES)(Stat13*) ==> Stat14: (Za ¥PROD {x0 ¥Ra_TIMES y0}) /= {[car(p),cdr(p) ¥Ra_TIMES ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})} p6-->Stat14(Stat14*) ==> (p6 in (Za ¥PROD {x0 ¥Ra_TIMES y0})) ¥eq (p6 notin {[car(p),cdr(p) ¥Ra_TIMES ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})}) Use_def(¥PROD) ==> (Za ¥PROD {x0 ¥Ra_TIMES y0}) = {[x,y]: x in Za, y in {x0 ¥Ra_TIMES y0}} SIMPLF(Stat14*) ==> (p6 in {[x,x0 ¥Ra_TIMES y0]: x in Za}) ¥eq (p6 notin {[car(p),cdr(p) ¥Ra_TIMES ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})}) Suppose ==> Stat15: (p6 in {[x,x0 ¥Ra_TIMES y0]: x in Za}) & (p6 notin {[car(p),cdr(p) ¥Ra_TIMES ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})}) (x6,[x6,x0])-->Stat15(Stat15*) ==> (x6 in Za) & (p6 = [x6,x0 ¥Ra_TIMES y0]) & ((p6 /= [car([x6,x0]),cdr([x6,x0]) ¥Ra_TIMES ((Za ¥PROD {y0})~[car([x6,x0])])]) or ([x6,x0] notin (Za ¥PROD {x0}))) (x6,x0)-->T9 ==> AUTO (x6,Za,y0)-->T142(Stat15*) ==> ((Za ¥PROD {y0})~[x6]) = y0 EQUAL(Stat15) ==> ((Za ¥PROD {y0})~[car([x6,x0])]) = y0 EQUAL(Stat15) ==> (p6 = [car([x6,x0]),cdr([x6,x0]) ¥Ra_TIMES ((Za ¥PROD {y0})~[car([x6,x0])])]) Use_def(¥PROD)(Stat15*) ==> Stat16: [x6,x0] notin {[x,y]: x in Za, y in {x0}} (x6,x0)-->Stat16(Stat15*) ==> false; Discharge ==> Stat17: (p6 in {[car(p),cdr(p) ¥Ra_TIMES ((Za ¥PROD {y0})~[car(p)])]: p in (Za ¥PROD {x0})}) & (p6 notin {[x,x0 ¥Ra_TIMES y0]: x in Za}) (p7,car(p7))-->Stat17(Stat17*) ==> Stat18: (p6 = [car(p7),cdr(p7) ¥Ra_TIMES ((Za ¥PROD {y0})~[car(p7)])]) & (p7 in (Za ¥PROD {x0})) & ((p6 /= [car(p7),x0 ¥Ra_TIMES y0]) or (car(p7) notin Za)) Use_def(¥PROD)(Stat18*) ==> Stat19: p7 in {[x,y]: x in Za, y in {x0}} (x7,y7)-->Stat19(Stat18*) ==> Stat20: (x7 in Za) & (y7 = x0) & (p7 = [x7,y7]) & (([car(p7),cdr(p7) ¥Ra_TIMES ((Za ¥PROD {y0})~[car(p7)])] /= [car(p7),x0 ¥Ra_TIMES y0]) or (car(p7) notin Za)) (x7,y7)-->T9 ==> AUTO EQUAL(Stat20) ==> Stat21: (car(p7) = x7) & (cdr(p7) = y7) (Stat20*)ELEM ==> [car(p7),cdr(p7) ¥Ra_TIMES ((Za ¥PROD {y0})~[car(p7)])] /= [car(p7),x0 ¥Ra_TIMES y0] (car(p7),Za,y0)-->T142(Stat20*) ==> ((Za ¥PROD {y0})~[car(p7)]) = y0 EQUAL(Stat20) ==> false; Discharge ==> QED -- Theorem 737: [The embedding of rationals into reals preserves all elementary algebraic operations, 3] ((X in Ra) & (Y in Ra)) ¥imp (ReRa(X ¥Ra_MINUS Y) = (ReRa(X) ¥R_MINUS ReRa(Y))). Proof: Suppose_not(x0,y0) ==> AUTO y0-->T735(*) ==> Stat1: (ReRa(y0) in Re) & (R_Rev(ReRa(y0)) = ReRa(Ra_Rev(y0))) y0-->T452(*) ==> Ra_Rev(y0) in Ra (x0,Ra_Rev(y0))-->T736(*) ==> (ReRa(x0) in Re) & (ReRa(x0) ¥R_PLUS ReRa(Ra_Rev(y0)) = ReRa(x0 ¥Ra_PLUS Ra_Rev(y0))) (ReRa(x0),ReRa(y0))-->T635(Stat1*) ==> (ReRa(x0) ¥R_MINUS ReRa(y0)) = (ReRa(x0) ¥R_PLUS R_Rev(ReRa(y0))) Use_def(¥Ra_MINUS)(*) ==> (x0 ¥Ra_MINUS y0) = (x0 ¥Ra_PLUS Ra_Rev(y0)) EQUAL ==> false; Discharge ==> QED -- Theorem 738: [The embedding of rationals into reals is 1-1] ((X in Ra) & (Y in Ra)) ¥imp ((ReRa(X) = ReRa(Y)) ¥eq (X = Y)). Proof: Suppose_not(v,y) ==> AUTO Suppose ==> (v = y) & (ReRa(v) /= ReRa(y)) EQUAL ==> false; Discharge ==> (ReRa(v) = ReRa(y)) & (v /= y) Use_def(ReRa) ==> Stat1: (Cauchy_to_Re(Za ¥PROD {v}) = Cauchy_to_Re(Za ¥PROD {y})) & (v in Ra) & (y in Ra) & (v /= y) v-->T543(Stat1*) ==> (Za ¥PROD {v}) in RaCauchy y-->T543(Stat1*) ==> (Za ¥PROD {y}) in RaCauchy (Za ¥PROD {v},Za ¥PROD {y})-->T610(Stat1*) ==> Ra_eqseq(Za ¥PROD {v},Za ¥PROD {y}) T539(Stat1*) ==> {Za ¥PROD {v},Za ¥PROD {y}} ¥incin RaSeq (Za ¥PROD {v},Za ¥PROD {y})-->T541(Stat1*) ==> Stat2: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({u: u in Za | Ra_ABS(((Za ¥PROD {v})~[u]) ¥Ra_MINUS ((Za ¥PROD {y})~[u])) ¥Ra_GT eps})) (v,y)-->T454(Stat1*) ==> (v ¥Ra_MINUS y) in Ra (v ¥Ra_MINUS y)-->T527(Stat1*) ==> (Ra_ABS(v ¥Ra_MINUS y) in Ra) & (Ra_ABS(v ¥Ra_MINUS y) ¥Ra_GE Ra_0) y-->T451(Stat1*) ==> (Ra_0 in Ra) & (y = (y ¥Ra_PLUS Ra_0)) Suppose ==> not(Ra_ABS(v ¥Ra_MINUS y) ¥Ra_GT Ra_0) (Ra_ABS(v ¥Ra_MINUS y),Ra_0)-->T473(Stat2*) ==> Ra_ABS(v ¥Ra_MINUS y) = Ra_0 T525(Stat3*) ==> Stat3: (FORALL x | (x in Ra) ¥imp ((Ra_ABS(x) = Ra_0) ¥eq (x = Ra_0))) (v ¥Ra_MINUS y)-->Stat3(Stat2*) ==> (v ¥Ra_MINUS y) = Ra_0 EQUAL(Stat2) ==> (y ¥Ra_PLUS (v ¥Ra_MINUS y)) = y (v,y)-->T455(Stat1*) ==> false; Discharge ==> Ra_ABS(v ¥Ra_MINUS y) ¥Ra_GT Ra_0 (Ra_ABS(v ¥Ra_MINUS y))-->T522(Stat2*) ==> Stat4: (EXISTS e in Ra, e0 in Ra | (Ra_ABS(v ¥Ra_MINUS y) ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (Ra_ABS(v ¥Ra_MINUS y) ¥Ra_GT (e ¥Ra_PLUS e0))) (e,e0)-->Stat4(Stat4*) ==> (e in Ra) & (Ra_ABS(v ¥Ra_MINUS y) ¥Ra_GT e) & (e ¥Ra_GT Ra_0) Suppose ==> Stat5: {u: u in Za | Ra_ABS(((Za ¥PROD {v})~[u]) ¥Ra_MINUS ((Za ¥PROD {y})~[u])) ¥Ra_GT e} = Za e-->Stat2(Stat2*) ==> Finite({u: u in Za | Ra_ABS(((Za ¥PROD {v})~[u]) ¥Ra_MINUS ((Za ¥PROD {y})~[u])) ¥Ra_GT e}) 0-->T206(*) ==> (not Finite(Za)) EQUAL(Stat5) ==> false; Discharge ==> Stat6: {u in Za | Ra_ABS(((Za ¥PROD {v})~[u]) ¥Ra_MINUS ((Za ¥PROD {y})~[u])) ¥Ra_GT e} /= Za u-->Stat6(Stat6*) ==> (u in {u in Za | Ra_ABS(((Za ¥PROD {v})~[u]) ¥Ra_MINUS ((Za ¥PROD {y})~[u])) ¥Ra_GT e}) ¥neq (u in Za) Suppose ==> Stat7: u in {u in Za | Ra_ABS(((Za ¥PROD {v})~[u]) ¥Ra_MINUS ((Za ¥PROD {y})~[u])) ¥Ra_GT e} ()-->Stat7(Stat6*) ==> false; Discharge ==> Stat8: (u notin {u in Za | Ra_ABS(((Za ¥PROD {v})~[u]) ¥Ra_MINUS ((Za ¥PROD {y})~[u])) ¥Ra_GT e}) & (u in Za) u-->Stat8(Stat8*) ==> not(Ra_ABS(((Za ¥PROD {v})~[u]) ¥Ra_MINUS ((Za ¥PROD {y})~[u])) ¥Ra_GT e) (u,Za,v)-->T142(Stat8*) ==> ((Za ¥PROD {v})~[u]) = v (u,Za,y)-->T142(Stat8*) ==> ((Za ¥PROD {y})~[u]) = y EQUAL(Stat4) ==> false; Discharge ==> QED -- Theorem 739: [The embedding of rationals into reals preserves 0 and 1] (ReRa(Ra_0) = R_0) & (ReRa(Ra_1) = R_1). Proof: Suppose_not ==> AUTO Use_def(ReRa(Ra_0)) ==> AUTO --? Use_def(Ra0Seq) ==> AUTO --? Use_def(R_0) ==> AUTO Use_def(Ra0Seq) ==> Ra0Seq = Za ¥PROD {Ra_0} Use_def(R_0) ==> R_0 = Cauchy_to_Re(Ra0Seq) Use_def(ReRa(Ra_1)) ==> AUTO Use_def(Ra1Seq) ==> Ra1Seq = Za ¥PROD {Ra_1} Use_def(R_1) ==> R_1 = Cauchy_to_Re(Ra1Seq) EQUAL ==> false; Discharge ==> QED -- -- The statement concerning isomorphism given above applies to division also, except -- that in this case we should avoid dividing by 0. -- Theorem 740: [The embedding of rationals into reals preserves quotients by nonzero quantities] ((X in Ra) & (Y in Ra) & (Y /= Ra_0)) ¥imp ((R_Recip(ReRa(Y)) = ReRa(Recip(Y))) & ((ReRa(X) ¥R_OVER ReRa(Y)) = ReRa(X ¥Ra_OVER Y))). Proof: Suppose_not(x0,y0) ==> AUTO y0-->T462(*) ==> (Recip(y0) in Ra) & ((y0 ¥Ra_TIMES Recip(y0)) = Ra_1) Suppose ==> R_Recip(ReRa(y0)) /= ReRa(Recip(y0)) (y0,Recip(y0))-->T736(*) ==> (ReRa(y0) in Re) & (ReRa(Recip(y0)) in Re) & (ReRa(y0 ¥Ra_TIMES Recip(y0)) = (ReRa(y0) ¥R_TIMES ReRa(Recip(y0)))) T739(*) ==> ReRa(Ra_1) = R_1 EQUAL ==> (ReRa(y0) ¥R_TIMES ReRa(Recip(y0))) = R_1 -- -- The inequality $ReRa(y0) /= R_0$ follows from the one-one-ness of $ReRa$ and from -- the facts $(y0 /= R_0) & (R_0=ReRa(Ra_0))$. -- Suppose ==> ReRa(y0) = R_0 Ra_0-->T451(Stat1*) ==> Stat1: Ra_0 in Ra T739(Stat1*) ==> ReRa(Ra_0) = R_0 (y0,Ra_0)-->T738(*) ==> false; Discharge ==> ReRa(y0) /= R_0 (ReRa(y0))-->T647(*) ==> (R_Recip(ReRa(y0)) in Re) & ((R_Recip(ReRa(y0)) ¥R_TIMES ReRa(y0)) = R_1) (R_Recip(ReRa(y0)),ReRa(y0),ReRa(Recip(y0)))-->T620(*) ==> (R_Recip(ReRa(y0)) ¥R_TIMES (ReRa(y0) ¥R_TIMES ReRa(Recip(y0)))) = ((R_Recip(ReRa(y0)) ¥R_TIMES ReRa(y0)) ¥R_TIMES ReRa(Recip(y0))) EQUAL ==> (R_Recip(ReRa(y0)) ¥R_TIMES R_1) = (R_1 ¥R_TIMES ReRa(Recip(y0))) (R_Recip(ReRa(y0)))-->T627(*) ==> (R_Recip(ReRa(y0)) ¥R_TIMES R_1) = R_Recip(ReRa(y0)) (ReRa(Recip(y0)))-->T628(*) ==> (R_1 ¥R_TIMES ReRa(Recip(y0))) = ReRa(Recip(y0)) EQUAL ==> false; Discharge ==> Stat2: R_Recip(ReRa(y0)) = ReRa(Recip(y0)) ELEM ==> Stat3: (ReRa(x0) ¥R_OVER ReRa(y0)) /= ReRa(x0 ¥Ra_OVER y0) Use_def(¥Ra_OVER)(Stat3*) ==> Stat4: (ReRa(x0) ¥R_OVER ReRa(y0)) /= ReRa(x0 ¥Ra_TIMES Recip(y0)) Use_def(¥R_OVER)(Stat4*) ==> (ReRa(x0) ¥R_TIMES R_Recip(ReRa(y0))) /= ReRa(x0 ¥Ra_TIMES Recip(y0)) EQUAL(Stat2) ==> (ReRa(x0) ¥R_TIMES ReRa(Recip(y0))) /= ReRa(x0 ¥Ra_TIMES Recip(y0)) (x0,Recip(y0))-->T736(*) ==> false; Discharge ==> QED -- -- Moreover the embedding of rationals into reals defined by ReRa preserves all ordering relationships. -- Theorem 741: [The embedding of rationals into reals preserves ordering] ((X in Ra) & (Y in Ra)) ¥imp (((ReRa(X) ¥R_GE ReRa(Y)) ¥eq (X ¥Ra_GE Y)) & ((ReRa(X) ¥R_GT ReRa(Y)) ¥eq (X ¥Ra_GT Y)) & ((ReRa(Y) ¥R_LE ReRa(X)) ¥eq (Y ¥Ra_LE X)) & ((ReRa(Y) ¥R_LT ReRa(X)) ¥eq (Y ¥Ra_LT X))). Proof: Suppose_not(x0,y0) ==> AUTO (x0,y0)-->T736(*) ==> (ReRa(x0) in Re) & (ReRa(y0) in Re) Suppose ==> (not((ReRa(x0) ¥R_GE ReRa(y0)) ¥eq (x0 ¥Ra_GE y0))) (x0,y0)-->T473(*) ==> Stat1: (not((ReRa(x0) ¥R_GE ReRa(y0)) ¥eq Ra_is_nonneg(x0 ¥Ra_PLUS Ra_Rev(y0)))) Use_def(¥Ra_MINUS)(Stat1*) ==> Stat2: (not((ReRa(x0) ¥R_GE ReRa(y0)) ¥eq Ra_is_nonneg(x0 ¥Ra_MINUS y0))) Use_def(¥R_GE)(Stat2*) ==> (not(R_is_nonneg(ReRa(x0) ¥R_MINUS ReRa(y0)) ¥eq Ra_is_nonneg(x0 ¥Ra_MINUS y0))) (x0,y0)-->T737(*) ==> (ReRa(x0) ¥R_MINUS ReRa(y0)) = ReRa(x0 ¥Ra_MINUS y0) EQUAL(Stat2) ==> (not(R_is_nonneg(ReRa(x0 ¥Ra_MINUS y0)) ¥eq Ra_is_nonneg(x0 ¥Ra_MINUS y0))) (x0,y0)-->T454(*) ==> (x0 ¥Ra_MINUS y0) in Ra (x0 ¥Ra_MINUS y0)-->T735(Stat2*) ==> false; Discharge ==> (ReRa(x0) ¥R_GE ReRa(y0)) ¥eq (x0 ¥Ra_GE y0) Suppose ==> (not((ReRa(x0) ¥R_GT ReRa(y0)) ¥eq (x0 ¥Ra_GT y0))) (x0,y0)-->T473(*) ==> (not((ReRa(x0) ¥R_GT ReRa(y0)) ¥eq ((ReRa(x0) ¥R_GE ReRa(y0)) & (x0 /= y0)))) (x0,y0)-->T738(*) ==> (not((ReRa(x0) ¥R_GT ReRa(y0)) ¥eq ((ReRa(x0) ¥R_GE ReRa(y0)) & (ReRa(x0) /= ReRa(y0))))) (ReRa(x0),ReRa(y0))-->T673(*) ==> false; Discharge ==> (ReRa(x0) ¥R_GT ReRa(y0)) ¥eq (x0 ¥Ra_GT y0) Suppose ==> Stat3: (not((ReRa(y0) ¥R_LE ReRa(x0)) ¥eq (y0 ¥Ra_LE x0))) (y0,x0)-->T473(Stat3*) ==> (not((ReRa(y0) ¥R_LE ReRa(x0)) ¥eq (x0 ¥Ra_GE y0))) (ReRa(y0),ReRa(x0))-->T673(*) ==> false; Discharge ==> (not((ReRa(y0) ¥R_LT ReRa(x0)) ¥eq (y0 ¥Ra_LT x0))) (y0,x0)-->T473(*) ==> (not((ReRa(y0) ¥R_LT ReRa(x0)) ¥eq (x0 ¥Ra_GT y0))) (ReRa(y0),ReRa(x0))-->T673(*) ==> false; Discharge ==> QED -- Theorem 742: [The images of rationals via the embedding form a dense subset of the reals, 1] ((X in Re) & (Eps in Ra) & (Eps ¥Ra_GT Ra_0)) ¥imp (EXISTS y in Ra | Finite({m in Za | Ra_ABS(((arb(X))~[m]) ¥Ra_MINUS y) ¥Ra_GE Eps}) ). Proof+: Suppose_not(x0,eps0) ==> Stat1: (not (EXISTS y in Ra | Finite({m in Za | Ra_ABS(((arb(x0))~[m]) ¥Ra_MINUS y) ¥Ra_GE eps0}) )) & (x0 in Re) & (eps0 in Ra) & (eps0 ¥Ra_GT Ra_0) -- -- Reasoning by contradiction, assume that $x0,eps0$ are a counterexample to -- the statement of this theorem. Moreover, let $eps$ be a rational number below $eps0$. -- eps0-->T522(Stat1*) ==> Stat2: (EXISTS e in Ra, e0 in Ra | (eps0 ¥Ra_GT e) & (e ¥Ra_GT e0) & (e0 ¥Ra_GT Ra_0) & (e ¥Ra_GT Ra_0) & (eps0 ¥Ra_GT (e ¥Ra_PLUS e0))) (eps,e0)-->Stat2(Stat2*) ==> Stat3: (eps in Ra) & (eps0 ¥Ra_GT eps) & (eps ¥Ra_GT Ra_0) -- -- Since $arb(x0)$ is a rational Cauchy sequence, the distance between two -- of its components, beyond a certain subscript value $m0$, does not exceed $eps$. -- To get such an $m0$, it suffices to observe that $Za$, unlike the set -- ${ i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps }$, -- is infinite, so that $Za$ must have a member $m0$ which does not belong to the latter set. -- x0-->T611(Stat1*) ==> Stat4: arb(x0) in RaCauchy Use_def(RaCauchy)(Stat4*) ==> Stat5: arb(x0) in {f in RaSeq | (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS((f~[i]) ¥Ra_MINUS (f~[j])) ¥Ra_GT eps }))} ()-->Stat5(Stat5*) ==> Stat6: (FORALL eps in Ra | (eps ¥Ra_GT Ra_0) ¥imp Finite({ i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps })) & (arb(x0) in RaSeq) eps-->Stat6(Stat3,Stat3*) ==> Stat7: Finite({ i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps }) 0-->T206(Stat7*) ==> (not Finite(Za)) EQUAL(Stat7)==> Stat8: Za /= { i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps } Suppose ==> Stat9: not({ i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps } ¥incin Za) k-->Stat9(Stat9*) ==> (k notin Za) & Stat10: (k in { i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps }) (i0,j0)-->Stat10(Stat9*) ==> (i0 in Za) & (j0 in Za) & ((i0 * j0) notin Za) (i0,j0)-->T333(Stat9*) ==> false; Discharge ==> { i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps } ¥incin Za (Stat8*)ELEM ==> Stat11: not({ i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps } incs Za) m0-->Stat11(Stat11*) ==> Stat12: (m0 in Za) & Stat13: (m0 notin { i * j : i in Za, j in Za | Ra_ABS(((arb(x0))~[i]) ¥Ra_MINUS ((arb(x0))~[j])) ¥Ra_GT eps }) -- -- The distance between two components, beyond $m0$, is therefore smaller than $eps0$; -- because $eps$ is smaller than $eps0$. -- This leads to a contradiction: indeed, if we take $y0 = ((arb(x0))~[m0])$ then -- $y0$ contradicts Stat14 This proves the desired conclusion. -- Loc_def ==> Stat15: y0 = ((arb(x0))~[m0]) (arb(x0),m0)-->T540(Stat6,Stat12,Stat15*) ==> Stat16: y0 in Ra y0-->Stat1(Stat16*) ==> (not Finite({m in Za | Ra_ABS(((arb(x0))~[m]) ¥Ra_MINUS y0) ¥Ra_GE eps0}) ) m0-->T210(Stat12,Stat12*) ==> next(m0) in Za (next(m0),{m in Za | Ra_ABS(((arb(x0))~[m]) ¥Ra_MINUS y0) ¥Ra_GE eps0})-->T189(Stat16*) ==> Stat17: (not(next(m0) incs {m in Za | Ra_ABS(((arb(x0))~[m]) ¥Ra_MINUS y0) ¥Ra_GE eps0})) m1-->Stat17(Stat17*) ==> Stat18: (m1 in {m in Za | Ra_ABS(((arb(x0))~[m]) ¥Ra_MINUS y0) ¥Ra_GE eps0}) & (m1 notin next(m0)) ()-->Stat18(Stat18*) ==> Stat19: (m1 in Za) & (Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS y0) ¥Ra_GE eps0) Use_def(next)(Stat18,Stat18*) ==> m1 notin (m0 + {m0}) (m0,m1)-->T31(Stat12*) ==> m0 in m1 (m1,m0)-->T13(Stat19*) ==> Stat20: m0 ¥incin m1 (m1,m0)-->Stat13(Stat12,Stat19,Stat20*) ==> (not(Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS ((arb(x0))~[m0])) ¥Ra_GT eps)) EQUAL(Stat15) ==> Stat21: (not(Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS y0) ¥Ra_GT eps)) (arb(x0),m1)-->T540(Stat6,Stat19*) ==> ((arb(x0))~[m1]) in Ra ((arb(x0))~[m1],y0)-->T454(Stat16*) ==> Stat22: (((arb(x0))~[m1]) ¥Ra_MINUS y0) in Ra (((arb(x0))~[m1]) ¥Ra_MINUS y0)-->T527(Stat22*) ==> Stat23: Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS y0) in Ra (Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS y0),eps)-->T478(Stat23,Stat3,Stat21*) ==> Stat24: eps ¥Ra_GE Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS y0) (eps0,eps,Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS y0))-->T497(Stat3,Stat1,Stat23,Stat24*) ==> Stat25: eps0 ¥Ra_GT Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS y0) (eps0,Ra_ABS(((arb(x0))~[m1]) ¥Ra_MINUS y0),eps0)-->T497(Stat1,Stat23,Stat19,Stat25*) ==> Stat26: eps0 ¥Ra_GT eps0 (eps0,eps0)-->T473(Stat26*) ==> false; Discharge ==> QED -- --Theorem OM: [The images of rationals via the embedding form a dense subset of the reals, 2] ((X in Re) & (Eps in Re) & (Eps ¥R_GT R_0)) ¥imp (EXISTS y in Ra | Eps ¥R_GT abs(X ¥R_MINUS ReRa(y))). Proof: --Suppose_not(x0,eps) ==> Stat1: (not (EXISTS y in Ra | eps ¥R_GT abs(x0 ¥R_MINUS ReRa(y)))) & (x0 in Re) & (eps in Re) & (eps ¥R_GT R_0) --Tsomehow ==> false; Discharge ==> QED -- -- There is also an elementary 'natural' embedding of signed integers into rationals -- which preserves all operations other than division. -- Def 70: [Embedding of signed integers into rationals] RaSi(X) := Fr_to_Ra([X,[1,0]]) -- Theorem 743: [The embedding of signed integers into rationals preserves all elementary algebraic operations, 1] (X in Si) ¥imp ((RaSi(X) in Ra) & (Ra_is_nonneg(RaSi(X)) ¥eq is_nonneg(X)) & (RaSi(S_Rev(X)) = Ra_Rev(RaSi(X))) & (RaSi(S_ABS(X)) = Ra_ABS(RaSi(X)))). Proof: Suppose_not(x0) ==> AUTO Use_def(RaSi(x0)) ==> AUTO T368(*) ==> Stat1: ([1,0] in Si) & ([1,0] /= [0,0]) & ((Ra_is_nonneg(RaSi(x0)) ¥neq is_nonneg(x0)) or (RaSi(x0) notin Ra) or (RaSi(S_Rev(x0)) /= Ra_Rev(RaSi(x0))) or (RaSi(S_ABS(x0)) /= Ra_ABS(RaSi(x0)))) Suppose ==> RaSi(x0) notin Ra EQUAL ==> Stat2: Fr_to_Ra([x0,[1,0]]) notin Ra ([x0,[1,0]])-->T421(Stat2*) ==> Stat3: [x0,[1,0]] notin Fr (x0,[1,0])-->T432(*) ==> false; Discharge ==> RaSi(x0) in Ra Suppose ==> Fr_to_Ra([S_Rev(x0),[1,0]]) /= Ra_Rev(Fr_to_Ra([x0,[1,0]])) (x0,[1,0])-->T484(*) ==> false; Discharge ==> Stat4: Fr_to_Ra([S_Rev(x0),[1,0]]) = Ra_Rev(Fr_to_Ra([x0,[1,0]])) Use_def(RaSi(S_Rev(x0))) ==> AUTO EQUAL ==> RaSi(S_Rev(x0)) = Ra_Rev(RaSi(x0)) (x0,[1,0])-->T459(*) ==> Ra_is_nonneg(Fr_to_Ra([x0,[1,0]])) ¥eq is_nonneg(x0 ¥S_TIMES [1,0]) x0-->T402(*) ==> (x0 ¥S_TIMES [1,0]) = x0 EQUAL ==> Ra_is_nonneg(RaSi(x0)) ¥eq is_nonneg(x0) (Stat1*)ELEM ==> RaSi(S_ABS(x0)) /= Ra_ABS(RaSi(x0)) Use_def(RaSi(S_ABS(x0))) ==> AUTO EQUAL ==> Stat5: Fr_to_Ra([S_ABS(x0),[1,0]]) /= Ra_ABS(Fr_to_Ra([x0,[1,0]])) Use_def(S_ABS)(Stat5*) ==> Fr_to_Ra([[car(x0)+cdr(x0),0],[1,0]]) /= Ra_ABS(Fr_to_Ra([x0,[1,0]])) T525(Stat6*) ==> Stat6: (FORALL x | Ra_ABS(x) = if Ra_is_nonneg(x) then x else Ra_Rev(x) end if) (Fr_to_Ra([x0,[1,0]]))-->Stat6(Stat6*) ==> Ra_ABS(Fr_to_Ra([x0,[1,0]])) = if Ra_is_nonneg(Fr_to_Ra([x0,[1,0]])) then Fr_to_Ra([x0,[1,0]]) else Ra_Rev(Fr_to_Ra([x0,[1,0]])) end if EQUAL(Stat4) ==> Stat7: Fr_to_Ra([[car(x0)+cdr(x0),0],[1,0]]) /= if is_nonneg(x0) then Fr_to_Ra([x0,[1,0]]) else Ra_Rev(Fr_to_Ra([x0,[1,0]])) end if Use_def(is_nonneg(x0)) ==> AUTO Use_def(S_Rev(x0)) ==> AUTO EQUAL(Stat4) ==> Stat8: Fr_to_Ra([[car(x0)+cdr(x0),0],[1,0]]) /= if (car(x0) incs cdr(x0)) then Fr_to_Ra([x0,[1,0]]) else Fr_to_Ra([[cdr(x0),car(x0)],[1,0]]) end if x0-->T369(*) ==> x0 = [car(x0),cdr(x0)] x0-->T369(*) ==> Stat9: (car(x0) = 0) or (cdr(x0) = 0) Suppose ==> Stat10: cdr(x0) = 0 (Stat10*)ELEM ==> (car(x0) + cdr(x0)) = car(x0) (Stat10*)ELEM ==> Stat11: car(x0) incs cdr(x0) EQUAL(Stat8) ==> Fr_to_Ra([x0,[1,0]]) /= if (car(x0) incs cdr(x0)) then Fr_to_Ra([x0,[1,0]]) else Fr_to_Ra([[cdr(x0),car(x0)],[1,0]]) end if (Stat11)ELEM ==> false; Discharge ==> Stat12: cdr(x0) /= 0 (Stat9*)ELEM ==> car(x0) = 0 (Stat9,Stat12*)ELEM ==> (car(x0) + cdr(x0)) = cdr(x0) (Stat9,Stat12*)ELEM ==> (not(car(x0) incs cdr(x0))) EQUAL(Stat8) ==> false; Discharge ==> QED -- Theorem 744: [The embedding of signed integers into rationals preserves all elementary algebraic operations, 2] ((X in Si) & (Y in Si)) ¥imp ((RaSi(X) in Ra) & (RaSi(Y) in Ra) & (RaSi(X ¥S_PLUS Y) = RaSi(X) ¥Ra_PLUS RaSi(Y)) & (RaSi(X ¥S_TIMES Y) = RaSi(X) ¥Ra_TIMES RaSi(Y))). Proof: Suppose_not(x0,y0) ==> AUTO x0-->T743(*) ==> Stat1: (RaSi(x0) in Ra) & (x0 in Si) y0-->T743(*) ==> Stat2: (RaSi(y0) in Ra) & (y0 in Si) ELEM ==> Stat3: (RaSi(x0 ¥S_PLUS y0) /= RaSi(x0) ¥Ra_PLUS RaSi(y0)) or (RaSi(x0 ¥S_TIMES y0) /= RaSi(x0) ¥Ra_TIMES RaSi(y0)) T368(Stat4*) ==> Stat4: ([1,0] in Si) & ([1,0] /= [0,0]) Use_def(RaSi)(Stat1*) ==> Stat5: (Fr_to_Ra([x0,[1,0]]) in Ra) & (Fr_to_Ra([y0,[1,0]]) in Ra) (x0,[1,0])-->T432(Stat1,Stat4*) ==> Stat6: [x0,[1,0]] in Fr T418(Stat7*) ==> Stat7: (FORALL x in Fr,y in Fr | (Same_frac(x,y) ¥eq Same_frac(y,x)) & Same_frac(x,x)) (Fr_to_Ra([x0,[1,0]]))-->T423(Stat4*) ==> Stat8: arb(Fr_to_Ra([x0,[1,0]])) in Fr (arb(Fr_to_Ra([x0,[1,0]])))-->T431(Stat8*) ==> Stat9: (car(arb(Fr_to_Ra([x0,[1,0]]))) in Si) & (cdr(arb(Fr_to_Ra([x0,[1,0]]))) in Si) Suppose ==> Stat10: RaSi(x0 ¥S_PLUS y0) /= (RaSi(x0) ¥Ra_PLUS RaSi(y0)) Use_def(RaSi)(Stat10*) ==> Fr_to_Ra([x0 ¥S_PLUS y0,[1,0]]) /= (Fr_to_Ra([x0,[1,0]]) ¥Ra_PLUS Fr_to_Ra([y0,[1,0]])) (Fr_to_Ra([x0,[1,0]]),y0,[1,0])-->T438(Stat2*) ==> Stat11: Fr_to_Ra([x0 ¥S_PLUS y0,[1,0]]) /= Fr_to_Ra([(car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES [1,0]) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),(cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES [1,0])]) (car(arb(Fr_to_Ra([x0,[1,0]]))))-->T402(Stat8*) ==> (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES [1,0]) = car(arb(Fr_to_Ra([x0,[1,0]]))) (cdr(arb(Fr_to_Ra([x0,[1,0]]))))-->T402(Stat8*) ==> (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES [1,0]) = cdr(arb(Fr_to_Ra([x0,[1,0]]))) EQUAL(Stat10) ==> Fr_to_Ra([x0 ¥S_PLUS y0,[1,0]]) /= Fr_to_Ra([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]])))]) (cdr(arb(Fr_to_Ra([x0,[1,0]]))),y0)-->T371(Stat2*) ==> Stat12: (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0) in Si (car(arb(Fr_to_Ra([x0,[1,0]]))),cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0)-->T371(Stat8*) ==> (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0)) in Si (Fr_to_Ra([x0,[1,0]]))-->T423(Stat5,Stat5*) ==> Stat13: arb(Fr_to_Ra([x0,[1,0]])) in Fr (arb(Fr_to_Ra([x0,[1,0]])))-->T431(Stat13*) ==> cdr(arb(Fr_to_Ra([x0,[1,0]]))) /= [0,0] (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]]))))-->T432(Stat8*) ==> [car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]])))] in Fr (x0,y0)-->T371(Stat1,Stat2*) ==> Stat14: (x0 ¥S_PLUS y0) in Si (x0 ¥S_PLUS y0,[1,0])-->T432(Stat14,Stat4*) ==> [x0 ¥S_PLUS y0,[1,0]] in Fr ([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]])))],[x0 ¥S_PLUS y0,[1,0]])-->T422(Stat11*) ==> (not(Same_frac([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]])))],[x0 ¥S_PLUS y0,[1,0]]))) -- -- We have just restated the inequality assumed temporarily as inequivalence between two fractions. -- However, Theorem 421 gives us the equivalence between the fractions $[x0,[1,0]]$ and $arb(Fr_to_Ra([x0,[1,0]]))$, -- whence a contradiction easily follows by a merely algebraic argument. -- ([x0,[1,0]])-->T421(Stat6,Stat6*) ==> Same_frac([x0,[1,0]],arb(Fr_to_Ra([x0,[1,0]]))) ([x0,[1,0]],arb(Fr_to_Ra([x0,[1,0]])))-->Stat7(Stat6*) ==> Stat15: Same_frac(arb(Fr_to_Ra([x0,[1,0]])),[x0,[1,0]]) Use_def(Same_frac)(Stat15*) ==> ((car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES cdr([x0,[1,0]])) = (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES car([x0,[1,0]]))) & ((car([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]])))]) ¥S_TIMES cdr([x0 ¥S_PLUS y0,[1,0]])) /= (cdr([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]])))]) ¥S_TIMES car([x0 ¥S_PLUS y0,[1,0]]))) (x0,[1,0])-->T9(Stat15*) ==> (car([x0,[1,0]]) = x0) & (cdr([x0,[1,0]]) = [1,0]) EQUAL(Stat8) ==> car(arb(Fr_to_Ra([x0,[1,0]]))) = (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES x0) (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]]))))-->T9(Stat16*) ==> Stat16: (car([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]])))]) = car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0)) & (cdr([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0),cdr(arb(Fr_to_Ra([x0,[1,0]])))]) = cdr(arb(Fr_to_Ra([x0,[1,0]])))) (x0 ¥S_PLUS y0,[1,0])-->T9(Stat17*) ==> Stat17: (car([x0 ¥S_PLUS y0,[1,0]]) = (x0 ¥S_PLUS y0)) & (cdr([x0 ¥S_PLUS y0,[1,0]]) = [1,0]) (car(arb(Fr_to_Ra([x0,[1,0]]))),cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0)-->T371(Stat12,Stat9*) ==> (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0)) in Si (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0))-->T402(Stat17*) ==> ((car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0)) ¥S_TIMES [1,0]) = (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0)) EQUAL(Stat15) ==> Stat18: ((cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES x0) ¥S_PLUS (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0)) /= (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES (x0 ¥S_PLUS y0)) (y0,cdr(arb(Fr_to_Ra([x0,[1,0]]))),x0)-->T386(Stat1,Stat2,Stat9,Stat18*) ==> false; Discharge ==> RaSi(x0 ¥S_PLUS y0) = (RaSi(x0) ¥Ra_PLUS RaSi(y0)) (Stat3*)ELEM ==> Stat19: RaSi(x0 ¥S_TIMES y0) /= (RaSi(x0) ¥Ra_TIMES RaSi(y0)) Use_def(RaSi)(Stat19*) ==> Fr_to_Ra([x0 ¥S_TIMES y0,[1,0]]) /= (Fr_to_Ra([x0,[1,0]]) ¥Ra_TIMES Fr_to_Ra([y0,[1,0]])) (Fr_to_Ra([x0,[1,0]]),y0,[1,0])-->T439(Stat2*) ==> Stat20: Fr_to_Ra([x0 ¥S_TIMES y0,[1,0]]) /= Fr_to_Ra([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES [1,0]]) (cdr(arb(Fr_to_Ra([x0,[1,0]]))))-->T402(Stat9,Stat9*) ==> (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES [1,0]) = cdr(arb(Fr_to_Ra([x0,[1,0]]))) EQUAL(Stat20) ==> Stat21: Fr_to_Ra([x0 ¥S_TIMES y0,[1,0]]) /= Fr_to_Ra([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]])))]) ([x0,[1,0]])-->T421(Stat6,Stat6*) ==> Stat22: Same_frac([x0,[1,0]],arb(Fr_to_Ra([x0,[1,0]]))) (y0,[1,0])-->T432(Stat2,Stat4*) ==> Stat23: [y0,[1,0]] in Fr ([y0,[1,0]],[y0,[1,0]])-->Stat7(Stat7*) ==> Stat24: Same_frac([y0,[1,0]],[y0,[1,0]]) ([x0,[1,0]],arb(Fr_to_Ra([x0,[1,0]])),[y0,[1,0]],[y0,[1,0]])-->T436(Stat6,Stat23,Stat8,Stat22,Stat24*) ==> Same_frac([car([x0,[1,0]]) ¥S_TIMES car([y0,[1,0]]),cdr([x0,[1,0]]) ¥S_TIMES cdr([y0,[1,0]])],[car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES car([y0,[1,0]]),cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES cdr([y0,[1,0]])]) (x0,[1,0])-->T9(Stat25*) ==> Stat25: (car([x0,[1,0]]) = x0) & (cdr([x0,[1,0]]) = [1,0]) (y0,[1,0])-->T9(Stat26*) ==> Stat26: (car([y0,[1,0]]) = y0) & (cdr([y0,[1,0]]) = [1,0]) (cdr(arb(Fr_to_Ra([x0,[1,0]]))))-->T402(Stat9,Stat9*) ==> (cdr(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES [1,0]) = cdr(arb(Fr_to_Ra([x0,[1,0]]))) ([1,0])-->T402(Stat4,Stat4*) ==> ([1,0] ¥S_TIMES [1,0]) = [1,0] EQUAL(Stat24) ==> Same_frac([x0 ¥S_TIMES y0,[1,0]],[car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]])))]) (x0,y0)-->T371(Stat1,Stat2*) ==> Stat27: (x0 ¥S_TIMES y0) in Si (x0 ¥S_TIMES y0,[1,0])-->T432(Stat27,Stat4*) ==> Stat28: [x0 ¥S_TIMES y0,[1,0]] in Fr (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]]))))-->T10(Stat29*) ==> Stat29: [car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]])))] = [car([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]])))]),cdr([car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]])))])] (Fr_to_Ra([x0,[1,0]]))-->T423(Stat5,Stat5*) ==> Stat30: arb(Fr_to_Ra([x0,[1,0]])) in Fr (arb(Fr_to_Ra([x0,[1,0]])))-->T431(Stat30*) ==> Stat31: (car(arb(Fr_to_Ra([x0,[1,0]]))) in Si) & (cdr(arb(Fr_to_Ra([x0,[1,0]]))) in Si) (car(arb(Fr_to_Ra([x0,[1,0]]))),y0)-->T371(Stat31,Stat2*) ==> Stat32: (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0) in Si (Fr_to_Ra([x0,[1,0]]))-->T423(Stat5,Stat5*) ==> Stat33: arb(Fr_to_Ra([x0,[1,0]])) in Fr (arb(Fr_to_Ra([x0,[1,0]])))-->T431(Stat33*) ==> Stat34: cdr(arb(Fr_to_Ra([x0,[1,0]]))) /= [0,0] (car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]]))))-->T432(Stat31,Stat32,Stat34*) ==> [car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]])))] in Fr ([x0 ¥S_TIMES y0,[1,0]],[car(arb(Fr_to_Ra([x0,[1,0]]))) ¥S_TIMES y0,cdr(arb(Fr_to_Ra([x0,[1,0]])))])-->T422(Stat21*) ==> false; Discharge ==> QED -- Theorem 745: [The embedding of signed integers into rationals preserves all elementary algebraic operations, 3] ((X in Si) & (Y in Si)) ¥imp (RaSi(X ¥S_MINUS Y) = RaSi(X) ¥Ra_MINUS RaSi(Y)). Proof: Suppose_not(x0,y0) ==> AUTO y0-->T743(*) ==> (RaSi(y0) in Ra) & (RaSi(S_Rev(y0)) = Ra_Rev(RaSi(y0))) (x0,y0)-->T398(*) ==> (x0 ¥S_MINUS y0) = (x0 ¥S_PLUS S_Rev(y0)) y0-->T391(*) ==> S_Rev(y0) in Si (x0,S_Rev(y0))-->T744(*) ==> RaSi(x0 ¥S_PLUS S_Rev(y0)) = (RaSi(x0) ¥Ra_PLUS RaSi(S_Rev(y0))) EQUAL ==> RaSi(x0 ¥S_MINUS y0) = (RaSi(x0) ¥Ra_PLUS Ra_Rev(RaSi(y0))) --? Use_def(¥Ra_MINUS)(*) ==> (RaSi(X) ¥Ra_MINUS RaSi(Y)) = (RaSi(x0) ¥Ra_PLUS Ra_Rev(RaSi(y0))) Use_def(¥Ra_MINUS)(*) ==> (RaSi(x0) ¥Ra_MINUS RaSi(y0)) = (RaSi(x0) ¥Ra_PLUS Ra_Rev(RaSi(y0))) EQUAL ==> false; Discharge ==> QED -- Theorem 746: [The embedding of signed integers into rationals is 1-1] ((X in Si) & (Y in Si)) ¥imp ((RaSi(X) = RaSi(Y)) ¥eq (X = Y)). Proof: Suppose_not(x,y) ==> AUTO Suppose ==> x = y EQUAL ==> false; Discharge ==> Stat1: (x in Si) & (y in Si) & (x /= y) & (RaSi(x) = RaSi(y)) Use_def(RaSi)(Stat1*) ==> Stat2: (x in Si) & (y in Si) & (Fr_to_Ra([x,[1,0]]) = Fr_to_Ra([y,[1,0]])) & (x /= y) T420(Stat2*) ==> Stat3: (FORALL u, v | ((u in Fr) & (v in Fr)) ¥imp ((Same_frac(u,v) ¥eq (Fr_to_Ra(u) = Fr_to_Ra(v))))) T211(Stat3*) ==> (1 in Za) 1-->T367(Stat3*) ==> [1,0] in Si TELEM ==> [1,0] /= [0,0] Suppose ==> Stat4: [x,[1,0]] notin {[u,v]: u in Si, v in Si | v /= [0,0]} (x,[1,0])-->Stat4(Stat2*) ==> false; Discharge ==> [x,[1,0]] in {[u,v]: u in Si, v in Si | v /= [0,0]} Suppose ==> Stat5: [y,[1,0]] notin {[u,v]: u in Si, v in Si | v /= [0,0]} (y,[1,0])-->Stat5(Stat2*) ==> false; Discharge ==> [y,[1,0]] in {[u,v]: u in Si, v in Si | v /= [0,0]} Use_def(Fr)(Stat1*) ==> Fr = {[u,v]: u in Si, v in Si | v /= [0,0]} EQUAL(Stat1) ==> ([x,[1,0]] in Fr) & ([y,[1,0]] in Fr) ([x,[1,0]],[y,[1,0]])-->Stat3(Stat2*) ==> Stat6: Same_frac([x,[1,0]],[y,[1,0]]) Use_def(Same_frac)(Stat6*) ==> car([x,[1,0]]) ¥S_TIMES cdr([y,[1,0]]) = cdr([x,[1,0]]) ¥S_TIMES car([y,[1,0]]) TELEM ==> car([x,[1,0]]) = x TELEM ==> cdr([x,[1,0]]) = [1,0] TELEM ==> car([y,[1,0]]) = y TELEM ==> cdr([y,[1,0]]) = [1,0] x-->T402(Stat2,Stat2*) ==> (x ¥S_TIMES [1,0]) = x y-->T401(Stat2,Stat2*) ==> ([1,0] ¥S_TIMES y) = y EQUAL(Stat2) ==> false; Discharge ==> QED -- Theorem 747: [The embedding of signed integers into rationals preserves 0 and 1] RaSi([0,0]) = Ra_0 & RaSi([1,0]) = Ra_1. Proof: Suppose_not ==> AUTO Use_def(RaSi)(*) ==> Stat1: not((Fr_to_Ra([[0,0],[1,0]]) = Ra_0) & (Fr_to_Ra([[1,0],[1,0]]) = Ra_1)) Use_def(Ra_0)(Stat1*) ==> Stat2: Fr_to_Ra([[1,0],[1,0]]) /= Ra_1 Use_def(Ra_1)(Stat2*) ==> false; Discharge ==> QED -- Theorem 748: [The embedding of signed integers into rationals preserves ordering] ((X in Si) & (Y in Si)) ¥imp (((RaSi(X) ¥Ra_GE RaSi(Y)) ¥eq (X ¥S_GE Y)) & ((RaSi(X) ¥Ra_GT RaSi(Y)) ¥eq (X ¥S_GT Y)) & ((RaSi(Y) ¥Ra_LE RaSi(X)) ¥eq (Y ¥S_LE X)) & ((RaSi(Y) ¥Ra_LT RaSi(X)) ¥eq (Y ¥S_LT X))). Proof: Suppose_not(x0,y0) ==> AUTO (x0,y0)-->T428(*) ==> Stat1: ((x0 ¥S_GE y0) ¥eq is_nonneg(x0 ¥S_PLUS S_Rev(y0))) & ((x0 ¥S_GT y0) ¥eq ((x0 ¥S_GE y0) & (x0 /= y0))) & (x0 in Si) & (y0 in Si) (x0,y0)-->T744(*) ==> (RaSi(x0) in Ra) & (RaSi(y0) in Ra) (RaSi(x0),RaSi(y0))-->T473(Stat1*) ==> ((RaSi(x0) ¥Ra_GE RaSi(y0)) ¥eq Ra_is_nonneg(RaSi(x0) ¥Ra_PLUS Ra_Rev(RaSi(y0)))) & ((RaSi(x0) ¥Ra_GT RaSi(y0)) ¥eq ((RaSi(x0) ¥Ra_GE RaSi(y0)) & (RaSi(x0) /= RaSi(y0)))) Suppose ==> not((RaSi(x0) ¥Ra_GE RaSi(y0)) ¥eq (x0 ¥S_GE y0)) (Stat1*)ELEM ==> not(Ra_is_nonneg(RaSi(x0) ¥Ra_PLUS Ra_Rev(RaSi(y0))) ¥eq is_nonneg(x0 ¥S_PLUS S_Rev(y0))) y0-->T743(Stat1,Stat1*) ==> RaSi(S_Rev(y0)) = Ra_Rev(RaSi(y0)) (y0,y0)-->T372(Stat1,Stat1*) ==> Stat2: S_Rev(y0) in Si (x0,S_Rev(y0))-->T744(Stat1,Stat2*) ==> RaSi(x0 ¥S_PLUS S_Rev(y0)) = (RaSi(x0) ¥Ra_PLUS RaSi(S_Rev(y0))) EQUAL(Stat1) ==> Stat3: not(Ra_is_nonneg(RaSi(x0 ¥S_PLUS S_Rev(y0))) ¥eq is_nonneg(x0 ¥S_PLUS S_Rev(y0))) (x0,S_Rev(y0))-->T371(Stat1,Stat2*) ==> (x0 ¥S_PLUS S_Rev(y0)) in Si (x0 ¥S_PLUS S_Rev(y0))-->T743(Stat3*) ==> false; Discharge ==> Stat4: (RaSi(x0) ¥Ra_GE RaSi(y0)) ¥eq (x0 ¥S_GE y0) (x0,y0)-->T746(Stat1,Stat1*) ==> (x0 = y0) ¥eq (RaSi(x0) = RaSi(y0)) (Stat1*)ELEM ==> ((RaSi(x0) ¥Ra_GT RaSi(y0)) ¥eq (x0 ¥S_GT y0)) & (x0 in Si) & (y0 in Si) (y0,x0)-->T428(Stat1*) ==> ((y0 ¥S_LE x0) ¥eq (x0 ¥S_GE y0)) & ((y0 ¥S_LT x0) ¥eq (x0 ¥S_GT y0)) (RaSi(y0),RaSi(x0))-->T473(Stat1*) ==> ((RaSi(y0) ¥Ra_LE RaSi(x0)) ¥eq (RaSi(x0) ¥Ra_GE RaSi(y0))) & ((RaSi(y0) ¥Ra_LT RaSi(x0)) ¥eq (RaSi(x0) ¥Ra_GT RaSi(y0))) ELEM ==> false; Discharge ==> QED -- -- Finally the 'natural' embedding of integers into signed integers -- preserves all operations other than division and subtraction. -- Def 71: [Embedding of integers into signed integers] SiZa(X) := [X,0] -- Theorem 749: [The embedding of integers into signed integers preserves all elementary algebraic operations on integers] ((X in Za) & (Y in Za)) ¥imp ((SiZa(X) in Si) & (SiZa(Y) in Si) & (SiZa(X ¥PLUS Y) = SiZa(X) ¥S_PLUS SiZa(Y)) & (SiZa(X ¥TIMES Y) = SiZa(X) ¥S_TIMES SiZa(Y))). Proof: Suppose_not(x,y) ==> AUTO Use_def(SiZa)(*) ==> Stat1: (x in Za) & (y in Za) & (not(([x,0] in Si) & ([y,0] in Si) & ([x ¥PLUS y,0] = ([x,0] ¥S_PLUS [y,0])) & ([x ¥TIMES y,0] = ([x,0] ¥S_TIMES [y,0])))) x-->T367(Stat1*) ==> [x,0] in Si y-->T367(Stat1*) ==> ([x ¥PLUS y,0] /= ([x,0] ¥S_PLUS [y,0])) or ([x ¥TIMES y,0] /= ([x,0] ¥S_TIMES [y,0])) (x,y)-->T388(Stat1*) ==> false; Discharge ==> QED -- Theorem 750: [The embedding of integers into signed integers is 1-1] ((X in Za) & (Y in Za) & (SiZa(X) = SiZa(Y))) ¥imp (X = Y). Proof: Suppose_not(x,y) ==> AUTO Use_def(SiZa)(*) ==> Stat1: ([x,0] = [y,0]) & (x /= y) (Stat1*)Discharge ==> QED -- Theorem 751: [The embedding of integers into signed integers preserves 0 and 1] (SiZa(0) = [0,0]) & (SiZa(1) = [1,0]). Proof: Suppose_not ==> AUTO Use_def(SiZa)(*) ==> false; Discharge ==> QED -- Theorem 752: [The embedding of integers into signed integers preserves ordering] ((X in Za) & (Y in Za)) ¥imp (((SiZa(X) ¥S_GE SiZa(Y)) ¥eq (X incs Y)) & ((SiZa(X) ¥S_GT SiZa(Y)) ¥eq (Y in X)) & ((SiZa(Y) ¥S_LE SiZa(X)) ¥eq (Y ¥incin X)) & ((SiZa(Y) ¥S_LT SiZa(X)) ¥eq (Y in X))). Proof+: Suppose_not(x,y) ==> AUTO T427(*) ==> Stat1: (FORALL x, y | (S_GE(x,y) ¥eq is_nonneg(x ¥S_PLUS S_Rev(y))) & (S_LE(x,y) ¥eq S_GE(y,x)) & (S_GT(x,y) ¥eq (S_GE(x,y) & (x /= y))) & (S_LT(x,y) ¥eq S_GT(y,x))) (SiZa(x),SiZa(y))-->Stat1(*) ==> (S_GE(SiZa(x),SiZa(y)) ¥eq is_nonneg(SiZa(x) ¥S_PLUS S_Rev(SiZa(y)))) & (S_LE(SiZa(x),SiZa(y)) ¥eq S_GE(SiZa(y),SiZa(x))) & (S_GT(SiZa(x),SiZa(y)) ¥eq (S_GE(SiZa(x),SiZa(y)) & (SiZa(x) /= SiZa(y)))) & (S_LT(SiZa(x),SiZa(y)) ¥eq S_GT(SiZa(y),SiZa(x))) (SiZa(y),SiZa(x))-->Stat1(*) ==> (S_LE(SiZa(y),SiZa(x)) ¥eq S_GE(SiZa(x),SiZa(y))) & (S_GT(SiZa(y),SiZa(x)) ¥eq (S_GE(SiZa(y),SiZa(x)) & (SiZa(y) /= SiZa(x)))) & (S_LT(SiZa(y),SiZa(x)) ¥eq S_GT(SiZa(x),SiZa(y))) Suppose ==> (SiZa(x) ¥S_GE SiZa(y)) ¥neq (x incs y) Use_def(¥S_GE)(*) ==> Stat2: is_nonneg(SiZa(x) ¥S_PLUS S_Rev(SiZa(y))) ¥neq (x incs y) Use_def(SiZa)(Stat2*) ==> is_nonneg([x,0] ¥S_PLUS S_Rev([y,0])) ¥neq (x incs y) Use_def(S_Rev)(Stat2*) ==> is_nonneg([x,0] ¥S_PLUS [cdr([y,0]),car([y,0])]) ¥neq (x incs y) TELEM ==> car([y,0]) = y TELEM ==> cdr([y,0]) = 0 EQUAL(Stat2) ==> Stat3: is_nonneg([x,0] ¥S_PLUS [0,y]) ¥neq (x incs y) Use_def(¥S_PLUS)(Stat3*) ==> is_nonneg(Red([car([x,0]) ¥PLUS car([0,y]),cdr([x,0]) ¥PLUS cdr([0,y])])) ¥neq (x incs y) TELEM ==> car([x,0]) = x TELEM ==> car([0,y]) = 0 TELEM ==> cdr([x,0]) = 0 TELEM ==> cdr([0,y]) = y ELEM ==> Stat4: (x in Za) & (y in Za) ALGEBRA(Stat4) ==> ((x ¥PLUS 0) = x) & ((0 ¥PLUS y) = y) EQUAL(Stat3) ==> Stat5: is_nonneg(Red([x,y])) ¥neq (x incs y) Use_def(Red)(Stat5*) ==> is_nonneg([car([x,y]) ¥MINUS (car([x,y]) * cdr([x,y])),cdr([x,y]) ¥MINUS (car([x,y]) * cdr([x,y]))]) ¥neq (x incs y) TELEM ==> car([x,y]) = x TELEM ==> cdr([x,y]) = y EQUAL(Stat5) ==> Stat6: is_nonneg([x ¥MINUS (x * y),y ¥MINUS (x * y)]) ¥neq (x incs y) Use_def(is_nonneg)(Stat6*) ==> (car([x ¥MINUS (x * y),y ¥MINUS (x * y)]) incs cdr([x ¥MINUS (x * y),y ¥MINUS (x * y)])) ¥neq (x incs y) (x ¥MINUS (x * y),y ¥MINUS (x * y))-->T9(*) ==> (car([x ¥MINUS (x * y),y ¥MINUS (x * y)]) = x ¥MINUS (x * y)) & (cdr([x ¥MINUS (x * y),y ¥MINUS (x * y)]) = y ¥MINUS (x * y)) EQUAL(Stat6) ==> ((x ¥MINUS (x * y)) incs (y ¥MINUS (x * y))) ¥neq (x incs y) (x,y)-->T375(*) ==> Stat7: ((x * y) in Za) & ((x ¥MINUS (x * y)) in Za) & ((y ¥MINUS (x * y)) in Za) (x,x*y)-->T325(*) ==> x = ((x*y) ¥PLUS (x ¥MINUS (x*y))) (y,x*y)-->T325(*) ==> y = ((x*y) ¥PLUS (y ¥MINUS (x*y))) ALGEBRA(Stat4,Stat7) ==> (((x*y) ¥PLUS (x ¥MINUS (x*y))) = ((x ¥MINUS (x*y)) ¥PLUS (x*y))) & (((x*y) ¥PLUS (y ¥MINUS (x*y))) = ((y ¥MINUS (x*y)) ¥PLUS (x*y))) (y ¥MINUS (x*y),x ¥MINUS (x*y),x*y)-->T296(Stat6*) ==> false; Discharge ==> (SiZa(x) ¥S_GE SiZa(y)) ¥eq (x incs y) Suppose ==> (SiZa(x) ¥S_GT SiZa(y)) ¥neq (y in x) Use_def(¥S_GT)(*) ==> (S_GE(SiZa(x),SiZa(y)) & (SiZa(x) /= SiZa(y))) ¥neq (y in x) Suppose ==> (SiZa(x) /= SiZa(y)) ¥neq (x /= y) (x,y)-->T750(*) ==> (SiZa(x) /= SiZa(y)) & (x = y) EQUAL ==> false; Discharge ==> (SiZa(x) /= SiZa(y)) ¥eq (x /= y) EQUAL ==> (S_GE(SiZa(x),SiZa(y)) & (x /= y)) ¥neq (y in x) Use_def(¥S_GE)(*) ==> ((x incs y) & (x /= y)) ¥neq (y in x) (x,y)-->T34(*) ==> false; Discharge ==> (SiZa(x) ¥S_GT SiZa(y)) ¥eq (y in x) Suppose ==> (SiZa(y) ¥S_LE SiZa(x)) ¥neq (y ¥incin x) Use_def(¥S_LE)(*) ==> S_GE(SiZa(x),SiZa(y)) ¥neq (y ¥incin x) Use_def(¥S_GE)(*) ==> false; Discharge ==> (SiZa(y) ¥S_LT SiZa(x)) ¥neq (y in x) Use_def(¥S_LT)(*) ==> S_GT(SiZa(x),SiZa(y)) ¥neq (y in x) Use_def(¥S_GT)(*) ==> false; Discharge ==> QED -- -- The definitions for rational sequences and rational Cauchy sequences given previously -- extend readily to the real case. -- Def 72: [The set of real sequences] ReSeq := {f: f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)} -- Def 73: [Real Cauchy sequences] ReCauchy := {f: f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps}))} -- -- The definitions for pointwise sequence sums given for rational sequences extend with equal ease to the real case. -- Def 74: [Sum of real functions] Def(X ¥Res_PLUS Y) := {[car(p),cdr(p) ¥R_PLUS (Y~[car(p)])]: p in X} Def 75: [Additive inverse of real function] Res_Rev(X) := {[car(p),R_Rev(cdr(p))]: p in X} Def 76: [Absolute values of real function] Res_ABS(X) := {[car(p),abs(cdr(p))]: p in X} Def 77: [Difference of real functions] Def(X ¥Res_MINUS Y) := X ¥Res_PLUS Res_Rev(Y) Def 78: [Product of real functions] Def(X ¥Res_TIMES Y) := {[car(p),cdr(p) ¥R_TIMES (Y~[car(p)])]: p in X} Def 78a: [Quotient of real functions] Def(X ¥Res_OVER Y) := {[car(p),cdr(p) ¥R_OVER (Y~[car(p)])]: p in X | Y~[car(p)] /= R_0} -- -- Next we state and prove various elementary properties of the absolute values of real numbers, -- deriving them from the corresponding properties of rationals and of rational sequences. -- Theorem 753: [Elementary properties of the real absolute value] ((X in Re) & (Y in Re)) ¥imp ((abs(X) in Re) & (abs(Y) in Re) & (abs(X ¥R_TIMES Y) = (abs(X) ¥R_TIMES abs(Y))) & ((abs(X) ¥R_PLUS abs(Y)) ¥R_GE abs(X ¥R_PLUS Y) & (abs(R_Rev(X)) = abs(X)))). Proof: Suppose_not(x,y) ==> AUTO (x,y)-->T726(*) ==> abs(x ¥R_TIMES y) = (abs(x) ¥R_TIMES abs(y)) x-->T727(*) ==> abs(R_Rev(x)) = abs(x) x-->T723(*) ==> Stat1: abs(x) in Re y-->T723(*) ==> Stat2: abs(y) in Re (x,y)-->T731(*) ==> (((abs(x) ¥R_PLUS abs(y)) ¥R_GT abs(x ¥R_PLUS y)) or ((abs(x) ¥R_PLUS abs(y)) = abs(x ¥R_PLUS y))) ELEM ==> Stat3: (x in Re) & (y in Re) ALGEBRA(Stat3) ==> (x ¥R_PLUS y) in Re ALGEBRA(Stat1,Stat2) ==> Stat4: (abs(x) ¥R_PLUS abs(y)) in Re (x ¥R_PLUS y)-->T723(Stat3*) ==> abs(x ¥R_PLUS y) in Re (abs(x) ¥R_PLUS abs(y),abs(x ¥R_PLUS y))-->T680(*) ==> false; Discharge ==> QED -- -- It is obvious that every real Cauchy sequence is a real sequence -- Theorem 754: [Every real Cauchy sequence is a real sequence] ReCauchy ¥incin ReSeq. Proof: Suppose_not ==> Stat1: ReCauchy ¥nincin ReSeq g-->Stat1(Stat1*) ==> Stat2: (g in ReCauchy) & (g notin ReSeq) Use_def(ReCauchy) ==> Stat3: g in {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps}))} ()-->Stat3(Stat2*) ==> false; Discharge ==> QED -- -- Moreover, the range of a real sequence is plainly included in the set of reals; -- its domain is the set of integers, and each of its image elements is a real. -- Theorem 755: [The range of a real sequence is included in the set of reals] (F in ReSeq) ¥imp ((domain(F) = Za) & Svm(F) & (range(F) ¥incin Re) & ((X in Za) ¥imp (F~[X] in Re))). Proof: Suppose_not(f,x) ==> AUTO Use_def(ReSeq) ==> Stat1: f in {g ¥incin (Za ¥PROD Re) | (domain(g) = Za) & Svm(g)} ()-->Stat1 ==> AUTO (f,Za,Re)-->T141 ==> AUTO -- -- For, assuming $f,x$ to be a counterexample, we are led to a contradiction as follows. -- From Theorem 141, we immediately get that the only conclusion of the theorem's assertion -- which can be false is the implication $((x in Za) ¥imp (f~[x] in Re))$. -- However, the only remaining possibility is discarded immediately thanks to Theorem 71. -- (x,f)-->T71(*) ==> false; Discharge ==> QED -- -- The following theorem about real Cauchy sequences is closely analogous -- to Theorem 554 about rational Cauchy sequences. -- Theorem 756: ({F,G} ¥incin ReSeq) ¥imp (((F ¥Res_PLUS G) in ReSeq) & (Res_ABS(G) in ReSeq) & (Res_Rev(G) in ReSeq) & ((F ¥Res_TIMES G) in ReSeq) & ((F ¥Res_PLUS G) = {[u,((F~[u]) ¥R_PLUS (G~[u]))]: u in Za}) & (Res_ABS(G) = {[u,abs(G~[u])]: u in Za}) & (Res_Rev(G) = {[u,R_Rev(G~[u])]: u in Za}) & ((F ¥Res_TIMES G) = {[u,((F~[u]) ¥R_TIMES (G~[u]))]: u in Za})). Proof: Suppose_not(f0,g0) ==> AUTO -- -- Reasoning by contradiction, assume that $f0,g0$ form a counterexample -- to the desired statement. -- f0-->T755(*) ==> Stat1: (domain(f0) = Za) & Svm(f0) & (range(f0) ¥incin Re) g0-->T755(*) ==> Stat2: (domain(g0) = Za) & Svm(g0) & (range(g0) ¥incin Re) Use_def(¥Res_PLUS) ==> (f0 ¥Res_PLUS g0) = {[car(p),cdr(p) ¥R_PLUS (g0~[car(p)])]: p in f0} Use_def(Res_ABS) ==> Res_ABS(g0) = {[car(p),abs(cdr(p))]: p in g0} Use_def(Res_Rev) ==> Res_Rev(g0) = {[car(p),R_Rev(cdr(p))]: p in g0} Use_def(¥Res_TIMES) ==> (f0 ¥Res_TIMES g0) = {[car(p),cdr(p) ¥R_TIMES (g0~[car(p)])]: p in f0} -- -- After unfolding the definitions which are directly involved, -- we recall that $Re$ is closed under addition, multiplication, sign inversion, -- and absolute value operation. This allows us to invoke the THEORY 'pointwise' -- ('pointwiseU' in the monadic case) for each one of these four operations, -- thereby leading to the desired contradiction. -- Suppose ==> Stat3: not(FORALL x in Re, y in Re | (x ¥R_PLUS y) in Re) (x1,y1)-->Stat3 ==> Stat4: (x1 in Re) & (y1 in Re) & ((x1 ¥R_PLUS y1) notin Re) ALGEBRA(Stat4) ==> (x1 ¥R_PLUS y1) in Re; Discharge ==> AUTO Suppose ==> Stat5: not(FORALL x in Re, y in Re | (x ¥R_TIMES y) in Re) (x2,y2)-->Stat5 ==> Stat6: (x2 in Re) & (y2 in Re) & ((x2 ¥R_TIMES y2) notin Re) ALGEBRA(Stat6) ==> (x2 ¥R_TIMES y2) in Re; Discharge ==> AUTO Suppose ==> Stat7: not(FORALL x in Re | abs(x) in Re) x3-->Stat7 ==> (x3 in Re) & (abs(x3) notin Re) x3-->T723 ==> false; Discharge ==> AUTO Suppose ==> Stat8: not(FORALL x in Re | R_Rev(x) in Re) x4-->Stat8 ==> Stat9: (x4 in Re) & (R_Rev(x4) notin Re) ALGEBRA(Stat9) ==> R_Rev(x4) in Re; Discharge ==> AUTO APPLY() pointwise(fq->f0,fp->g0,h->(f0 ¥Res_PLUS g0),d->Za,r->Re,bop(x,y)->(x ¥R_PLUS y)) ==> Stat10: ((f0 ¥Res_PLUS g0) = {[u,((f0~[u]) ¥R_PLUS (g0~[u]))]: u in Za}) & Svm(f0 ¥Res_PLUS g0) & (domain(f0 ¥Res_PLUS g0) = Za) & (range(f0 ¥Res_PLUS g0) ¥incin Re) APPLY() pointwise(fq->f0,fp->g0,h->(f0 ¥Res_TIMES g0),d->Za,r->Re,bop(x,y)->(x ¥R_TIMES y)) ==> Stat11: ((f0 ¥Res_TIMES g0) = {[u,((f0~[u]) ¥R_TIMES (g0~[u]))]: u in Za}) & Svm(f0 ¥Res_TIMES g0) & (domain(f0 ¥Res_TIMES g0) = Za) & (range(f0 ¥Res_TIMES g0) ¥incin Re) APPLY() pointwiseU(fp->g0,h->Res_ABS(g0),d->Za,r->Re,uop(x)->abs(x)) ==> Stat12: (Res_ABS(g0) = {[u,abs(g0~[u])]: u in Za}) & Svm(Res_ABS(g0)) & (domain(Res_ABS(g0)) = Za) & (range(Res_ABS(g0)) ¥incin Re) APPLY() pointwiseU(fp->g0,h->Res_Rev(g0),d->Za,r->Re,uop(x)->R_Rev(x)) ==> Stat13: (Res_Rev(g0) = {[u,R_Rev(g0~[u])]: u in Za}) & Svm(Res_Rev(g0)) & (domain(Res_Rev(g0)) = Za) & (range(Res_Rev(g0)) ¥incin Re) Use_def(ReSeq) ==> ((f0 ¥Res_PLUS g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) or ((f0 ¥Res_TIMES g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) or (Res_ABS(g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) or (Res_Rev(g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) Suppose ==> Stat14: Res_ABS(g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)} Use_def(Svm(Res_ABS(g0))) ==> AUTO (Res_ABS(g0),Za,Re)-->T141(Stat12*) ==> Res_ABS(g0) ¥incin (Za ¥PROD Re) ()-->Stat14(Stat12*) ==> false; Discharge ==> ((f0 ¥Res_PLUS g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) or ((f0 ¥Res_TIMES g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) or (Res_Rev(g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) Suppose ==> Stat15: ((f0 ¥Res_TIMES g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) Use_def(Svm(f0 ¥Res_TIMES g0)) ==> AUTO (f0 ¥Res_TIMES g0,Za,Re)-->T141(Stat11*) ==> (f0 ¥Res_TIMES g0) ¥incin (Za ¥PROD Re) ()-->Stat15(Stat11*) ==> false; Discharge ==> ((f0 ¥Res_PLUS g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) or (Res_Rev(g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) Suppose ==> Stat16: ((f0 ¥Res_PLUS g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)}) Use_def(Svm(f0 ¥Res_PLUS g0)) ==> AUTO (f0 ¥Res_PLUS g0,Za,Re)-->T141(Stat10*) ==> (f0 ¥Res_PLUS g0) ¥incin (Za ¥PROD Re) ()-->Stat16(Stat10*) ==> false; Discharge ==> Stat17: Res_Rev(g0) notin {f ¥incin (Za ¥PROD Re) | (domain(f) = Za) & Svm(f)} Use_def(Svm(Res_Rev(g0))) ==> AUTO (Res_Rev(g0),Za,Re)-->T141(Stat13*) ==> Res_Rev(g0) ¥incin (Za ¥PROD Re) ()-->Stat17(Stat13*) ==> false; Discharge ==> QED -- -- -- It will often be convenient to use the following simplified (and partly repeated) consequences of the preceding result. -- Theorem 757: (({F1,G1} ¥incin ReSeq) & (N in Za)) ¥imp ((F1~[N] in Re) & (G1~[N] in Re) & ((F1 ¥Res_PLUS G1 in ReSeq) & ((F1 ¥Res_PLUS G1)~[N] = (F1~[N]) ¥R_PLUS (G1~[N]))) & (((Res_ABS(G1) in ReSeq) & (Res_ABS(G1)~[N] = abs(G1~[N])))) & (((Res_Rev(G1) in ReSeq) & (Res_Rev(G1)~[N] = R_Rev(G1~[N])))) & (((F1 ¥Res_TIMES G1 in ReSeq) & (F1 ¥Res_TIMES G1)~[N] = ((F1~[N]) ¥R_TIMES (G1~[N]))))). Proof: Suppose_not(f1,g1,n) ==> AUTO ELEM ==> Stat1: n in Za (f1,n)-->T755(*) ==> (f1~[n]) in Re (g1,n)-->T755(*) ==> (g1~[n]) in Re (f1,g1)-->T756(*) ==> ((f1 ¥Res_PLUS g1) in ReSeq) & (Res_ABS(g1) in ReSeq) & (Res_Rev(g1) in ReSeq) & ((f1 ¥Res_TIMES g1) in ReSeq) & ((f1 ¥Res_PLUS g1) = {[n,((f1~[n]) ¥R_PLUS (g1~[n]))]: n in Za}) & (Res_ABS(g1) = {[n,abs(g1~[n])]: n in Za}) & (Res_Rev(g1) = {[n,R_Rev(g1~[n])]: n in Za}) & ((f1 ¥Res_TIMES g1) = {[n,((f1~[n]) ¥R_TIMES (g1~[n]))]: n in Za}) APPLY() fcn_symbol(f(x)->((f1~[x]) ¥R_PLUS (g1~[x])),g->f1 ¥Res_PLUS g1,s->Za) ==> Stat2: (FORALL x | (x in Za) ¥imp (((f1 ¥Res_PLUS g1)~[x]) = ((f1~[x]) ¥R_PLUS (g1~[x])))) APPLY() fcn_symbol(f(x)->abs(g1~[x]),g->Res_ABS(g1),s->Za) ==> Stat3: (FORALL x | (x in Za) ¥imp ((Res_ABS(g1)~[x]) = abs(g1~[x]))) APPLY() fcn_symbol(f(x)->R_Rev(g1~[x]),g->Res_Rev(g1),s->Za) ==> Stat4: (FORALL x | (x in Za) ¥imp ((Res_Rev(g1)~[x]) = R_Rev(g1~[x]))) APPLY() fcn_symbol(f(x)->((f1~[x]) ¥R_TIMES (g1~[x])),g->f1 ¥Res_TIMES g1,s->Za) ==> Stat5: (FORALL x | (x in Za) ¥imp (((f1 ¥Res_TIMES g1)~[x]) = ((f1~[x]) ¥R_TIMES (g1~[x])))) -- n-->Stat2(Stat1,Stat1*) ==> ((f1 ¥Res_PLUS g1)~[n]) = ((f1~[n]) ¥R_PLUS (g1~[n])) n-->Stat3(Stat1,Stat1*) ==> (Res_ABS(g1)~[n]) = abs(g1~[n]) n-->Stat4(Stat1,Stat1*) ==> (Res_Rev(g1)~[n]) = R_Rev(g1~[n]) n-->Stat5(Stat1,Stat1*) ==> ((f1 ¥Res_TIMES g1)~[n]) = ((f1~[n]) ¥R_TIMES (g1~[n])) Discharge ==> QED -- -- We prove next that the set of real Cauchy sequences is closed -- under the pointwise algebraic operations introduced above. -- Theorem 758: ({F,G} ¥incin ReCauchy) ¥imp (((F ¥Res_PLUS G) in ReCauchy) & (Res_ABS(F) in ReCauchy) & (Res_Rev(F) in ReCauchy)). Proof: Suppose_not(fq,fp) ==> AUTO -- -- For suppose that $fq,fp$ form a counterexample to our assertion. -- Use_def(ReCauchy) ==> Stat1: (fq in {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }))}) & Stat2: (fp in {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }))}) ()-->Stat1(Stat1*) ==> Stat3: (fq in ReSeq) & Stat4: (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps })) ()-->Stat2(Stat1*) ==> Stat5: (fp in ReSeq) & Stat6: (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps })) (fq,fp)-->T756(Stat1*) ==> Stat7: ((fq ¥Res_PLUS fp) in ReSeq) (fq,fq)-->T756(Stat1*) ==> Stat8: (Res_ABS(fq) in ReSeq) & (Res_Rev(fq) in ReSeq) -- -- Using the definitions of the functions involved, -- and since, by the preceding theorem, our pointwise operations of real -- sequences produce real sequences, we can argue as follows: -- Suppose ==> (fq ¥Res_PLUS fp) notin ReCauchy -- -- Assuming that $fq ¥Res_PLUS fp$ is not a Cauchy sequence (unlike -- $fq$ and $fp$), there would exist a positive real $eps0$ for which -- the set -- ${ i * j : i in Za, j in Za | abs(((fq ¥Res_PLUS fp)~[i]) ¥R_MINUS ((fq ¥Res_PLUS fp)~[j])) ¥R_GT eps0 }$ -- is infinite, unlike the analogous sets which have $fq$ and $fp$, respectively, -- in place of $fq ¥Res_PLUS fp$, and positive rationals $eps1$ and $eps2$ smaller than -- one half of $eps0$ in place of $eps0$. -- Use_def(ReCauchy) ==> Stat9: (fq ¥Res_PLUS fp) notin {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }))} ()-->Stat9 ==> Stat10: not(FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs(((fq ¥Res_PLUS fp)~[i]) ¥R_MINUS ((fq ¥Res_PLUS fp)~[j])) ¥R_GT eps })) eps0-->Stat10(Stat10) ==> Stat11: (eps0 in Re) & (eps0 ¥R_GT R_0) & (not( Finite({ i * j : i in Za, j in Za | abs(((fq ¥Res_PLUS fp)~[i]) ¥R_MINUS ((fq ¥Res_PLUS fp)~[j])) ¥R_GT eps0 }))) eps0-->T719 ==> Stat12: (EXISTS e in Re, e0 in Re | (eps0 ¥R_GT e) & (e ¥R_GT e0) & (e0 ¥R_GT R_0) & (e ¥R_GT R_0) & (eps0 ¥R_GT (e ¥R_PLUS e0))) (eps1,eps2)-->Stat12 ==> Stat13: (eps1 in Re) & (eps2 in Re) & (eps2 ¥R_GT R_0) & (eps1 ¥R_GT R_0) & (eps0 ¥R_GT (eps1 ¥R_PLUS eps2)) eps1-->Stat4 ==> Finite({ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1 }) eps2-->Stat6 ==> Finite({ i * j : i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2 }) -- -- However, this assumption would lead to conflict with the inequality (holding for all $i,j$) -- $abs((fq ¥Res_PLUS fp)~[i] ¥R_MINUS (fq ¥Res_PLUS fp)~[j]) ¥R_LE abs((fq~[i] ¥R_MINUS fq~[j]) ¥Res_PLUS (fp~[i] ¥R_MINUS fq~[j]))$. -- APPLY() setformer_meet_join(s->Za, t->Za, h(i,j)->(i*j), R(i,j)->(abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1), Q(i,j)->(abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2)) ==> {(i*j): i in Za, j in Za | (abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1) or (abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2)} = ({(i*j): i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1 } + {(i*j): i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2 }) ({ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1 }, { i * j : i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2 })-->T189 ==> Finite({(i*j): i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1 } + {(i*j): i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2 }) EQUAL ==> Finite({(i*j): i in Za, j in Za | (abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1) or (abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2)}) Suppose ==> Stat14: { i * j : i in Za, j in Za | abs(((fq ¥Res_PLUS fp)~[i]) ¥R_MINUS ((fq ¥Res_PLUS fp)~[j])) ¥R_GT eps0 } ¥nincin {(i*j): i in Za, j in Za | (abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1) or (abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2)} (i0,j0)-->Stat14 ==> Stat15: (i0 in Za) & (j0 in Za) & (abs(((fq ¥Res_PLUS fp)~[i0]) ¥R_MINUS ((fq ¥Res_PLUS fp)~[j0])) ¥R_GT eps0) & (not(abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_GT eps1)) & (not(abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_GT eps2)) (fq,fp,i0)-->T757(Stat3,Stat5,Stat15*) ==> Stat16: (fq~[i0] in Re) & (fp~[i0] in Re) & (((fq ¥Res_PLUS fp)~[i0]) = ((fq~[i0]) ¥R_PLUS (fp~[i0]))) (fq,fp,j0)-->T757(Stat3,Stat5,Stat15*) ==> (fq~[j0] in Re) & (fp~[j0] in Re) & (((fq ¥Res_PLUS fp)~[j0]) = ((fq~[j0]) ¥R_PLUS (fp~[j0]))) EQUAL(Stat14) ==> abs((((fq~[i0]) ¥R_PLUS (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_PLUS (fp~[j0])))) ¥R_GT eps0 ALGEBRA(Stat16) ==> (((fq~[i0]) ¥R_MINUS (fq~[j0])) in Re) & (((fp~[i0]) ¥R_MINUS (fp~[j0])) in Re) & (((((fq~[i0]) ¥R_PLUS (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_PLUS (fp~[j0])))) = (((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0])))) ((fq~[i0]) ¥R_MINUS (fq~[j0]))-->T723 ==> abs((fq~[i0]) ¥R_MINUS (fq~[j0])) in Re ((fp~[i0]) ¥R_MINUS (fp~[j0]))-->T723(Stat14) ==> abs((fp~[i0]) ¥R_MINUS (fp~[j0])) in Re (abs((fq~[i0]) ¥R_MINUS (fq~[j0])), eps1)-->T675(Stat13*) ==> eps1 ¥R_GE abs((fq~[i0]) ¥R_MINUS (fq~[j0])) (abs((fp~[i0]) ¥R_MINUS (fp~[j0])), eps2)-->T675(Stat13*) ==> eps2 ¥R_GE abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ALGEBRA(Stat13,Stat13) ==> (eps1 ¥R_PLUS eps2) in Re ALGEBRA(Stat16) ==> ((abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) in Re) & ((((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))) in Re) (((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0])))-->T723(Stat14) ==> abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))) in Re (eps1, abs((fq~[i0]) ¥R_MINUS (fq~[j0])), eps2, abs((fp~[i0]) ¥R_MINUS (fp~[j0])))-->T695(Stat13*) ==> (eps1 ¥R_PLUS eps2) ¥R_GE (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) T722(Stat14) ==> Stat17: (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(x ¥R_PLUS y) ¥R_LE (abs(x) ¥R_PLUS abs(y)))) ((fq~[i0]) ¥R_MINUS (fq~[j0]), (fp~[i0]) ¥R_MINUS (fp~[j0]))-->Stat17(Stat14) ==> abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_LE (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) (abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))), (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0]))))-->T675(Stat14) ==> (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_GE abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))) (eps1 ¥R_PLUS eps2, (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0]))), abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))))-->T668(Stat14) ==> (eps1 ¥R_PLUS eps2) ¥R_GE abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))) EQUAL(Stat15) ==> abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_GT eps0 ((abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0]))), abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))), eps0)-->T678(Stat11*) ==> ((abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0])))) ¥R_GT eps0 (eps1 ¥R_PLUS eps2, (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS abs((fp~[i0]) ¥R_MINUS (fp~[j0]))), eps0)-->T678(Stat11*) ==> (eps1 ¥R_PLUS eps2) ¥R_GT eps0 (eps1 ¥R_PLUS eps2, eps0)-->T675(Stat11*) ==> (eps1 ¥R_PLUS eps2) ¥R_GE eps0 (eps0, eps1 ¥R_PLUS eps2, eps0)-->T677(Stat11*) ==> eps0 ¥R_GT eps0 (eps0,eps0)-->T675(Stat11*) ==> false; Discharge ==> AUTO -- -- Since the inclusion just proves entails that the set on the left-hand side is finite, -- we have reached a contradiction, proving that the pointwise sum of real Cauchy sequences -- is an alike sequence. -- ({(i*j): i in Za, j in Za | (abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps1) or (abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps2)}, { i * j : i in Za, j in Za | abs(((fq ¥Res_PLUS fp)~[i]) ¥R_MINUS ((fq ¥Res_PLUS fp)~[j])) ¥R_GT eps0 })-->T189(Stat11) ==> false; Discharge ==> (Res_ABS(fq) notin ReCauchy) or (Res_Rev(fq) notin ReCauchy) -- -- Assuming next that $Res_ABS(fq)$ is not a Cauchy sequence (unlike $fq$), -- there would exist a positive real $eps3$ for which the set -- ${ i * j : i in Za, j in Za | abs((Res_ABS(fq)~[i]) ¥R_MINUS (Res_ABS(fq)~[j])) ¥R_GT eps3 }$ -- is infinite, unlike the analogous set having $fq$ in place of $Res_ABS(fq)$. -- However, this would lead to a conflict with the inequality (holding for all $i,j$) -- $abs(Res_ABS(fq)~[i] ¥R_MINUS Res_ABS(fq)~[j]) ¥R_LE abs(fq~[i] ¥Re_MINUS fq~[j])$. -- Suppose ==> Res_ABS(fq) notin ReCauchy Use_def(ReCauchy) ==> Stat18: Res_ABS(fq) notin {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }))} ()-->Stat18 ==> Stat19: not(FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((Res_ABS(fq)~[i]) ¥R_MINUS (Res_ABS(fq)~[j])) ¥R_GT eps })) eps3-->Stat19 ==> (eps3 in Re) & (eps3 ¥R_GT R_0) & (not Finite({ i * j : i in Za, j in Za | abs((Res_ABS(fq)~[i]) ¥R_MINUS (Res_ABS(fq)~[j])) ¥R_GT eps3 })) eps3-->Stat4 ==> Finite({ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps3 }) -- -- Indeed, since -- ${ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps3 }$ -- is a superset of -- ${ i * j : i in Za, j in Za | abs(abs(fq~[i]) ¥R_MINUS abs(fq~[j])) ¥R_GT eps3 }$, -- the latter cannot be infinite when the former is finite. -- Suppose ==> Stat20: not({ i * j : i in Za, j in Za | abs((Res_ABS(fq)~[i]) ¥R_MINUS (Res_ABS(fq)~[j])) ¥R_GT eps3 } ¥incin { i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps3 }) (i1,j1)-->Stat20 ==> Stat21: (i1 in Za) & (j1 in Za) & (abs((Res_ABS(fq)~[i1]) ¥R_MINUS (Res_ABS(fq)~[j1])) ¥R_GT eps3) & (not(abs((fq~[i1]) ¥R_MINUS (fq~[j1])) ¥R_GT eps3)) (fq,fq,i1)-->T757(Stat3,Stat21*) ==> ((Res_ABS(fq)~[i1]) = abs(fq~[i1])) & (fq~[i1] in Re) (fq,fq,j1)-->T757(Stat3,Stat21*) ==> ((Res_ABS(fq)~[j1]) = abs(fq~[j1])) & (fq~[j1] in Re) EQUAL(Stat21) ==> abs(abs(fq~[i1]) ¥R_MINUS abs(fq~[j1])) ¥R_GT eps3 (fq~[i1])-->T723 ==> abs(fq~[i1]) in Re (fq~[j1])-->T723 ==> abs(fq~[j1]) in Re ALGEBRA(Stat21) ==> (((fq~[i1]) ¥R_MINUS (fq~[j1])) in Re) & ((abs(fq~[i1]) ¥R_MINUS abs(fq~[j1])) in Re) ((fq~[i1]) ¥R_MINUS (fq~[j1]))-->T723 ==> abs((fq~[i1]) ¥R_MINUS (fq~[j1])) in Re (abs(fq~[i1]) ¥R_MINUS abs(fq~[j1]))-->T723 ==> abs(abs(fq~[i1]) ¥R_MINUS abs(fq~[j1])) in Re T722 ==> Stat22: (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(abs(x) ¥R_PLUS R_Rev(abs(y))) ¥R_LE abs(x ¥R_PLUS R_Rev(y)))) (fq~[i1],fq~[j1])-->Stat22 ==> (abs(abs(fq~[i1]) ¥R_PLUS R_Rev(abs(fq~[j1]))) ¥R_LE abs((fq~[i1]) ¥R_PLUS R_Rev(fq~[j1]))) (abs(fq~[i1]),abs(fq~[j1]))-->T635(Stat21*) ==> abs(fq~[i1]) ¥R_MINUS abs(fq~[j1]) = abs(fq~[i1]) ¥R_PLUS R_Rev(abs(fq~[j1])) (fq~[i1],fq~[j1])-->T635(Stat20*) ==> (fq~[i1]) ¥R_MINUS (fq~[j1]) = (fq~[i1]) ¥R_PLUS R_Rev(fq~[j1]) EQUAL(Stat22) ==> abs(abs(fq~[i1]) ¥R_MINUS abs(fq~[j1])) ¥R_LE abs((fq~[i1]) ¥R_MINUS (fq~[j1])) (abs(abs(fq~[i1]) ¥R_MINUS abs(fq~[j1])), abs((fq~[i1]) ¥R_MINUS (fq~[j1])))-->T675 ==> abs((fq~[i1]) ¥R_MINUS (fq~[j1])) ¥R_GE abs(abs(fq~[i1]) ¥R_MINUS abs(fq~[j1])) (abs((fq~[i1]) ¥R_MINUS (fq~[j1])), abs(abs(fq~[i1]) ¥R_MINUS abs(fq~[j1])), eps3)-->T678 ==> false; Discharge ==> { i * j : i in Za, j in Za | abs((Res_ABS(fq)~[i]) ¥R_MINUS (Res_ABS(fq)~[j])) ¥R_GT eps3 } ¥incin { i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps3 } ({ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps3 }, {i * j : i in Za, j in Za | abs((Res_ABS(fq)~[i]) ¥R_MINUS (Res_ABS(fq)~[j])) ¥R_GT eps3 })-->T189 ==> false; Discharge ==> Res_Rev(fq) notin ReCauchy -- -- Third and last, let us assume that $Res_Rev(fq)$ is not a Cauchy sequence -- (unlike $fq$). Then there would exist a positive real $eps4$ for which the set -- ${ i * j : i in Za, j in Za | abs(Res_Rev(fq)~[i] ¥R_MINUS Res_Rev(fq)~[j]) ¥R_GT eps4 }$ -- is infinite, unlike the analogous set having $fq$ in place of $Res_Rev(fq)$. -- However, this would lead to a conflict with the equality (holding for all $i,j$) -- $abs(Res_Rev(fq)~[i] ¥R_MINUS Res_Rev(fq)~[j]) = abs(fq~[i] ¥R_MINUS fq~[j])$. -- Use_def(ReCauchy) ==> Stat23: Res_Rev(fq) notin {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }))} ()-->Stat23 ==> Stat24: not(FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((Res_Rev(fq)~[i]) ¥R_MINUS (Res_Rev(fq)~[j])) ¥R_GT eps })) eps4-->Stat24 ==> Stat25: (eps4 in Re) & (eps4 ¥R_GT R_0) & (not Finite({ i * j : i in Za, j in Za | abs((Res_Rev(fq)~[i]) ¥R_MINUS (Res_Rev(fq)~[j])) ¥R_GT eps4 })) eps4-->Stat4 ==> Finite({ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps4 }) EQUAL(Stat25) ==> Stat26: { i * j : i in Za, j in Za | abs((Res_Rev(fq)~[i]) ¥R_MINUS (Res_Rev(fq)~[j])) ¥R_GT eps4 } /= { i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps4 } (i2,j2)-->Stat26 ==> Stat27: (i2 in Za) & (j2 in Za) & ((abs((Res_Rev(fq)~[i2]) ¥R_MINUS (Res_Rev(fq)~[j2])) ¥R_GT eps4) ¥eq (not(abs((fq~[i2]) ¥R_MINUS (fq~[j2])) ¥R_GT eps4))) (fq,fq,i2)-->T757(Stat3,Stat27*) ==> Stat28: ((Res_Rev(fq)~[i2]) = R_Rev(fq~[i2])) & (fq~[i2] in Re) (fq,fq,j2)-->T757(Stat3,Stat27*) ==> ((Res_Rev(fq)~[j2]) = R_Rev(fq~[j2])) & (fq~[j2] in Re) EQUAL(Stat26) ==> Stat29: ((abs(R_Rev(fq~[i2]) ¥R_MINUS R_Rev(fq~[j2])) ¥R_GT eps4) ¥eq (not(abs((fq~[i2]) ¥R_MINUS (fq~[j2])) ¥R_GT eps4))) Suppose ==> abs(R_Rev(fq~[i2]) ¥R_MINUS R_Rev(fq~[j2])) /= abs((fq~[i2]) ¥R_MINUS (fq~[j2])) ALGEBRA(Stat28) ==> (abs(R_Rev(fq~[i2]) ¥R_MINUS R_Rev(fq~[j2])) = abs(R_Rev(fq~[i2]) ¥R_PLUS R_Rev(R_Rev(fq~[j2])))) & (((fq~[j2]) ¥R_PLUS R_Rev(fq~[i2])) in Re) & (((fq~[i2]) ¥R_PLUS R_Rev(fq~[j2])) = ((fq~[i2]) ¥R_MINUS (fq~[j2]))) & ((R_Rev(fq~[i2]) ¥R_MINUS R_Rev(fq~[j2])) = ((fq~[j2]) ¥R_PLUS R_Rev(fq~[i2]))) & (R_Rev((fq~[j2]) ¥R_PLUS R_Rev(fq~[i2])) = ((fq~[i2]) ¥R_MINUS (fq~[j2]))) T722 ==> Stat30: (FORALL x | (x in Re) ¥imp (abs(R_Rev(x)) = abs(x))) ((fq~[j2]) ¥R_PLUS R_Rev(fq~[i2]))-->Stat30 ==> abs(R_Rev((fq~[j2]) ¥R_PLUS R_Rev(fq~[i2]))) = abs((fq~[j2]) ¥R_PLUS R_Rev(fq~[i2])) EQUAL(Stat29) ==> false; Discharge ==> Stat31: abs(R_Rev(fq~[i2]) ¥R_MINUS R_Rev(fq~[j2])) = abs((fq~[i2]) ¥R_MINUS (fq~[j2])) Suppose ==> abs(R_Rev(fq~[i2]) ¥R_MINUS R_Rev(fq~[j2])) ¥R_GT eps4 EQUAL(Stat31) ==> abs((fq~[i2]) ¥R_MINUS (fq~[j2])) ¥R_GT eps4 (Stat29)Discharge ==> not(abs(R_Rev(fq~[i2]) ¥R_MINUS R_Rev(fq~[j2])) ¥R_GT eps4) EQUAL(Stat31) ==> not(abs((fq~[i2]) ¥R_MINUS (fq~[j2])) ¥R_GT eps4) (Stat29)Discharge ==> QED -- -- For every Cauchy sequence $f$, there is a subscript $k$ past which the -- distance between any two images $f~[i],f~[j]$ is no larger than any fixed -- positive rational. -- Theorem 759: ((Eps in Re) & (Eps ¥R_GT R_0) & (F in ReCauchy)) ¥imp (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (abs((F~[i]) ¥R_MINUS (F~[j]))) ¥R_GT Eps))). Proof+: Suppose_not(eps,f) ==> AUTO Use_def(ReCauchy) ==> Stat1: (f in {g: g in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((g~[i]) ¥R_MINUS (g~[j])) ¥R_GT eps }))}) & (eps in Re) & (eps ¥R_GT R_0) & Stat2: (not(EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (abs((F~[i]) ¥R_MINUS (F~[j]))) ¥R_GT eps)))) g-->Stat1(Stat1*) ==> (f = g) & (g in ReSeq) & (FORALL eps1 in Re | (eps1 ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((g~[i]) ¥R_MINUS (g~[j])) ¥R_GT eps1 })) EQUAL ==> Stat3: (FORALL eps1 in Re | (eps1 ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps1 })) eps-->Stat3(Stat1*) ==> Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }) APPLY() cauchyseq_lemma2(R(i,j)->(abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps)) ==> Stat4: (EXISTS k in Za | (FORALL i in Za, j in Za | (((i incs k) & (j incs k)) ¥imp (not(abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps))))) k-->Stat4(Stat4*) ==> (k in Za) & Stat5: (FORALL i in Za, j in Za | ((i incs k) & (j incs k)) ¥imp (not(abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps))) k-->Stat2(Stat4*) ==> Stat6: not (FORALL i in Za, j in Za | (((i notin k) & (j notin k)) ¥imp (not (abs((f~[i]) ¥R_MINUS (f~[j]))) ¥R_GT eps))) (i,j)-->Stat6(Stat6*) ==> Stat7: (i in Za) & (j in Za) & (i notin k) & (j notin k) & (abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps) (i,j)-->Stat5(Stat3*) ==> ((i incs k) & (j incs k)) ¥imp (not(abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps)) (Stat7*)ELEM ==> (not((i incs k) & (j incs k))) T206(*) ==> Ord(Za) & Ord(i) & Ord(j) & Ord(k) (k,i)-->T35(*) ==> (i incs k) (k,j)-->T35(*) ==> false; Discharge ==> QED -- -- It is easily seen that the preceding assertion can be reformulated to assert that -- there is a subscript $k$ past which the -- distance between any two images $f~[i],f~[j]$ is smaller than any fixed -- positive rational. -- Theorem 760: ((Eps in Re) & (Eps ¥R_GT R_0) & (F in ReCauchy)) ¥imp (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (Eps ¥R_GT (abs((F~[i]) ¥R_MINUS (F~[j])))) )). Proof: Suppose_not(eps,f) ==> (f in ReCauchy) & (eps in Re) & (eps ¥R_GT R_0) & Stat1: (not(EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (eps ¥R_GT (abs((f~[i]) ¥R_MINUS (f~[j])))) ))) eps-->T720 ==> Stat2: (EXISTS eps0 in Re | ((eps ¥R_GT eps0) & (eps0 ¥R_GT R_0))) eps0-->Stat2 ==> (eps0 in Re) & (eps ¥R_GT eps0) & (eps0 ¥R_GT R_0) (eps0,f)-->T759 ==> Stat3: (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps0)))) k-->Stat3 ==> (k in Za) & Stat4: (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (not (abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps0))) k-->Stat1 ==> Stat5: not(FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (eps ¥R_GT (abs((f~[i]) ¥R_MINUS (f~[j]))))) -- -- Thus we have a positive $eps0$ smaller than $eps$, and a $k$ such that $abs((f~[i]) ¥R_MINUS (f~[j]))$ is no larger than $eps0$ -- if $i$ and $j$ are both larger than $k$. -- (i,j)-->Stat5 ==> (i in Za) & (j in Za) & (i notin k) & (j notin k) & (not(eps ¥R_GT (abs((f~[i]) ¥R_MINUS (f~[j]))))) (i,j)-->Stat4 ==> not(abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps0) T754(*) ==> f in ReSeq (f,i)-->T755 ==> f~[i] in Re (f,j)-->T755 ==> f~[j] in Re ALGEBRA ==> (f~[i]) ¥R_MINUS (f~[j]) in Re ((f~[i]) ¥R_MINUS (f~[j]))-->T723 ==> abs((f~[i]) ¥R_MINUS (f~[j])) in Re (abs((f~[i]) ¥R_MINUS (f~[j])),eps0)-->T669 ==> (eps0 ¥R_GT abs((f~[i]) ¥R_MINUS (f~[j]))) or (eps0 = abs((f~[i]) ¥R_MINUS (f~[j]))) (eps0,abs((f~[i]) ¥R_MINUS (f~[j])))-->T680 ==> eps0 ¥R_GE (abs((f~[i]) ¥R_MINUS (f~[j]))) (eps,eps0,abs((f~[i]) ¥R_MINUS (f~[j])))-->T677 ==> eps ¥R_GT abs((f~[i]) ¥R_MINUS (f~[j])) Discharge ==> QED -- -- Every finite set of reals has an upper bound. -- Theorem 761: ((S ¥incin Re) & Finite(S)) ¥imp (EXISTS u in Re | (FORALL y in S | u ¥R_GE y)). Proof: Suppose_not(s) ==> Stat1: (s ¥incin Re) & Finite(s) & Stat2: (not(EXISTS u in Re | (FORALL y in s | u ¥R_GE y))) -- -- For, assuming the contrary of our thesis to hold for a subset $s$ of $Re$, it is trivial that -- $s$ is non-void (because $Re$ is non-void). -- Suppose ==> s = 0 ALGEBRA ==> R_0 in Re R_0--> Stat2 ==> Stat3: not(FORALL y in s | R_0 ¥R_GE y) y0-->Stat3 ==> false; Discharge ==> Stat4: s /= 0 s-->T0(Stat4*) ==> arb(s) in s -- -- But then, we can exploit one of the clauses of Theorem 690 to draw the desired contradiction. -- T690 ==> Stat5: (FORALL t, x | (Finite(t) & (x in t) & (t ¥incin Re)) ¥imp ((max_Re(t) in t) & ((x = max_Re(t)) or (x ¥R_LT max_Re(t))))) (s,arb(s))-->Stat5(Stat1*) ==> max_Re(s) in Re (max_Re(s))-->Stat2(Stat5*) ==> Stat6: not(FORALL y in s | max_Re(s) ¥R_GE y) y1-->Stat6(Stat6*) ==> (y1 in s) & (not(max_Re(s) ¥R_GE y1)) (s,y1)-->Stat5(Stat1*) ==> (y1 = max_Re(s)) or (y1 ¥R_LT max_Re(s)) (y1,max_Re(s))-->T675(Stat6*) ==> (y1 = max_Re(s)) or (max_Re(s) ¥R_GT y1) (max_Re(s),y1)-->T680(Stat1*) ==> false; Discharge ==> QED -- -- Every real Cauchy sequence has an upper bound. -- Theorem 762: [Every real Cauchy sequence has an upper bound] (F in ReCauchy) ¥imp (EXISTS x in Re | (FORALL y in range(F) | y ¥R_LE x)). Proof+: Suppose_not(f) ==> (f in ReCauchy) & Stat1: (not(EXISTS x in Re | (FORALL y in range(f) | y ¥R_LE x) )) -- -- For let $f$ be a counterexample to our assertion, i.e. a Cauchy sequence having no upper bound. -- Let $i0$ be an unsigned integer past which the distance between any two components of $f$ is -- always smaller than $R_1$. Since $i0$ is a finite set and $f$ a single-valued map, the range -- of $f$ on $i0$ must also be finite. -- T754(*) ==> Stat1a: f in ReSeq f-->T755 ==> Stat2: (domain(f) = Za) & Svm(f) & (range(f) ¥incin Re) ALGEBRA ==> (R_1 in Re) & (R_0 in Re) T693 ==> R_1 ¥R_GT R_0 (R_1,f)-->T760 ==> Stat3: (EXISTS k in Za | (FORALL i in Za, j in Za | ((i notin k) & (j notin k)) ¥imp (R_1 ¥R_GT abs((f~[i]) ¥R_MINUS (f~[j]))) )) i0-->Stat3 ==> Stat3a: (i0 in Za) & Stat4: (FORALL i in Za, j in Za | ((i notin i0) & (j notin i0)) ¥imp (R_1 ¥R_GT abs((f~[i]) ¥R_MINUS (f~[j]))) ) T206 ==> Ord(Za) (Za,i0)-->T13 ==> (i0 ¥incin Za) & Finite(i0) (f,i0)-->T80 ==> Stat5: range(f ¥ON i0) ¥incin Re (f,i0)-->T57 ==> Svm(f ¥ON i0) (f,i0)-->T94 ==> Stat6: domain(f ¥ON i0) = i0 EQUAL ==> Finite(domain(f ¥ON i0)) (f ¥ON i0)-->T192 ==> Stat7: Finite(range(f ¥ON i0)) (f,i0)-->T126 ==> Stat8: range(f ¥ON i0) = {f~[i]: i in domain(f ¥ON i0)} EQUAL(Stat6,Stat8) ==> Stat9: (range(f ¥ON i0) = {f~[i]: i in i0}) EQUAL(Stat7,Stat5,Stat9) ==> Stat10: Finite({f~[i]: i in i0}) & ({f~[i]: i in i0} ¥incin Re) (f,f,i0)-->T757(Stat1a,Stat3a*) ==> Stat10a: f~[i0] in Re ALGEBRA(Stat10a) ==> Stat12: (R_Rev(f~[i0]) in Re) & ((f~[i0] ¥R_PLUS R_1) in Re) & ((R_1 ¥R_PLUS (f~[i0])) in Re) & (R_1 ¥R_PLUS (f~[i0]) = (f~[i0]) ¥R_PLUS R_1) (f~[i0] ¥R_PLUS R_1)-->T201(*) ==> Stat11: Finite({f~[i0] ¥R_PLUS R_1}) -- -- It is easily seen that $f~[i0] ¥R_PLUS R_1$ is an upper bound for the set $f~[j]$ of components of $f$ for which $j notin i0$. -- Indeed, let $j$ be a counterexample to this assertion, i.e. $j notin i0$ and $not((f~[i0] ¥R_PLUS R_1) ¥R_GT f~[j])$. -- But since $R_1 ¥R_GT ((f~[j]) ¥R_PLUS R_Rev(f~[i0]))$ we must have $f~[i0] ¥R_PLUS R_1 ¥R_GT f~[j]$, -- a contradiction proving our claim. -- Suppose ==> Stat13: (EXISTS j in Za | ((j notin i0) & (not(((f~[i0]) ¥R_PLUS R_1) ¥R_GT (f~[j]))))) j-->Stat13 ==> Stat14: (j in Za) & (j notin i0) & Stat15: (not(((f~[i0]) ¥R_PLUS R_1) ¥R_GT (f~[j]))) (j,i0)-->Stat4 ==> R_1 ¥R_GT abs((f~[j]) ¥R_MINUS (f~[i0])) j-->T71(Stat14,Stat2) ==> Stat16: f~[j] in Re ALGEBRA(Stat10a,Stat16) ==> ((f~[j]) ¥R_PLUS R_Rev(f~[i0])) in Re (f~[j],f~[i0])-->T635(Stat10a,Stat16*) ==> ((f~[j]) ¥R_MINUS (f~[i0])) = ((f~[j]) ¥R_PLUS R_Rev(f~[i0])) EQUAL(Stat14) ==> R_1 ¥R_GT abs((f~[j]) ¥R_PLUS R_Rev(f~[i0])) ((f~[j]) ¥R_PLUS R_Rev(f~[i0]))-->T723 ==> abs((f~[j]) ¥R_PLUS R_Rev(f~[i0])) in Re ((f~[j]) ¥R_PLUS R_Rev(f~[i0]))-->T723 ==> abs((f~[j]) ¥R_PLUS R_Rev(f~[i0])) ¥R_GE ((f~[j]) ¥R_PLUS R_Rev(f~[i0])) (R_1,abs((f~[j]) ¥R_PLUS R_Rev(f~[i0])),((f~[j]) ¥R_PLUS R_Rev(f~[i0])))-->T677 ==> R_1 ¥R_GT ((f~[j]) ¥R_PLUS R_Rev(f~[i0])) (f~[i0],f~[i0])-->T680 ==> (f~[i0]) ¥R_GE (f~[i0]) (R_1,(f~[j]) ¥R_PLUS R_Rev(f~[i0]),f~[i0],f~[i0])-->T697 ==> (R_1 ¥R_PLUS (f~[i0])) ¥R_GT (((f~[j]) ¥R_PLUS R_Rev(f~[i0])) ¥R_PLUS (f~[i0])) ALGEBRA(Stat10a,Stat16) ==> ((((f~[j]) ¥R_PLUS R_Rev(f~[i0])) ¥R_PLUS (f~[i0])) = ((f~[j]) ¥R_PLUS (R_Rev(f~[i0]) ¥R_PLUS (f~[i0])))) & (R_Rev(f~[i0]) ¥R_PLUS (f~[i0]) = R_0) & ((f~[j]) ¥R_PLUS R_0 = (f~[j])) EQUAL(Stat12) ==> false; Discharge ==> Stat17: not (EXISTS j in Za | ((j notin i0) & (not(((f~[i0]) ¥R_PLUS R_1) ¥R_GT (f~[j]))))) -- -- By Theorem 761, the finite set -- ${f~[i]: i in i0} + {f~[i0] ¥R_PLUS R_1}$ of reals has an upper bound $r$. -- ({f~[i]: i in i0},{f~[i0] ¥R_PLUS R_1})-->T236(Stat10,Stat11) ==> Finite({f~[i]: i in i0} + {f~[i0] ¥R_PLUS R_1}) ELEM ==> ({f~[i]: i in i0} + {f~[i0] ¥R_PLUS R_1}) ¥incin Re ({f~[i]: i in i0} + {f~[i0] ¥R_PLUS R_1})-->T761 ==> Stat18: (EXISTS u in Re | (FORALL y in ({f~[i]: i in i0} + {f~[i0] ¥R_PLUS R_1}) | u ¥R_GE y)) r-->Stat18 ==> Stat19: (r in Re) & Stat20: (FORALL y in ({f~[i]: i in i0} + {f~[i0] ¥R_PLUS R_1}) | r ¥R_GE y) -- -- But it is easily seen that $r$ must also be an upper bound for the entire Cauchy sequence $f$, -- proving our theorem. -- ELEM ==> (f~[i0] ¥R_PLUS R_1) in {f~[i0] ¥R_PLUS R_1} (f~[i0] ¥R_PLUS R_1)-->Stat20 ==> Stat21: r ¥R_GE (f~[i0] ¥R_PLUS R_1) f-->T73 ==> range(f) = {f~[v]: v in domain(f)} EQUAL ==> range(f) = {f~[v]: v in Za} r-->Stat1 ==> Stat22: (r in Re) & (not (FORALL y in range(f) | y ¥R_LE r)) EQUAL(Stat12) ==> not(FORALL y in {f~[v]: v in Za} | y ¥R_LE r) SIMPLF ==> Stat23: not (FORALL v in Za | f~[v] ¥R_LE r) k-->Stat23 ==> Stat24: (k in Za) & (not((f~[k]) ¥R_LE r)) (f~[k],r)-->T675(Stat24) ==> Stat25: not(r ¥R_GE (f~[k])) k-->T71(Stat2,Stat24) ==> Stat26: ((f~[k]) in Re) & Stat27: ((f~[k]) in range(f)) (f~[k])-->Stat20 ==> Stat28: not((f~[k]) in {f~[i]: i in i0}) k-->Stat28 ==> k notin i0 k-->Stat17 ==> Stat29: ((f~[i0]) ¥R_PLUS R_1) ¥R_GT (f~[k]) ((f~[i0]) ¥R_PLUS R_1,f~[k])-->T680 ==> Stat30: ((f~[i0]) ¥R_PLUS R_1) ¥R_GE (f~[k]) (r,(f~[i0]) ¥R_PLUS R_1,f~[k])-->T668(Stat22,Stat12,Stat26,Stat30,Stat21) ==> Stat31: r ¥R_GE (f~[k]) (Stat25,Stat31*)Discharge ==> QED -- -- As an immediate corollary, every Cauchy sequence has an upper bound -- for the absolute values of its components. -- Theorem 763: (F in ReCauchy) ¥imp (EXISTS x in Re | (FORALL y in range(F) | abs(y) ¥R_LT x )). Proof: Suppose_not(f) ==> (f in ReCauchy) & Stat1: (not(EXISTS x in Re | (FORALL y in range(f) | abs(y) ¥R_LT x) )) T754(*) ==> f in ReSeq f-->T755 ==> (domain(f) = Za) & Svm(f) & (range(f) ¥incin Re) (f,f)-->T758 ==> Res_ABS(f) in ReCauchy (f,f)-->T756 ==> Res_ABS(f) = {[u, abs(f~[u])]: u in Za} (Res_ABS(f))-->T762 ==> Stat2: (EXISTS x in Re | (FORALL y in range(Res_ABS(f)) | y ¥R_LE x )) c-->Stat2 ==> (c in Re) & Stat3: (FORALL y in range(Res_ABS(f)) | y ¥R_LE c ) ALGEBRA ==> (R_0 in Re) & (R_1 in Re) & ((c ¥R_PLUS R_1) in Re) (c ¥R_PLUS R_1)-->Stat1 ==> Stat4: not(FORALL y in range(f) | abs(y) ¥R_LT (c ¥R_PLUS R_1)) d-->Stat4 ==> (d in range(f)) & (not(abs(d) ¥R_LT (c ¥R_PLUS R_1))) Suppose ==> abs(d) notin range(Res_ABS(f)) f-->T73 ==> Stat5: d in {f~[x]: x in domain(f)} a-->Stat5 ==> (d = f~[a]) & (a in Za) TELEM ==> range({[u, abs(f~[u])]: u in Za}) = {abs(f~[u]): u in Za} EQUAL ==> (range(Res_ABS(f)) = {abs(f~[u]): u in Za}) & (abs(d) = abs(f~[a])) ELEM ==> Stat6: abs(d) notin {abs(f~[u]): u in Za} a-->Stat6 ==> false; Discharge ==> abs(d) in range(Res_ABS(f)) (abs(d))-->Stat3 ==> abs(d) ¥R_LE c (abs(d),c)-->T675 ==> c ¥R_GE abs(d) T693 ==> R_1 ¥R_GT R_0 d-->T723 ==> abs(d) in Re (c,abs(d),R_1,R_0)-->T696 ==> (c ¥R_PLUS R_1) ¥R_GT (abs(d) ¥R_PLUS R_0) ALGEBRA ==> (abs(d) ¥R_PLUS R_0) = abs(d) EQUAL ==> (c ¥R_PLUS R_1) ¥R_GT abs(d) (abs(d),c ¥R_PLUS R_1)-->T675 ==> false; Discharge ==> QED -- -- -- Theorem 764: ({F,G} ¥incin ReCauchy) ¥imp (((F ¥Res_MINUS G) in ReCauchy) & ((F ¥Res_TIMES G) in ReCauchy)). Proof: Suppose_not(fq,fp) ==> AUTO -- -- Reasoning by contradiction, assume that $fq,fp$ form a counterexample -- to the desired statement. We readily discard the possibility that -- $(fq ¥Res_MINUS fp) notin ReCauchy$. Only the possibility that -- $(fq ¥Res_TIMES fp) notin ReCauchy$ must be analyzed in detail, and -- we will reach a contradiction in this case also. -- Suppose ==> Stat1: (fq ¥Res_MINUS fp) notin ReCauchy Use_def(¥Res_MINUS)(Stat1*) ==> (fq ¥Res_PLUS Res_Rev(fp)) notin ReCauchy (fp,fp)-->T758(*) ==> Res_Rev(fp) in ReCauchy (fq,Res_Rev(fp))-->T758(*) ==> false; Discharge ==> Stat2: ({fp,fq} ¥incin ReCauchy) & ((fq ¥Res_TIMES fp) notin ReCauchy) -- -- Assuming that $fq ¥Res_TIMES fp$ is not a Cauchy sequence (unlike -- $fq$ and $fp$), there would exist a positive real $eps0$ for which -- the set -- ${ i * j : i in Za, j in Za | abs(((fq ¥Res_TIMES fp)~[i]) ¥R_MINUS ((fq ¥Res_TIMES fp)~[j])) ¥R_GT eps0 }$ -- is infinite, unlike the analogous sets which have $fp$ and $fq$, respectively, -- in place of $fq ¥Res_TIMES fp$ and have, in place of $eps0$, positive reals -- $eps1$ and $eps2$ smaller than one half of $eps0 ¥R_OVER m$, where $m$ is chosen -- to be larger than the absolute value of any component of $fq$ and of any component -- of $fp$. -- Use_def(ReCauchy)(Stat2*) ==> Stat3: (fq ¥Res_TIMES fp) notin {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }))} & Stat4: fq in {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }))} & Stat5: fp in {f in ReSeq | (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((f~[i]) ¥R_MINUS (f~[j])) ¥R_GT eps }))} ()-->Stat4(Stat3*) ==> Stat6: (fq in ReSeq) & Stat7: (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps })) ()-->Stat5(Stat3*) ==> Stat8: (fp in ReSeq) & Stat9: (FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps })) fq-->T755(Stat6,Stat6*) ==> Stat10: (domain(fq) = Za) & Svm(fq) & (range(fq) ¥incin Re) fp-->T755(Stat8,Stat8*) ==> Stat11: (domain(fp) = Za) & Svm(fp) & (range(fp) ¥incin Re) (fq,fp)-->T756(Stat6*) ==> Stat12: ((fq ¥Res_TIMES fp) in ReSeq) & Stat13: ((fq ¥Res_TIMES fp) = {[u,((fq~[u]) ¥R_TIMES (fp~[u]))]: u in Za}) ()-->Stat3(Stat3*) ==> Stat14: not(FORALL eps in Re | (eps ¥R_GT R_0) ¥imp Finite({ i * j : i in Za, j in Za | abs(((fq ¥Res_TIMES fp)~[i]) ¥R_MINUS ((fq ¥Res_TIMES fp)~[j])) ¥R_GT eps })) eps0-->Stat14(Stat14*) ==> Stat15: (eps0 in Re) & (eps0 ¥R_GT R_0) & (not( Finite({ i * j : i in Za, j in Za | abs(((fq ¥Res_TIMES fp)~[i]) ¥R_MINUS ((fq ¥Res_TIMES fp)~[j])) ¥R_GT eps0 }))) fq-->T763(Stat2,Stat2*) ==> Stat16: (EXISTS x in Re | (FORALL y in range(fq) | abs(y) ¥R_LT x )) mq-->Stat16(Stat16*) ==> (mq in Re) & Stat17: (FORALL y in range(fq) | abs(y) ¥R_LT mq ) fp-->T763(Stat2,Stat2*) ==> Stat18: (EXISTS x in Re | (FORALL y in range(fp) | abs(y) ¥R_LT x )) mp-->Stat18(Stat18*) ==> (mp in Re) & Stat19: (FORALL y in range(fp) | abs(y) ¥R_LT mp ) Loc_def ==> m = if (mq ¥R_GT mp) then mq else mp end if (Stat16*)ELEM ==> Stat20: m in Re Suppose ==> Stat21: not(FORALL y in range(fq) | abs(y) ¥R_LT m) y1-->Stat21(Stat21*) ==> (y1 in range(fq)) & (not(abs(y1) ¥R_LT m)) y1-->Stat17(Stat16*) ==> abs(y1) ¥R_LT mq Suppose ==> m = mq EQUAL(Stat21) ==> false; Discharge ==> m /= mq (Stat18)ELEM ==> not(mq ¥R_GT mp) (mq,mp)-->T675(Stat16*) ==> (mp ¥R_GE mq) & (m = mp) y1-->T723(Stat10*) ==> abs(y1) in Re (abs(y1),mq)-->T675(Stat16*) ==> mq ¥R_GT abs(y1) (mp,mq,abs(y1))-->T678(Stat16*) ==> mp ¥R_GT abs(y1) EQUAL(Stat21) ==> m ¥R_GT abs(y1) (abs(y1),m)-->T675(Stat20*) ==> false; Discharge ==> Stat22: (FORALL y in range(fq) | abs(y) ¥R_LT m) Suppose ==> Stat23: not(FORALL y in range(fp) | abs(y) ¥R_LT m) y2-->Stat23(Stat23*) ==> (y2 in range(fp)) & (not(abs(y2) ¥R_LT m)) y2-->Stat19(Stat18*) ==> abs(y2) ¥R_LT mp Suppose ==> m = mp EQUAL(Stat23) ==> false; Discharge ==> m /= mp ELEM ==> (mq ¥R_GT mp) & (m = mq) y2-->T723(Stat11*) ==> abs(y2) in Re (abs(y2),mp)-->T675(Stat18*) ==> mp ¥R_GT abs(y2) (mq,mp,abs(y2))-->T679(Stat16*) ==> mq ¥R_GT abs(y2) EQUAL(Stat23) ==> m ¥R_GT abs(y2) (abs(y2),m)-->T675(Stat20*) ==> false; Discharge ==> Stat24: (FORALL y in range(fp) | abs(y) ¥R_LT m ) ALGEBRA(Stat24) ==> (R_0 in Re) Suppose ==> not(m ¥R_GT R_0) ALGEBRA(Stat10,Stat10) ==> Stat25: 0 in domain(fq) (0,fq)-->T71(Stat2,Stat10,Stat25*) ==> Stat26: (fq~[0]) in range(fq) (fq~[0])-->Stat22(Stat26*) ==> abs(fq~[0]) ¥R_LT m (fq~[0])-->T723(Stat10,Stat26*) ==> (abs(fq~[0]) ¥R_GE R_0) & (abs(fq~[0]) in Re) (abs(fq~[0]), m)-->T675(Stat26*) ==> m ¥R_GT abs(fq~[0]) (m, abs(fq~[0]), R_0)-->T677(Stat2*) ==> false; Discharge ==> AUTO (m, R_0)-->T675(Stat2*) ==> m /= R_0 m-->T647(Stat2*) ==> Stat27: (R_Recip(m) in Re) & ((R_Recip(m) ¥R_TIMES m) = R_1) ALGEBRA(Stat20,Stat15,Stat27) ==> (R_0 = (R_0 ¥R_PLUS R_0)) & ((eps0 ¥R_TIMES R_Recip(m)) in Re) & ((R_0 ¥R_TIMES R_Recip(m)) = (R_Recip(m) ¥R_TIMES R_0)) & ((R_Recip(m) ¥R_TIMES m) = (m ¥R_TIMES R_Recip(m))) m-->T709(Stat2*) ==> R_Recip(m) ¥R_GT R_0 (eps0, R_0, R_Recip(m))-->T705(Stat2*) ==> (eps0 ¥R_TIMES R_Recip(m)) ¥R_GT (R_0 ¥R_TIMES R_Recip(m)) ALGEBRA(Stat27) ==> (R_Recip(m) ¥R_TIMES R_0) = R_0 EQUAL(Stat2) ==> (eps0 ¥R_TIMES R_Recip(m)) ¥R_GT R_0 (eps0 ¥R_TIMES R_Recip(m))-->T719(Stat2*) ==> Stat28: (EXISTS e in Re, e0 in Re | ((eps0 ¥R_TIMES R_Recip(m)) ¥R_GT e) & (e ¥R_GT e0) & (e0 ¥R_GT R_0) & (e ¥R_GT R_0) & ((eps0 ¥R_TIMES R_Recip(m)) ¥R_GT (e ¥R_PLUS e0))) (eps1,eps2)-->Stat28 ==> Stat29: (eps1 in Re) & (eps2 in Re) & (eps2 ¥R_GT R_0) & (eps1 ¥R_GT R_0) & ((eps0 ¥R_TIMES R_Recip(m)) ¥R_GT (eps1 ¥R_PLUS eps2)) (eps1,R_0)-->T675(Stat2*) ==> (eps1 ¥R_GE R_0) (eps1,R_0,eps2,R_0)-->T696(Stat2*) ==> (eps1 ¥R_PLUS eps2) ¥R_GT (R_0 ¥R_PLUS R_0) EQUAL(Stat2) ==> (eps1 ¥R_PLUS eps2) ¥R_GT R_0 m-->T709(Stat2*) ==> R_Recip(m) ¥R_GT R_0 ALGEBRA(Stat29,Stat20,Stat15,Stat27) ==> ((eps1 ¥R_PLUS eps2) in Re) & (((eps0 ¥R_TIMES R_Recip(m)) ¥R_TIMES m) = (eps0 ¥R_TIMES (m ¥R_TIMES R_Recip(m)))) & (((eps1 ¥R_PLUS eps2) ¥R_TIMES m) = (m ¥R_TIMES (eps1 ¥R_PLUS eps2))) & ((eps0 ¥R_TIMES R_1) = eps0) (eps0 ¥R_TIMES R_Recip(m), eps1 ¥R_PLUS eps2, m)-->T705(Stat2*) ==> ((eps0 ¥R_TIMES R_Recip(m)) ¥R_TIMES m) ¥R_GT ((eps1 ¥R_PLUS eps2) ¥R_TIMES m) EQUAL(Stat2) ==> eps0 ¥R_GT (m ¥R_TIMES (eps1 ¥R_PLUS eps2)) -- eps2-->Stat7 ==> Stat30: Finite({ (i * j) : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2 }) eps1-->Stat9 ==> Stat31: Finite({ (i * j) : i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1 }) -- -- However, this assumption would lead to a conflict with the inequality (holding for all $i,j in Za$) -- $abs((fq ¥Res_TIMES fp)~[i] ¥R_MINUS (fq ¥Res_TIMES fp)~[j]) ¥R_LE (m ¥R_TIMES abs((fq~[i] ¥R_MINUS fq~[j]) ¥R_PLUS (fp~[i] ¥R_MINUS fp~[j])))$, -- as we are about to show. -- APPLY() setformer_meet_join(s->Za, t->Za, h(i,j)->(i*j), R(i,j)->(abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2), Q(i,j)->(abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1)) ==> Stat32: {(i*j): i in Za, j in Za | (abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2) or (abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1)} = ({(i*j): i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2 } + {(i*j): i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1 }) ({ i * j : i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2 }, { i * j : i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1 })-->T236(Stat30,Stat31*) ==> Finite({(i*j): i in Za, j in Za | abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2 } + {(i*j): i in Za, j in Za | abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1 }) EQUAL(Stat32) ==> Finite({(i*j): i in Za, j in Za | (abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2) or (abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1)}) Suppose ==> Stat33: not({(i * j): i in Za, j in Za | abs(((fq ¥Res_TIMES fp)~[i]) ¥R_MINUS ((fq ¥Res_TIMES fp)~[j])) ¥R_GT eps0 } ¥incin {(i*j): i in Za, j in Za | (abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2) or (abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1)}) -- -- If we make the temporary assumption that -- $not({(i * j): i in Za, j in Za | abs(((fq ¥Res_TIMES fp)~[i]) ¥R_MINUS ((fq ¥Res_TIMES fp)~[j])) ¥R_GT eps0 } ¥incin {(i*j): i in Za, j in Za | (abs((fq~[i]) ¥R_MINUS (fq~[j])) ¥R_GT eps2) or (abs((fp~[i]) ¥R_MINUS (fp~[j])) ¥R_GT eps1)})$, -- then, by proving the above-stated inequality, we reach a contradiction as follows. -- In the first place, observe that if $i0,j0$ are unsigned integers for which $i0*j0$ -- belongs to the set appearing as left-hand side but does not belong to the right-hand side then -- $abs((((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0])))) ¥R_GT eps0$, -- $(abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_LE eps1) & (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_LE eps2)$. -- (i0,j0)-->Stat33 ==> Stat34: (i0 in Za) & (j0 in Za) & (abs(((fq ¥Res_TIMES fp)~[i0]) ¥R_MINUS ((fq ¥Res_TIMES fp)~[j0])) ¥R_GT eps0) & (not(abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_GT eps2)) & (not(abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_GT eps1)) APPLY() fcn_symbol(f(u)->((fq~[u]) ¥R_TIMES (fp~[u])), g->(fq ¥Res_TIMES fp), s->Za) ==> Stat35: (FORALL x | ((fq ¥Res_TIMES fp)~[x]) = if x in Za then ((fq~[x]) ¥R_TIMES (fp~[x])) else 0 end if) i0-->Stat35(Stat34*) ==> ((fq ¥Res_TIMES fp)~[i0]) = ((fq~[i0]) ¥R_TIMES (fp~[i0])) j0-->Stat35(Stat34*) ==> ((fq ¥Res_TIMES fp)~[j0]) = ((fq~[j0]) ¥R_TIMES (fp~[j0])) EQUAL(Stat33) ==> Stat36: abs((((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0])))) ¥R_GT eps0 -- -- Secondly, we easily check that various quantities belong to $Re$. -- Suppose ==> (fq~[i0]) notin range(fq) fq-->T73(Stat10*) ==> Stat37: (fq~[i0]) notin {(fq~[j]): j in domain(fq)} i0-->Stat37(Stat10,Stat34*) ==> false; Discharge ==> Stat38: (fq~[i0]) in range(fq) Suppose ==> (fp~[j0]) notin range(fp) fp-->T73(Stat11*) ==> Stat39: (fp~[j0]) notin {(fp~[j]): j in domain(fp)} j0-->Stat39(Stat11,Stat34*) ==> false; Discharge ==> Stat40: (fp~[j0]) in range(fp) (fq,fp,i0)-->T757(Stat6,Stat8,Stat34*) ==> Stat41: ((fq~[i0]) in Re) & ((fp~[i0]) in Re) (fq,fp,j0)-->T757(Stat6,Stat8,Stat34*) ==> Stat42: ((fq~[j0]) in Re) & ((fp~[j0]) in Re) (fq~[i0])-->T723(Stat41*) ==> Stat43: abs(fq~[i0]) in Re ALGEBRA(Stat41,Stat42) ==> Stat44: (((fq~[i0]) ¥R_MINUS (fq~[j0])) in Re) ((fq~[i0]) ¥R_MINUS (fq~[j0]))-->T723(Stat44*) ==> Stat45: (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) in Re) & (abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_GE R_0) (fp~[j0])-->T723(Stat41*) ==> Stat46: abs(fp~[j0]) in Re ALGEBRA(Stat42,Stat41) ==> Stat47: ((fp~[i0]) ¥R_MINUS (fp~[j0])) in Re ((fp~[i0]) ¥R_MINUS (fp~[j0]))-->T723(Stat41*) ==> Stat48: (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) in Re) & (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_GE R_0) ALGEBRA(Stat20,Stat29) ==> (m ¥R_TIMES (eps1 ¥R_PLUS eps2)) in Re ALGEBRA(Stat41,Stat42) ==> ((((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))) in Re) & (((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) in Re) & (((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0]))) in Re) (((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0])))-->T723(Stat41*) ==> abs(((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_PLUS ((fp~[i0]) ¥R_MINUS (fp~[j0]))) in Re ALGEBRA(Stat48,Stat45,Stat46,Stat43) ==> ((abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) in Re) & ((abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) in Re) & ((abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) in Re) & (((abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) in Re) ALGEBRA(Stat41) ==> Stat49: ((R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0])) in Re) & ((((fq~[i0]) ¥R_TIMES (fp~[j0])) ¥R_PLUS R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0]))) = R_0)) & ((((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_PLUS (R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0])) ¥R_PLUS ((fq~[i0]) ¥R_TIMES (fp~[j0])))) = ((((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_PLUS R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0]))) ¥R_PLUS ((fq~[i0]) ¥R_TIMES (fp~[j0])))) ALGEBRA(Stat41,Stat42) ==> Stat50: (((fq~[j0]) ¥R_TIMES (fp~[j0])) = ((fp~[j0]) ¥R_TIMES (fq~[j0]))) & ((((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_PLUS R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0])) ¥R_PLUS ((fq~[i0]) ¥R_TIMES (fp~[j0]))) ¥R_PLUS R_Rev((fq~[j0]) ¥R_TIMES (fp~[j0])) = (((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_PLUS R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0]))) ¥R_PLUS (((fq~[i0]) ¥R_TIMES (fp~[j0])) ¥R_PLUS R_Rev((fq~[j0]) ¥R_TIMES (fp~[j0])))) & (((fq~[i0]) ¥R_TIMES (fp~[i0])) in Re) & (((fq~[i0]) ¥R_TIMES (fp~[j0])) in Re) -- -- By exploiting some of the above membership relations, we easily get -- $(eps1 ¥R_PLUS eps2) ¥R_GE (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0])))$, -- and hence -- $eps0 ¥R_GT ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))))$. -- (abs((fp~[i0]) ¥R_MINUS (fp~[j0])), eps1)-->T675(Stat29*) ==> eps1 ¥R_GE abs((fp~[i0]) ¥R_MINUS (fp~[j0])) (abs((fq~[i0]) ¥R_MINUS (fq~[j0])), eps2)-->T675(Stat29*) ==> eps2 ¥R_GE abs((fq~[i0]) ¥R_MINUS (fq~[j0])) (eps1, abs((fp~[i0]) ¥R_MINUS (fp~[j0])), eps2, abs((fq~[i0]) ¥R_MINUS (fq~[j0])))-->T695(Stat29*) ==> (eps1 ¥R_PLUS eps2) ¥R_GE (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) Suppose ==> Stat51: not((m ¥R_TIMES (eps1 ¥R_PLUS eps2)) ¥R_GE ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))))) ALGEBRA(Stat48,Stat45,Stat20) ==> (m ¥R_TIMES (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) = ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) Suppose ==> (eps1 ¥R_PLUS eps2) = (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) EQUAL(Stat51*) ==> (m ¥R_TIMES (eps1 ¥R_PLUS eps2)) = ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) (((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))), (m ¥R_TIMES (eps1 ¥R_PLUS eps2)))-->T675(Stat41*) ==> false; Discharge ==> AUTO (eps1 ¥R_PLUS eps2, abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0])))-->T675(Stat41*) ==> (eps1 ¥R_PLUS eps2) ¥R_GT (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) (eps1 ¥R_PLUS eps2, abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0])), m)-->T705(Stat18*) ==> ((eps1 ¥R_PLUS eps2) ¥R_TIMES m) ¥R_GT ((abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) ¥R_TIMES m) ALGEBRA(Stat20,Stat29) ==> (m ¥R_TIMES (eps1 ¥R_PLUS eps2)) = ((eps1 ¥R_PLUS eps2) ¥R_TIMES m) ALGEBRA(Stat20,Stat48,Stat45) ==> ((abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) ¥R_TIMES m) = (m ¥R_TIMES (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) EQUAL(Stat51*) ==> (m ¥R_TIMES (eps1 ¥R_PLUS eps2)) ¥R_GT ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) ((m ¥R_TIMES (eps1 ¥R_PLUS eps2)), ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))))-->T675(Stat51*) ==> false; Discharge ==> AUTO (Stat28*)ELEM ==> (m ¥R_TIMES (eps1 ¥R_PLUS eps2)) ¥R_GE ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) ALGEBRA(Stat20,Stat48,Stat45) ==> Stat52: ((m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) in Re) & ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) in Re) & (((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) in Re) (eps0, m ¥R_TIMES (eps1 ¥R_PLUS eps2), (m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))))-->T677(Stat15*) ==> eps0 ¥R_GT ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) (eps0, (m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))))-->T675(Stat42*) ==> Stat53: eps0 ¥R_GE ((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) -- -- As a consequence, $eps1 ¥R_PLUS eps2$ is greater than or equal to -- $abs(((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_MINUS (fp~[j0])))$, -- because this quantity equals -- $abs(((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS ((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0]))))$, -- (abs((fq~[i0]) ¥R_MINUS (fq~[j0])), eps2)-->T675(Stat35*) ==> eps2 ¥R_GE abs((fq~[i0]) ¥R_MINUS (fq~[j0])) (abs((fp~[i0]) ¥R_MINUS (fp~[j0])), eps1)-->T675(Stat35*) ==> eps1 ¥R_GE abs((fp~[i0]) ¥R_MINUS (fp~[j0])) (eps1, abs((fp~[i0]) ¥R_MINUS (fp~[j0])), eps2, abs((fq~[i0]) ¥R_MINUS (fq~[j0])))-->T695(Stat35*) ==> Stat54: (eps1 ¥R_PLUS eps2) ¥R_GE (abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_PLUS abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) Suppose ==> Stat55: (((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))) /= (((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS ((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0])))) ALGEBRA(Stat41,Stat42) ==> ((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0])) = ((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[i0]) ¥R_TIMES (fp~[j0]))) & ((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0])) = ((fq~[i0]) ¥R_TIMES (fp~[j0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))) & ((((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[i0]) ¥R_TIMES (fp~[j0]))) = (((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_PLUS R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0])))) & ((((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_PLUS R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0]))) ¥R_PLUS (((fq~[i0]) ¥R_TIMES (fp~[j0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))) = (((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_PLUS (R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0])) ¥R_PLUS ((fq~[i0]) ¥R_TIMES (fp~[j0])))) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))) & ((R_Rev((fq~[i0]) ¥R_TIMES (fp~[j0])) ¥R_PLUS ((fq~[i0]) ¥R_TIMES (fp~[j0]))) = R_0) & ((((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_PLUS R_0) = ((fq~[i0]) ¥R_TIMES (fp~[i0]))) EQUAL(Stat55) ==> false; Discharge ==> AUTO (Stat54*)ELEM ==> Stat56: (((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))) = (((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS ((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0])))) EQUAL(Stat56) ==> abs(((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))) = abs(((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS ((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0])))) -- ..., in its turn -- $abs(((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS ((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0]))))$ -- is smaller than or equal to -- $((abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))))$, -- T722(Stat57*) ==> Stat57: (FORALL x,y | ((x in Re) & (y in Re)) ¥imp (abs(x ¥R_PLUS y) ¥R_LE (abs(x) ¥R_PLUS abs(y)))) (((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))), ((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0]))))-->Stat57(Stat35*) ==> abs(((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS ((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0])))) ¥R_LE (abs((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS abs((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0])))) (fq~[i0], (fp~[i0]) ¥R_MINUS (fp~[j0]))-->T726(Stat41,Stat47*) ==> abs((fq~[i0]) ¥R_TIMES ((fp~[i0]) ¥R_MINUS (fp~[j0]))) = (abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) (fp~[j0], (fq~[i0]) ¥R_MINUS (fq~[j0]))-->T726(Stat42,Stat44*) ==> abs((fp~[j0]) ¥R_TIMES ((fq~[i0]) ¥R_MINUS (fq~[j0]))) = (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) EQUAL(Stat56) ==> abs(((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))) ¥R_LE ((abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) (abs(((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))), ((abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))))-->T675(Stat35*) ==> ((abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) ¥R_GE abs(((fq~[i0]) ¥R_TIMES (fp~[i0])) ¥R_MINUS ((fq~[j0]) ¥R_TIMES (fp~[j0]))) -- -- ... which in its turn is smaller than or equal to -- $(m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_PLUS (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))$, -- ALGEBRA(Stat20,Stat20) ==> Stat58: m ¥R_TIMES R_0 = R_0 Suppose ==> not((m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_GE (abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0])))) (fq~[i0])-->Stat22(Stat38,Stat38*) ==> abs(fq~[i0]) ¥R_LT m (abs(fq~[i0]),m)-->T675(Stat35*) ==> m ¥R_GT abs(fq~[i0]) Suppose ==> abs((fp~[i0]) ¥R_MINUS (fp~[j0])) ¥R_GT R_0 (m, abs(fq~[i0]), abs((fp~[i0]) ¥R_MINUS (fp~[j0])))-->T705(Stat20*) ==> (m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ¥R_GT (abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) (m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0])), (abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))))-->T675(Stat52*) ==> false; Discharge ==> AUTO (abs((fp~[i0]) ¥R_MINUS (fp~[j0])), R_0)-->T675(Stat35*) ==> abs((fp~[i0]) ¥R_MINUS (fp~[j0])) = R_0 ALGEBRA(Stat43,Stat43) ==> (abs(fq~[i0]) ¥R_TIMES R_0) = R_0 EQUAL(Stat58*) ==> (m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) = (abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))) ((abs(fq~[i0]) ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))), (m ¥R_TIMES abs((fp~[i0]) ¥R_MINUS (fp~[j0]))))-->T675(Stat35*) ==> false; Discharge ==> AUTO Suppose ==> not((m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) ¥R_GE (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])))) (fp~[j0])-->Stat24(Stat40,Stat40*) ==> abs(fp~[j0]) ¥R_LT m (abs(fp~[j0]),m)-->T675(Stat35*) ==> m ¥R_GT abs(fp~[j0]) Suppose ==> abs((fq~[i0]) ¥R_MINUS (fq~[j0])) ¥R_GT R_0 (m, abs(fp~[j0]), abs((fq~[i0]) ¥R_MINUS (fq~[j0])))-->T705(Stat20*) ==> (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) ¥R_GT (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))) (m ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0])), (abs(fp~[j0]) ¥R_TIMES abs((fq~[i0]) ¥R_MINUS (fq~[j0]))))-->T675(Stat58*) ==> false; D