Addition on Surreal Numbers

From Parts 1 - 4

Object. The name Eps_i is a term of type (setprop)set.
Axiom. (Eps_i_ax) We take the following as an axiom:
∀P : setprop, ∀x : set, P xP (Eps_i P)
Definition. We define True to be ∀p : prop, pp of type prop.
Definition. We define False to be ∀p : prop, p of type prop.
Definition. We define not to be λA : propAFalse of type propprop.
Notation. We use ¬ as a prefix operator with priority 700 corresponding to applying term not.
Definition. We define and to be λA B : prop∀p : prop, (ABp)p of type proppropprop.
Notation. We use as an infix operator with priority 780 and which associates to the left corresponding to applying term and.
Definition. We define or to be λA B : prop∀p : prop, (Ap)(Bp)p of type proppropprop.
Notation. We use as an infix operator with priority 785 and which associates to the left corresponding to applying term or.
Definition. We define iff to be λA B : propand (AB) (BA) of type proppropprop.
Notation. We use as an infix operator with priority 805 and no associativity corresponding to applying term iff.
Beginning of Section Eq
Variable A : SType
Definition. We define eq to be λx y : A∀Q : AAprop, Q x yQ y x of type AAprop.
Definition. We define neq to be λx y : A¬ eq x y of type AAprop.
End of Section Eq
Notation. We use = as an infix operator with priority 502 and no associativity corresponding to applying term eq.
Notation. We use as an infix operator with priority 502 and no associativity corresponding to applying term neq.
Beginning of Section FE
Variable A B : SType
Axiom. (func_ext) We take the following as an axiom:
∀f g : AB, (∀x : A, f x = g x)f = g
End of Section FE
Beginning of Section Ex
Variable A : SType
Definition. We define ex to be λQ : Aprop∀P : prop, (∀x : A, Q xP)P of type (Aprop)prop.
End of Section Ex
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using ex.
Axiom. (prop_ext) We take the following as an axiom:
∀p q : prop, iff p qp = q
Object. The name In is a term of type setsetprop.
Notation. We use as an infix operator with priority 500 and no associativity corresponding to applying term In. Furthermore, we may write xA, B to mean x : set, xAB.
Definition. We define Subq to be λA B ⇒ ∀x ∈ A, xB of type setsetprop.
Notation. We use as an infix operator with priority 500 and no associativity corresponding to applying term Subq. Furthermore, we may write xA, B to mean x : set, xAB.
Axiom. (set_ext) We take the following as an axiom:
∀X Y : set, XYYXX = Y
Axiom. (In_ind) We take the following as an axiom:
∀P : setprop, (∀X : set, (∀x ∈ X, P x)P X)∀X : set, P X
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using ex and handling ∈ or ⊆ ascriptions using and.
Object. The name Empty is a term of type set.
Axiom. (EmptyAx) We take the following as an axiom:
¬ ∃x : set, xEmpty
Object. The name is a term of type setset.
Axiom. (UnionEq) We take the following as an axiom:
∀X x, x X∃Y, xYYX
Object. The name 𝒫 is a term of type setset.
Axiom. (PowerEq) We take the following as an axiom:
∀X Y : set, Y𝒫 XYX
Object. The name Repl is a term of type set(setset)set.
Notation. {B| xA} is notation for Repl Ax . B).
Axiom. (ReplEq) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y{F x|x ∈ A}∃x ∈ A, y = F x
Definition. We define TransSet to be λU : set∀x ∈ U, xU of type setprop.
Definition. We define Union_closed to be λU : set∀X : set, XU XU of type setprop.
Definition. We define Power_closed to be λU : set∀X : set, XU𝒫 XU of type setprop.
Definition. We define Repl_closed to be λU : set∀X : set, XU∀F : setset, (∀x : set, xXF xU){F x|x ∈ X}U of type setprop.
Definition. We define ZF_closed to be λU : setUnion_closed UPower_closed URepl_closed U of type setprop.
Object. The name UnivOf is a term of type setset.
Axiom. (UnivOf_In) We take the following as an axiom:
∀N : set, NUnivOf N
Axiom. (UnivOf_TransSet) We take the following as an axiom:
∀N : set, TransSet (UnivOf N)
Axiom. (UnivOf_ZF_closed) We take the following as an axiom:
∀N : set, ZF_closed (UnivOf N)
Axiom. (UnivOf_Min) We take the following as an axiom:
∀N U : set, NUTransSet UZF_closed UUnivOf NU
Axiom. (FalseE) We take the following as an axiom:
False∀p : prop, p
Axiom. (TrueI) We take the following as an axiom:
True
Axiom. (andI) We take the following as an axiom:
∀A B : prop, ABAB
Axiom. (andEL) We take the following as an axiom:
∀A B : prop, ABA
Axiom. (andER) We take the following as an axiom:
∀A B : prop, ABB
Axiom. (orIL) We take the following as an axiom:
∀A B : prop, AAB
Axiom. (orIR) We take the following as an axiom:
∀A B : prop, BAB
Beginning of Section PropN
Variable P1 P2 P3 : prop
Axiom. (and3I) We take the following as an axiom:
P1P2P3P1P2P3
Axiom. (and3E) We take the following as an axiom:
P1P2P3(∀p : prop, (P1P2P3p)p)
Axiom. (or3I1) We take the following as an axiom:
P1P1P2P3
Axiom. (or3I2) We take the following as an axiom:
P2P1P2P3
Axiom. (or3I3) We take the following as an axiom:
P3P1P2P3
Axiom. (or3E) We take the following as an axiom:
P1P2P3(∀p : prop, (P1p)(P2p)(P3p)p)
Variable P4 : prop
Axiom. (and4I) We take the following as an axiom:
P1P2P3P4P1P2P3P4
Variable P5 : prop
Axiom. (and5I) We take the following as an axiom:
P1P2P3P4P5P1P2P3P4P5
End of Section PropN
Axiom. (not_or_and_demorgan) We take the following as an axiom:
∀A B : prop, ¬ (AB)¬ A¬ B
Axiom. (not_ex_all_demorgan_i) We take the following as an axiom:
∀P : setprop, (¬ ∃x, P x)∀x, ¬ P x
Axiom. (iffI) We take the following as an axiom:
∀A B : prop, (AB)(BA)(AB)
Axiom. (iffEL) We take the following as an axiom:
∀A B : prop, (AB)AB
Axiom. (iffER) We take the following as an axiom:
∀A B : prop, (AB)BA
Axiom. (iff_refl) We take the following as an axiom:
∀A : prop, AA
Axiom. (iff_sym) We take the following as an axiom:
∀A B : prop, (AB)(BA)
Axiom. (iff_trans) We take the following as an axiom:
∀A B C : prop, (AB)(BC)(AC)
Axiom. (eq_i_tra) We take the following as an axiom:
∀x y z, x = yy = zx = z
Axiom. (f_eq_i) We take the following as an axiom:
∀f : setset, ∀x y, x = yf x = f y
Axiom. (neq_i_sym) We take the following as an axiom:
∀x y, xyyx
Definition. We define nIn to be λx X ⇒ ¬ In x X of type setsetprop.
Notation. We use as an infix operator with priority 502 and no associativity corresponding to applying term nIn.
Axiom. (Eps_i_ex) We take the following as an axiom:
∀P : setprop, (∃x, P x)P (Eps_i P)
Axiom. (pred_ext) We take the following as an axiom:
∀P Q : setprop, (∀x, P xQ x)P = Q
Axiom. (prop_ext_2) We take the following as an axiom:
∀p q : prop, (pq)(qp)p = q
Axiom. (Subq_ref) We take the following as an axiom:
∀X : set, XX
Axiom. (Subq_tra) We take the following as an axiom:
∀X Y Z : set, XYYZXZ
Axiom. (Subq_contra) We take the following as an axiom:
∀X Y z : set, XYzYzX
Axiom. (EmptyE) We take the following as an axiom:
∀x : set, xEmpty
Axiom. (Subq_Empty) We take the following as an axiom:
∀X : set, EmptyX
Axiom. (Empty_Subq_eq) We take the following as an axiom:
∀X : set, XEmptyX = Empty
Axiom. (Empty_eq) We take the following as an axiom:
∀X : set, (∀x, xX)X = Empty
Axiom. (UnionI) We take the following as an axiom:
∀X x Y : set, xYYXx X
Axiom. (UnionE) We take the following as an axiom:
∀X x : set, x X∃Y : set, xYYX
Axiom. (UnionE_impred) We take the following as an axiom:
∀X x : set, x X∀p : prop, (∀Y : set, xYYXp)p
Axiom. (PowerI) We take the following as an axiom:
∀X Y : set, YXY𝒫 X
Axiom. (PowerE) We take the following as an axiom:
∀X Y : set, Y𝒫 XYX
Axiom. (Empty_In_Power) We take the following as an axiom:
∀X : set, Empty𝒫 X
Axiom. (Self_In_Power) We take the following as an axiom:
∀X : set, X𝒫 X
Axiom. (xm) We take the following as an axiom:
∀P : prop, P¬ P
Axiom. (dneg) We take the following as an axiom:
∀P : prop, ¬ ¬ PP
Axiom. (not_all_ex_demorgan_i) We take the following as an axiom:
∀P : setprop, ¬ (∀x, P x)∃x, ¬ P x
Axiom. (eq_or_nand) We take the following as an axiom:
or = (λx y : prop¬ (¬ x¬ y))
Object. The name exactly1of2 is a term of type proppropprop.
Axiom. (exactly1of2_I1) We take the following as an axiom:
∀A B : prop, A¬ Bexactly1of2 A B
Axiom. (exactly1of2_I2) We take the following as an axiom:
∀A B : prop, ¬ ABexactly1of2 A B
Axiom. (exactly1of2_E) We take the following as an axiom:
∀A B : prop, exactly1of2 A B∀p : prop, (A¬ Bp)(¬ ABp)p
Axiom. (exactly1of2_or) We take the following as an axiom:
∀A B : prop, exactly1of2 A BAB
Axiom. (ReplI) We take the following as an axiom:
∀A : set, ∀F : setset, ∀x : set, xAF x{F x|x ∈ A}
Axiom. (ReplE) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y{F x|x ∈ A}∃x ∈ A, y = F x
Axiom. (ReplE_impred) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y{F x|x ∈ A}∀p : prop, (∀x : set, xAy = F xp)p
Axiom. (ReplE') We take the following as an axiom:
∀X, ∀f : setset, ∀p : setprop, (∀x ∈ X, p (f x))∀y ∈ {f x|x ∈ X}, p y
Axiom. (Repl_Empty) We take the following as an axiom:
∀F : setset, {F x|x ∈ Empty} = Empty
Axiom. (ReplEq_ext_sub) We take the following as an axiom:
∀X, ∀F G : setset, (∀x ∈ X, F x = G x){F x|x ∈ X}{G x|x ∈ X}
Axiom. (ReplEq_ext) We take the following as an axiom:
∀X, ∀F G : setset, (∀x ∈ X, F x = G x){F x|x ∈ X} = {G x|x ∈ X}
Axiom. (Repl_inv_eq) We take the following as an axiom:
∀P : setprop, ∀f g : setset, (∀x, P xg (f x) = x)∀X, (∀x ∈ X, P x){g y|y ∈ {f x|x ∈ X}} = X
Axiom. (Repl_invol_eq) We take the following as an axiom:
∀P : setprop, ∀f : setset, (∀x, P xf (f x) = x)∀X, (∀x ∈ X, P x){f y|y ∈ {f x|x ∈ X}} = X
Object. The name If_i is a term of type propsetsetset.
Notation. if cond then T else E is notation corresponding to If_i type cond T E where type is the inferred type of T.
Axiom. (If_i_correct) We take the following as an axiom:
∀p : prop, ∀x y : set, p(if p then x else y) = x¬ p(if p then x else y) = y
Axiom. (If_i_0) We take the following as an axiom:
∀p : prop, ∀x y : set, ¬ p(if p then x else y) = y
Axiom. (If_i_1) We take the following as an axiom:
∀p : prop, ∀x y : set, p(if p then x else y) = x
Axiom. (If_i_or) We take the following as an axiom:
∀p : prop, ∀x y : set, (if p then x else y) = x(if p then x else y) = y
Object. The name UPair is a term of type setsetset.
Notation. {x,y} is notation for UPair x y.
Axiom. (UPairE) We take the following as an axiom:
∀x y z : set, x{y,z}x = yx = z
Axiom. (UPairI1) We take the following as an axiom:
∀y z : set, y{y,z}
Axiom. (UPairI2) We take the following as an axiom:
∀y z : set, z{y,z}
Object. The name Sing is a term of type setset.
Notation. {x} is notation for Sing x.
Axiom. (SingI) We take the following as an axiom:
∀x : set, x{x}
Axiom. (SingE) We take the following as an axiom:
∀x y : set, y{x}y = x
Object. The name binunion is a term of type setsetset.
Notation. We use as an infix operator with priority 345 and which associates to the left corresponding to applying term binunion.
Axiom. (binunionI1) We take the following as an axiom:
∀X Y z : set, zXzXY
Axiom. (binunionI2) We take the following as an axiom:
∀X Y z : set, zYzXY
Axiom. (binunionE) We take the following as an axiom:
∀X Y z : set, zXYzXzY
Axiom. (binunionE') We take the following as an axiom:
∀X Y z, ∀p : prop, (zXp)(zYp)(zXYp)
Axiom. (binunion_asso) We take the following as an axiom:
∀X Y Z : set, X(YZ) = (XY)Z
Axiom. (binunion_com_Subq) We take the following as an axiom:
∀X Y : set, XYYX
Axiom. (binunion_com) We take the following as an axiom:
∀X Y : set, XY = YX
Axiom. (binunion_idl) We take the following as an axiom:
∀X : set, EmptyX = X
Axiom. (binunion_idr) We take the following as an axiom:
∀X : set, XEmpty = X
Axiom. (binunion_Subq_1) We take the following as an axiom:
∀X Y : set, XXY
Axiom. (binunion_Subq_2) We take the following as an axiom:
∀X Y : set, YXY
Axiom. (binunion_Subq_min) We take the following as an axiom:
∀X Y Z : set, XZYZXYZ
Axiom. (Subq_binunion_eq) We take the following as an axiom:
∀X Y, (XY) = (XY = Y)
Definition. We define SetAdjoin to be λX y ⇒ X{y} of type setsetset.
Notation. We now use the set enumeration notation {...,...,...} in general. If 0 elements are given, then Empty is used to form the corresponding term. If 1 element is given, then Sing is used to form the corresponding term. If 2 elements are given, then UPair is used to form the corresponding term. If more than elements are given, then SetAdjoin is used to reduce to the case with one fewer elements.
Object. The name famunion is a term of type set(setset)set.
Notation. We use x [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using famunion.
Axiom. (famunionI) We take the following as an axiom:
∀X : set, ∀F : (setset), ∀x y : set, xXyF xyx ∈ XF x
Axiom. (famunionE) We take the following as an axiom:
∀X : set, ∀F : (setset), ∀y : set, y(x ∈ XF x)∃x ∈ X, yF x
Axiom. (famunionE_impred) We take the following as an axiom:
∀X : set, ∀F : (setset), ∀y : set, y(x ∈ XF x)∀p : prop, (∀x, xXyF xp)p
Axiom. (famunion_Empty) We take the following as an axiom:
∀F : setset, (x ∈ EmptyF x) = Empty
Beginning of Section SepSec
Variable X : set
Variable P : setprop
Let z : setEps_i (λz ⇒ zXP z)
Let F : setsetλx ⇒ if P x then x else z
Object. The name Sep is a term of type set.
End of Section SepSec
Notation. {xA | B} is notation for Sep Ax . B).
Axiom. (SepI) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, xXP xx{x ∈ X|P x}
Axiom. (SepE) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x{x ∈ X|P x}xXP x
Axiom. (SepE1) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x{x ∈ X|P x}xX
Axiom. (SepE2) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x{x ∈ X|P x}P x
Axiom. (Sep_Subq) We take the following as an axiom:
∀X : set, ∀P : setprop, {x ∈ X|P x}X
Axiom. (Sep_In_Power) We take the following as an axiom:
∀X : set, ∀P : setprop, {x ∈ X|P x}𝒫 X
Object. The name ReplSep is a term of type set(setprop)(setset)set.
Notation. {B| xA, C} is notation for ReplSep Ax . C) (λ x . B).
Axiom. (ReplSepI) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀F : setset, ∀x : set, xXP xF x{F x|x ∈ X, P x}
Axiom. (ReplSepE) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀F : setset, ∀y : set, y{F x|x ∈ X, P x}∃x : set, xXP xy = F x
Axiom. (ReplSepE_impred) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀F : setset, ∀y : set, y{F x|x ∈ X, P x}∀p : prop, (∀x ∈ X, P xy = F xp)p
Object. The name binintersect is a term of type setsetset.
Notation. We use as an infix operator with priority 340 and which associates to the left corresponding to applying term binintersect.
Axiom. (binintersectI) We take the following as an axiom:
∀X Y z, zXzYzXY
Axiom. (binintersectE) We take the following as an axiom:
∀X Y z, zXYzXzY
Axiom. (binintersectE1) We take the following as an axiom:
∀X Y z, zXYzX
Axiom. (binintersectE2) We take the following as an axiom:
∀X Y z, zXYzY
Axiom. (binintersect_Subq_1) We take the following as an axiom:
∀X Y : set, XYX
Axiom. (binintersect_Subq_2) We take the following as an axiom:
∀X Y : set, XYY
Axiom. (binintersect_Subq_eq_1) We take the following as an axiom:
∀X Y, XYXY = X
Axiom. (binintersect_Subq_max) We take the following as an axiom:
∀X Y Z : set, ZXZYZXY
Axiom. (binintersect_com_Subq) We take the following as an axiom:
∀X Y : set, XYYX
Axiom. (binintersect_com) We take the following as an axiom:
∀X Y : set, XY = YX
Object. The name setminus is a term of type setsetset.
Notation. We use as an infix operator with priority 350 and no associativity corresponding to applying term setminus.
Axiom. (setminusI) We take the following as an axiom:
∀X Y z, (zX)(zY)zXY
Axiom. (setminusE) We take the following as an axiom:
∀X Y z, (zXY)zXzY
Axiom. (setminusE1) We take the following as an axiom:
∀X Y z, (zXY)zX
Axiom. (setminus_Subq) We take the following as an axiom:
∀X Y : set, XYX
Axiom. (setminus_Subq_contra) We take the following as an axiom:
∀X Y Z : set, ZYXYXZ
Axiom. (setminus_In_Power) We take the following as an axiom:
∀A U, AU𝒫 A
Axiom. (In_irref) We take the following as an axiom:
∀x, xx
Axiom. (In_no2cycle) We take the following as an axiom:
∀x y, xyyxFalse
Object. The name ordsucc is a term of type setset.
Axiom. (ordsuccI1) We take the following as an axiom:
∀x : set, xordsucc x
Axiom. (ordsuccI2) We take the following as an axiom:
∀x : set, xordsucc x
Axiom. (ordsuccE) We take the following as an axiom:
∀x y : set, yordsucc xyxy = x
Notation. Natural numbers 0,1,2,... are notation for the terms formed using Empty as 0 and forming successors with ordsucc.
Axiom. (neq_0_ordsucc) We take the following as an axiom:
∀a : set, 0ordsucc a
Axiom. (neq_ordsucc_0) We take the following as an axiom:
∀a : set, ordsucc a0
Axiom. (ordsucc_inj) We take the following as an axiom:
∀a b : set, ordsucc a = ordsucc ba = b
Axiom. (ordsucc_inj_contra) We take the following as an axiom:
∀a b : set, abordsucc aordsucc b
Axiom. (In_0_1) We take the following as an axiom:
01
Axiom. (In_0_2) We take the following as an axiom:
02
Axiom. (In_1_2) We take the following as an axiom:
12
Definition. We define nat_p to be λn : set∀p : setprop, p 0(∀x : set, p xp (ordsucc x))p n of type setprop.
Axiom. (nat_0) We take the following as an axiom:
nat_p 0
Axiom. (nat_ordsucc) We take the following as an axiom:
∀n : set, nat_p nnat_p (ordsucc n)
Axiom. (nat_1) We take the following as an axiom:
nat_p 1
Axiom. (nat_2) We take the following as an axiom:
nat_p 2
Axiom. (nat_0_in_ordsucc) We take the following as an axiom:
∀n, nat_p n0ordsucc n
Axiom. (nat_ordsucc_in_ordsucc) We take the following as an axiom:
∀n, nat_p n∀m ∈ n, ordsucc mordsucc n
Axiom. (nat_ind) We take the following as an axiom:
∀p : setprop, p 0(∀n, nat_p np np (ordsucc n))∀n, nat_p np n
Axiom. (nat_inv_impred) We take the following as an axiom:
∀p : setprop, p 0(∀n, nat_p np (ordsucc n))∀n, nat_p np n
Axiom. (nat_inv) We take the following as an axiom:
∀n, nat_p nn = 0∃x, nat_p xn = ordsucc x
Axiom. (nat_complete_ind) We take the following as an axiom:
∀p : setprop, (∀n, nat_p n(∀m ∈ n, p m)p n)∀n, nat_p np n
Axiom. (nat_p_trans) We take the following as an axiom:
∀n, nat_p n∀m ∈ n, nat_p m
Axiom. (nat_trans) We take the following as an axiom:
∀n, nat_p n∀m ∈ n, mn
Axiom. (nat_ordsucc_trans) We take the following as an axiom:
∀n, nat_p n∀m ∈ ordsucc n, mn
Axiom. (Union_ordsucc_eq) We take the following as an axiom:
∀n, nat_p n (ordsucc n) = n
Axiom. (cases_1) We take the following as an axiom:
∀i ∈ 1, ∀p : setprop, p 0p i
Axiom. (cases_2) We take the following as an axiom:
∀i ∈ 2, ∀p : setprop, p 0p 1p i
Axiom. (cases_3) We take the following as an axiom:
∀i ∈ 3, ∀p : setprop, p 0p 1p 2p i
Axiom. (neq_0_1) We take the following as an axiom:
01
Axiom. (neq_1_0) We take the following as an axiom:
10
Axiom. (neq_0_2) We take the following as an axiom:
02
Axiom. (neq_2_0) We take the following as an axiom:
20
Axiom. (neq_1_2) We take the following as an axiom:
12
Axiom. (ZF_closed_E) We take the following as an axiom:
∀U, ZF_closed U∀p : prop, (Union_closed UPower_closed URepl_closed Up)p
Axiom. (ZF_Union_closed) We take the following as an axiom:
∀U, ZF_closed U∀X ∈ U, XU
Axiom. (ZF_Power_closed) We take the following as an axiom:
∀U, ZF_closed U∀X ∈ U, 𝒫 XU
Axiom. (ZF_Repl_closed) We take the following as an axiom:
∀U, ZF_closed U∀X ∈ U, ∀F : setset, (∀x ∈ X, F xU){F x|x ∈ X}U
Axiom. (ZF_UPair_closed) We take the following as an axiom:
∀U, ZF_closed U∀x y ∈ U, {x,y}U
Axiom. (ZF_Sing_closed) We take the following as an axiom:
∀U, ZF_closed U∀x ∈ U, {x}U
Axiom. (ZF_binunion_closed) We take the following as an axiom:
∀U, ZF_closed U∀X Y ∈ U, (XY)U
Axiom. (ZF_ordsucc_closed) We take the following as an axiom:
∀U, ZF_closed U∀x ∈ U, ordsucc xU
Axiom. (nat_p_UnivOf_Empty) We take the following as an axiom:
∀n : set, nat_p nnUnivOf Empty
Object. The name ω is a term of type set.
Axiom. (omega_nat_p) We take the following as an axiom:
∀n ∈ ω, nat_p n
Axiom. (nat_p_omega) We take the following as an axiom:
∀n : set, nat_p nnω
Axiom. (omega_ordsucc) We take the following as an axiom:
∀n ∈ ω, ordsucc nω
Definition. We define ordinal to be λalpha : setTransSet alpha∀beta ∈ alpha, TransSet beta of type setprop.
Axiom. (ordinal_TransSet) We take the following as an axiom:
∀alpha : set, ordinal alphaTransSet alpha
Axiom. (ordinal_Empty) We take the following as an axiom:
ordinal Empty
Axiom. (ordinal_Hered) We take the following as an axiom:
∀alpha : set, ordinal alpha∀beta ∈ alpha, ordinal beta
Axiom. (TransSet_ordsucc) We take the following as an axiom:
∀X : set, TransSet XTransSet (ordsucc X)
Axiom. (ordinal_ordsucc) We take the following as an axiom:
∀alpha : set, ordinal alphaordinal (ordsucc alpha)
Axiom. (nat_p_ordinal) We take the following as an axiom:
∀n : set, nat_p nordinal n
Axiom. (ordinal_1) We take the following as an axiom:
ordinal 1
Axiom. (ordinal_2) We take the following as an axiom:
ordinal 2
Axiom. (omega_TransSet) We take the following as an axiom:
TransSet ω
Axiom. (omega_ordinal) We take the following as an axiom:
ordinal ω
Axiom. (ordsucc_omega_ordinal) We take the following as an axiom:
ordinal (ordsucc ω)
Axiom. (TransSet_ordsucc_In_Subq) We take the following as an axiom:
∀X : set, TransSet X∀x ∈ X, ordsucc xX
Axiom. (ordinal_ordsucc_In_Subq) We take the following as an axiom:
∀alpha, ordinal alpha∀beta ∈ alpha, ordsucc betaalpha
Axiom. (ordinal_trichotomy_or) We take the following as an axiom:
∀alpha beta : set, ordinal alphaordinal betaalphabetaalpha = betabetaalpha
Axiom. (ordinal_trichotomy_or_impred) We take the following as an axiom:
∀alpha beta : set, ordinal alphaordinal beta∀p : prop, (alphabetap)(alpha = betap)(betaalphap)p
Axiom. (ordinal_In_Or_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalphabetabetaalpha
Axiom. (ordinal_linear) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalphabetabetaalpha
Axiom. (ordinal_ordsucc_In_eq) We take the following as an axiom:
∀alpha beta, ordinal alphabetaalphaordsucc betaalphaalpha = ordsucc beta
Axiom. (ordinal_lim_or_succ) We take the following as an axiom:
∀alpha, ordinal alpha(∀beta ∈ alpha, ordsucc betaalpha)(∃beta ∈ alpha, alpha = ordsucc beta)
Axiom. (ordinal_ordsucc_In) We take the following as an axiom:
∀alpha, ordinal alpha∀beta ∈ alpha, ordsucc betaordsucc alpha
Axiom. (ordinal_famunion) We take the following as an axiom:
∀X, ∀F : setset, (∀x ∈ X, ordinal (F x))ordinal (x ∈ XF x)
Axiom. (ordinal_binintersect) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaordinal (alphabeta)
Axiom. (ordinal_binunion) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaordinal (alphabeta)
Axiom. (ordinal_ind) We take the following as an axiom:
∀p : setprop, (∀alpha, ordinal alpha(∀beta ∈ alpha, p beta)p alpha)∀alpha, ordinal alphap alpha
Axiom. (least_ordinal_ex) We take the following as an axiom:
∀p : setprop, (∃alpha, ordinal alphap alpha)∃alpha, ordinal alphap alpha∀beta ∈ alpha, ¬ p beta
Definition. We define inj to be λX Y f ⇒ (∀u ∈ X, f uY)(∀u v ∈ X, f u = f vu = v) of type setset(setset)prop.
Definition. We define bij to be λX Y f ⇒ (∀u ∈ X, f uY)(∀u v ∈ X, f u = f vu = v)(∀w ∈ Y, ∃u ∈ X, f u = w) of type setset(setset)prop.
Axiom. (bijI) We take the following as an axiom:
∀X Y, ∀f : setset, (∀u ∈ X, f uY)(∀u v ∈ X, f u = f vu = v)(∀w ∈ Y, ∃u ∈ X, f u = w)bij X Y f
Axiom. (bijE) We take the following as an axiom:
∀X Y, ∀f : setset, bij X Y f∀p : prop, ((∀u ∈ X, f uY)(∀u v ∈ X, f u = f vu = v)(∀w ∈ Y, ∃u ∈ X, f u = w)p)p
Object. The name inv is a term of type set(setset)setset.
Axiom. (surj_rinv) We take the following as an axiom:
∀X Y, ∀f : setset, (∀w ∈ Y, ∃u ∈ X, f u = w)∀y ∈ Y, inv X f yXf (inv X f y) = y
Axiom. (inj_linv) We take the following as an axiom:
∀X, ∀f : setset, (∀u v ∈ X, f u = f vu = v)∀x ∈ X, inv X f (f x) = x
Axiom. (bij_inv) We take the following as an axiom:
∀X Y, ∀f : setset, bij X Y fbij Y X (inv X f)
Axiom. (bij_id) We take the following as an axiom:
∀X, bij X X (λx ⇒ x)
Axiom. (bij_comp) We take the following as an axiom:
∀X Y Z : set, ∀f g : setset, bij X Y fbij Y Z gbij X Z (λx ⇒ g (f x))
Definition. We define equip to be λX Y : set∃f : setset, bij X Y f of type setsetprop.
Axiom. (equip_ref) We take the following as an axiom:
∀X, equip X X
Axiom. (equip_sym) We take the following as an axiom:
∀X Y, equip X Yequip Y X
Axiom. (equip_tra) We take the following as an axiom:
∀X Y Z, equip X Yequip Y Zequip X Z
Axiom. (equip_0_Empty) We take the following as an axiom:
∀X, equip X 0X = 0
Beginning of Section SchroederBernstein
Axiom. (KnasterTarski_set) We take the following as an axiom:
∀A, ∀F : setset, (∀U ∈ 𝒫 A, F U𝒫 A)(∀U V ∈ 𝒫 A, UVF UF V)∃Y ∈ 𝒫 A, F Y = Y
Axiom. (image_In_Power) We take the following as an axiom:
∀A B, ∀f : setset, (∀x ∈ A, f xB)∀U ∈ 𝒫 A, {f x|x ∈ U}𝒫 B
Axiom. (image_monotone) We take the following as an axiom:
∀f : setset, ∀U V, UV{f x|x ∈ U}{f x|x ∈ V}
Axiom. (setminus_antimonotone) We take the following as an axiom:
∀A U V, UVAVAU
Axiom. (SchroederBernstein) We take the following as an axiom:
∀A B, ∀f g : setset, inj A B finj B A gequip A B
End of Section SchroederBernstein
Beginning of Section PigeonHole
Axiom. (PigeonHole_nat) We take the following as an axiom:
∀n, nat_p n∀f : setset, (∀i ∈ ordsucc n, f in)¬ (∀i j ∈ ordsucc n, f i = f ji = j)
Axiom. (PigeonHole_nat_bij) We take the following as an axiom:
∀n, nat_p n∀f : setset, (∀i ∈ n, f in)(∀i j ∈ n, f i = f ji = j)bij n n f
End of Section PigeonHole
Definition. We define finite to be λX ⇒ ∃n ∈ ω, equip X n of type setprop.
Axiom. (finite_ind) We take the following as an axiom:
∀p : setprop, p Empty(∀X y, finite XyXp Xp (X{y}))∀X, finite Xp X
Axiom. (finite_Empty) We take the following as an axiom:
finite 0
Axiom. (adjoin_finite) We take the following as an axiom:
∀X y, finite Xfinite (X{y})
Axiom. (binunion_finite) We take the following as an axiom:
∀X, finite X∀Y, finite Yfinite (XY)
Axiom. (famunion_nat_finite) We take the following as an axiom:
∀X : setset, ∀n, nat_p n(∀i ∈ n, finite (X i))finite (i ∈ nX i)
Axiom. (Subq_finite) We take the following as an axiom:
∀X, finite X∀Y, YXfinite Y
Axiom. (TransSet_In_ordsucc_Subq) We take the following as an axiom:
∀x y, TransSet yxordsucc yxy
Axiom. (exandE_i) We take the following as an axiom:
∀P Q : setprop, (∃x, P xQ x)∀r : prop, (∀x, P xQ xr)r
Axiom. (exandE_ii) We take the following as an axiom:
∀P Q : (setset)prop, (∃x : setset, P xQ x)∀p : prop, (∀x : setset, P xQ xp)p
Axiom. (exandE_iii) We take the following as an axiom:
∀P Q : (setsetset)prop, (∃x : setsetset, P xQ x)∀p : prop, (∀x : setsetset, P xQ xp)p
Axiom. (exandE_iiii) We take the following as an axiom:
∀P Q : (setsetsetset)prop, (∃x : setsetsetset, P xQ x)∀p : prop, (∀x : setsetsetset, P xQ xp)p
Beginning of Section Descr_ii
Variable P : (setset)prop
Object. The name Descr_ii is a term of type setset.
Hypothesis Pex : ∃f : setset, P f
Hypothesis Puniq : ∀f g : setset, P fP gf = g
Axiom. (Descr_ii_prop) We take the following as an axiom:
End of Section Descr_ii
Beginning of Section Descr_iii
Variable P : (setsetset)prop
Object. The name Descr_iii is a term of type setsetset.
Hypothesis Pex : ∃f : setsetset, P f
Hypothesis Puniq : ∀f g : setsetset, P fP gf = g
Axiom. (Descr_iii_prop) We take the following as an axiom:
End of Section Descr_iii
Beginning of Section Descr_Vo1
Variable P : Vo 1prop
Object. The name Descr_Vo1 is a term of type Vo 1.
Hypothesis Pex : ∃f : Vo 1, P f
Hypothesis Puniq : ∀f g : Vo 1, P fP gf = g
Axiom. (Descr_Vo1_prop) We take the following as an axiom:
End of Section Descr_Vo1
Beginning of Section If_ii
Variable p : prop
Variable f g : setset
Object. The name If_ii is a term of type setset.
Axiom. (If_ii_1) We take the following as an axiom:
pIf_ii = f
Axiom. (If_ii_0) We take the following as an axiom:
¬ pIf_ii = g
End of Section If_ii
Beginning of Section If_iii
Variable p : prop
Variable f g : setsetset
Object. The name If_iii is a term of type setsetset.
Axiom. (If_iii_1) We take the following as an axiom:
pIf_iii = f
Axiom. (If_iii_0) We take the following as an axiom:
¬ pIf_iii = g
End of Section If_iii
Beginning of Section EpsilonRec_i
Variable F : set(setset)set
Object. The name In_rec_i is a term of type setset.
Hypothesis Fr : ∀X : set, ∀g h : setset, (∀x ∈ X, g x = h x)F X g = F X h
Axiom. (In_rec_i_eq) We take the following as an axiom:
∀X : set, In_rec_i X = F X In_rec_i
End of Section EpsilonRec_i
Beginning of Section EpsilonRec_ii
Variable F : set(set(setset))(setset)
Object. The name In_rec_ii is a term of type set(setset).
Hypothesis Fr : ∀X : set, ∀g h : set(setset), (∀x ∈ X, g x = h x)F X g = F X h
Axiom. (In_rec_ii_eq) We take the following as an axiom:
∀X : set, In_rec_ii X = F X In_rec_ii
End of Section EpsilonRec_ii
Beginning of Section EpsilonRec_iii
Variable F : set(set(setsetset))(setsetset)
Object. The name In_rec_iii is a term of type set(setsetset).
Hypothesis Fr : ∀X : set, ∀g h : set(setsetset), (∀x ∈ X, g x = h x)F X g = F X h
Axiom. (In_rec_iii_eq) We take the following as an axiom:
∀X : set, In_rec_iii X = F X In_rec_iii
End of Section EpsilonRec_iii
Beginning of Section NatRec
Variable z : set
Variable f : setsetset
Let F : set(setset)setλn g ⇒ if nn then f ( n) (g ( n)) else z
Definition. We define nat_primrec to be In_rec_i F of type setset.
Axiom. (nat_primrec_r) We take the following as an axiom:
∀X : set, ∀g h : setset, (∀x ∈ X, g x = h x)F X g = F X h
Axiom. (nat_primrec_0) We take the following as an axiom:
Axiom. (nat_primrec_S) We take the following as an axiom:
∀n : set, nat_p nnat_primrec (ordsucc n) = f n (nat_primrec n)
End of Section NatRec
Beginning of Section NatArith
Definition. We define add_nat to be λn m : setnat_primrec n (λ_ r ⇒ ordsucc r) m of type setsetset.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Axiom. (add_nat_0R) We take the following as an axiom:
∀n : set, n + 0 = n
Axiom. (add_nat_SR) We take the following as an axiom:
∀n m : set, nat_p mn + ordsucc m = ordsucc (n + m)
Axiom. (add_nat_p) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p mnat_p (n + m)
Axiom. (add_nat_1_1_2) We take the following as an axiom:
1 + 1 = 2
Definition. We define mul_nat to be λn m : setnat_primrec 0 (λ_ r ⇒ n + r) m of type setsetset.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_nat.
Axiom. (mul_nat_0R) We take the following as an axiom:
∀n : set, n * 0 = 0
Axiom. (mul_nat_SR) We take the following as an axiom:
∀n m : set, nat_p mn * ordsucc m = n + n * m
Axiom. (mul_nat_p) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p mnat_p (n * m)
End of Section NatArith
Definition. We define Inj1 to be In_rec_i (λX f ⇒ {0}{f x|x ∈ X}) of type setset.
Axiom. (Inj1_eq) We take the following as an axiom:
∀X : set, Inj1 X = {0}{Inj1 x|x ∈ X}
Axiom. (Inj1I1) We take the following as an axiom:
∀X : set, 0Inj1 X
Axiom. (Inj1I2) We take the following as an axiom:
∀X x : set, xXInj1 xInj1 X
Axiom. (Inj1E) We take the following as an axiom:
∀X y : set, yInj1 Xy = 0∃x ∈ X, y = Inj1 x
Axiom. (Inj1NE1) We take the following as an axiom:
∀x : set, Inj1 x0
Axiom. (Inj1NE2) We take the following as an axiom:
∀x : set, Inj1 x{0}
Definition. We define Inj0 to be λX ⇒ {Inj1 x|x ∈ X} of type setset.
Axiom. (Inj0I) We take the following as an axiom:
∀X x : set, xXInj1 xInj0 X
Axiom. (Inj0E) We take the following as an axiom:
∀X y : set, yInj0 X∃x : set, xXy = Inj1 x
Definition. We define Unj to be In_rec_i (λX f ⇒ {f x|x ∈ X{0}}) of type setset.
Axiom. (Unj_eq) We take the following as an axiom:
∀X : set, Unj X = {Unj x|x ∈ X{0}}
Axiom. (Unj_Inj1_eq) We take the following as an axiom:
∀X : set, Unj (Inj1 X) = X
Axiom. (Inj1_inj) We take the following as an axiom:
∀X Y : set, Inj1 X = Inj1 YX = Y
Axiom. (Unj_Inj0_eq) We take the following as an axiom:
∀X : set, Unj (Inj0 X) = X
Axiom. (Inj0_inj) We take the following as an axiom:
∀X Y : set, Inj0 X = Inj0 YX = Y
Axiom. (Inj0_0) We take the following as an axiom:
Inj0 0 = 0
Axiom. (Inj0_Inj1_neq) We take the following as an axiom:
∀X Y : set, Inj0 XInj1 Y
Definition. We define setsum to be λX Y ⇒ {Inj0 x|x ∈ X}{Inj1 y|y ∈ Y} of type setsetset.
Notation. We use + as an infix operator with priority 450 and which associates to the left corresponding to applying term setsum.
Axiom. (Inj0_setsum) We take the following as an axiom:
∀X Y x : set, xXInj0 xX + Y
Axiom. (Inj1_setsum) We take the following as an axiom:
∀X Y y : set, yYInj1 yX + Y
Axiom. (setsum_Inj_inv) We take the following as an axiom:
∀X Y z : set, zX + Y(∃x ∈ X, z = Inj0 x)(∃y ∈ Y, z = Inj1 y)
Axiom. (Inj0_setsum_0L) We take the following as an axiom:
∀X : set, 0 + X = Inj0 X
Axiom. (Subq_1_Sing0) We take the following as an axiom:
1{0}
Axiom. (Inj1_setsum_1L) We take the following as an axiom:
∀X : set, 1 + X = Inj1 X
Axiom. (nat_setsum1_ordsucc) We take the following as an axiom:
∀n : set, nat_p n1 + n = ordsucc n
Axiom. (setsum_0_0) We take the following as an axiom:
0 + 0 = 0
Axiom. (setsum_1_0_1) We take the following as an axiom:
1 + 0 = 1
Axiom. (setsum_1_1_2) We take the following as an axiom:
1 + 1 = 2
Beginning of Section pair_setsum
Let pair ≝ setsum
Definition. We define proj0 to be λZ ⇒ {Unj z|z ∈ Z, ∃x : set, Inj0 x = z} of type setset.
Definition. We define proj1 to be λZ ⇒ {Unj z|z ∈ Z, ∃y : set, Inj1 y = z} of type setset.
Axiom. (Inj0_pair_0_eq) We take the following as an axiom:
Inj0 = pair 0
Axiom. (Inj1_pair_1_eq) We take the following as an axiom:
Inj1 = pair 1
Axiom. (pairI0) We take the following as an axiom:
∀X Y x, xXpair 0 xpair X Y
Axiom. (pairI1) We take the following as an axiom:
∀X Y y, yYpair 1 ypair X Y
Axiom. (pairE) We take the following as an axiom:
∀X Y z, zpair X Y(∃x ∈ X, z = pair 0 x)(∃y ∈ Y, z = pair 1 y)
Axiom. (pairE0) We take the following as an axiom:
∀X Y x, pair 0 xpair X YxX
Axiom. (pairE1) We take the following as an axiom:
∀X Y y, pair 1 ypair X YyY
Axiom. (proj0I) We take the following as an axiom:
∀w u : set, pair 0 uwuproj0 w
Axiom. (proj0E) We take the following as an axiom:
∀w u : set, uproj0 wpair 0 uw
Axiom. (proj1I) We take the following as an axiom:
∀w u : set, pair 1 uwuproj1 w
Axiom. (proj1E) We take the following as an axiom:
∀w u : set, uproj1 wpair 1 uw
Axiom. (proj0_pair_eq) We take the following as an axiom:
∀X Y : set, proj0 (pair X Y) = X
Axiom. (proj1_pair_eq) We take the following as an axiom:
∀X Y : set, proj1 (pair X Y) = Y
Definition. We define Sigma to be λX Y ⇒ x ∈ X{pair x y|y ∈ Y x} of type set(setset)set.
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Sigma.
Axiom. (pair_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀x ∈ X, ∀y ∈ Y x, pair x y∑x ∈ X, Y x
Axiom. (Sigma_eta_proj0_proj1) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z ∈ (∑x ∈ X, Y x), pair (proj0 z) (proj1 z) = zproj0 zXproj1 zY (proj0 z)
Axiom. (proj_Sigma_eta) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z ∈ (∑x ∈ X, Y x), pair (proj0 z) (proj1 z) = z
Axiom. (proj0_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z(∑x ∈ X, Y x)proj0 zX
Axiom. (proj1_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z(∑x ∈ X, Y x)proj1 zY (proj0 z)
Axiom. (pair_Sigma_E1) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀x y : set, pair x y(∑x ∈ X, Y x)yY x
Axiom. (Sigma_E) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z(∑x ∈ X, Y x)∃x ∈ X, ∃y ∈ Y x, z = pair x y
Definition. We define setprod to be λX Y : set∑x ∈ X, Y of type setsetset.
Notation. We use as an infix operator with priority 440 and which associates to the left corresponding to applying term setprod.
Let lam : set(setset)setSigma
Definition. We define ap to be λf x ⇒ {proj1 z|z ∈ f, ∃y : set, z = pair x y} of type setsetset.
Notation. When x is a set, a term x y is notation for ap x y.
Notation. λ xAB is notation for the set Sigma Ax : set ⇒ B).
Axiom. (lamI) We take the following as an axiom:
∀X : set, ∀F : setset, ∀x ∈ X, ∀y ∈ F x, pair x yλx ∈ XF x
Axiom. (lamE) We take the following as an axiom:
∀X : set, ∀F : setset, ∀z : set, z(λx ∈ XF x)∃x ∈ X, ∃y ∈ F x, z = pair x y
Axiom. (apI) We take the following as an axiom:
∀f x y, pair x yfyf x
Axiom. (apE) We take the following as an axiom:
∀f x y, yf xpair x yf
Axiom. (beta) We take the following as an axiom:
∀X : set, ∀F : setset, ∀x : set, xX(λx ∈ XF x) x = F x
Axiom. (proj0_ap_0) We take the following as an axiom:
∀u, proj0 u = u 0
Axiom. (proj1_ap_1) We take the following as an axiom:
∀u, proj1 u = u 1
Axiom. (pair_ap_0) We take the following as an axiom:
∀x y : set, (pair x y) 0 = x
Axiom. (pair_ap_1) We take the following as an axiom:
∀x y : set, (pair x y) 1 = y
Axiom. (ap0_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z(∑x ∈ X, Y x)(z 0)X
Axiom. (ap1_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z(∑x ∈ X, Y x)(z 1)(Y (z 0))
Definition. We define pair_p to be λu : setpair (u 0) (u 1) = u of type setprop.
Axiom. (pair_p_I) We take the following as an axiom:
∀x y, pair_p (pair x y)
Axiom. (Subq_2_UPair01) We take the following as an axiom:
2{0,1}
Axiom. (tuple_pair) We take the following as an axiom:
∀x y : set, pair x y = (x,y)
Definition. We define Pi to be λX Y ⇒ {f ∈ 𝒫 (∑x ∈ X, (Y x))|∀x ∈ X, f xY x} of type set(setset)set.
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Pi.
Axiom. (PiI) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, (∀u ∈ f, pair_p uu 0X)(∀x ∈ X, f xY x)f∏x ∈ X, Y x
Axiom. (lam_Pi) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀F : setset, (∀x ∈ X, F xY x)(λx ∈ XF x)(∏x ∈ X, Y x)
Axiom. (ap_Pi) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, ∀x : set, f(∏x ∈ X, Y x)xXf xY x
Definition. We define setexp to be λX Y : set∏y ∈ Y, X of type setsetset.
Notation. We use :^: as an infix operator with priority 430 and which associates to the left corresponding to applying term setexp.
Axiom. (pair_tuple_fun) We take the following as an axiom:
pair = (λx y ⇒ (x,y))
Axiom. (lamI2) We take the following as an axiom:
∀X, ∀F : setset, ∀x ∈ X, ∀y ∈ F x, (x,y)λx ∈ XF x
Beginning of Section Tuples
Variable x0 x1 : set
Axiom. (tuple_2_0_eq) We take the following as an axiom:
(x0,x1) 0 = x0
Axiom. (tuple_2_1_eq) We take the following as an axiom:
(x0,x1) 1 = x1
End of Section Tuples
Axiom. (ReplEq_setprod_ext) We take the following as an axiom:
∀X Y, ∀F G : setsetset, (∀x ∈ X, ∀y ∈ Y, F x y = G x y){F (w 0) (w 1)|w ∈ XY} = {G (w 0) (w 1)|w ∈ XY}
Axiom. (tuple_2_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀x ∈ X, ∀y ∈ Y x, (x,y)∑x ∈ X, Y x
Axiom. (tuple_2_setprod) We take the following as an axiom:
∀X : set, ∀Y : set, ∀x ∈ X, ∀y ∈ Y, (x,y)XY
End of Section pair_setsum
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Sigma.
Notation. We use as an infix operator with priority 440 and which associates to the left corresponding to applying term setprod.
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Pi.
Notation. We use :^: as an infix operator with priority 430 and which associates to the left corresponding to applying term setexp.
Object. The name DescrR_i_io_1 is a term of type (set(setprop)prop)set.
Object. The name DescrR_i_io_2 is a term of type (set(setprop)prop)setprop.
Axiom. (DescrR_i_io_12) We take the following as an axiom:
∀R : set(setprop)prop, (∃x, (∃y : setprop, R x y)(∀y z : setprop, R x yR x zy = z))R (DescrR_i_io_1 R) (DescrR_i_io_2 R)
Definition. We define PNoEq_ to be λalpha p q ⇒ ∀beta ∈ alpha, p betaq beta of type set(setprop)(setprop)prop.
Axiom. (PNoEq_ref_) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoEq_ alpha p p
Axiom. (PNoEq_sym_) We take the following as an axiom:
∀alpha, ∀p q : setprop, PNoEq_ alpha p qPNoEq_ alpha q p
Axiom. (PNoEq_tra_) We take the following as an axiom:
∀alpha, ∀p q r : setprop, PNoEq_ alpha p qPNoEq_ alpha q rPNoEq_ alpha p r
Axiom. (PNoEq_antimon_) We take the following as an axiom:
∀p q : setprop, ∀alpha, ordinal alpha∀beta ∈ alpha, PNoEq_ alpha p qPNoEq_ beta p q
Definition. We define PNoLt_ to be λalpha p q ⇒ ∃beta ∈ alpha, PNoEq_ beta p q¬ p betaq beta of type set(setprop)(setprop)prop.
Axiom. (PNoLt_E_) We take the following as an axiom:
∀alpha, ∀p q : setprop, PNoLt_ alpha p q∀R : prop, (∀beta, betaalphaPNoEq_ beta p q¬ p betaq betaR)R
Axiom. (PNoLt_irref_) We take the following as an axiom:
∀alpha, ∀p : setprop, ¬ PNoLt_ alpha p p
Axiom. (PNoLt_mon_) We take the following as an axiom:
∀p q : setprop, ∀alpha, ordinal alpha∀beta ∈ alpha, PNoLt_ beta p qPNoLt_ alpha p q
Axiom. (PNoLt_trichotomy_or_) We take the following as an axiom:
∀p q : setprop, ∀alpha, ordinal alphaPNoLt_ alpha p qPNoEq_ alpha p qPNoLt_ alpha q p
Axiom. (PNoLt_tra_) We take the following as an axiom:
∀alpha, ordinal alpha∀p q r : setprop, PNoLt_ alpha p qPNoLt_ alpha q rPNoLt_ alpha p r
Object. The name PNoLt is a term of type set(setprop)set(setprop)prop.
Axiom. (PNoLtI1) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, PNoLt_ (alphabeta) p qPNoLt alpha p beta q
Axiom. (PNoLtI2) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, alphabetaPNoEq_ alpha p qq alphaPNoLt alpha p beta q
Axiom. (PNoLtI3) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, betaalphaPNoEq_ beta p q¬ p betaPNoLt alpha p beta q
Axiom. (PNoLtE) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, PNoLt alpha p beta q∀R : prop, (PNoLt_ (alphabeta) p qR)(alphabetaPNoEq_ alpha p qq alphaR)(betaalphaPNoEq_ beta p q¬ p betaR)R
Axiom. (PNoLt_irref) We take the following as an axiom:
∀alpha, ∀p : setprop, ¬ PNoLt alpha p alpha p
Axiom. (PNoLt_trichotomy_or) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPNoLt alpha p beta qalpha = betaPNoEq_ alpha p qPNoLt beta q alpha p
Axiom. (PNoLtEq_tra) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q r : setprop, PNoLt alpha p beta qPNoEq_ beta q rPNoLt alpha p beta r
Axiom. (PNoEqLt_tra) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q r : setprop, PNoEq_ alpha p qPNoLt alpha q beta rPNoLt alpha p beta r
Axiom. (PNoLt_tra) We take the following as an axiom:
∀alpha beta gamma, ordinal alphaordinal betaordinal gamma∀p q r : setprop, PNoLt alpha p beta qPNoLt beta q gamma rPNoLt alpha p gamma r
Definition. We define PNoLe to be λalpha p beta q ⇒ PNoLt alpha p beta qalpha = betaPNoEq_ alpha p q of type set(setprop)set(setprop)prop.
Axiom. (PNoLeI1) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, PNoLt alpha p beta qPNoLe alpha p beta q
Axiom. (PNoLeI2) We take the following as an axiom:
∀alpha, ∀p q : setprop, PNoEq_ alpha p qPNoLe alpha p alpha q
Axiom. (PNoLe_ref) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoLe alpha p alpha p
Axiom. (PNoLe_antisym) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q : setprop, PNoLe alpha p beta qPNoLe beta q alpha palpha = betaPNoEq_ alpha p q
Axiom. (PNoLtLe_tra) We take the following as an axiom:
∀alpha beta gamma, ordinal alphaordinal betaordinal gamma∀p q r : setprop, PNoLt alpha p beta qPNoLe beta q gamma rPNoLt alpha p gamma r
Axiom. (PNoLeLt_tra) We take the following as an axiom:
∀alpha beta gamma, ordinal alphaordinal betaordinal gamma∀p q r : setprop, PNoLe alpha p beta qPNoLt beta q gamma rPNoLt alpha p gamma r
Axiom. (PNoEqLe_tra) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q r : setprop, PNoEq_ alpha p qPNoLe alpha q beta rPNoLe alpha p beta r
Axiom. (PNoLe_tra) We take the following as an axiom:
∀alpha beta gamma, ordinal alphaordinal betaordinal gamma∀p q r : setprop, PNoLe alpha p beta qPNoLe beta q gamma rPNoLe alpha p gamma r
Definition. We define PNo_downc to be λL alpha p ⇒ ∃beta, ordinal beta∃q : setprop, L beta qPNoLe alpha p beta q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_upc to be λR alpha p ⇒ ∃beta, ordinal beta∃q : setprop, R beta qPNoLe beta q alpha p of type (set(setprop)prop)set(setprop)prop.
Axiom. (PNoLe_downc) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPNo_downc L alpha pPNoLe beta q alpha pPNo_downc L beta q
Axiom. (PNo_downc_ref) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, L alpha pPNo_downc L alpha p
Axiom. (PNo_upc_ref) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, R alpha pPNo_upc R alpha p
Axiom. (PNoLe_upc) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPNo_upc R alpha pPNoLe alpha p beta qPNo_upc R beta q
Definition. We define PNoLt_pwise to be λL R ⇒ ∀gamma, ordinal gamma∀p : setprop, L gamma p∀delta, ordinal delta∀q : setprop, R delta qPNoLt gamma p delta q of type (set(setprop)prop)(set(setprop)prop)prop.
Axiom. (PNoLt_pwise_downc_upc) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L RPNoLt_pwise (PNo_downc L) (PNo_upc R)
Definition. We define PNo_rel_strict_upperbd to be λL alpha p ⇒ ∀beta ∈ alpha, ∀q : setprop, PNo_downc L beta qPNoLt beta q alpha p of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_lowerbd to be λR alpha p ⇒ ∀beta ∈ alpha, ∀q : setprop, PNo_upc R beta qPNoLt alpha p beta q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_imv to be λL R alpha p ⇒ PNo_rel_strict_upperbd L alpha pPNo_rel_strict_lowerbd R alpha p of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNoEq_rel_strict_upperbd) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_rel_strict_upperbd L alpha pPNo_rel_strict_upperbd L alpha q
Axiom. (PNo_rel_strict_upperbd_antimon) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, ∀beta ∈ alpha, PNo_rel_strict_upperbd L alpha pPNo_rel_strict_upperbd L beta p
Axiom. (PNoEq_rel_strict_lowerbd) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_rel_strict_lowerbd R alpha pPNo_rel_strict_lowerbd R alpha q
Axiom. (PNo_rel_strict_lowerbd_antimon) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, ∀beta ∈ alpha, PNo_rel_strict_lowerbd R alpha pPNo_rel_strict_lowerbd R beta p
Axiom. (PNoEq_rel_strict_imv) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_rel_strict_imv L R alpha pPNo_rel_strict_imv L R alpha q
Axiom. (PNo_rel_strict_imv_antimon) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, ∀beta ∈ alpha, PNo_rel_strict_imv L R alpha pPNo_rel_strict_imv L R beta p
Definition. We define PNo_rel_strict_uniq_imv to be λL R alpha p ⇒ PNo_rel_strict_imv L R alpha p∀q : setprop, PNo_rel_strict_imv L R alpha qPNoEq_ alpha p q of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_split_imv to be λL R alpha p ⇒ PNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p deltadeltaalpha)PNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p deltadelta = alpha) of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNo_extend0_eq) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoEq_ alpha p (λdelta ⇒ p deltadeltaalpha)
Axiom. (PNo_extend1_eq) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoEq_ alpha p (λdelta ⇒ p deltadelta = alpha)
Axiom. (PNo_rel_imv_ex) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alpha(∃p : setprop, PNo_rel_strict_uniq_imv L R alpha p)(∃tau ∈ alpha, ∃p : setprop, PNo_rel_strict_split_imv L R tau p)
Definition. We define PNo_lenbdd to be λalpha L ⇒ ∀beta, ∀p : setprop, L beta pbetaalpha of type set(set(setprop)prop)prop.
Axiom. (PNo_lenbdd_strict_imv_extend0) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∀p : setprop, PNo_rel_strict_imv L R alpha pPNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p deltadeltaalpha)
Axiom. (PNo_lenbdd_strict_imv_extend1) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∀p : setprop, PNo_rel_strict_imv L R alpha pPNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p deltadelta = alpha)
Axiom. (PNo_lenbdd_strict_imv_split) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∀p : setprop, PNo_rel_strict_imv L R alpha pPNo_rel_strict_split_imv L R alpha p
Axiom. (PNo_rel_imv_bdd_ex) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∃beta ∈ ordsucc alpha, ∃p : setprop, PNo_rel_strict_split_imv L R beta p
Definition. We define PNo_strict_upperbd to be λL alpha p ⇒ ∀beta, ordinal beta∀q : setprop, L beta qPNoLt beta q alpha p of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_strict_lowerbd to be λR alpha p ⇒ ∀beta, ordinal beta∀q : setprop, R beta qPNoLt alpha p beta q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_strict_imv to be λL R alpha p ⇒ PNo_strict_upperbd L alpha pPNo_strict_lowerbd R alpha p of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNoEq_strict_upperbd) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_strict_upperbd L alpha pPNo_strict_upperbd L alpha q
Axiom. (PNoEq_strict_lowerbd) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_strict_lowerbd R alpha pPNo_strict_lowerbd R alpha q
Axiom. (PNoEq_strict_imv) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_strict_imv L R alpha pPNo_strict_imv L R alpha q
Axiom. (PNo_strict_upperbd_imp_rel_strict_upperbd) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀beta ∈ ordsucc alpha, ∀p : setprop, PNo_strict_upperbd L alpha pPNo_rel_strict_upperbd L beta p
Axiom. (PNo_strict_lowerbd_imp_rel_strict_lowerbd) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀beta ∈ ordsucc alpha, ∀p : setprop, PNo_strict_lowerbd R alpha pPNo_rel_strict_lowerbd R beta p
Axiom. (PNo_strict_imv_imp_rel_strict_imv) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀beta ∈ ordsucc alpha, ∀p : setprop, PNo_strict_imv L R alpha pPNo_rel_strict_imv L R beta p
Axiom. (PNo_rel_split_imv_imp_strict_imv) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, PNo_rel_strict_split_imv L R alpha pPNo_strict_imv L R alpha p
Axiom. (PNo_lenbdd_strict_imv_ex) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∃beta ∈ ordsucc alpha, ∃p : setprop, PNo_strict_imv L R beta p
Definition. We define PNo_least_rep to be λL R beta p ⇒ ordinal betaPNo_strict_imv L R beta p∀gamma ∈ beta, ∀q : setprop, ¬ PNo_strict_imv L R gamma q of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Definition. We define PNo_least_rep2 to be λL R beta p ⇒ PNo_least_rep L R beta p∀x, xbeta¬ p x of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNo_strict_imv_pred_eq) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alpha∀p q : setprop, PNo_least_rep L R alpha pPNo_strict_imv L R alpha q∀beta ∈ alpha, p betaq beta
Axiom. (PNo_lenbdd_least_rep2_exuniq2) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∃beta, (∃p : setprop, PNo_least_rep2 L R beta p)(∀p q : setprop, PNo_least_rep2 L R beta pPNo_least_rep2 L R beta qp = q)
Object. The name PNo_bd is a term of type (set(setprop)prop)(set(setprop)prop)set.
Object. The name PNo_pred is a term of type (set(setprop)prop)(set(setprop)prop)setprop.
Axiom. (PNo_bd_pred_lem) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha RPNo_least_rep2 L R (PNo_bd L R) (PNo_pred L R)
Axiom. (PNo_bd_pred) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha RPNo_least_rep L R (PNo_bd L R) (PNo_pred L R)
Axiom. (PNo_bd_In) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha RPNo_bd L Rordsucc alpha
Beginning of Section TaggedSets
Let tag : setsetλalpha ⇒ SetAdjoin alpha {1}
Notation. We use ' as a postfix operator with priority 100 corresponding to applying term tag.
Axiom. (not_TransSet_Sing1) We take the following as an axiom:
¬ TransSet {1}
Axiom. (not_ordinal_Sing1) We take the following as an axiom:
¬ ordinal {1}
Axiom. (tagged_not_ordinal) We take the following as an axiom:
∀y, ¬ ordinal (y ')
Axiom. (tagged_notin_ordinal) We take the following as an axiom:
∀alpha y, ordinal alpha(y ')alpha
Axiom. (tagged_eqE_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaalpha ' = beta 'alphabeta
Axiom. (tagged_eqE_eq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha ' = beta 'alpha = beta
Axiom. (tagged_ReplE) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betabeta '{gamma '|gamma ∈ alpha}betaalpha
Axiom. (ordinal_notin_tagged_Repl) We take the following as an axiom:
∀alpha Y, ordinal alphaalpha{y '|y ∈ Y}
Definition. We define SNoElts_ to be λalpha ⇒ alpha{beta '|beta ∈ alpha} of type setset.
Axiom. (SNoElts_mon) We take the following as an axiom:
∀alpha beta, alphabetaSNoElts_ alphaSNoElts_ beta
Definition. We define SNo_ to be λalpha x ⇒ xSNoElts_ alpha∀beta ∈ alpha, exactly1of2 (beta 'x) (betax) of type setsetprop.
Definition. We define PSNo to be λalpha p ⇒ {beta ∈ alpha|p beta}{beta '|beta ∈ alpha, ¬ p beta} of type set(setprop)set.
Axiom. (PNoEq_PSNo) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, PNoEq_ alpha (λbeta ⇒ betaPSNo alpha p) p
Axiom. (SNo_PSNo) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, SNo_ alpha (PSNo alpha p)
Axiom. (SNo_PSNo_eta_) We take the following as an axiom:
∀alpha x, ordinal alphaSNo_ alpha xx = PSNo alpha (λbeta ⇒ betax)
Object. The name SNo is a term of type setprop.
Axiom. (SNo_SNo) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo_ alpha zSNo z
Object. The name SNoLev is a term of type setset.
Axiom. (SNoLev_uniq_Subq) We take the following as an axiom:
∀x alpha beta, ordinal alphaordinal betaSNo_ alpha xSNo_ beta xalphabeta
Axiom. (SNoLev_uniq) We take the following as an axiom:
∀x alpha beta, ordinal alphaordinal betaSNo_ alpha xSNo_ beta xalpha = beta
Axiom. (SNoLev_prop) We take the following as an axiom:
∀x, SNo xordinal (SNoLev x)SNo_ (SNoLev x) x
Axiom. (SNoLev_ordinal) We take the following as an axiom:
∀x, SNo xordinal (SNoLev x)
Axiom. (SNoLev_) We take the following as an axiom:
∀x, SNo xSNo_ (SNoLev x) x
Axiom. (SNo_PSNo_eta) We take the following as an axiom:
∀x, SNo xx = PSNo (SNoLev x) (λbeta ⇒ betax)
Axiom. (SNoLev_PSNo) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, SNoLev (PSNo alpha p) = alpha
Axiom. (SNo_Subq) We take the following as an axiom:
∀x y, SNo xSNo ySNoLev xSNoLev y(∀alpha ∈ SNoLev x, alphaxalphay)xy
Definition. We define SNoEq_ to be λalpha x y ⇒ PNoEq_ alpha (λbeta ⇒ betax) (λbeta ⇒ betay) of type setsetsetprop.
Axiom. (SNoEq_I) We take the following as an axiom:
∀alpha x y, (∀beta ∈ alpha, betaxbetay)SNoEq_ alpha x y
Axiom. (SNo_eq) We take the following as an axiom:
∀x y, SNo xSNo ySNoLev x = SNoLev ySNoEq_ (SNoLev x) x yx = y
End of Section TaggedSets
Definition. We define SNoLt to be λx y ⇒ PNoLt (SNoLev x) (λbeta ⇒ betax) (SNoLev y) (λbeta ⇒ betay) of type setsetprop.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Definition. We define SNoLe to be λx y ⇒ PNoLe (SNoLev x) (λbeta ⇒ betax) (SNoLev y) (λbeta ⇒ betay) of type setsetprop.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Axiom. (SNoLtLe) We take the following as an axiom:
∀x y, x < yxy
Axiom. (SNoLeE) We take the following as an axiom:
∀x y, SNo xSNo yxyx < yx = y
Axiom. (SNoEq_sym_) We take the following as an axiom:
∀alpha x y, SNoEq_ alpha x ySNoEq_ alpha y x
Axiom. (SNoEq_tra_) We take the following as an axiom:
∀alpha x y z, SNoEq_ alpha x ySNoEq_ alpha y zSNoEq_ alpha x z
Axiom. (SNoLtE) We take the following as an axiom:
∀x y, SNo xSNo yx < y∀p : prop, (∀z, SNo zSNoLev zSNoLev xSNoLev ySNoEq_ (SNoLev z) z xSNoEq_ (SNoLev z) z yx < zz < ySNoLev zxSNoLev zyp)(SNoLev xSNoLev ySNoEq_ (SNoLev x) x ySNoLev xyp)(SNoLev ySNoLev xSNoEq_ (SNoLev y) x ySNoLev yxp)p
Axiom. (SNoLtI2) We take the following as an axiom:
∀x y, SNoLev xSNoLev ySNoEq_ (SNoLev x) x ySNoLev xyx < y
Axiom. (SNoLtI3) We take the following as an axiom:
∀x y, SNoLev ySNoLev xSNoEq_ (SNoLev y) x ySNoLev yxx < y
Axiom. (SNoLt_irref) We take the following as an axiom:
∀x, ¬ SNoLt x x
Axiom. (SNoLt_trichotomy_or) We take the following as an axiom:
∀x y, SNo xSNo yx < yx = yy < x
Axiom. (SNoLt_trichotomy_or_impred) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (x < yp)(x = yp)(y < xp)p
Axiom. (SNoLt_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < yy < zx < z
Axiom. (SNoLe_ref) We take the following as an axiom:
∀x, SNoLe x x
Axiom. (SNoLe_antisym) We take the following as an axiom:
∀x y, SNo xSNo yxyyxx = y
Axiom. (SNoLtLe_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < yyzx < z
Axiom. (SNoLeLt_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zxyy < zx < z
Axiom. (SNoLe_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zxyyzxz
Axiom. (SNoLtLe_or) We take the following as an axiom:
∀x y, SNo xSNo yx < yyx
Axiom. (SNoLt_PSNo_PNoLt) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPSNo alpha p < PSNo beta qPNoLt alpha p beta q
Axiom. (PNoLt_SNoLt_PSNo) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPNoLt alpha p beta qPSNo alpha p < PSNo beta q
Definition. We define SNoCut to be λL R ⇒ PSNo (PNo_bd (λalpha p ⇒ ordinal alphaPSNo alpha pL) (λalpha p ⇒ ordinal alphaPSNo alpha pR)) (PNo_pred (λalpha p ⇒ ordinal alphaPSNo alpha pL) (λalpha p ⇒ ordinal alphaPSNo alpha pR)) of type setsetset.
Definition. We define SNoCutP to be λL R ⇒ (∀x ∈ L, SNo x)(∀y ∈ R, SNo y)(∀x ∈ L, ∀y ∈ R, x < y) of type setsetprop.
Axiom. (SNoCutP_SNoCut) We take the following as an axiom:
∀L R, SNoCutP L RSNo (SNoCut L R)SNoLev (SNoCut L R)ordsucc ((x ∈ Lordsucc (SNoLev x))(y ∈ Rordsucc (SNoLev y)))(∀x ∈ L, x < SNoCut L R)(∀y ∈ R, SNoCut L R < y)(∀z, SNo z(∀x ∈ L, x < z)(∀y ∈ R, z < y)SNoLev (SNoCut L R)SNoLev zSNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z)
Axiom. (SNoCutP_SNoCut_impred) We take the following as an axiom:
∀L R, SNoCutP L R∀p : prop, (SNo (SNoCut L R)SNoLev (SNoCut L R)ordsucc ((x ∈ Lordsucc (SNoLev x))(y ∈ Rordsucc (SNoLev y)))(∀x ∈ L, x < SNoCut L R)(∀y ∈ R, SNoCut L R < y)(∀z, SNo z(∀x ∈ L, x < z)(∀y ∈ R, z < y)SNoLev (SNoCut L R)SNoLev zSNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z)p)p
Axiom. (SNoCutP_L_0) We take the following as an axiom:
∀L, (∀x ∈ L, SNo x)SNoCutP L 0
Axiom. (SNoCutP_0_R) We take the following as an axiom:
∀R, (∀x ∈ R, SNo x)SNoCutP 0 R
Axiom. (SNoCutP_0_0) We take the following as an axiom:
SNoCutP 0 0
Definition. We define SNoS_ to be λalpha ⇒ {x ∈ 𝒫 (SNoElts_ alpha)|∃beta ∈ alpha, SNo_ beta x} of type setset.
Axiom. (SNoS_E) We take the following as an axiom:
∀alpha, ordinal alpha∀x ∈ SNoS_ alpha, ∃beta ∈ alpha, SNo_ beta x
Beginning of Section TaggedSets2
Let tag : setsetλalpha ⇒ SetAdjoin alpha {1}
Notation. We use ' as a postfix operator with priority 100 corresponding to applying term tag.
Axiom. (SNoS_I) We take the following as an axiom:
∀alpha, ordinal alpha∀x, ∀beta ∈ alpha, SNo_ beta xxSNoS_ alpha
Axiom. (SNoS_I2) We take the following as an axiom:
∀x y, SNo xSNo ySNoLev xSNoLev yxSNoS_ (SNoLev y)
Axiom. (SNoS_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalphabetaSNoS_ alphaSNoS_ beta
Axiom. (SNoLev_uniq2) We take the following as an axiom:
∀alpha, ordinal alpha∀x, SNo_ alpha xSNoLev x = alpha
Axiom. (SNoS_E2) We take the following as an axiom:
∀alpha, ordinal alpha∀x ∈ SNoS_ alpha, ∀p : prop, (SNoLev xalphaordinal (SNoLev x)SNo xSNo_ (SNoLev x) xp)p
Axiom. (SNoS_In_neq) We take the following as an axiom:
∀w, SNo w∀x ∈ SNoS_ (SNoLev w), xw
Axiom. (SNoS_SNoLev) We take the following as an axiom:
∀z, SNo zzSNoS_ (ordsucc (SNoLev z))
Definition. We define SNoL to be λz ⇒ {x ∈ SNoS_ (SNoLev z)|x < z} of type setset.
Definition. We define SNoR to be λz ⇒ {y ∈ SNoS_ (SNoLev z)|z < y} of type setset.
Axiom. (SNoCutP_SNoL_SNoR) We take the following as an axiom:
∀z, SNo zSNoCutP (SNoL z) (SNoR z)
Axiom. (SNoL_E) We take the following as an axiom:
∀x, SNo x∀w ∈ SNoL x, ∀p : prop, (SNo wSNoLev wSNoLev xw < xp)p
Axiom. (SNoR_E) We take the following as an axiom:
∀x, SNo x∀z ∈ SNoR x, ∀p : prop, (SNo zSNoLev zSNoLev xx < zp)p
Axiom. (SNoL_SNoS_) We take the following as an axiom:
∀z, SNoL zSNoS_ (SNoLev z)
Axiom. (SNoR_SNoS_) We take the following as an axiom:
∀z, SNoR zSNoS_ (SNoLev z)
Axiom. (SNoL_SNoS) We take the following as an axiom:
∀x, SNo x∀w ∈ SNoL x, wSNoS_ (SNoLev x)
Axiom. (SNoR_SNoS) We take the following as an axiom:
∀x, SNo x∀z ∈ SNoR x, zSNoS_ (SNoLev x)
Axiom. (SNoL_I) We take the following as an axiom:
∀z, SNo z∀x, SNo xSNoLev xSNoLev zx < zxSNoL z
Axiom. (SNoR_I) We take the following as an axiom:
∀z, SNo z∀y, SNo ySNoLev ySNoLev zz < yySNoR z
Axiom. (SNo_eta) We take the following as an axiom:
∀z, SNo zz = SNoCut (SNoL z) (SNoR z)
Axiom. (SNoCutP_SNo_SNoCut) We take the following as an axiom:
∀L R, SNoCutP L RSNo (SNoCut L R)
Axiom. (SNoCutP_SNoCut_L) We take the following as an axiom:
∀L R, SNoCutP L R∀x ∈ L, x < SNoCut L R
Axiom. (SNoCutP_SNoCut_R) We take the following as an axiom:
∀L R, SNoCutP L R∀y ∈ R, SNoCut L R < y
Axiom. (SNoCutP_SNoCut_fst) We take the following as an axiom:
∀L R, SNoCutP L R∀z, SNo z(∀x ∈ L, x < z)(∀y ∈ R, z < y)SNoLev (SNoCut L R)SNoLev zSNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z
Axiom. (SNoCut_Le) We take the following as an axiom:
∀L1 R1 L2 R2, SNoCutP L1 R1SNoCutP L2 R2(∀w ∈ L1, w < SNoCut L2 R2)(∀z ∈ R2, SNoCut L1 R1 < z)SNoCut L1 R1SNoCut L2 R2
Axiom. (SNoCut_ext) We take the following as an axiom:
∀L1 R1 L2 R2, SNoCutP L1 R1SNoCutP L2 R2(∀w ∈ L1, w < SNoCut L2 R2)(∀z ∈ R1, SNoCut L2 R2 < z)(∀w ∈ L2, w < SNoCut L1 R1)(∀z ∈ R2, SNoCut L1 R1 < z)SNoCut L1 R1 = SNoCut L2 R2
Axiom. (SNoLt_SNoL_or_SNoR_impred) We take the following as an axiom:
∀x y, SNo xSNo yx < y∀p : prop, (∀z ∈ SNoL y, zSNoR xp)(xSNoL yp)(ySNoR xp)p
Axiom. (SNoL_or_SNoR_impred) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (x = yp)(∀z ∈ SNoL y, zSNoR xp)(xSNoL yp)(ySNoR xp)(∀z ∈ SNoR y, zSNoL xp)(xSNoR yp)(ySNoL xp)p
Axiom. (ordinal_SNo_) We take the following as an axiom:
∀alpha, ordinal alphaSNo_ alpha alpha
Axiom. (ordinal_SNo) We take the following as an axiom:
∀alpha, ordinal alphaSNo alpha
Axiom. (ordinal_SNoLev) We take the following as an axiom:
∀alpha, ordinal alphaSNoLev alpha = alpha
Axiom. (ordinal_SNoLev_max) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo zSNoLev zalphaz < alpha
Axiom. (ordinal_SNoL) We take the following as an axiom:
∀alpha, ordinal alphaSNoL alpha = SNoS_ alpha
Axiom. (ordinal_SNoR) We take the following as an axiom:
∀alpha, ordinal alphaSNoR alpha = Empty
Axiom. (nat_p_SNo) We take the following as an axiom:
∀n, nat_p nSNo n
Axiom. (omega_SNo) We take the following as an axiom:
∀n ∈ ω, SNo n
Axiom. (omega_SNoS_omega) We take the following as an axiom:
ωSNoS_ ω
Axiom. (ordinal_In_SNoLt) We take the following as an axiom:
∀alpha, ordinal alpha∀beta ∈ alpha, beta < alpha
Axiom. (ordinal_SNoLev_max_2) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo zSNoLev zordsucc alphazalpha
Axiom. (ordinal_Subq_SNoLe) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalphabetaalphabeta
Axiom. (ordinal_SNoLt_In) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha < betaalphabeta
Axiom. (omega_nonneg) We take the following as an axiom:
∀m ∈ ω, 0m
Axiom. (SNo_0) We take the following as an axiom:
SNo 0
Axiom. (SNo_1) We take the following as an axiom:
SNo 1
Axiom. (SNo_2) We take the following as an axiom:
SNo 2
Axiom. (SNoLev_0) We take the following as an axiom:
SNoLev 0 = 0
Axiom. (SNoCut_0_0) We take the following as an axiom:
SNoCut 0 0 = 0
Axiom. (SNoL_0) We take the following as an axiom:
SNoL 0 = 0
Axiom. (SNoR_0) We take the following as an axiom:
SNoR 0 = 0
Axiom. (SNoL_1) We take the following as an axiom:
SNoL 1 = 1
Axiom. (SNoR_1) We take the following as an axiom:
SNoR 1 = 0
Axiom. (SNo_max_SNoLev) We take the following as an axiom:
∀x, SNo x(∀y ∈ SNoS_ (SNoLev x), y < x)SNoLev x = x
Axiom. (SNo_max_ordinal) We take the following as an axiom:
∀x, SNo x(∀y ∈ SNoS_ (SNoLev x), y < x)ordinal x
Definition. We define SNo_extend0 to be λx ⇒ PSNo (ordsucc (SNoLev x)) (λdelta ⇒ deltaxdeltaSNoLev x) of type setset.
Definition. We define SNo_extend1 to be λx ⇒ PSNo (ordsucc (SNoLev x)) (λdelta ⇒ deltaxdelta = SNoLev x) of type setset.
Axiom. (SNo_extend0_SNo_) We take the following as an axiom:
∀x, SNo xSNo_ (ordsucc (SNoLev x)) (SNo_extend0 x)
Axiom. (SNo_extend1_SNo_) We take the following as an axiom:
∀x, SNo xSNo_ (ordsucc (SNoLev x)) (SNo_extend1 x)
Axiom. (SNo_extend0_SNo) We take the following as an axiom:
∀x, SNo xSNo (SNo_extend0 x)
Axiom. (SNo_extend1_SNo) We take the following as an axiom:
∀x, SNo xSNo (SNo_extend1 x)
Axiom. (SNo_extend0_SNoLev) We take the following as an axiom:
∀x, SNo xSNoLev (SNo_extend0 x) = ordsucc (SNoLev x)
Axiom. (SNo_extend1_SNoLev) We take the following as an axiom:
∀x, SNo xSNoLev (SNo_extend1 x) = ordsucc (SNoLev x)
Axiom. (SNo_extend0_nIn) We take the following as an axiom:
∀x, SNo xSNoLev xSNo_extend0 x
Axiom. (SNo_extend1_In) We take the following as an axiom:
∀x, SNo xSNoLev xSNo_extend1 x
Axiom. (SNo_extend0_SNoEq) We take the following as an axiom:
∀x, SNo xSNoEq_ (SNoLev x) (SNo_extend0 x) x
Axiom. (SNo_extend1_SNoEq) We take the following as an axiom:
∀x, SNo xSNoEq_ (SNoLev x) (SNo_extend1 x) x
Axiom. (SNoLev_0_eq_0) We take the following as an axiom:
∀x, SNo xSNoLev x = 0x = 0
Definition. We define eps_ to be λn ⇒ {0}{(ordsucc m) '|m ∈ n} of type setset.
Axiom. (eps_ordinal_In_eq_0) We take the following as an axiom:
∀n alpha, ordinal alphaalphaeps_ nalpha = 0
Axiom. (eps_0_1) We take the following as an axiom:
eps_ 0 = 1
Axiom. (SNo__eps_) We take the following as an axiom:
∀n ∈ ω, SNo_ (ordsucc n) (eps_ n)
Axiom. (SNo_eps_) We take the following as an axiom:
∀n ∈ ω, SNo (eps_ n)
Axiom. (SNo_eps_1) We take the following as an axiom:
SNo (eps_ 1)
Axiom. (SNoLev_eps_) We take the following as an axiom:
∀n ∈ ω, SNoLev (eps_ n) = ordsucc n
Axiom. (SNo_eps_SNoS_omega) We take the following as an axiom:
∀n ∈ ω, eps_ nSNoS_ ω
Axiom. (SNo_eps_decr) We take the following as an axiom:
∀n ∈ ω, ∀m ∈ n, eps_ n < eps_ m
Axiom. (SNo_eps_pos) We take the following as an axiom:
∀n ∈ ω, 0 < eps_ n
Axiom. (SNo_pos_eps_Lt) We take the following as an axiom:
∀n, nat_p n∀x ∈ SNoS_ (ordsucc n), 0 < xeps_ n < x
Axiom. (SNo_pos_eps_Le) We take the following as an axiom:
∀n, nat_p n∀x ∈ SNoS_ (ordsucc (ordsucc n)), 0 < xeps_ nx
Axiom. (eps_SNo_eq) We take the following as an axiom:
∀n, nat_p n∀x ∈ SNoS_ (ordsucc n), 0 < xSNoEq_ (SNoLev x) (eps_ n) x∃m ∈ n, x = eps_ m
Axiom. (eps_SNoCutP) We take the following as an axiom:
∀n ∈ ω, SNoCutP {0} {eps_ m|m ∈ n}
Axiom. (eps_SNoCut) We take the following as an axiom:
∀n ∈ ω, eps_ n = SNoCut {0} {eps_ m|m ∈ n}
End of Section TaggedSets2
Axiom. (SNo_etaE) We take the following as an axiom:
∀z, SNo z∀p : prop, (∀L R, SNoCutP L R(∀x ∈ L, SNoLev xSNoLev z)(∀y ∈ R, SNoLev ySNoLev z)z = SNoCut L Rp)p
Axiom. (SNo_ind) We take the following as an axiom:
∀P : setprop, (∀L R, SNoCutP L R(∀x ∈ L, P x)(∀y ∈ R, P y)P (SNoCut L R))∀z, SNo zP z
Beginning of Section SurrealRecI
Variable F : set(setset)set
Let default : setEps_i (λ_ ⇒ True)
Let G : set(setsetset)setsetλalpha g ⇒ If_ii (ordinal alpha) (λz : setif zSNoS_ (ordsucc alpha) then F z (λw ⇒ g (SNoLev w) w) else default) (λz : setdefault)
Object. The name SNo_rec_i is a term of type setset.
Hypothesis Fr : ∀z, SNo z∀g h : setset, (∀w ∈ SNoS_ (SNoLev z), g w = h w)F z g = F z h
Axiom. (SNo_rec_i_eq) We take the following as an axiom:
∀z, SNo zSNo_rec_i z = F z SNo_rec_i
End of Section SurrealRecI
Beginning of Section SurrealRecII
Variable F : set(set(setset))(setset)
Let default : (setset)Descr_ii (λ_ ⇒ True)
Let G : set(setset(setset))set(setset)λalpha g ⇒ If_iii (ordinal alpha) (λz : setIf_ii (zSNoS_ (ordsucc alpha)) (F z (λw ⇒ g (SNoLev w) w)) default) (λz : setdefault)
Object. The name SNo_rec_ii is a term of type set(setset).
Hypothesis Fr : ∀z, SNo z∀g h : set(setset), (∀w ∈ SNoS_ (SNoLev z), g w = h w)F z g = F z h
Axiom. (SNo_rec_ii_eq) We take the following as an axiom:
∀z, SNo zSNo_rec_ii z = F z SNo_rec_ii
End of Section SurrealRecII
Beginning of Section SurrealRec2
Variable F : setset(setsetset)set
Let G : set(setsetset)set(setset)setλw f z g ⇒ F w z (λx y ⇒ if x = w then g y else f x y)
Let H : set(setsetset)setsetλw f z ⇒ if SNo z then SNo_rec_i (G w f) z else Empty
Object. The name SNo_rec2 is a term of type setsetset.
Hypothesis Fr : ∀w, SNo w∀z, SNo z∀g h : setsetset, (∀x ∈ SNoS_ (SNoLev w), ∀y, SNo yg x y = h x y)(∀y ∈ SNoS_ (SNoLev z), g w y = h w y)F w z g = F w z h
Axiom. (SNo_rec2_G_prop) We take the following as an axiom:
∀w, SNo w∀f k : setsetset, (∀x ∈ SNoS_ (SNoLev w), f x = k x)∀z, SNo z∀g h : setset, (∀u ∈ SNoS_ (SNoLev z), g u = h u)G w f z g = G w k z h
Axiom. (SNo_rec2_eq_1) We take the following as an axiom:
∀w, SNo w∀f : setsetset, ∀z, SNo zSNo_rec_i (G w f) z = G w f z (SNo_rec_i (G w f))
Axiom. (SNo_rec2_eq) We take the following as an axiom:
∀w, SNo w∀z, SNo zSNo_rec2 w z = F w z SNo_rec2
End of Section SurrealRec2
Axiom. (SNo_ordinal_ind) We take the following as an axiom:
∀P : setprop, (∀alpha, ordinal alpha∀x ∈ SNoS_ alpha, P x)(∀x, SNo xP x)
Axiom. (SNo_ordinal_ind2) We take the following as an axiom:
∀P : setsetprop, (∀alpha, ordinal alpha∀beta, ordinal beta∀x ∈ SNoS_ alpha, ∀y ∈ SNoS_ beta, P x y)(∀x y, SNo xSNo yP x y)
Axiom. (SNo_ordinal_ind3) We take the following as an axiom:
∀P : setsetsetprop, (∀alpha, ordinal alpha∀beta, ordinal beta∀gamma, ordinal gamma∀x ∈ SNoS_ alpha, ∀y ∈ SNoS_ beta, ∀z ∈ SNoS_ gamma, P x y z)(∀x y z, SNo xSNo ySNo zP x y z)
Axiom. (SNoLev_ind) We take the following as an axiom:
∀P : setprop, (∀x, SNo x(∀w ∈ SNoS_ (SNoLev x), P w)P x)(∀x, SNo xP x)
Axiom. (SNoLev_ind2) We take the following as an axiom:
∀P : setsetprop, (∀x y, SNo xSNo y(∀w ∈ SNoS_ (SNoLev x), P w y)(∀z ∈ SNoS_ (SNoLev y), P x z)(∀w ∈ SNoS_ (SNoLev x), ∀z ∈ SNoS_ (SNoLev y), P w z)P x y)∀x y, SNo xSNo yP x y
Axiom. (SNoLev_ind3) We take the following as an axiom:
∀P : setsetsetprop, (∀x y z, SNo xSNo ySNo z(∀u ∈ SNoS_ (SNoLev x), P u y z)(∀v ∈ SNoS_ (SNoLev y), P x v z)(∀w ∈ SNoS_ (SNoLev z), P x y w)(∀u ∈ SNoS_ (SNoLev x), ∀v ∈ SNoS_ (SNoLev y), P u v z)(∀u ∈ SNoS_ (SNoLev x), ∀w ∈ SNoS_ (SNoLev z), P u y w)(∀v ∈ SNoS_ (SNoLev y), ∀w ∈ SNoS_ (SNoLev z), P x v w)(∀u ∈ SNoS_ (SNoLev x), ∀v ∈ SNoS_ (SNoLev y), ∀w ∈ SNoS_ (SNoLev z), P u v w)P x y z)∀x y z, SNo xSNo ySNo zP x y z
Axiom. (SNo_omega) We take the following as an axiom:
SNo ω
Axiom. (SNoLt_0_1) We take the following as an axiom:
0 < 1
Axiom. (SNoLt_0_2) We take the following as an axiom:
0 < 2
Axiom. (SNoLt_1_2) We take the following as an axiom:
1 < 2
Axiom. (restr_SNo_) We take the following as an axiom:
∀x, SNo x∀alpha ∈ SNoLev x, SNo_ alpha (xSNoElts_ alpha)
Axiom. (restr_SNo) We take the following as an axiom:
∀x, SNo x∀alpha ∈ SNoLev x, SNo (xSNoElts_ alpha)
Axiom. (restr_SNoLev) We take the following as an axiom:
∀x, SNo x∀alpha ∈ SNoLev x, SNoLev (xSNoElts_ alpha) = alpha
Axiom. (restr_SNoEq) We take the following as an axiom:
∀x, SNo x∀alpha ∈ SNoLev x, SNoEq_ alpha (xSNoElts_ alpha) x
Axiom. (SNo_extend0_restr_eq) We take the following as an axiom:
∀x, SNo xx = SNo_extend0 xSNoElts_ (SNoLev x)
Axiom. (SNo_extend1_restr_eq) We take the following as an axiom:
∀x, SNo xx = SNo_extend1 xSNoElts_ (SNoLev x)
Beginning of Section SurrealMinus
Object. The name minus_SNo is a term of type setset.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Axiom. (minus_SNo_eq) We take the following as an axiom:
∀x, SNo x- x = SNoCut {- z|z ∈ SNoR x} {- w|w ∈ SNoL x}
Axiom. (minus_SNo_prop1) We take the following as an axiom:
∀x, SNo xSNo (- x)(∀u ∈ SNoL x, - x < - u)(∀u ∈ SNoR x, - u < - x)SNoCutP {- z|z ∈ SNoR x} {- w|w ∈ SNoL x}
Axiom. (SNo_minus_SNo) We take the following as an axiom:
∀x, SNo xSNo (- x)
Axiom. (minus_SNo_Lt_contra) We take the following as an axiom:
∀x y, SNo xSNo yx < y- y < - x
Axiom. (minus_SNo_Le_contra) We take the following as an axiom:
∀x y, SNo xSNo yxy- y- x
Axiom. (minus_SNo_SNoCutP) We take the following as an axiom:
∀x, SNo xSNoCutP {- z|z ∈ SNoR x} {- w|w ∈ SNoL x}
Axiom. (minus_SNo_SNoCutP_gen) We take the following as an axiom:
∀L R, SNoCutP L RSNoCutP {- z|z ∈ R} {- w|w ∈ L}
Axiom. (minus_SNo_Lev_lem1) We take the following as an axiom:
∀alpha, ordinal alpha∀x ∈ SNoS_ alpha, SNoLev (- x)SNoLev x
Axiom. (minus_SNo_Lev_lem2) We take the following as an axiom:
∀x, SNo xSNoLev (- x)SNoLev x
Axiom. (minus_SNo_invol) We take the following as an axiom:
∀x, SNo x- - x = x
Axiom. (minus_SNo_Lev) We take the following as an axiom:
∀x, SNo xSNoLev (- x) = SNoLev x
Axiom. (minus_SNo_SNo_) We take the following as an axiom:
∀alpha, ordinal alpha∀x, SNo_ alpha xSNo_ alpha (- x)
Axiom. (minus_SNo_SNoS_) We take the following as an axiom:
∀alpha, ordinal alpha∀x, xSNoS_ alpha- xSNoS_ alpha
Axiom. (minus_SNoCut_eq_lem) We take the following as an axiom:
∀v, SNo v∀L R, SNoCutP L Rv = SNoCut L R- v = SNoCut {- z|z ∈ R} {- w|w ∈ L}
Axiom. (minus_SNoCut_eq) We take the following as an axiom:
∀L R, SNoCutP L R- SNoCut L R = SNoCut {- z|z ∈ R} {- w|w ∈ L}
Axiom. (minus_SNo_Lt_contra1) We take the following as an axiom:
∀x y, SNo xSNo y- x < y- y < x
Axiom. (minus_SNo_Lt_contra2) We take the following as an axiom:
∀x y, SNo xSNo yx < - yy < - x
Axiom. (mordinal_SNoLev_min_2) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo zSNoLev zordsucc alpha- alphaz
Axiom. (minus_SNo_SNoS_omega) We take the following as an axiom:
∀x ∈ SNoS_ ω, - xSNoS_ ω
Axiom. (SNoL_minus_SNoR) We take the following as an axiom:
∀x, SNo xSNoL (- x) = {- w|w ∈ SNoR x}
End of Section SurrealMinus

Part 5

Beginning of Section SurrealAdd
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Definition. We define add_SNo to be SNo_rec2 (λx y a ⇒ SNoCut ({a w y|w ∈ SNoL x}{a x w|w ∈ SNoL y}) ({a z y|z ∈ SNoR x}{a x z|z ∈ SNoR y})) of type setsetset.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Theorem. (add_SNo_eq) The following is provable:
∀x, SNo x∀y, SNo yx + y = SNoCut ({w + y|w ∈ SNoL x}{x + w|w ∈ SNoL y}) ({z + y|z ∈ SNoR x}{x + z|z ∈ SNoR y})
Proof:
Set F to be the term λx y a ⇒ SNoCut ({a w y|w ∈ SNoL x}{a x w|w ∈ SNoL y}) ({a z y|z ∈ SNoR x}{a x z|z ∈ SNoR y}) of type setset(setsetset)set.
We prove the intermediate claim L1: ∀x, SNo x∀y, SNo y∀g h : setsetset, (∀w ∈ SNoS_ (SNoLev x), ∀z, SNo zg w z = h w z)(∀z ∈ SNoS_ (SNoLev y), g x z = h x z)F x y g = F x y h.
Let x be given.
Assume Hx: SNo x.
Let y be given.
Assume Hy: SNo y.
Let g and h be given.
Assume Hgh1: ∀w ∈ SNoS_ (SNoLev x), ∀z, SNo zg w z = h w z.
Assume Hgh2: ∀z ∈ SNoS_ (SNoLev y), g x z = h x z.
We will prove F x y g = F x y h.
We prove the intermediate claim L1a: {g w y|w ∈ SNoL x} = {h w y|w ∈ SNoL x}.
Apply ReplEq_ext to the current goal.
Let w be given.
Assume Hw: wSNoL x.
We will prove g w y = h w y.
Apply Hgh1 to the current goal.
We will prove wSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoL_SNoS x Hx w Hw.
We will prove SNo y.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L1b: {g x w|w ∈ SNoL y} = {h x w|w ∈ SNoL y}.
Apply ReplEq_ext to the current goal.
Let w be given.
Assume Hw: wSNoL y.
We will prove g x w = h x w.
Apply Hgh2 to the current goal.
We will prove wSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoL_SNoS y Hy w Hw.
We prove the intermediate claim L1c: {g z y|z ∈ SNoR x} = {h z y|z ∈ SNoR x}.
Apply ReplEq_ext to the current goal.
Let z be given.
Assume Hz: zSNoR x.
We will prove g z y = h z y.
Apply Hgh1 to the current goal.
We will prove zSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoR_SNoS x Hx z Hz.
We will prove SNo y.
An exact proof term for the current goal is Hy.
We prove the intermediate claim L1d: {g x z|z ∈ SNoR y} = {h x z|z ∈ SNoR y}.
Apply ReplEq_ext to the current goal.
Let z be given.
Assume Hz: zSNoR y.
We will prove g x z = h x z.
Apply Hgh2 to the current goal.
We will prove zSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoR_SNoS y Hy z Hz.
We will prove SNoCut ({g w y|w ∈ SNoL x}{g x w|w ∈ SNoL y}) ({g z y|z ∈ SNoR x}{g x z|z ∈ SNoR y}) = SNoCut ({h w y|w ∈ SNoL x}{h x w|w ∈ SNoL y}) ({h z y|z ∈ SNoR x}{h x z|z ∈ SNoR y}).
rewrite the current goal using L1a (from left to right).
rewrite the current goal using L1b (from left to right).
rewrite the current goal using L1c (from left to right).
rewrite the current goal using L1d (from left to right).
Use reflexivity.
An exact proof term for the current goal is SNo_rec2_eq F L1.
Theorem. (add_SNo_prop1) The following is provable:
∀x y, SNo xSNo ySNo (x + y)(∀u ∈ SNoL x, u + y < x + y)(∀u ∈ SNoR x, x + y < u + y)(∀u ∈ SNoL y, x + u < x + y)(∀u ∈ SNoR y, x + y < x + u)SNoCutP ({w + y|w ∈ SNoL x}{x + w|w ∈ SNoL y}) ({z + y|z ∈ SNoR x}{x + z|z ∈ SNoR y})
Proof:
Set P to be the term λx y ⇒ SNo (x + y)(∀u ∈ SNoL x, u + y < x + y)(∀u ∈ SNoR x, x + y < u + y)(∀u ∈ SNoL y, x + u < x + y)(∀u ∈ SNoR y, x + y < x + u)SNoCutP ({w + y|w ∈ SNoL x}{x + w|w ∈ SNoL y}) ({z + y|z ∈ SNoR x}{x + z|z ∈ SNoR y}) of type setsetprop.
We prove the intermediate claim LPE: ∀x y, P x y∀p : prop, (SNo (x + y)(∀u ∈ SNoL x, u + y < x + y)(∀u ∈ SNoR x, x + y < u + y)(∀u ∈ SNoL y, x + u < x + y)(∀u ∈ SNoR y, x + y < x + u)p)p.
Let x and y be given.
Assume Hxy.
Let p be given.
Assume Hp.
Apply Hxy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1 H2 H3 H4 H5 _.
An exact proof term for the current goal is Hp H1 H2 H3 H4 H5.
We will prove ∀x y, SNo xSNo yP x y.
Apply SNoLev_ind2 to the current goal.
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume IHx: ∀w ∈ SNoS_ (SNoLev x), P w y.
Assume IHy: ∀z ∈ SNoS_ (SNoLev y), P x z.
Assume IHxy: ∀w ∈ SNoS_ (SNoLev x), ∀z ∈ SNoS_ (SNoLev y), P w z.
We prove the intermediate claim LLx: ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx.
We prove the intermediate claim LLxa: TransSet (SNoLev x).
An exact proof term for the current goal is ordinal_TransSet (SNoLev x) LLx.
We prove the intermediate claim LLy: ordinal (SNoLev y).
An exact proof term for the current goal is SNoLev_ordinal y Hy.
We prove the intermediate claim LLya: TransSet (SNoLev y).
An exact proof term for the current goal is ordinal_TransSet (SNoLev y) LLy.
Set L1 to be the term {w + y|w ∈ SNoL x}.
Set L2 to be the term {x + w|w ∈ SNoL y}.
Set L to be the term L1L2.
Set R1 to be the term {z + y|z ∈ SNoR x}.
Set R2 to be the term {x + z|z ∈ SNoR y}.
Set R to be the term R1R2.
We prove the intermediate claim IHLx: ∀w ∈ SNoL x, P w y.
Let w be given.
Assume Hw: wSNoL x.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev x.
Assume Hw3: w < x.
We prove the intermediate claim Lw: wSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
An exact proof term for the current goal is IHx w Lw.
We prove the intermediate claim IHRx: ∀w ∈ SNoR x, P w y.
Let w be given.
Assume Hw: wSNoR x.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev x.
Assume Hw3: x < w.
We prove the intermediate claim Lw: wSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
An exact proof term for the current goal is IHx w Lw.
We prove the intermediate claim IHLy: ∀w ∈ SNoL y, P x w.
Let w be given.
Assume Hw: wSNoL y.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev y.
Assume Hw3: w < y.
We prove the intermediate claim Lw: wSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 w y Hw1 Hy Hw2.
An exact proof term for the current goal is IHy w Lw.
We prove the intermediate claim IHRy: ∀w ∈ SNoR y, P x w.
Let w be given.
Assume Hw: wSNoR y.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev y.
Assume Hw3: y < w.
We prove the intermediate claim Lw: wSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 w y Hw1 Hy Hw2.
An exact proof term for the current goal is IHy w Lw.
We prove the intermediate claim LLR: SNoCutP L R.
We will prove (∀w ∈ L, SNo w)(∀z ∈ R, SNo z)(∀w ∈ L, ∀z ∈ R, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw: wL1L2.
We will prove SNo w.
Apply binunionE L1 L2 w Hw to the current goal.
Assume Hw: w{w + y|w ∈ SNoL x}.
Apply ReplE_impred (SNoL x) (λz ⇒ z + y) w Hw to the current goal.
Let z be given.
Assume Hz: zSNoL x.
Assume Hwz: w = z + y.
Apply LPE z y (IHLx z Hz) to the current goal.
Assume H2: SNo (z + y).
Assume _ _ _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Assume Hw: w{x + w|w ∈ SNoL y}.
Apply ReplE_impred (SNoL y) (λz ⇒ x + z) w Hw to the current goal.
Let z be given.
Assume Hz: zSNoL y.
Assume Hwz: w = x + z.
Apply LPE x z (IHLy z Hz) to the current goal.
Assume H2: SNo (x + z).
Assume _ _ _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Let w be given.
Assume Hw: wR1R2.
We will prove SNo w.
Apply binunionE R1 R2 w Hw to the current goal.
Assume Hw: w{z + y|z ∈ SNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + y) w Hw to the current goal.
Let z be given.
Assume Hz: zSNoR x.
Assume Hwz: w = z + y.
Apply LPE z y (IHRx z Hz) to the current goal.
Assume H2: SNo (z + y).
Assume _ _ _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Assume Hw: w{x + z|z ∈ SNoR y}.
Apply ReplE_impred (SNoR y) (λz ⇒ x + z) w Hw to the current goal.
Let z be given.
Assume Hz: zSNoR y.
Assume Hwz: w = x + z.
Apply LPE x z (IHRy z Hz) to the current goal.
Assume H2: SNo (x + z).
Assume _ _ _ _.
We will prove SNo w.
rewrite the current goal using Hwz (from left to right).
An exact proof term for the current goal is H2.
Let w be given.
Assume Hw: wL.
Let z be given.
Assume Hz: zR.
We will prove w < z.
Apply binunionE L1 L2 w Hw to the current goal.
Assume Hw: w{w + y|w ∈ SNoL x}.
Apply ReplE_impred (SNoL x) (λz ⇒ z + y) w Hw to the current goal.
Let u be given.
Assume Hu: uSNoL x.
Assume Hwu: w = u + y.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev x.
Assume Hu3: u < x.
We prove the intermediate claim Lux: uSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 u x Hu1 Hx Hu2.
Apply LPE u y (IHLx u Hu) to the current goal.
Assume IHu1: SNo (u + y).
Assume IHu2: ∀z ∈ SNoL u, z + y < u + y.
Assume IHu3: ∀z ∈ SNoR u, u + y < z + y.
Assume IHu4: ∀z ∈ SNoL y, u + z < u + y.
Assume IHu5: ∀z ∈ SNoR y, u + y < u + z.
We will prove w < z.
rewrite the current goal using Hwu (from left to right).
We will prove u + y < z.
Apply binunionE R1 R2 z Hz to the current goal.
Assume Hz: z{z + y|z ∈ SNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + y) z Hz to the current goal.
Let v be given.
Assume Hv: vSNoR x.
Assume Hzv: z = v + y.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: x < v.
Apply LPE v y (IHRx v Hv) to the current goal.
Assume IHv1: SNo (v + y).
Assume IHv2: ∀u ∈ SNoL v, u + y < v + y.
Assume IHv3: ∀u ∈ SNoR v, v + y < u + y.
Assume IHv4: ∀u ∈ SNoL y, v + u < v + y.
Assume IHv5: ∀u ∈ SNoR y, v + y < v + u.
rewrite the current goal using Hzv (from left to right).
We will prove u + y < v + y.
We prove the intermediate claim Luv: u < v.
An exact proof term for the current goal is SNoLt_tra u x v Hu1 Hx Hv1 Hu3 Hv3.
Apply SNoLtE u v Hu1 Hv1 Luv to the current goal.
Let q be given.
Assume Hq1: SNo q.
Assume Hq2: SNoLev qSNoLev uSNoLev v.
Assume _ _.
Assume Hq5: u < q.
Assume Hq6: q < v.
Assume _ _.
Apply binintersectE (SNoLev u) (SNoLev v) (SNoLev q) Hq2 to the current goal.
Assume Hq2u Hq2v.
We prove the intermediate claim Lqx: SNoLev qSNoLev x.
An exact proof term for the current goal is LLxa (SNoLev u) Hu2 (SNoLev q) Hq2u.
We prove the intermediate claim Lqx2: qSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 q x Hq1 Hx Lqx.
We prove the intermediate claim Lqy: SNo (q + y).
Apply LPE q y (IHx q Lqx2) to the current goal.
Assume IHq1 _ _ _ _.
An exact proof term for the current goal is IHq1.
Apply SNoLt_tra (u + y) (q + y) (v + y) IHu1 Lqy IHv1 to the current goal.
We will prove u + y < q + y.
Apply IHu3 to the current goal.
We will prove qSNoR u.
An exact proof term for the current goal is SNoR_I u Hu1 q Hq1 Hq2u Hq5.
We will prove q + y < v + y.
Apply IHv2 to the current goal.
We will prove qSNoL v.
An exact proof term for the current goal is SNoL_I v Hv1 q Hq1 Hq2v Hq6.
Assume Huv: SNoLev uSNoLev v.
Assume _ _.
We will prove u + y < v + y.
Apply IHv2 to the current goal.
We will prove uSNoL v.
An exact proof term for the current goal is SNoL_I v Hv1 u Hu1 Huv Luv.
Assume Hvu: SNoLev vSNoLev u.
Assume _ _.
We will prove u + y < v + y.
Apply IHu3 to the current goal.
We will prove vSNoR u.
An exact proof term for the current goal is SNoR_I u Hu1 v Hv1 Hvu Luv.
Assume Hz: z{x + z|z ∈ SNoR y}.
Apply ReplE_impred (SNoR y) (λz ⇒ x + z) z Hz to the current goal.
Let v be given.
Assume Hv: vSNoR y.
Assume Hzv: z = x + v.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: y < v.
We prove the intermediate claim Lvy: vSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 v y Hv1 Hy Hv2.
Apply LPE x v (IHRy v Hv) to the current goal.
Assume IHv1: SNo (x + v).
Assume IHv2: ∀u ∈ SNoL x, u + v < x + v.
Assume IHv3: ∀u ∈ SNoR x, x + v < u + v.
Assume IHv4: ∀u ∈ SNoL v, x + u < x + v.
Assume IHv5: ∀u ∈ SNoR v, x + v < x + u.
rewrite the current goal using Hzv (from left to right).
We will prove u + y < x + v.
Apply LPE u v (IHxy u Lux v Lvy) to the current goal.
Assume IHuv1: SNo (u + v).
Assume _ _ _ _.
We will prove u + y < x + v.
Apply SNoLt_tra (u + y) (u + v) (x + v) IHu1 IHuv1 IHv1 to the current goal.
We will prove u + y < u + v.
Apply IHu5 to the current goal.
We will prove vSNoR y.
An exact proof term for the current goal is SNoR_I y Hy v Hv1 Hv2 Hv3.
We will prove u + v < x + v.
Apply IHv2 to the current goal.
We will prove uSNoL x.
An exact proof term for the current goal is SNoL_I x Hx u Hu1 Hu2 Hu3.
Assume Hw: w{x + w|w ∈ SNoL y}.
Apply ReplE_impred (SNoL y) (λz ⇒ x + z) w Hw to the current goal.
Let u be given.
Assume Hu: uSNoL y.
Assume Hwu: w = x + u.
Apply SNoL_E y Hy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev y.
Assume Hu3: u < y.
We prove the intermediate claim Luy: uSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 u y Hu1 Hy Hu2.
Apply LPE x u (IHLy u Hu) to the current goal.
Assume IHu1: SNo (x + u).
Assume IHu2: ∀z ∈ SNoL x, z + u < x + u.
Assume IHu3: ∀z ∈ SNoR x, x + u < z + u.
Assume IHu4: ∀z ∈ SNoL u, x + z < x + u.
Assume IHu5: ∀z ∈ SNoR u, x + u < x + z.
We will prove w < z.
rewrite the current goal using Hwu (from left to right).
We will prove x + u < z.
Apply binunionE R1 R2 z Hz to the current goal.
Assume Hz: z{z + y|z ∈ SNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + y) z Hz to the current goal.
Let v be given.
Assume Hv: vSNoR x.
Assume Hzv: z = v + y.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: x < v.
We prove the intermediate claim Lvx: vSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 v x Hv1 Hx Hv2.
Apply LPE v y (IHRx v Hv) to the current goal.
Assume IHv1: SNo (v + y).
Assume IHv2: ∀u ∈ SNoL v, u + y < v + y.
Assume IHv3: ∀u ∈ SNoR v, v + y < u + y.
Assume IHv4: ∀u ∈ SNoL y, v + u < v + y.
Assume IHv5: ∀u ∈ SNoR y, v + y < v + u.
rewrite the current goal using Hzv (from left to right).
We will prove x + u < v + y.
Apply LPE v u (IHxy v Lvx u Luy) to the current goal.
Assume IHvu1: SNo (v + u).
Assume _ _ _ _.
We will prove x + u < v + y.
Apply SNoLt_tra (x + u) (v + u) (v + y) IHu1 IHvu1 IHv1 to the current goal.
We will prove x + u < v + u.
Apply IHu3 to the current goal.
We will prove vSNoR x.
An exact proof term for the current goal is SNoR_I x Hx v Hv1 Hv2 Hv3.
We will prove v + u < v + y.
Apply IHv4 to the current goal.
We will prove uSNoL y.
An exact proof term for the current goal is SNoL_I y Hy u Hu1 Hu2 Hu3.
Assume Hz: z{x + z|z ∈ SNoR y}.
Apply ReplE_impred (SNoR y) (λz ⇒ x + z) z Hz to the current goal.
Let v be given.
Assume Hv: vSNoR y.
Assume Hzv: z = x + v.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: y < v.
Apply LPE x v (IHRy v Hv) to the current goal.
Assume IHv1: SNo (x + v).
Assume IHv2: ∀u ∈ SNoL x, u + v < x + v.
Assume IHv3: ∀u ∈ SNoR x, x + v < u + v.
Assume IHv4: ∀u ∈ SNoL v, x + u < x + v.
Assume IHv5: ∀u ∈ SNoR v, x + v < x + u.
rewrite the current goal using Hzv (from left to right).
We will prove x + u < x + v.
We prove the intermediate claim Luv: u < v.
An exact proof term for the current goal is SNoLt_tra u y v Hu1 Hy Hv1 Hu3 Hv3.
Apply SNoLtE u v Hu1 Hv1 Luv to the current goal.
Let q be given.
Assume Hq1: SNo q.
Assume Hq2: SNoLev qSNoLev uSNoLev v.
Assume _ _.
Assume Hq5: u < q.
Assume Hq6: q < v.
Assume _ _.
Apply binintersectE (SNoLev u) (SNoLev v) (SNoLev q) Hq2 to the current goal.
Assume Hq2u Hq2v.
We prove the intermediate claim Lqy: SNoLev qSNoLev y.
An exact proof term for the current goal is LLya (SNoLev v) Hv2 (SNoLev q) Hq2v.
We prove the intermediate claim Lqy2: qSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 q y Hq1 Hy Lqy.
We prove the intermediate claim Lxq: SNo (x + q).
Apply LPE x q (IHy q Lqy2) to the current goal.
Assume IHq1 _ _ _ _.
An exact proof term for the current goal is IHq1.
We will prove x + u < x + v.
Apply SNoLt_tra (x + u) (x + q) (x + v) IHu1 Lxq IHv1 to the current goal.
We will prove x + u < x + q.
Apply IHu5 to the current goal.
We will prove qSNoR u.
An exact proof term for the current goal is SNoR_I u Hu1 q Hq1 Hq2u Hq5.
We will prove x + q < x + v.
Apply IHv4 to the current goal.
We will prove qSNoL v.
An exact proof term for the current goal is SNoL_I v Hv1 q Hq1 Hq2v Hq6.
Assume Huv: SNoLev uSNoLev v.
Assume _ _.
We will prove x + u < x + v.
Apply IHv4 to the current goal.
We will prove uSNoL v.
An exact proof term for the current goal is SNoL_I v Hv1 u Hu1 Huv Luv.
Assume Hvu: SNoLev vSNoLev u.
Assume _ _.
We will prove x + u < x + v.
Apply IHu5 to the current goal.
We will prove vSNoR u.
An exact proof term for the current goal is SNoR_I u Hu1 v Hv1 Hvu Luv.
We will prove P x y.
We will prove SNo (x + y)(∀u ∈ SNoL x, u + y < x + y)(∀u ∈ SNoR x, x + y < u + y)(∀u ∈ SNoL y, x + u < x + y)(∀u ∈ SNoR y, x + y < x + u)SNoCutP L R.
We prove the intermediate claim LNLR: SNo (SNoCut L R).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L R LLR.
Apply andI to the current goal.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
Apply and5I to the current goal.
We will prove SNo (SNoCut L R).
An exact proof term for the current goal is LNLR.
We will prove ∀u ∈ SNoL x, u + y < SNoCut L R.
Let u be given.
Assume Hu: uSNoL x.
We will prove u + y < SNoCut L R.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev x.
Assume Hu3: u < x.
We prove the intermediate claim LuyL: u + yL.
We will prove u + yL1L2.
Apply binunionI1 to the current goal.
We will prove u + y{w + y|w ∈ SNoL x}.
Apply ReplI (SNoL x) (λw ⇒ w + y) u to the current goal.
We will prove uSNoL x.
An exact proof term for the current goal is Hu.
We will prove u + y < SNoCut L R.
An exact proof term for the current goal is SNoCutP_SNoCut_L L R LLR (u + y) LuyL.
We will prove ∀u ∈ SNoR x, SNoCut L R < u + y.
Let u be given.
Assume Hu: uSNoR x.
We will prove SNoCut L R < u + y.
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev x.
Assume Hu3: x < u.
We prove the intermediate claim LuyR: u + yR.
We will prove u + yR1R2.
Apply binunionI1 to the current goal.
We will prove u + y{z + y|z ∈ SNoR x}.
Apply ReplI (SNoR x) (λw ⇒ w + y) u to the current goal.
We will prove uSNoR x.
An exact proof term for the current goal is Hu.
We will prove SNoCut L R < u + y.
An exact proof term for the current goal is SNoCutP_SNoCut_R L R LLR (u + y) LuyR.
We will prove ∀u ∈ SNoL y, x + u < SNoCut L R.
Let u be given.
Assume Hu: uSNoL y.
We will prove x + u < SNoCut L R.
Apply SNoL_E y Hy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev y.
Assume Hu3: u < y.
We prove the intermediate claim LxuL: x + uL.
We will prove x + uL1L2.
Apply binunionI2 to the current goal.
We will prove x + u{x + w|w ∈ SNoL y}.
Apply ReplI (SNoL y) (λw ⇒ x + w) u to the current goal.
We will prove uSNoL y.
An exact proof term for the current goal is Hu.
We will prove x + u < SNoCut L R.
An exact proof term for the current goal is SNoCutP_SNoCut_L L R LLR (x + u) LxuL.
We will prove ∀u ∈ SNoR y, SNoCut L R < x + u.
Let u be given.
Assume Hu: uSNoR y.
We will prove SNoCut L R < x + u.
Apply SNoR_E y Hy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev y.
Assume Hu3: y < u.
We prove the intermediate claim LxuR: x + uR.
We will prove x + uR1R2.
Apply binunionI2 to the current goal.
We will prove x + u{x + z|z ∈ SNoR y}.
Apply ReplI (SNoR y) (λz ⇒ x + z) u to the current goal.
We will prove uSNoR y.
An exact proof term for the current goal is Hu.
We will prove SNoCut L R < x + u.
An exact proof term for the current goal is SNoCutP_SNoCut_R L R LLR (x + u) LxuR.
An exact proof term for the current goal is LLR.
Theorem. (SNo_add_SNo) The following is provable:
∀x y, SNo xSNo ySNo (x + y)
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Apply add_SNo_prop1 x y Hx Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H _ _ _ _ _.
An exact proof term for the current goal is H.
Theorem. (SNo_add_SNo_3) The following is provable:
∀x y z, SNo xSNo ySNo zSNo (x + y + z)
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hz.
Theorem. (SNo_add_SNo_3c) The following is provable:
∀x y z, SNo xSNo ySNo zSNo (x + y + - z)
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hy.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hz.
Theorem. (SNo_add_SNo_4) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wSNo (x + y + z + w)
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
An exact proof term for the current goal is SNo_add_SNo_3 x y (z + w) Hx Hy (SNo_add_SNo z w Hz Hw).
Theorem. (add_SNo_Lt1) The following is provable:
∀x y z, SNo xSNo ySNo zx < zx + y < z + y
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hxz: x < z.
Apply add_SNo_prop1 x y Hx Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1: SNo (x + y).
Assume _.
Assume H2: ∀u ∈ SNoR x, x + y < u + y.
Assume _ _ _.
Apply add_SNo_prop1 z y Hz Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H3: SNo (z + y).
Assume H4: ∀u ∈ SNoL z, u + y < z + y.
Assume _ _ _ _.
Apply SNoLtE x z Hx Hz Hxz to the current goal.
Let w be given.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev xSNoLev z.
Assume _ _.
Assume Hw5: x < w.
Assume Hw6: w < z.
Assume _ _.
Apply binintersectE (SNoLev x) (SNoLev z) (SNoLev w) Hw2 to the current goal.
Assume Hw2x Hw2z.
We will prove x + y < z + y.
Apply SNoLt_tra (x + y) (w + y) (z + y) H1 (SNo_add_SNo w y Hw1 Hy) H3 to the current goal.
We will prove x + y < w + y.
Apply H2 to the current goal.
We will prove wSNoR x.
Apply SNoR_I x Hx w Hw1 to the current goal.
We will prove SNoLev wSNoLev x.
An exact proof term for the current goal is Hw2x.
We will prove x < w.
An exact proof term for the current goal is Hw5.
We will prove w + y < z + y.
Apply H4 to the current goal.
We will prove wSNoL z.
Apply SNoL_I z Hz w Hw1 to the current goal.
We will prove SNoLev wSNoLev z.
An exact proof term for the current goal is Hw2z.
We will prove w < z.
An exact proof term for the current goal is Hw6.
Assume Hxz1: SNoLev xSNoLev z.
Assume _ _.
We will prove x + y < z + y.
Apply H4 to the current goal.
We will prove xSNoL z.
Apply SNoL_I z Hz x Hx to the current goal.
We will prove SNoLev xSNoLev z.
An exact proof term for the current goal is Hxz1.
We will prove x < z.
An exact proof term for the current goal is Hxz.
Assume Hzx: SNoLev zSNoLev x.
Assume _ _.
We will prove x + y < z + y.
Apply H2 to the current goal.
We will prove zSNoR x.
Apply SNoR_I x Hx z Hz to the current goal.
We will prove SNoLev zSNoLev x.
An exact proof term for the current goal is Hzx.
We will prove x < z.
An exact proof term for the current goal is Hxz.
Theorem. (add_SNo_Le1) The following is provable:
∀x y z, SNo xSNo ySNo zxzx + yz + y
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hxz: xz.
We will prove x + yz + y.
Apply SNoLeE x z Hx Hz Hxz to the current goal.
Assume H1: x < z.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is add_SNo_Lt1 x y z Hx Hy Hz H1.
Assume H1: x = z.
rewrite the current goal using H1 (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (add_SNo_Lt2) The following is provable:
∀x y z, SNo xSNo ySNo zy < zx + y < x + z
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hyz: y < z.
Apply add_SNo_prop1 x y Hx Hy to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H1: SNo (x + y).
Assume _ _ _.
Assume H2: ∀u ∈ SNoR y, x + y < x + u.
Assume _.
Apply add_SNo_prop1 x z Hx Hz to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H3: SNo (x + z).
Assume _ _.
Assume H4: ∀u ∈ SNoL z, x + u < x + z.
Assume _ _.
Apply SNoLtE y z Hy Hz Hyz to the current goal.
Let w be given.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev ySNoLev z.
Assume _ _.
Assume Hw5: y < w.
Assume Hw6: w < z.
Assume _ _.
Apply binintersectE (SNoLev y) (SNoLev z) (SNoLev w) Hw2 to the current goal.
Assume Hw2y Hw2z.
We will prove x + y < x + z.
Apply SNoLt_tra (x + y) (x + w) (x + z) H1 (SNo_add_SNo x w Hx Hw1) H3 to the current goal.
We will prove x + y < x + w.
Apply H2 to the current goal.
We will prove wSNoR y.
Apply SNoR_I y Hy w Hw1 to the current goal.
We will prove SNoLev wSNoLev y.
An exact proof term for the current goal is Hw2y.
We will prove y < w.
An exact proof term for the current goal is Hw5.
We will prove x + w < x + z.
Apply H4 to the current goal.
We will prove wSNoL z.
Apply SNoL_I z Hz w Hw1 to the current goal.
We will prove SNoLev wSNoLev z.
An exact proof term for the current goal is Hw2z.
We will prove w < z.
An exact proof term for the current goal is Hw6.
Assume Hyz1: SNoLev ySNoLev z.
Assume _ _.
We will prove x + y < x + z.
Apply H4 to the current goal.
We will prove ySNoL z.
Apply SNoL_I z Hz y Hy to the current goal.
We will prove SNoLev ySNoLev z.
An exact proof term for the current goal is Hyz1.
We will prove y < z.
An exact proof term for the current goal is Hyz.
Assume Hzy: SNoLev zSNoLev y.
Assume _ _.
We will prove x + y < x + z.
Apply H2 to the current goal.
We will prove zSNoR y.
Apply SNoR_I y Hy z Hz to the current goal.
We will prove SNoLev zSNoLev y.
An exact proof term for the current goal is Hzy.
We will prove y < z.
An exact proof term for the current goal is Hyz.
Theorem. (add_SNo_Le2) The following is provable:
∀x y z, SNo xSNo ySNo zyzx + yx + z
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hyz: yz.
We will prove x + yx + z.
Apply SNoLeE y z Hy Hz Hyz to the current goal.
Assume H1: y < z.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is add_SNo_Lt2 x y z Hx Hy Hz H1.
Assume H1: y = z.
rewrite the current goal using H1 (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (add_SNo_Lt3a) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx < zywx + y < z + w
Proof:
Let x, y, z and w be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hw: SNo w.
Assume Hxz: x < z.
Assume Hyw: yw.
Apply SNoLtLe_tra (x + y) (z + y) (z + w) (SNo_add_SNo x y Hx Hy) (SNo_add_SNo z y Hz Hy) (SNo_add_SNo z w Hz Hw) to the current goal.
We will prove x + y < z + y.
An exact proof term for the current goal is add_SNo_Lt1 x y z Hx Hy Hz Hxz.
We will prove z + yz + w.
An exact proof term for the current goal is add_SNo_Le2 z y w Hz Hy Hw Hyw.
Theorem. (add_SNo_Lt3b) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wxzy < wx + y < z + w
Proof:
Let x, y, z and w be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hw: SNo w.
Assume Hxz: xz.
Assume Hyw: y < w.
Apply SNoLeLt_tra (x + y) (z + y) (z + w) (SNo_add_SNo x y Hx Hy) (SNo_add_SNo z y Hz Hy) (SNo_add_SNo z w Hz Hw) to the current goal.
We will prove x + yz + y.
An exact proof term for the current goal is add_SNo_Le1 x y z Hx Hy Hz Hxz.
We will prove z + y < z + w.
An exact proof term for the current goal is add_SNo_Lt2 z y w Hz Hy Hw Hyw.
Theorem. (add_SNo_Lt3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx < zy < wx + y < z + w
Proof:
Let x, y, z and w be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hw: SNo w.
Assume Hxz: x < z.
Assume Hyw: y < w.
Apply add_SNo_Lt3a x y z w Hx Hy Hz Hw Hxz to the current goal.
We will prove yw.
Apply SNoLtLe to the current goal.
We will prove y < w.
An exact proof term for the current goal is Hyw.
Theorem. (add_SNo_Le3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wxzywx + yz + w
Proof:
Let x, y, z and w be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hw: SNo w.
Assume Hxz: xz.
Assume Hyw: yw.
Apply SNoLe_tra (x + y) (z + y) (z + w) (SNo_add_SNo x y Hx Hy) (SNo_add_SNo z y Hz Hy) (SNo_add_SNo z w Hz Hw) to the current goal.
We will prove x + yz + y.
An exact proof term for the current goal is add_SNo_Le1 x y z Hx Hy Hz Hxz.
We will prove z + yz + w.
An exact proof term for the current goal is add_SNo_Le2 z y w Hz Hy Hw Hyw.
Theorem. (add_SNo_SNoCutP) The following is provable:
∀x y, SNo xSNo ySNoCutP ({w + y|w ∈ SNoL x}{x + w|w ∈ SNoL y}) ({z + y|z ∈ SNoR x}{x + z|z ∈ SNoR y})
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Apply add_SNo_prop1 x y Hx Hy to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Theorem. (add_SNo_com) The following is provable:
∀x y, SNo xSNo yx + y = y + x
Proof:
Apply SNoLev_ind2 to the current goal.
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume IHx: ∀w ∈ SNoS_ (SNoLev x), w + y = y + w.
Assume IHy: ∀z ∈ SNoS_ (SNoLev y), x + z = z + x.
Assume IHxy: ∀w ∈ SNoS_ (SNoLev x), ∀z ∈ SNoS_ (SNoLev y), w + z = z + w.
We prove the intermediate claim IHLx: ∀w ∈ SNoL x, w + y = y + w.
Let w be given.
Assume Hw: wSNoL x.
Apply SNoL_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev x.
Assume Hw3: w < x.
We prove the intermediate claim Lw: wSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
An exact proof term for the current goal is IHx w Lw.
We prove the intermediate claim IHRx: ∀w ∈ SNoR x, w + y = y + w.
Let w be given.
Assume Hw: wSNoR x.
Apply SNoR_E x Hx w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev x.
Assume Hw3: x < w.
We prove the intermediate claim Lw: wSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
An exact proof term for the current goal is IHx w Lw.
We prove the intermediate claim IHLy: ∀w ∈ SNoL y, x + w = w + x.
Let w be given.
Assume Hw: wSNoL y.
Apply SNoL_E y Hy w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev y.
Assume Hw3: w < y.
We prove the intermediate claim Lw: wSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 w y Hw1 Hy Hw2.
An exact proof term for the current goal is IHy w Lw.
We prove the intermediate claim IHRy: ∀w ∈ SNoR y, x + w = w + x.
Let w be given.
Assume Hw: wSNoR y.
Apply SNoR_E y Hy w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev wSNoLev y.
Assume Hw3: y < w.
We prove the intermediate claim Lw: wSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoS_I2 w y Hw1 Hy Hw2.
An exact proof term for the current goal is IHy w Lw.
We will prove x + y = y + x.
Set Lxy1 to be the term {w + y|w ∈ SNoL x}.
Set Lxy2 to be the term {x + w|w ∈ SNoL y}.
Set Rxy1 to be the term {z + y|z ∈ SNoR x}.
Set Rxy2 to be the term {x + z|z ∈ SNoR y}.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
We will prove (SNoCut (Lxy1Lxy2) (Rxy1Rxy2)) = y + x.
Set Lyx1 to be the term {w + x|w ∈ SNoL y}.
Set Lyx2 to be the term {y + w|w ∈ SNoL x}.
Set Ryx1 to be the term {z + x|z ∈ SNoR y}.
Set Ryx2 to be the term {y + z|z ∈ SNoR x}.
rewrite the current goal using add_SNo_eq y Hy x Hx (from left to right).
We will prove (SNoCut (Lxy1Lxy2) (Rxy1Rxy2)) = (SNoCut (Lyx1Lyx2) (Ryx1Ryx2)).
We prove the intermediate claim Lxy1yx2: Lxy1 = Lyx2.
We will prove {w + y|w ∈ SNoL x} = {y + w|w ∈ SNoL x}.
Apply ReplEq_ext (SNoL x) (λw ⇒ w + y) (λw ⇒ y + w) to the current goal.
Let w be given.
Assume Hw: wSNoL x.
We will prove w + y = y + w.
An exact proof term for the current goal is IHLx w Hw.
We prove the intermediate claim Lxy2yx1: Lxy2 = Lyx1.
We will prove {x + w|w ∈ SNoL y} = {w + x|w ∈ SNoL y}.
Apply ReplEq_ext (SNoL y) (λw ⇒ x + w) (λw ⇒ w + x) to the current goal.
Let w be given.
Assume Hw: wSNoL y.
We will prove x + w = w + x.
An exact proof term for the current goal is IHLy w Hw.
We prove the intermediate claim Rxy1yx2: Rxy1 = Ryx2.
We will prove {w + y|w ∈ SNoR x} = {y + w|w ∈ SNoR x}.
Apply ReplEq_ext (SNoR x) (λw ⇒ w + y) (λw ⇒ y + w) to the current goal.
Let w be given.
Assume Hw: wSNoR x.
We will prove w + y = y + w.
An exact proof term for the current goal is IHRx w Hw.
We prove the intermediate claim Rxy2yx1: Rxy2 = Ryx1.
We will prove {x + w|w ∈ SNoR y} = {w + x|w ∈ SNoR y}.
Apply ReplEq_ext (SNoR y) (λw ⇒ x + w) (λw ⇒ w + x) to the current goal.
Let w be given.
Assume Hw: wSNoR y.
We will prove x + w = w + x.
An exact proof term for the current goal is IHRy w Hw.
rewrite the current goal using Lxy1yx2 (from left to right).
rewrite the current goal using Lxy2yx1 (from left to right).
rewrite the current goal using Rxy1yx2 (from left to right).
rewrite the current goal using Rxy2yx1 (from left to right).
We will prove (SNoCut (Lyx2Lyx1) (Ryx2Ryx1)) = (SNoCut (Lyx1Lyx2) (Ryx1Ryx2)).
rewrite the current goal using binunion_com Lyx2 Lyx1 (from left to right).
rewrite the current goal using binunion_com Ryx2 Ryx1 (from left to right).
Use reflexivity.
Theorem. (add_SNo_0L) The following is provable:
∀x, SNo x0 + x = x
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume IH: ∀w ∈ SNoS_ (SNoLev x), 0 + w = w.
We will prove 0 + x = x.
rewrite the current goal using add_SNo_eq 0 SNo_0 x Hx (from left to right).
We will prove SNoCut ({w + x|w ∈ SNoL 0}{0 + w|w ∈ SNoL x}) ({w + x|w ∈ SNoR 0}{0 + w|w ∈ SNoR x}) = x.
We prove the intermediate claim L1: {w + x|w ∈ SNoL 0}{0 + w|w ∈ SNoL x} = SNoL x.
rewrite the current goal using SNoL_0 (from left to right).
We will prove {w + x|w ∈ Empty}{0 + w|w ∈ SNoL x} = SNoL x.
rewrite the current goal using Repl_Empty (λw ⇒ w + x) (from left to right).
We will prove Empty{0 + w|w ∈ SNoL x} = SNoL x.
rewrite the current goal using binunion_idl (from left to right).
We will prove {0 + w|w ∈ SNoL x} = SNoL x.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u{0 + w|w ∈ SNoL x}.
Apply ReplE_impred (SNoL x) (λw ⇒ 0 + w) u Hu to the current goal.
Let w be given.
Assume Hw: wSNoL x.
Assume H1: u = 0 + w.
We will prove uSNoL x.
rewrite the current goal using H1 (from left to right).
We will prove 0 + wSNoL x.
rewrite the current goal using IH w (SNoL_SNoS_ x w Hw) (from left to right).
We will prove wSNoL x.
An exact proof term for the current goal is Hw.
Let u be given.
Assume Hu: uSNoL x.
We will prove u{0 + w|w ∈ SNoL x}.
rewrite the current goal using IH u (SNoL_SNoS_ x u Hu) (from right to left).
We will prove 0 + u{0 + w|w ∈ SNoL x}.
An exact proof term for the current goal is ReplI (SNoL x) (λw ⇒ 0 + w) u Hu.
We prove the intermediate claim L2: {w + x|w ∈ SNoR 0}{0 + w|w ∈ SNoR x} = SNoR x.
rewrite the current goal using SNoR_0 (from left to right).
We will prove {w + x|w ∈ Empty}{0 + w|w ∈ SNoR x} = SNoR x.
rewrite the current goal using Repl_Empty (λw ⇒ w + x) (from left to right).
We will prove Empty{0 + w|w ∈ SNoR x} = SNoR x.
rewrite the current goal using binunion_idl (from left to right).
We will prove {0 + w|w ∈ SNoR x} = SNoR x.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u{0 + w|w ∈ SNoR x}.
Apply ReplE_impred (SNoR x) (λw ⇒ 0 + w) u Hu to the current goal.
Let w be given.
Assume Hw: wSNoR x.
Assume H1: u = 0 + w.
We will prove uSNoR x.
rewrite the current goal using H1 (from left to right).
We will prove 0 + wSNoR x.
rewrite the current goal using IH w (SNoR_SNoS_ x w Hw) (from left to right).
We will prove wSNoR x.
An exact proof term for the current goal is Hw.
Let u be given.
Assume Hu: uSNoR x.
We will prove u{0 + w|w ∈ SNoR x}.
rewrite the current goal using IH u (SNoR_SNoS_ x u Hu) (from right to left).
We will prove 0 + u{0 + w|w ∈ SNoR x}.
An exact proof term for the current goal is ReplI (SNoR x) (λw ⇒ 0 + w) u Hu.
rewrite the current goal using L1 (from left to right).
rewrite the current goal using L2 (from left to right).
We will prove SNoCut (SNoL x) (SNoR x) = x.
Use symmetry.
An exact proof term for the current goal is SNo_eta x Hx.
Theorem. (add_SNo_0R) The following is provable:
∀x, SNo xx + 0 = x
Proof:
Let x be given.
Assume Hx: SNo x.
rewrite the current goal using add_SNo_com x 0 Hx SNo_0 (from left to right).
An exact proof term for the current goal is add_SNo_0L x Hx.
Theorem. (add_SNo_minus_SNo_linv) The following is provable:
∀x, SNo x- x + x = 0
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume IH: ∀w ∈ SNoS_ (SNoLev x), - w + w = 0.
We will prove - x + x = 0.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
Set L1 to be the term {w + x|w ∈ SNoL (- x)}.
Set L2 to be the term {- x + w|w ∈ SNoL x}.
Set R1 to be the term {z + x|z ∈ SNoR (- x)}.
Set R2 to be the term {- x + z|z ∈ SNoR x}.
Set L to be the term L1L2.
Set R to be the term R1R2.
rewrite the current goal using add_SNo_eq (- x) Lmx x Hx (from left to right).
We will prove SNoCut L R = 0.
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is add_SNo_SNoCutP (- x) x Lmx Hx.
We prove the intermediate claim LNLR: SNo (SNoCut L R).
An exact proof term for the current goal is SNoCutP_SNo_SNoCut L R LLR.
We prove the intermediate claim Lfst: SNoLev (SNoCut L R)SNoLev 0SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) 0.
Apply SNoCutP_SNoCut_fst L R LLR 0 SNo_0 to the current goal.
We will prove ∀w ∈ L, w < 0.
Let w be given.
Assume Hw: wL.
Apply binunionE L1 L2 w Hw to the current goal.
Assume Hw: w{w + x|w ∈ SNoL (- x)}.
Apply ReplE_impred (SNoL (- x)) (λz ⇒ z + x) w Hw to the current goal.
Let u be given.
Assume Hu: uSNoL (- x).
Assume Hwu: w = u + x.
Apply SNoL_E (- x) Lmx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev (- x).
Assume Hu3: u < - x.
We prove the intermediate claim Lmu: SNo (- u).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hu1.
We prove the intermediate claim Lmuu: - u + u = 0.
Apply IH to the current goal.
We will prove uSNoS_ (SNoLev x).
Apply SNoS_I2 u x Hu1 Hx to the current goal.
We will prove SNoLev uSNoLev x.
rewrite the current goal using minus_SNo_Lev x Hx (from right to left).
We will prove SNoLev uSNoLev (- x).
An exact proof term for the current goal is Hu2.
We prove the intermediate claim Lxmu: x < - u.
rewrite the current goal using minus_SNo_invol x Hx (from right to left).
We will prove - - x < - u.
Apply minus_SNo_Lt_contra u (- x) Hu1 Lmx to the current goal.
We will prove u < - x.
An exact proof term for the current goal is Hu3.
We will prove w < 0.
rewrite the current goal using Hwu (from left to right).
We will prove u + x < 0.
rewrite the current goal using add_SNo_com u x Hu1 Hx (from left to right).
We will prove x + u < 0.
rewrite the current goal using Lmuu (from right to left).
We will prove x + u < - u + u.
Apply add_SNo_Lt1 x u (- u) Hx Hu1 Lmu to the current goal.
We will prove x < - u.
An exact proof term for the current goal is Lxmu.
Assume Hw: w{- x + w|w ∈ SNoL x}.
Apply ReplE_impred (SNoL x) (λz ⇒ - x + z) w Hw to the current goal.
Let u be given.
Assume Hu: uSNoL x.
Assume Hwu: w = - x + u.
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev x.
Assume Hu3: u < x.
We prove the intermediate claim Lmu: SNo (- u).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hu1.
We prove the intermediate claim Lmuu: - u + u = 0.
Apply IH to the current goal.
We will prove uSNoS_ (SNoLev x).
Apply SNoS_I2 u x Hu1 Hx to the current goal.
We will prove SNoLev uSNoLev x.
An exact proof term for the current goal is Hu2.
We prove the intermediate claim Lmxmu: - x < - u.
Apply minus_SNo_Lt_contra u x Hu1 Hx to the current goal.
We will prove u < x.
An exact proof term for the current goal is Hu3.
We will prove w < 0.
rewrite the current goal using Hwu (from left to right).
We will prove - x + u < 0.
rewrite the current goal using Lmuu (from right to left).
We will prove - x + u < - u + u.
Apply add_SNo_Lt1 (- x) u (- u) Lmx Hu1 Lmu to the current goal.
We will prove - x < - u.
An exact proof term for the current goal is Lmxmu.
We will prove ∀z ∈ R, 0 < z.
Let z be given.
Assume Hz: zR.
Apply binunionE R1 R2 z Hz to the current goal.
Assume Hz: z{z + x|z ∈ SNoR (- x)}.
Apply ReplE_impred (SNoR (- x)) (λz ⇒ z + x) z Hz to the current goal.
Let v be given.
Assume Hv: vSNoR (- x).
Assume Hzv: z = v + x.
Apply SNoR_E (- x) Lmx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev (- x).
Assume Hv3: - x < v.
We prove the intermediate claim Lmv: SNo (- v).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim Lmvv: - v + v = 0.
Apply IH to the current goal.
We will prove vSNoS_ (SNoLev x).
Apply SNoS_I2 v x Hv1 Hx to the current goal.
We will prove SNoLev vSNoLev x.
rewrite the current goal using minus_SNo_Lev x Hx (from right to left).
We will prove SNoLev vSNoLev (- x).
An exact proof term for the current goal is Hv2.
We prove the intermediate claim Lmvx: - v < x.
rewrite the current goal using minus_SNo_invol x Hx (from right to left).
We will prove - v < - - x.
Apply minus_SNo_Lt_contra (- x) v Lmx Hv1 to the current goal.
We will prove - x < v.
An exact proof term for the current goal is Hv3.
We will prove 0 < z.
rewrite the current goal using Hzv (from left to right).
We will prove 0 < v + x.
rewrite the current goal using add_SNo_com v x Hv1 Hx (from left to right).
We will prove 0 < x + v.
rewrite the current goal using Lmvv (from right to left).
We will prove - v + v < x + v.
Apply add_SNo_Lt1 (- v) v x Lmv Hv1 Hx to the current goal.
We will prove - v < x.
An exact proof term for the current goal is Lmvx.
Assume Hz: z{- x + z|z ∈ SNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ - x + z) z Hz to the current goal.
Let v be given.
Assume Hv: vSNoR x.
Assume Hzv: z = - x + v.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: x < v.
We prove the intermediate claim Lmv: SNo (- v).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim Lmvv: - v + v = 0.
Apply IH to the current goal.
We will prove vSNoS_ (SNoLev x).
Apply SNoS_I2 v x Hv1 Hx to the current goal.
We will prove SNoLev vSNoLev x.
An exact proof term for the current goal is Hv2.
We prove the intermediate claim Lmvmx: - v < - x.
Apply minus_SNo_Lt_contra x v Hx Hv1 to the current goal.
We will prove x < v.
An exact proof term for the current goal is Hv3.
We will prove 0 < z.
rewrite the current goal using Hzv (from left to right).
We will prove 0 < - x + v.
rewrite the current goal using Lmvv (from right to left).
We will prove - v + v < - x + v.
Apply add_SNo_Lt1 (- v) v (- x) Lmv Hv1 Lmx to the current goal.
We will prove - v < - x.
An exact proof term for the current goal is Lmvmx.
Apply Lfst to the current goal.
Assume H1: SNoLev (SNoCut L R)SNoLev 0.
Assume H2: SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) 0.
Apply SNo_eq (SNoCut L R) 0 LNLR SNo_0 to the current goal.
We will prove SNoLev (SNoCut L R) = SNoLev 0.
Apply set_ext to the current goal.
An exact proof term for the current goal is H1.
rewrite the current goal using ordinal_SNoLev 0 ordinal_Empty (from left to right).
We will prove 0SNoLev (SNoCut L R).
Apply Subq_Empty to the current goal.
We will prove SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) 0.
An exact proof term for the current goal is H2.
Theorem. (add_SNo_minus_SNo_rinv) The following is provable:
∀x, SNo xx + - x = 0
Proof:
Let x be given.
Assume Hx: SNo x.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We will prove x + - x = 0.
rewrite the current goal using add_SNo_com x (- x) Hx Lmx (from left to right).
We will prove - x + x = 0.
An exact proof term for the current goal is add_SNo_minus_SNo_linv x Hx.
Theorem. (add_SNo_ordinal_SNoCutP) The following is provable:
∀alpha, ordinal alpha∀beta, ordinal betaSNoCutP ({x + beta|x ∈ SNoS_ alpha}{alpha + x|x ∈ SNoS_ beta}) Empty
Proof:
Let alpha be given.
Assume Ha: ordinal alpha.
Let beta be given.
Assume Hb: ordinal beta.
Set Lo1 to be the term {x + beta|x ∈ SNoS_ alpha}.
Set Lo2 to be the term {alpha + x|x ∈ SNoS_ beta}.
We will prove (∀x ∈ Lo1Lo2, SNo x)(∀y ∈ Empty, SNo y)(∀x ∈ Lo1Lo2, ∀y ∈ Empty, x < y).
Apply and3I to the current goal.
Let w be given.
Assume Hw: wLo1Lo2.
Apply binunionE Lo1 Lo2 w Hw to the current goal.
Assume H1: wLo1.
Apply ReplE_impred (SNoS_ alpha) (λx ⇒ x + beta) w H1 to the current goal.
Let x be given.
Assume Hx: xSNoS_ alpha.
Assume H2: w = x + beta.
Apply SNoS_E2 alpha Ha x Hx to the current goal.
Assume _ _.
Assume Hx2: SNo x.
Assume _.
We will prove SNo w.
rewrite the current goal using H2 (from left to right).
We will prove SNo (x + beta).
An exact proof term for the current goal is SNo_add_SNo x beta Hx2 (ordinal_SNo beta Hb).
Assume H1: wLo2.
Apply ReplE_impred (SNoS_ beta) (λx ⇒ alpha + x) w H1 to the current goal.
Let x be given.
Assume Hx: xSNoS_ beta.
Assume H2: w = alpha + x.
Apply SNoS_E2 beta Hb x Hx to the current goal.
Assume _ _.
Assume Hx2: SNo x.
Assume _.
We will prove SNo w.
rewrite the current goal using H2 (from left to right).
We will prove SNo (alpha + x).
An exact proof term for the current goal is SNo_add_SNo alpha x (ordinal_SNo alpha Ha) Hx2.
Let y be given.
Assume Hy: yEmpty.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Let x be given.
Assume _.
Let y be given.
Assume Hy: yEmpty.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Theorem. (add_SNo_ordinal_eq) The following is provable:
∀alpha, ordinal alpha∀beta, ordinal betaalpha + beta = SNoCut ({x + beta|x ∈ SNoS_ alpha}{alpha + x|x ∈ SNoS_ beta}) Empty
Proof:
Let alpha be given.
Assume Ha: ordinal alpha.
Let beta be given.
Assume Hb: ordinal beta.
Set Lo1 to be the term {x + beta|x ∈ SNoS_ alpha}.
Set Lo2 to be the term {alpha + x|x ∈ SNoS_ beta}.
We will prove alpha + beta = SNoCut (Lo1Lo2) Empty.
We prove the intermediate claim La: SNo alpha.
An exact proof term for the current goal is ordinal_SNo alpha Ha.
We prove the intermediate claim Lb: SNo beta.
An exact proof term for the current goal is ordinal_SNo beta Hb.
rewrite the current goal using add_SNo_eq alpha La beta Lb (from left to right).
We will prove SNoCut ({x + beta|x ∈ SNoL alpha}{alpha + x|x ∈ SNoL beta}) ({x + beta|x ∈ SNoR alpha}{alpha + x|x ∈ SNoR beta}) = SNoCut (Lo1Lo2) Empty.
rewrite the current goal using ordinal_SNoL alpha Ha (from left to right).
rewrite the current goal using ordinal_SNoL beta Hb (from left to right).
We will prove SNoCut (Lo1Lo2) ({x + beta|x ∈ SNoR alpha}{alpha + x|x ∈ SNoR beta}) = SNoCut (Lo1Lo2) Empty.
rewrite the current goal using ordinal_SNoR alpha Ha (from left to right).
rewrite the current goal using ordinal_SNoR beta Hb (from left to right).
We will prove SNoCut (Lo1Lo2) ({x + beta|x ∈ Empty}{alpha + x|x ∈ Empty}) = SNoCut (Lo1Lo2) Empty.
rewrite the current goal using Repl_Empty (from left to right).
rewrite the current goal using Repl_Empty (from left to right).
We will prove SNoCut (Lo1Lo2) (EmptyEmpty) = SNoCut (Lo1Lo2) Empty.
rewrite the current goal using binunion_idl (from left to right).
Use reflexivity.
Theorem. (add_SNo_ordinal_ordinal) The following is provable:
∀alpha, ordinal alpha∀beta, ordinal betaordinal (alpha + beta)
Proof:
Let alpha be given.
Assume Ha: ordinal alpha.
Let beta be given.
Assume Hb: ordinal beta.
We prove the intermediate claim La: SNo alpha.
An exact proof term for the current goal is ordinal_SNo alpha Ha.
We prove the intermediate claim Lb: SNo beta.
An exact proof term for the current goal is ordinal_SNo beta Hb.
We prove the intermediate claim Lab1: SNo (alpha + beta).
An exact proof term for the current goal is SNo_add_SNo alpha beta La Lb.
We prove the intermediate claim Lab2: ordinal (SNoLev (alpha + beta)).
An exact proof term for the current goal is SNoLev_ordinal (alpha + beta) Lab1.
We will prove ordinal (alpha + beta).
Apply SNo_max_ordinal (alpha + beta) Lab1 to the current goal.
We will prove ∀y ∈ SNoS_ (SNoLev (alpha + beta)), y < alpha + beta.
Let y be given.
Assume Hy: ySNoS_ (SNoLev (alpha + beta)).
Apply SNoS_E2 (SNoLev (alpha + beta)) Lab2 y Hy to the current goal.
Assume Hy1: SNoLev ySNoLev (alpha + beta).
Assume Hy2: ordinal (SNoLev y).
Assume Hy3: SNo y.
Assume Hy4: SNo_ (SNoLev y) y.
Set Lo1 to be the term {x + beta|x ∈ SNoS_ alpha}.
Set Lo2 to be the term {alpha + x|x ∈ SNoS_ beta}.
Apply SNoLt_trichotomy_or y (alpha + beta) Hy3 Lab1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: y < alpha + beta.
An exact proof term for the current goal is H1.
Assume H1: y = alpha + beta.
We will prove False.
Apply In_irref (SNoLev y) to the current goal.
rewrite the current goal using H1 (from left to right) at position 2.
An exact proof term for the current goal is Hy1.
Assume H1: alpha + beta < y.
We will prove False.
Apply add_SNo_ordinal_SNoCutP alpha Ha beta Hb to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: ∀x ∈ Lo1Lo2, SNo x.
Assume _ _.
Apply SNoCutP_SNoCut (Lo1Lo2) Empty (add_SNo_ordinal_SNoCutP alpha Ha beta Hb) to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume H3.
Apply H3 to the current goal.
Assume _.
Assume H3: ∀x ∈ Lo1Lo2, x < SNoCut (Lo1Lo2) Empty.
Assume _.
Assume H4: ∀z, SNo z(∀x ∈ Lo1Lo2, x < z)(∀y ∈ Empty, z < y)SNoLev (SNoCut (Lo1Lo2) Empty)SNoLev zSNoEq_ (SNoLev (SNoCut (Lo1Lo2) Empty)) (SNoCut (Lo1Lo2) Empty) z.
We prove the intermediate claim L1: SNoLev (alpha + beta)SNoLev ySNoEq_ (SNoLev (alpha + beta)) (alpha + beta) y.
rewrite the current goal using add_SNo_ordinal_eq alpha Ha beta Hb (from left to right).
Apply H4 y Hy3 to the current goal.
Let w be given.
Assume Hw: wLo1Lo2.
We will prove w < y.
Apply SNoLt_tra w (alpha + beta) y (H2 w Hw) Lab1 Hy3 to the current goal.
We will prove w < alpha + beta.
rewrite the current goal using add_SNo_ordinal_eq alpha Ha beta Hb (from left to right).
An exact proof term for the current goal is H3 w Hw.
We will prove alpha + beta < y.
An exact proof term for the current goal is H1.
Let w be given.
Assume Hw: wEmpty.
We will prove False.
An exact proof term for the current goal is EmptyE w Hw.
Apply L1 to the current goal.
Assume H5: SNoLev (alpha + beta)SNoLev y.
Assume _.
Apply In_irref (SNoLev y) to the current goal.
Apply H5 to the current goal.
An exact proof term for the current goal is Hy1.
Theorem. (add_SNo_ordinal_SL) The following is provable:
∀alpha, ordinal alpha∀beta, ordinal betaordsucc alpha + beta = ordsucc (alpha + beta)
Proof:
Let alpha be given.
Assume Ha: ordinal alpha.
Apply ordinal_ind to the current goal.
Let beta be given.
Assume Hb: ordinal beta.
Assume IH: ∀delta ∈ beta, ordsucc alpha + delta = ordsucc (alpha + delta).
We prove the intermediate claim La: SNo alpha.
An exact proof term for the current goal is ordinal_SNo alpha Ha.
We prove the intermediate claim Lb: SNo beta.
An exact proof term for the current goal is ordinal_SNo beta Hb.
We prove the intermediate claim Lab: ordinal (alpha + beta).
An exact proof term for the current goal is add_SNo_ordinal_ordinal alpha Ha beta Hb.
We prove the intermediate claim LSa: ordinal (ordsucc alpha).
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Ha.
We prove the intermediate claim LSa2: SNo (ordsucc alpha).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is LSa.
We prove the intermediate claim LSab: ordinal (ordsucc alpha + beta).
An exact proof term for the current goal is add_SNo_ordinal_ordinal (ordsucc alpha) LSa beta Hb.
Set Lo1 to be the term {x + beta|x ∈ SNoS_ (ordsucc alpha)}.
Set Lo2 to be the term {ordsucc alpha + x|x ∈ SNoS_ beta}.
Apply SNoCutP_SNoCut (Lo1Lo2) Empty (add_SNo_ordinal_SNoCutP (ordsucc alpha) LSa beta Hb) to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume _.
rewrite the current goal using add_SNo_ordinal_eq (ordsucc alpha) LSa beta Hb (from right to left).
Assume H1: ∀x ∈ Lo1Lo2, x < ordsucc alpha + beta.
Assume _.
Assume H2: ∀z, SNo z(∀x ∈ Lo1Lo2, x < z)(∀y ∈ Empty, z < y)SNoLev (ordsucc alpha + beta)SNoLev zSNoEq_ (SNoLev (ordsucc alpha + beta)) (ordsucc alpha + beta) z.
We prove the intermediate claim L1: alpha + betaordsucc alpha + beta.
Apply ordinal_SNoLt_In (alpha + beta) (ordsucc alpha + beta) Lab LSab to the current goal.
We will prove alpha + beta < ordsucc alpha + beta.
Apply H1 to the current goal.
We will prove alpha + betaLo1Lo2.
Apply binunionI1 to the current goal.
We will prove alpha + beta{x + beta|x ∈ SNoS_ (ordsucc alpha)}.
Apply ReplI (SNoS_ (ordsucc alpha)) (λx ⇒ x + beta) alpha to the current goal.
We will prove alphaSNoS_ (ordsucc alpha).
Apply SNoS_I (ordsucc alpha) LSa alpha alpha (ordsuccI2 alpha) to the current goal.
We will prove SNo_ alpha alpha.
An exact proof term for the current goal is ordinal_SNo_ alpha Ha.
Apply ordinal_ordsucc_In_eq (ordsucc alpha + beta) (alpha + beta) LSab L1 to the current goal.
Assume H3: ordsucc (alpha + beta)ordsucc alpha + beta.
We will prove False.
Set z to be the term ordsucc (alpha + beta).
We prove the intermediate claim Lz: ordinal z.
An exact proof term for the current goal is ordinal_ordsucc (alpha + beta) Lab.
We prove the intermediate claim Lz1: TransSet z.
An exact proof term for the current goal is ordinal_TransSet z Lz.
We prove the intermediate claim Lz2: SNo z.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Lz.
We prove the intermediate claim L2: SNoLev (ordsucc alpha + beta)SNoLev zSNoEq_ (SNoLev (ordsucc alpha + beta)) (ordsucc alpha + beta) z.
Apply H2 z (ordinal_SNo z Lz) to the current goal.
Let w be given.
Assume Hw: wLo1Lo2.
We will prove w < z.
Apply binunionE Lo1 Lo2 w Hw to the current goal.
Assume H4: wLo1.
Apply ReplE_impred (SNoS_ (ordsucc alpha)) (λx ⇒ x + beta) w H4 to the current goal.
Let x be given.
Assume Hx: xSNoS_ (ordsucc alpha).
Assume Hwx: w = x + beta.
Apply SNoS_E2 (ordsucc alpha) LSa x Hx to the current goal.
Assume Hx1: SNoLev xordsucc alpha.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We will prove w < z.
rewrite the current goal using Hwx (from left to right).
We will prove x + beta < z.
We prove the intermediate claim LLxb: ordinal (SNoLev x + beta).
An exact proof term for the current goal is add_SNo_ordinal_ordinal (SNoLev x) Hx2 beta Hb.
We prove the intermediate claim LLxb2: SNo (SNoLev x + beta).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is LLxb.
Apply SNoLeLt_tra (x + beta) (SNoLev x + beta) z (SNo_add_SNo x beta Hx3 Lb) LLxb2 Lz2 to the current goal.
We will prove x + betaSNoLev x + beta.
Apply add_SNo_Le1 x beta (SNoLev x) Hx3 Lb (ordinal_SNo (SNoLev x) Hx2) to the current goal.
We will prove xSNoLev x.
An exact proof term for the current goal is ordinal_SNoLev_max_2 (SNoLev x) Hx2 x Hx3 (ordsuccI2 (SNoLev x)).
We will prove SNoLev x + beta < z.
Apply SNoLeLt_tra (SNoLev x + beta) (alpha + beta) z LLxb2 (ordinal_SNo (alpha + beta) Lab) Lz2 to the current goal.
We will prove SNoLev x + betaalpha + beta.
Apply add_SNo_Le1 (SNoLev x) beta alpha (ordinal_SNo (SNoLev x) Hx2) Lb La to the current goal.
We will prove SNoLev xalpha.
Apply ordinal_Subq_SNoLe (SNoLev x) alpha Hx2 Ha to the current goal.
We will prove SNoLev xalpha.
Apply ordsuccE alpha (SNoLev x) Hx1 to the current goal.
Assume H5: SNoLev xalpha.
Apply Ha to the current goal.
Assume Ha1 _.
An exact proof term for the current goal is Ha1 (SNoLev x) H5.
Assume H5: SNoLev x = alpha.
rewrite the current goal using H5 (from left to right).
Apply Subq_ref to the current goal.
We will prove alpha + beta < z.
An exact proof term for the current goal is ordinal_In_SNoLt z Lz (alpha + beta) (ordsuccI2 (alpha + beta)).
Assume H4: wLo2.
Apply ReplE_impred (SNoS_ beta) (λx ⇒ ordsucc alpha + x) w H4 to the current goal.
Let x be given.
Assume Hx: xSNoS_ beta.
Assume Hwx: w = ordsucc alpha + x.
Apply SNoS_E2 beta Hb x Hx to the current goal.
Assume Hx1: SNoLev xbeta.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
We will prove w < z.
rewrite the current goal using Hwx (from left to right).
We will prove ordsucc alpha + x < z.
We prove the intermediate claim IHLx: ordsucc alpha + SNoLev x = ordsucc (alpha + SNoLev x).
An exact proof term for the current goal is IH (SNoLev x) Hx1.
We prove the intermediate claim LSax: SNo (ordsucc alpha + x).
An exact proof term for the current goal is SNo_add_SNo (ordsucc alpha) x LSa2 Hx3.
We prove the intermediate claim LaLx: ordinal (alpha + SNoLev x).
An exact proof term for the current goal is add_SNo_ordinal_ordinal alpha Ha (SNoLev x) Hx2.
We prove the intermediate claim LSaLx: ordinal (ordsucc alpha + SNoLev x).
An exact proof term for the current goal is add_SNo_ordinal_ordinal (ordsucc alpha) LSa (SNoLev x) Hx2.
We prove the intermediate claim LSaLx2: SNo (ordsucc alpha + SNoLev x).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is LSaLx.
Apply SNoLeLt_tra (ordsucc alpha + x) (ordsucc alpha + SNoLev x) z LSax LSaLx2 Lz2 to the current goal.
We will prove ordsucc alpha + xordsucc alpha + SNoLev x.
Apply add_SNo_Le2 (ordsucc alpha) x (SNoLev x) LSa2 Hx3 (ordinal_SNo (SNoLev x) Hx2) to the current goal.
We will prove xSNoLev x.
An exact proof term for the current goal is ordinal_SNoLev_max_2 (SNoLev x) Hx2 x Hx3 (ordsuccI2 (SNoLev x)).
We will prove ordsucc alpha + SNoLev x < z.
rewrite the current goal using IHLx (from left to right).
We will prove ordsucc (alpha + SNoLev x) < ordsucc (alpha + beta).
Apply ordinal_In_SNoLt z Lz (ordsucc (alpha + SNoLev x)) to the current goal.
We will prove ordsucc (alpha + SNoLev x)ordsucc (alpha + beta).
Apply ordinal_ordsucc_In (alpha + beta) Lab to the current goal.
We will prove alpha + SNoLev xalpha + beta.
Apply ordinal_SNoLt_In (alpha + SNoLev x) (alpha + beta) LaLx Lab to the current goal.
We will prove alpha + SNoLev x < alpha + beta.
Apply add_SNo_Lt2 alpha (SNoLev x) beta La (ordinal_SNo (SNoLev x) Hx2) Lb to the current goal.
We will prove SNoLev x < beta.
Apply ordinal_In_SNoLt beta Hb (SNoLev x) to the current goal.
We will prove SNoLev xbeta.
An exact proof term for the current goal is Hx1.
Let w be given.
Assume Hw: wEmpty.
We will prove False.
An exact proof term for the current goal is EmptyE w Hw.
Apply L2 to the current goal.
rewrite the current goal using ordinal_SNoLev (ordsucc alpha + beta) LSab (from left to right).
rewrite the current goal using ordinal_SNoLev z Lz (from left to right).
Assume H4: ordsucc alpha + betaz.
Assume _.
Apply In_irref z to the current goal.
Apply H4 to the current goal.
We will prove zordsucc alpha + beta.
An exact proof term for the current goal is H3.
Assume H3: ordsucc alpha + beta = ordsucc (alpha + beta).
An exact proof term for the current goal is H3.
Theorem. (add_SNo_ordinal_SR) The following is provable:
∀alpha, ordinal alpha∀beta, ordinal betaalpha + ordsucc beta = ordsucc (alpha + beta)
Proof:
Let alpha be given.
Assume Ha: ordinal alpha.
Let beta be given.
Assume Hb: ordinal beta.
We prove the intermediate claim La: SNo alpha.
An exact proof term for the current goal is ordinal_SNo alpha Ha.
We prove the intermediate claim Lb: SNo beta.
An exact proof term for the current goal is ordinal_SNo beta Hb.
We prove the intermediate claim La: SNo alpha.
An exact proof term for the current goal is ordinal_SNo alpha Ha.
We prove the intermediate claim LSb: ordinal (ordsucc beta).
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Hb.
We prove the intermediate claim LSb2: SNo (ordsucc beta).
An exact proof term for the current goal is ordinal_SNo (ordsucc beta) LSb.
rewrite the current goal using add_SNo_com alpha (ordsucc beta) La LSb2 (from left to right).
We will prove ordsucc beta + alpha = ordsucc (alpha + beta).
rewrite the current goal using add_SNo_ordinal_SL beta Hb alpha Ha (from left to right).
We will prove ordsucc (beta + alpha) = ordsucc (alpha + beta).
rewrite the current goal using add_SNo_com beta alpha Lb La (from left to right).
Use reflexivity.
Theorem. (add_SNo_ordinal_InL) The following is provable:
∀alpha, ordinal alpha∀beta, ordinal beta∀gamma ∈ alpha, gamma + betaalpha + beta
Proof:
Let alpha be given.
Assume Ha.
Let beta be given.
Assume Hb.
Let gamma be given.
Assume Hc.
We prove the intermediate claim Lc: ordinal gamma.
An exact proof term for the current goal is ordinal_Hered alpha Ha gamma Hc.
We prove the intermediate claim Lab: ordinal (alpha + beta).
Apply add_SNo_ordinal_ordinal to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is Hb.
We prove the intermediate claim Lcb: ordinal (gamma + beta).
Apply add_SNo_ordinal_ordinal to the current goal.
An exact proof term for the current goal is Lc.
An exact proof term for the current goal is Hb.
We will prove gamma + betaalpha + beta.
Apply ordinal_SNoLt_In (gamma + beta) (alpha + beta) Lcb Lab to the current goal.
We will prove gamma + beta < alpha + beta.
Apply add_SNo_Lt1 to the current goal.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Lc.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Hb.
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Ha.
An exact proof term for the current goal is ordinal_In_SNoLt alpha Ha gamma Hc.
Theorem. (add_SNo_ordinal_InR) The following is provable:
∀alpha, ordinal alpha∀beta, ordinal beta∀gamma ∈ beta, alpha + gammaalpha + beta
Proof:
Let alpha be given.
Assume Ha: ordinal alpha.
Let beta be given.
Assume Hb: ordinal beta.
Let gamma be given.
Assume Hc: gammabeta.
We prove the intermediate claim La: SNo alpha.
An exact proof term for the current goal is ordinal_SNo alpha Ha.
We prove the intermediate claim Lb: SNo beta.
An exact proof term for the current goal is ordinal_SNo beta Hb.
We prove the intermediate claim Lc: ordinal gamma.
An exact proof term for the current goal is ordinal_Hered beta Hb gamma Hc.
We prove the intermediate claim Lc2: SNo gamma.
An exact proof term for the current goal is ordinal_SNo gamma Lc.
rewrite the current goal using add_SNo_com alpha gamma La Lc2 (from left to right).
rewrite the current goal using add_SNo_com alpha beta La Lb (from left to right).
An exact proof term for the current goal is add_SNo_ordinal_InL beta Hb alpha Ha gamma Hc.
Theorem. (add_nat_add_SNo) The following is provable:
∀n m ∈ ω, add_nat n m = n + m
Proof:
Let n be given.
Assume Hn: nω.
We prove the intermediate claim Ln1: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Ln2: ordinal n.
An exact proof term for the current goal is nat_p_ordinal n Ln1.
We prove the intermediate claim Ln3: SNo n.
An exact proof term for the current goal is ordinal_SNo n Ln2.
We prove the intermediate claim L1: ∀m, nat_p madd_nat n m = n + m.
Apply nat_ind to the current goal.
We will prove add_nat n 0 = n + 0.
rewrite the current goal using add_SNo_0R n Ln3 (from left to right).
We will prove add_nat n 0 = n.
An exact proof term for the current goal is add_nat_0R n.
Let m be given.
Assume Hm: nat_p m.
Assume IH: add_nat n m = n + m.
We will prove add_nat n (ordsucc m) = n + (ordsucc m).
rewrite the current goal using add_SNo_ordinal_SR n Ln2 m (nat_p_ordinal m Hm) (from left to right).
We will prove add_nat n (ordsucc m) = ordsucc (n + m).
rewrite the current goal using IH (from right to left).
We will prove add_nat n (ordsucc m) = ordsucc (add_nat n m).
An exact proof term for the current goal is add_nat_SR n m Hm.
Let m be given.
Assume Hm: mω.
We will prove add_nat n m = n + m.
An exact proof term for the current goal is L1 m (omega_nat_p m Hm).
Theorem. (add_SNo_In_omega) The following is provable:
∀n m ∈ ω, n + mω
Proof:
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
rewrite the current goal using add_nat_add_SNo n Hn m Hm (from right to left).
Apply nat_p_omega to the current goal.
Apply add_nat_p to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hn.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
Theorem. (add_SNo_1_1_2) The following is provable:
1 + 1 = 2
Proof:
rewrite the current goal using add_nat_add_SNo 1 (nat_p_omega 1 nat_1) 1 (nat_p_omega 1 nat_1) (from right to left).
An exact proof term for the current goal is add_nat_1_1_2.
Theorem. (add_SNo_SNoL_interpolate) The following is provable:
∀x y, SNo xSNo y∀u ∈ SNoL (x + y), (∃v ∈ SNoL x, uv + y)(∃v ∈ SNoL y, ux + v)
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim LI: ∀u, SNo uSNoLev uSNoLev (x + y)u < x + y(∃v ∈ SNoL x, uv + y)(∃v ∈ SNoL y, ux + v).
Apply SNoLev_ind to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume IH: ∀z ∈ SNoS_ (SNoLev u), SNoLev zSNoLev (x + y)z < x + y(∃v ∈ SNoL x, zv + y)(∃v ∈ SNoL y, zx + v).
Assume Hu2: SNoLev uSNoLev (x + y).
Assume Hu3: u < x + y.
Apply dneg to the current goal.
Assume HNC: ¬ ((∃v ∈ SNoL x, uv + y)(∃v ∈ SNoL y, ux + v)).
Apply SNoLt_irref u to the current goal.
We will prove u < u.
Apply SNoLtLe_tra u (x + y) u Hu1 Lxy Hu1 Hu3 to the current goal.
We will prove x + yu.
Set Lxy1 to be the term {w + y|w ∈ SNoL x}.
Set Lxy2 to be the term {x + w|w ∈ SNoL y}.
Set Rxy1 to be the term {z + y|z ∈ SNoR x}.
Set Rxy2 to be the term {x + z|z ∈ SNoR y}.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
We will prove SNoCut (Lxy1Lxy2) (Rxy1Rxy2)u.
rewrite the current goal using SNo_eta u Hu1 (from left to right).
We will prove SNoCut (Lxy1Lxy2) (Rxy1Rxy2)SNoCut (SNoL u) (SNoR u).
Apply SNoCut_Le (Lxy1Lxy2) (Rxy1Rxy2) (SNoL u) (SNoR u) to the current goal.
An exact proof term for the current goal is add_SNo_SNoCutP x y Hx Hy.
An exact proof term for the current goal is SNoCutP_SNoL_SNoR u Hu1.
rewrite the current goal using SNo_eta u Hu1 (from right to left).
We will prove ∀w ∈ Lxy1Lxy2, w < u.
Let w be given.
Assume Hw: wLxy1Lxy2.
Apply binunionE Lxy1 Lxy2 w Hw to the current goal.
Assume Hw2: wLxy1.
We will prove w < u.
Apply ReplE_impred (SNoL x) (λw ⇒ w + y) w Hw2 to the current goal.
Let v be given.
Assume Hv: vSNoL x.
Assume Hwv: w = v + y.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: v < x.
rewrite the current goal using Hwv (from left to right).
We will prove v + y < u.
We prove the intermediate claim Lvy: SNo (v + y).
An exact proof term for the current goal is SNo_add_SNo v y Hv1 Hy.
Apply SNoLtLe_or (v + y) u Lvy Hu1 to the current goal.
Assume H1: v + y < u.
An exact proof term for the current goal is H1.
Assume H1: uv + y.
We will prove False.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
We will prove vSNoL x.
An exact proof term for the current goal is Hv.
We will prove uv + y.
An exact proof term for the current goal is H1.
Assume Hw2: wLxy2.
We will prove w < u.
Apply ReplE_impred (SNoL y) (λw ⇒ x + w) w Hw2 to the current goal.
Let v be given.
Assume Hv: vSNoL y.
Assume Hwv: w = x + v.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: v < y.
rewrite the current goal using Hwv (from left to right).
We will prove x + v < u.
We prove the intermediate claim Lxv: SNo (x + v).
An exact proof term for the current goal is SNo_add_SNo x v Hx Hv1.
Apply SNoLtLe_or (x + v) u Lxv Hu1 to the current goal.
Assume H1: x + v < u.
An exact proof term for the current goal is H1.
Assume H1: ux + v.
We will prove False.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
We will prove vSNoL y.
An exact proof term for the current goal is Hv.
We will prove ux + v.
An exact proof term for the current goal is H1.
rewrite the current goal using add_SNo_eq x Hx y Hy (from right to left).
We will prove ∀z ∈ SNoR u, x + y < z.
Let z be given.
Assume Hz: zSNoR u.
Apply SNoR_E u Hu1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev zSNoLev u.
Assume Hz3: u < z.
Apply SNoLt_trichotomy_or (x + y) z Lxy Hz1 to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: x + y < z.
An exact proof term for the current goal is H1.
Assume H1: x + y = z.
We will prove False.
Apply In_no2cycle (SNoLev z) (SNoLev u) Hz2 to the current goal.
We will prove SNoLev uSNoLev z.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hu2.
Assume H1: z < x + y.
We will prove False.
We prove the intermediate claim Lz1: zSNoS_ (SNoLev u).
An exact proof term for the current goal is SNoR_SNoS_ u z Hz.
We prove the intermediate claim Lz2: SNoLev zSNoLev (x + y).
Apply SNoLev_ordinal (x + y) Lxy to the current goal.
Assume Hxy1 _.
An exact proof term for the current goal is Hxy1 (SNoLev u) Hu2 (SNoLev z) Hz2.
Apply IH z Lz1 Lz2 H1 to the current goal.
Assume H2: ∃v ∈ SNoL x, zv + y.
Apply H2 to the current goal.
Let v be given.
Assume H3.
Apply H3 to the current goal.
Assume Hv: vSNoL x.
Assume H3: zv + y.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: v < x.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We will prove uv + y.
Apply SNoLe_tra u z (v + y) Hu1 Hz1 (SNo_add_SNo v y Hv1 Hy) to the current goal.
We will prove uz.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz3.
We will prove zv + y.
An exact proof term for the current goal is H3.
Assume H2: ∃v ∈ SNoL y, zx + v.
Apply H2 to the current goal.
Let v be given.
Assume H3.
Apply H3 to the current goal.
Assume Hv: vSNoL y.
Assume H3: zx + v.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: v < y.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We will prove ux + v.
Apply SNoLe_tra u z (x + v) Hu1 Hz1 (SNo_add_SNo x v Hx Hv1) to the current goal.
We will prove uz.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz3.
We will prove zx + v.
An exact proof term for the current goal is H3.
Let u be given.
Assume Hu: uSNoL (x + y).
Apply SNoL_E (x + y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev (x + y).
Assume Hu3: u < x + y.
An exact proof term for the current goal is LI u Hu1 Hu2 Hu3.
Theorem. (add_SNo_SNoR_interpolate) The following is provable:
∀x y, SNo xSNo y∀u ∈ SNoR (x + y), (∃v ∈ SNoR x, v + yu)(∃v ∈ SNoR y, x + vu)
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim LI: ∀u, SNo uSNoLev uSNoLev (x + y)x + y < u(∃v ∈ SNoR x, v + yu)(∃v ∈ SNoR y, x + vu).
Apply SNoLev_ind to the current goal.
Let u be given.
Assume Hu1: SNo u.
Assume IH: ∀z ∈ SNoS_ (SNoLev u), SNoLev zSNoLev (x + y)x + y < z(∃v ∈ SNoR x, v + yz)(∃v ∈ SNoR y, x + vz).
Assume Hu2: SNoLev uSNoLev (x + y).
Assume Hu3: x + y < u.
Apply dneg to the current goal.
Assume HNC: ¬ ((∃v ∈ SNoR x, v + yu)(∃v ∈ SNoR y, x + vu)).
Apply SNoLt_irref u to the current goal.
We will prove u < u.
Apply (λH : ux + ySNoLeLt_tra u (x + y) u Hu1 Lxy Hu1 H Hu3) to the current goal.
We will prove ux + y.
Set Lxy1 to be the term {w + y|w ∈ SNoL x}.
Set Lxy2 to be the term {x + w|w ∈ SNoL y}.
Set Rxy1 to be the term {z + y|z ∈ SNoR x}.
Set Rxy2 to be the term {x + z|z ∈ SNoR y}.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
We will prove uSNoCut (Lxy1Lxy2) (Rxy1Rxy2).
rewrite the current goal using SNo_eta u Hu1 (from left to right).
We will prove SNoCut (SNoL u) (SNoR u)SNoCut (Lxy1Lxy2) (Rxy1Rxy2).
Apply SNoCut_Le (SNoL u) (SNoR u) (Lxy1Lxy2) (Rxy1Rxy2) to the current goal.
An exact proof term for the current goal is SNoCutP_SNoL_SNoR u Hu1.
An exact proof term for the current goal is add_SNo_SNoCutP x y Hx Hy.
rewrite the current goal using add_SNo_eq x Hx y Hy (from right to left).
We will prove ∀z ∈ SNoL u, z < x + y.
Let z be given.
Assume Hz: zSNoL u.
Apply SNoL_E u Hu1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev zSNoLev u.
Assume Hz3: z < u.
Apply SNoLt_trichotomy_or z (x + y) Hz1 Lxy to the current goal.
Assume H1.
Apply H1 to the current goal.
Assume H1: z < x + y.
An exact proof term for the current goal is H1.
Assume H1: z = x + y.
We will prove False.
Apply In_no2cycle (SNoLev z) (SNoLev u) Hz2 to the current goal.
We will prove SNoLev uSNoLev z.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is Hu2.
Assume H1: x + y < z.
We will prove False.
We prove the intermediate claim Lz1: zSNoS_ (SNoLev u).
An exact proof term for the current goal is SNoL_SNoS_ u z Hz.
We prove the intermediate claim Lz2: SNoLev zSNoLev (x + y).
Apply SNoLev_ordinal (x + y) Lxy to the current goal.
Assume Hxy1 _.
An exact proof term for the current goal is Hxy1 (SNoLev u) Hu2 (SNoLev z) Hz2.
Apply IH z Lz1 Lz2 H1 to the current goal.
Assume H2: ∃v ∈ SNoR x, v + yz.
Apply H2 to the current goal.
Let v be given.
Assume H3.
Apply H3 to the current goal.
Assume Hv: vSNoR x.
Assume H3: v + yz.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: x < v.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We will prove v + yu.
Apply SNoLe_tra (v + y) z u (SNo_add_SNo v y Hv1 Hy) Hz1 Hu1 to the current goal.
We will prove v + yz.
An exact proof term for the current goal is H3.
We will prove zu.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz3.
Assume H2: ∃v ∈ SNoR y, x + vz.
Apply H2 to the current goal.
Let v be given.
Assume H3.
Apply H3 to the current goal.
Assume Hv: vSNoR y.
Assume H3: x + vz.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: y < v.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hv.
We will prove x + vu.
Apply SNoLe_tra (x + v) z u (SNo_add_SNo x v Hx Hv1) Hz1 Hu1 to the current goal.
We will prove x + vz.
An exact proof term for the current goal is H3.
We will prove zu.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz3.
rewrite the current goal using SNo_eta u Hu1 (from right to left).
We will prove ∀w ∈ Rxy1Rxy2, u < w.
Let w be given.
Assume Hw: wRxy1Rxy2.
Apply binunionE Rxy1 Rxy2 w Hw to the current goal.
Assume Hw2: wRxy1.
We will prove u < w.
Apply ReplE_impred (SNoR x) (λw ⇒ w + y) w Hw2 to the current goal.
Let v be given.
Assume Hv: vSNoR x.
Assume Hwv: w = v + y.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: x < v.
rewrite the current goal using Hwv (from left to right).
We will prove u < v + y.
We prove the intermediate claim Lvy: SNo (v + y).
An exact proof term for the current goal is SNo_add_SNo v y Hv1 Hy.
Apply SNoLtLe_or u (v + y) Hu1 Lvy to the current goal.
Assume H1: u < v + y.
An exact proof term for the current goal is H1.
Assume H1: v + yu.
We will prove False.
Apply HNC to the current goal.
Apply orIL to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
We will prove vSNoR x.
An exact proof term for the current goal is Hv.
We will prove v + yu.
An exact proof term for the current goal is H1.
Assume Hw2: wRxy2.
We will prove u < w.
Apply ReplE_impred (SNoR y) (λw ⇒ x + w) w Hw2 to the current goal.
Let v be given.
Assume Hv: vSNoR y.
Assume Hwv: w = x + v.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: y < v.
rewrite the current goal using Hwv (from left to right).
We will prove u < x + v.
We prove the intermediate claim Lxv: SNo (x + v).
An exact proof term for the current goal is SNo_add_SNo x v Hx Hv1.
Apply SNoLtLe_or u (x + v) Hu1 Lxv to the current goal.
Assume H1: u < x + v.
An exact proof term for the current goal is H1.
Assume H1: x + vu.
We will prove False.
Apply HNC to the current goal.
Apply orIR to the current goal.
We use v to witness the existential quantifier.
Apply andI to the current goal.
We will prove vSNoR y.
An exact proof term for the current goal is Hv.
We will prove x + vu.
An exact proof term for the current goal is H1.
Let u be given.
Assume Hu: uSNoR (x + y).
Apply SNoR_E (x + y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev (x + y).
Assume Hu3: x + y < u.
An exact proof term for the current goal is LI u Hu1 Hu2 Hu3.
Theorem. (add_SNo_assoc) The following is provable:
∀x y z, SNo xSNo ySNo zx + (y + z) = (x + y) + z
Proof:
Set P to be the term λx y z ⇒ x + (y + z) = (x + y) + z of type setsetsetprop.
Apply SNoLev_ind3 to the current goal.
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume IH1: ∀u ∈ SNoS_ (SNoLev x), P u y z.
Assume IH2: ∀v ∈ SNoS_ (SNoLev y), P x v z.
Assume IH3: ∀w ∈ SNoS_ (SNoLev z), P x y w.
Assume IH4: ∀u ∈ SNoS_ (SNoLev x), ∀v ∈ SNoS_ (SNoLev y), P u v z.
Assume IH5: ∀u ∈ SNoS_ (SNoLev x), ∀w ∈ SNoS_ (SNoLev z), P u y w.
Assume IH6: ∀v ∈ SNoS_ (SNoLev y), ∀w ∈ SNoS_ (SNoLev z), P x v w.
Assume IH7: ∀u ∈ SNoS_ (SNoLev x), ∀v ∈ SNoS_ (SNoLev y), ∀w ∈ SNoS_ (SNoLev z), P u v w.
We will prove x + (y + z) = (x + y) + z.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim Lyz: SNo (y + z).
An exact proof term for the current goal is SNo_add_SNo y z Hy Hz.
Set Lxyz1 to be the term {w + (y + z)|w ∈ SNoL x}.
Set Lxyz2 to be the term {x + w|w ∈ SNoL (y + z)}.
Set Rxyz1 to be the term {w + (y + z)|w ∈ SNoR x}.
Set Rxyz2 to be the term {x + w|w ∈ SNoR (y + z)}.
Set Lxyz3 to be the term {w + z|w ∈ SNoL (x + y)}.
Set Lxyz4 to be the term {(x + y) + w|w ∈ SNoL z}.
Set Rxyz3 to be the term {w + z|w ∈ SNoR (x + y)}.
Set Rxyz4 to be the term {(x + y) + w|w ∈ SNoR z}.
rewrite the current goal using add_SNo_eq x Hx (y + z) Lyz (from left to right).
rewrite the current goal using add_SNo_eq (x + y) Lxy z Hz (from left to right).
We will prove (SNoCut (Lxyz1Lxyz2) (Rxyz1Rxyz2)) = (SNoCut (Lxyz3Lxyz4) (Rxyz3Rxyz4)).
We prove the intermediate claim Lxyz12: SNoCutP (Lxyz1Lxyz2) (Rxyz1Rxyz2).
An exact proof term for the current goal is add_SNo_SNoCutP x (y + z) Hx Lyz.
We prove the intermediate claim Lxyz34: SNoCutP (Lxyz3Lxyz4) (Rxyz3Rxyz4).
An exact proof term for the current goal is add_SNo_SNoCutP (x + y) z Lxy Hz.
Apply SNoCut_ext to the current goal.
An exact proof term for the current goal is Lxyz12.
An exact proof term for the current goal is Lxyz34.
We will prove ∀w ∈ Lxyz1Lxyz2, w < SNoCut (Lxyz3Lxyz4) (Rxyz3Rxyz4).
rewrite the current goal using add_SNo_eq (x + y) Lxy z Hz (from right to left).
We will prove ∀w ∈ Lxyz1Lxyz2, w < (x + y) + z.
Let w be given.
Assume Hw: wLxyz1Lxyz2.
Apply binunionE Lxyz1 Lxyz2 w Hw to the current goal.
Assume Hw: wLxyz1.
Apply ReplE_impred (SNoL x) (λw ⇒ w + (y + z)) w Hw to the current goal.
Let u be given.
Assume Hu: uSNoL x.
Assume Hwu: w = u + (y + z).
Apply SNoL_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev x.
Assume Hu3: u < x.
We will prove w < (x + y) + z.
rewrite the current goal using Hwu (from left to right).
We will prove u + (y + z) < (x + y) + z.
We prove the intermediate claim IH1u: u + (y + z) = (u + y) + z.
An exact proof term for the current goal is IH1 u (SNoL_SNoS_ x u Hu).
rewrite the current goal using IH1u (from left to right).
We will prove (u + y) + z < (x + y) + z.
Apply add_SNo_Lt1 (u + y) z (x + y) (SNo_add_SNo u y Hu1 Hy) Hz Lxy to the current goal.
We will prove u + y < x + y.
Apply add_SNo_Lt1 u y x Hu1 Hy Hx to the current goal.
We will prove u < x.
An exact proof term for the current goal is Hu3.
Assume Hw: wLxyz2.
Apply ReplE_impred (SNoL (y + z)) (λw ⇒ x + w) w Hw to the current goal.
Let u be given.
Assume Hu: uSNoL (y + z).
Assume Hwu: w = x + u.
Apply SNoL_E (y + z) Lyz u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev (y + z).
Assume Hu3: u < y + z.
rewrite the current goal using Hwu (from left to right).
We will prove x + u < (x + y) + z.
Apply add_SNo_SNoL_interpolate y z Hy Hz u Hu to the current goal.
Assume H1: ∃v ∈ SNoL y, uv + z.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: vSNoL y.
Assume H2: uv + z.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: v < y.
We prove the intermediate claim IH2v: x + (v + z) = (x + v) + z.
An exact proof term for the current goal is IH2 v (SNoL_SNoS_ y v Hv).
We will prove x + u < (x + y) + z.
Apply SNoLeLt_tra (x + u) (x + (v + z)) ((x + y) + z) (SNo_add_SNo x u Hx Hu1) (SNo_add_SNo x (v + z) Hx (SNo_add_SNo v z Hv1 Hz)) (SNo_add_SNo (x + y) z Lxy Hz) to the current goal.
We will prove x + ux + (v + z).
Apply add_SNo_Le2 x u (v + z) Hx Hu1 (SNo_add_SNo v z Hv1 Hz) to the current goal.
We will prove uv + z.
An exact proof term for the current goal is H2.
We will prove x + (v + z) < (x + y) + z.
rewrite the current goal using IH2v (from left to right).
We will prove (x + v) + z < (x + y) + z.
Apply add_SNo_Lt1 (x + v) z (x + y) (SNo_add_SNo x v Hx Hv1) Hz Lxy to the current goal.
We will prove x + v < x + y.
Apply add_SNo_Lt2 x v y Hx Hv1 Hy to the current goal.
We will prove v < y.
An exact proof term for the current goal is Hv3.
Assume H1: ∃v ∈ SNoL z, uy + v.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: vSNoL z.
Assume H2: uy + v.
Apply SNoL_E z Hz v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev z.
Assume Hv3: v < z.
We prove the intermediate claim IH3v: x + (y + v) = (x + y) + v.
An exact proof term for the current goal is IH3 v (SNoL_SNoS_ z v Hv).
We will prove x + u < (x + y) + z.
Apply SNoLeLt_tra (x + u) (x + (y + v)) ((x + y) + z) (SNo_add_SNo x u Hx Hu1) (SNo_add_SNo x (y + v) Hx (SNo_add_SNo y v Hy Hv1)) (SNo_add_SNo (x + y) z Lxy Hz) to the current goal.
We will prove x + ux + (y + v).
Apply add_SNo_Le2 x u (y + v) Hx Hu1 (SNo_add_SNo y v Hy Hv1) to the current goal.
We will prove uy + v.
An exact proof term for the current goal is H2.
We will prove x + (y + v) < (x + y) + z.
rewrite the current goal using IH3v (from left to right).
We will prove (x + y) + v < (x + y) + z.
Apply add_SNo_Lt2 (x + y) v z Lxy Hv1 Hz to the current goal.
We will prove v < z.
An exact proof term for the current goal is Hv3.
We will prove ∀v ∈ Rxyz1Rxyz2, SNoCut (Lxyz3Lxyz4) (Rxyz3Rxyz4) < v.
rewrite the current goal using add_SNo_eq (x + y) Lxy z Hz (from right to left).
We will prove ∀v ∈ Rxyz1Rxyz2, (x + y) + z < v.
Let v be given.
Assume Hv: vRxyz1Rxyz2.
Apply binunionE Rxyz1 Rxyz2 v Hv to the current goal.
Assume Hv: vRxyz1.
Apply ReplE_impred (SNoR x) (λw ⇒ w + (y + z)) v Hv to the current goal.
Let u be given.
Assume Hu: uSNoR x.
Assume Hvu: v = u + (y + z).
Apply SNoR_E x Hx u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev x.
Assume Hu3: x < u.
We will prove (x + y) + z < v.
rewrite the current goal using Hvu (from left to right).
We will prove (x + y) + z < u + (y + z).
We prove the intermediate claim IH1u: u + (y + z) = (u + y) + z.
An exact proof term for the current goal is IH1 u (SNoR_SNoS_ x u Hu).
rewrite the current goal using IH1u (from left to right).
We will prove (x + y) + z < (u + y) + z.
Apply add_SNo_Lt1 (x + y) z (u + y) Lxy Hz (SNo_add_SNo u y Hu1 Hy) to the current goal.
We will prove x + y < u + y.
Apply add_SNo_Lt1 x y u Hx Hy Hu1 to the current goal.
We will prove x < u.
An exact proof term for the current goal is Hu3.
Assume Hv: vRxyz2.
Apply ReplE_impred (SNoR (y + z)) (λw ⇒ x + w) v Hv to the current goal.
Let u be given.
Assume Hu: uSNoR (y + z).
Assume Hvu: v = x + u.
Apply SNoR_E (y + z) Lyz u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev (y + z).
Assume Hu3: y + z < u.
rewrite the current goal using Hvu (from left to right).
We will prove (x + y) + z < x + u.
Apply add_SNo_SNoR_interpolate y z Hy Hz u Hu to the current goal.
Assume H1: ∃v ∈ SNoR y, v + zu.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: vSNoR y.
Assume H2: v + zu.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: y < v.
We prove the intermediate claim IH2v: x + (v + z) = (x + v) + z.
An exact proof term for the current goal is IH2 v (SNoR_SNoS_ y v Hv).
We will prove (x + y) + z < x + u.
Apply SNoLtLe_tra ((x + y) + z) (x + (v + z)) (x + u) (SNo_add_SNo (x + y) z Lxy Hz) (SNo_add_SNo x (v + z) Hx (SNo_add_SNo v z Hv1 Hz)) (SNo_add_SNo x u Hx Hu1) to the current goal.
We will prove (x + y) + z < x + (v + z).
rewrite the current goal using IH2v (from left to right).
We will prove (x + y) + z < (x + v) + z.
Apply add_SNo_Lt1 (x + y) z (x + v) Lxy Hz (SNo_add_SNo x v Hx Hv1) to the current goal.
We will prove x + y < x + v.
Apply add_SNo_Lt2 x y v Hx Hy Hv1 to the current goal.
We will prove y < v.
An exact proof term for the current goal is Hv3.
We will prove x + (v + z)x + u.
Apply add_SNo_Le2 x (v + z) u Hx (SNo_add_SNo v z Hv1 Hz) Hu1 to the current goal.
We will prove v + zu.
An exact proof term for the current goal is H2.
Assume H1: ∃v ∈ SNoR z, y + vu.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: vSNoR z.
Assume H2: y + vu.
Apply SNoR_E z Hz v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev z.
Assume Hv3: z < v.
We prove the intermediate claim IH3v: x + (y + v) = (x + y) + v.
An exact proof term for the current goal is IH3 v (SNoR_SNoS_ z v Hv).
We will prove (x + y) + z < x + u.
Apply SNoLtLe_tra ((x + y) + z) (x + (y + v)) (x + u) (SNo_add_SNo (x + y) z Lxy Hz) (SNo_add_SNo x (y + v) Hx (SNo_add_SNo y v Hy Hv1)) (SNo_add_SNo x u Hx Hu1) to the current goal.
We will prove (x + y) + z < x + (y + v).
rewrite the current goal using IH3v (from left to right).
We will prove (x + y) + z < (x + y) + v.
Apply add_SNo_Lt2 (x + y) z v Lxy Hz Hv1 to the current goal.
We will prove z < v.
An exact proof term for the current goal is Hv3.
We will prove x + (y + v)x + u.
Apply add_SNo_Le2 x (y + v) u Hx (SNo_add_SNo y v Hy Hv1) Hu1 to the current goal.
We will prove y + vu.
An exact proof term for the current goal is H2.
We will prove ∀w ∈ Lxyz3Lxyz4, w < SNoCut (Lxyz1Lxyz2) (Rxyz1Rxyz2).
rewrite the current goal using add_SNo_eq x Hx (y + z) Lyz (from right to left).
We will prove ∀w ∈ Lxyz3Lxyz4, w < x + (y + z).
Let w be given.
Assume Hw: wLxyz3Lxyz4.
Apply binunionE Lxyz3 Lxyz4 w Hw to the current goal.
Assume Hw: wLxyz3.
Apply ReplE_impred (SNoL (x + y)) (λw ⇒ w + z) w Hw to the current goal.
Let u be given.
Assume Hu: uSNoL (x + y).
Assume Hwu: w = u + z.
Apply SNoL_E (x + y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev (x + y).
Assume Hu3: u < x + y.
rewrite the current goal using Hwu (from left to right).
We will prove u + z < x + (y + z).
Apply add_SNo_SNoL_interpolate x y Hx Hy u Hu to the current goal.
Assume H1: ∃v ∈ SNoL x, uv + y.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: vSNoL x.
Assume H2: uv + y.
Apply SNoL_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: v < x.
We prove the intermediate claim IH1v: v + (y + z) = (v + y) + z.
An exact proof term for the current goal is IH1 v (SNoL_SNoS_ x v Hv).
We will prove u + z < x + (y + z).
Apply SNoLeLt_tra (u + z) ((v + y) + z) (x + (y + z)) (SNo_add_SNo u z Hu1 Hz) (SNo_add_SNo (v + y) z (SNo_add_SNo v y Hv1 Hy) Hz) (SNo_add_SNo x (y + z) Hx Lyz) to the current goal.
We will prove u + z(v + y) + z.
Apply add_SNo_Le1 u z (v + y) Hu1 Hz (SNo_add_SNo v y Hv1 Hy) to the current goal.
We will prove uv + y.
An exact proof term for the current goal is H2.
We will prove (v + y) + z < x + (y + z).
rewrite the current goal using IH1v (from right to left).
We will prove v + (y + z) < x + (y + z).
Apply add_SNo_Lt1 v (y + z) x Hv1 Lyz Hx to the current goal.
We will prove v < x.
An exact proof term for the current goal is Hv3.
Assume H1: ∃v ∈ SNoL y, ux + v.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: vSNoL y.
Assume H2: ux + v.
Apply SNoL_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: v < y.
We prove the intermediate claim IH2v: x + (v + z) = (x + v) + z.
An exact proof term for the current goal is IH2 v (SNoL_SNoS_ y v Hv).
We will prove u + z < x + (y + z).
Apply SNoLeLt_tra (u + z) ((x + v) + z) (x + (y + z)) (SNo_add_SNo u z Hu1 Hz) (SNo_add_SNo (x + v) z (SNo_add_SNo x v Hx Hv1) Hz) (SNo_add_SNo x (y + z) Hx Lyz) to the current goal.
We will prove u + z(x + v) + z.
Apply add_SNo_Le1 u z (x + v) Hu1 Hz (SNo_add_SNo x v Hx Hv1) to the current goal.
We will prove ux + v.
An exact proof term for the current goal is H2.
We will prove (x + v) + z < x + (y + z).
rewrite the current goal using IH2v (from right to left).
We will prove x + (v + z) < x + (y + z).
Apply add_SNo_Lt2 x (v + z) (y + z) Hx (SNo_add_SNo v z Hv1 Hz) Lyz to the current goal.
We will prove v + z < y + z.
Apply add_SNo_Lt1 v z y Hv1 Hz Hy to the current goal.
We will prove v < y.
An exact proof term for the current goal is Hv3.
Assume Hw: wLxyz4.
Apply ReplE_impred (SNoL z) (λw ⇒ (x + y) + w) w Hw to the current goal.
Let u be given.
Assume Hu: uSNoL z.
Assume Hwu: w = (x + y) + u.
Apply SNoL_E z Hz u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev z.
Assume Hu3: u < z.
We will prove w < x + (y + z).
rewrite the current goal using Hwu (from left to right).
We will prove (x + y) + u < x + (y + z).
We prove the intermediate claim IH3u: x + (y + u) = (x + y) + u.
An exact proof term for the current goal is IH3 u (SNoL_SNoS_ z u Hu).
rewrite the current goal using IH3u (from right to left).
We will prove x + (y + u) < x + (y + z).
Apply add_SNo_Lt2 x (y + u) (y + z) Hx (SNo_add_SNo y u Hy Hu1) Lyz to the current goal.
We will prove y + u < y + z.
Apply add_SNo_Lt2 y u z Hy Hu1 Hz to the current goal.
We will prove u < z.
An exact proof term for the current goal is Hu3.
We will prove ∀v ∈ Rxyz3Rxyz4, SNoCut (Lxyz1Lxyz2) (Rxyz1Rxyz2) < v.
rewrite the current goal using add_SNo_eq x Hx (y + z) Lyz (from right to left).
We will prove ∀v ∈ Rxyz3Rxyz4, x + (y + z) < v.
Let v be given.
Assume Hv: vRxyz3Rxyz4.
Apply binunionE Rxyz3 Rxyz4 v Hv to the current goal.
Assume Hv: vRxyz3.
Apply ReplE_impred (SNoR (x + y)) (λw ⇒ w + z) v Hv to the current goal.
Let u be given.
Assume Hu: uSNoR (x + y).
Assume Hvu: v = u + z.
Apply SNoR_E (x + y) Lxy u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev (x + y).
Assume Hu3: x + y < u.
rewrite the current goal using Hvu (from left to right).
We will prove x + (y + z) < u + z.
Apply add_SNo_SNoR_interpolate x y Hx Hy u Hu to the current goal.
Assume H1: ∃v ∈ SNoR x, v + yu.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: vSNoR x.
Assume H2: v + yu.
Apply SNoR_E x Hx v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev x.
Assume Hv3: x < v.
We prove the intermediate claim IH1v: v + (y + z) = (v + y) + z.
An exact proof term for the current goal is IH1 v (SNoR_SNoS_ x v Hv).
We will prove x + (y + z) < u + z.
Apply SNoLtLe_tra (x + (y + z)) ((v + y) + z) (u + z) (SNo_add_SNo x (y + z) Hx Lyz) (SNo_add_SNo (v + y) z (SNo_add_SNo v y Hv1 Hy) Hz) (SNo_add_SNo u z Hu1 Hz) to the current goal.
We will prove x + (y + z) < (v + y) + z.
rewrite the current goal using IH1v (from right to left).
We will prove x + (y + z) < v + (y + z).
Apply add_SNo_Lt1 x (y + z) v Hx Lyz Hv1 to the current goal.
We will prove x < v.
An exact proof term for the current goal is Hv3.
We will prove (v + y) + zu + z.
Apply add_SNo_Le1 (v + y) z u (SNo_add_SNo v y Hv1 Hy) Hz Hu1 to the current goal.
We will prove v + yu.
An exact proof term for the current goal is H2.
Assume H1: ∃v ∈ SNoR y, x + vu.
Apply H1 to the current goal.
Let v be given.
Assume H2.
Apply H2 to the current goal.
Assume Hv: vSNoR y.
Assume H2: x + vu.
Apply SNoR_E y Hy v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev vSNoLev y.
Assume Hv3: y < v.
We prove the intermediate claim IH2v: x + (v + z) = (x + v) + z.
An exact proof term for the current goal is IH2 v (SNoR_SNoS_ y v Hv).
We will prove x + (y + z) < u + z.
Apply SNoLtLe_tra (x + (y + z)) ((x + v) + z) (u + z) (SNo_add_SNo x (y + z) Hx Lyz) (SNo_add_SNo (x + v) z (SNo_add_SNo x v Hx Hv1) Hz) (SNo_add_SNo u z Hu1 Hz) to the current goal.
We will prove x + (y + z) < (x + v) + z.
rewrite the current goal using IH2v (from right to left).
We will prove x + (y + z) < x + (v + z).
Apply add_SNo_Lt2 x (y + z) (v + z) Hx Lyz (SNo_add_SNo v z Hv1 Hz) to the current goal.
We will prove y + z < v + z.
Apply add_SNo_Lt1 y z v Hy Hz Hv1 to the current goal.
We will prove y < v.
An exact proof term for the current goal is Hv3.
We will prove (x + v) + zu + z.
Apply add_SNo_Le1 (x + v) z u (SNo_add_SNo x v Hx Hv1) Hz Hu1 to the current goal.
We will prove x + vu.
An exact proof term for the current goal is H2.
Assume Hv: vRxyz4.
Apply ReplE_impred (SNoR z) (λw ⇒ (x + y) + w) v Hv to the current goal.
Let u be given.
Assume Hu: uSNoR z.
Assume Hvu: v = (x + y) + u.
Apply SNoR_E z Hz u Hu to the current goal.
Assume Hu1: SNo u.
Assume Hu2: SNoLev uSNoLev z.
Assume Hu3: z < u.
We will prove x + (y + z) < v.
rewrite the current goal using Hvu (from left to right).
We will prove x + (y + z) < (x + y) + u.
We prove the intermediate claim IH3u: x + (y + u) = (x + y) + u.
An exact proof term for the current goal is IH3 u (SNoR_SNoS_ z u Hu).
rewrite the current goal using IH3u (from right to left).
We will prove x + (y + z) < x + (y + u).
Apply add_SNo_Lt2 x (y + z) (y + u) Hx Lyz (SNo_add_SNo y u Hy Hu1) to the current goal.
We will prove y + z < y + u.
Apply add_SNo_Lt2 y z u Hy Hz Hu1 to the current goal.
We will prove z < u.
An exact proof term for the current goal is Hu3.
Theorem. (add_SNo_cancel_L) The following is provable:
∀x y z, SNo xSNo ySNo zx + y = x + zy = z
Proof:
Let x, y and z be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
Assume Hz: SNo z.
Assume Hxyz: x + y = x + z.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We prove the intermediate claim L1: - x + (x + y) = y.
rewrite the current goal using add_SNo_assoc (- x) x y Lmx Hx Hy (from left to right).
We will prove (- x + x) + y = y.
rewrite the current goal using add_SNo_minus_SNo_linv x Hx (from left to right).
We will prove 0 + y = y.
An exact proof term for the current goal is add_SNo_0L y Hy.
We prove the intermediate claim L2: - x + (x + z) = z.
rewrite the current goal using add_SNo_assoc (- x) x z Lmx Hx Hz (from left to right).
We will prove (- x + x) + z = z.
rewrite the current goal using add_SNo_minus_SNo_linv x Hx (from left to right).
We will prove 0 + z = z.
An exact proof term for the current goal is add_SNo_0L z Hz.
rewrite the current goal using L1 (from right to left).
rewrite the current goal using Hxyz (from left to right).
An exact proof term for the current goal is L2.
Theorem. (minus_SNo_0) The following is provable:
- 0 = 0
Proof:
Apply add_SNo_cancel_L 0 (- 0) 0 SNo_0 (SNo_minus_SNo 0 SNo_0) SNo_0 to the current goal.
We will prove 0 + - 0 = 0 + 0.
Use transitivity with and 0.
An exact proof term for the current goal is add_SNo_minus_SNo_rinv 0 SNo_0.
Use symmetry.
An exact proof term for the current goal is add_SNo_0L 0 SNo_0.
Theorem. (minus_add_SNo_distr) The following is provable:
∀x y, SNo xSNo y- (x + y) = (- x) + (- y)
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim Lmx: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x Hx.
We prove the intermediate claim Lmy: SNo (- y).
An exact proof term for the current goal is SNo_minus_SNo y Hy.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim L1: (x + y) + - (x + y) = (x + y) + ((- x) + (- y)).
rewrite the current goal using add_SNo_minus_SNo_rinv (x + y) Lxy (from left to right).
We will prove 0 = (x + y) + ((- x) + (- y)).
rewrite the current goal using add_SNo_assoc (x + y) (- x) (- y) Lxy Lmx Lmy (from left to right).
We will prove 0 = ((x + y) + (- x)) + (- y).
rewrite the current goal using add_SNo_com x y Hx Hy (from left to right).
We will prove 0 = ((y + x) + - x) + - y.
rewrite the current goal using add_SNo_assoc y x (- x) Hy Hx Lmx (from right to left).
We will prove 0 = (y + (x + - x)) + - y.
rewrite the current goal using add_SNo_minus_SNo_rinv x Hx (from left to right).
We will prove 0 = (y + 0) + - y.
rewrite the current goal using add_SNo_0R y Hy (from left to right).
We will prove 0 = y + - y.
rewrite the current goal using add_SNo_minus_SNo_rinv y Hy (from left to right).
We will prove 0 = 0.
Use reflexivity.
An exact proof term for the current goal is add_SNo_cancel_L (x + y) (- (x + y)) ((- x) + (- y)) Lxy (SNo_minus_SNo (x + y) Lxy) (SNo_add_SNo (- x) (- y) Lmx Lmy) L1.
Theorem. (minus_add_SNo_distr_3) The following is provable:
∀x y z, SNo xSNo ySNo z- (x + y + z) = - x + - y + - z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
Use transitivity with and - x + - (y + z).
An exact proof term for the current goal is minus_add_SNo_distr x (y + z) Hx (SNo_add_SNo y z Hy Hz).
Use f_equal.
We will prove - (y + z) = - y + - z.
An exact proof term for the current goal is minus_add_SNo_distr y z Hy Hz.
Theorem. (add_SNo_Lev_bd) The following is provable:
∀x y, SNo xSNo ySNoLev (x + y)SNoLev x + SNoLev y
Proof:
Set P to be the term λx y ⇒ SNoLev (x + y)SNoLev x + SNoLev y of type setsetprop.
Apply SNoLev_ind2 to the current goal.
Let x and y be given.
Assume Hx: SNo x.
Assume Hy: SNo y.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim LLxLy: ordinal (SNoLev x + SNoLev y).
Apply add_SNo_ordinal_ordinal to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
Assume IH1: ∀w ∈ SNoS_ (SNoLev x), P w y.
Assume IH2: ∀z ∈ SNoS_ (SNoLev y), P x z.
Assume IH3: ∀w ∈ SNoS_ (SNoLev x), ∀z ∈ SNoS_ (SNoLev y), P w z.
We will prove SNoLev (x + y)SNoLev x + SNoLev y.
Set Lxy1 to be the term {w + y|w ∈ SNoL x}.
Set Lxy2 to be the term {x + w|w ∈ SNoL y}.
Set Rxy1 to be the term {z + y|z ∈ SNoR x}.
Set Rxy2 to be the term {x + z|z ∈ SNoR y}.
rewrite the current goal using add_SNo_eq x Hx y Hy (from left to right).
We will prove SNoLev (SNoCut (Lxy1Lxy2) (Rxy1Rxy2))SNoLev x + SNoLev y.
We prove the intermediate claim L1: SNoCutP (Lxy1Lxy2) (Rxy1Rxy2).
An exact proof term for the current goal is add_SNo_SNoCutP x y Hx Hy.
Apply SNoCutP_SNoCut_impred (Lxy1Lxy2) (Rxy1Rxy2) L1 to the current goal.
Assume H1: SNo (SNoCut (Lxy1Lxy2) (Rxy1Rxy2)).
Assume H2: SNoLev (SNoCut (Lxy1Lxy2) (Rxy1Rxy2))ordsucc ((x ∈ (Lxy1Lxy2)ordsucc (SNoLev x))(y ∈ (Rxy1Rxy2)ordsucc (SNoLev y))).
Assume _ _ _.
We prove the intermediate claim Lxy1E: ∀u ∈ Lxy1, ∀p : setprop, (∀w ∈ SNoS_ (SNoLev x), u = w + ySNo wSNoLev wSNoLev xw < xp (w + y))p u.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (SNoL x) (λw ⇒ w + y) u Hu to the current goal.
Let w be given.
Assume Hw: wSNoL x.
Assume Huw: u = w + y.
rewrite the current goal using Huw (from left to right).
Apply SNoL_E x Hx w Hw to the current goal.
We prove the intermediate claim Lw: wSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoL_SNoS_ x w Hw.
An exact proof term for the current goal is Hp w Lw Huw.
We prove the intermediate claim Lxy2E: ∀u ∈ Lxy2, ∀p : setprop, (∀w ∈ SNoS_ (SNoLev y), u = x + wSNo wSNoLev wSNoLev yw < yp (x + w))p u.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (SNoL y) (λw ⇒ x + w) u Hu to the current goal.
Let w be given.
Assume Hw: wSNoL y.
Assume Huw: u = x + w.
rewrite the current goal using Huw (from left to right).
Apply SNoL_E y Hy w Hw to the current goal.
We prove the intermediate claim Lw: wSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoL_SNoS_ y w Hw.
An exact proof term for the current goal is Hp w Lw Huw.
We prove the intermediate claim Rxy1E: ∀u ∈ Rxy1, ∀p : setprop, (∀w ∈ SNoS_ (SNoLev x), u = w + ySNo wSNoLev wSNoLev xx < wp (w + y))p u.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (SNoR x) (λw ⇒ w + y) u Hu to the current goal.
Let w be given.
Assume Hw: wSNoR x.
Assume Huw: u = w + y.
rewrite the current goal using Huw (from left to right).
Apply SNoR_E x Hx w Hw to the current goal.
We prove the intermediate claim Lw: wSNoS_ (SNoLev x).
An exact proof term for the current goal is SNoR_SNoS_ x w Hw.
An exact proof term for the current goal is Hp w Lw Huw.
We prove the intermediate claim Rxy2E: ∀u ∈ Rxy2, ∀p : setprop, (∀w ∈ SNoS_ (SNoLev y), u = x + wSNo wSNoLev wSNoLev yy < wp (x + w))p u.
Let u be given.
Assume Hu.
Let p be given.
Assume Hp.
Apply ReplE_impred (SNoR y) (λw ⇒ x + w) u Hu to the current goal.
Let w be given.
Assume Hw: wSNoR y.
Assume Huw: u = x + w.
rewrite the current goal using Huw (from left to right).
Apply SNoR_E y Hy w Hw to the current goal.
We prove the intermediate claim Lw: wSNoS_ (SNoLev y).
An exact proof term for the current goal is SNoR_SNoS_ y w Hw.
An exact proof term for the current goal is Hp w Lw Huw.
We prove the intermediate claim Lxy1E2: ∀u ∈ Lxy1, SNo u.
Let u be given.
Assume Hu.
Apply Lxy1E u Hu to the current goal.
Let w be given.
Assume Hw1 Hw2 Hw3 Hw4 Hw5.
We will prove SNo (w + y).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hy.
We prove the intermediate claim Lxy2E2: ∀u ∈ Lxy2, SNo u.
Let u be given.
Assume Hu.
Apply Lxy2E u Hu to the current goal.
Let w be given.
Assume Hw1 Hw2 Hw3 Hw4 Hw5.
We will prove SNo (x + w).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw3.
We prove the intermediate claim Rxy1E2: ∀u ∈ Rxy1, SNo u.
Let u be given.
Assume Hu.
Apply Rxy1E u Hu to the current goal.
Let w be given.
Assume Hw1 Hw2 Hw3 Hw4 Hw5.
We will prove SNo (w + y).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hy.
We prove the intermediate claim Rxy2E2: ∀u ∈ Rxy2, SNo u.
Let u be given.
Assume Hu.
Apply Rxy2E u Hu to the current goal.
Let w be given.
Assume Hw1 Hw2 Hw3 Hw4 Hw5.
We will prove SNo (x + w).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw3.
We prove the intermediate claim L2: ordinal ((u ∈ (Lxy1Lxy2)ordsucc (SNoLev u))(u ∈ (Rxy1Rxy2)ordsucc (SNoLev u))).
Apply ordinal_binunion to the current goal.
Apply ordinal_famunion (Lxy1Lxy2) (λu ⇒ ordsucc (SNoLev u)) to the current goal.
Let u be given.
Assume Hu: uLxy1Lxy2.
We will prove ordinal (ordsucc (SNoLev u)).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
We will prove SNo u.
Apply binunionE Lxy1 Lxy2 u Hu to the current goal.
Assume Hu.
An exact proof term for the current goal is Lxy1E2 u Hu.
Assume Hu.
An exact proof term for the current goal is Lxy2E2 u Hu.
Apply ordinal_famunion (Rxy1Rxy2) (λu ⇒ ordsucc (SNoLev u)) to the current goal.
Let u be given.
Assume Hu: uRxy1Rxy2.
We will prove ordinal (ordsucc (SNoLev u)).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
We will prove SNo u.
Apply binunionE Rxy1 Rxy2 u Hu to the current goal.
Assume Hu.
An exact proof term for the current goal is Rxy1E2 u Hu.
Assume Hu.
An exact proof term for the current goal is Rxy2E2 u Hu.
We prove the intermediate claim L3: SNoLev (SNoCut (Lxy1Lxy2) (Rxy1Rxy2))(u ∈ (Lxy1Lxy2)ordsucc (SNoLev u))(u ∈ (Rxy1Rxy2)ordsucc (SNoLev u)).
Apply TransSet_In_ordsucc_Subq to the current goal.
We will prove TransSet ((u ∈ (Lxy1Lxy2)ordsucc (SNoLev u))(u ∈ (Rxy1Rxy2)ordsucc (SNoLev u))).
Apply L2 to the current goal.
Assume H _.
An exact proof term for the current goal is H.
An exact proof term for the current goal is H2.
We prove the intermediate claim L4: ((u ∈ (Lxy1Lxy2)ordsucc (SNoLev u))(u ∈ (Rxy1Rxy2)ordsucc (SNoLev u)))SNoLev x + SNoLev y.
Apply binunion_Subq_min to the current goal.
We will prove (u ∈ (Lxy1Lxy2)ordsucc (SNoLev u))SNoLev x + SNoLev y.
Let v be given.
Assume Hv: v(u ∈ (Lxy1Lxy2)ordsucc (SNoLev u)).
Apply famunionE_impred (Lxy1Lxy2) (λu ⇒ ordsucc (SNoLev u)) v Hv to the current goal.
Let u be given.
Assume Hu: uLxy1Lxy2.
Apply binunionE Lxy1 Lxy2 u Hu to the current goal.
Assume Hu: uLxy1.
Apply Lxy1E u Hu to the current goal.
Let w be given.
Assume Hw1: wSNoS_ (SNoLev x).
Assume Hw2: u = w + y.
Assume Hw3: SNo w.
Assume Hw4: SNoLev wSNoLev x.
Assume Hw5: w < x.
Assume Hw6: vordsucc (SNoLev (w + y)).
We will prove vSNoLev x + SNoLev y.
We prove the intermediate claim Lv: ordinal v.
Apply ordinal_Hered (ordsucc (SNoLev (w + y))) to the current goal.
We will prove ordinal (ordsucc (SNoLev (w + y))).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw6.
Apply ordinal_In_Or_Subq v (SNoLev x + SNoLev y) Lv LLxLy to the current goal.
Assume H1: vSNoLev x + SNoLev y.
An exact proof term for the current goal is H1.
Assume H1: SNoLev x + SNoLev yv.
We will prove False.
We prove the intermediate claim LIHw: SNoLev (w + y)SNoLev w + SNoLev y.
Apply IH1 to the current goal.
We will prove wSNoS_ (SNoLev x).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim L4a: SNoLev w + SNoLev ySNoLev x + SNoLev y.
Apply add_SNo_ordinal_InL to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw4.
We prove the intermediate claim L4b: SNoLev w + SNoLev ySNoLev x + SNoLev y.
Apply LLxLy to the current goal.
Assume H _.
An exact proof term for the current goal is H (SNoLev w + SNoLev y) L4a.
We prove the intermediate claim L4c: vSNoLev (w + y).
Apply ordinal_In_Or_Subq (SNoLev (w + y)) v (SNoLev_ordinal (w + y) (SNo_add_SNo w y Hw3 Hy)) Lv to the current goal.
Assume H2: SNoLev (w + y)v.
We will prove False.
Apply ordsuccE (SNoLev (w + y)) v Hw6 to the current goal.
Assume H3: vSNoLev (w + y).
An exact proof term for the current goal is In_no2cycle (SNoLev (w + y)) v H2 H3.
Assume H3: v = SNoLev (w + y).
Apply In_irref v to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is H2.
Assume H2: vSNoLev (w + y).
An exact proof term for the current goal is H2.
Apply In_irref (SNoLev w + SNoLev y) to the current goal.
We will prove (SNoLev w + SNoLev y)(SNoLev w + SNoLev y).
Apply LIHw to the current goal.
We will prove (SNoLev w + SNoLev y)SNoLev (w + y).
Apply L4c to the current goal.
We will prove (SNoLev w + SNoLev y)v.
Apply H1 to the current goal.
We will prove (SNoLev w + SNoLev y)SNoLev x + SNoLev y.
An exact proof term for the current goal is L4a.
Assume Hu: uLxy2.
Apply Lxy2E u Hu to the current goal.
Let w be given.
Assume Hw1: wSNoS_ (SNoLev y).
Assume Hw2: u = x + w.
Assume Hw3: SNo w.
Assume Hw4: SNoLev wSNoLev y.
Assume Hw5: w < y.
Assume Hw6: vordsucc (SNoLev (x + w)).
We will prove vSNoLev x + SNoLev y.
We prove the intermediate claim Lv: ordinal v.
Apply ordinal_Hered (ordsucc (SNoLev (x + w))) to the current goal.
We will prove ordinal (ordsucc (SNoLev (x + w))).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hw6.
Apply ordinal_In_Or_Subq v (SNoLev x + SNoLev y) Lv LLxLy to the current goal.
Assume H1: vSNoLev x + SNoLev y.
An exact proof term for the current goal is H1.
Assume H1: SNoLev x + SNoLev yv.
We will prove False.
We prove the intermediate claim LIHw: SNoLev (x + w)SNoLev x + SNoLev w.
Apply IH2 to the current goal.
We will prove wSNoS_ (SNoLev y).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim L4a: SNoLev x + SNoLev wSNoLev x + SNoLev y.
Apply add_SNo_ordinal_InR to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw4.
We prove the intermediate claim L4b: SNoLev x + SNoLev wSNoLev x + SNoLev y.
Apply LLxLy to the current goal.
Assume H _.
An exact proof term for the current goal is H (SNoLev x + SNoLev w) L4a.
We prove the intermediate claim L4c: vSNoLev (x + w).
Apply ordinal_In_Or_Subq (SNoLev (x + w)) v (SNoLev_ordinal (x + w) (SNo_add_SNo x w Hx Hw3)) Lv to the current goal.
Assume H2: SNoLev (x + w)v.
We will prove False.
Apply ordsuccE (SNoLev (x + w)) v Hw6 to the current goal.
Assume H3: vSNoLev (x + w).
An exact proof term for the current goal is In_no2cycle (SNoLev (x + w)) v H2 H3.
Assume H3: v = SNoLev (x + w).
Apply In_irref v to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is H2.
Assume H2: vSNoLev (x + w).
An exact proof term for the current goal is H2.
Apply In_irref (SNoLev x + SNoLev w) to the current goal.
We will prove (SNoLev x + SNoLev w)(SNoLev x + SNoLev w).
Apply LIHw to the current goal.
We will prove (SNoLev x + SNoLev w)SNoLev (x + w).
Apply L4c to the current goal.
We will prove (SNoLev x + SNoLev w)v.
Apply H1 to the current goal.
We will prove (SNoLev x + SNoLev w)SNoLev x + SNoLev y.
An exact proof term for the current goal is L4a.
We will prove (u ∈ (Rxy1Rxy2)ordsucc (SNoLev u))SNoLev x + SNoLev y.
Let v be given.
Assume Hv: v(u ∈ (Rxy1Rxy2)ordsucc (SNoLev u)).
Apply famunionE_impred (Rxy1Rxy2) (λu ⇒ ordsucc (SNoLev u)) v Hv to the current goal.
Let u be given.
Assume Hu: uRxy1Rxy2.
Apply binunionE Rxy1 Rxy2 u Hu to the current goal.
Assume Hu: uRxy1.
Apply Rxy1E u Hu to the current goal.
Let w be given.
Assume Hw1: wSNoS_ (SNoLev x).
Assume Hw2: u = w + y.
Assume Hw3: SNo w.
Assume Hw4: SNoLev wSNoLev x.
Assume Hw5: x < w.
Assume Hw6: vordsucc (SNoLev (w + y)).
We will prove vSNoLev x + SNoLev y.
We prove the intermediate claim Lv: ordinal v.
Apply ordinal_Hered (ordsucc (SNoLev (w + y))) to the current goal.
We will prove ordinal (ordsucc (SNoLev (w + y))).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw6.
Apply ordinal_In_Or_Subq v (SNoLev x + SNoLev y) Lv LLxLy to the current goal.
Assume H1: vSNoLev x + SNoLev y.
An exact proof term for the current goal is H1.
Assume H1: SNoLev x + SNoLev yv.
We will prove False.
We prove the intermediate claim LIHw: SNoLev (w + y)SNoLev w + SNoLev y.
Apply IH1 to the current goal.
We will prove wSNoS_ (SNoLev x).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim L4a: SNoLev w + SNoLev ySNoLev x + SNoLev y.
Apply add_SNo_ordinal_InL to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw4.
We prove the intermediate claim L4b: SNoLev w + SNoLev ySNoLev x + SNoLev y.
Apply LLxLy to the current goal.
Assume H _.
An exact proof term for the current goal is H (SNoLev w + SNoLev y) L4a.
We prove the intermediate claim L4c: vSNoLev (w + y).
Apply ordinal_In_Or_Subq (SNoLev (w + y)) v (SNoLev_ordinal (w + y) (SNo_add_SNo w y Hw3 Hy)) Lv to the current goal.
Assume H2: SNoLev (w + y)v.
We will prove False.
Apply ordsuccE (SNoLev (w + y)) v Hw6 to the current goal.
Assume H3: vSNoLev (w + y).
An exact proof term for the current goal is In_no2cycle (SNoLev (w + y)) v H2 H3.
Assume H3: v = SNoLev (w + y).
Apply In_irref v to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is H2.
Assume H2: vSNoLev (w + y).
An exact proof term for the current goal is H2.
Apply In_irref (SNoLev w + SNoLev y) to the current goal.
We will prove (SNoLev w + SNoLev y)(SNoLev w + SNoLev y).
Apply LIHw to the current goal.
We will prove (SNoLev w + SNoLev y)SNoLev (w + y).
Apply L4c to the current goal.
We will prove (SNoLev w + SNoLev y)v.
Apply H1 to the current goal.
We will prove (SNoLev w + SNoLev y)SNoLev x + SNoLev y.
An exact proof term for the current goal is L4a.
Assume Hu: uRxy2.
Apply Rxy2E u Hu to the current goal.
Let w be given.
Assume Hw1: wSNoS_ (SNoLev y).
Assume Hw2: u = x + w.
Assume Hw3: SNo w.
Assume Hw4: SNoLev wSNoLev y.
Assume Hw5: y < w.
Assume Hw6: vordsucc (SNoLev (x + w)).
We will prove vSNoLev x + SNoLev y.
We prove the intermediate claim Lv: ordinal v.
Apply ordinal_Hered (ordsucc (SNoLev (x + w))) to the current goal.
We will prove ordinal (ordsucc (SNoLev (x + w))).
Apply ordinal_ordsucc to the current goal.
Apply SNoLev_ordinal to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hw3.
An exact proof term for the current goal is Hw6.
Apply ordinal_In_Or_Subq v (SNoLev x + SNoLev y) Lv LLxLy to the current goal.
Assume H1: vSNoLev x + SNoLev y.
An exact proof term for the current goal is H1.
Assume H1: SNoLev x + SNoLev yv.
We will prove False.
We prove the intermediate claim LIHw: SNoLev (x + w)SNoLev x + SNoLev w.
Apply IH2 to the current goal.
We will prove wSNoS_ (SNoLev y).
An exact proof term for the current goal is Hw1.
We prove the intermediate claim L4a: SNoLev x + SNoLev wSNoLev x + SNoLev y.
Apply add_SNo_ordinal_InR to the current goal.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx.
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is Hw4.
We prove the intermediate claim L4b: SNoLev x + SNoLev wSNoLev x + SNoLev y.
Apply LLxLy to the current goal.
Assume H _.
An exact proof term for the current goal is H (SNoLev x + SNoLev w) L4a.
We prove the intermediate claim L4c: vSNoLev (x + w).
Apply ordinal_In_Or_Subq (SNoLev (x + w)) v (SNoLev_ordinal (x + w) (SNo_add_SNo x w Hx Hw3)) Lv to the current goal.
Assume H2: SNoLev (x + w)v.
We will prove False.
Apply ordsuccE (SNoLev (x + w)) v Hw6 to the current goal.
Assume H3: vSNoLev (x + w).
An exact proof term for the current goal is In_no2cycle (SNoLev (x + w)) v H2 H3.
Assume H3: v = SNoLev (x + w).
Apply In_irref v to the current goal.
rewrite the current goal using H3 (from left to right) at position 1.
An exact proof term for the current goal is H2.
Assume H2: vSNoLev (x + w).
An exact proof term for the current goal is H2.
Apply In_irref (SNoLev x + SNoLev w) to the current goal.
We will prove (SNoLev x + SNoLev w)(SNoLev x + SNoLev w).
Apply LIHw to the current goal.
We will prove (SNoLev x + SNoLev w)SNoLev (x + w).
Apply L4c to the current goal.
We will prove (SNoLev x + SNoLev w)v.
Apply H1 to the current goal.
We will prove (SNoLev x + SNoLev w)SNoLev x + SNoLev y.
An exact proof term for the current goal is L4a.
An exact proof term for the current goal is Subq_tra (SNoLev (SNoCut (Lxy1Lxy2) (Rxy1Rxy2))) ((u ∈ (Lxy1Lxy2)ordsucc (SNoLev u))(u ∈ (Rxy1Rxy2)ordsucc (SNoLev u))) (SNoLev x + SNoLev y) L3 L4.
Theorem. (add_SNo_SNoS_omega) The following is provable:
∀x y ∈ SNoS_ ω, x + ySNoS_ ω
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1: SNoLev xω.
Assume Hx2: ordinal (SNoLev x).
Assume Hx3: SNo x.
Assume Hx4: SNo_ (SNoLev x) x.
Apply SNoS_E2 ω omega_ordinal y Hy to the current goal.
Assume Hy1: SNoLev yω.
Assume Hy2: ordinal (SNoLev y).
Assume Hy3: SNo y.
Assume Hy4: SNo_ (SNoLev y) y.
Apply SNoS_I ω omega_ordinal (x + y) (SNoLev (x + y)) to the current goal.
We will prove SNoLev (x + y)ω.
We prove the intermediate claim LLxy: ordinal (SNoLev (x + y)).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is SNo_add_SNo x y Hx3 Hy3.
Apply ordinal_In_Or_Subq (SNoLev (x + y)) ω LLxy omega_ordinal to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: ωSNoLev (x + y).
Apply In_irref (SNoLev x + SNoLev y) to the current goal.
We will prove (SNoLev x + SNoLev y)(SNoLev x + SNoLev y).
Apply add_SNo_Lev_bd x y Hx3 Hy3 to the current goal.
We will prove (SNoLev x + SNoLev y)SNoLev (x + y).
Apply H1 to the current goal.
We will prove (SNoLev x + SNoLev y)ω.
An exact proof term for the current goal is add_SNo_In_omega (SNoLev x) Hx1 (SNoLev y) Hy1.
We will prove SNo_ (SNoLev (x + y)) (x + y).
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is SNo_add_SNo x y Hx3 Hy3.
Theorem. (add_SNo_minus_R2) The following is provable:
∀x y, SNo xSNo y(x + y) + - y = x
Proof:
Let x and y be given.
Assume Hx Hy.
Use transitivity with x + (y + - y), and x + 0.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc x y (- y) Hx Hy (SNo_minus_SNo y Hy).
Use f_equal.
An exact proof term for the current goal is add_SNo_minus_SNo_rinv y Hy.
An exact proof term for the current goal is add_SNo_0R x Hx.
Theorem. (add_SNo_minus_R2') The following is provable:
∀x y, SNo xSNo y(x + - y) + y = x
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using minus_SNo_invol y Hy (from right to left) at position 2.
An exact proof term for the current goal is add_SNo_minus_R2 x (- y) Hx (SNo_minus_SNo y Hy).
Theorem. (add_SNo_minus_L2) The following is provable:
∀x y, SNo xSNo y- x + (x + y) = y
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using add_SNo_com (- x) (x + y) (SNo_minus_SNo x Hx) (SNo_add_SNo x y Hx Hy) (from left to right).
We will prove (x + y) + - x = y.
rewrite the current goal using add_SNo_com x y Hx Hy (from left to right).
We will prove (y + x) + - x = y.
An exact proof term for the current goal is add_SNo_minus_R2 y x Hy Hx.
Theorem. (add_SNo_minus_L2') The following is provable:
∀x y, SNo xSNo yx + (- x + y) = y
Proof:
Let x and y be given.
Assume Hx Hy.
rewrite the current goal using minus_SNo_invol x Hx (from right to left) at position 1.
An exact proof term for the current goal is add_SNo_minus_L2 (- x) y (SNo_minus_SNo x Hx) Hy.
Theorem. (add_SNo_Lt1_cancel) The following is provable:
∀x y z, SNo xSNo ySNo zx + y < z + yx < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
We will prove x < z.
We prove the intermediate claim L1: (x + y) + - y = x.
An exact proof term for the current goal is add_SNo_minus_R2 x y Hx Hy.
We prove the intermediate claim L2: (z + y) + - y = z.
An exact proof term for the current goal is add_SNo_minus_R2 z y Hz Hy.
rewrite the current goal using L1 (from right to left).
rewrite the current goal using L2 (from right to left).
We will prove (x + y) + - y < (z + y) + - y.
An exact proof term for the current goal is add_SNo_Lt1 (x + y) (- y) (z + y) (SNo_add_SNo x y Hx Hy) (SNo_minus_SNo y Hy) (SNo_add_SNo z y Hz Hy) H1.
Theorem. (add_SNo_Lt2_cancel) The following is provable:
∀x y z, SNo xSNo ySNo zx + y < x + zy < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
rewrite the current goal using add_SNo_com x y Hx Hy (from left to right).
rewrite the current goal using add_SNo_com x z Hx Hz (from left to right).
An exact proof term for the current goal is add_SNo_Lt1_cancel y x z Hy Hx Hz.
Theorem. (add_SNo_assoc_4) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx + y + z + w = (x + y + z) + w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
Use transitivity with (x + y) + z + w, and ((x + y) + z) + w.
An exact proof term for the current goal is add_SNo_assoc x y (z + w) Hx Hy (SNo_add_SNo z w Hz Hw).
An exact proof term for the current goal is add_SNo_assoc (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc x y z Hx Hy Hz.
Theorem. (add_SNo_com_3_0_1) The following is provable:
∀x y z, SNo xSNo ySNo zx + y + z = y + x + z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
rewrite the current goal using add_SNo_assoc x y z Hx Hy Hz (from left to right).
rewrite the current goal using add_SNo_assoc y x z Hy Hx Hz (from left to right).
Use f_equal.
An exact proof term for the current goal is add_SNo_com x y Hx Hy.
Theorem. (add_SNo_com_3b_1_2) The following is provable:
∀x y z, SNo xSNo ySNo z(x + y) + z = (x + z) + y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
rewrite the current goal using add_SNo_assoc x y z Hx Hy Hz (from right to left).
rewrite the current goal using add_SNo_assoc x z y Hx Hz Hy (from right to left).
Use f_equal.
An exact proof term for the current goal is add_SNo_com y z Hy Hz.
Theorem. (add_SNo_com_4_inner_mid) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y) + (z + w) = (x + z) + (y + w)
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using add_SNo_assoc (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw (from left to right).
We will prove ((x + y) + z) + w = (x + z) + (y + w).
rewrite the current goal using add_SNo_com_3b_1_2 x y z Hx Hy Hz (from left to right).
We will prove ((x + z) + y) + w = (x + z) + (y + w).
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc (x + z) y w (SNo_add_SNo x z Hx Hz) Hy Hw.
Theorem. (add_SNo_rotate_3_1) The following is provable:
∀x y z, SNo xSNo ySNo zx + y + z = z + x + y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz.
We will prove x + (y + z) = z + (x + y).
Use transitivity with x + (z + y), (x + z) + y, and (z + x) + y.
Use f_equal.
An exact proof term for the current goal is add_SNo_com y z Hy Hz.
An exact proof term for the current goal is add_SNo_assoc x z y Hx Hz Hy.
Use f_equal.
An exact proof term for the current goal is add_SNo_com x z Hx Hz.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc z x y Hz Hx Hy.
Theorem. (add_SNo_rotate_4_1) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx + y + z + w = w + x + y + z
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using add_SNo_rotate_3_1 y z w Hy Hz Hw (from left to right).
We will prove x + w + y + z = w + x + y + z.
An exact proof term for the current goal is add_SNo_com_3_0_1 x w (y + z) Hx Hw (SNo_add_SNo y z Hy Hz).
Theorem. (add_SNo_rotate_5_1) The following is provable:
∀x y z w v, SNo xSNo ySNo zSNo wSNo vx + y + z + w + v = v + x + y + z + w
Proof:
Let x, y, z, w and v be given.
Assume Hx Hy Hz Hw Hv.
rewrite the current goal using add_SNo_rotate_4_1 y z w v Hy Hz Hw Hv (from left to right).
We will prove x + v + y + z + w = v + x + y + z + w.
An exact proof term for the current goal is add_SNo_com_3_0_1 x v (y + z + w) Hx Hv (SNo_add_SNo_3 y z w Hy Hz Hw).
Theorem. (add_SNo_rotate_5_2) The following is provable:
∀x y z w v, SNo xSNo ySNo zSNo wSNo vx + y + z + w + v = w + v + x + y + z
Proof:
Let x, y, z, w and v be given.
Assume Hx Hy Hz Hw Hv.
Use transitivity with and (v + x + y + z + w).
An exact proof term for the current goal is add_SNo_rotate_5_1 x y z w v Hx Hy Hz Hw Hv.
An exact proof term for the current goal is add_SNo_rotate_5_1 v x y z w Hv Hx Hy Hz Hw.
Theorem. (add_SNo_minus_SNo_prop3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y + z) + (- z + w) = x + y + w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using add_SNo_assoc x y z Hx Hy Hz (from left to right).
We will prove ((x + y) + z) + (- z + w) = x + y + w.
rewrite the current goal using add_SNo_assoc (x + y) z (- z + w) (SNo_add_SNo x y Hx Hy) Hz (SNo_add_SNo (- z) w (SNo_minus_SNo z Hz) Hw) (from right to left).
We will prove (x + y) + (z + - z + w) = x + y + w.
rewrite the current goal using add_SNo_minus_L2' z w Hz Hw (from left to right).
We will prove (x + y) + w = x + y + w.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc x y w Hx Hy Hw.
Theorem. (add_SNo_minus_SNo_prop4) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y + z) + (w + - z) = x + y + w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using add_SNo_com w (- z) Hw (SNo_minus_SNo z Hz) (from left to right).
We will prove (x + y + z) + (- z + w) = x + y + w.
An exact proof term for the current goal is add_SNo_minus_SNo_prop3 x y z w Hx Hy Hz Hw.
Theorem. (add_SNo_minus_SNo_prop5) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y + - z) + (z + w) = x + y + w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
We will prove (x + y + - z) + (z + w) = x + y + w.
rewrite the current goal using minus_SNo_invol z Hz (from right to left) at position 2.
We will prove (x + y + - z) + (- - z + w) = x + y + w.
An exact proof term for the current goal is add_SNo_minus_SNo_prop3 x y (- z) w Hx Hy (SNo_minus_SNo z Hz) Hw.
Theorem. (add_SNo_minus_Lt1) The following is provable:
∀x y z, SNo xSNo ySNo zx + - y < zx < z + y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Lt1_cancel x (- y) (z + y) Hx (SNo_minus_SNo y Hy) (SNo_add_SNo z y Hz Hy) to the current goal.
We will prove x + - y < (z + y) + - y.
rewrite the current goal using add_SNo_assoc z y (- y) Hz Hy (SNo_minus_SNo y Hy) (from right to left).
rewrite the current goal using add_SNo_minus_SNo_rinv y Hy (from left to right).
rewrite the current goal using add_SNo_0R z Hz (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt2) The following is provable:
∀x y z, SNo xSNo ySNo zz < x + - yz + y < x
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Lt1_cancel (z + y) (- y) x (SNo_add_SNo z y Hz Hy) (SNo_minus_SNo y Hy) Hx to the current goal.
We will prove (z + y) + - y < x + - y.
rewrite the current goal using add_SNo_assoc z y (- y) Hz Hy (SNo_minus_SNo y Hy) (from right to left).
We will prove z + y + - y < x + - y.
rewrite the current goal using add_SNo_minus_SNo_rinv y Hy (from left to right).
rewrite the current goal using add_SNo_0R z Hz (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt1b) The following is provable:
∀x y z, SNo xSNo ySNo zx < z + yx + - y < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Lt1_cancel (x + - y) y z (SNo_add_SNo x (- y) Hx (SNo_minus_SNo y Hy)) Hy Hz to the current goal.
We will prove (x + - y) + y < z + y.
rewrite the current goal using add_SNo_assoc x (- y) y Hx (SNo_minus_SNo y Hy) Hy (from right to left).
rewrite the current goal using add_SNo_minus_SNo_linv y Hy (from left to right).
rewrite the current goal using add_SNo_0R x Hx (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt2b) The following is provable:
∀x y z, SNo xSNo ySNo zz + y < xz < x + - y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply add_SNo_Lt1_cancel z y (x + - y) Hz Hy (SNo_add_SNo x (- y) Hx (SNo_minus_SNo y Hy)) to the current goal.
We will prove z + y < (x + - y) + y.
rewrite the current goal using add_SNo_assoc x (- y) y Hx (SNo_minus_SNo y Hy) Hy (from right to left).
rewrite the current goal using add_SNo_minus_SNo_linv y Hy (from left to right).
rewrite the current goal using add_SNo_0R x Hx (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt1b3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo wx + y < w + zx + y + - z < w
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw H1.
We will prove x + y + - z < w.
rewrite the current goal using add_SNo_assoc x y (- z) Hx Hy (SNo_minus_SNo z Hz) (from left to right).
We will prove (x + y) + - z < w.
Apply add_SNo_minus_Lt1b (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw to the current goal.
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt2b3) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo ww + z < x + yw < x + y + - z
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw H1.
We will prove w < x + y + - z.
rewrite the current goal using add_SNo_assoc x y (- z) Hx Hy (SNo_minus_SNo z Hz) (from left to right).
We will prove w < (x + y) + - z.
Apply add_SNo_minus_Lt2b (x + y) z w (SNo_add_SNo x y Hx Hy) Hz Hw to the current goal.
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Lt_lem) The following is provable:
∀x y z u v w, SNo xSNo ySNo zSNo uSNo vSNo wx + y + w < u + v + zx + y + - z < u + v + - w
Proof:
Let x, y, z, u, v and w be given.
Assume Hx Hy Hz Hu Hv Hw H1.
We prove the intermediate claim Lmz: SNo (- z).
An exact proof term for the current goal is SNo_minus_SNo z Hz.
We prove the intermediate claim Lmw: SNo (- w).
An exact proof term for the current goal is SNo_minus_SNo w Hw.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim Luv: SNo (u + v).
An exact proof term for the current goal is SNo_add_SNo u v Hu Hv.
rewrite the current goal using add_SNo_assoc x y (- z) Hx Hy Lmz (from left to right).
rewrite the current goal using add_SNo_assoc u v (- w) Hu Hv Lmw (from left to right).
We will prove (x + y) + - z < (u + v) + - w.
Apply add_SNo_minus_Lt2b (u + v) w ((x + y) + - z) Luv Hw (SNo_add_SNo (x + y) (- z) Lxy Lmz) to the current goal.
We will prove ((x + y) + - z) + w < u + v.
rewrite the current goal using add_SNo_assoc (x + y) (- z) w Lxy Lmz Hw (from right to left).
We will prove (x + y) + - z + w < u + v.
rewrite the current goal using add_SNo_com (- z) w Lmz Hw (from left to right).
We will prove (x + y) + w + - z < u + v.
rewrite the current goal using add_SNo_assoc (x + y) w (- z) Lxy Hw Lmz (from left to right).
We will prove ((x + y) + w) + - z < u + v.
Apply add_SNo_minus_Lt1b ((x + y) + w) z (u + v) (SNo_add_SNo (x + y) w Lxy Hw) Hz Luv to the current goal.
We will prove (x + y) + w < (u + v) + z.
rewrite the current goal using add_SNo_assoc x y w Hx Hy Hw (from right to left).
rewrite the current goal using add_SNo_assoc u v z Hu Hv Hz (from right to left).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_minus_Le2) The following is provable:
∀x y z, SNo xSNo ySNo zzx + - yz + yx
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply SNoLeE z (x + - y) Hz (SNo_add_SNo x (- y) Hx (SNo_minus_SNo y Hy)) H1 to the current goal.
Assume H2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is add_SNo_minus_Lt2 x y z Hx Hy Hz H2.
Assume H2: z = x + - y.
We will prove z + yx.
rewrite the current goal using H2 (from left to right).
We will prove (x + - y) + yx.
rewrite the current goal using add_SNo_minus_R2' x y Hx Hy (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (add_SNo_minus_Le2b) The following is provable:
∀x y z, SNo xSNo ySNo zz + yxzx + - y
Proof:
Let x, y and z be given.
Assume Hx Hy Hz H1.
Apply SNoLeE (z + y) x (SNo_add_SNo z y Hz Hy) Hx H1 to the current goal.
Assume H2.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is add_SNo_minus_Lt2b x y z Hx Hy Hz H2.
Assume H2: z + y = x.
We will prove zx + - y.
rewrite the current goal using H2 (from right to left).
We will prove z(z + y) + - y.
rewrite the current goal using add_SNo_minus_R2 z y Hz Hy (from left to right).
Apply SNoLe_ref to the current goal.
Theorem. (add_SNo_Lt_subprop2) The following is provable:
∀x y z w u v, SNo xSNo ySNo zSNo wSNo uSNo vx + u < z + vy + v < w + ux + y < z + w
Proof:
Let x, y, z, w, u and v be given.
Assume Hx Hy Hz Hw Hu Hv H1 H2.
Apply add_SNo_Lt1_cancel (x + y) (u + v) (z + w) (SNo_add_SNo x y Hx Hy) (SNo_add_SNo u v Hu Hv) (SNo_add_SNo z w Hz Hw) to the current goal.
We will prove (x + y) + (u + v) < (z + w) + (u + v).
rewrite the current goal using add_SNo_com_4_inner_mid x y u v Hx Hy Hu Hv (from left to right).
We will prove (x + u) + (y + v) < (z + w) + (u + v).
We prove the intermediate claim L1: (z + w) + (u + v) = (z + v) + (w + u).
rewrite the current goal using add_SNo_assoc z w (u + v) Hz Hw (SNo_add_SNo u v Hu Hv) (from right to left).
rewrite the current goal using add_SNo_assoc z v (w + u) Hz Hv (SNo_add_SNo w u Hw Hu) (from right to left).
We will prove z + (w + (u + v)) = z + (v + (w + u)).
Use f_equal.
We will prove w + u + v = v + w + u.
An exact proof term for the current goal is add_SNo_rotate_3_1 w u v Hw Hu Hv.
rewrite the current goal using L1 (from left to right).
We will prove (x + u) + (y + v) < (z + v) + (w + u).
An exact proof term for the current goal is add_SNo_Lt3 (x + u) (y + v) (z + v) (w + u) (SNo_add_SNo x u Hx Hu) (SNo_add_SNo y v Hy Hv) (SNo_add_SNo z v Hz Hv) (SNo_add_SNo w u Hw Hu) H1 H2.
Theorem. (add_SNo_Lt_subprop3a) The following is provable:
∀x y z w u a, SNo xSNo ySNo zSNo wSNo uSNo ax + z < w + ay + a < ux + y + z < w + u
Proof:
Let x, y, z, w, u and a be given.
Assume Hx Hy Hz Hw Hu Ha H1 H2.
Apply SNoLt_tra (x + y + z) (y + w + a) (w + u) (SNo_add_SNo x (y + z) Hx (SNo_add_SNo y z Hy Hz)) (SNo_add_SNo y (w + a) Hy (SNo_add_SNo w a Hw Ha)) (SNo_add_SNo w u Hw Hu) to the current goal.
We will prove x + y + z < y + w + a.
rewrite the current goal using add_SNo_com_3_0_1 x y z Hx Hy Hz (from left to right).
We will prove y + x + z < y + w + a.
Apply add_SNo_Lt2 y (x + z) (w + a) Hy (SNo_add_SNo x z Hx Hz) (SNo_add_SNo w a Hw Ha) to the current goal.
An exact proof term for the current goal is H1.
We will prove y + w + a < w + u.
rewrite the current goal using add_SNo_rotate_3_1 w a y Hw Ha Hy (from right to left).
We will prove w + a + y < w + u.
Apply add_SNo_Lt2 w (a + y) u Hw (SNo_add_SNo a y Ha Hy) Hu to the current goal.
We will prove a + y < u.
rewrite the current goal using add_SNo_com a y Ha Hy (from left to right).
An exact proof term for the current goal is H2.
Theorem. (add_SNo_Lt_subprop3b) The following is provable:
∀x y w u v a, SNo xSNo ySNo wSNo uSNo vSNo ax + a < w + vy < a + ux + y < w + u + v
Proof:
Let x, y, w, u, v and a be given.
Assume Hx Hy Hw Hu Hv Ha H1 H2.
rewrite the current goal using add_SNo_com x y Hx Hy (from left to right).
We will prove y + x < w + u + v.
rewrite the current goal using add_SNo_rotate_3_1 u v w Hu Hv Hw (from right to left).
We will prove y + x < u + v + w.
rewrite the current goal using add_SNo_0R x Hx (from right to left).
We will prove y + x + 0 < u + v + w.
Apply add_SNo_Lt_subprop3a y x 0 u (v + w) a Hy Hx SNo_0 Hu (SNo_add_SNo v w Hv Hw) Ha to the current goal.
We will prove y + 0 < u + a.
rewrite the current goal using add_SNo_0R y Hy (from left to right).
rewrite the current goal using add_SNo_com u a Hu Ha (from left to right).
An exact proof term for the current goal is H2.
We will prove x + a < v + w.
rewrite the current goal using add_SNo_com v w Hv Hw (from left to right).
An exact proof term for the current goal is H1.
Theorem. (add_SNo_Lt_subprop3c) The following is provable:
∀x y z w u a b c, SNo xSNo ySNo zSNo wSNo uSNo aSNo bSNo cx + a < b + cy + c < ub + z < w + ax + y + z < w + u
Proof:
Let x, y, z, w, u, a, b and c be given.
Assume Hx Hy Hz Hw Hu Ha Hb Hc H1 H2 H3.
We prove the intermediate claim L1: x + z < c + w.
Apply add_SNo_Lt_subprop2 x z c w a b Hx Hz Hc Hw Ha Hb to the current goal.
We will prove x + a < c + b.
rewrite the current goal using add_SNo_com c b Hc Hb (from left to right).
An exact proof term for the current goal is H1.
We will prove z + b < w + a.
rewrite the current goal using add_SNo_com z b Hz Hb (from left to right).
An exact proof term for the current goal is H3.
We prove the intermediate claim Lxz: SNo (x + z).
An exact proof term for the current goal is SNo_add_SNo x z Hx Hz.
We prove the intermediate claim Lcw: SNo (c + w).
An exact proof term for the current goal is SNo_add_SNo c w Hc Hw.
Apply SNoLt_tra (x + y + z) (c + w + y) (w + u) to the current goal.
An exact proof term for the current goal is SNo_add_SNo x (y + z) Hx (SNo_add_SNo y z Hy Hz).
An exact proof term for the current goal is SNo_add_SNo c (w + y) Hc (SNo_add_SNo w y Hw Hy).
An exact proof term for the current goal is SNo_add_SNo w u Hw Hu.
We will prove x + y + z < c + w + y.
rewrite the current goal using add_SNo_com y z Hy Hz (from left to right).
We will prove x + z + y < c + w + y.
rewrite the current goal using add_SNo_assoc x z y Hx Hz Hy (from left to right).
rewrite the current goal using add_SNo_assoc c w y Hc Hw Hy (from left to right).
An exact proof term for the current goal is add_SNo_Lt1 (x + z) y (c + w) Lxz Hy Lcw L1.
We will prove c + w + y < w + u.
rewrite the current goal using add_SNo_rotate_3_1 w y c Hw Hy Hc (from right to left).
We will prove w + y + c < w + u.
Apply add_SNo_Lt2 w (y + c) u Hw (SNo_add_SNo y c Hy Hc) Hu to the current goal.
We will prove y + c < u.
An exact proof term for the current goal is H2.
Theorem. (add_SNo_Lt_subprop3d) The following is provable:
∀x y w u v a b c, SNo xSNo ySNo wSNo uSNo vSNo aSNo bSNo cx + a < b + vy < c + ub + c < w + ax + y < w + u + v
Proof:
Let x, y, w, u, v, a, b and c be given.
Assume Hx Hy Hw Hu Hv Ha Hb Hc H1 H2 H3.
We prove the intermediate claim L1: b + y < w + u + a.
An exact proof term for the current goal is add_SNo_Lt_subprop3b b y w u a c Hb Hy Hw Hu Ha Hc H3 H2.
We prove the intermediate claim Lxy: SNo (x + y).
An exact proof term for the current goal is SNo_add_SNo x y Hx Hy.
We prove the intermediate claim Lwuv: SNo (w + u + v).
An exact proof term for the current goal is SNo_add_SNo w (u + v) Hw (SNo_add_SNo u v Hu Hv).
We prove the intermediate claim Lwua: SNo (w + u + a).
An exact proof term for the current goal is SNo_add_SNo w (u + a) Hw (SNo_add_SNo u a Hu Ha).
We prove the intermediate claim Lby: SNo (b + y).
An exact proof term for the current goal is SNo_add_SNo b y Hb Hy.
Apply add_SNo_Lt1_cancel (x + y) b (w + u + v) Lxy Hb Lwuv to the current goal.
We will prove (x + y) + b < (w + u + v) + b.
Apply SNoLt_tra ((x + y) + b) (x + w + u + a) ((w + u + v) + b) (SNo_add_SNo (x + y) b Lxy Hb) (SNo_add_SNo x (w + u + a) Hx Lwua) (SNo_add_SNo (w + u + v) b Lwuv Hb) to the current goal.
We will prove (x + y) + b < x + w + u + a.
rewrite the current goal using add_SNo_assoc x y b Hx Hy Hb (from right to left).
We will prove x + y + b < x + w + u + a.
rewrite the current goal using add_SNo_com y b Hy Hb (from left to right).
We will prove x + b + y < x + w + u + a.
Apply add_SNo_Lt2 x (b + y) (w + u + a) Hx Lby Lwua to the current goal.
We will prove b + y < w + u + a.
An exact proof term for the current goal is L1.
We will prove x + w + u + a < (w + u + v) + b.
We prove the intermediate claim L2: x + w + u + a = (w + u) + (x + a).
Use transitivity with (x + w + u) + a, (w + u + x) + a, and w + u + x + a.
An exact proof term for the current goal is add_SNo_assoc_4 x w u a Hx Hw Hu Ha.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is add_SNo_rotate_3_1 w u x Hw Hu Hx.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc_4 w u x a Hw Hu Hx Ha.
We will prove w + u + x + a = (w + u) + (x + a).
An exact proof term for the current goal is add_SNo_assoc w u (x + a) Hw Hu (SNo_add_SNo x a Hx Ha).
We prove the intermediate claim L3: (w + u + v) + b = (w + u) + b + v.
Use transitivity with ((w + u) + v) + b, and (w + u) + (v + b).
Use f_equal.
An exact proof term for the current goal is add_SNo_assoc w u v Hw Hu Hv.
Use symmetry.
An exact proof term for the current goal is add_SNo_assoc (w + u) v b (SNo_add_SNo w u Hw Hu) Hv Hb.
Use f_equal.
An exact proof term for the current goal is add_SNo_com v b Hv Hb.
rewrite the current goal using L2 (from left to right).
rewrite the current goal using L3 (from left to right).
We will prove (w + u) + (x + a) < (w + u) + (b + v).
Apply add_SNo_Lt2 (w + u) (x + a) (b + v) (SNo_add_SNo w u Hw Hu) (SNo_add_SNo x a Hx Ha) (SNo_add_SNo b v Hb Hv) to the current goal.
An exact proof term for the current goal is H1.
Theorem. (ordinal_ordsucc_SNo_eq) The following is provable:
∀alpha, ordinal alphaordsucc alpha = 1 + alpha
Proof:
Let alpha be given.
Assume Ha.
rewrite the current goal using add_SNo_0L alpha (ordinal_SNo alpha Ha) (from right to left) at position 1.
We will prove ordsucc (0 + alpha) = 1 + alpha.
Use symmetry.
An exact proof term for the current goal is add_SNo_ordinal_SL 0 ordinal_Empty alpha Ha.
Theorem. (add_SNo_3a_2b) The following is provable:
∀x y z w u, SNo xSNo ySNo zSNo wSNo u(x + y + z) + (w + u) = (u + y + z) + (w + x)
Proof:
Let x, y, z, w and u be given.
Assume Hx Hy Hz Hw Hu.
rewrite the current goal using add_SNo_com (x + y + z) (w + u) (SNo_add_SNo_3 x y z Hx Hy Hz) (SNo_add_SNo w u Hw Hu) (from left to right).
We will prove (w + u) + (x + y + z) = (u + y + z) + (w + x).
rewrite the current goal using add_SNo_com_4_inner_mid w u x (y + z) Hw Hu Hx (SNo_add_SNo y z Hy Hz) (from left to right).
We will prove (w + x) + (u + y + z) = (u + y + z) + (w + x).
An exact proof term for the current goal is add_SNo_com (w + x) (u + y + z) (SNo_add_SNo w x Hw Hx) (SNo_add_SNo_3 u y z Hu Hy Hz).
Theorem. (add_SNo_1_ordsucc) The following is provable:
∀n ∈ ω, n + 1 = ordsucc n
Proof:
Let n be given.
Assume Hn.
rewrite the current goal using add_nat_add_SNo n Hn 1 (nat_p_omega 1 nat_1) (from right to left).
We will prove add_nat n 1 = ordsucc n.
rewrite the current goal using add_nat_SR n 0 nat_0 (from left to right).
We will prove ordsucc (add_nat n 0) = ordsucc n.
rewrite the current goal using add_nat_0R (from left to right).
Use reflexivity.
Theorem. (add_SNo_eps_Lt) The following is provable:
∀x, SNo x∀n ∈ ω, x < x + eps_ n
Proof:
Let x be given.
Assume Hx.
Let n be given.
Assume Hn.
rewrite the current goal using add_SNo_0R x Hx (from right to left) at position 1.
We will prove x + 0 < x + eps_ n.
Apply add_SNo_Lt2 x 0 (eps_ n) Hx SNo_0 (SNo_eps_ n Hn) to the current goal.
An exact proof term for the current goal is SNo_eps_pos n Hn.
Theorem. (add_SNo_eps_Lt') The following is provable:
∀x y, SNo xSNo y∀n ∈ ω, x < yx < y + eps_ n
Proof:
Let x and y be given.
Assume Hx Hy.
Let n be given.
Assume Hn.
Assume Hxy.
Apply SNoLt_tra x y (y + eps_ n) Hx Hy (SNo_add_SNo y (eps_ n) Hy (SNo_eps_ n Hn)) Hxy to the current goal.
We will prove y < y + eps_ n.
An exact proof term for the current goal is add_SNo_eps_Lt y Hy n Hn.
Theorem. (SNoLt_minus_pos) The following is provable:
∀x y, SNo xSNo yx < y0 < y + - x
Proof:
Let x and y be given.
Assume Hx Hy Hxy.
Apply add_SNo_minus_Lt2b y x 0 Hy Hx SNo_0 to the current goal.
We will prove 0 + x < y.
rewrite the current goal using add_SNo_0L x Hx (from left to right).
An exact proof term for the current goal is Hxy.
Theorem. (add_SNo_omega_In_cases) The following is provable:
∀m, ∀n ∈ ω, ∀k, nat_p kmn + kmnm + - nk
Proof:
Let m and n be given.
Assume Hn.
We prove the intermediate claim Ln: SNo n.
Apply omega_SNo to the current goal.
An exact proof term for the current goal is Hn.
Apply nat_ind to the current goal.
We will prove mn + 0mnm + - n0.
rewrite the current goal using add_SNo_0R n Ln (from left to right).
Assume H1.
Apply orIL to the current goal.
An exact proof term for the current goal is H1.
Let k be given.
Assume Hk.
Assume IHk: mn + kmnm + - nk.
rewrite the current goal using add_SNo_1_ordsucc k (nat_p_omega k Hk) (from right to left) at position 1.
rewrite the current goal using add_SNo_assoc n k 1 Ln (nat_p_SNo k Hk) SNo_1 (from left to right).
rewrite the current goal using add_SNo_1_ordsucc (n + k) (add_SNo_In_omega n Hn k (nat_p_omega k Hk)) (from left to right).
Assume H1: mordsucc (n + k).
Apply ordsuccE (n + k) m H1 to the current goal.
Assume H2: mn + k.
Apply IHk H2 to the current goal.
Assume H3: mn.
Apply orIL to the current goal.
An exact proof term for the current goal is H3.
Assume H3: m + - nk.
Apply orIR to the current goal.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H3.
Assume H2: m = n + k.
Apply orIR to the current goal.
rewrite the current goal using H2 (from left to right).
We will prove (n + k) + - nordsucc k.
rewrite the current goal using add_SNo_com (n + k) (- n) (SNo_add_SNo n k Ln (nat_p_SNo k Hk)) (SNo_minus_SNo n Ln) (from left to right).
rewrite the current goal using add_SNo_minus_L2 n k Ln (nat_p_SNo k Hk) (from left to right).
Apply ordsuccI2 to the current goal.
Theorem. (add_SNo_Lt4) The following is provable:
∀x y z w u v, SNo xSNo ySNo zSNo wSNo uSNo vx < wy < uz < vx + y + z < w + u + v
Proof:
Let x, y, z, w, u and v be given.
Assume Hx Hy Hz Hw Hu Hv Hxw Hyu Hzv.
We will prove x + y + z < w + u + v.
Apply add_SNo_Lt3 x (y + z) w (u + v) Hx (SNo_add_SNo y z Hy Hz) Hw (SNo_add_SNo u v Hu Hv) Hxw to the current goal.
We will prove y + z < u + v.
An exact proof term for the current goal is add_SNo_Lt3 y z u v Hy Hz Hu Hv Hyu Hzv.
Theorem. (add_SNo_3_3_3_Lt1) The following is provable:
∀x y z w u, SNo xSNo ySNo zSNo wSNo ux + y < z + wx + y + u < z + w + u
Proof:
Let x, y, z, w and u be given.
Assume Hx Hy Hz Hw Hu H1.
rewrite the current goal using add_SNo_assoc x y u Hx Hy Hu (from left to right).
rewrite the current goal using add_SNo_assoc z w u Hz Hw Hu (from left to right).
We will prove (x + y) + u < (z + w) + u.
An exact proof term for the current goal is add_SNo_Lt1 (x + y) u (z + w) (SNo_add_SNo x y Hx Hy) Hu (SNo_add_SNo z w Hz Hw) H1.
Theorem. (add_SNo_3_2_3_Lt1) The following is provable:
∀x y z w u, SNo xSNo ySNo zSNo wSNo uy + x < z + wx + u + y < z + w + u
Proof:
Let x, y, z, w and u be given.
Assume Hx Hy Hz Hw Hu H1.
rewrite the current goal using add_SNo_rotate_3_1 x u y Hx Hu Hy (from left to right).
We will prove y + x + u < z + w + u.
An exact proof term for the current goal is add_SNo_3_3_3_Lt1 y x z w u Hy Hx Hz Hw Hu H1.
End of Section SurrealAdd