Primitive. 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
Primitive. 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 ⇒ xA, x B 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, X YY XX = Y
Axiom. (In_ind) We take the following as an axiom:
∀P : setprop, (∀X : set, (xX, 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.
Primitive. The name Empty is a term of type set.
Axiom. (EmptyAx) We take the following as an axiom:
¬ x : set, x Empty
Primitive. The name is a term of type setset.
Axiom. (UnionEq) We take the following as an axiom:
∀X x, x X Y, x Y Y X
Primitive. The name 𝒫 is a term of type setset.
Axiom. (PowerEq) We take the following as an axiom:
∀X Y : set, Y 𝒫 X Y X
Primitive. 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|xA} xA, y = F x
Definition. We define TransSet to be λU : setxU, x U of type setprop.
Definition. We define Union_closed to be λU : set∀X : set, X U X U of type setprop.
Definition. We define Power_closed to be λU : set∀X : set, X U𝒫 X U of type setprop.
Definition. We define Repl_closed to be λU : set∀X : set, X U∀F : setset, (∀x : set, x XF x U){F x|xX} U of type setprop.
Definition. We define ZF_closed to be λU : setUnion_closed U Power_closed U Repl_closed U of type setprop.
Primitive. The name UnivOf is a term of type setset.
Axiom. (UnivOf_In) We take the following as an axiom:
∀N : set, N UnivOf 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, N UTransSet UZF_closed UUnivOf N U
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, ABA B
Axiom. (andEL) We take the following as an axiom:
∀A B : prop, A BA
Axiom. (andER) We take the following as an axiom:
∀A B : prop, A BB
Axiom. (orIL) We take the following as an axiom:
∀A B : prop, AA B
Axiom. (orIR) We take the following as an axiom:
∀A B : prop, BA B
Beginning of Section PropN
Variable P1 P2 P3 : prop
Axiom. (and3I) We take the following as an axiom:
P1P2P3P1 P2 P3
Axiom. (and3E) We take the following as an axiom:
P1 P2 P3(∀p : prop, (P1P2P3p)p)
Axiom. (or3I1) We take the following as an axiom:
P1P1 P2 P3
Axiom. (or3I2) We take the following as an axiom:
P2P1 P2 P3
Axiom. (or3I3) We take the following as an axiom:
P3P1 P2 P3
Axiom. (or3E) We take the following as an axiom:
P1 P2 P3(∀p : prop, (P1p)(P2p)(P3p)p)
Variable P4 : prop
Axiom. (and4I) We take the following as an axiom:
P1P2P3P4P1 P2 P3 P4
Variable P5 : prop
Axiom. (and5I) We take the following as an axiom:
P1P2P3P4P5P1 P2 P3 P4 P5
End of Section PropN
Axiom. (not_or_and_demorgan) We take the following as an axiom:
∀A B : prop, ¬ (A B)¬ 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)(A B)
Axiom. (iffEL) We take the following as an axiom:
∀A B : prop, (A B)AB
Axiom. (iffER) We take the following as an axiom:
∀A B : prop, (A B)BA
Axiom. (iff_refl) We take the following as an axiom:
∀A : prop, A A
Axiom. (iff_sym) We take the following as an axiom:
∀A B : prop, (A B)(B A)
Axiom. (iff_trans) We take the following as an axiom:
∀A B C : prop, (A B)(B C)(A C)
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, x yy x
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 x Q 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, X X
Axiom. (Subq_tra) We take the following as an axiom:
∀X Y Z : set, X YY ZX Z
Axiom. (Subq_contra) We take the following as an axiom:
∀X Y z : set, X Yz Yz X
Axiom. (EmptyE) We take the following as an axiom:
∀x : set, x Empty
Axiom. (Subq_Empty) We take the following as an axiom:
∀X : set, Empty X
Axiom. (Empty_Subq_eq) We take the following as an axiom:
∀X : set, X EmptyX = Empty
Axiom. (Empty_eq) We take the following as an axiom:
∀X : set, (∀x, x X)X = Empty
Axiom. (UnionI) We take the following as an axiom:
∀X x Y : set, x YY Xx X
Axiom. (UnionE) We take the following as an axiom:
∀X x : set, x XY : set, x Y Y X
Axiom. (UnionE_impred) We take the following as an axiom:
∀X x : set, x X∀p : prop, (∀Y : set, x YY Xp)p
Axiom. (PowerI) We take the following as an axiom:
∀X Y : set, Y XY 𝒫 X
Axiom. (PowerE) We take the following as an axiom:
∀X Y : set, Y 𝒫 XY X
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))
Primitive. 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 BA B
Axiom. (ReplI) We take the following as an axiom:
∀A : set, ∀F : setset, ∀x : set, x AF x {F x|xA}
Axiom. (ReplE) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y {F x|xA}xA, y = F x
Axiom. (ReplE_impred) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y {F x|xA}∀p : prop, (∀x : set, x Ay = F xp)p
Axiom. (ReplE') We take the following as an axiom:
∀X, ∀f : setset, ∀p : setprop, (xX, p (f x))y{f x|xX}, p y
Axiom. (Repl_Empty) We take the following as an axiom:
∀F : setset, {F x|xEmpty} = Empty
Axiom. (ReplEq_ext_sub) We take the following as an axiom:
∀X, ∀F G : setset, (xX, F x = G x){F x|xX} {G x|xX}
Axiom. (ReplEq_ext) We take the following as an axiom:
∀X, ∀F G : setset, (xX, F x = G x){F x|xX} = {G x|xX}
Axiom. (Repl_inv_eq) We take the following as an axiom:
∀P : setprop, ∀f g : setset, (∀x, P xg (f x) = x)∀X, (xX, P x){g y|y{f x|xX}} = X
Axiom. (Repl_invol_eq) We take the following as an axiom:
∀P : setprop, ∀f : setset, (∀x, P xf (f x) = x)∀X, (xX, P x){f y|y{f x|xX}} = X
Primitive. 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
Primitive. 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 = y x = 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}
Primitive. 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
Primitive. 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, z Xz X Y
Axiom. (binunionI2) We take the following as an axiom:
∀X Y z : set, z Yz X Y
Axiom. (binunionE) We take the following as an axiom:
∀X Y z : set, z X Yz X z Y
Axiom. (binunionE') We take the following as an axiom:
∀X Y z, ∀p : prop, (z Xp)(z Yp)(z X Yp)
Axiom. (binunion_asso) We take the following as an axiom:
∀X Y Z : set, X (Y Z) = (X Y) Z
Axiom. (binunion_com_Subq) We take the following as an axiom:
∀X Y : set, X Y Y X
Axiom. (binunion_com) We take the following as an axiom:
∀X Y : set, X Y = Y X
Axiom. (binunion_idl) We take the following as an axiom:
∀X : set, Empty X = X
Axiom. (binunion_idr) We take the following as an axiom:
∀X : set, X Empty = X
Axiom. (binunion_Subq_1) We take the following as an axiom:
∀X Y : set, X X Y
Axiom. (binunion_Subq_2) We take the following as an axiom:
∀X Y : set, Y X Y
Axiom. (binunion_Subq_min) We take the following as an axiom:
∀X Y Z : set, X ZY ZX Y Z
Axiom. (Subq_binunion_eq) We take the following as an axiom:
∀X Y, (X Y) = (X Y = 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.
Primitive. 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, x Xy F xy xXF x
Axiom. (famunionE) We take the following as an axiom:
∀X : set, ∀F : (setset), ∀y : set, y (xXF x)xX, y F x
Axiom. (famunionE_impred) We take the following as an axiom:
∀X : set, ∀F : (setset), ∀y : set, y (xXF x)∀p : prop, (∀x, x Xy F xp)p
Axiom. (famunion_Empty) We take the following as an axiom:
∀F : setset, (xEmptyF x) = Empty
Beginning of Section SepSec
Variable X : set
Variable P : setprop
Let z : setEps_i (λz ⇒ z X P z)
Let F : setsetλx ⇒ if P x then x else z
Primitive. 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, x XP xx {xX|P x}
Axiom. (SepE) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}x X P x
Axiom. (SepE1) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}x X
Axiom. (SepE2) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}P x
Axiom. (Sep_Subq) We take the following as an axiom:
∀X : set, ∀P : setprop, {xX|P x} X
Axiom. (Sep_In_Power) We take the following as an axiom:
∀X : set, ∀P : setprop, {xX|P x} 𝒫 X
Primitive. 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, x XP xF x {F x|xX, P x}
Axiom. (ReplSepE) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀F : setset, ∀y : set, y {F x|xX, P x}x : set, x X P x y = F x
Axiom. (ReplSepE_impred) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀F : setset, ∀y : set, y {F x|xX, P x}∀p : prop, (xX, P xy = F xp)p
Primitive. 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, z Xz Yz X Y
Axiom. (binintersectE) We take the following as an axiom:
∀X Y z, z X Yz X z Y
Axiom. (binintersectE1) We take the following as an axiom:
∀X Y z, z X Yz X
Axiom. (binintersectE2) We take the following as an axiom:
∀X Y z, z X Yz Y
Axiom. (binintersect_Subq_1) We take the following as an axiom:
∀X Y : set, X Y X
Axiom. (binintersect_Subq_2) We take the following as an axiom:
∀X Y : set, X Y Y
Axiom. (binintersect_Subq_eq_1) We take the following as an axiom:
∀X Y, X YX Y = X
Axiom. (binintersect_Subq_max) We take the following as an axiom:
∀X Y Z : set, Z XZ YZ X Y
Axiom. (binintersect_com_Subq) We take the following as an axiom:
∀X Y : set, X Y Y X
Axiom. (binintersect_com) We take the following as an axiom:
∀X Y : set, X Y = Y X
Primitive. 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, (z X)(z Y)z X Y
Axiom. (setminusE) We take the following as an axiom:
∀X Y z, (z X Y)z X z Y
Axiom. (setminusE1) We take the following as an axiom:
∀X Y z, (z X Y)z X
Axiom. (setminusE2) We take the following as an axiom:
∀X Y z, (z X Y)z Y
Axiom. (setminus_Subq) We take the following as an axiom:
∀X Y : set, X Y X
Axiom. (setminus_Subq_contra) We take the following as an axiom:
∀X Y Z : set, Z YX Y X Z
Axiom. (setminus_In_Power) We take the following as an axiom:
∀A U, A U 𝒫 A
Axiom. (In_irref) We take the following as an axiom:
∀x, x x
Axiom. (In_no2cycle) We take the following as an axiom:
∀x y, x yy xFalse
Primitive. The name ordsucc is a term of type setset.
Axiom. (ordsuccI1) We take the following as an axiom:
∀x : set, x ordsucc x
Axiom. (ordsuccI2) We take the following as an axiom:
∀x : set, x ordsucc x
Axiom. (ordsuccE) We take the following as an axiom:
∀x y : set, y ordsucc xy x y = 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, 0 ordsucc a
Axiom. (neq_ordsucc_0) We take the following as an axiom:
∀a : set, ordsucc a 0
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, a bordsucc a ordsucc b
Axiom. (In_0_1) We take the following as an axiom:
0 1
Axiom. (In_0_2) We take the following as an axiom:
0 2
Axiom. (In_1_2) We take the following as an axiom:
1 2
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 n0 ordsucc n
Axiom. (nat_ordsucc_in_ordsucc) We take the following as an axiom:
∀n, nat_p nmn, ordsucc m ordsucc 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 x n = ordsucc x
Axiom. (nat_complete_ind) We take the following as an axiom:
∀p : setprop, (∀n, nat_p n(mn, p m)p n)∀n, nat_p np n
Axiom. (nat_p_trans) We take the following as an axiom:
∀n, nat_p nmn, nat_p m
Axiom. (nat_trans) We take the following as an axiom:
∀n, nat_p nmn, m n
Axiom. (nat_ordsucc_trans) We take the following as an axiom:
∀n, nat_p nmordsucc n, m n
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:
i1, ∀p : setprop, p 0p i
Axiom. (cases_2) We take the following as an axiom:
i2, ∀p : setprop, p 0p 1p i
Axiom. (cases_3) We take the following as an axiom:
i3, ∀p : setprop, p 0p 1p 2p i
Axiom. (neq_0_1) We take the following as an axiom:
0 1
Axiom. (neq_1_0) We take the following as an axiom:
1 0
Axiom. (neq_0_2) We take the following as an axiom:
0 2
Axiom. (neq_2_0) We take the following as an axiom:
2 0
Axiom. (neq_1_2) We take the following as an axiom:
1 2
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 UXU, X U
Axiom. (ZF_Power_closed) We take the following as an axiom:
∀U, ZF_closed UXU, 𝒫 X U
Axiom. (ZF_Repl_closed) We take the following as an axiom:
∀U, ZF_closed UXU, ∀F : setset, (xX, F x U){F x|xX} U
Axiom. (ZF_UPair_closed) We take the following as an axiom:
∀U, ZF_closed Ux yU, {x,y} U
Axiom. (ZF_Sing_closed) We take the following as an axiom:
∀U, ZF_closed UxU, {x} U
Axiom. (ZF_binunion_closed) We take the following as an axiom:
∀U, ZF_closed UX YU, (X Y) U
Axiom. (ZF_ordsucc_closed) We take the following as an axiom:
∀U, ZF_closed UxU, ordsucc x U
Axiom. (nat_p_UnivOf_Empty) We take the following as an axiom:
∀n : set, nat_p nn UnivOf Empty
Primitive. 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 betaalpha, 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 alphabetaalpha, 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 XxX, ordsucc x X
Axiom. (ordinal_ordsucc_In_Subq) We take the following as an axiom:
∀alpha, ordinal alphabetaalpha, ordsucc beta alpha
Axiom. (ordinal_trichotomy_or) We take the following as an axiom:
∀alpha beta : set, ordinal alphaordinal betaalpha beta alpha = beta beta alpha
Axiom. (ordinal_trichotomy_or_impred) We take the following as an axiom:
∀alpha beta : set, ordinal alphaordinal beta∀p : prop, (alpha betap)(alpha = betap)(beta alphap)p
Axiom. (ordinal_In_Or_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha beta beta alpha
Axiom. (ordinal_linear) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha beta beta alpha
Axiom. (ordinal_ordsucc_In_eq) We take the following as an axiom:
∀alpha beta, ordinal alphabeta alphaordsucc beta alpha alpha = ordsucc beta
Axiom. (ordinal_lim_or_succ) We take the following as an axiom:
∀alpha, ordinal alpha(betaalpha, ordsucc beta alpha) (betaalpha, alpha = ordsucc beta)
Axiom. (ordinal_ordsucc_In) We take the following as an axiom:
∀alpha, ordinal alphabetaalpha, ordsucc beta ordsucc alpha
Axiom. (ordinal_famunion) We take the following as an axiom:
∀X, ∀F : setset, (xX, ordinal (F x))ordinal (xXF x)
Axiom. (ordinal_binintersect) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaordinal (alpha beta)
Axiom. (ordinal_binunion) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaordinal (alpha beta)
Axiom. (ordinal_ind) We take the following as an axiom:
∀p : setprop, (∀alpha, ordinal alpha(betaalpha, p beta)p alpha)∀alpha, ordinal alphap alpha
Axiom. (least_ordinal_ex) We take the following as an axiom:
∀p : setprop, (alpha, ordinal alpha p alpha)alpha, ordinal alpha p alpha betaalpha, ¬ p beta
Definition. We define inj to be λX Y f ⇒ (uX, f u Y) (u vX, f u = f vu = v) of type setset(setset)prop.
Definition. We define bij to be λX Y f ⇒ (uX, f u Y) (u vX, f u = f vu = v) (wY, uX, f u = w) of type setset(setset)prop.
Axiom. (bijI) We take the following as an axiom:
∀X Y, ∀f : setset, (uX, f u Y)(u vX, f u = f vu = v)(wY, uX, 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, ((uX, f u Y)(u vX, f u = f vu = v)(wY, uX, f u = w)p)p
Primitive. 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, (wY, uX, f u = w)yY, inv X f y X f (inv X f y) = y
Axiom. (inj_linv) We take the following as an axiom:
∀X, ∀f : setset, (u vX, f u = f vu = v)xX, 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 : setf : 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, U VF U F V)Y𝒫 A, F Y = Y
Axiom. (image_In_Power) We take the following as an axiom:
∀A B, ∀f : setset, (xA, f x B)U𝒫 A, {f x|xU} 𝒫 B
Axiom. (image_monotone) We take the following as an axiom:
∀f : setset, ∀U V, U V{f x|xU} {f x|xV}
Axiom. (setminus_antimonotone) We take the following as an axiom:
∀A U V, U VA V A U
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, (iordsucc n, f i n)¬ (i jordsucc n, f i = f ji = j)
Axiom. (PigeonHole_nat_bij) We take the following as an axiom:
∀n, nat_p n∀f : setset, (in, f i n)(i jn, 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 Xy Xp 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 (X Y)
Axiom. (famunion_nat_finite) We take the following as an axiom:
∀X : setset, ∀n, nat_p n(in, finite (X i))finite (inX i)
Axiom. (Subq_finite) We take the following as an axiom:
∀X, finite X∀Y, Y Xfinite Y
Axiom. (TransSet_In_ordsucc_Subq) We take the following as an axiom:
∀x y, TransSet yx ordsucc yx y
Axiom. (exandE_i) We take the following as an axiom:
∀P Q : setprop, (x, P x Q 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 x Q 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 x Q 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 x Q x)∀p : prop, (∀x : setsetsetset, P xQ xp)p
Beginning of Section Descr_ii
Variable P : (setset)prop
Primitive. 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
Primitive. 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
Primitive. 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
Primitive. 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
Primitive. 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
Primitive. The name In_rec_i is a term of type setset.
Hypothesis Fr : ∀X : set, ∀g h : setset, (xX, 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)
Primitive. The name In_rec_ii is a term of type set(setset).
Hypothesis Fr : ∀X : set, ∀g h : set(setset), (xX, 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)
Primitive. The name In_rec_iii is a term of type set(setsetset).
Hypothesis Fr : ∀X : set, ∀g h : set(setsetset), (xX, 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 n n 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, (xX, 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|xX}) of type setset.
Axiom. (Inj1_eq) We take the following as an axiom:
∀X : set, Inj1 X = {0} {Inj1 x|xX}
Axiom. (Inj1I1) We take the following as an axiom:
∀X : set, 0 Inj1 X
Axiom. (Inj1I2) We take the following as an axiom:
∀X x : set, x XInj1 x Inj1 X
Axiom. (Inj1E) We take the following as an axiom:
∀X y : set, y Inj1 Xy = 0 xX, y = Inj1 x
Axiom. (Inj1NE1) We take the following as an axiom:
∀x : set, Inj1 x 0
Axiom. (Inj1NE2) We take the following as an axiom:
∀x : set, Inj1 x {0}
Definition. We define Inj0 to be λX ⇒ {Inj1 x|xX} of type setset.
Axiom. (Inj0I) We take the following as an axiom:
∀X x : set, x XInj1 x Inj0 X
Axiom. (Inj0E) We take the following as an axiom:
∀X y : set, y Inj0 Xx : set, x X y = Inj1 x
Definition. We define Unj to be In_rec_i (λX f ⇒ {f x|xX {0}}) of type setset.
Axiom. (Unj_eq) We take the following as an axiom:
∀X : set, Unj X = {Unj x|xX {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 X Inj1 Y
Definition. We define setsum to be λX Y ⇒ {Inj0 x|xX} {Inj1 y|yY} 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, x XInj0 x X + Y
Axiom. (Inj1_setsum) We take the following as an axiom:
∀X Y y : set, y YInj1 y X + Y
Axiom. (setsum_Inj_inv) We take the following as an axiom:
∀X Y z : set, z X + Y(xX, z = Inj0 x) (yY, 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. (eq_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|zZ, x : set, Inj0 x = z} of type setset.
Definition. We define proj1 to be λZ ⇒ {Unj z|zZ, 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, x Xpair 0 x pair X Y
Axiom. (pairI1) We take the following as an axiom:
∀X Y y, y Ypair 1 y pair X Y
Axiom. (pairE) We take the following as an axiom:
∀X Y z, z pair X Y(xX, z = pair 0 x) (yY, z = pair 1 y)
Axiom. (pairE0) We take the following as an axiom:
∀X Y x, pair 0 x pair X Yx X
Axiom. (pairE1) We take the following as an axiom:
∀X Y y, pair 1 y pair X Yy Y
Axiom. (proj0I) We take the following as an axiom:
∀w u : set, pair 0 u wu proj0 w
Axiom. (proj0E) We take the following as an axiom:
∀w u : set, u proj0 wpair 0 u w
Axiom. (proj1I) We take the following as an axiom:
∀w u : set, pair 1 u wu proj1 w
Axiom. (proj1E) We take the following as an axiom:
∀w u : set, u proj1 wpair 1 u w
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 ⇒ xX{pair x y|yY 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, xX, yY x, pair x y xX, Y x
Axiom. (Sigma_eta_proj0_proj1) We take the following as an axiom:
∀X : set, ∀Y : setset, z(xX, Y x), pair (proj0 z) (proj1 z) = z proj0 z X proj1 z Y (proj0 z)
Axiom. (proj_Sigma_eta) We take the following as an axiom:
∀X : set, ∀Y : setset, z(xX, 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 (xX, Y x)proj0 z X
Axiom. (proj1_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)proj1 z Y (proj0 z)
Axiom. (pair_Sigma_E1) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀x y : set, pair x y (xX, Y x)y Y x
Axiom. (Sigma_E) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)xX, yY x, z = pair x y
Definition. We define setprod to be λX Y : setxX, 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|zf, 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).
Notation. We now use n-tuple notation (a0,...,an-1) for n ≥ 2 for λ i ∈ n . if i = 0 then a0 else ... if i = n-2 then an-2 else an-1.
Axiom. (lamI) We take the following as an axiom:
∀X : set, ∀F : setset, xX, yF x, pair x y λxX F x
Axiom. (lamE) We take the following as an axiom:
∀X : set, ∀F : setset, ∀z : set, z (λxX F x)xX, yF x, z = pair x y
Axiom. (apI) We take the following as an axiom:
∀f x y, pair x y fy f x
Axiom. (apE) We take the following as an axiom:
∀f x y, y f xpair x y f
Axiom. (beta) We take the following as an axiom:
∀X : set, ∀F : setset, ∀x : set, x X(λxX F 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 (xX, Y x)(z 0) X
Axiom. (ap1_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, 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:
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𝒫 (xX, (Y x))|xX, f x 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 Pi.
Axiom. (PiI) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, (uf, pair_p u u 0 X)(xX, f x Y x)f xX, Y x
Axiom. (lam_Pi) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀F : setset, (xX, F x Y x)(λxX F x) (xX, Y x)
Axiom. (ap_Pi) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, ∀x : set, f (xX, Y x)x Xf x Y x
Definition. We define setexp to be λX Y : setyY, 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, xX, yF x, (x,y) λxX F 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, (xX, yY, F x y = G x y){F (w 0) (w 1)|wX Y} = {G (w 0) (w 1)|wX Y}
Axiom. (tuple_2_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, xX, yY x, (x,y) xX, Y x
Axiom. (tuple_2_setprod) We take the following as an axiom:
∀X : set, ∀Y : set, xX, yY, (x,y) X Y
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.
Primitive. The name DescrR_i_io_1 is a term of type (set(setprop)prop)set.
Primitive. 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 ⇒ betaalpha, p beta q 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 alphabetaalpha, PNoEq_ alpha p qPNoEq_ beta p q
Definition. We define PNoLt_ to be λalpha p q ⇒ betaalpha, PNoEq_ beta p q ¬ p beta q 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, beta alphaPNoEq_ 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 alphabetaalpha, 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 q PNoEq_ alpha p q PNoLt_ 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
Primitive. 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_ (alpha beta) p qPNoLt alpha p beta q
Axiom. (PNoLtI2) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, alpha betaPNoEq_ alpha p qq alphaPNoLt alpha p beta q
Axiom. (PNoLtI3) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, beta alphaPNoEq_ 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_ (alpha beta) p qR)(alpha betaPNoEq_ alpha p qq alphaR)(beta alphaPNoEq_ 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 q alpha = beta PNoEq_ alpha p q PNoLt 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 q alpha = beta PNoEq_ 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 = beta PNoEq_ 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 q PNoLe 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 q PNoLe 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 ⇒ betaalpha, ∀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 ⇒ betaalpha, ∀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 p PNo_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, betaalpha, 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, betaalpha, 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, betaalpha, 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 delta delta alpha) PNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p delta delta = 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 delta delta alpha)
Axiom. (PNo_extend1_eq) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoEq_ alpha p (λdelta ⇒ p delta delta = 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) (taualpha, 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 pbeta alpha 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 delta delta alpha)
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 delta delta = 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 Rbetaordsucc 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 p PNo_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 alphabetaordsucc 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 alphabetaordsucc 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 alphabetaordsucc 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 Rbetaordsucc alpha, p : setprop, PNo_strict_imv L R beta p
Definition. We define PNo_least_rep to be λL R beta p ⇒ ordinal beta PNo_strict_imv L R beta p gammabeta, ∀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, x beta¬ 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 qbetaalpha, p beta q 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 Rbeta, (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)
Primitive. The name PNo_bd is a term of type (set(setprop)prop)(set(setprop)prop)set.
Primitive. 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 R ordsucc 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:
Axiom. (not_ordinal_Sing1) We take the following as an axiom:
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 'alpha beta
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 '|gammaalpha}beta alpha
Axiom. (ordinal_notin_tagged_Repl) We take the following as an axiom:
∀alpha Y, ordinal alphaalpha {y '|yY}
Definition. We define SNoElts_ to be λalpha ⇒ alpha {beta '|betaalpha} of type setset.
Axiom. (SNoElts_mon) We take the following as an axiom:
∀alpha beta, alpha betaSNoElts_ alpha SNoElts_ beta
Definition. We define SNo_ to be λalpha x ⇒ x SNoElts_ alpha betaalpha, exactly1of2 (beta ' x) (beta x) of type setsetprop.
Definition. We define PSNo to be λalpha p ⇒ {betaalpha|p beta} {beta '|betaalpha, ¬ 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 ⇒ beta PSNo 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 ⇒ beta x)
Primitive. 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
Primitive. 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 xalpha beta
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 ⇒ beta x)
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 x SNoLev y(alphaSNoLev x, alpha x alpha y)x y
Definition. We define SNoEq_ to be λalpha x y ⇒ PNoEq_ alpha (λbeta ⇒ beta x) (λbeta ⇒ beta y) of type setsetsetprop.
Axiom. (SNoEq_I) We take the following as an axiom:
∀alpha x y, (betaalpha, beta x beta y)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 ⇒ beta x) (SNoLev y) (λbeta ⇒ beta y) 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 ⇒ beta x) (SNoLev y) (λbeta ⇒ beta y) 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 < yx y
Axiom. (SNoLeE) We take the following as an axiom:
∀x y, SNo xSNo yx yx < y x = 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 z SNoLev x SNoLev ySNoEq_ (SNoLev z) z xSNoEq_ (SNoLev z) z yx < zz < ySNoLev z xSNoLev z yp)(SNoLev x SNoLev ySNoEq_ (SNoLev x) x ySNoLev x yp)(SNoLev y SNoLev xSNoEq_ (SNoLev y) x ySNoLev y xp)p
Axiom. (SNoLtI2) We take the following as an axiom:
∀x y, SNoLev x SNoLev ySNoEq_ (SNoLev x) x ySNoLev x yx < y
Axiom. (SNoLtI3) We take the following as an axiom:
∀x y, SNoLev y SNoLev xSNoEq_ (SNoLev y) x ySNoLev y xx < 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 < y x = y y < 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 yx yy xx = y
Axiom. (SNoLtLe_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < yy zx < z
Axiom. (SNoLeLt_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx yy < zx < z
Axiom. (SNoLe_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx yy zx z
Axiom. (SNoLtLe_or) We take the following as an axiom:
∀x y, SNo xSNo yx < y y x
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 alpha PSNo alpha p L) (λalpha p ⇒ ordinal alpha PSNo alpha p R)) (PNo_pred (λalpha p ⇒ ordinal alpha PSNo alpha p L) (λalpha p ⇒ ordinal alpha PSNo alpha p R)) of type setsetset.
Definition. We define SNoCutP to be λL R ⇒ (xL, SNo x) (yR, SNo y) (xL, yR, 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 ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) (xL, x < SNoCut L R) (yR, SNoCut L R < y) (∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (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 ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y)))(xL, x < SNoCut L R)(yR, SNoCut L R < y)(∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z)p)p
Axiom. (SNoCutP_L_0) We take the following as an axiom:
∀L, (xL, SNo x)SNoCutP L 0
Axiom. (SNoCutP_0_R) We take the following as an axiom:
∀R, (xR, 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)|betaalpha, SNo_ beta x} of type setset.
Axiom. (SNoS_E) We take the following as an axiom:
∀alpha, ordinal alphaxSNoS_ alpha, betaalpha, 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, betaalpha, SNo_ beta xx SNoS_ alpha
Axiom. (SNoS_I2) We take the following as an axiom:
∀x y, SNo xSNo ySNoLev x SNoLev yx SNoS_ (SNoLev y)
Axiom. (SNoS_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha betaSNoS_ alpha SNoS_ 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 alphaxSNoS_ alpha, ∀p : prop, (SNoLev x alphaordinal (SNoLev x)SNo xSNo_ (SNoLev x) xp)p
Axiom. (SNoS_In_neq) We take the following as an axiom:
∀w, SNo wxSNoS_ (SNoLev w), x w
Axiom. (SNoS_SNoLev) We take the following as an axiom:
∀z, SNo zz SNoS_ (ordsucc (SNoLev z))
Definition. We define SNoL to be λz ⇒ {xSNoS_ (SNoLev z)|x < z} of type setset.
Definition. We define SNoR to be λz ⇒ {ySNoS_ (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 xwSNoL x, ∀p : prop, (SNo wSNoLev w SNoLev xw < xp)p
Axiom. (SNoR_E) We take the following as an axiom:
∀x, SNo xzSNoR x, ∀p : prop, (SNo zSNoLev z SNoLev xx < zp)p
Axiom. (SNoL_SNoS_) We take the following as an axiom:
∀z, SNoL z SNoS_ (SNoLev z)
Axiom. (SNoR_SNoS_) We take the following as an axiom:
∀z, SNoR z SNoS_ (SNoLev z)
Axiom. (SNoL_SNoS) We take the following as an axiom:
∀x, SNo xwSNoL x, w SNoS_ (SNoLev x)
Axiom. (SNoR_SNoS) We take the following as an axiom:
∀x, SNo xzSNoR x, z SNoS_ (SNoLev x)
Axiom. (SNoL_I) We take the following as an axiom:
∀z, SNo z∀x, SNo xSNoLev x SNoLev zx < zx SNoL z
Axiom. (SNoR_I) We take the following as an axiom:
∀z, SNo z∀y, SNo ySNoLev y SNoLev zz < yy SNoR 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 RxL, x < SNoCut L R
Axiom. (SNoCutP_SNoCut_R) We take the following as an axiom:
∀L R, SNoCutP L RyR, SNoCut L R < y
Axiom. (SNoCutP_SNoCut_fst) We take the following as an axiom:
∀L R, SNoCutP L R∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (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(wL1, w < SNoCut L2 R2)(zR2, SNoCut L1 R1 < z)SNoCut L1 R1 SNoCut L2 R2
Axiom. (SNoCut_ext) We take the following as an axiom:
∀L1 R1 L2 R2, SNoCutP L1 R1SNoCutP L2 R2(wL1, w < SNoCut L2 R2)(zR1, SNoCut L2 R2 < z)(wL2, w < SNoCut L1 R1)(zR2, 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, (zSNoL y, z SNoR xp)(x SNoL yp)(y SNoR xp)p
Axiom. (SNoL_or_SNoR_impred) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (x = yp)(zSNoL y, z SNoR xp)(x SNoL yp)(y SNoR xp)(zSNoR y, z SNoL xp)(x SNoR yp)(y SNoL 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 z alphaz < 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:
Axiom. (omega_SNoS_omega) We take the following as an axiom:
Axiom. (ordinal_In_SNoLt) We take the following as an axiom:
∀alpha, ordinal alphabetaalpha, beta < alpha
Axiom. (ordinal_SNoLev_max_2) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo zSNoLev z ordsucc alphaz alpha
Axiom. (ordinal_Subq_SNoLe) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha betaalpha beta
Axiom. (ordinal_SNoLt_In) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha < betaalpha beta
Axiom. (omega_nonneg) We take the following as an axiom:
Axiom. (SNo_0) We take the following as an axiom:
Axiom. (SNo_1) We take the following as an axiom:
Axiom. (SNo_2) We take the following as an axiom:
Axiom. (SNoLev_0) We take the following as an axiom:
Axiom. (SNoCut_0_0) We take the following as an axiom:
Axiom. (SNoL_0) We take the following as an axiom:
Axiom. (SNoR_0) We take the following as an axiom:
Axiom. (SNoL_1) We take the following as an axiom:
Axiom. (SNoR_1) We take the following as an axiom:
Axiom. (SNo_max_SNoLev) We take the following as an axiom:
∀x, SNo x(ySNoS_ (SNoLev x), y < x)SNoLev x = x
Axiom. (SNo_max_ordinal) We take the following as an axiom:
∀x, SNo x(ySNoS_ (SNoLev x), y < x)ordinal x
Axiom. (pos_low_eq_one) We take the following as an axiom:
∀x, SNo x0 < xSNoLev x 1x = 1
Definition. We define SNo_extend0 to be λx ⇒ PSNo (ordsucc (SNoLev x)) (λdelta ⇒ delta x delta SNoLev x) of type setset.
Definition. We define SNo_extend1 to be λx ⇒ PSNo (ordsucc (SNoLev x)) (λdelta ⇒ delta x delta = 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 x SNo_extend0 x
Axiom. (SNo_extend1_In) We take the following as an axiom:
∀x, SNo xSNoLev x SNo_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) '|mn} of type setset.
Axiom. (eps_ordinal_In_eq_0) We take the following as an axiom:
∀n alpha, ordinal alphaalpha eps_ nalpha = 0
Axiom. (eps_0_1) We take the following as an axiom:
Axiom. (SNo__eps_) We take the following as an axiom:
Axiom. (SNo_eps_) We take the following as an axiom:
Axiom. (SNo_eps_1) We take the following as an axiom:
Axiom. (SNoLev_eps_) We take the following as an axiom:
Axiom. (SNo_eps_SNoS_omega) We take the following as an axiom:
Axiom. (SNo_eps_decr) We take the following as an axiom:
Axiom. (SNo_eps_pos) We take the following as an axiom:
Axiom. (SNo_pos_eps_Lt) We take the following as an axiom:
∀n, nat_p nxSNoS_ (ordsucc n), 0 < xeps_ n < x
Axiom. (SNo_pos_eps_Le) We take the following as an axiom:
∀n, nat_p nxSNoS_ (ordsucc (ordsucc n)), 0 < xeps_ n x
Axiom. (eps_SNo_eq) We take the following as an axiom:
∀n, nat_p nxSNoS_ (ordsucc n), 0 < xSNoEq_ (SNoLev x) (eps_ n) xmn, x = eps_ m
Axiom. (eps_SNoCutP) We take the following as an axiom:
Axiom. (eps_SNoCut) We take the following as an axiom:
End of Section TaggedSets2
Axiom. (SNo_etaE) We take the following as an axiom:
∀z, SNo z∀p : prop, (∀L R, SNoCutP L R(xL, SNoLev x SNoLev z)(yR, SNoLev y SNoLev z)z = SNoCut L Rp)p
Axiom. (SNo_ind) We take the following as an axiom:
∀P : setprop, (∀L R, SNoCutP L R(xL, P x)(yR, 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 z SNoS_ (ordsucc alpha) then F z (λw ⇒ g (SNoLev w) w) else default) (λz : setdefault)
Primitive. The name SNo_rec_i is a term of type setset.
Hypothesis Fr : ∀z, SNo z∀g h : setset, (wSNoS_ (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 (z SNoS_ (ordsucc alpha)) (F z (λw ⇒ g (SNoLev w) w)) default) (λz : setdefault)
Primitive. The name SNo_rec_ii is a term of type set(setset).
Hypothesis Fr : ∀z, SNo z∀g h : set(setset), (wSNoS_ (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
Primitive. The name SNo_rec2 is a term of type setsetset.
Hypothesis Fr : ∀w, SNo w∀z, SNo z∀g h : setsetset, (xSNoS_ (SNoLev w), ∀y, SNo yg x y = h x y)(ySNoS_ (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, (xSNoS_ (SNoLev w), f x = k x)∀z, SNo z∀g h : setset, (uSNoS_ (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 alphaxSNoS_ 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 betaxSNoS_ alpha, ySNoS_ 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 gammaxSNoS_ alpha, ySNoS_ beta, zSNoS_ 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(wSNoS_ (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(wSNoS_ (SNoLev x), P w y)(zSNoS_ (SNoLev y), P x z)(wSNoS_ (SNoLev x), zSNoS_ (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(uSNoS_ (SNoLev x), P u y z)(vSNoS_ (SNoLev y), P x v z)(wSNoS_ (SNoLev z), P x y w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), P u v z)(uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), P u y w)(vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), P x v w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (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 xalphaSNoLev x, SNo_ alpha (x SNoElts_ alpha)
Axiom. (restr_SNo) We take the following as an axiom:
∀x, SNo xalphaSNoLev x, SNo (x SNoElts_ alpha)
Axiom. (restr_SNoLev) We take the following as an axiom:
∀x, SNo xalphaSNoLev x, SNoLev (x SNoElts_ alpha) = alpha
Axiom. (restr_SNoEq) We take the following as an axiom:
∀x, SNo xalphaSNoLev x, SNoEq_ alpha (x SNoElts_ alpha) x
Axiom. (SNo_extend0_restr_eq) We take the following as an axiom:
∀x, SNo xx = SNo_extend0 x SNoElts_ (SNoLev x)
Axiom. (SNo_extend1_restr_eq) We take the following as an axiom:
∀x, SNo xx = SNo_extend1 x SNoElts_ (SNoLev x)
Beginning of Section SurrealMinus
Primitive. 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|zSNoR x} {- w|wSNoL x}
Axiom. (minus_SNo_prop1) We take the following as an axiom:
∀x, SNo xSNo (- x) (uSNoL x, - x < - u) (uSNoR x, - u < - x) SNoCutP {- z|zSNoR x} {- w|wSNoL 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 yx y- y - x
Axiom. (minus_SNo_SNoCutP) We take the following as an axiom:
∀x, SNo xSNoCutP {- z|zSNoR x} {- w|wSNoL x}
Axiom. (minus_SNo_SNoCutP_gen) We take the following as an axiom:
∀L R, SNoCutP L RSNoCutP {- z|zR} {- w|wL}
Axiom. (minus_SNo_Lev_lem1) We take the following as an axiom:
∀alpha, ordinal alphaxSNoS_ 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, x SNoS_ alpha- x SNoS_ 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|zR} {- w|wL}
Axiom. (minus_SNoCut_eq) We take the following as an axiom:
∀L R, SNoCutP L R- SNoCut L R = SNoCut {- z|zR} {- w|wL}
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 z ordsucc alpha- alpha z
Axiom. (minus_SNo_SNoS_omega) We take the following as an axiom:
Axiom. (SNoL_minus_SNoR) We take the following as an axiom:
∀x, SNo xSNoL (- x) = {- w|wSNoR x}
End of Section SurrealMinus
Beginning of Section SurrealAdd
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Primitive. The name add_SNo is a term 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.
Axiom. (add_SNo_eq) We take the following as an axiom:
∀x, SNo x∀y, SNo yx + y = SNoCut ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Axiom. (add_SNo_prop1) We take the following as an axiom:
∀x y, SNo xSNo ySNo (x + y) (uSNoL x, u + y < x + y) (uSNoR x, x + y < u + y) (uSNoL y, x + u < x + y) (uSNoR y, x + y < x + u) SNoCutP ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Axiom. (SNo_add_SNo) We take the following as an axiom:
∀x y, SNo xSNo ySNo (x + y)
Axiom. (SNo_add_SNo_3) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zSNo (x + y + z)
Axiom. (SNo_add_SNo_3c) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zSNo (x + y + - z)
Axiom. (SNo_add_SNo_4) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wSNo (x + y + z + w)
Axiom. (add_SNo_Lt1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < zx + y < z + y
Axiom. (add_SNo_Le1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx zx + y z + y
Axiom. (add_SNo_Lt2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zy < zx + y < x + z
Axiom. (add_SNo_Le2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zy zx + y x + z
Axiom. (add_SNo_Lt3a) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx < zy wx + y < z + w
Axiom. (add_SNo_Lt3b) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx zy < wx + y < z + w
Axiom. (add_SNo_Lt3) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx < zy < wx + y < z + w
Axiom. (add_SNo_Le3) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx zy wx + y z + w
Axiom. (add_SNo_SNoCutP) We take the following as an axiom:
∀x y, SNo xSNo ySNoCutP ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Axiom. (add_SNo_com) We take the following as an axiom:
∀x y, SNo xSNo yx + y = y + x
Axiom. (add_SNo_0L) We take the following as an axiom:
∀x, SNo x0 + x = x
Axiom. (add_SNo_0R) We take the following as an axiom:
∀x, SNo xx + 0 = x
Axiom. (add_SNo_minus_SNo_linv) We take the following as an axiom:
∀x, SNo x- x + x = 0
Axiom. (add_SNo_minus_SNo_rinv) We take the following as an axiom:
∀x, SNo xx + - x = 0
Axiom. (add_SNo_ordinal_SNoCutP) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaSNoCutP ({x + beta|xSNoS_ alpha} {alpha + x|xSNoS_ beta}) Empty
Axiom. (add_SNo_ordinal_eq) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaalpha + beta = SNoCut ({x + beta|xSNoS_ alpha} {alpha + x|xSNoS_ beta}) Empty
Axiom. (add_SNo_ordinal_ordinal) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaordinal (alpha + beta)
Axiom. (add_SNo_ordinal_SL) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaordsucc alpha + beta = ordsucc (alpha + beta)
Axiom. (add_SNo_ordinal_SR) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaalpha + ordsucc beta = ordsucc (alpha + beta)
Axiom. (add_SNo_ordinal_InL) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betagammaalpha, gamma + beta alpha + beta
Axiom. (add_SNo_ordinal_InR) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betagammabeta, alpha + gamma alpha + beta
Axiom. (add_nat_add_SNo) We take the following as an axiom:
Axiom. (add_SNo_In_omega) We take the following as an axiom:
Axiom. (add_SNo_1_1_2) We take the following as an axiom:
1 + 1 = 2
Axiom. (add_SNo_SNoL_interpolate) We take the following as an axiom:
∀x y, SNo xSNo yuSNoL (x + y), (vSNoL x, u v + y) (vSNoL y, u x + v)
Axiom. (add_SNo_SNoR_interpolate) We take the following as an axiom:
∀x y, SNo xSNo yuSNoR (x + y), (vSNoR x, v + y u) (vSNoR y, x + v u)
Axiom. (add_SNo_assoc) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + (y + z) = (x + y) + z
Axiom. (add_SNo_cancel_L) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + y = x + zy = z
Axiom. (minus_SNo_0) We take the following as an axiom:
- 0 = 0
Axiom. (minus_add_SNo_distr) We take the following as an axiom:
∀x y, SNo xSNo y- (x + y) = (- x) + (- y)
Axiom. (minus_add_SNo_distr_3) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z- (x + y + z) = - x + - y + - z
Axiom. (add_SNo_Lev_bd) We take the following as an axiom:
∀x y, SNo xSNo ySNoLev (x + y) SNoLev x + SNoLev y
Axiom. (add_SNo_SNoS_omega) We take the following as an axiom:
Axiom. (add_SNo_minus_R2) We take the following as an axiom:
∀x y, SNo xSNo y(x + y) + - y = x
Axiom. (add_SNo_minus_R2') We take the following as an axiom:
∀x y, SNo xSNo y(x + - y) + y = x
Axiom. (add_SNo_minus_L2) We take the following as an axiom:
∀x y, SNo xSNo y- x + (x + y) = y
Axiom. (add_SNo_minus_L2') We take the following as an axiom:
∀x y, SNo xSNo yx + (- x + y) = y
Axiom. (add_SNo_Lt1_cancel) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + y < z + yx < z
Axiom. (add_SNo_Lt2_cancel) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + y < x + zy < z
Axiom. (add_SNo_assoc_4) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx + y + z + w = (x + y + z) + w
Axiom. (add_SNo_com_3_0_1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + y + z = y + x + z
Axiom. (add_SNo_com_3b_1_2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z(x + y) + z = (x + z) + y
Axiom. (add_SNo_com_4_inner_mid) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w(x + y) + (z + w) = (x + z) + (y + w)
Axiom. (add_SNo_rotate_3_1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + y + z = z + x + y
Axiom. (add_SNo_rotate_4_1) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx + y + z + w = w + x + y + z
Axiom. (add_SNo_rotate_5_1) We take the following as an axiom:
∀x y z w v, SNo xSNo ySNo zSNo wSNo vx + y + z + w + v = v + x + y + z + w
Axiom. (add_SNo_rotate_5_2) We take the following as an axiom:
∀x y z w v, SNo xSNo ySNo zSNo wSNo vx + y + z + w + v = w + v + x + y + z
Axiom. (add_SNo_minus_SNo_prop3) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w(x + y + z) + (- z + w) = x + y + w
Axiom. (add_SNo_minus_SNo_prop4) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w(x + y + z) + (w + - z) = x + y + w
Axiom. (add_SNo_minus_SNo_prop5) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w(x + y + - z) + (z + w) = x + y + w
Axiom. (add_SNo_minus_Lt1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + - y < zx < z + y
Axiom. (add_SNo_minus_Lt2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zz < x + - yz + y < x
Axiom. (add_SNo_minus_Lt1b) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < z + yx + - y < z
Axiom. (add_SNo_minus_Lt2b) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zz + y < xz < x + - y
Axiom. (add_SNo_minus_Lt1b3) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx + y < w + zx + y + - z < w
Axiom. (add_SNo_minus_Lt2b3) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo ww + z < x + yw < x + y + - z
Axiom. (add_SNo_minus_Lt_lem) We take the following as an axiom:
∀x y z u v w, SNo xSNo ySNo zSNo uSNo vSNo wx + y + w < u + v + zx + y + - z < u + v + - w
Axiom. (add_SNo_minus_Le2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zz x + - yz + y x
Axiom. (add_SNo_minus_Le2b) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zz + y xz x + - y
Axiom. (add_SNo_Lt_subprop2) We take the following as an axiom:
∀x y z w u v, SNo xSNo ySNo zSNo wSNo uSNo vx + u < z + vy + v < w + ux + y < z + w
Axiom. (add_SNo_Lt_subprop3a) We take the following as an axiom:
∀x y z w u a, SNo xSNo ySNo zSNo wSNo uSNo ax + z < w + ay + a < ux + y + z < w + u
Axiom. (add_SNo_Lt_subprop3b) We take the following as an axiom:
∀x y w u v a, SNo xSNo ySNo wSNo uSNo vSNo ax + a < w + vy < a + ux + y < w + u + v
Axiom. (add_SNo_Lt_subprop3c) We take the following as an axiom:
∀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
Axiom. (add_SNo_Lt_subprop3d) We take the following as an axiom:
∀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
Axiom. (ordinal_ordsucc_SNo_eq) We take the following as an axiom:
∀alpha, ordinal alphaordsucc alpha = 1 + alpha
Axiom. (add_SNo_3a_2b) We take the following as an axiom:
∀x y z w u, SNo xSNo ySNo zSNo wSNo u(x + y + z) + (w + u) = (u + y + z) + (w + x)
Axiom. (add_SNo_1_ordsucc) We take the following as an axiom:
Axiom. (add_SNo_eps_Lt) We take the following as an axiom:
∀x, SNo xnω, x < x + eps_ n
Axiom. (add_SNo_eps_Lt') We take the following as an axiom:
∀x y, SNo xSNo ynω, x < yx < y + eps_ n
Axiom. (SNoLt_minus_pos) We take the following as an axiom:
∀x y, SNo xSNo yx < y0 < y + - x
Axiom. (add_SNo_omega_In_cases) We take the following as an axiom:
∀m, nω, ∀k, nat_p km n + km n m + - n k
Axiom. (add_SNo_Lt4) We take the following as an axiom:
∀x y z w u v, SNo xSNo ySNo zSNo wSNo uSNo vx < wy < uz < vx + y + z < w + u + v
Axiom. (add_SNo_3_3_3_Lt1) We take the following as an axiom:
∀x y z w u, SNo xSNo ySNo zSNo wSNo ux + y < z + wx + y + u < z + w + u
Axiom. (add_SNo_3_2_3_Lt1) We take the following as an axiom:
∀x y z w u, SNo xSNo ySNo zSNo wSNo uy + x < z + wx + u + y < z + w + u
End of Section SurrealAdd
Beginning of Section SurrealMul
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 360 and which associates to the right corresponding to applying term add_SNo.
Definition. We define mul_SNo to be SNo_rec2 (λx y m ⇒ SNoCut ({m (w 0) y + m x (w 1) + - m (w 0) (w 1)|wSNoL x SNoL y} {m (z 0) y + m x (z 1) + - m (z 0) (z 1)|zSNoR x SNoR y}) ({m (w 0) y + m x (w 1) + - m (w 0) (w 1)|wSNoL x SNoR y} {m (z 0) y + m x (z 1) + - m (z 0) (z 1)|zSNoR x SNoL y})) of type setsetset.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Axiom. (mul_SNo_eq) We take the following as an axiom:
∀x, SNo x∀y, SNo yx * y = SNoCut ({(w 0) * y + x * (w 1) + - (w 0) * (w 1)|wSNoL x SNoL y} {(z 0) * y + x * (z 1) + - (z 0) * (z 1)|zSNoR x SNoR y}) ({(w 0) * y + x * (w 1) + - (w 0) * (w 1)|wSNoL x SNoR y} {(z 0) * y + x * (z 1) + - (z 0) * (z 1)|zSNoR x SNoL y})
Axiom. (mul_SNo_eq_2) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (∀L R, (∀u, u L(∀q : prop, (w0SNoL x, w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(z0SNoR x, z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q))(w0SNoL x, w1SNoL y, w0 * y + x * w1 + - w0 * w1 L)(z0SNoR x, z1SNoR y, z0 * y + x * z1 + - z0 * z1 L)(∀u, u R(∀q : prop, (w0SNoL x, z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(z0SNoR x, w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q))(w0SNoL x, z1SNoR y, w0 * y + x * z1 + - w0 * z1 R)(z0SNoR x, w1SNoL y, z0 * y + x * w1 + - z0 * w1 R)x * y = SNoCut L Rp)p
Axiom. (mul_SNo_prop_1) We take the following as an axiom:
∀x, SNo x∀y, SNo y∀p : prop, (SNo (x * y)(uSNoL x, vSNoL y, u * y + x * v < x * y + u * v)(uSNoR x, vSNoR y, u * y + x * v < x * y + u * v)(uSNoL x, vSNoR y, x * y + u * v < u * y + x * v)(uSNoR x, vSNoL y, x * y + u * v < u * y + x * v)p)p
Axiom. (SNo_mul_SNo) We take the following as an axiom:
∀x y, SNo xSNo ySNo (x * y)
Axiom. (SNo_mul_SNo_lem) We take the following as an axiom:
∀x y u v, SNo xSNo ySNo uSNo vSNo (u * y + x * v + - (u * v))
Axiom. (SNo_mul_SNo_3) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zSNo (x * y * z)
Axiom. (mul_SNo_eq_3) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (∀L R, SNoCutP L R(∀u, u L(∀q : prop, (w0SNoL x, w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(z0SNoR x, z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q))(w0SNoL x, w1SNoL y, w0 * y + x * w1 + - w0 * w1 L)(z0SNoR x, z1SNoR y, z0 * y + x * z1 + - z0 * z1 L)(∀u, u R(∀q : prop, (w0SNoL x, z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(z0SNoR x, w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q))(w0SNoL x, z1SNoR y, w0 * y + x * z1 + - w0 * z1 R)(z0SNoR x, w1SNoL y, z0 * y + x * w1 + - z0 * w1 R)x * y = SNoCut L Rp)p
Axiom. (mul_SNo_Lt) We take the following as an axiom:
∀x y u v, SNo xSNo ySNo uSNo vu < xv < yu * y + x * v < x * y + u * v
Axiom. (mul_SNo_Le) We take the following as an axiom:
∀x y u v, SNo xSNo ySNo uSNo vu xv yu * y + x * v x * y + u * v
Axiom. (mul_SNo_SNoL_interpolate) We take the following as an axiom:
∀x y, SNo xSNo yuSNoL (x * y), (vSNoL x, wSNoL y, u + v * w v * y + x * w) (vSNoR x, wSNoR y, u + v * w v * y + x * w)
Axiom. (mul_SNo_SNoL_interpolate_impred) We take the following as an axiom:
∀x y, SNo xSNo yuSNoL (x * y), ∀p : prop, (vSNoL x, wSNoL y, u + v * w v * y + x * wp)(vSNoR x, wSNoR y, u + v * w v * y + x * wp)p
Axiom. (mul_SNo_SNoR_interpolate) We take the following as an axiom:
∀x y, SNo xSNo yuSNoR (x * y), (vSNoL x, wSNoR y, v * y + x * w u + v * w) (vSNoR x, wSNoL y, v * y + x * w u + v * w)
Axiom. (mul_SNo_SNoR_interpolate_impred) We take the following as an axiom:
∀x y, SNo xSNo yuSNoR (x * y), ∀p : prop, (vSNoL x, wSNoR y, v * y + x * w u + v * wp)(vSNoR x, wSNoL y, v * y + x * w u + v * wp)p
Axiom. (mul_SNo_Subq_lem) We take the following as an axiom:
∀x y X Y Z W, ∀U U', (∀u, u U(∀q : prop, (w0X, w1Y, u = w0 * y + x * w1 + - w0 * w1q)(z0Z, z1W, u = z0 * y + x * z1 + - z0 * z1q)q))(w0X, w1Y, w0 * y + x * w1 + - w0 * w1 U')(w0Z, w1W, w0 * y + x * w1 + - w0 * w1 U')U U'
Axiom. (mul_SNo_zeroR) We take the following as an axiom:
∀x, SNo xx * 0 = 0
Axiom. (mul_SNo_oneR) We take the following as an axiom:
∀x, SNo xx * 1 = x
Axiom. (mul_SNo_com) We take the following as an axiom:
∀x y, SNo xSNo yx * y = y * x
Axiom. (mul_SNo_minus_distrL) We take the following as an axiom:
∀x y, SNo xSNo y(- x) * y = - x * y
Axiom. (mul_SNo_minus_distrR) We take the following as an axiom:
∀x y, SNo xSNo yx * (- y) = - (x * y)
Axiom. (mul_SNo_distrR) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z(x + y) * z = x * z + y * z
Axiom. (mul_SNo_distrL) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx * (y + z) = x * y + x * z
Beginning of Section mul_SNo_assoc_lems
Variable M : setsetset
Hypothesis DL : ∀x y z, SNo xSNo ySNo zx * (y + z) = x * y + x * z
Hypothesis DR : ∀x y z, SNo xSNo ySNo z(x + y) * z = x * z + y * z
Hypothesis IL : ∀x y, SNo xSNo yuSNoL (x * y), ∀p : prop, (vSNoL x, wSNoL y, u + v * w v * y + x * wp)(vSNoR x, wSNoR y, u + v * w v * y + x * wp)p
Hypothesis IR : ∀x y, SNo xSNo yuSNoR (x * y), ∀p : prop, (vSNoL x, wSNoR y, v * y + x * w u + v * wp)(vSNoR x, wSNoL y, v * y + x * w u + v * wp)p
Hypothesis M_Lt : ∀x y u v, SNo xSNo ySNo uSNo vu < xv < yu * y + x * v < x * y + u * v
Hypothesis M_Le : ∀x y u v, SNo xSNo ySNo uSNo vu xv yu * y + x * v x * y + u * v
Axiom. (mul_SNo_assoc_lem1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z(uSNoS_ (SNoLev x), u * (y * z) = (u * y) * z)(vSNoS_ (SNoLev y), x * (v * z) = (x * v) * z)(wSNoS_ (SNoLev z), x * (y * w) = (x * y) * w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), u * (v * z) = (u * v) * z)(uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), u * (y * w) = (u * y) * w)(vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), x * (v * w) = (x * v) * w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), u * (v * w) = (u * v) * w)∀L, (uL, ∀q : prop, (vSNoL x, wSNoL (y * z), u = v * (y * z) + x * w + - v * wq)(vSNoR x, wSNoR (y * z), u = v * (y * z) + x * w + - v * wq)q)uL, u < (x * y) * z
Axiom. (mul_SNo_assoc_lem2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z(uSNoS_ (SNoLev x), u * (y * z) = (u * y) * z)(vSNoS_ (SNoLev y), x * (v * z) = (x * v) * z)(wSNoS_ (SNoLev z), x * (y * w) = (x * y) * w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), u * (v * z) = (u * v) * z)(uSNoS_ (SNoLev x), wSNoS_ (SNoLev z), u * (y * w) = (u * y) * w)(vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), x * (v * w) = (x * v) * w)(uSNoS_ (SNoLev x), vSNoS_ (SNoLev y), wSNoS_ (SNoLev z), u * (v * w) = (u * v) * w)∀R, (uR, ∀q : prop, (vSNoL x, wSNoR (y * z), u = v * (y * z) + x * w + - v * wq)(vSNoR x, wSNoL (y * z), u = v * (y * z) + x * w + - v * wq)q)uR, (x * y) * z < u
End of Section mul_SNo_assoc_lems
Axiom. (mul_SNo_assoc) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx * (y * z) = (x * y) * z
Axiom. (mul_nat_mul_SNo) We take the following as an axiom:
Axiom. (mul_SNo_In_omega) We take the following as an axiom:
Axiom. (mul_SNo_zeroL) We take the following as an axiom:
∀x, SNo x0 * x = 0
Axiom. (mul_SNo_oneL) We take the following as an axiom:
∀x, SNo x1 * x = x
Axiom. (pos_mul_SNo_Lt) We take the following as an axiom:
∀x y z, SNo x0 < xSNo ySNo zy < zx * y < x * z
Axiom. (nonneg_mul_SNo_Le) We take the following as an axiom:
∀x y z, SNo x0 xSNo ySNo zy zx * y x * z
Axiom. (neg_mul_SNo_Lt) We take the following as an axiom:
∀x y z, SNo xx < 0SNo ySNo zz < yx * y < x * z
Axiom. (pos_mul_SNo_Lt') We take the following as an axiom:
∀x y z, SNo xSNo ySNo z0 < zx < yx * z < y * z
Axiom. (mul_SNo_Lt1_pos_Lt) We take the following as an axiom:
∀x y, SNo xSNo yx < 10 < yx * y < y
Axiom. (nonneg_mul_SNo_Le') We take the following as an axiom:
∀x y z, SNo xSNo ySNo z0 zx yx * z y * z
Axiom. (mul_SNo_Le1_nonneg_Le) We take the following as an axiom:
∀x y, SNo xSNo yx 10 yx * y y
Axiom. (pos_mul_SNo_Lt2) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w0 < x0 < yx < zy < wx * y < z * w
Axiom. (nonneg_mul_SNo_Le2) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w0 x0 yx zy wx * y z * w
Axiom. (mul_SNo_pos_pos) We take the following as an axiom:
∀x y, SNo xSNo y0 < x0 < y0 < x * y
Axiom. (mul_SNo_pos_neg) We take the following as an axiom:
∀x y, SNo xSNo y0 < xy < 0x * y < 0
Axiom. (mul_SNo_neg_pos) We take the following as an axiom:
∀x y, SNo xSNo yx < 00 < yx * y < 0
Axiom. (mul_SNo_neg_neg) We take the following as an axiom:
∀x y, SNo xSNo yx < 0y < 00 < x * y
Axiom. (SNo_sqr_nonneg) We take the following as an axiom:
∀x, SNo x0 x * x
Axiom. (SNo_zero_or_sqr_pos) We take the following as an axiom:
∀x, SNo xx = 0 0 < x * x
Axiom. (SNo_foil) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w(x + y) * (z + w) = x * z + x * w + y * z + y * w
Axiom. (mul_SNo_minus_minus) We take the following as an axiom:
∀x y, SNo xSNo y(- x) * (- y) = x * y
Axiom. (mul_SNo_com_3_0_1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx * y * z = y * x * z
Axiom. (mul_SNo_com_3b_1_2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z(x * y) * z = (x * z) * y
Axiom. (mul_SNo_com_4_inner_mid) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w(x * y) * (z * w) = (x * z) * (y * w)
Axiom. (mul_SNo_rotate_3_1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx * y * z = z * x * y
Axiom. (mul_SNo_rotate_4_1) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx * y * z * w = w * x * y * z
Axiom. (SNo_foil_mm) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w(x + - y) * (z + - w) = x * z + - x * w + - y * z + y * w
Axiom. (mul_SNo_nonzero_cancel) We take the following as an axiom:
∀x y z, SNo xx 0SNo ySNo zx * y = x * zy = z
End of Section SurrealMul
Beginning of Section SurrealExp
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 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Definition. We define exp_SNo_nat to be λn m : setnat_primrec 1 (λ_ r ⇒ n * r) m of type setsetset.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Axiom. (exp_SNo_nat_0) We take the following as an axiom:
∀x, SNo xx ^ 0 = 1
Axiom. (exp_SNo_nat_S) We take the following as an axiom:
∀x, SNo x∀n, nat_p nx ^ (ordsucc n) = x * x ^ n
Axiom. (SNo_exp_SNo_nat) We take the following as an axiom:
∀x, SNo x∀n, nat_p nSNo (x ^ n)
Axiom. (nat_exp_SNo_nat) We take the following as an axiom:
∀x, nat_p x∀n, nat_p nnat_p (x ^ n)
Axiom. (eps_ordsucc_half_add) We take the following as an axiom:
∀n, nat_p neps_ (ordsucc n) + eps_ (ordsucc n) = eps_ n
Axiom. (eps_1_half_eq1) We take the following as an axiom:
Axiom. (eps_1_half_eq2) We take the following as an axiom:
Axiom. (double_eps_1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + x = y + zx = eps_ 1 * (y + z)
Axiom. (exp_SNo_1_bd) We take the following as an axiom:
∀x, SNo x1 x∀n, nat_p n1 x ^ n
Axiom. (exp_SNo_2_bd) We take the following as an axiom:
∀n, nat_p nn < 2 ^ n
Axiom. (mul_SNo_eps_power_2) We take the following as an axiom:
∀n, nat_p neps_ n * 2 ^ n = 1
Axiom. (eps_bd_1) We take the following as an axiom:
Axiom. (mul_SNo_eps_power_2') We take the following as an axiom:
∀n, nat_p n2 ^ n * eps_ n = 1
Axiom. (exp_SNo_nat_mul_add) We take the following as an axiom:
∀x, SNo x∀m, nat_p m∀n, nat_p nx ^ m * x ^ n = x ^ (m + n)
Axiom. (exp_SNo_nat_mul_add') We take the following as an axiom:
∀x, SNo xm nω, x ^ m * x ^ n = x ^ (m + n)
Axiom. (exp_SNo_nat_pos) We take the following as an axiom:
∀x, SNo x0 < x∀n, nat_p n0 < x ^ n
Axiom. (mul_SNo_eps_eps_add_SNo) We take the following as an axiom:
m nω, eps_ m * eps_ n = eps_ (m + n)
Axiom. (SNoS_omega_Lev_equip) We take the following as an axiom:
∀n, nat_p nequip {xSNoS_ ω|SNoLev x = n} (2 ^ n)
Axiom. (SNoS_finite) We take the following as an axiom:
Axiom. (SNoS_omega_SNoL_finite) We take the following as an axiom:
Axiom. (SNoS_omega_SNoR_finite) We take the following as an axiom:
End of Section SurrealExp
Beginning of Section Int
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 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Primitive. The name int is a term of type set.
Axiom. (int_SNo_cases) We take the following as an axiom:
∀p : setprop, (nω, p n)(nω, p (- n))xint, p x
Axiom. (int_3_cases) We take the following as an axiom:
nint, ∀p : prop, (mω, n = - ordsucc mp)(n = 0p)(mω, n = ordsucc mp)p
Axiom. (int_SNo) We take the following as an axiom:
Axiom. (Subq_omega_int) We take the following as an axiom:
Axiom. (int_minus_SNo_omega) We take the following as an axiom:
Axiom. (int_add_SNo_lem) We take the following as an axiom:
nω, ∀m, nat_p m- n + m int
Axiom. (int_add_SNo) We take the following as an axiom:
Axiom. (int_minus_SNo) We take the following as an axiom:
Axiom. (int_mul_SNo) We take the following as an axiom:
End of Section Int
Beginning of Section SurrealAbs
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 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Definition. We define abs_SNo to be λx ⇒ if 0 x then x else - x of type setset.
Axiom. (nonneg_abs_SNo) We take the following as an axiom:
∀x, 0 xabs_SNo x = x
Axiom. (not_nonneg_abs_SNo) We take the following as an axiom:
∀x, ¬ (0 x)abs_SNo x = - x
Axiom. (abs_SNo_0) We take the following as an axiom:
Axiom. (pos_abs_SNo) We take the following as an axiom:
∀x, 0 < xabs_SNo x = x
Axiom. (neg_abs_SNo) We take the following as an axiom:
∀x, SNo xx < 0abs_SNo x = - x
Axiom. (SNo_abs_SNo) We take the following as an axiom:
∀x, SNo xSNo (abs_SNo x)
Axiom. (abs_SNo_Lev) We take the following as an axiom:
∀x, SNo xSNoLev (abs_SNo x) = SNoLev x
Axiom. (abs_SNo_minus) We take the following as an axiom:
∀x, SNo xabs_SNo (- x) = abs_SNo x
Axiom. (abs_SNo_dist_swap) We take the following as an axiom:
∀x y, SNo xSNo yabs_SNo (x + - y) = abs_SNo (y + - x)
Axiom. (SNo_triangle) We take the following as an axiom:
∀x y, SNo xSNo yabs_SNo (x + y) abs_SNo x + abs_SNo y
Axiom. (SNo_triangle2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zabs_SNo (x + - z) abs_SNo (x + - y) + abs_SNo (y + - z)
End of Section SurrealAbs
Beginning of Section SNoMaxMin
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 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Definition. We define SNo_max_of to be λX x ⇒ x X SNo x yX, SNo yy x of type setsetprop.
Definition. We define SNo_min_of to be λX x ⇒ x X SNo x yX, SNo yx y of type setsetprop.
Axiom. (minus_SNo_max_min) We take the following as an axiom:
∀X y, (xX, SNo x)SNo_max_of X ySNo_min_of {- x|xX} (- y)
Axiom. (minus_SNo_max_min') We take the following as an axiom:
∀X y, (xX, SNo x)SNo_max_of {- x|xX} ySNo_min_of X (- y)
Axiom. (minus_SNo_min_max) We take the following as an axiom:
∀X y, (xX, SNo x)SNo_min_of X ySNo_max_of {- x|xX} (- y)
Axiom. (double_SNo_max_1) We take the following as an axiom:
∀x y, SNo xSNo_max_of (SNoL x) y∀z, SNo zx < zy + z < x + xwSNoR z, y + w = x + x
Axiom. (double_SNo_min_1) We take the following as an axiom:
∀x y, SNo xSNo_min_of (SNoR x) y∀z, SNo zz < xx + x < y + zwSNoL z, y + w = x + x
Axiom. (finite_max_exists) We take the following as an axiom:
∀X, (xX, SNo x)finite XX 0x, SNo_max_of X x
Axiom. (finite_min_exists) We take the following as an axiom:
∀X, (xX, SNo x)finite XX 0x, SNo_min_of X x
Axiom. (SNoS_omega_SNoL_max_exists) We take the following as an axiom:
Axiom. (SNoS_omega_SNoR_min_exists) We take the following as an axiom:
End of Section SNoMaxMin
Beginning of Section DiadicRationals
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 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Axiom. (nonneg_diadic_rational_p_SNoS_omega) We take the following as an axiom:
kω, ∀n, nat_p neps_ k * n SNoS_ ω
Definition. We define diadic_rational_p to be λx ⇒ kω, mint, x = eps_ k * m of type setprop.
Axiom. (diadic_rational_p_SNoS_omega) We take the following as an axiom:
Axiom. (int_diadic_rational_p) We take the following as an axiom:
Axiom. (omega_diadic_rational_p) We take the following as an axiom:
Axiom. (eps_diadic_rational_p) We take the following as an axiom:
Axiom. (minus_SNo_diadic_rational_p) We take the following as an axiom:
Axiom. (mul_SNo_diadic_rational_p) We take the following as an axiom:
Axiom. (add_SNo_diadic_rational_p) We take the following as an axiom:
Axiom. (SNoS_omega_diadic_rational_p_lem) We take the following as an axiom:
∀n, nat_p n∀x, SNo xSNoLev x = ndiadic_rational_p x
Axiom. (SNoS_omega_diadic_rational_p) We take the following as an axiom:
Axiom. (mul_SNo_SNoS_omega) We take the following as an axiom:
End of Section DiadicRationals
Beginning of Section SurrealDiv
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 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Definition. We define SNoL_pos to be λx ⇒ {wSNoL x|0 < w} of type setset.
Axiom. (SNo_recip_pos_pos) We take the following as an axiom:
∀x xi, SNo xSNo xi0 < xx * xi = 10 < xi
Axiom. (SNo_recip_lem1) We take the following as an axiom:
∀x x' x'i y y', SNo x0 < xx' SNoL_pos xSNo x'ix' * x'i = 1SNo yx * y < 1SNo y'1 + - x * y' = (1 + - x * y) * (x' + - x) * x'i1 < x * y'
Axiom. (SNo_recip_lem2) We take the following as an axiom:
∀x x' x'i y y', SNo x0 < xx' SNoL_pos xSNo x'ix' * x'i = 1SNo y1 < x * ySNo y'1 + - x * y' = (1 + - x * y) * (x' + - x) * x'ix * y' < 1
Axiom. (SNo_recip_lem3) We take the following as an axiom:
∀x x' x'i y y', SNo x0 < xx' SNoR xSNo x'ix' * x'i = 1SNo yx * y < 1SNo y'1 + - x * y' = (1 + - x * y) * (x' + - x) * x'ix * y' < 1
Axiom. (SNo_recip_lem4) We take the following as an axiom:
∀x x' x'i y y', SNo x0 < xx' SNoR xSNo x'ix' * x'i = 1SNo y1 < x * ySNo y'1 + - x * y' = (1 + - x * y) * (x' + - x) * x'i1 < x * y'
Definition. We define SNo_recipauxset to be λY x X g ⇒ yY{(1 + (x' + - x) * y) * g x'|x'X} of type setsetset(setset)set.
Axiom. (SNo_recipauxset_I) We take the following as an axiom:
∀Y x X, ∀g : setset, yY, x'X, (1 + (x' + - x) * y) * g x' SNo_recipauxset Y x X g
Axiom. (SNo_recipauxset_E) We take the following as an axiom:
∀Y x X, ∀g : setset, zSNo_recipauxset Y x X g, ∀p : prop, (yY, x'X, z = (1 + (x' + - x) * y) * g x'p)p
Axiom. (SNo_recipauxset_ext) We take the following as an axiom:
∀Y x X, ∀g h : setset, (x'X, g x' = h x')SNo_recipauxset Y x X g = SNo_recipauxset Y x X h
Definition. We define SNo_recipaux to be λx g ⇒ nat_primrec ({0},0) (λk p ⇒ (p 0 SNo_recipauxset (p 0) x (SNoR x) g SNo_recipauxset (p 1) x (SNoL_pos x) g,p 1 SNo_recipauxset (p 0) x (SNoL_pos x) g SNo_recipauxset (p 1) x (SNoR x) g)) of type set(setset)setset.
Axiom. (SNo_recipaux_0) We take the following as an axiom:
∀x, ∀g : setset, SNo_recipaux x g 0 = ({0},0)
Axiom. (SNo_recipaux_S) We take the following as an axiom:
∀x, ∀g : setset, ∀n, nat_p nSNo_recipaux x g (ordsucc n) = (SNo_recipaux x g n 0 SNo_recipauxset (SNo_recipaux x g n 0) x (SNoR x) g SNo_recipauxset (SNo_recipaux x g n 1) x (SNoL_pos x) g,SNo_recipaux x g n 1 SNo_recipauxset (SNo_recipaux x g n 0) x (SNoL_pos x) g SNo_recipauxset (SNo_recipaux x g n 1) x (SNoR x) g)
Axiom. (SNo_recipaux_lem1) We take the following as an axiom:
∀x, SNo x0 < x∀g : setset, (x'SNoS_ (SNoLev x), 0 < x'SNo (g x') x' * g x' = 1)∀k, nat_p k(ySNo_recipaux x g k 0, SNo y x * y < 1) (ySNo_recipaux x g k 1, SNo y 1 < x * y)
Axiom. (SNo_recipaux_lem2) We take the following as an axiom:
∀x, SNo x0 < x∀g : setset, (x'SNoS_ (SNoLev x), 0 < x'SNo (g x') x' * g x' = 1)SNoCutP (kωSNo_recipaux x g k 0) (kωSNo_recipaux x g k 1)
Axiom. (SNo_recipaux_ext) We take the following as an axiom:
∀x, SNo x∀g h : setset, (x'SNoS_ (SNoLev x), g x' = h x')∀k, nat_p kSNo_recipaux x g k = SNo_recipaux x h k
Beginning of Section recip_SNo_pos
Let G : set(setset)setλx g ⇒ SNoCut (kωSNo_recipaux x g k 0) (kωSNo_recipaux x g k 1)
Definition. We define recip_SNo_pos to be SNo_rec_i G of type setset.
Axiom. (recip_SNo_pos_eq) We take the following as an axiom:
∀x, SNo xrecip_SNo_pos x = G x recip_SNo_pos
Axiom. (recip_SNo_pos_prop1) We take the following as an axiom:
∀x, SNo x0 < xSNo (recip_SNo_pos x) x * recip_SNo_pos x = 1
Axiom. (SNo_recip_SNo_pos) We take the following as an axiom:
∀x, SNo x0 < xSNo (recip_SNo_pos x)
Axiom. (recip_SNo_pos_invR) We take the following as an axiom:
∀x, SNo x0 < xx * recip_SNo_pos x = 1
Axiom. (recip_SNo_pos_1) We take the following as an axiom:
Axiom. (recip_SNo_pos_is_pos) We take the following as an axiom:
∀x, SNo x0 < x0 < recip_SNo_pos x
Axiom. (recip_SNo_pos_invol) We take the following as an axiom:
∀x, SNo x0 < xrecip_SNo_pos (recip_SNo_pos x) = x
Axiom. (recip_SNo_pos_eps_) We take the following as an axiom:
∀n, nat_p nrecip_SNo_pos (eps_ n) = 2 ^ n
Axiom. (recip_SNo_pos_pow_2) We take the following as an axiom:
∀n, nat_p nrecip_SNo_pos (2 ^ n) = eps_ n
Axiom. (exp_SNo_nat_1) We take the following as an axiom:
∀x, SNo xx ^ 1 = x
Axiom. (recip_SNo_pos_2) We take the following as an axiom:
End of Section recip_SNo_pos
Definition. We define recip_SNo to be λx ⇒ if 0 < x then recip_SNo_pos x else if x < 0 then - recip_SNo_pos (- x) else 0 of type setset.
Axiom. (recip_SNo_poscase) We take the following as an axiom:
∀x, 0 < xrecip_SNo x = recip_SNo_pos x
Axiom. (recip_SNo_negcase) We take the following as an axiom:
∀x, SNo xx < 0recip_SNo x = - recip_SNo_pos (- x)
Axiom. (recip_SNo_0) We take the following as an axiom:
Axiom. (recip_SNo_1) We take the following as an axiom:
Axiom. (SNo_recip_SNo) We take the following as an axiom:
∀x, SNo xSNo (recip_SNo x)
Axiom. (recip_SNo_invR) We take the following as an axiom:
∀x, SNo xx 0x * recip_SNo x = 1
Axiom. (recip_SNo_invL) We take the following as an axiom:
∀x, SNo xx 0recip_SNo x * x = 1
Axiom. (recip_SNo_eps_) We take the following as an axiom:
∀n, nat_p nrecip_SNo (eps_ n) = 2 ^ n
Axiom. (recip_SNo_pow_2) We take the following as an axiom:
∀n, nat_p nrecip_SNo (2 ^ n) = eps_ n
Axiom. (recip_SNo_2) We take the following as an axiom:
Axiom. (recip_SNo_invol) We take the following as an axiom:
∀x, SNo xrecip_SNo (recip_SNo x) = x
Axiom. (recip_SNo_of_pos_is_pos) We take the following as an axiom:
∀x, SNo x0 < x0 < recip_SNo x
Axiom. (recip_SNo_neg') We take the following as an axiom:
∀x, SNo xx < 0recip_SNo x < 0
Definition. We define div_SNo to be λx y ⇒ x * recip_SNo y of type setsetset.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Axiom. (SNo_div_SNo) We take the following as an axiom:
∀x y, SNo xSNo ySNo (x :/: y)
Axiom. (div_SNo_0_num) We take the following as an axiom:
∀x, SNo x0 :/: x = 0
Axiom. (div_SNo_0_denum) We take the following as an axiom:
∀x, SNo xx :/: 0 = 0
Axiom. (mul_div_SNo_invL) We take the following as an axiom:
∀x y, SNo xSNo yy 0(x :/: y) * y = x
Axiom. (mul_div_SNo_invR) We take the following as an axiom:
∀x y, SNo xSNo yy 0y * (x :/: y) = x
Axiom. (mul_div_SNo_R) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z(x :/: y) * z = (x * z) :/: y
Axiom. (mul_div_SNo_L) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zz * (x :/: y) = (z * x) :/: y
Axiom. (div_mul_SNo_invL) We take the following as an axiom:
∀x y, SNo xSNo yy 0(x * y) :/: y = x
Axiom. (div_div_SNo) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z(x :/: y) :/: z = x :/: (y * z)
Axiom. (mul_div_SNo_both) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo w(x :/: y) * (z :/: w) = (x * z) :/: (y * w)
Axiom. (recip_SNo_pos_pos) We take the following as an axiom:
∀x, SNo x0 < x0 < recip_SNo_pos x
Axiom. (recip_SNo_of_neg_is_neg) We take the following as an axiom:
∀x, SNo xx < 0recip_SNo x < 0
Axiom. (div_SNo_pos_pos) We take the following as an axiom:
∀x y, SNo xSNo y0 < x0 < y0 < x :/: y
Axiom. (div_SNo_neg_neg) We take the following as an axiom:
∀x y, SNo xSNo yx < 0y < 00 < x :/: y
Axiom. (div_SNo_pos_neg) We take the following as an axiom:
∀x y, SNo xSNo y0 < xy < 0x :/: y < 0
Axiom. (div_SNo_neg_pos) We take the following as an axiom:
∀x y, SNo xSNo yx < 00 < yx :/: y < 0
Axiom. (div_SNo_pos_LtL) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z0 < yx < z * yx :/: y < z
Axiom. (div_SNo_pos_LtR) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z0 < yz * y < xz < x :/: y
Axiom. (div_SNo_pos_LtL') We take the following as an axiom:
∀x y z, SNo xSNo ySNo z0 < yx :/: y < zx < z * y
Axiom. (div_SNo_pos_LtR') We take the following as an axiom:
∀x y z, SNo xSNo ySNo z0 < yz < x :/: yz * y < x
Axiom. (mul_div_SNo_nonzero_eq) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zy 0x = y * zx :/: y = z
End of Section SurrealDiv
Beginning of Section SurrealSqrt
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 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Definition. We define SNoL_nonneg to be λx ⇒ {wSNoL x|0 w} of type setset.
Axiom. (SNoL_nonneg_0) We take the following as an axiom:
Axiom. (SNoL_nonneg_1) We take the following as an axiom:
Definition. We define SNo_sqrtauxset to be λY Z x ⇒ yY{(x + y * z) :/: (y + z)|zZ, 0 < y + z} of type setsetsetset.
Axiom. (SNo_sqrtauxset_I) We take the following as an axiom:
∀Y Z x, yY, zZ, 0 < y + z(x + y * z) :/: (y + z) SNo_sqrtauxset Y Z x
Axiom. (SNo_sqrtauxset_E) We take the following as an axiom:
∀Y Z x, uSNo_sqrtauxset Y Z x, ∀p : prop, (yY, zZ, 0 < y + zu = (x + y * z) :/: (y + z)p)p
Axiom. (SNo_sqrtauxset_0) We take the following as an axiom:
∀Z x, SNo_sqrtauxset 0 Z x = 0
Axiom. (SNo_sqrtauxset_0') We take the following as an axiom:
∀Y x, SNo_sqrtauxset Y 0 x = 0
Definition. We define SNo_sqrtaux to be λx g ⇒ nat_primrec ({g w|wSNoL_nonneg x},{g z|zSNoR x}) (λk p ⇒ (p 0 SNo_sqrtauxset (p 0) (p 1) x,p 1 SNo_sqrtauxset (p 0) (p 0) x SNo_sqrtauxset (p 1) (p 1) x)) of type set(setset)setset.
Axiom. (SNo_sqrtaux_0) We take the following as an axiom:
∀x, ∀g : setset, SNo_sqrtaux x g 0 = ({g w|wSNoL_nonneg x},{g z|zSNoR x})
Axiom. (SNo_sqrtaux_S) We take the following as an axiom:
∀x, ∀g : setset, ∀n, nat_p nSNo_sqrtaux x g (ordsucc n) = (SNo_sqrtaux x g n 0 SNo_sqrtauxset (SNo_sqrtaux x g n 0) (SNo_sqrtaux x g n 1) x,SNo_sqrtaux x g n 1 SNo_sqrtauxset (SNo_sqrtaux x g n 0) (SNo_sqrtaux x g n 0) x SNo_sqrtauxset (SNo_sqrtaux x g n 1) (SNo_sqrtaux x g n 1) x)
Axiom. (SNo_sqrtaux_mon_lem) We take the following as an axiom:
∀x, ∀g : setset, ∀m, nat_p m∀n, nat_p nSNo_sqrtaux x g m 0 SNo_sqrtaux x g (add_nat m n) 0 SNo_sqrtaux x g m 1 SNo_sqrtaux x g (add_nat m n) 1
Axiom. (SNo_sqrtaux_mon) We take the following as an axiom:
∀x, ∀g : setset, ∀m, nat_p m∀n, nat_p nm nSNo_sqrtaux x g m 0 SNo_sqrtaux x g n 0 SNo_sqrtaux x g m 1 SNo_sqrtaux x g n 1
Axiom. (SNo_sqrtaux_ext) We take the following as an axiom:
∀x, SNo x∀g h : setset, (x'SNoS_ (SNoLev x), g x' = h x')∀k, nat_p kSNo_sqrtaux x g k = SNo_sqrtaux x h k
Beginning of Section sqrt_SNo_nonneg
Let G : set(setset)setλx g ⇒ SNoCut (kωSNo_sqrtaux x g k 0) (kωSNo_sqrtaux x g k 1)
Axiom. (sqrt_SNo_nonneg_eq) We take the following as an axiom:
Axiom. (sqrt_SNo_nonneg_prop1a) We take the following as an axiom:
Axiom. (sqrt_SNo_nonneg_prop1c) We take the following as an axiom:
∀x, SNo x0 xSNoCutP (kωSNo_sqrtaux x sqrt_SNo_nonneg k 0) (kωSNo_sqrtaux x sqrt_SNo_nonneg k 1)(z(kωSNo_sqrtaux x sqrt_SNo_nonneg k 1), ∀p : prop, (SNo z0 zx < z * zp)p)0 G x sqrt_SNo_nonneg
Axiom. (sqrt_SNo_nonneg_prop1) We take the following as an axiom:
End of Section sqrt_SNo_nonneg
Axiom. (SNo_sqrtaux_0_1_prop) We take the following as an axiom:
∀x, SNo x0 x∀k, nat_p k(ySNo_sqrtaux x sqrt_SNo_nonneg k 0, SNo y 0 y y * y < x) (ySNo_sqrtaux x sqrt_SNo_nonneg k 1, SNo y 0 y x < y * y)
Axiom. (SNo_sqrtaux_0_prop) We take the following as an axiom:
∀x, SNo x0 x∀k, nat_p kySNo_sqrtaux x sqrt_SNo_nonneg k 0, SNo y 0 y y * y < x
Axiom. (SNo_sqrtaux_1_prop) We take the following as an axiom:
∀x, SNo x0 x∀k, nat_p kySNo_sqrtaux x sqrt_SNo_nonneg k 1, SNo y 0 y x < y * y
Axiom. (SNo_sqrt_SNo_SNoCutP) We take the following as an axiom:
Axiom. (SNo_sqrt_SNo_nonneg) We take the following as an axiom:
∀x, SNo x0 xSNo (sqrt_SNo_nonneg x)
Axiom. (sqrt_SNo_nonneg_nonneg) We take the following as an axiom:
∀x, SNo x0 x0 sqrt_SNo_nonneg x
Axiom. (sqrt_SNo_nonneg_sqr) We take the following as an axiom:
∀x, SNo x0 xsqrt_SNo_nonneg x * sqrt_SNo_nonneg x = x
Axiom. (sqrt_SNo_nonneg_0) We take the following as an axiom:
Axiom. (sqrt_SNo_nonneg_1) We take the following as an axiom:
End of Section SurrealSqrt
Beginning of Section Reals
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 360 and which associates to the right corresponding to applying term add_SNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term exp_SNo_nat.
Proof:
Let x be given.
Assume Hx.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4.
Let k be given.
Assume Hk.
We will prove qSNoS_ ω, q < x x < q + eps_ k.
We prove the intermediate claim Lk1: SNo (eps_ (ordsucc k)).
An exact proof term for the current goal is SNo_eps_ (ordsucc k) (omega_ordsucc k Hk).
We use x + - eps_ (ordsucc k) to witness the existential quantifier.
Apply andI to the current goal.
We will prove x + - eps_ (ordsucc k) SNoS_ ω.
An exact proof term for the current goal is add_SNo_SNoS_omega x Hx (- eps_ (ordsucc k)) (minus_SNo_SNoS_omega (eps_ (ordsucc k)) (SNo_eps_SNoS_omega (ordsucc k) (omega_ordsucc k Hk))).
Apply andI to the current goal.
We will prove x + - eps_ (ordsucc k) < x.
Apply add_SNo_minus_Lt1b x (eps_ (ordsucc k)) x Hx3 Lk1 Hx3 to the current goal.
We will prove x < x + eps_ (ordsucc k).
An exact proof term for the current goal is add_SNo_eps_Lt x Hx3 (ordsucc k) (omega_ordsucc k Hk).
We will prove x < (x + - eps_ (ordsucc k)) + eps_ k.
rewrite the current goal using eps_ordsucc_half_add k (omega_nat_p k Hk) (from right to left).
We will prove x < (x + - eps_ (ordsucc k)) + (eps_ (ordsucc k) + eps_ (ordsucc k)).
rewrite the current goal using add_SNo_com_4_inner_mid x (- eps_ (ordsucc k)) (eps_ (ordsucc k)) (eps_ (ordsucc k)) Hx3 (SNo_minus_SNo (eps_ (ordsucc k)) Lk1) Lk1 Lk1 (from left to right).
We will prove x < (x + eps_ (ordsucc k)) + (- eps_ (ordsucc k) + eps_ (ordsucc k)).
rewrite the current goal using add_SNo_minus_SNo_linv (eps_ (ordsucc k)) Lk1 (from left to right).
rewrite the current goal using add_SNo_0R (x + eps_ (ordsucc k)) (SNo_add_SNo x (eps_ (ordsucc k)) Hx3 Lk1) (from left to right).
We will prove x < x + eps_ (ordsucc k).
An exact proof term for the current goal is add_SNo_eps_Lt x Hx3 (ordsucc k) (omega_ordsucc k Hk).
Proof:
Let x be given.
Assume Hx1 Hx2.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x Hx1 to the current goal.
Assume Hx1a Hx1b Hx1c Hx1d.
Apply SNoLtE x ω Hx1c SNo_omega Hx2 to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x SNoLev ω.
Assume Hz3: SNoEq_ (SNoLev z) z x.
Assume Hz4: SNoEq_ (SNoLev z) z ω.
Assume Hz5: x < z.
Assume Hz6: z < ω.
Assume Hz7: SNoLev z x.
Assume Hz8: SNoLev z ω.
We prove the intermediate claim Lz1: ordinal (SNoLev z).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hz1.
We prove the intermediate claim Lz2: SNo (SNoLev z).
Apply ordinal_SNo to the current goal.
An exact proof term for the current goal is Lz1.
We use (SNoLev z) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz8.
We will prove x < SNoLev z.
Apply SNoLtLe_tra x z (SNoLev z) Hx1c Hz1 Lz2 Hz5 to the current goal.
We will prove z SNoLev z.
Apply ordinal_SNoLev_max_2 (SNoLev z) Lz1 z Hz1 to the current goal.
We will prove SNoLev z ordsucc (SNoLev z).
Apply ordsuccI2 to the current goal.
Assume H1: SNoLev x SNoLev ω.
Assume H2: SNoEq_ (SNoLev x) x ω.
Assume H3: SNoLev x ω.
We prove the intermediate claim Lx1: ordinal (SNoLev x).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is Hx1c.
We prove the intermediate claim Lx2: ordinal (ordsucc (SNoLev x)).
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Lx1.
We use (ordsucc (SNoLev x)) to witness the existential quantifier.
Apply andI to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H3.
We will prove x < ordsucc (SNoLev x).
Apply ordinal_SNoLev_max (ordsucc (SNoLev x)) Lx2 x Hx1c to the current goal.
We will prove SNoLev x ordsucc (SNoLev x).
Apply ordsuccI2 to the current goal.
rewrite the current goal using ordinal_SNoLev ω omega_ordinal (from left to right).
Assume H1: ω SNoLev x.
We will prove False.
Apply ordsuccE ω (SNoLev x) Hx1a to the current goal.
Assume H2: SNoLev x ω.
An exact proof term for the current goal is In_no2cycle (SNoLev x) ω H2 H1.
Assume H2: SNoLev x = ω.
Apply In_irref ω to the current goal.
rewrite the current goal using H2 (from right to left) at position 2.
An exact proof term for the current goal is H1.
Proof:
Let x be given.
Assume Hx1 Hx2.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x Hx1 to the current goal.
Assume Hx1a Hx1b Hx1c Hx1d.
We prove the intermediate claim Lx1: - x SNoS_ (ordsucc ω).
An exact proof term for the current goal is minus_SNo_SNoS_ (ordsucc ω) ordsucc_omega_ordinal x Hx1.
We prove the intermediate claim Lx2: - x < ω.
Apply minus_SNo_Lt_contra1 ω x SNo_omega Hx1c to the current goal.
We will prove - ω < x.
An exact proof term for the current goal is Hx2.
Apply SNoS_ordsucc_omega_bdd_above (- x) Lx1 Lx2 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: - x < N.
We use N to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN1.
We will prove - N < x.
Apply minus_SNo_Lt_contra1 x N Hx1c (omega_SNo N HN1) to the current goal.
We will prove - x < N.
An exact proof term for the current goal is HN2.
Proof:
Let x be given.
Assume Hx1 Hx2 Hx3.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x Hx1 to the current goal.
Assume Hx1a Hx1b Hx1c Hx1d.
Apply dneg to the current goal.
Assume HC: ¬ (kω, qSNoS_ ω, q < x x < q + eps_ k).
We prove the intermediate claim L1: x SNoS_ ω.
Assume H1: x SNoS_ ω.
Apply HC to the current goal.
An exact proof term for the current goal is SNoS_omega_drat_intvl x H1.
We prove the intermediate claim L2: ∀k, nat_p kqSNoS_ ω, q < x x < q + eps_ k.
Apply nat_ind to the current goal.
We will prove qSNoS_ ω, q < x x < q + eps_ 0.
rewrite the current goal using eps_0_1 (from left to right).
We will prove qSNoS_ ω, q < x x < q + 1.
We prove the intermediate claim L1a: ∀N, nat_p N- N < xx < NqSNoS_ ω, q < x x < q + 1.
Apply nat_ind to the current goal.
rewrite the current goal using minus_SNo_0 (from left to right).
Assume H1: 0 < x.
Assume H2: x < 0.
We will prove False.
Apply SNoLt_irref x to the current goal.
An exact proof term for the current goal is SNoLt_tra x 0 x Hx1c SNo_0 Hx1c H2 H1.
Let N be given.
Assume HN.
Assume IHN: - N < xx < NqSNoS_ ω, q < x x < q + 1.
Assume H1: - ordsucc N < x.
Assume H2: x < ordsucc N.
We will prove qSNoS_ ω, q < x x < q + 1.
We prove the intermediate claim LN1: SNo N.
An exact proof term for the current goal is nat_p_SNo N HN.
We prove the intermediate claim LN2: SNo (- N).
An exact proof term for the current goal is SNo_minus_SNo N LN1.
We prove the intermediate claim LN3: N SNoS_ ω.
Apply omega_SNoS_omega to the current goal.
An exact proof term for the current goal is nat_p_omega N HN.
Apply SNoLt_trichotomy_or_impred x N Hx1c LN1 to the current goal.
Assume H3: x < N.
Apply SNoLt_trichotomy_or_impred x (- N) Hx1c LN2 to the current goal.
Assume H4: x < - N.
We use (- ordsucc N) to witness the existential quantifier.
Apply andI to the current goal.
We will prove - ordsucc N SNoS_ ω.
Apply minus_SNo_SNoS_omega to the current goal.
We will prove ordsucc N SNoS_ ω.
Apply omega_SNoS_omega to the current goal.
Apply omega_ordsucc to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is HN.
Apply andI to the current goal.
We will prove - ordsucc N < x.
An exact proof term for the current goal is H1.
We will prove x < - ordsucc N + 1.
rewrite the current goal using add_SNo_1_ordsucc N (nat_p_omega N HN) (from right to left).
We will prove x < - (N + 1) + 1.
rewrite the current goal using minus_add_SNo_distr N 1 LN1 SNo_1 (from left to right).
We will prove x < (- N + - 1) + 1.
rewrite the current goal using add_SNo_minus_R2' (- N) 1 LN2 SNo_1 (from left to right).
We will prove x < - N.
An exact proof term for the current goal is H4.
Assume H4: x = - N.
We will prove False.
Apply L1 to the current goal.
We will prove x SNoS_ ω.
rewrite the current goal using H4 (from left to right).
Apply minus_SNo_SNoS_omega to the current goal.
We will prove N SNoS_ ω.
An exact proof term for the current goal is LN3.
Assume H4: - N < x.
An exact proof term for the current goal is IHN H4 H3.
Assume H3: x = N.
We will prove False.
Apply L1 to the current goal.
We will prove x SNoS_ ω.
rewrite the current goal using H3 (from left to right).
We will prove N SNoS_ ω.
An exact proof term for the current goal is LN3.
Assume H3: N < x.
We use N to witness the existential quantifier.
Apply andI to the current goal.
We will prove N SNoS_ ω.
An exact proof term for the current goal is LN3.
Apply andI to the current goal.
We will prove N < x.
An exact proof term for the current goal is H3.
We will prove x < N + 1.
rewrite the current goal using add_SNo_1_ordsucc N (nat_p_omega N HN) (from left to right).
We will prove x < ordsucc N.
An exact proof term for the current goal is H2.
Apply SNoS_ordsucc_omega_bdd_above x Hx1 Hx3 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: x < N.
Apply SNoS_ordsucc_omega_bdd_below x Hx1 Hx2 to the current goal.
Let N' be given.
Assume HN'.
Apply HN' to the current goal.
Assume HN'1: N' ω.
Assume HN'2: - N' < x.
Apply SNoLt_trichotomy_or_impred N N' (omega_SNo N HN1) (omega_SNo N' HN'1) to the current goal.
Assume H1: N < N'.
Apply L1a N' (omega_nat_p N' HN'1) HN'2 to the current goal.
We will prove x < N'.
An exact proof term for the current goal is SNoLt_tra x N N' Hx1c (omega_SNo N HN1) (omega_SNo N' HN'1) HN2 H1.
Assume H1: N = N'.
Apply L1a N' (omega_nat_p N' HN'1) HN'2 to the current goal.
We will prove x < N'.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is HN2.
Assume H1: N' < N.
Apply L1a N (omega_nat_p N HN1) to the current goal.
We will prove - N < x.
Apply SNoLt_tra (- N) (- N') x (SNo_minus_SNo N (omega_SNo N HN1)) (SNo_minus_SNo N' (omega_SNo N' HN'1)) Hx1c to the current goal.
We will prove - N < - N'.
Apply minus_SNo_Lt_contra N' N (omega_SNo N' HN'1) (omega_SNo N HN1) to the current goal.
An exact proof term for the current goal is H1.
We will prove - N' < x.
An exact proof term for the current goal is HN'2.
We will prove x < N.
An exact proof term for the current goal is HN2.
Let k be given.
Assume Hk.
Assume IHk.
Apply IHk to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq1: q SNoS_ ω.
Assume H.
Apply H to the current goal.
Assume Hq2: q < x.
Assume Hq3: x < q + eps_ k.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
We will prove qSNoS_ ω, q < x x < q + eps_ (ordsucc k).
Apply SNoLt_trichotomy_or_impred x (q + eps_ (ordsucc k)) Hx1c (SNo_add_SNo q (eps_ (ordsucc k)) Hq1c (SNo_eps_ (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk)))) to the current goal.
Assume H1: x < q + eps_ (ordsucc k).
We use q to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hq1.
Apply andI to the current goal.
An exact proof term for the current goal is Hq2.
An exact proof term for the current goal is H1.
Assume H1: x = q + eps_ (ordsucc k).
We will prove False.
Apply L1 to the current goal.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is add_SNo_SNoS_omega q Hq1 (eps_ (ordsucc k)) (SNo_eps_SNoS_omega (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk))).
Assume H1: q + eps_ (ordsucc k) < x.
We use (q + eps_ (ordsucc k)) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is add_SNo_SNoS_omega q Hq1 (eps_ (ordsucc k)) (SNo_eps_SNoS_omega (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk))).
Apply andI to the current goal.
An exact proof term for the current goal is H1.
We will prove x < (q + eps_ (ordsucc k)) + eps_ (ordsucc k).
rewrite the current goal using add_SNo_assoc q (eps_ (ordsucc k)) (eps_ (ordsucc k)) Hq1c (SNo_eps_ (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk))) (SNo_eps_ (ordsucc k) (omega_ordsucc k (nat_p_omega k Hk))) (from right to left).
We will prove x < q + (eps_ (ordsucc k) + eps_ (ordsucc k)).
rewrite the current goal using eps_ordsucc_half_add k Hk (from left to right).
We will prove x < q + eps_ k.
An exact proof term for the current goal is Hq3.
Apply HC to the current goal.
Let k be given.
Assume Hk.
An exact proof term for the current goal is L2 k (omega_nat_p k Hk).
Definition. We define real to be {xSNoS_ (ordsucc ω)|x ω x - ω (qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)} of type set.
Definition. We define rational to be {xreal|mint, nω {0}, x = m :/: n} of type set.
Theorem. (real_I) The following is provable:
xSNoS_ (ordsucc ω), x ωx - ω(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)x real
Proof:
Let x be given.
Assume Hx H1 H2 H3.
We will prove x {xSNoS_ (ordsucc ω)|x ω x - ω (qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)}.
Apply SepI to the current goal.
An exact proof term for the current goal is Hx.
We will prove x ω x - ω (qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x).
Apply and3I to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
An exact proof term for the current goal is H3.
Theorem. (real_E) The following is provable:
xreal, ∀p : prop, (SNo xSNoLev x ordsucc ωx SNoS_ (ordsucc ω)- ω < xx < ω(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(kω, qSNoS_ ω, q < x x < q + eps_ k)p)p
Proof:
Let x be given.
Assume Hx.
Let p be given.
Assume Hp.
Apply SepE (SNoS_ (ordsucc ω)) (λx ⇒ x ω x - ω (qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)) x Hx to the current goal.
Assume H1 H2.
Apply H2 to the current goal.
Assume H2.
Apply H2 to the current goal.
Assume H2: x ω.
Assume H3: x - ω.
Assume H4.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x H1 to the current goal.
Assume H1a H1b H1c H1d.
We prove the intermediate claim L1: x < ω.
We prove the intermediate claim L1a: x ω.
Apply ordinal_SNoLev_max_2 ω omega_ordinal x H1c to the current goal.
We will prove SNoLev x ordsucc ω.
An exact proof term for the current goal is H1a.
Apply SNoLeE x ω H1c SNo_omega L1a to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: x = ω.
We will prove False.
An exact proof term for the current goal is H2 H.
We prove the intermediate claim L2: - ω < x.
We prove the intermediate claim L2a: - ω x.
Apply mordinal_SNoLev_min_2 ω omega_ordinal x H1c to the current goal.
We will prove SNoLev x ordsucc ω.
An exact proof term for the current goal is H1a.
Apply SNoLeE (- ω) x (SNo_minus_SNo ω SNo_omega) H1c L2a to the current goal.
Assume H.
An exact proof term for the current goal is H.
Assume H: - ω = x.
We will prove False.
Apply H3 to the current goal.
Use symmetry.
An exact proof term for the current goal is H.
We prove the intermediate claim L3: kω, qSNoS_ ω, q < x x < q + eps_ k.
An exact proof term for the current goal is SNoS_ordsucc_omega_bdd_drat_intvl x H1 L2 L1.
An exact proof term for the current goal is Hp H1c H1a H1 L2 L1 H4 L3.
Theorem. (real_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Apply real_E x Hx to the current goal.
Assume Hx1 _ _ _ _ _ _.
An exact proof term for the current goal is Hx1.
Proof:
Let x be given.
Assume Hx.
Apply real_E x Hx to the current goal.
Assume _ _ _ _ _ Hx6 _.
An exact proof term for the current goal is Hx6.
Theorem. (SNoS_omega_real) The following is provable:
Proof:
Let x be given.
Assume Hx: x SNoS_ ω.
Apply SNoS_E2 ω omega_ordinal x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4.
Apply real_I to the current goal.
We will prove x SNoS_ (ordsucc ω).
An exact proof term for the current goal is Hx.
We will prove x ω.
Assume H1: x = ω.
Apply In_irref (SNoLev x) to the current goal.
We will prove SNoLev x SNoLev x.
rewrite the current goal using H1 (from left to right) at position 2.
We will prove SNoLev x SNoLev ω.
rewrite the current goal using ordinal_SNoLev ω omega_ordinal (from left to right).
An exact proof term for the current goal is Hx1.
We will prove x - ω.
Assume H1: x = - ω.
Apply In_irref (SNoLev x) to the current goal.
We will prove SNoLev x SNoLev x.
rewrite the current goal using H1 (from left to right) at position 2.
We will prove SNoLev x SNoLev (- ω).
rewrite the current goal using minus_SNo_Lev ω SNo_omega (from left to right).
We will prove SNoLev x SNoLev ω.
rewrite the current goal using ordinal_SNoLev ω omega_ordinal (from left to right).
An exact proof term for the current goal is Hx1.
Let q be given.
Assume Hq: q SNoS_ ω.
Assume H1: kω, abs_SNo (q + - x) < eps_ k.
Apply SNoS_E2 ω omega_ordinal q Hq to the current goal.
Assume Hq1 Hq2 Hq3 Hq4.
We will prove q = x.
Apply SNoLt_trichotomy_or_impred q x Hq3 Hx3 to the current goal.
Assume Hqx: q < x.
We will prove False.
We prove the intermediate claim L1: 0 < x + - q.
Apply SNoLt_minus_pos q x Hq3 Hx3 to the current goal.
An exact proof term for the current goal is Hqx.
We prove the intermediate claim L2: x + - q SNoS_ ω.
An exact proof term for the current goal is add_SNo_SNoS_omega x Hx (- q) (minus_SNo_SNoS_omega q Hq).
Apply SNoS_E2 ω omega_ordinal (x + - q) L2 to the current goal.
Assume H2: SNoLev (x + - q) ω.
Assume H3: ordinal (SNoLev (x + - q)).
Assume H4: SNo (x + - q).
Assume H5: SNo_ (SNoLev (x + - q)) (x + - q).
Apply SNoLt_irref (x + - q) to the current goal.
Apply SNoLt_tra (x + - q) (eps_ (SNoLev (x + - q))) (x + - q) H4 (SNo_eps_ (SNoLev (x + - q)) H2) H4 to the current goal.
We will prove x + - q < eps_ (SNoLev (x + - q)).
We prove the intermediate claim L3: abs_SNo (q + - x) = x + - q.
rewrite the current goal using abs_SNo_dist_swap q x Hq3 Hx3 (from left to right).
An exact proof term for the current goal is pos_abs_SNo (x + - q) L1.
rewrite the current goal using L3 (from right to left) at position 1.
An exact proof term for the current goal is H1 (SNoLev (x + - q)) H2.
We will prove eps_ (SNoLev (x + - q)) < x + - q.
Apply SNo_pos_eps_Lt (SNoLev (x + - q)) (omega_nat_p (SNoLev (x + - q)) H2) (x + - q) to the current goal.
We will prove (x + - q) SNoS_ (ordsucc (SNoLev (x + - q))).
Apply SNoS_I (ordsucc (SNoLev (x + - q))) (ordinal_ordsucc (SNoLev (x + - q)) H3) (x + - q) (SNoLev (x + - q)) to the current goal.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is L1.
Assume Hqx: q = x.
An exact proof term for the current goal is Hqx.
Assume Hxq: x < q.
We will prove False.
We prove the intermediate claim L4: 0 < q + - x.
Apply SNoLt_minus_pos x q Hx3 Hq3 to the current goal.
An exact proof term for the current goal is Hxq.
We prove the intermediate claim L5: q + - x SNoS_ ω.
An exact proof term for the current goal is add_SNo_SNoS_omega q Hq (- x) (minus_SNo_SNoS_omega x Hx).
Apply SNoS_E2 ω omega_ordinal (q + - x) L5 to the current goal.
Assume H2: SNoLev (q + - x) ω.
Assume H3: ordinal (SNoLev (q + - x)).
Assume H4: SNo (q + - x).
Assume H5: SNo_ (SNoLev (q + - x)) (q + - x).
Apply SNoLt_irref (q + - x) to the current goal.
Apply SNoLt_tra (q + - x) (eps_ (SNoLev (q + - x))) (q + - x) H4 (SNo_eps_ (SNoLev (q + - x)) H2) H4 to the current goal.
We will prove q + - x < eps_ (SNoLev (q + - x)).
We prove the intermediate claim L6: abs_SNo (q + - x) = q + - x.
An exact proof term for the current goal is pos_abs_SNo (q + - x) L4.
rewrite the current goal using L6 (from right to left) at position 1.
An exact proof term for the current goal is H1 (SNoLev (q + - x)) H2.
We will prove eps_ (SNoLev (q + - x)) < q + - x.
Apply SNo_pos_eps_Lt (SNoLev (q + - x)) (omega_nat_p (SNoLev (q + - x)) H2) (q + - x) to the current goal.
We will prove (q + - x) SNoS_ (ordsucc (SNoLev (q + - x))).
Apply SNoS_I (ordsucc (SNoLev (q + - x))) (ordinal_ordsucc (SNoLev (q + - x)) H3) (q + - x) (SNoLev (q + - x)) to the current goal.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is L4.
Theorem. (real_0) The following is provable:
Proof:
An exact proof term for the current goal is SNoS_omega_real 0 (omega_SNoS_omega 0 (nat_p_omega 0 nat_0)).
Theorem. (real_1) The following is provable:
Proof:
An exact proof term for the current goal is SNoS_omega_real 1 (omega_SNoS_omega 1 (nat_p_omega 1 nat_1)).
Theorem. (SNoLev_In_real_SNoS_omega) The following is provable:
xreal, ∀w, SNo wSNoLev w SNoLev xw SNoS_ ω
Proof:
Let x be given.
Assume Hx.
Let w be given.
Assume Hw1 Hw2.
Apply real_E x Hx to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ω.
Assume _ _ _ _ _.
We prove the intermediate claim L1: SNoLev w ω.
Apply ordsuccE ω (SNoLev x) Hx2 to the current goal.
Assume H1: SNoLev x ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) H1 (SNoLev w) Hw2.
Assume H1: SNoLev x = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hw2.
Apply SNoS_I ω omega_ordinal w (SNoLev w) L1 to the current goal.
We will prove SNo_ (SNoLev w) w.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hw1.
Theorem. (real_SNoCut_SNoS_omega) The following is provable:
L RSNoS_ ω, SNoCutP L RL 0R 0(wL, w'L, w < w')(zR, z'R, z' < z)SNoCut L R real
Proof:
Let L be given.
Assume HL.
Let R be given.
Assume HR.
Assume HLR.
Apply HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume HLR1: wL, SNo w.
Assume HLR2: zR, SNo z.
Assume HLR3: wL, zR, w < z.
Assume HL0: L 0.
Assume HR0: R 0.
Assume HL1: wL, w'L, w < w'.
Assume HR1: zR, z'R, z' < z.
Set x to be the term SNoCut L R.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo x.
Assume H3: wL, w < x.
Assume H4: zR, x < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev x SNoLev u SNoEq_ (SNoLev x) x u.
We prove the intermediate claim Lo: ordinal ((wLordsucc (SNoLev w)) (zRordsucc (SNoLev z))).
Apply ordinal_binunion to the current goal.
Apply ordinal_famunion to the current goal.
Let w be given.
Assume Hw.
We will prove ordinal (ordsucc (SNoLev w)).
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev w).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is HLR1 w Hw.
Apply ordinal_famunion to the current goal.
Let z be given.
Assume Hz.
We will prove ordinal (ordsucc (SNoLev z)).
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev z).
Apply SNoLev_ordinal to the current goal.
An exact proof term for the current goal is HLR2 z Hz.
We prove the intermediate claim LLRsoo: ordsucc ((wLordsucc (SNoLev w)) (zRordsucc (SNoLev z))) ordsucc ω.
We will prove ((wLordsucc (SNoLev w)) (zRordsucc (SNoLev z))) ordsucc ω.
Assume H6.
An exact proof term for the current goal is H6.
We will prove False.
Apply binunionE (wLordsucc (SNoLev w)) (zRordsucc (SNoLev z)) ω (H6 ω (ordsuccI2 ω)) to the current goal.
Assume H7: ω wLordsucc (SNoLev w).
Apply famunionE_impred L (λw ⇒ ordsucc (SNoLev w)) ω H7 to the current goal.
Let w be given.
Assume Hw: w L.
Assume H8: ω ordsucc (SNoLev w).
Apply SNoS_E2 ω omega_ordinal w (HL w Hw) to the current goal.
Assume Hw1: SNoLev w ω.
We will prove False.
Apply ordsuccE (SNoLev w) ω H8 to the current goal.
Assume H9: ω SNoLev w.
An exact proof term for the current goal is In_no2cycle ω (SNoLev w) H9 Hw1.
Assume H9: ω = SNoLev w.
We will prove False.
Apply In_irref ω to the current goal.
rewrite the current goal using H9 (from left to right) at position 1.
An exact proof term for the current goal is Hw1.
Assume H7: ω zRordsucc (SNoLev z).
Apply famunionE_impred R (λz ⇒ ordsucc (SNoLev z)) ω H7 to the current goal.
Let z be given.
Assume Hz: z R.
Assume H8: ω ordsucc (SNoLev z).
Apply SNoS_E2 ω omega_ordinal z (HR z Hz) to the current goal.
Assume Hz1: SNoLev z ω.
We will prove False.
Apply ordsuccE (SNoLev z) ω H8 to the current goal.
Assume H9: ω SNoLev z.
An exact proof term for the current goal is In_no2cycle ω (SNoLev z) H9 Hz1.
Assume H9: ω = SNoLev z.
We will prove False.
Apply In_irref ω to the current goal.
rewrite the current goal using H9 (from left to right) at position 1.
An exact proof term for the current goal is Hz1.
Apply ordsuccE ω (SNoLev x) (LLRsoo (SNoLev x) H2) to the current goal.
Assume H6: SNoLev x ω.
We will prove x real.
Apply SNoS_omega_real to the current goal.
We will prove x SNoS_ ω.
Apply SNoS_I ω omega_ordinal x (SNoLev x) H6 to the current goal.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is H1.
Assume H6: SNoLev x = ω.
We will prove x real.
Apply real_I to the current goal.
We will prove x SNoS_ (ordsucc ω).
Apply SNoS_I (ordsucc ω) ordsucc_omega_ordinal x (SNoLev x) to the current goal.
We will prove SNoLev x ordsucc ω.
rewrite the current goal using H6 (from left to right).
Apply ordsuccI2 to the current goal.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is H1.
Assume H7: x = ω.
Apply HR0 to the current goal.
Apply Empty_eq to the current goal.
Let z be given.
Assume Hz: z R.
Apply SNoLt_irref z to the current goal.
We will prove z < z.
Apply SNoLt_tra z x z (HLR2 z Hz) H1 (HLR2 z Hz) to the current goal.
We will prove z < x.
rewrite the current goal using H7 (from left to right).
We will prove z < ω.
Apply ordinal_SNoLev_max ω omega_ordinal z (HLR2 z Hz) to the current goal.
We will prove SNoLev z ω.
Apply SNoS_E2 ω omega_ordinal z (HR z Hz) to the current goal.
Assume Hz1: SNoLev z ω.
Assume _ _ _.
An exact proof term for the current goal is Hz1.
We will prove x < z.
Apply H4 to the current goal.
An exact proof term for the current goal is Hz.
Assume H7: x = - ω.
Apply HL0 to the current goal.
Apply Empty_eq to the current goal.
Let w be given.
Assume Hw: w L.
Apply SNoLt_irref w to the current goal.
We will prove w < w.
Apply SNoLt_tra w x w (HLR1 w Hw) H1 (HLR1 w Hw) to the current goal.
We will prove w < x.
Apply H3 to the current goal.
An exact proof term for the current goal is Hw.
We will prove x < w.
rewrite the current goal using H7 (from left to right).
We will prove - ω < w.
Apply minus_SNo_Lt_contra1 w ω (HLR1 w Hw) SNo_omega to the current goal.
We will prove - w < ω.
Apply ordinal_SNoLev_max ω omega_ordinal (- w) (SNo_minus_SNo w (HLR1 w Hw)) to the current goal.
We will prove SNoLev (- w) ω.
rewrite the current goal using minus_SNo_Lev w (HLR1 w Hw) (from left to right).
Apply SNoS_E2 ω omega_ordinal w (HL w Hw) to the current goal.
Assume Hw1: SNoLev w ω.
Assume _ _ _.
An exact proof term for the current goal is Hw1.
Let q be given.
Assume Hq: q SNoS_ ω.
Assume H7: kω, abs_SNo (q + - x) < eps_ k.
We will prove False.
Apply SNoS_E2 ω omega_ordinal q Hq to the current goal.
Assume Hq1: SNoLev q ω.
Assume Hq2: ordinal (SNoLev q).
Assume Hq3: SNo q.
Assume Hq4: SNo_ (SNoLev q) q.
We prove the intermediate claim LqL: wL, w < q.
Let w be given.
Assume Hw: w L.
Apply SNoLtLe_or w q (HLR1 w Hw) Hq3 to the current goal.
Assume H8: w < q.
An exact proof term for the current goal is H8.
Assume H8: q w.
We will prove False.
Apply HL1 w Hw to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume H9: w' L.
Assume H10: w < w'.
We prove the intermediate claim LqL1: w' + - q SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is HL w' H9.
Apply minus_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is Hq.
Apply SNoS_E2 ω omega_ordinal (w' + - q) LqL1 to the current goal.
Assume Hw'q1: SNoLev (w' + - q) ω.
Assume Hw'q2: ordinal (SNoLev (w' + - q)).
Assume Hw'q3: SNo (w' + - q).
Assume Hw'q4: SNo_ (SNoLev (w' + - q)) (w' + - q).
We prove the intermediate claim LqL2: 0 < w' + - q.
Apply SNoLt_minus_pos q w' Hq3 (HLR1 w' H9) to the current goal.
We will prove q < w'.
An exact proof term for the current goal is SNoLeLt_tra q w w' Hq3 (HLR1 w Hw) (HLR1 w' H9) H8 H10.
Set k to be the term SNoLev (w' + - q).
We prove the intermediate claim LqL3: w' + - q SNoS_ (ordsucc k).
An exact proof term for the current goal is SNoS_I (ordsucc k) (ordinal_ordsucc k (nat_p_ordinal k (omega_nat_p k Hw'q1))) (w' + - q) k (ordsuccI2 k) Hw'q4.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hw'q1.
We prove the intermediate claim LqL4: eps_ k < w' + - q.
An exact proof term for the current goal is SNo_pos_eps_Lt k (omega_nat_p k Hw'q1) (w' + - q) LqL3 LqL2.
Apply SNoLt_irref (eps_ k) to the current goal.
Apply SNoLt_tra (eps_ k) (w' + - q) (eps_ k) Lek Hw'q3 Lek LqL4 to the current goal.
We will prove w' + - q < eps_ k.
We prove the intermediate claim Lxq: SNo (x + - q).
An exact proof term for the current goal is SNo_add_SNo x (- q) H1 (SNo_minus_SNo q Hq3).
Apply SNoLt_tra (w' + - q) (x + - q) (eps_ k) Hw'q3 Lxq Lek to the current goal.
We will prove w' + - q < x + - q.
Apply add_SNo_Lt1 w' (- q) x (HLR1 w' H9) (SNo_minus_SNo q Hq3) H1 to the current goal.
We will prove w' < x.
Apply H3 to the current goal.
We will prove w' L.
An exact proof term for the current goal is H9.
We will prove x + - q < eps_ k.
Apply SNoLtLe_or (x + - q) 0 Lxq SNo_0 to the current goal.
Assume H11: x + - q < 0.
An exact proof term for the current goal is SNoLt_tra (x + - q) 0 (eps_ k) Lxq SNo_0 Lek H11 (SNo_eps_pos k Hw'q1).
Assume H11: 0 x + - q.
rewrite the current goal using nonneg_abs_SNo (x + - q) H11 (from right to left).
We will prove abs_SNo (x + - q) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap x q H1 Hq3 (from left to right).
An exact proof term for the current goal is H7 k Hw'q1.
We prove the intermediate claim LqR: zR, q < z.
Let z be given.
Assume Hz: z R.
Apply SNoLtLe_or q z Hq3 (HLR2 z Hz) to the current goal.
Assume H8: q < z.
An exact proof term for the current goal is H8.
Assume H8: z q.
We will prove False.
Apply HR1 z Hz to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume H9: z' R.
Assume H10: z' < z.
We prove the intermediate claim LqR1: q + - z' SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is Hq.
Apply minus_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is HR z' H9.
Apply SNoS_E2 ω omega_ordinal (q + - z') LqR1 to the current goal.
Assume Hz'q1: SNoLev (q + - z') ω.
Assume Hz'q2: ordinal (SNoLev (q + - z')).
Assume Hz'q3: SNo (q + - z').
Assume Hz'q4: SNo_ (SNoLev (q + - z')) (q + - z').
We prove the intermediate claim LqR2: 0 < q + - z'.
Apply SNoLt_minus_pos z' q (HLR2 z' H9) Hq3 to the current goal.
We will prove z' < q.
An exact proof term for the current goal is SNoLtLe_tra z' z q (HLR2 z' H9) (HLR2 z Hz) Hq3 H10 H8.
Set k to be the term SNoLev (q + - z').
We prove the intermediate claim LqR3: q + - z' SNoS_ (ordsucc k).
An exact proof term for the current goal is SNoS_I (ordsucc k) (ordinal_ordsucc k (nat_p_ordinal k (omega_nat_p k Hz'q1))) (q + - z') k (ordsuccI2 k) Hz'q4.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hz'q1.
We prove the intermediate claim LqR4: eps_ k < q + - z'.
An exact proof term for the current goal is SNo_pos_eps_Lt k (omega_nat_p k Hz'q1) (q + - z') LqR3 LqR2.
Apply SNoLt_irref (eps_ k) to the current goal.
Apply SNoLt_tra (eps_ k) (q + - z') (eps_ k) Lek Hz'q3 Lek LqR4 to the current goal.
We will prove q + - z' < eps_ k.
We prove the intermediate claim Lxq: SNo (q + - x).
An exact proof term for the current goal is SNo_add_SNo q (- x) Hq3 (SNo_minus_SNo x H1).
Apply SNoLt_tra (q + - z') (q + - x) (eps_ k) Hz'q3 Lxq Lek to the current goal.
We will prove q + - z' < q + - x.
Apply add_SNo_Lt2 q (- z') (- x) Hq3 (SNo_minus_SNo z' (HLR2 z' H9)) (SNo_minus_SNo x H1) to the current goal.
We will prove - z' < - x.
Apply minus_SNo_Lt_contra x z' H1 (HLR2 z' H9) to the current goal.
We will prove x < z'.
Apply H4 to the current goal.
We will prove z' R.
An exact proof term for the current goal is H9.
We will prove q + - x < eps_ k.
Apply SNoLtLe_or (q + - x) 0 Lxq SNo_0 to the current goal.
Assume H11: q + - x < 0.
An exact proof term for the current goal is SNoLt_tra (q + - x) 0 (eps_ k) Lxq SNo_0 Lek H11 (SNo_eps_pos k Hz'q1).
Assume H11: 0 q + - x.
rewrite the current goal using nonneg_abs_SNo (q + - x) H11 (from right to left).
We will prove abs_SNo (q + - x) < eps_ k.
An exact proof term for the current goal is H7 k Hz'q1.
Apply H5 q Hq3 LqL LqR to the current goal.
Assume H10: SNoLev x SNoLev q.
We will prove False.
Apply In_irref (SNoLev q) to the current goal.
Apply H10 to the current goal.
We will prove SNoLev q SNoLev x.
rewrite the current goal using H6 (from left to right).
An exact proof term for the current goal is Hq1.
Theorem. (real_SNoCut) The following is provable:
L Rreal, SNoCutP L RL 0R 0(wL, w'L, w < w')(zR, z'R, z' < z)SNoCut L R real
Proof:
Let L be given.
Assume HL.
Let R be given.
Assume HR.
Assume HLR.
Apply HLR to the current goal.
Assume H.
Apply H to the current goal.
Assume HLR1: wL, SNo w.
Assume HLR2: zR, SNo z.
Assume HLR3: wL, zR, w < z.
Assume HL0: L 0.
Assume HR0: R 0.
Assume HL1: wL, w'L, w < w'.
Assume HR1: zR, z'R, z' < z.
Set x to be the term SNoCut L R.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo x.
Assume H3: wL, w < x.
Assume H4: zR, x < z.
Assume H5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev x SNoLev u SNoEq_ (SNoLev x) x u.
Set L_ to be the term λn ⇒ {w'SNoS_ n|wL, w' w} of type setset.
Set R_ to be the term λn ⇒ {z'SNoS_ n|zR, z z'} of type setset.
Set L' to be the term nωL_ n.
Set R' to be the term nωR_ n.
Set x' to be the term SNoCut L' R'.
We prove the intermediate claim LL'L: w'L', wL, w' w.
Let w' be given.
Assume Hw'.
Apply famunionE_impred ω L_ w' Hw' to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hw'2: w' L_ n.
An exact proof term for the current goal is SepE2 (SNoS_ n) (λw' ⇒ wL, w' w) w' Hw'2.
We prove the intermediate claim LR'R: z'R', zR, z z'.
Let z' be given.
Assume Hz'.
Apply famunionE_impred ω R_ z' Hz' to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hz'2: z' R_ n.
An exact proof term for the current goal is SepE2 (SNoS_ n) (λz' ⇒ zR, z z') z' Hz'2.
We prove the intermediate claim LL'o: L' SNoS_ ω.
Let w' be given.
Assume Hw'.
Apply famunionE_impred ω L_ w' Hw' to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hw'2: w' L_ n.
Apply SNoS_E2 n (nat_p_ordinal n (omega_nat_p n Hn)) w' (SepE1 (SNoS_ n) (λw' ⇒ wL, w' w) w' Hw'2) to the current goal.
Assume Hw'3: SNoLev w' n.
Assume Hw'4: ordinal (SNoLev w').
Assume Hw'5: SNo w'.
Assume Hw'6: SNo_ (SNoLev w') w'.
Apply SNoS_I ω omega_ordinal w' (SNoLev w') to the current goal.
We will prove SNoLev w' ω.
An exact proof term for the current goal is omega_TransSet n Hn (SNoLev w') Hw'3.
An exact proof term for the current goal is Hw'6.
We prove the intermediate claim LR'o: R' SNoS_ ω.
Let z' be given.
Assume Hz'.
Apply famunionE_impred ω R_ z' Hz' to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hz'2: z' R_ n.
Apply SNoS_E2 n (nat_p_ordinal n (omega_nat_p n Hn)) z' (SepE1 (SNoS_ n) (λz' ⇒ zR, z z') z' Hz'2) to the current goal.
Assume Hz'3: SNoLev z' n.
Assume Hz'4: ordinal (SNoLev z').
Assume Hz'5: SNo z'.
Assume Hz'6: SNo_ (SNoLev z') z'.
Apply SNoS_I ω omega_ordinal z' (SNoLev z') to the current goal.
We will prove SNoLev z' ω.
An exact proof term for the current goal is omega_TransSet n Hn (SNoLev z') Hz'3.
An exact proof term for the current goal is Hz'6.
We prove the intermediate claim LL': w'L', SNo w'.
Let w' be given.
Assume Hw'.
Apply SNoS_E2 ω omega_ordinal w' (LL'o w' Hw') to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LR': zR', SNo z.
Let z' be given.
Assume Hz'.
Apply SNoS_E2 ω omega_ordinal z' (LR'o z' Hz') to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LLR': SNoCutP L' R'.
We will prove (wL', SNo w) (zR', SNo z) (wL', zR', w < z).
Apply and3I to the current goal.
An exact proof term for the current goal is LL'.
An exact proof term for the current goal is LR'.
Let w' be given.
Assume Hw'.
Let z' be given.
Assume Hz'.
Apply LL'L w' Hw' to the current goal.
Let w be given.
Assume H.
Apply H to the current goal.
Assume Hw: w L.
Assume Hw'w: w' w.
Apply LR'R z' Hz' to the current goal.
Let z be given.
Assume H.
Apply H to the current goal.
Assume Hz: z R.
Assume Hzz': z z'.
We will prove w' < z'.
Apply SNoLeLt_tra w' w z' (LL' w' Hw') (HLR1 w Hw) (LR' z' Hz') Hw'w to the current goal.
We will prove w < z'.
Apply SNoLtLe_tra w z z' (HLR1 w Hw) (HLR2 z Hz) (LR' z' Hz') to the current goal.
We will prove w < z.
Apply HLR3 to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is Hz.
We will prove z z'.
An exact proof term for the current goal is Hzz'.
Apply SNoCutP_SNoCut_impred L' R' LLR' to the current goal.
Assume H1': SNo x'.
Assume H2': SNoLev x' ordsucc ((xL'ordsucc (SNoLev x)) (yR'ordsucc (SNoLev y))).
Assume H3': wL', w < x'.
Assume H4': zR', x' < z.
Assume H5': ∀u, SNo u(wL', w < u)(zR', u < z)SNoLev x' SNoLev u SNoEq_ (SNoLev x') x' u.
We prove the intermediate claim L1: wL, w'L', w w'.
Let w be given.
Assume Hw.
Apply real_E w (HL w Hw) to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w ordsucc ω.
Assume _ _ _ _ _.
Apply ordsuccE ω (SNoLev w) Hw2 to the current goal.
Assume H6: SNoLev w ω.
We use w to witness the existential quantifier.
Apply andI to the current goal.
We will prove w L'.
We will prove w famunion ω L_.
Apply famunionI ω L_ (ordsucc (SNoLev w)) w to the current goal.
We will prove ordsucc (SNoLev w) ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H6.
We will prove w {w'SNoS_ (ordsucc (SNoLev w))|wL, w' w}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hw1.
We will prove uL, w u.
We use w to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw.
Apply SNoLe_ref to the current goal.
Apply SNoLe_ref to the current goal.
Assume H6: SNoLev w = ω.
Apply HL1 w Hw to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume Hw': w' L.
Assume Hww': w < w'.
Apply real_E w' (HL w' Hw') to the current goal.
Assume Hw'1: SNo w'.
Assume Hw'2: SNoLev w' ordsucc ω.
Assume _ _ _ _ _.
Apply ordsuccE ω (SNoLev w') Hw'2 to the current goal.
Assume H7: SNoLev w' ω.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
We will prove w' L'.
We will prove w' famunion ω L_.
Apply famunionI ω L_ (ordsucc (SNoLev w')) w' to the current goal.
We will prove ordsucc (SNoLev w') ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H7.
We will prove w' {w'SNoS_ (ordsucc (SNoLev w'))|wL, w' w}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hw'1.
We will prove uL, w' u.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
Apply SNoLe_ref to the current goal.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hww'.
Assume H7: SNoLev w' = ω.
Apply SNoLtE w w' Hw1 Hw'1 Hww' to the current goal.
Let w'' be given.
rewrite the current goal using H6 (from left to right).
Assume Hw''1: SNo w''.
Assume Hw''2: SNoLev w'' ω SNoLev w'.
Assume _ _.
Assume Hw''3: w < w''.
Assume Hw''4: w'' < w'.
Assume _ _.
We use w'' to witness the existential quantifier.
Apply andI to the current goal.
We will prove w'' L'.
We will prove w'' famunion ω L_.
Apply famunionI ω L_ (ordsucc (SNoLev w'')) w'' to the current goal.
We will prove ordsucc (SNoLev w'') ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is binintersectE1 ω (SNoLev w') (SNoLev w'') Hw''2.
We will prove w'' {w'SNoS_ (ordsucc (SNoLev w''))|wL, w' w}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hw''1.
We will prove uL, w'' u.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hw''4.
We will prove w w''.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hw''3.
rewrite the current goal using H6 (from left to right).
rewrite the current goal using H7 (from left to right).
Assume H8: ω ω.
We will prove False.
An exact proof term for the current goal is In_irref ω H8.
rewrite the current goal using H6 (from left to right).
rewrite the current goal using H7 (from left to right).
Assume H8: ω ω.
We will prove False.
An exact proof term for the current goal is In_irref ω H8.
We prove the intermediate claim L2: zR, z'R', z' z.
Let z be given.
Assume Hz.
Apply real_E z (HR z Hz) to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z ordsucc ω.
Assume _ _ _ _ _.
Apply ordsuccE ω (SNoLev z) Hz2 to the current goal.
Assume H6: SNoLev z ω.
We use z to witness the existential quantifier.
Apply andI to the current goal.
We will prove z R'.
We will prove z famunion ω R_.
Apply famunionI ω R_ (ordsucc (SNoLev z)) z to the current goal.
We will prove ordsucc (SNoLev z) ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H6.
We will prove z {z'SNoS_ (ordsucc (SNoLev z))|zR, z z'}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hz1.
We will prove uR, u z.
We use z to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz.
Apply SNoLe_ref to the current goal.
Apply SNoLe_ref to the current goal.
Assume H6: SNoLev z = ω.
Apply HR1 z Hz to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume Hz': z' R.
Assume Hz'z: z' < z.
Apply real_E z' (HR z' Hz') to the current goal.
Assume Hz'1: SNo z'.
Assume Hz'2: SNoLev z' ordsucc ω.
Assume _ _ _ _ _.
Apply ordsuccE ω (SNoLev z') Hz'2 to the current goal.
Assume H7: SNoLev z' ω.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
We will prove z' R'.
We will prove z' famunion ω R_.
Apply famunionI ω R_ (ordsucc (SNoLev z')) z' to the current goal.
We will prove ordsucc (SNoLev z') ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is H7.
We will prove z' {z'SNoS_ (ordsucc (SNoLev z'))|zR, z z'}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hz'1.
We will prove uR, u z'.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
Apply SNoLe_ref to the current goal.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz'z.
Assume H7: SNoLev z' = ω.
Apply SNoLtE z' z Hz'1 Hz1 Hz'z to the current goal.
Let z'' be given.
rewrite the current goal using H7 (from left to right).
Assume Hz''1: SNo z''.
Assume Hz''2: SNoLev z'' ω SNoLev z.
Assume _ _.
Assume Hz''3: z' < z''.
Assume Hz''4: z'' < z.
Assume _ _.
We use z'' to witness the existential quantifier.
Apply andI to the current goal.
We will prove z'' R'.
We will prove z'' famunion ω R_.
Apply famunionI ω R_ (ordsucc (SNoLev z'')) z'' to the current goal.
We will prove ordsucc (SNoLev z'') ω.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is binintersectE1 ω (SNoLev z) (SNoLev z'') Hz''2.
We will prove z'' {z'SNoS_ (ordsucc (SNoLev z''))|zR, z z'}.
Apply SepI to the current goal.
Apply SNoS_SNoLev to the current goal.
An exact proof term for the current goal is Hz''1.
We will prove uR, u z''.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz''3.
We will prove z'' z.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is Hz''4.
rewrite the current goal using H6 (from left to right).
rewrite the current goal using H7 (from left to right).
Assume H8: ω ω.
We will prove False.
An exact proof term for the current goal is In_irref ω H8.
rewrite the current goal using H6 (from left to right).
rewrite the current goal using H7 (from left to right).
Assume H8: ω ω.
We will prove False.
An exact proof term for the current goal is In_irref ω H8.
We prove the intermediate claim L3: L' 0.
Assume H6: L' = 0.
Apply HL0 to the current goal.
We will prove L = 0.
Apply Empty_eq to the current goal.
Let w be given.
Assume Hw: w L.
Apply L1 w Hw to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume Hw': w' L'.
We will prove False.
Apply EmptyE w' to the current goal.
We will prove w' 0.
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is Hw'.
We prove the intermediate claim L4: R' 0.
Assume H6: R' = 0.
Apply HR0 to the current goal.
We will prove R = 0.
Apply Empty_eq to the current goal.
Let z be given.
Assume Hz: z R.
Apply L2 z Hz to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume Hz': z' R'.
We will prove False.
Apply EmptyE z' to the current goal.
We will prove z' 0.
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is Hz'.
We prove the intermediate claim L5: wL', w'L', w < w'.
Let w be given.
Assume Hw.
Apply LL'L w Hw to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u L.
Assume Hwu: w u.
Apply HL1 u Hu to the current goal.
Let v be given.
Assume H.
Apply H to the current goal.
Assume Hv: v L.
Assume Huv: u < v.
Apply L1 v Hv to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume Hw': w' L'.
Assume Hvw': v w'.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hw'.
We will prove w < w'.
Apply SNoLeLt_tra w u w' (LL' w Hw) (HLR1 u Hu) (LL' w' Hw') Hwu to the current goal.
We will prove u < w'.
An exact proof term for the current goal is SNoLtLe_tra u v w' (HLR1 u Hu) (HLR1 v Hv) (LL' w' Hw') Huv Hvw'.
We prove the intermediate claim L6: zR', z'R', z' < z.
Let z be given.
Assume Hz.
Apply LR'R z Hz to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u R.
Assume Huz: u z.
Apply HR1 u Hu to the current goal.
Let v be given.
Assume H.
Apply H to the current goal.
Assume Hv: v R.
Assume Hvu: v < u.
Apply L2 v Hv to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume Hz': z' R'.
Assume Hz'v: z' v.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hz'.
We will prove z' < z.
Apply SNoLeLt_tra z' v z (LR' z' Hz') (HLR2 v Hv) (LR' z Hz) Hz'v to the current goal.
We will prove v < z.
An exact proof term for the current goal is SNoLtLe_tra v u z (HLR2 v Hv) (HLR2 u Hu) (LR' z Hz) Hvu Huz.
We prove the intermediate claim Lxx': x = x'.
Apply SNoCut_ext to the current goal.
An exact proof term for the current goal is HLR.
An exact proof term for the current goal is LLR'.
Let w be given.
Assume Hw: w L.
We will prove w < x'.
Apply L1 w Hw to the current goal.
Let w' be given.
Assume H.
Apply H to the current goal.
Assume Hw': w' L'.
Assume Hww': w w'.
Apply SNoLeLt_tra w w' x' to the current goal.
We will prove SNo w.
An exact proof term for the current goal is HLR1 w Hw.
We will prove SNo w'.
An exact proof term for the current goal is LL' w' Hw'.
We will prove SNo x'.
An exact proof term for the current goal is H1'.
An exact proof term for the current goal is Hww'.
We will prove w' < x'.
Apply H3' to the current goal.
We will prove w' L'.
An exact proof term for the current goal is Hw'.
Let z be given.
Assume Hz: z R.
We will prove x' < z.
Apply L2 z Hz to the current goal.
Let z' be given.
Assume H.
Apply H to the current goal.
Assume Hz': z' R'.
Assume Hz'z: z' z.
We will prove x' < z.
An exact proof term for the current goal is SNoLtLe_tra x' z' z H1' (LR' z' Hz') (HLR2 z Hz) (H4' z' Hz') Hz'z.
Let w be given.
Assume Hw: w L'.
We will prove w < x.
Apply LL'L w Hw to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u L.
Assume Hwu: w u.
An exact proof term for the current goal is SNoLeLt_tra w u x (LL' w Hw) (HLR1 u Hu) H1 Hwu (H3 u Hu).
Let z be given.
Assume Hz: z R'.
We will prove x < z.
Apply LR'R z Hz to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u R.
Assume Huz: u z.
An exact proof term for the current goal is SNoLtLe_tra x u z H1 (HLR2 u Hu) (LR' z Hz) (H4 u Hu) Huz.
We will prove x real.
rewrite the current goal using Lxx' (from left to right).
We will prove x' real.
An exact proof term for the current goal is real_SNoCut_SNoS_omega L' LL'o R' LR'o LLR' L3 L4 L5 L6.
Theorem. (minus_SNo_prereal_1) The following is provable:
∀x, SNo x(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(qSNoS_ ω, (kω, abs_SNo (q + - - x) < eps_ k)q = - x)
Proof:
Let x be given.
Assume Hx H1.
Let q be given.
Assume Hq1: q SNoS_ ω.
rewrite the current goal using minus_SNo_invol x Hx (from left to right).
Assume Hq2: kω, abs_SNo (q + x) < eps_ k.
We will prove q = - x.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
rewrite the current goal using minus_SNo_invol q Hq1c (from right to left).
We will prove - - q = - x.
Use f_equal.
We will prove - q = x.
Apply H1 (- q) (minus_SNo_SNoS_omega q Hq1) to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (- q + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap (- q) x (SNo_minus_SNo q Hq1c) Hx (from left to right).
We will prove abs_SNo (x + - - q) < eps_ k.
rewrite the current goal using minus_SNo_invol q Hq1c (from left to right).
We will prove abs_SNo (x + q) < eps_ k.
rewrite the current goal using add_SNo_com x q Hx Hq1c (from left to right).
We will prove abs_SNo (q + x) < eps_ k.
An exact proof term for the current goal is Hq2 k Hk.
Theorem. (minus_SNo_prereal_2) The following is provable:
∀x, SNo x(kω, qSNoS_ ω, q < x x < q + eps_ k)(kω, qSNoS_ ω, q < - x - x < q + eps_ k)
Proof:
Let x be given.
Assume Hx H1.
Let k be given.
Assume Hk.
Apply H1 k Hk to the current goal.
Let q be given.
Assume Hq.
Apply Hq to the current goal.
Assume Hq1: q SNoS_ ω.
Assume Hq.
Apply Hq to the current goal.
Assume Hq2: q < x.
Assume Hq3: x < q + eps_ k.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
We prove the intermediate claim Lqk: SNo (q + eps_ k).
An exact proof term for the current goal is SNo_add_SNo q (eps_ k) Hq1c (SNo_eps_ k Hk).
We use (- (q + eps_ k)) to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is minus_SNo_SNoS_omega (q + eps_ k) (add_SNo_SNoS_omega q Hq1 (eps_ k) (SNo_eps_SNoS_omega k Hk)).
Apply andI to the current goal.
We will prove - (q + eps_ k) < - x.
Apply minus_SNo_Lt_contra x (q + eps_ k) Hx Lqk to the current goal.
We will prove x < q + eps_ k.
An exact proof term for the current goal is Hq3.
We will prove - x < - (q + eps_ k) + eps_ k.
rewrite the current goal using minus_add_SNo_distr q (eps_ k) Hq1c (SNo_eps_ k Hk) (from left to right).
We will prove - x < (- q + - eps_ k) + eps_ k.
rewrite the current goal using add_SNo_minus_R2' (- q) (eps_ k) (SNo_minus_SNo q Hq1c) (SNo_eps_ k Hk) (from left to right).
We will prove - x < - q.
Apply minus_SNo_Lt_contra q x Hq1c Hx to the current goal.
We will prove q < x.
An exact proof term for the current goal is Hq2.
Theorem. (SNo_prereal_incr_lower_pos) The following is provable:
∀x, SNo x0 < x(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(kω, qSNoS_ ω, q < x x < q + eps_ k)kω, ∀p : prop, (qSNoS_ ω, 0 < qq < xx < q + eps_ kp)p
Proof:
Let x be given.
Assume Hx Hx0 Hx2 Hx3.
Let k be given.
Assume Hk.
Let p be given.
Assume Hp.
Apply Hx3 k Hk to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq1: q SNoS_ ω.
Assume H.
Apply H to the current goal.
Assume Hq2: q < x.
Assume Hq3: x < q + eps_ k.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply SNoLtLe_or 0 q SNo_0 Hq1c to the current goal.
Assume H1: 0 < q.
An exact proof term for the current goal is Hp q Hq1 H1 Hq2 Hq3.
Assume H1: q 0.
Apply xm (k'ω, x < eps_ k') to the current goal.
Assume H2: k'ω, x < eps_ k'.
We will prove False.
We prove the intermediate claim L1: 0 = x.
Apply Hx2 0 (omega_SNoS_omega 0 (nat_p_omega 0 nat_0)) to the current goal.
Let k' be given.
Assume Hk': k' ω.
We will prove abs_SNo (0 + - x) < eps_ k'.
rewrite the current goal using add_SNo_0L (- x) (SNo_minus_SNo x Hx) (from left to right).
We will prove abs_SNo (- x) < eps_ k'.
rewrite the current goal using abs_SNo_minus x Hx (from left to right).
We will prove abs_SNo x < eps_ k'.
rewrite the current goal using pos_abs_SNo x Hx0 (from left to right).
An exact proof term for the current goal is H2 k' Hk'.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using L1 (from right to left) at position 1.
An exact proof term for the current goal is Hx0.
Assume H2: ¬ (k'ω, x < eps_ k').
Apply dneg to the current goal.
Assume H3: ¬ p.
Apply H2 to the current goal.
Let k' be given.
Assume Hk': k' ω.
Apply SNoLtLe_or x (eps_ k') Hx (SNo_eps_ k' Hk') to the current goal.
Assume H4: x < eps_ k'.
An exact proof term for the current goal is H4.
Assume H4: eps_ k' x.
We prove the intermediate claim Lek': SNo (eps_ k').
Apply SNo_eps_ to the current goal.
An exact proof term for the current goal is Hk'.
We prove the intermediate claim LeSk': SNo (eps_ (ordsucc k')).
Apply SNo_eps_ to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hk'.
We prove the intermediate claim LeSk'pos: 0 < eps_ (ordsucc k').
Apply SNo_eps_pos to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hk'.
Apply H3 to the current goal.
Apply Hp (eps_ (ordsucc k')) to the current goal.
We will prove eps_ (ordsucc k') SNoS_ ω.
Apply SNo_eps_SNoS_omega to the current goal.
Apply omega_ordsucc to the current goal.
An exact proof term for the current goal is Hk'.
We will prove 0 < eps_ (ordsucc k').
An exact proof term for the current goal is LeSk'pos.
We will prove eps_ (ordsucc k') < x.
Apply SNoLtLe_tra (eps_ (ordsucc k')) (eps_ k') x LeSk' Lek' Hx to the current goal.
We will prove eps_ (ordsucc k') < eps_ k'.
An exact proof term for the current goal is SNo_eps_decr (ordsucc k') (omega_ordsucc k' Hk') k' (ordsuccI2 k').
We will prove eps_ k' x.
An exact proof term for the current goal is H4.
We will prove x < eps_ (ordsucc k') + eps_ k.
We prove the intermediate claim L2: q < eps_ (ordsucc k').
Apply SNoLeLt_tra q 0 (eps_ (ordsucc k')) Hq1c SNo_0 LeSk' to the current goal.
We will prove q 0.
An exact proof term for the current goal is H1.
We will prove 0 < eps_ (ordsucc k').
An exact proof term for the current goal is LeSk'pos.
Apply SNoLt_tra x (q + eps_ k) (eps_ (ordsucc k') + eps_ k) Hx (SNo_add_SNo q (eps_ k) Hq1c (SNo_eps_ k Hk)) (SNo_add_SNo (eps_ (ordsucc k')) (eps_ k) LeSk' (SNo_eps_ k Hk)) to the current goal.
We will prove x < q + eps_ k.
An exact proof term for the current goal is Hq3.
We will prove q + eps_ k < eps_ (ordsucc k') + eps_ k.
Apply add_SNo_Lt1 q (eps_ k) (eps_ (ordsucc k')) Hq1c (SNo_eps_ k Hk) LeSk' to the current goal.
We will prove q < eps_ (ordsucc k').
An exact proof term for the current goal is L2.
Theorem. (real_minus_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Apply real_E x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4 Hx5 Hx6 Hx7.
Apply real_I to the current goal.
We will prove - x SNoS_ (ordsucc ω).
An exact proof term for the current goal is minus_SNo_SNoS_ (ordsucc ω) ordsucc_omega_ordinal x Hx3.
We will prove - x ω.
Assume H1: - x = ω.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using minus_SNo_invol x Hx1 (from right to left) at position 1.
We will prove - - x < x.
rewrite the current goal using H1 (from left to right).
We will prove - ω < x.
An exact proof term for the current goal is Hx4.
We will prove - x - ω.
Assume H1: - x = - ω.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using minus_SNo_invol x Hx1 (from right to left) at position 2.
We will prove x < - - x.
rewrite the current goal using H1 (from left to right).
We will prove x < - - ω.
rewrite the current goal using minus_SNo_invol ω SNo_omega (from left to right).
We will prove x < ω.
An exact proof term for the current goal is Hx5.
We will prove qSNoS_ ω, (kω, abs_SNo (q + - - x) < eps_ k)q = - x.
An exact proof term for the current goal is minus_SNo_prereal_1 x Hx1 Hx6.
Theorem. (SNo_prereal_incr_lower_approx) The following is provable:
∀x, SNo x(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(kω, qSNoS_ ω, q < x x < q + eps_ k)fSNoS_ ωω, nω, f n < x x < f n + eps_ n in, f i < f n
Proof:
Let x be given.
Assume H1 H2 H3.
Set f' to be the term nat_primrec (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0)) (λn r ⇒ (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) r < q))) of type setset.
Set f to be the term λn ∈ ωf' n.
We prove the intermediate claim Lf'0: f' 0 = Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0).
An exact proof term for the current goal is nat_primrec_0 (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0)) (λn r ⇒ (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) r < q))).
We prove the intermediate claim Lf'0b: f' 0 SNoS_ ω f' 0 < x x < f' 0 + eps_ 0.
rewrite the current goal using Lf'0 (from left to right).
Apply Eps_i_ex (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0) to the current goal.
We will prove q, q SNoS_ ω q < x x < q + eps_ 0.
Apply H3 0 (nat_p_omega 0 nat_0) to the current goal.
Let q be given.
Assume Hq.
Apply Hq to the current goal.
Assume Hq1 Hq.
Apply Hq to the current goal.
Assume Hq2 Hq3.
We use q to witness the existential quantifier.
Apply and3I to the current goal.
An exact proof term for the current goal is Hq1.
An exact proof term for the current goal is Hq2.
An exact proof term for the current goal is Hq3.
We prove the intermediate claim Lf'S: ∀n, nat_p nf' (ordsucc n) = Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) f' n < q).
An exact proof term for the current goal is nat_primrec_S (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ 0)) (λn r ⇒ (Eps_i (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) r < q))).
We prove the intermediate claim L1: ∀n, nat_p nf' n SNoS_ ω f' n < x x < f' n + eps_ n in, SNo (f i)f i < f' n.
Apply nat_ind to the current goal.
We will prove f' 0 SNoS_ ω f' 0 < x x < f' 0 + eps_ 0 i0, SNo (f i)f i < f' 0.
Apply Lf'0b to the current goal.
Assume H H6.
Apply H to the current goal.
Assume H4 H5.
Apply and4I to the current goal.
An exact proof term for the current goal is H4.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H6.
Let i be given.
Assume Hi.
We will prove False.
An exact proof term for the current goal is EmptyE i Hi.
Let n be given.
Assume Hn.
Assume IHn: f' n SNoS_ ω f' n < x x < f' n + eps_ n in, SNo (f i)f i < f' n.
We will prove f' (ordsucc n) SNoS_ ω f' (ordsucc n) < x x < f' (ordsucc n) + eps_ (ordsucc n) iordsucc n, SNo (f i)f i < f' (ordsucc n).
Apply IHn to the current goal.
Assume IHn123 IHn4.
Apply IHn123 to the current goal.
Assume IHn12 IHn3.
Apply IHn12 to the current goal.
Assume IHn1 IHn2.
Apply SNoS_E2 ω omega_ordinal (f' n) IHn1 to the current goal.
Assume _ _.
Assume IHn1c: SNo (f' n).
Assume _.
We prove the intermediate claim L1b: q, q SNoS_ ω q < x x < q + eps_ (ordsucc n) f' n < q.
Apply H3 (ordsucc n) (nat_p_omega (ordsucc n) (nat_ordsucc n Hn)) to the current goal.
Let q be given.
Assume Hq.
Apply Hq to the current goal.
Assume Hq1 Hq.
Apply Hq to the current goal.
Assume Hq2 Hq3.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply SNoLtLe_or (f' n) q IHn1c Hq1c to the current goal.
Assume H4: f' n < q.
We use q to witness the existential quantifier.
Apply and4I to the current goal.
An exact proof term for the current goal is Hq1.
An exact proof term for the current goal is Hq2.
An exact proof term for the current goal is Hq3.
An exact proof term for the current goal is H4.
Assume H4: q f' n.
We prove the intermediate claim L1ba: SNo (- f' n).
An exact proof term for the current goal is SNo_minus_SNo (f' n) IHn1c.
We prove the intermediate claim L1bb: SNo (x + - f' n).
An exact proof term for the current goal is SNo_add_SNo x (- f' n) H1 L1ba.
We prove the intermediate claim L1bc: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) (omega_ordsucc n (nat_p_omega n Hn)).
Apply xm (kω, eps_ k x + - f' n) to the current goal.
Assume H5.
Apply H5 to the current goal.
Let k be given.
Assume H5.
Apply H5 to the current goal.
Assume Hk1: k ω.
Assume Hk2: eps_ k x + - f' n.
We use (f' n + eps_ (ordsucc k)) to witness the existential quantifier.
We prove the intermediate claim Lk1: ordsucc k ω.
An exact proof term for the current goal is omega_ordsucc k Hk1.
We prove the intermediate claim Lk2: SNo (eps_ (ordsucc k)).
An exact proof term for the current goal is SNo_eps_ (ordsucc k) Lk1.
We prove the intermediate claim Lk3: f' n + eps_ (ordsucc k) SNoS_ ω.
An exact proof term for the current goal is add_SNo_SNoS_omega (f' n) IHn1 (eps_ (ordsucc k)) (SNo_eps_SNoS_omega (ordsucc k) (omega_ordsucc k Hk1)).
Apply SNoS_E2 ω omega_ordinal (f' n + eps_ (ordsucc k)) Lk3 to the current goal.
Assume _ _.
Assume H6: SNo (f' n + eps_ (ordsucc k)).
Assume _.
Apply and4I to the current goal.
An exact proof term for the current goal is Lk3.
We will prove f' n + eps_ (ordsucc k) < x.
Apply SNoLtLe_tra (f' n + eps_ (ordsucc k)) (f' n + eps_ k) x to the current goal.
An exact proof term for the current goal is H6.
An exact proof term for the current goal is SNo_add_SNo (f' n) (eps_ k) IHn1c (SNo_eps_ k Hk1).
An exact proof term for the current goal is H1.
We will prove f' n + eps_ (ordsucc k) < f' n + eps_ k.
Apply add_SNo_Lt2 (f' n) (eps_ (ordsucc k)) (eps_ k) IHn1c Lk2 (SNo_eps_ k Hk1) to the current goal.
We will prove eps_ (ordsucc k) < eps_ k.
Apply SNo_eps_decr to the current goal.
We will prove ordsucc k ω.
An exact proof term for the current goal is Lk1.
We will prove k ordsucc k.
Apply ordsuccI2 to the current goal.
We will prove f' n + eps_ k x.
Apply add_SNo_minus_L2' (f' n) x IHn1c H1 (λu v ⇒ f' n + eps_ k u) to the current goal.
We will prove f' n + eps_ k f' n + (- f' n + x).
rewrite the current goal using add_SNo_com (- f' n) x L1ba H1 (from left to right).
We will prove f' n + eps_ k f' n + (x + - f' n).
An exact proof term for the current goal is add_SNo_Le2 (f' n) (eps_ k) (x + - f' n) IHn1c (SNo_eps_ k Hk1) L1bb Hk2.
We will prove x < (f' n + eps_ (ordsucc k)) + eps_ (ordsucc n).
rewrite the current goal using add_SNo_com_3b_1_2 (f' n) (eps_ (ordsucc k)) (eps_ (ordsucc n)) IHn1c Lk2 L1bc (from left to right).
We will prove x < (f' n + eps_ (ordsucc n)) + eps_ (ordsucc k).
Apply add_SNo_eps_Lt' x (f' n + eps_ (ordsucc n)) H1 (SNo_add_SNo (f' n) (eps_ (ordsucc n)) IHn1c L1bc) (ordsucc k) Lk1 to the current goal.
We will prove x < f' n + eps_ (ordsucc n).
Apply SNoLtLe_tra x (q + (eps_ (ordsucc n))) to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is SNo_add_SNo q (eps_ (ordsucc n)) Hq1c L1bc.
An exact proof term for the current goal is SNo_add_SNo (f' n) (eps_ (ordsucc n)) IHn1c L1bc.
We will prove x < q + eps_ (ordsucc n).
An exact proof term for the current goal is Hq3.
We will prove q + eps_ (ordsucc n) f' n + eps_ (ordsucc n).
An exact proof term for the current goal is add_SNo_Le1 q (eps_ (ordsucc n)) (f' n) Hq1c L1bc IHn1c H4.
We will prove f' n < f' n + eps_ (ordsucc k).
An exact proof term for the current goal is add_SNo_eps_Lt (f' n) IHn1c (ordsucc k) (omega_ordsucc k Hk1).
Assume H5: ¬ (kω, eps_ k x + - f' n).
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
We prove the intermediate claim L1bd: 0 < x + - f' n.
Apply add_SNo_Lt1_cancel 0 (f' n) (x + - f' n) SNo_0 IHn1c L1bb to the current goal.
We will prove 0 + f' n < (x + - f' n) + f' n.
rewrite the current goal using add_SNo_0L (f' n) IHn1c (from left to right).
rewrite the current goal using add_SNo_minus_R2' x (f' n) H1 IHn1c (from left to right).
We will prove f' n < x.
An exact proof term for the current goal is IHn2.
We prove the intermediate claim L1be: f' n = x.
Apply H2 (f' n) IHn1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (f' n + - x) < eps_ k.
Apply SNoLtLe_or (x + - f' n) (eps_ k) L1bb (SNo_eps_ k Hk) to the current goal.
Assume H6: x + - f' n < eps_ k.
We will prove abs_SNo (f' n + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap (f' n) x IHn1c H1 (from left to right).
We will prove abs_SNo (x + - f' n) < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - f' n) L1bd (from left to right).
An exact proof term for the current goal is H6.
Assume H6: eps_ k x + - f' n.
Apply H5 to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
An exact proof term for the current goal is H6.
rewrite the current goal using L1be (from right to left) at position 1.
An exact proof term for the current goal is IHn2.
We prove the intermediate claim L1c: f' (ordsucc n) SNoS_ ω f' (ordsucc n) < x x < f' (ordsucc n) + eps_ (ordsucc n) f' n < f' (ordsucc n).
rewrite the current goal using Lf'S n Hn (from left to right).
An exact proof term for the current goal is Eps_i_ex (λq ⇒ q SNoS_ ω q < x x < q + eps_ (ordsucc n) f' n < q) L1b.
Apply L1c to the current goal.
Assume H H7.
Apply H to the current goal.
Assume H H6.
Apply H to the current goal.
Assume H4 H5.
Apply and4I to the current goal.
An exact proof term for the current goal is H4.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H6.
Let i be given.
Assume Hi: i ordsucc n.
Assume Hfi: SNo (f i).
Apply ordsuccE n i Hi to the current goal.
Assume H8: i n.
We will prove f i < f' (ordsucc n).
Apply SNoLt_tra (f i) (f' n) (f' (ordsucc n)) to the current goal.
We will prove SNo (f i).
An exact proof term for the current goal is Hfi.
An exact proof term for the current goal is IHn1c.
Apply SNoS_E2 ω omega_ordinal (f' (ordsucc n)) H4 to the current goal.
Assume _ _ H9 _.
An exact proof term for the current goal is H9.
Apply IHn to the current goal.
Assume _.
Assume IHn4: in, SNo (f i)f i < f' n.
An exact proof term for the current goal is IHn4 i H8 Hfi.
An exact proof term for the current goal is H7.
Assume H8: i = n.
rewrite the current goal using H8 (from left to right).
We will prove f n < f' (ordsucc n).
rewrite the current goal using beta ω f' n (nat_p_omega n Hn) (from left to right).
An exact proof term for the current goal is H7.
We prove the intermediate claim L2: nω, f' n SNoS_ ω f n < x x < f n + eps_ n in, SNo (f i)f i < f n.
Let n be given.
Assume Hn.
An exact proof term for the current goal is beta ω f' n Hn (λu v ⇒ f' n SNoS_ ω v < x x < v + eps_ n in, SNo (f i)f i < v) (L1 n (omega_nat_p n Hn)).
We use f to witness the existential quantifier.
Apply andI to the current goal.
We will prove (λn ∈ ωf' n) nω, SNoS_ ω.
Apply lam_Pi to the current goal.
Let n be given.
Assume Hn.
Apply L2 n Hn 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.
Let n be given.
Assume Hn.
Apply L2 n Hn to the current goal.
Assume H H7.
Apply H to the current goal.
Assume H H6.
Apply H to the current goal.
Assume H4 H5.
Apply and3I to the current goal.
An exact proof term for the current goal is H5.
An exact proof term for the current goal is H6.
Let i be given.
Assume Hi: i n.
Apply H7 i Hi to the current goal.
We will prove SNo (f i).
We prove the intermediate claim Li: i ω.
An exact proof term for the current goal is nat_p_omega i (nat_p_trans n (omega_nat_p n Hn) i Hi).
rewrite the current goal using beta ω f' i Li (from left to right).
We will prove SNo (f' i).
Apply L2 i Li to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
Apply H to the current goal.
Assume H8: f' i SNoS_ ω.
Assume _.
Apply SNoS_E2 ω omega_ordinal (f' i) H8 to the current goal.
Assume _ _ H9 _.
We will prove SNo (f' i).
An exact proof term for the current goal is H9.
Theorem. (SNo_prereal_decr_upper_approx) The following is provable:
∀x, SNo x(qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x)(kω, qSNoS_ ω, q < x x < q + eps_ k)gSNoS_ ωω, nω, g n + - eps_ n < x x < g n in, g n < g i
Proof:
Let x be given.
Assume H1 H2 H3.
We prove the intermediate claim L1: SNo (- x).
An exact proof term for the current goal is SNo_minus_SNo x H1.
Apply SNo_prereal_incr_lower_approx (- x) L1 (minus_SNo_prereal_1 x H1 H2) (minus_SNo_prereal_2 x H1 H3) to the current goal.
Let f be given.
Assume Hf.
Apply Hf to the current goal.
Assume Hf1: f SNoS_ ωω.
Assume Hf2: nω, f n < - x - x < f n + eps_ n in, f i < f n.
We prove the intermediate claim Lf: nω, SNo (f n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (f n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
Set g to be the term λn ∈ ω- f n.
We use g to witness the existential quantifier.
Apply andI to the current goal.
We will prove g SNoS_ ωω.
We will prove (λn ∈ ω- f n) _ω, SNoS_ ω.
Apply lam_Pi to the current goal.
Let n be given.
Assume Hn.
We will prove - f n SNoS_ ω.
Apply minus_SNo_SNoS_omega to the current goal.
We will prove f n SNoS_ ω.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn.
Let n be given.
Assume Hn.
We will prove g n + - eps_ n < x x < g n in, g n < g i.
We prove the intermediate claim L1: - f n + - eps_ n < x x < - f n in, - f n < g i.
Apply Hf2 n Hn to the current goal.
Assume H.
Apply H to the current goal.
Assume Hf2a: f n < - x.
Assume Hf2b: - x < f n + eps_ n.
Assume Hf2c: in, f i < f n.
Apply and3I to the current goal.
We will prove - f n + - eps_ n < x.
rewrite the current goal using minus_add_SNo_distr (f n) (eps_ n) (Lf n Hn) (SNo_eps_ n Hn) (from right to left).
We will prove - (f n + eps_ n) < x.
Apply minus_SNo_Lt_contra1 x (f n + eps_ n) H1 (SNo_add_SNo (f n) (eps_ n) (Lf n Hn) (SNo_eps_ n Hn)) to the current goal.
We will prove - x < f n + eps_ n.
An exact proof term for the current goal is Hf2b.
We will prove x < - f n.
Apply minus_SNo_Lt_contra2 (f n) x (Lf n Hn) H1 to the current goal.
We will prove f n < - x.
An exact proof term for the current goal is Hf2a.
Let i be given.
Assume Hi.
We prove the intermediate claim Li: i ω.
An exact proof term for the current goal is nat_p_omega i (nat_p_trans n (omega_nat_p n Hn) i Hi).
rewrite the current goal using beta ω (λn ⇒ - f n) i Li (from left to right).
We will prove - f n < - f i.
Apply minus_SNo_Lt_contra (f i) (f n) (Lf i Li) (Lf n Hn) to the current goal.
An exact proof term for the current goal is Hf2c i Hi.
We prove the intermediate claim L2: g n = - f n.
An exact proof term for the current goal is beta ω (λn ⇒ - f n) n Hn.
An exact proof term for the current goal is L2 (λu v ⇒ v + - eps_ n < x x < v in, v < g i) L1.
Theorem. (SNoCutP_SNoCut_lim) The following is provable:
∀lambda, ordinal lambda(alphalambda, ordsucc alpha lambda)L RSNoS_ lambda, SNoCutP L RSNoLev (SNoCut L R) ordsucc lambda
Proof:
Let lambda be given.
Assume Hl1 Hl2.
Let L be given.
Assume HL.
Let R be given.
Assume HR HLR.
We prove the intermediate claim L1: xL, SNoLev x lambda.
Let x be given.
Assume Hx.
Apply SNoS_E2 lambda Hl1 x (HL x Hx) to the current goal.
Assume H _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L2: yR, SNoLev y lambda.
Let y be given.
Assume Hy.
Apply SNoS_E2 lambda Hl1 y (HR y Hy) to the current goal.
Assume H _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim L3: ordinal ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Apply ordinal_binunion to the current goal.
Apply ordinal_famunion to the current goal.
Let x be given.
Assume Hx.
Apply SNoS_E2 lambda Hl1 x (HL x Hx) to the current goal.
Assume _ H _ _.
We will prove ordinal (ordsucc (SNoLev x)).
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev x).
An exact proof term for the current goal is H.
Apply ordinal_famunion to the current goal.
Let y be given.
Assume Hy.
Apply SNoS_E2 lambda Hl1 y (HR y Hy) to the current goal.
Assume _ H _ _.
We will prove ordinal (ordsucc (SNoLev y)).
Apply ordinal_ordsucc to the current goal.
We will prove ordinal (SNoLev y).
An exact proof term for the current goal is H.
We prove the intermediate claim L4: ordinal (ordsucc lambda).
Apply ordinal_ordsucc to the current goal.
An exact proof term for the current goal is Hl1.
We prove the intermediate claim L5: ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) ordsucc lambda.
Apply ordinal_ordsucc_In_Subq to the current goal.
We will prove ordinal (ordsucc lambda).
An exact proof term for the current goal is L4.
We will prove ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) ordsucc lambda.
Apply ordinal_In_Or_Subq ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) (ordsucc lambda) L3 L4 to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: ordsucc lambda ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
We will prove False.
Apply binunionE (xLordsucc (SNoLev x)) (yRordsucc (SNoLev y)) lambda (H1 lambda (ordsuccI2 lambda)) to the current goal.
Assume H2: lambda xLordsucc (SNoLev x).
Apply famunionE_impred L (λx ⇒ ordsucc (SNoLev x)) lambda H2 to the current goal.
Let x be given.
Assume Hx: x L.
Assume H3: lambda ordsucc (SNoLev x).
Apply In_no2cycle lambda (ordsucc (SNoLev x)) H3 to the current goal.
We will prove ordsucc (SNoLev x) lambda.
Apply Hl2 to the current goal.
An exact proof term for the current goal is L1 x Hx.
Assume H2: lambda yRordsucc (SNoLev y).
Apply famunionE_impred R (λy ⇒ ordsucc (SNoLev y)) lambda H2 to the current goal.
Let y be given.
Assume Hy: y R.
Assume H3: lambda ordsucc (SNoLev y).
Apply In_no2cycle lambda (ordsucc (SNoLev y)) H3 to the current goal.
We will prove ordsucc (SNoLev y) lambda.
Apply Hl2 to the current goal.
An exact proof term for the current goal is L2 y Hy.
Apply SNoCutP_SNoCut_impred L R HLR to the current goal.
Assume H1: SNo (SNoCut L R).
Assume _ _ _.
An exact proof term for the current goal is L5 (SNoLev (SNoCut L R)) H2.
Theorem. (SNoCutP_SNoCut_omega) The following is provable:
Proof:
An exact proof term for the current goal is SNoCutP_SNoCut_lim ω omega_ordinal omega_ordsucc.
Theorem. (SNo_approx_real_lem) The following is provable:
Proof:
Let f be given.
Assume Hf1.
Let g be given.
Assume Hg1 Hfg.
Let p be given.
Assume Hp.
Set L to be the term {f n|nω}.
Set R to be the term {g n|nω}.
Set x to be the term SNoCut L R.
We prove the intermediate claim Lf: nω, SNo (f n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (f n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg: nω, SNo (g n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (g n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g n Hg1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L1: SNoCutP L R.
We will prove (wL, SNo w) (zR, SNo z) (wL, zR, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw: w L.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
We will prove SNo (f n).
An exact proof term for the current goal is Lf n Hn.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove SNo (g m).
An exact proof term for the current goal is Lg m Hm.
Let w be given.
Assume Hw: w L.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove f n < g m.
An exact proof term for the current goal is Hfg n Hn m Hm.
Apply SNoCutP_SNoCut_impred L R L1 to the current goal.
Assume HLR1: SNo x.
Assume HLR2: SNoLev x ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Assume HLR3: wL, w < x.
Assume HLR4: yR, x < y.
Assume HLR5: ∀z, SNo z(wL, w < z)(yR, z < y)SNoLev x SNoLev z SNoEq_ (SNoLev x) x z.
We prove the intermediate claim L2: L SNoS_ ω.
Let w be given.
Assume Hw.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
We will prove f n SNoS_ ω.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn.
We prove the intermediate claim L3: R SNoS_ ω.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove g m SNoS_ ω.
An exact proof term for the current goal is (ap_Pi ω (λ_ ⇒ SNoS_ ω) g m Hg1 Hm).
We prove the intermediate claim L4: SNoLev x ordsucc ω.
An exact proof term for the current goal is SNoCutP_SNoCut_omega L L2 R L3 L1.
We prove the intermediate claim L5: x SNoS_ (ordsucc ω).
Apply SNoS_I (ordsucc ω) ordsucc_omega_ordinal x (SNoLev x) to the current goal.
We will prove SNoLev x ordsucc ω.
An exact proof term for the current goal is L4.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is HLR1.
Apply Hp L1 HLR1 L4 L5 to the current goal.
Let n be given.
Assume Hn.
We will prove f n < x.
Apply HLR3 to the current goal.
An exact proof term for the current goal is ReplI ω (λn ⇒ f n) n Hn.
Let n be given.
Assume Hn.
We will prove x < g n.
Apply HLR4 to the current goal.
An exact proof term for the current goal is ReplI ω (λn ⇒ g n) n Hn.
Theorem. (SNo_approx_real) The following is provable:
∀x, SNo xf gSNoS_ ωω, (nω, f n < x)(nω, x < f n + eps_ n)(nω, in, f i < f n)(nω, x < g n)(nω, in, g n < g i)x = SNoCut {f n|nω} {g n|nω}x real
Proof:
Let x be given.
Assume Hx.
Let f be given.
Assume Hf1.
Let g be given.
Assume Hg1 Hf2 Hf3 Hf4 Hg3 Hg4.
Set L to be the term {f n|nω}.
Set R to be the term {g n|nω}.
Assume Hxfg: x = SNoCut L R.
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 Lf: nω, SNo (f n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (f n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg: nω, SNo (g n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (g n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g n Hg1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lfg: n mω, f n < g m.
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
Apply SNoLt_tra (f n) x (g m) (Lf n Hn) Hx (Lg m Hm) to the current goal.
An exact proof term for the current goal is Hf2 n Hn.
An exact proof term for the current goal is Hg3 m Hm.
Apply SNo_approx_real_lem f Hf1 g Hg1 Lfg to the current goal.
rewrite the current goal using Hxfg (from right to left).
Assume H1: SNoCutP L R.
Assume H2: SNo x.
rewrite the current goal using Hxfg (from right to left).
Assume H3: SNoLev x ordsucc ω.
rewrite the current goal using Hxfg (from right to left).
Assume H4: x SNoS_ (ordsucc ω).
rewrite the current goal using Hxfg (from right to left).
Assume H5: nω, f n < x.
rewrite the current goal using Hxfg (from right to left).
Assume H6: nω, x < g n.
Apply SNoCutP_SNoCut_impred L R H1 to the current goal.
Assume _ _ _ _.
Assume H7: ∀z, SNo z(wL, w < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z.
Apply ordsuccE ω (SNoLev x) H3 to the current goal.
Assume H8: SNoLev x ω.
Apply SNoS_omega_real to the current goal.
We will prove x SNoS_ ω.
Apply SNoS_I ω omega_ordinal x (SNoLev x) H8 to the current goal.
We will prove SNo_ (SNoLev x) x.
An exact proof term for the current goal is SNoLev_ x Hx.
Assume H8: SNoLev x = ω.
Apply real_I to the current goal.
We will prove x SNoS_ (ordsucc ω).
An exact proof term for the current goal is H4.
We will prove x ω.
Assume H9: x = ω.
We prove the intermediate claim Lbd1: x < g 0.
An exact proof term for the current goal is Hg3 0 (nat_p_omega 0 nat_0).
Apply real_E (g 0) (SNoS_omega_real (g 0) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g 0 Hg1 (nat_p_omega 0 nat_0))) to the current goal.
Assume Hg0a: SNo (g 0).
Assume _ _ _.
Assume Hg0b: g 0 < ω.
Assume _ _.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x (g 0) x Hx Hg0a Hx Lbd1 to the current goal.
We will prove g 0 < x.
rewrite the current goal using H9 (from left to right).
We will prove g 0 < ω.
An exact proof term for the current goal is Hg0b.
We will prove x - ω.
Assume H9: x = - ω.
We prove the intermediate claim Lbd2: f 0 < x.
An exact proof term for the current goal is Hf2 0 (nat_p_omega 0 nat_0).
Apply real_E (f 0) (SNoS_omega_real (f 0) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f 0 Hf1 (nat_p_omega 0 nat_0))) to the current goal.
Assume Hf0a: SNo (f 0).
Assume _ _.
Assume Hf0b: - ω < f 0.
Assume _ _ _.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x (f 0) x Hx Hf0a Hx to the current goal.
We will prove x < f 0.
rewrite the current goal using H9 (from left to right).
An exact proof term for the current goal is Hf0b.
We will prove f 0 < x.
An exact proof term for the current goal is Lbd2.
We will prove qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Let q be given.
Assume Hq1 Hq2.
We will prove q = x.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
We prove the intermediate claim Lmq: SNo (- q).
An exact proof term for the current goal is SNo_minus_SNo q Hq1c.
We prove the intermediate claim Lxmq: SNo (x + - q).
An exact proof term for the current goal is SNo_add_SNo x (- q) Hx Lmq.
We prove the intermediate claim Lqmx: SNo (q + - x).
An exact proof term for the current goal is SNo_add_SNo q (- x) Hq1c Lmx.
We prove the intermediate claim L5: wL, w < q.
Let w be given.
Assume Hw.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
We will prove f n < q.
Apply SNoLtLe_or (f n) q (Lf n Hn) Hq1c to the current goal.
Assume H9: f n < q.
An exact proof term for the current goal is H9.
Assume H9: q f n.
Apply real_E (f (ordsucc n)) (SNoS_omega_real (f (ordsucc n)) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f (ordsucc n) Hf1 (omega_ordsucc n Hn))) to the current goal.
Assume _ _ _ _ _.
Assume Hfn2: q'SNoS_ ω, (kω, abs_SNo (q' + - f (ordsucc n)) < eps_ k)q' = f (ordsucc n).
Assume _.
We prove the intermediate claim L5a: SNo (f (ordsucc n)).
An exact proof term for the current goal is Lf (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L5b: q < f (ordsucc n).
Apply SNoLeLt_tra q (f n) (f (ordsucc n)) Hq1c (Lf n Hn) L5a H9 to the current goal.
We will prove f n < f (ordsucc n).
Apply Hf4 (ordsucc n) (omega_ordsucc n Hn) to the current goal.
We will prove n ordsucc n.
Apply ordsuccI2 to the current goal.
We prove the intermediate claim L5c: 0 < f (ordsucc n) + - q.
An exact proof term for the current goal is SNoLt_minus_pos q (f (ordsucc n)) Hq1c L5a L5b.
We prove the intermediate claim L5d: SNo (f (ordsucc n) + - q).
An exact proof term for the current goal is SNo_add_SNo (f (ordsucc n)) (- q) L5a Lmq.
We prove the intermediate claim L5e: f (ordsucc n) < x.
An exact proof term for the current goal is Hf2 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L5f: q < x.
An exact proof term for the current goal is SNoLt_tra q (f (ordsucc n)) x Hq1c L5a Hx L5b L5e.
We prove the intermediate claim L5g: 0 < x + - q.
An exact proof term for the current goal is SNoLt_minus_pos q x Hq1c Hx L5f.
We prove the intermediate claim L5h: abs_SNo (q + - x) = x + - q.
rewrite the current goal using abs_SNo_dist_swap q x Hq1c Hx (from left to right).
An exact proof term for the current goal is pos_abs_SNo (x + - q) L5g.
We prove the intermediate claim L5i: q = f (ordsucc n).
Apply Hfn2 q Hq1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (q + - f (ordsucc n)) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap q (f (ordsucc n)) Hq1c (Lf (ordsucc n) (omega_ordsucc n Hn)) (from left to right).
We will prove abs_SNo (f (ordsucc n) + - q) < eps_ k.
rewrite the current goal using pos_abs_SNo (f (ordsucc n) + - q) L5c (from left to right).
We will prove f (ordsucc n) + - q < eps_ k.
Apply SNoLt_tra (f (ordsucc n) + - q) (x + - q) (eps_ k) L5d Lxmq (SNo_eps_ k Hk) to the current goal.
We will prove f (ordsucc n) + - q < x + - q.
Apply add_SNo_Lt1 (f (ordsucc n)) (- q) x L5a Lmq Hx to the current goal.
We will prove f (ordsucc n) < x.
An exact proof term for the current goal is L5e.
We will prove x + - q < eps_ k.
rewrite the current goal using L5h (from right to left).
We will prove abs_SNo (q + - x) < eps_ k.
An exact proof term for the current goal is Hq2 k Hk.
Apply SNoLt_irref q to the current goal.
rewrite the current goal using L5i (from left to right) at position 2.
An exact proof term for the current goal is L5b.
We prove the intermediate claim L6: zR, q < z.
Let z be given.
Assume Hz: z R.
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove q < g m.
Apply SNoLtLe_or q (g m) Hq1c (Lg m Hm) to the current goal.
Assume H9: q < g m.
An exact proof term for the current goal is H9.
Assume H9: g m q.
Apply real_E (g (ordsucc m)) (SNoS_omega_real (g (ordsucc m)) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g (ordsucc m) Hg1 (omega_ordsucc m Hm))) to the current goal.
Assume _ _ _ _ _.
Assume Hgm2: q'SNoS_ ω, (kω, abs_SNo (q' + - g (ordsucc m)) < eps_ k)q' = g (ordsucc m).
Assume _.
We prove the intermediate claim L6a: SNo (g (ordsucc m)).
An exact proof term for the current goal is Lg (ordsucc m) (omega_ordsucc m Hm).
We prove the intermediate claim L6b: g (ordsucc m) < q.
Apply SNoLtLe_tra (g (ordsucc m)) (g m) q L6a (Lg m Hm) Hq1c to the current goal.
We will prove g (ordsucc m) < g m.
Apply Hg4 (ordsucc m) (omega_ordsucc m Hm) to the current goal.
We will prove m ordsucc m.
Apply ordsuccI2 to the current goal.
An exact proof term for the current goal is H9.
We prove the intermediate claim L6c: 0 < q + - g (ordsucc m).
An exact proof term for the current goal is SNoLt_minus_pos (g (ordsucc m)) q L6a Hq1c L6b.
We prove the intermediate claim L6d: SNo (q + - g (ordsucc m)).
An exact proof term for the current goal is SNo_add_SNo q (- g (ordsucc m)) Hq1c (SNo_minus_SNo (g (ordsucc m)) L6a).
We prove the intermediate claim L6e: x < g (ordsucc m).
An exact proof term for the current goal is Hg3 (ordsucc m) (omega_ordsucc m Hm).
We prove the intermediate claim L6f: x < q.
An exact proof term for the current goal is SNoLt_tra x (g (ordsucc m)) q Hx L6a Hq1c L6e L6b.
We prove the intermediate claim L6g: 0 < q + - x.
An exact proof term for the current goal is SNoLt_minus_pos x q Hx Hq1c L6f.
We prove the intermediate claim L6h: abs_SNo (q + - x) = q + - x.
An exact proof term for the current goal is pos_abs_SNo (q + - x) L6g.
We prove the intermediate claim L6i: q = g (ordsucc m).
Apply Hgm2 q Hq1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (q + - g (ordsucc m)) < eps_ k.
rewrite the current goal using pos_abs_SNo (q + - g (ordsucc m)) L6c (from left to right).
We will prove q + - g (ordsucc m) < eps_ k.
Apply SNoLt_tra (q + - g (ordsucc m)) (q + - x) (eps_ k) L6d Lqmx (SNo_eps_ k Hk) to the current goal.
We will prove q + - g (ordsucc m) < q + - x.
Apply add_SNo_Lt2 q (- g (ordsucc m)) (- x) Hq1c (SNo_minus_SNo (g (ordsucc m)) L6a) Lmx to the current goal.
We will prove - g (ordsucc m) < - x.
Apply minus_SNo_Lt_contra x (g (ordsucc m)) Hx L6a to the current goal.
An exact proof term for the current goal is L6e.
We will prove q + - x < eps_ k.
rewrite the current goal using L6h (from right to left).
We will prove abs_SNo (q + - x) < eps_ k.
An exact proof term for the current goal is Hq2 k Hk.
Apply SNoLt_irref q to the current goal.
rewrite the current goal using L6i (from left to right) at position 1.
An exact proof term for the current goal is L6b.
Apply H7 q Hq1c L5 L6 to the current goal.
rewrite the current goal using Hxfg (from right to left).
rewrite the current goal using H8 (from left to right).
Assume H9: ω SNoLev q.
We will prove False.
Apply In_irref (SNoLev q) to the current goal.
We will prove SNoLev q SNoLev q.
Apply H9 to the current goal.
We will prove SNoLev q ω.
An exact proof term for the current goal is Hq1a.
Theorem. (SNo_approx_real_rep) The following is provable:
xreal, ∀p : prop, (f gSNoS_ ωω, (nω, f n < x)(nω, x < f n + eps_ n)(nω, in, f i < f n)(nω, g n + - eps_ n < x)(nω, x < g n)(nω, in, g n < g i)SNoCutP {f n|nω} {g n|nω}x = SNoCut {f n|nω} {g n|nω}p)p
Proof:
Let x be given.
Assume Hx.
Let p be given.
Assume Hp.
Apply real_E x Hx to the current goal.
Assume Hx1 Hx2 Hx3 _ _ Hx4 Hx5.
Apply SNo_prereal_incr_lower_approx x Hx1 Hx4 Hx5 to the current goal.
Let f be given.
Assume Hf.
Apply Hf to the current goal.
Assume Hf1 Hf2.
Apply SNo_prereal_decr_upper_approx x Hx1 Hx4 Hx5 to the current goal.
Let g be given.
Assume Hg.
Apply Hg to the current goal.
Assume Hg1 Hg2.
We prove the intermediate claim Lf: nω, SNo (f n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (f n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) f n Hf1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg: nω, SNo (g n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (g n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) g n Hg1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lf1: nω, f n < x.
Let n be given.
Assume Hn.
Apply Hf2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lf2: nω, x < f n + eps_ n.
Let n be given.
Assume Hn.
Apply Hf2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim Lf3: nω, in, f i < f n.
Let n be given.
Assume Hn.
Apply Hf2 n Hn to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg1: nω, g n + - eps_ n < x.
Let n be given.
Assume Hn.
Apply Hg2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg2: nω, x < g n.
Let n be given.
Assume Hn.
Apply Hg2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim Lg3: nω, in, g n < g i.
Let n be given.
Assume Hn.
Apply Hg2 n Hn to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim Lfg: n mω, f n < g m.
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
Apply SNoLt_tra (f n) x (g m) (Lf n Hn) Hx1 (Lg m Hm) to the current goal.
We will prove f n < x.
An exact proof term for the current goal is Lf1 n Hn.
We will prove x < g m.
An exact proof term for the current goal is Lg2 m Hm.
Set L to be the term {f n|nω}.
Set R to be the term {g n|nω}.
Apply SNo_approx_real_lem f Hf1 g Hg1 Lfg to the current goal.
Assume H1: SNoCutP L R.
Assume H2: SNo (SNoCut L R).
Assume H3: SNoLev (SNoCut L R) ordsucc ω.
Assume H4: SNoCut L R SNoS_ (ordsucc ω).
Assume H5: nω, f n < SNoCut L R.
Assume H6: nω, SNoCut L R < g n.
We prove the intermediate claim Lxfg: x = SNoCut L R.
rewrite the current goal using SNo_eta x Hx1 (from left to right).
Apply SNoCut_ext (SNoL x) (SNoR x) L R (SNoCutP_SNoL_SNoR x Hx1) H1 to the current goal.
Let w be given.
Assume Hw: w SNoL x.
We will prove w < SNoCut L R.
Apply SNoL_E x Hx1 w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
We prove the intermediate claim Lw1: w SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega x Hx w Hw1 Hw2.
We prove the intermediate claim Lw2: 0 < x + - w.
An exact proof term for the current goal is SNoLt_minus_pos w x Hw1 Hx1 Hw3.
We prove the intermediate claim Lw3: kω, w + eps_ k x.
Apply dneg to the current goal.
Assume H7: ¬ kω, w + eps_ k x.
We prove the intermediate claim Lw3a: w = x.
Apply Hx4 w Lw1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (w + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap w x Hw1 Hx1 (from left to right).
We will prove abs_SNo (x + - w) < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - w) Lw2 (from left to right).
We will prove x + - w < eps_ k.
Apply SNoLtLe_or (x + - w) (eps_ k) (SNo_add_SNo x (- w) Hx1 (SNo_minus_SNo w Hw1)) (SNo_eps_ k Hk) to the current goal.
Assume H8: x + - w < eps_ k.
An exact proof term for the current goal is H8.
Assume H8: eps_ k x + - w.
We will prove False.
Apply H7 to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove w + eps_ k x.
rewrite the current goal using add_SNo_minus_R2' x w Hx1 Hw1 (from right to left).
We will prove w + eps_ k (x + - w) + w.
rewrite the current goal using add_SNo_com w (eps_ k) Hw1 (SNo_eps_ k Hk) (from left to right).
We will prove eps_ k + w (x + - w) + w.
An exact proof term for the current goal is add_SNo_Le1 (eps_ k) w (x + - w) (SNo_eps_ k Hk) Hw1 (SNo_add_SNo x (- w) Hx1 (SNo_minus_SNo w Hw1)) H8.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lw3a (from right to left) at position 1.
An exact proof term for the current goal is Hw3.
Apply Lw3 to the current goal.
Let k be given.
Assume Hk.
Apply Hk to the current goal.
Assume Hk1: k ω.
Assume Hk2: w + eps_ k x.
We will prove w < SNoCut L R.
Apply SNoLt_tra w (f k) (SNoCut L R) Hw1 (Lf k Hk1) H2 to the current goal.
We will prove w < f k.
Apply add_SNo_Lt1_cancel w (eps_ k) (f k) Hw1 (SNo_eps_ k Hk1) (Lf k Hk1) to the current goal.
We will prove w + eps_ k < f k + eps_ k.
Apply SNoLeLt_tra (w + eps_ k) x (f k + eps_ k) (SNo_add_SNo w (eps_ k) Hw1 (SNo_eps_ k Hk1)) Hx1 (SNo_add_SNo (f k) (eps_ k) (Lf k Hk1) (SNo_eps_ k Hk1)) Hk2 to the current goal.
We will prove x < f k + eps_ k.
Apply Hf2 k Hk1 to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We will prove f k < SNoCut L R.
An exact proof term for the current goal is H5 k Hk1.
Let z be given.
Assume Hz: z SNoR x.
We will prove SNoCut L R < z.
Apply SNoR_E x Hx1 z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x.
Assume Hz3: x < z.
We prove the intermediate claim Lz1: z SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega x Hx z Hz1 Hz2.
We prove the intermediate claim Lz2: 0 < z + - x.
An exact proof term for the current goal is SNoLt_minus_pos x z Hx1 Hz1 Hz3.
We prove the intermediate claim Lz3: kω, x + eps_ k z.
Apply dneg to the current goal.
Assume H7: ¬ kω, x + eps_ k z.
We prove the intermediate claim Lz3a: z = x.
Apply Hx4 z Lz1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (z + - x) < eps_ k.
rewrite the current goal using pos_abs_SNo (z + - x) Lz2 (from left to right).
We will prove z + - x < eps_ k.
Apply SNoLtLe_or (z + - x) (eps_ k) (SNo_add_SNo z (- x) Hz1 (SNo_minus_SNo x Hx1)) (SNo_eps_ k Hk) to the current goal.
Assume H8: z + - x < eps_ k.
An exact proof term for the current goal is H8.
Assume H8: eps_ k z + - x.
We will prove False.
Apply H7 to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove x + eps_ k z.
rewrite the current goal using add_SNo_minus_R2' z x Hz1 Hx1 (from right to left).
We will prove x + eps_ k (z + - x) + x.
rewrite the current goal using add_SNo_com x (eps_ k) Hx1 (SNo_eps_ k Hk) (from left to right).
We will prove eps_ k + x (z + - x) + x.
An exact proof term for the current goal is add_SNo_Le1 (eps_ k) x (z + - x) (SNo_eps_ k Hk) Hx1 (SNo_add_SNo z (- x) Hz1 (SNo_minus_SNo x Hx1)) H8.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lz3a (from right to left) at position 2.
An exact proof term for the current goal is Hz3.
Apply Lz3 to the current goal.
Let k be given.
Assume Hk.
Apply Hk to the current goal.
Assume Hk1: k ω.
Assume Hk2: x + eps_ k z.
We will prove SNoCut L R < z.
Apply SNoLt_tra (SNoCut L R) (g k) z H2 (Lg k Hk1) Hz1 to the current goal.
An exact proof term for the current goal is H6 k Hk1.
We will prove g k < z.
Apply SNoLtLe_tra (g k) (x + eps_ k) z (Lg k Hk1) (SNo_add_SNo x (eps_ k) Hx1 (SNo_eps_ k Hk1)) Hz1 to the current goal.
We will prove g k < x + eps_ k.
Apply add_SNo_minus_Lt1 (g k) (eps_ k) x (Lg k Hk1) (SNo_eps_ k Hk1) Hx1 to the current goal.
We will prove g k + - eps_ k < x.
An exact proof term for the current goal is Lg1 k Hk1.
We will prove x + eps_ k z.
An exact proof term for the current goal is Hk2.
Let w be given.
Assume Hw: w L.
rewrite the current goal using SNo_eta x Hx1 (from right to left).
We will prove w < x.
Apply ReplE_impred ω (λn ⇒ f n) w Hw to the current goal.
Let n be given.
Assume Hn.
Assume Hwn: w = f n.
rewrite the current goal using Hwn (from left to right).
We will prove f n < x.
An exact proof term for the current goal is Lf1 n Hn.
Let z be given.
Assume Hz: z R.
rewrite the current goal using SNo_eta x Hx1 (from right to left).
We will prove x < z.
Apply ReplE_impred ω (λn ⇒ g n) z Hz to the current goal.
Let m be given.
Assume Hm.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove x < g m.
An exact proof term for the current goal is Lg2 m Hm.
An exact proof term for the current goal is Hp f Hf1 g Hg1 Lf1 Lf2 Lf3 Lg1 Lg2 Lg3 H1 Lxfg.
Theorem. (real_add_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Apply SNo_approx_real_rep x Hx to the current goal.
Let fL be given.
Assume HfL.
Let fR be given.
Assume HfR HfL1 HfL2 HfL3 HfR1 HfR2 HfR3 HfLR HxfLR.
Apply SNo_approx_real_rep y Hy to the current goal.
Let gL be given.
Assume HgL.
Let gR be given.
Assume HgR HgL1 HgL2 HgL3 HgR1 HgR2 HgR3 HgLR HygLR.
Set hL to be the term λn ∈ ωfL (ordsucc n) + gL (ordsucc n).
Set hR to be the term λn ∈ ωfR (ordsucc n) + gR (ordsucc n).
Set L to be the term {hL n|nω}.
Set R to be the term {hR n|nω}.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is real_SNo x Hx.
We prove the intermediate claim Ly: SNo y.
An exact proof term for the current goal is real_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 Lx Ly.
We prove the intermediate claim Lx2: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
An exact proof term for the current goal is real_SNoS_omega_prop x Hx.
We prove the intermediate claim Ly2: qSNoS_ ω, (kω, abs_SNo (q + - y) < eps_ k)q = y.
An exact proof term for the current goal is real_SNoS_omega_prop y Hy.
We prove the intermediate claim LfLa: nω, fL (ordsucc n) SNoS_ ω.
Let n be given.
Assume Hn.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) fL (ordsucc n) HfL (omega_ordsucc n Hn).
We prove the intermediate claim LfLb: nω, SNo (fL (ordsucc n)).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (fL (ordsucc n)) (LfLa n Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LgLa: nω, gL (ordsucc n) SNoS_ ω.
Let n be given.
Assume Hn.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) gL (ordsucc n) HgL (omega_ordsucc n Hn).
We prove the intermediate claim LgLb: nω, SNo (gL (ordsucc n)).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (gL (ordsucc n)) (LgLa n Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LfRa: nω, fR (ordsucc n) SNoS_ ω.
Let n be given.
Assume Hn.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) fR (ordsucc n) HfR (omega_ordsucc n Hn).
We prove the intermediate claim LfRb: nω, SNo (fR (ordsucc n)).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (fR (ordsucc n)) (LfRa n Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LgRa: nω, gR (ordsucc n) SNoS_ ω.
Let n be given.
Assume Hn.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) gR (ordsucc n) HgR (omega_ordsucc n Hn).
We prove the intermediate claim LgRb: nω, SNo (gR (ordsucc n)).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (gR (ordsucc n)) (LgRa n Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LhL: nω, hL n = fL (ordsucc n) + gL (ordsucc n).
Let n be given.
Assume Hn.
An exact proof term for the current goal is beta ω (λn ⇒ fL (ordsucc n) + gL (ordsucc n)) n Hn.
We prove the intermediate claim LhR: nω, hR n = fR (ordsucc n) + gR (ordsucc n).
Let n be given.
Assume Hn.
An exact proof term for the current goal is beta ω (λn ⇒ fR (ordsucc n) + gR (ordsucc n)) n Hn.
We prove the intermediate claim LhLb: nω, SNo (hL n).
Let n be given.
Assume Hn.
rewrite the current goal using LhL n Hn (from left to right).
We will prove SNo (fL (ordsucc n) + gL (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo (fL (ordsucc n)) (gL (ordsucc n)) (LfLb n Hn) (LgLb n Hn).
We prove the intermediate claim LhRb: nω, SNo (hR n).
Let n be given.
Assume Hn.
rewrite the current goal using LhR n Hn (from left to right).
We will prove SNo (fR (ordsucc n) + gR (ordsucc n)).
An exact proof term for the current goal is SNo_add_SNo (fR (ordsucc n)) (gR (ordsucc n)) (LfRb n Hn) (LgRb n Hn).
We prove the intermediate claim L1: hL SNoS_ ωω.
We will prove (λn ∈ ωfL (ordsucc n) + gL (ordsucc n)) _ω, SNoS_ ω.
Apply lam_Pi to the current goal.
Let n be given.
Assume Hn.
We will prove fL (ordsucc n) + gL (ordsucc n) SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is LfLa n Hn.
An exact proof term for the current goal is LgLa n Hn.
We prove the intermediate claim L2: hR SNoS_ ωω.
We will prove (λn ∈ ωfR (ordsucc n) + gR (ordsucc n)) _ω, SNoS_ ω.
Apply lam_Pi to the current goal.
Let n be given.
Assume Hn.
We will prove fR (ordsucc n) + gR (ordsucc n) SNoS_ ω.
Apply add_SNo_SNoS_omega to the current goal.
An exact proof term for the current goal is LfRa n Hn.
An exact proof term for the current goal is LgRa n Hn.
We prove the intermediate claim L3: nω, hL n < x + y.
Let n be given.
Assume Hn.
rewrite the current goal using LhL n Hn (from left to right).
We will prove fL (ordsucc n) + gL (ordsucc n) < x + y.
Apply add_SNo_Lt3 (fL (ordsucc n)) (gL (ordsucc n)) x y (LfLb n Hn) (LgLb n Hn) Lx Ly to the current goal.
We will prove fL (ordsucc n) < x.
An exact proof term for the current goal is HfL1 (ordsucc n) (omega_ordsucc n Hn).
We will prove gL (ordsucc n) < y.
An exact proof term for the current goal is HgL1 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L4: nω, x + y < hL n + eps_ n.
Let n be given.
Assume Hn.
rewrite the current goal using LhL n Hn (from left to right).
We will prove x + y < (fL (ordsucc n) + gL (ordsucc n)) + eps_ n.
rewrite the current goal using eps_ordsucc_half_add n (omega_nat_p n Hn) (from right to left).
We will prove x + y < (fL (ordsucc n) + gL (ordsucc n)) + (eps_ (ordsucc n) + eps_ (ordsucc n)).
We prove the intermediate claim LeSn: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) (omega_ordsucc n Hn).
rewrite the current goal using add_SNo_com_4_inner_mid (fL (ordsucc n)) (gL (ordsucc n)) (eps_ (ordsucc n)) (eps_ (ordsucc n)) (LfLb n Hn) (LgLb n Hn) LeSn LeSn (from left to right).
We will prove x + y < (fL (ordsucc n) + eps_ (ordsucc n)) + (gL (ordsucc n) + eps_ (ordsucc n)).
Apply add_SNo_Lt3 x y (fL (ordsucc n) + eps_ (ordsucc n)) (gL (ordsucc n) + eps_ (ordsucc n)) Lx Ly (SNo_add_SNo (fL (ordsucc n)) (eps_ (ordsucc n)) (LfLb n Hn) LeSn) (SNo_add_SNo (gL (ordsucc n)) (eps_ (ordsucc n)) (LgLb n Hn) LeSn) to the current goal.
An exact proof term for the current goal is HfL2 (ordsucc n) (omega_ordsucc n Hn).
An exact proof term for the current goal is HgL2 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L5: nω, in, hL i < hL n.
Let n be given.
Assume Hn.
Let i be given.
Assume Hi.
rewrite the current goal using LhL n Hn (from left to right).
We prove the intermediate claim Li: i ω.
An exact proof term for the current goal is nat_p_omega i (nat_p_trans n (omega_nat_p n Hn) i Hi).
rewrite the current goal using LhL i Li (from left to right).
We will prove fL (ordsucc i) + gL (ordsucc i) < fL (ordsucc n) + gL (ordsucc n).
Apply add_SNo_Lt3 (fL (ordsucc i)) (gL (ordsucc i)) (fL (ordsucc n)) (gL (ordsucc n)) (LfLb i Li) (LgLb i Li) (LfLb n Hn) (LgLb n Hn) to the current goal.
We will prove fL (ordsucc i) < fL (ordsucc n).
An exact proof term for the current goal is HfL3 (ordsucc n) (omega_ordsucc n Hn) (ordsucc i) (nat_ordsucc_in_ordsucc n (omega_nat_p n Hn) i Hi).
We will prove gL (ordsucc i) < gL (ordsucc n).
An exact proof term for the current goal is HgL3 (ordsucc n) (omega_ordsucc n Hn) (ordsucc i) (nat_ordsucc_in_ordsucc n (omega_nat_p n Hn) i Hi).
We prove the intermediate claim L6: nω, hR n + - eps_ n < x + y.
Let n be given.
Assume Hn.
rewrite the current goal using LhR n Hn (from left to right).
We will prove (fR (ordsucc n) + gR (ordsucc n)) + - eps_ n < x + y.
rewrite the current goal using eps_ordsucc_half_add n (omega_nat_p n Hn) (from right to left).
We will prove (fR (ordsucc n) + gR (ordsucc n)) + - (eps_ (ordsucc n) + eps_ (ordsucc n)) < x + y.
We prove the intermediate claim LeSn: SNo (eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_eps_ (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim LmeSn: SNo (- eps_ (ordsucc n)).
An exact proof term for the current goal is SNo_minus_SNo (eps_ (ordsucc n)) LeSn.
rewrite the current goal using minus_add_SNo_distr (eps_ (ordsucc n)) (eps_ (ordsucc n)) LeSn LeSn (from left to right).
We will prove (fR (ordsucc n) + gR (ordsucc n)) + (- eps_ (ordsucc n) + - eps_ (ordsucc n)) < x + y.
rewrite the current goal using add_SNo_com_4_inner_mid (fR (ordsucc n)) (gR (ordsucc n)) (- eps_ (ordsucc n)) (- eps_ (ordsucc n)) (LfRb n Hn) (LgRb n Hn) LmeSn LmeSn (from left to right).
We will prove (fR (ordsucc n) + - eps_ (ordsucc n)) + (gR (ordsucc n) + - eps_ (ordsucc n)) < x + y.
Apply add_SNo_Lt3 (fR (ordsucc n) + - eps_ (ordsucc n)) (gR (ordsucc n) + - eps_ (ordsucc n)) x y (SNo_add_SNo (fR (ordsucc n)) (- eps_ (ordsucc n)) (LfRb n Hn) LmeSn) (SNo_add_SNo (gR (ordsucc n)) (- eps_ (ordsucc n)) (LgRb n Hn) LmeSn) Lx Ly to the current goal.
We will prove fR (ordsucc n) + - eps_ (ordsucc n) < x.
An exact proof term for the current goal is HfR1 (ordsucc n) (omega_ordsucc n Hn).
We will prove gR (ordsucc n) + - eps_ (ordsucc n) < y.
An exact proof term for the current goal is HgR1 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L7: nω, x + y < hR n.
Let n be given.
Assume Hn.
rewrite the current goal using LhR n Hn (from left to right).
We will prove x + y < fR (ordsucc n) + gR (ordsucc n).
Apply add_SNo_Lt3 x y (fR (ordsucc n)) (gR (ordsucc n)) Lx Ly (LfRb n Hn) (LgRb n Hn) to the current goal.
We will prove x < fR (ordsucc n).
An exact proof term for the current goal is HfR2 (ordsucc n) (omega_ordsucc n Hn).
We will prove y < gR (ordsucc n).
An exact proof term for the current goal is HgR2 (ordsucc n) (omega_ordsucc n Hn).
We prove the intermediate claim L8: nω, in, hR n < hR i.
Let n be given.
Assume Hn.
Let i be given.
Assume Hi.
rewrite the current goal using LhR n Hn (from left to right).
We prove the intermediate claim Li: i ω.
An exact proof term for the current goal is nat_p_omega i (nat_p_trans n (omega_nat_p n Hn) i Hi).
rewrite the current goal using LhR i Li (from left to right).
We will prove fR (ordsucc n) + gR (ordsucc n) < fR (ordsucc i) + gR (ordsucc i).
Apply add_SNo_Lt3 (fR (ordsucc n)) (gR (ordsucc n)) (fR (ordsucc i)) (gR (ordsucc i)) (LfRb n Hn) (LgRb n Hn) (LfRb i Li) (LgRb i Li) to the current goal.
We will prove fR (ordsucc n) < fR (ordsucc i).
An exact proof term for the current goal is HfR3 (ordsucc n) (omega_ordsucc n Hn) (ordsucc i) (nat_ordsucc_in_ordsucc n (omega_nat_p n Hn) i Hi).
We will prove gR (ordsucc n) < gR (ordsucc i).
An exact proof term for the current goal is HgR3 (ordsucc n) (omega_ordsucc n Hn) (ordsucc i) (nat_ordsucc_in_ordsucc n (omega_nat_p n Hn) i Hi).
We prove the intermediate claim LLR: SNoCutP L R.
We will prove (wL, SNo w) (zR, SNo z) (wL, zR, w < z).
Apply and3I to the current goal.
Let w be given.
Assume Hw.
Apply ReplE_impred ω (λn ⇒ hL n) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hwn: w = hL n.
rewrite the current goal using Hwn (from left to right).
We will prove SNo (hL n).
An exact proof term for the current goal is LhLb n Hn.
Let z be given.
Assume Hz.
Apply ReplE_impred ω (λn ⇒ hR n) z Hz to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hzm: z = hR m.
rewrite the current goal using Hzm (from left to right).
We will prove SNo (hR m).
An exact proof term for the current goal is LhRb m Hm.
Let w be given.
Assume Hw.
Let z be given.
Assume Hz.
Apply ReplE_impred ω (λn ⇒ hL n) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hwn: w = hL n.
rewrite the current goal using Hwn (from left to right).
Apply ReplE_impred ω (λn ⇒ hR n) z Hz to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hzm: z = hR m.
rewrite the current goal using Hzm (from left to right).
We will prove hL n < hR m.
Apply SNoLt_tra (hL n) (x + y) (hR m) (LhLb n Hn) (SNo_add_SNo x y Lx Ly) (LhRb m Hm) to the current goal.
We will prove hL n < x + y.
An exact proof term for the current goal is L3 n Hn.
We will prove x + y < hR m.
An exact proof term for the current goal is L7 m Hm.
Apply SNoCutP_SNoCut_impred L R LLR to the current goal.
Assume HLR1 HLR2 HLR3 HLR4 HLR5.
We prove the intermediate claim L9: x + y = SNoCut L R.
rewrite the current goal using add_SNo_eq x Lx y Ly (from left to right).
We will prove SNoCut ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y}) = SNoCut L R.
Apply SNoCut_ext ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y}) L R (add_SNo_SNoCutP x y Lx Ly) LLR to the current goal.
We will prove w{w + y|wSNoL x} {x + w|wSNoL y}, w < SNoCut L R.
Let w be given.
Assume Hw.
Apply binunionE {w + y|wSNoL x} {x + w|wSNoL y} w Hw to the current goal.
Assume Hw: w {w + y|wSNoL x}.
Apply ReplE_impred (SNoL x) (λw ⇒ w + y) w Hw to the current goal.
Let w' be given.
Assume Hw': w' SNoL x.
Assume Hww'.
rewrite the current goal using Hww' (from left to right).
We will prove w' + y < SNoCut L R.
Apply SNoL_E x Lx w' Hw' to the current goal.
Assume Hw'1 Hw'2 Hw'3.
We prove the intermediate claim Lw'1: w' SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega x Hx w' Hw'1 Hw'2.
We prove the intermediate claim Lw'2: nω, w' + y hL n.
Apply dneg to the current goal.
Assume HC: ¬ (nω, w' + y hL n).
We prove the intermediate claim Lw'2a: 0 < x + - w'.
Apply SNoLt_minus_pos w' x Hw'1 Lx Hw'3 to the current goal.
We prove the intermediate claim Lw'2b: w' = x.
Apply Lx2 w' Lw'1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (w' + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap w' x Hw'1 Lx (from left to right).
We will prove abs_SNo (x + - w') < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - w') Lw'2a (from left to right).
We will prove x + - w' < eps_ k.
Apply add_SNo_minus_Lt1b x w' (eps_ k) Lx Hw'1 (SNo_eps_ k Hk) to the current goal.
We will prove x < eps_ k + w'.
Apply SNoLtLe_or x (eps_ k + w') Lx (SNo_add_SNo (eps_ k) w' (SNo_eps_ k Hk) Hw'1) to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: eps_ k + w' x.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove w' + y hL k.
Apply SNoLtLe to the current goal.
We will prove w' + y < hL k.
Apply add_SNo_Lt1_cancel (w' + y) (eps_ k) (hL k) (SNo_add_SNo w' y Hw'1 Ly) (SNo_eps_ k Hk) (LhLb k Hk) to the current goal.
We will prove (w' + y) + eps_ k < hL k + eps_ k.
Apply SNoLeLt_tra ((w' + y) + eps_ k) (x + y) (hL k + eps_ k) (SNo_add_SNo (w' + y) (eps_ k) (SNo_add_SNo w' y Hw'1 Ly) (SNo_eps_ k Hk)) Lxy (SNo_add_SNo (hL k) (eps_ k) (LhLb k Hk) (SNo_eps_ k Hk)) to the current goal.
We will prove (w' + y) + eps_ k x + y.
rewrite the current goal using add_SNo_com_3b_1_2 w' y (eps_ k) Hw'1 Ly (SNo_eps_ k Hk) (from left to right).
We will prove (w' + eps_ k) + y x + y.
Apply add_SNo_Le1 (w' + eps_ k) y x (SNo_add_SNo w' (eps_ k) Hw'1 (SNo_eps_ k Hk)) Ly Lx to the current goal.
We will prove w' + eps_ k x.
rewrite the current goal using add_SNo_com w' (eps_ k) Hw'1 (SNo_eps_ k Hk) (from left to right).
We will prove eps_ k + w' x.
An exact proof term for the current goal is H2.
We will prove x + y < hL k + eps_ k.
An exact proof term for the current goal is L4 k Hk.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using Lw'2b (from right to left) at position 1.
An exact proof term for the current goal is Hw'3.
Apply Lw'2 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1 Hn2.
Apply SNoLeLt_tra (w' + y) (hL n) (SNoCut L R) (SNo_add_SNo w' y Hw'1 Ly) (LhLb n Hn1) HLR1 to the current goal.
We will prove w' + y hL n.
An exact proof term for the current goal is Hn2.
We will prove hL n < SNoCut L R.
Apply HLR3 to the current goal.
We will prove hL n L.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn1.
Assume Hw: w {x + w|wSNoL y}.
Apply ReplE_impred (SNoL y) (λw ⇒ x + w) w Hw to the current goal.
Let w' be given.
Assume Hw': w' SNoL y.
Assume Hww'.
rewrite the current goal using Hww' (from left to right).
We will prove x + w' < SNoCut L R.
Apply SNoL_E y Ly w' Hw' to the current goal.
Assume Hw'1 Hw'2 Hw'3.
We prove the intermediate claim Lw'1: w' SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega y Hy w' Hw'1 Hw'2.
We prove the intermediate claim Lw'2: nω, x + w' hL n.
Apply dneg to the current goal.
Assume HC: ¬ (nω, x + w' hL n).
We prove the intermediate claim Lw'2a: 0 < y + - w'.
Apply SNoLt_minus_pos w' y Hw'1 Ly Hw'3 to the current goal.
We prove the intermediate claim Lw'2b: w' = y.
Apply Ly2 w' Lw'1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (w' + - y) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap w' y Hw'1 Ly (from left to right).
We will prove abs_SNo (y + - w') < eps_ k.
rewrite the current goal using pos_abs_SNo (y + - w') Lw'2a (from left to right).
We will prove y + - w' < eps_ k.
Apply add_SNo_minus_Lt1b y w' (eps_ k) Ly Hw'1 (SNo_eps_ k Hk) to the current goal.
We will prove y < eps_ k + w'.
Apply SNoLtLe_or y (eps_ k + w') Ly (SNo_add_SNo (eps_ k) w' (SNo_eps_ k Hk) Hw'1) to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: eps_ k + w' y.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove x + w' hL k.
Apply SNoLtLe to the current goal.
We will prove x + w' < hL k.
Apply add_SNo_Lt1_cancel (x + w') (eps_ k) (hL k) (SNo_add_SNo x w' Lx Hw'1) (SNo_eps_ k Hk) (LhLb k Hk) to the current goal.
We will prove (x + w') + eps_ k < hL k + eps_ k.
Apply SNoLeLt_tra ((x + w') + eps_ k) (x + y) (hL k + eps_ k) (SNo_add_SNo (x + w') (eps_ k) (SNo_add_SNo x w' Lx Hw'1) (SNo_eps_ k Hk)) Lxy (SNo_add_SNo (hL k) (eps_ k) (LhLb k Hk) (SNo_eps_ k Hk)) to the current goal.
We will prove (x + w') + eps_ k x + y.
rewrite the current goal using add_SNo_assoc x w' (eps_ k) Lx Hw'1 (SNo_eps_ k Hk) (from right to left).
We will prove x + (w' + eps_ k) x + y.
Apply add_SNo_Le2 x (w' + eps_ k) y Lx (SNo_add_SNo w' (eps_ k) Hw'1 (SNo_eps_ k Hk)) Ly to the current goal.
We will prove w' + eps_ k y.
rewrite the current goal using add_SNo_com w' (eps_ k) Hw'1 (SNo_eps_ k Hk) (from left to right).
We will prove eps_ k + w' y.
An exact proof term for the current goal is H2.
We will prove x + y < hL k + eps_ k.
An exact proof term for the current goal is L4 k Hk.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Lw'2b (from right to left) at position 1.
An exact proof term for the current goal is Hw'3.
Apply Lw'2 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1 Hn2.
Apply SNoLeLt_tra (x + w') (hL n) (SNoCut L R) (SNo_add_SNo x w' Lx Hw'1) (LhLb n Hn1) HLR1 to the current goal.
We will prove x + w' hL n.
An exact proof term for the current goal is Hn2.
We will prove hL n < SNoCut L R.
Apply HLR3 to the current goal.
We will prove hL n L.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn1.
We will prove z{z + y|zSNoR x} {x + z|zSNoR y}, SNoCut L R < z.
Let z be given.
Assume Hz.
Apply binunionE {z + y|zSNoR x} {x + z|zSNoR y} z Hz to the current goal.
Assume Hz: z {z + y|zSNoR x}.
Apply ReplE_impred (SNoR x) (λz ⇒ z + y) z Hz to the current goal.
Let z' be given.
Assume Hz': z' SNoR x.
Assume Hzz'.
rewrite the current goal using Hzz' (from left to right).
We will prove SNoCut L R < z' + y.
Apply SNoR_E x Lx z' Hz' to the current goal.
Assume Hz'1 Hz'2 Hz'3.
We prove the intermediate claim Lz'1: z' SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega x Hx z' Hz'1 Hz'2.
We prove the intermediate claim Lz'2: nω, hR n z' + y.
Apply dneg to the current goal.
Assume HC: ¬ (nω, hR n z' + y).
We prove the intermediate claim Lz'2a: 0 < z' + - x.
Apply SNoLt_minus_pos x z' Lx Hz'1 Hz'3 to the current goal.
We prove the intermediate claim Lz'2b: z' = x.
Apply Lx2 z' Lz'1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (z' + - x) < eps_ k.
rewrite the current goal using pos_abs_SNo (z' + - x) Lz'2a (from left to right).
We will prove z' + - x < eps_ k.
Apply add_SNo_minus_Lt1b z' x (eps_ k) Hz'1 Lx (SNo_eps_ k Hk) to the current goal.
We will prove z' < eps_ k + x.
Apply SNoLtLe_or z' (eps_ k + x) Hz'1 (SNo_add_SNo (eps_ k) x (SNo_eps_ k Hk) Lx) to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: eps_ k + x z'.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove hR k z' + y.
Apply SNoLtLe to the current goal.
Apply add_SNo_Lt1_cancel (hR k) (- eps_ k) (z' + y) (LhRb k Hk) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk)) (SNo_add_SNo z' y Hz'1 Ly) to the current goal.
We will prove hR k + - eps_ k < (z' + y) + - eps_ k.
Apply SNoLtLe_tra (hR k + - eps_ k) (x + y) ((z' + y) + - eps_ k) (SNo_add_SNo (hR k) (- eps_ k) (LhRb k Hk) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk))) Lxy (SNo_add_SNo (z' + y) (- eps_ k) (SNo_add_SNo z' y Hz'1 Ly) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk))) to the current goal.
We will prove hR k + - eps_ k < x + y.
An exact proof term for the current goal is L6 k Hk.
We will prove x + y (z' + y) + - eps_ k.
Apply add_SNo_minus_Le2b (z' + y) (eps_ k) (x + y) (SNo_add_SNo z' y Hz'1 Ly) (SNo_eps_ k Hk) Lxy to the current goal.
We will prove (x + y) + eps_ k z' + y.
rewrite the current goal using add_SNo_com_3b_1_2 x y (eps_ k) Lx Ly (SNo_eps_ k Hk) (from left to right).
We will prove (x + eps_ k) + y z' + y.
Apply add_SNo_Le1 (x + eps_ k) y z' (SNo_add_SNo x (eps_ k) Lx (SNo_eps_ k Hk)) Ly Hz'1 to the current goal.
We will prove x + eps_ k z'.
rewrite the current goal using add_SNo_com x (eps_ k) Lx (SNo_eps_ k Hk) (from left to right).
An exact proof term for the current goal is H2.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using Lz'2b (from right to left) at position 2.
An exact proof term for the current goal is Hz'3.
Apply Lz'2 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1 Hn2.
Apply SNoLtLe_tra (SNoCut L R) (hR n) (z' + y) HLR1 (LhRb n Hn1) (SNo_add_SNo z' y Hz'1 Ly) to the current goal.
We will prove SNoCut L R < hR n.
Apply HLR4 to the current goal.
We will prove hR n R.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn1.
We will prove hR n z' + y.
An exact proof term for the current goal is Hn2.
Assume Hz: z {x + z|zSNoR y}.
Apply ReplE_impred (SNoR y) (λz ⇒ x + z) z Hz to the current goal.
Let z' be given.
Assume Hz': z' SNoR y.
Assume Hzz'.
rewrite the current goal using Hzz' (from left to right).
We will prove SNoCut L R < x + z'.
Apply SNoR_E y Ly z' Hz' to the current goal.
Assume Hz'1 Hz'2 Hz'3.
We prove the intermediate claim Lz'1: z' SNoS_ ω.
An exact proof term for the current goal is SNoLev_In_real_SNoS_omega y Hy z' Hz'1 Hz'2.
We prove the intermediate claim Lz'2: nω, hR n x + z'.
Apply dneg to the current goal.
Assume HC: ¬ (nω, hR n x + z').
We prove the intermediate claim Lz'2a: 0 < z' + - y.
Apply SNoLt_minus_pos y z' Ly Hz'1 Hz'3 to the current goal.
We prove the intermediate claim Lz'2b: z' = y.
Apply Ly2 z' Lz'1 to the current goal.
Let k be given.
Assume Hk.
We will prove abs_SNo (z' + - y) < eps_ k.
rewrite the current goal using pos_abs_SNo (z' + - y) Lz'2a (from left to right).
We will prove z' + - y < eps_ k.
Apply add_SNo_minus_Lt1b z' y (eps_ k) Hz'1 Ly (SNo_eps_ k Hk) to the current goal.
We will prove z' < eps_ k + y.
Apply SNoLtLe_or z' (eps_ k + y) Hz'1 (SNo_add_SNo (eps_ k) y (SNo_eps_ k Hk) Ly) to the current goal.
Assume H2.
An exact proof term for the current goal is H2.
Assume H2: eps_ k + y z'.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
We will prove hR k x + z'.
Apply SNoLtLe to the current goal.
Apply add_SNo_Lt1_cancel (hR k) (- eps_ k) (x + z') (LhRb k Hk) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk)) (SNo_add_SNo x z' Lx Hz'1) to the current goal.
We will prove hR k + - eps_ k < (x + z') + - eps_ k.
Apply SNoLtLe_tra (hR k + - eps_ k) (x + y) ((x + z') + - eps_ k) (SNo_add_SNo (hR k) (- eps_ k) (LhRb k Hk) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk))) Lxy (SNo_add_SNo (x + z') (- eps_ k) (SNo_add_SNo x z' Lx Hz'1) (SNo_minus_SNo (eps_ k) (SNo_eps_ k Hk))) to the current goal.
We will prove hR k + - eps_ k < x + y.
An exact proof term for the current goal is L6 k Hk.
We will prove x + y (x + z') + - eps_ k.
Apply add_SNo_minus_Le2b (x + z') (eps_ k) (x + y) (SNo_add_SNo x z' Lx Hz'1) (SNo_eps_ k Hk) Lxy to the current goal.
We will prove (x + y) + eps_ k x + z'.
rewrite the current goal using add_SNo_assoc x y (eps_ k) Lx Ly (SNo_eps_ k Hk) (from right to left).
We will prove x + (y + eps_ k) x + z'.
Apply add_SNo_Le2 x (y + eps_ k) z' Lx (SNo_add_SNo y (eps_ k) Ly (SNo_eps_ k Hk)) Hz'1 to the current goal.
We will prove y + eps_ k z'.
rewrite the current goal using add_SNo_com y (eps_ k) Ly (SNo_eps_ k Hk) (from left to right).
An exact proof term for the current goal is H2.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Lz'2b (from right to left) at position 2.
An exact proof term for the current goal is Hz'3.
Apply Lz'2 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1 Hn2.
Apply SNoLtLe_tra (SNoCut L R) (hR n) (x + z') HLR1 (LhRb n Hn1) (SNo_add_SNo x z' Lx Hz'1) to the current goal.
We will prove SNoCut L R < hR n.
Apply HLR4 to the current goal.
We will prove hR n R.
Apply ReplI to the current goal.
An exact proof term for the current goal is Hn1.
We will prove hR n x + z'.
An exact proof term for the current goal is Hn2.
Let w be given.
Assume Hw: w L.
rewrite the current goal using add_SNo_eq x Lx y Ly (from right to left).
We will prove w < x + y.
Apply ReplE_impred ω (λn ⇒ hL n) w Hw to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hwn: w = hL n.
rewrite the current goal using Hwn (from left to right).
We will prove hL n < x + y.
An exact proof term for the current goal is L3 n Hn.
Let z be given.
Assume Hz: z R.
rewrite the current goal using add_SNo_eq x Lx y Ly (from right to left).
We will prove x + y < z.
Apply ReplE_impred ω (λn ⇒ hR n) z Hz to the current goal.
Let n be given.
Assume Hn: n ω.
Assume Hzn: z = hR n.
rewrite the current goal using Hzn (from left to right).
We will prove x + y < hR n.
An exact proof term for the current goal is L7 n Hn.
An exact proof term for the current goal is SNo_approx_real (x + y) (SNo_add_SNo x y Lx Ly) hL L1 hR L2 L3 L4 L5 L7 L8 L9.
Proof:
Let x be given.
Assume Hx1 Hx2 Hx3.
Apply SNoS_E2 (ordsucc ω) ordsucc_omega_ordinal x Hx1 to the current goal.
Assume Hx1a Hx1b Hx1c Hx1d.
Apply SNoS_ordsucc_omega_bdd_above x Hx1 Hx3 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: x < N.
We prove the intermediate claim LN: SNo N.
An exact proof term for the current goal is omega_SNo N HN1.
We use N to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN1.
We will prove eps_ N * x < 1.
Apply SNoLt_tra (eps_ N * x) (eps_ N * N) 1 (SNo_mul_SNo (eps_ N) x (SNo_eps_ N HN1) Hx1c) (SNo_mul_SNo (eps_ N) N (SNo_eps_ N HN1) LN) SNo_1 to the current goal.
We will prove eps_ N * x < eps_ N * N.
Apply pos_mul_SNo_Lt (eps_ N) x N (SNo_eps_ N HN1) (SNo_eps_pos N HN1) Hx1c LN to the current goal.
We will prove x < N.
An exact proof term for the current goal is HN2.
We will prove eps_ N * N < 1.
Apply SNoLtLe_or (eps_ N * N) 1 (SNo_mul_SNo (eps_ N) N (SNo_eps_ N HN1) LN) SNo_1 to the current goal.
Assume H1: eps_ N * N < 1.
An exact proof term for the current goal is H1.
Assume H1: 1 eps_ N * N.
We will prove False.
We prove the intermediate claim L2N: SNo (2 ^ N).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 N (omega_nat_p N HN1).
We prove the intermediate claim L1: 2 ^ N 2 ^ N * eps_ N * N.
rewrite the current goal using mul_SNo_oneR (2 ^ N) L2N (from right to left) at position 1.
We will prove 2 ^ N * 1 2 ^ N * eps_ N * N.
Apply nonneg_mul_SNo_Le (2 ^ N) 1 (eps_ N * N) L2N to the current goal.
We will prove 0 2 ^ N.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is exp_SNo_nat_pos 2 SNo_2 SNoLt_0_2 N (omega_nat_p N HN1).
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is SNo_mul_SNo (eps_ N) N (SNo_eps_ N HN1) LN.
We will prove 1 eps_ N * N.
An exact proof term for the current goal is H1.
Apply SNoLt_irref (2 ^ N) to the current goal.
We will prove 2 ^ N < 2 ^ N.
Apply SNoLeLt_tra (2 ^ N) N (2 ^ N) L2N LN L2N to the current goal.
We will prove 2 ^ N N.
rewrite the current goal using mul_SNo_oneL N LN (from right to left) at position 2.
We will prove 2 ^ N 1 * N.
rewrite the current goal using mul_SNo_eps_power_2' N (omega_nat_p N HN1) (from right to left) at position 2.
We will prove 2 ^ N (2 ^ N * eps_ N) * N.
rewrite the current goal using mul_SNo_assoc (2 ^ N) (eps_ N) N L2N (SNo_eps_ N HN1) LN (from right to left).
An exact proof term for the current goal is L1.
We will prove N < 2 ^ N.
An exact proof term for the current goal is exp_SNo_2_bd N (omega_nat_p N HN1).
Theorem. (real_mul_SNo_pos) The following is provable:
x yreal, 0 < x0 < yx * y real
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy Hx0 Hy0.
Apply dneg to the current goal.
Assume HC: x * y real.
Apply real_E x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4 Hx5 Hx6 Hx7.
Apply real_E y Hy to the current goal.
Assume Hy1 Hy2 Hy3 Hy4 Hy5 Hy6 Hy7.
We prove the intermediate claim Lx7: kω, ∀p : prop, (qSNoS_ ω, 0 < qq < xx < q + eps_ kp)p.
An exact proof term for the current goal is SNo_prereal_incr_lower_pos x Hx1 Hx0 Hx6 Hx7.
We prove the intermediate claim Ly7: kω, ∀p : prop, (qSNoS_ ω, 0 < qq < yy < q + eps_ kp)p.
An exact proof term for the current goal is SNo_prereal_incr_lower_pos y Hy1 Hy0 Hy6 Hy7.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Hx1 Hy1.
We prove the intermediate claim Lmxy: SNo (- x * y).
An exact proof term for the current goal is SNo_minus_SNo (x * y) Lxy.
We prove the intermediate claim Lxy2: SNoLev (x * y) ω.
Assume H1: SNoLev (x * y) ω.
Apply HC to the current goal.
Apply SNoS_omega_real (x * y) to the current goal.
We will prove x * y SNoS_ ω.
Apply SNoS_I ω omega_ordinal (x * y) (SNoLev (x * y)) H1 to the current goal.
We will prove SNo_ (SNoLev (x * y)) (x * y).
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Lxy.
We prove the intermediate claim Lxy3: ∀q, SNo qSNoLev q ωSNoLev q SNoLev (x * y).
Let q be given.
Assume Hq1 Hq2.
Apply ordinal_trichotomy_or_impred (SNoLev q) (SNoLev (x * y)) (SNoLev_ordinal q Hq1) (SNoLev_ordinal (x * y) Lxy) to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: SNoLev q = SNoLev (x * y).
We will prove False.
Apply Lxy2 to the current goal.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hq2.
Assume H1: SNoLev (x * y) SNoLev q.
We will prove False.
Apply Lxy2 to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans (SNoLev q) (omega_nat_p (SNoLev q) Hq2) (SNoLev (x * y)) H1.
We prove the intermediate claim LLx: SNoL x SNoS_ ω.
Let v be given.
Assume Hv.
Apply SNoL_E x Hx1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3.
Apply SNoS_I ω omega_ordinal v (SNoLev v) to the current goal.
We will prove SNoLev v ω.
Apply ordsuccE ω (SNoLev x) Hx2 to the current goal.
Assume H1: SNoLev x ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) H1 (SNoLev v) Hv2.
Assume H1: SNoLev x = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hv2.
We will prove SNo_ (SNoLev v) v.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim LRx: SNoR x SNoS_ ω.
Let v be given.
Assume Hv.
Apply SNoR_E x Hx1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3.
Apply SNoS_I ω omega_ordinal v (SNoLev v) to the current goal.
We will prove SNoLev v ω.
Apply ordsuccE ω (SNoLev x) Hx2 to the current goal.
Assume H1: SNoLev x ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) H1 (SNoLev v) Hv2.
Assume H1: SNoLev x = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hv2.
We will prove SNo_ (SNoLev v) v.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim LLy: SNoL y SNoS_ ω.
Let v be given.
Assume Hv.
Apply SNoL_E y Hy1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3.
Apply SNoS_I ω omega_ordinal v (SNoLev v) to the current goal.
We will prove SNoLev v ω.
Apply ordsuccE ω (SNoLev y) Hy2 to the current goal.
Assume H1: SNoLev y ω.
An exact proof term for the current goal is omega_TransSet (SNoLev y) H1 (SNoLev v) Hv2.
Assume H1: SNoLev y = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hv2.
We will prove SNo_ (SNoLev v) v.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim LRy: SNoR y SNoS_ ω.
Let v be given.
Assume Hv.
Apply SNoR_E y Hy1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3.
Apply SNoS_I ω omega_ordinal v (SNoLev v) to the current goal.
We will prove SNoLev v ω.
Apply ordsuccE ω (SNoLev y) Hy2 to the current goal.
Assume H1: SNoLev y ω.
An exact proof term for the current goal is omega_TransSet (SNoLev y) H1 (SNoLev v) Hv2.
Assume H1: SNoLev y = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hv2.
We will prove SNo_ (SNoLev v) v.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hv1.
We prove the intermediate claim LLx2: vSNoL x, ∀p : prop, (∀k, k ωeps_ k x + - vp)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
Apply SNoL_E x Hx1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: v < x.
Apply xm (kω, abs_SNo (v + - x) < eps_ k) to the current goal.
Assume H1.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using Hx6 v (LLx v Hv) H1 (from right to left) at position 1.
We will prove v < x.
An exact proof term for the current goal is Hv3.
Assume H1: ¬ (kω, abs_SNo (v + - x) < eps_ k).
Apply dneg to the current goal.
Assume H2: ¬ p.
Apply H1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (v + - x) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap v x Hv1 Hx1 (from left to right).
We will prove abs_SNo (x + - v) < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - v) (SNoLt_minus_pos v x Hv1 Hx1 Hv3) (from left to right).
We will prove x + - v < eps_ k.
Apply SNoLtLe_or (x + - v) (eps_ k) (SNo_add_SNo x (- v) Hx1 (SNo_minus_SNo v Hv1)) (SNo_eps_ k Hk) to the current goal.
Assume H3: x + - v < eps_ k.
An exact proof term for the current goal is H3.
Assume H3: eps_ k x + - v.
We will prove False.
Apply H2 to the current goal.
Apply Hp k Hk to the current goal.
An exact proof term for the current goal is H3.
We prove the intermediate claim LRx2: vSNoR x, ∀p : prop, (∀k, k ωeps_ k v + - xp)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
Apply SNoR_E x Hx1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev x.
Assume Hv3: x < v.
Apply xm (kω, abs_SNo (v + - x) < eps_ k) to the current goal.
Assume H1.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
rewrite the current goal using Hx6 v (LRx v Hv) H1 (from right to left) at position 2.
We will prove x < v.
An exact proof term for the current goal is Hv3.
Assume H1: ¬ (kω, abs_SNo (v + - x) < eps_ k).
Apply dneg to the current goal.
Assume H2: ¬ p.
Apply H1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (v + - x) < eps_ k.
rewrite the current goal using pos_abs_SNo (v + - x) (SNoLt_minus_pos x v Hx1 Hv1 Hv3) (from left to right).
We will prove v + - x < eps_ k.
Apply SNoLtLe_or (v + - x) (eps_ k) (SNo_add_SNo v (- x) Hv1 (SNo_minus_SNo x Hx1)) (SNo_eps_ k Hk) to the current goal.
Assume H3: v + - x < eps_ k.
An exact proof term for the current goal is H3.
Assume H3: eps_ k v + - x.
We will prove False.
Apply H2 to the current goal.
Apply Hp k Hk to the current goal.
An exact proof term for the current goal is H3.
We prove the intermediate claim LLy2: vSNoL y, ∀p : prop, (∀k, k ωeps_ k y + - vp)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
Apply SNoL_E y Hy1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: v < y.
Apply xm (kω, abs_SNo (v + - y) < eps_ k) to the current goal.
Assume H1.
We will prove False.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Hy6 v (LLy v Hv) H1 (from right to left) at position 1.
We will prove v < y.
An exact proof term for the current goal is Hv3.
Assume H1: ¬ (kω, abs_SNo (v + - y) < eps_ k).
Apply dneg to the current goal.
Assume H2: ¬ p.
Apply H1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (v + - y) < eps_ k.
rewrite the current goal using abs_SNo_dist_swap v y Hv1 Hy1 (from left to right).
We will prove abs_SNo (y + - v) < eps_ k.
rewrite the current goal using pos_abs_SNo (y + - v) (SNoLt_minus_pos v y Hv1 Hy1 Hv3) (from left to right).
We will prove y + - v < eps_ k.
Apply SNoLtLe_or (y + - v) (eps_ k) (SNo_add_SNo y (- v) Hy1 (SNo_minus_SNo v Hv1)) (SNo_eps_ k Hk) to the current goal.
Assume H3: y + - v < eps_ k.
An exact proof term for the current goal is H3.
Assume H3: eps_ k y + - v.
We will prove False.
Apply H2 to the current goal.
Apply Hp k Hk to the current goal.
An exact proof term for the current goal is H3.
We prove the intermediate claim LRy2: vSNoR y, ∀p : prop, (∀k, k ωeps_ k v + - yp)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
Apply SNoR_E y Hy1 v Hv to the current goal.
Assume Hv1: SNo v.
Assume Hv2: SNoLev v SNoLev y.
Assume Hv3: y < v.
Apply xm (kω, abs_SNo (v + - y) < eps_ k) to the current goal.
Assume H1.
We will prove False.
Apply SNoLt_irref y to the current goal.
We will prove y < y.
rewrite the current goal using Hy6 v (LRy v Hv) H1 (from right to left) at position 2.
We will prove y < v.
An exact proof term for the current goal is Hv3.
Assume H1: ¬ (kω, abs_SNo (v + - y) < eps_ k).
Apply dneg to the current goal.
Assume H2: ¬ p.
Apply H1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (v + - y) < eps_ k.
rewrite the current goal using pos_abs_SNo (v + - y) (SNoLt_minus_pos y v Hy1 Hv1 Hv3) (from left to right).
We will prove v + - y < eps_ k.
Apply SNoLtLe_or (v + - y) (eps_ k) (SNo_add_SNo v (- y) Hv1 (SNo_minus_SNo y Hy1)) (SNo_eps_ k Hk) to the current goal.
Assume H3: v + - y < eps_ k.
An exact proof term for the current goal is H3.
Assume H3: eps_ k v + - y.
We will prove False.
Apply H2 to the current goal.
Apply Hp k Hk to the current goal.
An exact proof term for the current goal is H3.
Apply mul_SNo_eq_3 x y Hx1 Hy1 to the current goal.
Let L and R be given.
Assume HLR: SNoCutP L R.
Assume HLE: ∀u, u L∀q : prop, (w0SNoL x, w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(z0SNoR x, z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q.
Assume HLI1: w0SNoL x, w1SNoL y, w0 * y + x * w1 + - w0 * w1 L.
Assume HLI2: z0SNoR x, z1SNoR y, z0 * y + x * z1 + - z0 * z1 L.
Assume HRE: ∀u, u R∀q : prop, (w0SNoL x, z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(z0SNoR x, w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q.
Assume HRI1: w0SNoL x, z1SNoR y, w0 * y + x * z1 + - w0 * z1 R.
Assume HRI2: z0SNoR x, w1SNoL y, z0 * y + x * w1 + - z0 * w1 R.
Assume HxyLR: x * y = SNoCut L R.
We prove the intermediate claim L1: qSNoS_ ω, (kω, abs_SNo (q + - (x * y)) < eps_ k)q = x * y.
Let q be given.
Assume Hq1 Hq2.
We will prove q = x * y.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply SNoLt_trichotomy_or_impred q (x * y) Hq1c Lxy to the current goal.
Assume H1: q < x * y.
We will prove False.
We prove the intermediate claim Lq1: q SNoL (x * y).
Apply SNoL_I to the current goal.
An exact proof term for the current goal is Lxy.
An exact proof term for the current goal is Hq1c.
We will prove SNoLev q SNoLev (x * y).
An exact proof term for the current goal is Lxy3 q Hq1c Hq1a.
We will prove q < x * y.
An exact proof term for the current goal is H1.
Apply mul_SNo_SNoL_interpolate_impred x y Hx1 Hy1 q Lq1 to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoL y.
Apply SNoL_E x Hx1 v Hv to the current goal.
Assume Hv1 _ _.
Apply SNoL_E y Hy1 w Hw to the current goal.
Assume Hw1 _ _.
Assume H2: q + v * w v * y + x * w.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w ?? Hw1.
We prove the intermediate claim Lmxw: SNo (- x * w).
An exact proof term for the current goal is SNo_minus_SNo (x * w) Lxw.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_mul_SNo v y Hv1 ??.
We prove the intermediate claim Lmvy: SNo (- v * y).
An exact proof term for the current goal is SNo_minus_SNo (v * y) Lvy.
We prove the intermediate claim Lxmv: SNo (x + - v).
An exact proof term for the current goal is SNo_add_SNo x (- v) ?? (SNo_minus_SNo v ??).
We prove the intermediate claim Lymw: SNo (y + - w).
An exact proof term for the current goal is SNo_add_SNo y (- w) ?? (SNo_minus_SNo w ??).
Apply LLx2 v Hv to the current goal.
Let k be given.
Assume Hk1: k ω.
Assume Hk2: eps_ k x + - v.
Apply LLy2 w Hw to the current goal.
Let k' be given.
Assume Hk'1: k' ω.
Assume Hk'2: eps_ k' y + - w.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk1.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Hk'1.
We prove the intermediate claim Lkk': k + k' ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk1 k' Hk'1.
We prove the intermediate claim Lekk': SNo (eps_ (k + k')).
An exact proof term for the current goal is SNo_eps_ (k + k') Lkk'.
We prove the intermediate claim Lekek': SNo (eps_ k * eps_ k').
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) (eps_ k') Lek Lek'.
We prove the intermediate claim L1a: abs_SNo (q + - (x * y)) < eps_ (k + k').
An exact proof term for the current goal is Hq2 (k + k') (add_SNo_In_omega k Hk1 k' Hk'1).
We prove the intermediate claim L1b: eps_ (k + k') abs_SNo (q + - (x * y)).
rewrite the current goal using abs_SNo_dist_swap q (x * y) Hq1c Lxy (from left to right).
We will prove eps_ (k + k') abs_SNo (x * y + - q).
rewrite the current goal using pos_abs_SNo (x * y + - q) (SNoLt_minus_pos q (x * y) Hq1c Lxy H1) (from left to right).
We will prove eps_ (k + k') x * y + - q.
Apply add_SNo_minus_Le2b (x * y) q (eps_ (k + k')) Lxy Hq1c Lekk' to the current goal.
We will prove eps_ (k + k') + q x * y.
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk1 k' Hk'1 (from right to left).
We will prove eps_ k * eps_ k' + q x * y.
Apply SNoLe_tra (eps_ k * eps_ k' + q) ((x + - v) * (y + - w) + q) (x * y) (SNo_add_SNo (eps_ k * eps_ k') q ?? ??) (SNo_add_SNo ((x + - v) * (y + - w)) q (SNo_mul_SNo (x + - v) (y + - w) Lxmv Lymw) Hq1c) Lxy to the current goal.
We will prove eps_ k * eps_ k' + q (x + - v) * (y + - w) + q.
Apply add_SNo_Le1 (eps_ k * eps_ k') q ((x + - v) * (y + - w)) Lekek' Hq1c (SNo_mul_SNo (x + - v) (y + - w) Lxmv Lymw) to the current goal.
We will prove eps_ k * eps_ k' (x + - v) * (y + - w).
Apply nonneg_mul_SNo_Le2 (eps_ k) (eps_ k') (x + - v) (y + - w) Lek Lek' Lxmv Lymw to the current goal.
We will prove 0 eps_ k.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k Hk1.
We will prove 0 eps_ k'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k' Hk'1.
We will prove eps_ k x + - v.
An exact proof term for the current goal is Hk2.
We will prove eps_ k' y + - w.
An exact proof term for the current goal is Hk'2.
We will prove (x + - v) * (y + - w) + q x * y.
rewrite the current goal using SNo_foil_mm x v y w Hx1 Hv1 Hy1 Hw1 (from left to right).
We will prove (x * y + - x * w + - v * y + v * w) + q x * y.
rewrite the current goal using add_SNo_assoc_4 (x * y) (- x * w) (- v * y) (v * w) ?? ?? ?? ?? (from left to right).
We will prove ((x * y + - x * w + - v * y) + v * w) + q x * y.
rewrite the current goal using add_SNo_assoc (x * y + - x * w + - v * y) (v * w) q (SNo_add_SNo_3 (x * y) (- x * w) (- v * y) ?? ?? ??) ?? Hq1c (from right to left).
We will prove (x * y + - x * w + - v * y) + (v * w + q) x * y.
rewrite the current goal using add_SNo_com (v * w) q ?? Hq1c (from left to right).
We will prove (x * y + - x * w + - v * y) + (q + v * w) x * y.
Apply SNoLe_tra ((x * y + - x * w + - v * y) + (q + v * w)) ((x * y + - x * w + - v * y) + (v * y + x * w)) (x * y) (SNo_add_SNo (x * y + - x * w + - v * y) (q + v * w) (SNo_add_SNo_3 (x * y) (- x * w) (- v * y) ?? ?? ??) (SNo_add_SNo q (v * w) Hq1c ??)) (SNo_add_SNo (x * y + - x * w + - v * y) (v * y + x * w) (SNo_add_SNo_3 (x * y) (- x * w) (- v * y) ?? ?? ??) (SNo_add_SNo (v * y) (x * w) ?? ??)) (SNo_mul_SNo x y Hx1 Hy1) to the current goal.
We will prove (x * y + - x * w + - v * y) + (q + v * w) (x * y + - x * w + - v * y) + (v * y + x * w).
An exact proof term for the current goal is add_SNo_Le2 (x * y + - x * w + - v * y) (q + v * w) (v * y + x * w) (SNo_add_SNo_3 (x * y) (- x * w) (- v * y) ?? ?? ??) (SNo_add_SNo q (v * w) Hq1c ??) (SNo_add_SNo (v * y) (x * w) ?? ??) H2.
We will prove (x * y + - x * w + - v * y) + (v * y + x * w) x * y.
rewrite the current goal using add_SNo_minus_SNo_prop5 (x * y) (- x * w) (v * y) (x * w) ?? ?? ?? ?? (from left to right).
We will prove x * y + - x * w + x * w x * y.
rewrite the current goal using add_SNo_minus_SNo_linv (x * w) ?? (from left to right).
We will prove x * y + 0 x * y.
rewrite the current goal using add_SNo_0R (x * y) ?? (from left to right).
We will prove x * y x * y.
Apply SNoLe_ref to the current goal.
Apply SNoLt_irref (eps_ (k + k')) to the current goal.
We will prove eps_ (k + k') < eps_ (k + k').
An exact proof term for the current goal is SNoLeLt_tra (eps_ (k + k')) (abs_SNo (q + - (x * y))) (eps_ (k + k')) Lekk' (SNo_abs_SNo (q + - (x * y)) (SNo_add_SNo q (- (x * y)) Hq1c ??)) Lekk' L1b L1a.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoR y.
Apply SNoR_E x Hx1 v Hv to the current goal.
Assume Hv1 _ _.
Apply SNoR_E y Hy1 w Hw to the current goal.
Assume Hw1 _ _.
Assume H2: q + v * w v * y + x * w.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 Hw1.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w ?? Hw1.
We prove the intermediate claim Lmxw: SNo (- x * w).
An exact proof term for the current goal is SNo_minus_SNo (x * w) Lxw.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_mul_SNo v y Hv1 ??.
We prove the intermediate claim Lmvy: SNo (- v * y).
An exact proof term for the current goal is SNo_minus_SNo (v * y) Lvy.
We prove the intermediate claim Lvmx: SNo (v + - x).
An exact proof term for the current goal is SNo_add_SNo v (- x) ?? (SNo_minus_SNo x ??).
We prove the intermediate claim Lwmy: SNo (w + - y).
An exact proof term for the current goal is SNo_add_SNo w (- y) ?? (SNo_minus_SNo y ??).
Apply LRx2 v Hv to the current goal.
Let k be given.
Assume Hk1: k ω.
Assume Hk2: eps_ k v + - x.
Apply LRy2 w Hw to the current goal.
Let k' be given.
Assume Hk'1: k' ω.
Assume Hk'2: eps_ k' w + - y.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk1.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Hk'1.
We prove the intermediate claim Lkk': k + k' ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk1 k' Hk'1.
We prove the intermediate claim Lekk': SNo (eps_ (k + k')).
An exact proof term for the current goal is SNo_eps_ (k + k') Lkk'.
We prove the intermediate claim Lekek': SNo (eps_ k * eps_ k').
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) (eps_ k') Lek Lek'.
We prove the intermediate claim L1c: abs_SNo (q + - (x * y)) < eps_ (k + k').
An exact proof term for the current goal is Hq2 (k + k') (add_SNo_In_omega k Hk1 k' Hk'1).
We prove the intermediate claim L1d: eps_ (k + k') abs_SNo (q + - (x * y)).
rewrite the current goal using abs_SNo_dist_swap q (x * y) Hq1c Lxy (from left to right).
We will prove eps_ (k + k') abs_SNo (x * y + - q).
rewrite the current goal using pos_abs_SNo (x * y + - q) (SNoLt_minus_pos q (x * y) Hq1c Lxy H1) (from left to right).
We will prove eps_ (k + k') x * y + - q.
Apply add_SNo_minus_Le2b (x * y) q (eps_ (k + k')) Lxy Hq1c Lekk' to the current goal.
We will prove eps_ (k + k') + q x * y.
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk1 k' Hk'1 (from right to left).
We will prove eps_ k * eps_ k' + q x * y.
Apply SNoLe_tra (eps_ k * eps_ k' + q) ((v + - x) * (w + - y) + q) (x * y) (SNo_add_SNo (eps_ k * eps_ k') q ?? Hq1c) (SNo_add_SNo ((v + - x) * (w + - y)) q (SNo_mul_SNo (v + - x) (w + - y) ?? ??) Hq1c) Lxy to the current goal.
We will prove eps_ k * eps_ k' + q (v + - x) * (w + - y) + q.
Apply add_SNo_Le1 (eps_ k * eps_ k') q ((v + - x) * (w + - y)) Lekek' Hq1c (SNo_mul_SNo (v + - x) (w + - y) ?? ??) to the current goal.
We will prove eps_ k * eps_ k' (v + - x) * (w + - y).
Apply nonneg_mul_SNo_Le2 (eps_ k) (eps_ k') (v + - x) (w + - y) Lek Lek' ?? ?? to the current goal.
We will prove 0 eps_ k.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k Hk1.
We will prove 0 eps_ k'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k' Hk'1.
We will prove eps_ k v + - x.
An exact proof term for the current goal is Hk2.
We will prove eps_ k' w + - y.
An exact proof term for the current goal is Hk'2.
We will prove (v + - x) * (w + - y) + q x * y.
rewrite the current goal using SNo_foil_mm v x w y Hv1 Hx1 Hw1 Hy1 (from left to right).
We will prove (v * w + - v * y + - x * w + x * y) + q x * y.
rewrite the current goal using add_SNo_assoc_4 (v * w) (- v * y) (- x * w) (x * y) ?? ?? ?? ?? (from left to right).
We will prove ((v * w + - v * y + - x * w) + x * y) + q x * y.
rewrite the current goal using add_SNo_assoc (v * w + - v * y + - x * w) (x * y) q (SNo_add_SNo_3 (v * w) (- v * y) (- x * w) ?? ?? ??) ?? Hq1c (from right to left).
We will prove (v * w + - v * y + - x * w) + (x * y + q) x * y.
rewrite the current goal using add_SNo_com (x * y) q ?? Hq1c (from left to right).
We will prove (v * w + - v * y + - x * w) + (q + x * y) x * y.
rewrite the current goal using add_SNo_3a_2b (v * w) (- v * y) (- x * w) q (x * y) ?? ?? ?? ?? ?? (from left to right).
We will prove (x * y + - v * y + - x * w) + (q + v * w) x * y.
Apply SNoLe_tra ((x * y + - v * y + - x * w) + (q + v * w)) ((x * y + - v * y + - x * w) + (v * y + x * w)) (x * y) (SNo_add_SNo (x * y + - v * y + - x * w) (q + v * w) (SNo_add_SNo_3 (x * y) (- v * y) (- x * w) ?? ?? ??) (SNo_add_SNo q (v * w) ?? ??)) (SNo_add_SNo (x * y + - v * y + - x * w) (v * y + x * w) (SNo_add_SNo_3 (x * y) (- v * y) (- x * w) ?? ?? ??) (SNo_add_SNo (v * y) (x * w) ?? ??)) ?? to the current goal.
We will prove (x * y + - v * y + - x * w) + (q + v * w) (x * y + - v * y + - x * w) + (v * y + x * w).
Apply add_SNo_Le2 (x * y + - v * y + - x * w) (q + v * w) (v * y + x * w) (SNo_add_SNo_3 (x * y) (- v * y) (- x * w) ?? ?? ??) (SNo_add_SNo q (v * w) ?? ??) (SNo_add_SNo (v * y) (x * w) ?? ??) to the current goal.
We will prove q + v * w v * y + x * w.
An exact proof term for the current goal is H2.
We will prove (x * y + - v * y + - x * w) + (v * y + x * w) x * y.
rewrite the current goal using add_SNo_com (v * y) (x * w) ?? ?? (from left to right).
We will prove (x * y + - v * y + - x * w) + (x * w + v * y) x * y.
rewrite the current goal using add_SNo_minus_SNo_prop5 (x * y) (- v * y) (x * w) (v * y) ?? ?? ?? ?? (from left to right).
We will prove x * y + - v * y + v * y x * y.
rewrite the current goal using add_SNo_minus_SNo_linv (v * y) ?? (from left to right).
We will prove x * y + 0 x * y.
rewrite the current goal using add_SNo_0R (x * y) ?? (from left to right).
Apply SNoLe_ref to the current goal.
Apply SNoLt_irref (eps_ (k + k')) to the current goal.
We will prove eps_ (k + k') < eps_ (k + k').
An exact proof term for the current goal is SNoLeLt_tra (eps_ (k + k')) (abs_SNo (q + - (x * y))) (eps_ (k + k')) Lekk' (SNo_abs_SNo (q + - (x * y)) (SNo_add_SNo q (- (x * y)) Hq1c (SNo_minus_SNo (x * y) Lxy))) Lekk' L1d L1c.
Assume H1: q = x * y.
An exact proof term for the current goal is H1.
Assume H1: x * y < q.
We will prove False.
We prove the intermediate claim Lq2: q SNoR (x * y).
Apply SNoR_I to the current goal.
An exact proof term for the current goal is Lxy.
An exact proof term for the current goal is Hq1c.
We will prove SNoLev q SNoLev (x * y).
An exact proof term for the current goal is Lxy3 q Hq1c Hq1a.
We will prove x * y < q.
An exact proof term for the current goal is H1.
Apply mul_SNo_SNoR_interpolate_impred x y Hx1 Hy1 q Lq2 to the current goal.
Let v be given.
Assume Hv: v SNoL x.
Let w be given.
Assume Hw: w SNoR y.
Apply SNoL_E x Hx1 v Hv to the current goal.
Assume Hv1 _ _.
Apply SNoR_E y Hy1 w Hw to the current goal.
Assume Hw1 _ _.
Assume H2: v * y + x * w q + v * w.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_mul_SNo v y Hv1 Hy1.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w ?? Hw1.
We prove the intermediate claim Lmxw: SNo (- x * w).
An exact proof term for the current goal is SNo_minus_SNo (x * w) Lxw.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 ??.
We prove the intermediate claim Lmvw: SNo (- v * w).
An exact proof term for the current goal is SNo_minus_SNo (v * w) Lvw.
We prove the intermediate claim Lxmv: SNo (x + - v).
An exact proof term for the current goal is SNo_add_SNo x (- v) ?? (SNo_minus_SNo v ??).
We prove the intermediate claim Lwmy: SNo (w + - y).
An exact proof term for the current goal is SNo_add_SNo w (- y) ?? (SNo_minus_SNo y ??).
Apply LLx2 v Hv to the current goal.
Let k be given.
Assume Hk1: k ω.
Assume Hk2: eps_ k x + - v.
Apply LRy2 w Hw to the current goal.
Let k' be given.
Assume Hk'1: k' ω.
Assume Hk'2: eps_ k' w + - y.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk1.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Hk'1.
We prove the intermediate claim Lkk': k + k' ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk1 k' Hk'1.
We prove the intermediate claim Lekk': SNo (eps_ (k + k')).
An exact proof term for the current goal is SNo_eps_ (k + k') Lkk'.
We prove the intermediate claim Lekek': SNo (eps_ k * eps_ k').
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) (eps_ k') Lek Lek'.
We prove the intermediate claim L1e: abs_SNo (q + - (x * y)) < eps_ (k + k').
An exact proof term for the current goal is Hq2 (k + k') (add_SNo_In_omega k Hk1 k' Hk'1).
We prove the intermediate claim L1f: eps_ (k + k') abs_SNo (q + - (x * y)).
rewrite the current goal using pos_abs_SNo (q + - x * y) (SNoLt_minus_pos (x * y) q Lxy Hq1c H1) (from left to right).
We will prove eps_ (k + k') q + - x * y.
Apply add_SNo_minus_Le2b q (x * y) (eps_ (k + k')) Hq1c Lxy Lekk' to the current goal.
We will prove eps_ (k + k') + x * y q.
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk1 k' Hk'1 (from right to left).
We will prove eps_ k * eps_ k' + x * y q.
Apply SNoLe_tra (eps_ k * eps_ k' + x * y) ((x + - v) * (w + - y) + x * y) q (SNo_add_SNo (eps_ k * eps_ k') (x * y) ?? ??) (SNo_add_SNo ((x + - v) * (w + - y)) (x * y) (SNo_mul_SNo (x + - v) (w + - y) Lxmv Lwmy) Lxy) Hq1c to the current goal.
We will prove eps_ k * eps_ k' + x * y (x + - v) * (w + - y) + x * y.
Apply add_SNo_Le1 (eps_ k * eps_ k') (x * y) ((x + - v) * (w + - y)) Lekek' Lxy (SNo_mul_SNo (x + - v) (w + - y) Lxmv Lwmy) to the current goal.
We will prove eps_ k * eps_ k' (x + - v) * (w + - y).
Apply nonneg_mul_SNo_Le2 (eps_ k) (eps_ k') (x + - v) (w + - y) Lek Lek' Lxmv Lwmy to the current goal.
We will prove 0 eps_ k.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k Hk1.
We will prove 0 eps_ k'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k' Hk'1.
We will prove eps_ k x + - v.
An exact proof term for the current goal is Hk2.
We will prove eps_ k' w + - y.
An exact proof term for the current goal is Hk'2.
We will prove (x + - v) * (w + - y) + x * y q.
rewrite the current goal using SNo_foil_mm x v w y Hx1 Hv1 Hw1 Hy1 (from left to right).
We will prove (x * w + - x * y + - v * w + v * y) + x * y q.
rewrite the current goal using add_SNo_rotate_4_1 (- x * y) (- v * w) (v * y) (x * w) ?? ?? ?? ?? (from right to left).
We will prove (- x * y + - v * w + v * y + x * w) + x * y q.
rewrite the current goal using add_SNo_com (- x * y + - v * w + v * y + x * w) (x * y) (SNo_add_SNo_4 (- x * y) (- v * w) (v * y) (x * w) ?? ?? ?? ??) ?? (from left to right).
rewrite the current goal using add_SNo_minus_L2' (x * y) (- v * w + v * y + x * w) ?? (SNo_add_SNo_3 (- v * w) (v * y) (x * w) ?? ?? ??) (from left to right).
We will prove - v * w + v * y + x * w q.
Apply SNoLe_tra (- v * w + v * y + x * w) (- v * w + q + v * w) q (SNo_add_SNo_3 (- v * w) (v * y) (x * w) ?? ?? ??) (SNo_add_SNo_3 (- v * w) q (v * w) ?? ?? ??) Hq1c to the current goal.
We will prove - v * w + v * y + x * w - v * w + q + v * w.
An exact proof term for the current goal is add_SNo_Le2 (- v * w) (v * y + x * w) (q + v * w) ?? (SNo_add_SNo (v * y) (x * w) ?? ??) (SNo_add_SNo q (v * w) Hq1c ??) H2.
We will prove - v * w + q + v * w q.
rewrite the current goal using add_SNo_com q (v * w) ?? ?? (from left to right).
rewrite the current goal using add_SNo_minus_L2 (v * w) q ?? ?? (from left to right).
We will prove q q.
Apply SNoLe_ref to the current goal.
Apply SNoLt_irref (eps_ (k + k')) to the current goal.
We will prove eps_ (k + k') < eps_ (k + k').
An exact proof term for the current goal is SNoLeLt_tra (eps_ (k + k')) (abs_SNo (q + - (x * y))) (eps_ (k + k')) Lekk' (SNo_abs_SNo (q + - (x * y)) (SNo_add_SNo q (- (x * y)) Hq1c ??)) Lekk' L1f L1e.
Let v be given.
Assume Hv: v SNoR x.
Let w be given.
Assume Hw: w SNoL y.
Apply SNoR_E x Hx1 v Hv to the current goal.
Assume Hv1 _ _.
Apply SNoL_E y Hy1 w Hw to the current goal.
Assume Hw1 _ _.
Assume H2: v * y + x * w q + v * w.
We prove the intermediate claim Lvy: SNo (v * y).
An exact proof term for the current goal is SNo_mul_SNo v y Hv1 Hy1.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w ?? Hw1.
We prove the intermediate claim Lvw: SNo (v * w).
An exact proof term for the current goal is SNo_mul_SNo v w Hv1 ??.
We prove the intermediate claim Lmvw: SNo (- v * w).
An exact proof term for the current goal is SNo_minus_SNo (v * w) Lvw.
We prove the intermediate claim Lvmx: SNo (v + - x).
An exact proof term for the current goal is SNo_add_SNo v (- x) ?? (SNo_minus_SNo x ??).
We prove the intermediate claim Lymw: SNo (y + - w).
An exact proof term for the current goal is SNo_add_SNo y (- w) ?? (SNo_minus_SNo w ??).
Apply LRx2 v Hv to the current goal.
Let k be given.
Assume Hk1: k ω.
Assume Hk2: eps_ k v + - x.
Apply LLy2 w Hw to the current goal.
Let k' be given.
Assume Hk'1: k' ω.
Assume Hk'2: eps_ k' y + - w.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk1.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Hk'1.
We prove the intermediate claim Lkk': k + k' ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk1 k' Hk'1.
We prove the intermediate claim Lekk': SNo (eps_ (k + k')).
An exact proof term for the current goal is SNo_eps_ (k + k') Lkk'.
We prove the intermediate claim Lekek': SNo (eps_ k * eps_ k').
An exact proof term for the current goal is SNo_mul_SNo (eps_ k) (eps_ k') Lek Lek'.
We prove the intermediate claim L1g: abs_SNo (q + - (x * y)) < eps_ (k + k').
An exact proof term for the current goal is Hq2 (k + k') (add_SNo_In_omega k Hk1 k' Hk'1).
We prove the intermediate claim L1h: eps_ (k + k') abs_SNo (q + - (x * y)).
rewrite the current goal using pos_abs_SNo (q + - x * y) (SNoLt_minus_pos (x * y) q Lxy Hq1c H1) (from left to right).
We will prove eps_ (k + k') q + - x * y.
Apply add_SNo_minus_Le2b q (x * y) (eps_ (k + k')) Hq1c Lxy Lekk' to the current goal.
We will prove eps_ (k + k') + x * y q.
rewrite the current goal using mul_SNo_eps_eps_add_SNo k Hk1 k' Hk'1 (from right to left).
We will prove eps_ k * eps_ k' + x * y q.
Apply SNoLe_tra (eps_ k * eps_ k' + x * y) ((v + - x) * (y + - w) + x * y) q (SNo_add_SNo (eps_ k * eps_ k') (x * y) ?? Lxy) (SNo_add_SNo ((v + - x) * (y + - w)) (x * y) (SNo_mul_SNo (v + - x) (y + - w) ?? ??) Lxy) Hq1c to the current goal.
We will prove eps_ k * eps_ k' + x * y (v + - x) * (y + - w) + x * y.
Apply add_SNo_Le1 (eps_ k * eps_ k') (x * y) ((v + - x) * (y + - w)) Lekek' Lxy (SNo_mul_SNo (v + - x) (y + - w) ?? ??) to the current goal.
We will prove eps_ k * eps_ k' (v + - x) * (y + - w).
Apply nonneg_mul_SNo_Le2 (eps_ k) (eps_ k') (v + - x) (y + - w) Lek Lek' ?? ?? to the current goal.
We will prove 0 eps_ k.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k Hk1.
We will prove 0 eps_ k'.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k' Hk'1.
We will prove eps_ k v + - x.
An exact proof term for the current goal is Hk2.
We will prove eps_ k' y + - w.
An exact proof term for the current goal is Hk'2.
We will prove (v + - x) * (y + - w) + x * y q.
rewrite the current goal using SNo_foil_mm v x y w Hv1 Hx1 Hy1 Hw1 (from left to right).
We will prove (v * y + - v * w + - x * y + x * w) + x * y q.
rewrite the current goal using add_SNo_rotate_4_1 (v * y) (- v * w) (- x * y) (x * w) ?? ?? ?? ?? (from left to right).
rewrite the current goal using add_SNo_rotate_4_1 (x * w) (v * y) (- v * w) (- x * y) ?? ?? ?? ?? (from left to right).
We will prove (- x * y + x * w + v * y + - v * w) + x * y q.
rewrite the current goal using add_SNo_com (- x * y + x * w + v * y + - v * w) (x * y) (SNo_add_SNo_4 (- x * y) (x * w) (v * y) (- v * w) ?? ?? ?? ??) ?? (from left to right).
We will prove x * y + - x * y + x * w + v * y + - v * w q.
rewrite the current goal using add_SNo_minus_L2' (x * y) (x * w + v * y + - v * w) ?? (SNo_add_SNo_3 (x * w) (v * y) (- v * w) ?? ?? ??) (from left to right).
We will prove x * w + v * y + - v * w q.
rewrite the current goal using add_SNo_rotate_3_1 (x * w) (v * y) (- v * w) ?? ?? ?? (from left to right).
We will prove - v * w + x * w + v * y q.
Apply SNoLe_tra (- v * w + x * w + v * y) (- v * w + q + v * w) q (SNo_add_SNo_3 (- v * w) (x * w) (v * y) ?? ?? ??) (SNo_add_SNo_3 (- v * w) q (v * w) ?? ?? ??) ?? to the current goal.
We will prove - v * w + x * w + v * y - v * w + q + v * w.
Apply add_SNo_Le2 (- v * w) (x * w + v * y) (q + v * w) ?? (SNo_add_SNo (x * w) (v * y) ?? ??) (SNo_add_SNo q (v * w) ?? ??) to the current goal.
We will prove x * w + v * y q + v * w.
rewrite the current goal using add_SNo_com (x * w) (v * y) ?? ?? (from left to right).
An exact proof term for the current goal is H2.
We will prove - v * w + q + v * w q.
rewrite the current goal using add_SNo_com q (v * w) ?? ?? (from left to right).
We will prove - v * w + v * w + q q.
rewrite the current goal using add_SNo_minus_L2 (v * w) q ?? ?? (from left to right).
We will prove q q.
Apply SNoLe_ref to the current goal.
Apply SNoLt_irref (eps_ (k + k')) to the current goal.
We will prove eps_ (k + k') < eps_ (k + k').
An exact proof term for the current goal is SNoLeLt_tra (eps_ (k + k')) (abs_SNo (q + - (x * y))) (eps_ (k + k')) Lekk' (SNo_abs_SNo (q + - (x * y)) (SNo_add_SNo q (- (x * y)) Hq1c (SNo_minus_SNo (x * y) Lxy))) Lekk' L1h L1g.
We prove the intermediate claim LNex: Nω, eps_ N * x < 1 eps_ N * y < 1.
Apply SNoS_ordsucc_omega_bdd_eps_pos x Hx3 Hx0 Hx5 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: eps_ N * x < 1.
Apply SNoS_ordsucc_omega_bdd_eps_pos y Hy3 Hy0 Hy5 to the current goal.
Let N' be given.
Assume HN'.
Apply HN' to the current goal.
Assume HN'1: N' ω.
Assume HN'2: eps_ N' * y < 1.
Apply ordinal_trichotomy_or_impred N N' (nat_p_ordinal N (omega_nat_p N HN1)) (nat_p_ordinal N' (omega_nat_p N' HN'1)) to the current goal.
Assume H1: N N'.
We use N' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN'1.
Apply andI to the current goal.
We will prove eps_ N' * x < 1.
Apply SNoLt_tra (eps_ N' * x) (eps_ N * x) 1 (SNo_mul_SNo (eps_ N') x (SNo_eps_ N' HN'1) Hx1) (SNo_mul_SNo (eps_ N) x (SNo_eps_ N HN1) Hx1) SNo_1 to the current goal.
We will prove eps_ N' * x < eps_ N * x.
Apply pos_mul_SNo_Lt' (eps_ N') (eps_ N) x (SNo_eps_ N' HN'1) (SNo_eps_ N HN1) Hx1 Hx0 to the current goal.
We will prove eps_ N' < eps_ N.
An exact proof term for the current goal is SNo_eps_decr N' HN'1 N H1.
An exact proof term for the current goal is HN2.
An exact proof term for the current goal is HN'2.
Assume H1: N = N'.
We use N to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN1.
Apply andI to the current goal.
An exact proof term for the current goal is HN2.
rewrite the current goal using H1 (from left to right).
An exact proof term for the current goal is HN'2.
Assume H1: N' N.
We use N to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is HN1.
Apply andI to the current goal.
An exact proof term for the current goal is HN2.
We will prove eps_ N * y < 1.
Apply SNoLt_tra (eps_ N * y) (eps_ N' * y) 1 (SNo_mul_SNo (eps_ N) y (SNo_eps_ N HN1) Hy1) (SNo_mul_SNo (eps_ N') y (SNo_eps_ N' HN'1) Hy1) SNo_1 to the current goal.
We will prove eps_ N * y < eps_ N' * y.
Apply pos_mul_SNo_Lt' (eps_ N) (eps_ N') y (SNo_eps_ N HN1) (SNo_eps_ N' HN'1) Hy1 Hy0 to the current goal.
We will prove eps_ N < eps_ N'.
An exact proof term for the current goal is SNo_eps_decr N HN1 N' H1.
An exact proof term for the current goal is HN'2.
Apply LNex to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN.
Apply HN to the current goal.
Assume HN2: eps_ N * x < 1.
Assume HN3: eps_ N * y < 1.
We prove the intermediate claim L2: kω, qSNoS_ ω, q < x * y x * y < q + eps_ k.
Let k be given.
Assume Hk.
We prove the intermediate claim Lek: SNo (eps_ k).
An exact proof term for the current goal is SNo_eps_ k Hk.
We prove the intermediate claim Lk1: k + 1 ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk 1 (nat_p_omega 1 nat_1).
We prove the intermediate claim Lk2: k + 2 ω.
An exact proof term for the current goal is add_SNo_In_omega k Hk 2 (nat_p_omega 2 nat_2).
Set k' to be the term N + k + 2.
We prove the intermediate claim Lk': k' ω.
An exact proof term for the current goal is add_SNo_In_omega N HN1 (k + 2) Lk2.
We prove the intermediate claim Lek': SNo (eps_ k').
An exact proof term for the current goal is SNo_eps_ k' Lk'.
Apply Lx7 k' Lk' to the current goal.
Let q be given.
Assume Hq1: q SNoS_ ω.
Assume Hqpos: 0 < q.
Assume Hq2: q < x.
Assume Hq3: x < q + eps_ k'.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply Ly7 k' Lk' to the current goal.
Let q' be given.
Assume Hq'1: q' SNoS_ ω.
Assume Hq'pos: 0 < q'.
Assume Hq'2: q' < y.
Assume Hq'3: y < q' + eps_ k'.
Apply SNoS_E2 ω omega_ordinal q' Hq'1 to the current goal.
Assume Hq'1a Hq'1b Hq'1c Hq'1d.
We prove the intermediate claim Lqq': SNo (q * q').
An exact proof term for the current goal is SNo_mul_SNo q q' Hq1c Hq'1c.
We use (q * q') to witness the existential quantifier.
Apply andI to the current goal.
We will prove q * q' SNoS_ ω.
An exact proof term for the current goal is mul_SNo_SNoS_omega q Hq1 q' Hq'1.
Apply andI to the current goal.
We will prove q * q' < x * y.
An exact proof term for the current goal is pos_mul_SNo_Lt2 q q' x y Hq1c Hq'1c Hx1 Hy1 Hqpos Hq'pos Hq2 Hq'2.
We will prove x * y < q * q' + eps_ k.
Apply SNoLt_tra (x * y) ((q + eps_ k') * (q' + eps_ k')) (q * q' + eps_ k) Lxy (SNo_mul_SNo (q + eps_ k') (q' + eps_ k') (SNo_add_SNo q (eps_ k') Hq1c Lek') (SNo_add_SNo q' (eps_ k') Hq'1c Lek')) (SNo_add_SNo (q * q') (eps_ k) (SNo_mul_SNo q q' Hq1c Hq'1c) Lek) to the current goal.
We will prove x * y < (q + eps_ k') * (q' + eps_ k').
An exact proof term for the current goal is pos_mul_SNo_Lt2 x y (q + eps_ k') (q' + eps_ k') Hx1 Hy1 (SNo_add_SNo q (eps_ k') Hq1c Lek') (SNo_add_SNo q' (eps_ k') Hq'1c Lek') Hx0 Hy0 Hq3 Hq'3.
We will prove (q + eps_ k') * (q' + eps_ k') < q * q' + eps_ k.
rewrite the current goal using SNo_foil q (eps_ k') q' (eps_ k') Hq1c Lek' Hq'1c Lek' (from left to right).
We will prove q * q' + q * eps_ k' + eps_ k' * q' + eps_ k' * eps_ k' < q * q' + eps_ k.
Apply add_SNo_Lt2 (q * q') (q * eps_ k' + eps_ k' * q' + eps_ k' * eps_ k') (eps_ k) Lqq' (SNo_add_SNo_3 (q * eps_ k') (eps_ k' * q') (eps_ k' * eps_ k') (SNo_mul_SNo q (eps_ k') Hq1c Lek') (SNo_mul_SNo (eps_ k') q' Lek' Hq'1c) (SNo_mul_SNo (eps_ k') (eps_ k') Lek' Lek')) Lek to the current goal.
We will prove q * eps_ k' + eps_ k' * q' + eps_ k' * eps_ k' < eps_ k.
We will prove q * eps_ (N + k + 2) + eps_ (N + k + 2) * q' + eps_ (N + k + 2) * eps_ (N + k + 2) < eps_ k.
rewrite the current goal using mul_SNo_eps_eps_add_SNo N HN1 (k + 2) Lk2 (from right to left).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < eps_ k.
rewrite the current goal using eps_ordsucc_half_add k (omega_nat_p k Hk) (from right to left).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < eps_ (ordsucc k) + eps_ (ordsucc k).
rewrite the current goal using eps_ordsucc_half_add (ordsucc k) (nat_ordsucc k (omega_nat_p k Hk)) (from right to left) at position 1.
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < (eps_ (ordsucc (ordsucc k)) + eps_ (ordsucc (ordsucc k))) + eps_ (ordsucc k).
rewrite the current goal using add_SNo_1_ordsucc k Hk (from right to left).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < (eps_ (ordsucc (k + 1)) + eps_ (ordsucc (k + 1))) + eps_ (k + 1).
rewrite the current goal using add_SNo_1_ordsucc (k + 1) (add_SNo_In_omega k Hk 1 (nat_p_omega 1 nat_1)) (from right to left).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < (eps_ (((k + 1) + 1)) + eps_ (((k + 1) + 1))) + eps_ (k + 1).
rewrite the current goal using add_SNo_assoc k 1 1 (omega_SNo k Hk) SNo_1 SNo_1 (from right to left).
rewrite the current goal using add_SNo_1_1_2 (from left to right).
We will prove q * eps_ N * eps_ (k + 2) + (eps_ N * eps_ (k + 2)) * q' + (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < (eps_ (k + 2) + eps_ (k + 2)) + eps_ (k + 1).
We prove the intermediate claim LeN: SNo (eps_ N).
An exact proof term for the current goal is SNo_eps_ N HN1.
We prove the intermediate claim Lek1: SNo (eps_ (k + 1)).
An exact proof term for the current goal is SNo_eps_ (k + 1) Lk1.
We prove the intermediate claim Lek2: SNo (eps_ (k + 2)).
An exact proof term for the current goal is SNo_eps_ (k + 2) Lk2.
We prove the intermediate claim LeNek2: SNo (eps_ N * eps_ (k + 2)).
An exact proof term for the current goal is SNo_mul_SNo (eps_ N) (eps_ (k + 2)) LeN Lek2.
We prove the intermediate claim LeNek2sq: SNo ((eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2))).
An exact proof term for the current goal is SNo_mul_SNo (eps_ N * eps_ (k + 2)) (eps_ N * eps_ (k + 2)) LeNek2 LeNek2.
rewrite the current goal using add_SNo_assoc (eps_ (k + 2)) (eps_ (k + 2)) (eps_ (k + 1)) Lek2 Lek2 Lek1 (from right to left).
Apply add_SNo_Lt4 (q * eps_ N * eps_ (k + 2)) ((eps_ N * eps_ (k + 2)) * q') ((eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2))) (eps_ (k + 2)) (eps_ (k + 2)) (eps_ (k + 1)) (SNo_mul_SNo q (eps_ N * eps_ (k + 2)) Hq1c LeNek2) (SNo_mul_SNo (eps_ N * eps_ (k + 2)) q' LeNek2 Hq'1c) LeNek2sq Lek2 Lek2 Lek1 to the current goal.
We will prove q * eps_ N * eps_ (k + 2) < eps_ (k + 2).
rewrite the current goal using mul_SNo_assoc q (eps_ N) (eps_ (k + 2)) Hq1c LeN Lek2 (from left to right).
We will prove (q * eps_ N) * eps_ (k + 2) < eps_ (k + 2).
Apply mul_SNo_Lt1_pos_Lt (q * eps_ N) (eps_ (k + 2)) (SNo_mul_SNo q (eps_ N) Hq1c LeN) Lek2 to the current goal.
We will prove q * eps_ N < 1.
Apply SNoLt_tra (q * eps_ N) (x * eps_ N) 1 (SNo_mul_SNo q (eps_ N) Hq1c LeN) (SNo_mul_SNo x (eps_ N) Hx1 LeN) SNo_1 to the current goal.
We will prove q * eps_ N < x * eps_ N.
Apply pos_mul_SNo_Lt' q x (eps_ N) Hq1c Hx1 (SNo_eps_ N HN1) to the current goal.
We will prove 0 < eps_ N.
An exact proof term for the current goal is SNo_eps_pos N HN1.
We will prove q < x.
An exact proof term for the current goal is Hq2.
We will prove x * eps_ N < 1.
rewrite the current goal using mul_SNo_com x (eps_ N) Hx1 LeN (from left to right).
An exact proof term for the current goal is HN2.
We will prove 0 < eps_ (k + 2).
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove (eps_ N * eps_ (k + 2)) * q' < eps_ (k + 2).
rewrite the current goal using mul_SNo_com (eps_ N * eps_ (k + 2)) q' (SNo_mul_SNo (eps_ N) (eps_ (k + 2)) LeN Lek2) Hq'1c (from left to right).
We will prove q' * (eps_ N * eps_ (k + 2)) < eps_ (k + 2).
rewrite the current goal using mul_SNo_assoc q' (eps_ N) (eps_ (k + 2)) Hq'1c LeN Lek2 (from left to right).
We will prove (q' * eps_ N) * eps_ (k + 2) < eps_ (k + 2).
Apply mul_SNo_Lt1_pos_Lt (q' * eps_ N) (eps_ (k + 2)) (SNo_mul_SNo q' (eps_ N) Hq'1c LeN) Lek2 to the current goal.
We will prove q' * eps_ N < 1.
Apply SNoLt_tra (q' * eps_ N) (y * eps_ N) 1 (SNo_mul_SNo q' (eps_ N) Hq'1c LeN) (SNo_mul_SNo y (eps_ N) Hy1 LeN) SNo_1 to the current goal.
We will prove q' * eps_ N < y * eps_ N.
Apply pos_mul_SNo_Lt' q' y (eps_ N) Hq'1c Hy1 (SNo_eps_ N HN1) to the current goal.
We will prove 0 < eps_ N.
An exact proof term for the current goal is SNo_eps_pos N HN1.
We will prove q' < y.
An exact proof term for the current goal is Hq'2.
We will prove y * eps_ N < 1.
rewrite the current goal using mul_SNo_com y (eps_ N) Hy1 LeN (from left to right).
An exact proof term for the current goal is HN3.
We will prove 0 < eps_ (k + 2).
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) < eps_ (k + 1).
Apply SNoLeLt_tra ((eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2))) (eps_ (k + 2)) (eps_ (k + 1)) LeNek2sq Lek2 Lek1 to the current goal.
We will prove (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) eps_ (k + 2).
Apply SNoLe_tra ((eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2))) (eps_ N * eps_ (k + 2)) (eps_ (k + 2)) LeNek2sq LeNek2 Lek2 to the current goal.
We will prove (eps_ N * eps_ (k + 2)) * (eps_ N * eps_ (k + 2)) eps_ N * eps_ (k + 2).
Apply mul_SNo_Le1_nonneg_Le (eps_ N * eps_ (k + 2)) (eps_ N * eps_ (k + 2)) LeNek2 LeNek2 to the current goal.
We will prove eps_ N * eps_ (k + 2) 1.
rewrite the current goal using mul_SNo_oneL 1 SNo_1 (from right to left) at position 2.
We will prove eps_ N * eps_ (k + 2) 1 * 1.
Apply nonneg_mul_SNo_Le2 (eps_ N) (eps_ (k + 2)) 1 1 LeN Lek2 SNo_1 SNo_1 to the current goal.
We will prove 0 eps_ N.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos N HN1.
We will prove 0 eps_ (k + 2).
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove eps_ N 1.
Apply eps_bd_1 to the current goal.
An exact proof term for the current goal is HN1.
We will prove eps_ (k + 2) 1.
Apply eps_bd_1 to the current goal.
An exact proof term for the current goal is Lk2.
We will prove 0 eps_ N * eps_ (k + 2).
Apply SNoLtLe to the current goal.
Apply mul_SNo_pos_pos (eps_ N) (eps_ (k + 2)) LeN Lek2 to the current goal.
An exact proof term for the current goal is SNo_eps_pos N HN1.
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove eps_ N * eps_ (k + 2) eps_ (k + 2).
Apply mul_SNo_Le1_nonneg_Le (eps_ N) (eps_ (k + 2)) LeN Lek2 to the current goal.
We will prove eps_ N 1.
Apply eps_bd_1 to the current goal.
An exact proof term for the current goal is HN1.
We will prove 0 eps_ (k + 2).
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos (k + 2) Lk2.
We will prove eps_ (k + 2) < eps_ (k + 1).
Apply SNo_eps_decr (k + 2) Lk2 (k + 1) to the current goal.
We will prove k + 1 k + 2.
Apply ordinal_SNoLt_In (k + 1) (k + 2) (nat_p_ordinal (k + 1) (omega_nat_p (k + 1) Lk1)) (nat_p_ordinal (k + 2) (omega_nat_p (k + 2) Lk2)) to the current goal.
We will prove k + 1 < k + 2.
Apply add_SNo_Lt2 k 1 2 (omega_SNo k Hk) SNo_1 SNo_2 to the current goal.
We will prove 1 < 2.
An exact proof term for the current goal is SNoLt_1_2.
Apply SNo_prereal_incr_lower_approx (x * y) Lxy L1 L2 to the current goal.
Let hL be given.
Assume HhL.
Apply HhL to the current goal.
Assume HhL1: hL SNoS_ ωω.
Assume HhL2: nω, hL n < x * y x * y < hL n + eps_ n in, hL i < hL n.
Apply SNo_prereal_decr_upper_approx (x * y) Lxy L1 L2 to the current goal.
Let hR be given.
Assume HhR.
Apply HhR to the current goal.
Assume HhR1: hR SNoS_ ωω.
Assume HhR2: nω, hR n + - eps_ n < x * y x * y < hR n in, hR n < hR i.
We prove the intermediate claim LhL: nω, SNo (hL n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (hL n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) hL n HhL1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim LhR: nω, SNo (hR n).
Let n be given.
Assume Hn.
Apply SNoS_E2 ω omega_ordinal (hR n) (ap_Pi ω (λ_ ⇒ SNoS_ ω) hR n HhR1 Hn) to the current goal.
Assume _ _ H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L3: nω, hL n < x * y.
Let n be given.
Assume Hn.
Apply HhL2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L4: nω, x * y < hR n.
Let n be given.
Assume Hn.
Apply HhR2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L5: n mω, hL n < hR m.
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
Apply SNoLt_tra (hL n) (x * y) (hR m) (LhL n Hn) Lxy (LhR m Hm) to the current goal.
We will prove hL n < x * y.
An exact proof term for the current goal is L3 n Hn.
We will prove x * y < hR m.
An exact proof term for the current goal is L4 m Hm.
Apply SNo_approx_real_lem hL HhL1 hR HhR1 L5 to the current goal.
Assume HhLR1: SNoCutP {hL n|nω} {hR n|nω}.
Assume HhLR2: SNo (SNoCut {hL n|nω} {hR n|nω}).
Assume _ _.
Assume HhLR5: nω, hL n < SNoCut {hL n|nω} {hR n|nω}.
Assume HhLR6: nω, SNoCut {hL n|nω} {hR n|nω} < hR n.
We prove the intermediate claim L6: nω, x * y < hL n + eps_ n.
Let n be given.
Assume Hn.
Apply HhL2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L7: nω, in, hL i < hL n.
Let n be given.
Assume Hn.
Apply HhL2 n Hn to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L8: nω, hR n + - eps_ n < x * y.
Let n be given.
Assume Hn.
Apply HhR2 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
We prove the intermediate claim L9: nω, in, hR n < hR i.
Let n be given.
Assume Hn.
Apply HhR2 n Hn to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
We prove the intermediate claim L10: x * y = SNoCut {hL n|nω} {hR n|nω}.
rewrite the current goal using HxyLR (from left to right).
We will prove SNoCut L R = SNoCut {hL n|nω} {hR n|nω}.
Apply SNoCut_ext L R {hL n|nω} {hR n|nω} HLR HhLR1 to the current goal.
Let w be given.
Assume Hw: w L.
We will prove w < SNoCut {hL n|nω} {hR n|nω}.
Apply HLE w Hw to the current goal.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Assume Hwe: w = w0 * y + x * w1 + - w0 * w1.
Apply LLx2 w0 Hw0 to the current goal.
Let k0 be given.
Assume Hk0: k0 ω.
Assume Hk0b: eps_ k0 x + - w0.
Apply LLy2 w1 Hw1 to the current goal.
Let k1 be given.
Assume Hk1: k1 ω.
Assume Hk1b: eps_ k1 y + - w1.
Apply SNoL_E x Hx1 w0 Hw0 to the current goal.
Assume Hw01: SNo w0.
Assume Hw02: SNoLev w0 SNoLev x.
Assume Hw03: w0 < x.
Apply SNoL_E y Hy1 w1 Hw1 to the current goal.
Assume Hw11: SNo w1.
Assume Hw12: SNoLev w1 SNoLev y.
Assume Hw13: w1 < y.
We prove the intermediate claim Lek0: SNo (eps_ k0).
An exact proof term for the current goal is SNo_eps_ k0 Hk0.
We prove the intermediate claim Lek1: SNo (eps_ k1).
An exact proof term for the current goal is SNo_eps_ k1 Hk1.
We prove the intermediate claim Lk0k1: k0 + k1 ω.
An exact proof term for the current goal is add_SNo_In_omega k0 Hk0 k1 Hk1.
We prove the intermediate claim Lek0k1: SNo (eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_eps_ (k0 + k1) Lk0k1.
We prove the intermediate claim LhLk0k1: SNo (hL (k0 + k1)).
An exact proof term for the current goal is LhL (k0 + k1) Lk0k1.
We prove the intermediate claim Lw0y: SNo (w0 * y).
An exact proof term for the current goal is SNo_mul_SNo w0 y Hw01 Hy1.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_mul_SNo x w1 Hx1 Hw11.
We prove the intermediate claim Lw0w1: SNo (w0 * w1).
An exact proof term for the current goal is SNo_mul_SNo w0 w1 Hw01 Hw11.
We prove the intermediate claim Lmw0w1: SNo (- w0 * w1).
An exact proof term for the current goal is SNo_minus_SNo (w0 * w1) Lw0w1.
We prove the intermediate claim Lw0yxw1mw0w1: SNo (w0 * y + x * w1 + - w0 * w1).
An exact proof term for the current goal is SNo_add_SNo_3 (w0 * y) (x * w1) (- w0 * w1) Lw0y Lxw1 Lmw0w1.
rewrite the current goal using Hwe (from left to right).
Apply SNoLeLt_tra (w0 * y + x * w1 + - w0 * w1) (hL (k0 + k1)) (SNoCut {hL n|nω} {hR n|nω}) Lw0yxw1mw0w1 LhLk0k1 HhLR2 to the current goal.
We will prove w0 * y + x * w1 + - w0 * w1 hL (k0 + k1).
Apply SNoLtLe_or (hL (k0 + k1)) (w0 * y + x * w1 + - w0 * w1) LhLk0k1 Lw0yxw1mw0w1 to the current goal.
Assume H1: hL (k0 + k1) < w0 * y + x * w1 + - w0 * w1.
We will prove False.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
Apply SNoLt_tra (x * y) (hL (k0 + k1) + eps_ (k0 + k1)) (x * y) Lxy (SNo_add_SNo (hL (k0 + k1)) (eps_ (k0 + k1)) LhLk0k1 Lek0k1) Lxy (L6 (k0 + k1) Lk0k1) to the current goal.
We will prove hL (k0 + k1) + eps_ (k0 + k1) < x * y.
Apply SNoLtLe_tra (hL (k0 + k1) + eps_ (k0 + k1)) ((w0 * y + x * w1 + - w0 * w1) + eps_ (k0 + k1)) (x * y) (SNo_add_SNo (hL (k0 + k1)) (eps_ (k0 + k1)) LhLk0k1 Lek0k1) (SNo_add_SNo (w0 * y + x * w1 + - w0 * w1) (eps_ (k0 + k1)) Lw0yxw1mw0w1 Lek0k1) Lxy to the current goal.
We will prove hL (k0 + k1) + eps_ (k0 + k1) < (w0 * y + x * w1 + - w0 * w1) + eps_ (k0 + k1).
Apply add_SNo_Lt1 (hL (k0 + k1)) (eps_ (k0 + k1)) (w0 * y + x * w1 + - w0 * w1) LhLk0k1 Lek0k1 Lw0yxw1mw0w1 to the current goal.
An exact proof term for the current goal is H1.
We will prove (w0 * y + x * w1 + - w0 * w1) + eps_ (k0 + k1) x * y.
rewrite the current goal using add_SNo_com (w0 * y + x * w1 + - w0 * w1) (eps_ (k0 + k1)) Lw0yxw1mw0w1 Lek0k1 (from left to right).
Apply add_SNo_minus_Le2 (x * y) (w0 * y + x * w1 + - w0 * w1) (eps_ (k0 + k1)) Lxy Lw0yxw1mw0w1 Lek0k1 to the current goal.
We will prove eps_ (k0 + k1) x * y + - (w0 * y + x * w1 + - w0 * w1).
rewrite the current goal using add_SNo_com_3_0_1 (w0 * y) (x * w1) (- w0 * w1) Lw0y Lxw1 Lmw0w1 (from left to right).
We will prove eps_ (k0 + k1) x * y + - (x * w1 + w0 * y + - w0 * w1).
rewrite the current goal using minus_add_SNo_distr_3 (x * w1) (w0 * y) (- w0 * w1) Lxw1 Lw0y Lmw0w1 (from left to right).
We will prove eps_ (k0 + k1) x * y + - x * w1 + - w0 * y + - - w0 * w1.
rewrite the current goal using mul_SNo_minus_distrL w0 y Hw01 Hy1 (from right to left).
rewrite the current goal using mul_SNo_minus_distrL w0 w1 Hw01 Hw11 (from right to left).
We will prove eps_ (k0 + k1) x * y + - x * w1 + (- w0) * y + - (- w0) * w1.
rewrite the current goal using mul_SNo_minus_distrR x w1 Hx1 Hw11 (from right to left).
rewrite the current goal using mul_SNo_minus_distrR (- w0) w1 (SNo_minus_SNo w0 Hw01) Hw11 (from right to left).
We will prove eps_ (k0 + k1) x * y + x * (- w1) + (- w0) * y + (- w0) * (- w1).
rewrite the current goal using SNo_foil x (- w0) y (- w1) Hx1 (SNo_minus_SNo w0 Hw01) Hy1 (SNo_minus_SNo w1 Hw11) (from right to left).
We will prove eps_ (k0 + k1) (x + - w0) * (y + - w1).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k0 Hk0 k1 Hk1 (from right to left).
We will prove eps_ k0 * eps_ k1 (x + - w0) * (y + - w1).
Apply nonneg_mul_SNo_Le2 (eps_ k0) (eps_ k1) (x + - w0) (y + - w1) Lek0 Lek1 (SNo_add_SNo x (- w0) Hx1 (SNo_minus_SNo w0 Hw01)) (SNo_add_SNo y (- w1) Hy1 (SNo_minus_SNo w1 Hw11)) to the current goal.
We will prove 0 eps_ k0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k0 Hk0.
We will prove 0 eps_ k1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k1 Hk1.
We will prove eps_ k0 x + - w0.
An exact proof term for the current goal is Hk0b.
We will prove eps_ k1 y + - w1.
An exact proof term for the current goal is Hk1b.
Assume H1: w0 * y + x * w1 + - w0 * w1 hL (k0 + k1).
An exact proof term for the current goal is H1.
We will prove hL (k0 + k1) < SNoCut {hL n|nω} {hR n|nω}.
An exact proof term for the current goal is HhLR5 (k0 + k1) Lk0k1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
Assume Hwe: w = z0 * y + x * z1 + - z0 * z1.
Apply LRx2 z0 Hz0 to the current goal.
Let k0 be given.
Assume Hk0: k0 ω.
Assume Hk0b: eps_ k0 z0 + - x.
Apply LRy2 z1 Hz1 to the current goal.
Let k1 be given.
Assume Hk1: k1 ω.
Assume Hk1b: eps_ k1 z1 + - y.
Apply SNoR_E x Hx1 z0 Hz0 to the current goal.
Assume Hz01: SNo z0.
Assume Hz02: SNoLev z0 SNoLev x.
Assume Hz03: x < z0.
Apply SNoR_E y Hy1 z1 Hz1 to the current goal.
Assume Hz11: SNo z1.
Assume Hz12: SNoLev z1 SNoLev y.
Assume Hz13: y < z1.
We prove the intermediate claim Lek0: SNo (eps_ k0).
An exact proof term for the current goal is SNo_eps_ k0 Hk0.
We prove the intermediate claim Lek1: SNo (eps_ k1).
An exact proof term for the current goal is SNo_eps_ k1 Hk1.
We prove the intermediate claim Lk0k1: k0 + k1 ω.
An exact proof term for the current goal is add_SNo_In_omega k0 Hk0 k1 Hk1.
We prove the intermediate claim Lek0k1: SNo (eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_eps_ (k0 + k1) Lk0k1.
We prove the intermediate claim LhLk0k1: SNo (hL (k0 + k1)).
An exact proof term for the current goal is LhL (k0 + k1) Lk0k1.
We prove the intermediate claim Lz0y: SNo (z0 * y).
An exact proof term for the current goal is SNo_mul_SNo z0 y Hz01 Hy1.
We prove the intermediate claim Lxz1: SNo (x * z1).
An exact proof term for the current goal is SNo_mul_SNo x z1 Hx1 Hz11.
We prove the intermediate claim Lz0z1: SNo (z0 * z1).
An exact proof term for the current goal is SNo_mul_SNo z0 z1 Hz01 Hz11.
We prove the intermediate claim Lmz0z1: SNo (- z0 * z1).
An exact proof term for the current goal is SNo_minus_SNo (z0 * z1) Lz0z1.
We prove the intermediate claim Lz0yxz1mz0z1: SNo (z0 * y + x * z1 + - z0 * z1).
An exact proof term for the current goal is SNo_add_SNo_3 (z0 * y) (x * z1) (- z0 * z1) Lz0y Lxz1 Lmz0z1.
rewrite the current goal using Hwe (from left to right).
Apply SNoLeLt_tra (z0 * y + x * z1 + - z0 * z1) (hL (k0 + k1)) (SNoCut {hL n|nω} {hR n|nω}) Lz0yxz1mz0z1 LhLk0k1 HhLR2 to the current goal.
We will prove z0 * y + x * z1 + - z0 * z1 hL (k0 + k1).
Apply SNoLtLe_or (hL (k0 + k1)) (z0 * y + x * z1 + - z0 * z1) LhLk0k1 Lz0yxz1mz0z1 to the current goal.
Assume H1: hL (k0 + k1) < z0 * y + x * z1 + - z0 * z1.
We will prove False.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
Apply SNoLt_tra (x * y) (hL (k0 + k1) + eps_ (k0 + k1)) (x * y) Lxy (SNo_add_SNo (hL (k0 + k1)) (eps_ (k0 + k1)) LhLk0k1 Lek0k1) Lxy (L6 (k0 + k1) Lk0k1) to the current goal.
We will prove hL (k0 + k1) + eps_ (k0 + k1) < x * y.
Apply SNoLtLe_tra (hL (k0 + k1) + eps_ (k0 + k1)) ((z0 * y + x * z1 + - z0 * z1) + eps_ (k0 + k1)) (x * y) (SNo_add_SNo (hL (k0 + k1)) (eps_ (k0 + k1)) LhLk0k1 Lek0k1) (SNo_add_SNo (z0 * y + x * z1 + - z0 * z1) (eps_ (k0 + k1)) Lz0yxz1mz0z1 Lek0k1) Lxy to the current goal.
We will prove hL (k0 + k1) + eps_ (k0 + k1) < (z0 * y + x * z1 + - z0 * z1) + eps_ (k0 + k1).
Apply add_SNo_Lt1 (hL (k0 + k1)) (eps_ (k0 + k1)) (z0 * y + x * z1 + - z0 * z1) LhLk0k1 Lek0k1 Lz0yxz1mz0z1 to the current goal.
An exact proof term for the current goal is H1.
We will prove (z0 * y + x * z1 + - z0 * z1) + eps_ (k0 + k1) x * y.
rewrite the current goal using add_SNo_com (z0 * y + x * z1 + - z0 * z1) (eps_ (k0 + k1)) Lz0yxz1mz0z1 Lek0k1 (from left to right).
Apply add_SNo_minus_Le2 (x * y) (z0 * y + x * z1 + - z0 * z1) (eps_ (k0 + k1)) Lxy Lz0yxz1mz0z1 Lek0k1 to the current goal.
We will prove eps_ (k0 + k1) x * y + - (z0 * y + x * z1 + - z0 * z1).
rewrite the current goal using add_SNo_com (x * y) (- (z0 * y + x * z1 + - z0 * z1)) Lxy (SNo_minus_SNo (z0 * y + x * z1 + - z0 * z1) Lz0yxz1mz0z1) (from left to right).
rewrite the current goal using add_SNo_rotate_3_1 (z0 * y) (x * z1) (- z0 * z1) Lz0y Lxz1 Lmz0z1 (from left to right).
rewrite the current goal using minus_add_SNo_distr_3 (- z0 * z1) (z0 * y) (x * z1) Lmz0z1 Lz0y Lxz1 (from left to right).
rewrite the current goal using minus_SNo_invol (z0 * z1) Lz0z1 (from left to right).
We will prove eps_ (k0 + k1) (z0 * z1 + - z0 * y + - x * z1) + x * y.
rewrite the current goal using add_SNo_assoc_4 (z0 * z1) (- z0 * y) (- x * z1) (x * y) Lz0z1 (SNo_minus_SNo (z0 * y) Lz0y) (SNo_minus_SNo (x * z1) Lxz1) Lxy (from right to left).
We will prove eps_ (k0 + k1) z0 * z1 + - z0 * y + - x * z1 + x * y.
rewrite the current goal using mul_SNo_minus_distrR z0 y Hz01 Hy1 (from right to left).
rewrite the current goal using mul_SNo_minus_distrL x z1 Hx1 Hz11 (from right to left).
We will prove eps_ (k0 + k1) z0 * z1 + z0 * (- y) + (- x) * z1 + x * y.
rewrite the current goal using mul_SNo_minus_minus x y Hx1 Hy1 (from right to left).
We will prove eps_ (k0 + k1) z0 * z1 + z0 * (- y) + (- x) * z1 + (- x) * (- y).
rewrite the current goal using SNo_foil z0 (- x) z1 (- y) Hz01 (SNo_minus_SNo x Hx1) Hz11 (SNo_minus_SNo y Hy1) (from right to left).
We will prove eps_ (k0 + k1) (z0 + - x) * (z1 + - y).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k0 Hk0 k1 Hk1 (from right to left).
We will prove eps_ k0 * eps_ k1 (z0 + - x) * (z1 + - y).
Apply nonneg_mul_SNo_Le2 (eps_ k0) (eps_ k1) (z0 + - x) (z1 + - y) Lek0 Lek1 (SNo_add_SNo z0 (- x) Hz01 (SNo_minus_SNo x Hx1)) (SNo_add_SNo z1 (- y) Hz11 (SNo_minus_SNo y Hy1)) to the current goal.
We will prove 0 eps_ k0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k0 Hk0.
We will prove 0 eps_ k1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k1 Hk1.
We will prove eps_ k0 z0 + - x.
An exact proof term for the current goal is Hk0b.
We will prove eps_ k1 z1 + - y.
An exact proof term for the current goal is Hk1b.
Assume H1: z0 * y + x * z1 + - z0 * z1 hL (k0 + k1).
An exact proof term for the current goal is H1.
We will prove hL (k0 + k1) < SNoCut {hL n|nω} {hR n|nω}.
An exact proof term for the current goal is HhLR5 (k0 + k1) Lk0k1.
Let z be given.
Assume Hz: z R.
We will prove SNoCut {hL n|nω} {hR n|nω} < z.
Apply HRE z Hz to the current goal.
Let w0 be given.
Assume Hw0: w0 SNoL x.
Let z1 be given.
Assume Hz1: z1 SNoR y.
Assume Hze: z = w0 * y + x * z1 + - w0 * z1.
Apply LLx2 w0 Hw0 to the current goal.
Let k0 be given.
Assume Hk0: k0 ω.
Assume Hk0b: eps_ k0 x + - w0.
Apply LRy2 z1 Hz1 to the current goal.
Let k1 be given.
Assume Hk1: k1 ω.
Assume Hk1b: eps_ k1 z1 + - y.
Apply SNoL_E x Hx1 w0 Hw0 to the current goal.
Assume Hw01: SNo w0.
Assume Hw02: SNoLev w0 SNoLev x.
Assume Hw03: w0 < x.
Apply SNoR_E y Hy1 z1 Hz1 to the current goal.
Assume Hz11: SNo z1.
Assume Hz12: SNoLev z1 SNoLev y.
Assume Hz13: y < z1.
We prove the intermediate claim Lek0: SNo (eps_ k0).
An exact proof term for the current goal is SNo_eps_ k0 Hk0.
We prove the intermediate claim Lek1: SNo (eps_ k1).
An exact proof term for the current goal is SNo_eps_ k1 Hk1.
We prove the intermediate claim Lk0k1: k0 + k1 ω.
An exact proof term for the current goal is add_SNo_In_omega k0 Hk0 k1 Hk1.
We prove the intermediate claim Lek0k1: SNo (eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_eps_ (k0 + k1) Lk0k1.
We prove the intermediate claim Lmek0k1: SNo (- eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_minus_SNo (eps_ (k0 + k1)) Lek0k1.
We prove the intermediate claim LhRk0k1: SNo (hR (k0 + k1)).
An exact proof term for the current goal is LhR (k0 + k1) Lk0k1.
We prove the intermediate claim Lw0y: SNo (w0 * y).
An exact proof term for the current goal is SNo_mul_SNo w0 y Hw01 Hy1.
We prove the intermediate claim Lxz1: SNo (x * z1).
An exact proof term for the current goal is SNo_mul_SNo x z1 Hx1 Hz11.
We prove the intermediate claim Lw0z1: SNo (w0 * z1).
An exact proof term for the current goal is SNo_mul_SNo w0 z1 Hw01 Hz11.
We prove the intermediate claim Lmw0z1: SNo (- w0 * z1).
An exact proof term for the current goal is SNo_minus_SNo (w0 * z1) Lw0z1.
We prove the intermediate claim Lw0yxz1mw0z1: SNo (w0 * y + x * z1 + - w0 * z1).
An exact proof term for the current goal is SNo_add_SNo_3 (w0 * y) (x * z1) (- w0 * z1) Lw0y Lxz1 Lmw0z1.
rewrite the current goal using Hze (from left to right).
Apply SNoLtLe_tra (SNoCut {hL n|nω} {hR n|nω}) (hR (k0 + k1)) (w0 * y + x * z1 + - w0 * z1) HhLR2 LhRk0k1 Lw0yxz1mw0z1 to the current goal.
We will prove SNoCut {hL n|nω} {hR n|nω} < hR (k0 + k1).
An exact proof term for the current goal is HhLR6 (k0 + k1) Lk0k1.
We will prove hR (k0 + k1) w0 * y + x * z1 + - w0 * z1.
Apply SNoLtLe_or (w0 * y + x * z1 + - w0 * z1) (hR (k0 + k1)) Lw0yxz1mw0z1 LhRk0k1 to the current goal.
Assume H1: w0 * y + x * z1 + - w0 * z1 < hR (k0 + k1).
We will prove False.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
Apply SNoLt_tra (x * y) (hR (k0 + k1) + - eps_ (k0 + k1)) (x * y) Lxy (SNo_add_SNo (hR (k0 + k1)) (- eps_ (k0 + k1)) LhRk0k1 Lmek0k1) Lxy to the current goal.
We will prove x * y < hR (k0 + k1) + - eps_ (k0 + k1).
Apply SNoLeLt_tra (x * y) ((w0 * y + x * z1 + - w0 * z1) + - eps_ (k0 + k1)) (hR (k0 + k1) + - eps_ (k0 + k1)) Lxy (SNo_add_SNo (w0 * y + x * z1 + - w0 * z1) (- eps_ (k0 + k1)) Lw0yxz1mw0z1 Lmek0k1) (SNo_add_SNo (hR (k0 + k1)) (- eps_ (k0 + k1)) LhRk0k1 Lmek0k1) to the current goal.
We will prove x * y (w0 * y + x * z1 + - w0 * z1) + - eps_ (k0 + k1).
Apply add_SNo_minus_Le2b (w0 * y + x * z1 + - w0 * z1) (eps_ (k0 + k1)) (x * y) Lw0yxz1mw0z1 Lek0k1 Lxy to the current goal.
We will prove x * y + eps_ (k0 + k1) w0 * y + x * z1 + - w0 * z1.
rewrite the current goal using add_SNo_com (x * y) (eps_ (k0 + k1)) Lxy Lek0k1 (from left to right).
Apply add_SNo_minus_Le2 (w0 * y + x * z1 + - w0 * z1) (x * y) (eps_ (k0 + k1)) Lw0yxz1mw0z1 Lxy Lek0k1 to the current goal.
We will prove eps_ (k0 + k1) (w0 * y + x * z1 + - w0 * z1) + - x * y.
rewrite the current goal using add_SNo_rotate_3_1 (w0 * y) (x * z1) (- w0 * z1) Lw0y Lxz1 Lmw0z1 (from left to right).
We will prove eps_ (k0 + k1) (- w0 * z1 + w0 * y + x * z1) + - x * y.
rewrite the current goal using add_SNo_assoc_4 (- w0 * z1) (w0 * y) (x * z1) (- x * y) Lmw0z1 Lw0y Lxz1 Lmxy (from right to left).
We will prove eps_ (k0 + k1) - w0 * z1 + w0 * y + x * z1 + - x * y.
rewrite the current goal using add_SNo_rotate_4_1 (- w0 * z1) (w0 * y) (x * z1) (- x * y) Lmw0z1 Lw0y Lxz1 Lmxy (from left to right).
We will prove eps_ (k0 + k1) - x * y + - w0 * z1 + w0 * y + x * z1.
rewrite the current goal using add_SNo_rotate_4_1 (- x * y) (- w0 * z1) (w0 * y) (x * z1) Lmxy Lmw0z1 Lw0y Lxz1 (from left to right).
We will prove eps_ (k0 + k1) x * z1 + - x * y + - w0 * z1 + w0 * y.
rewrite the current goal using mul_SNo_minus_distrR x y Hx1 Hy1 (from right to left).
rewrite the current goal using mul_SNo_minus_distrL w0 z1 Hw01 Hz11 (from right to left).
rewrite the current goal using mul_SNo_minus_minus w0 y Hw01 Hy1 (from right to left).
We will prove eps_ (k0 + k1) x * z1 + x * (- y) + (- w0) * z1 + (- w0) * (- y).
rewrite the current goal using SNo_foil x (- w0) z1 (- y) Hx1 (SNo_minus_SNo w0 Hw01) Hz11 (SNo_minus_SNo y Hy1) (from right to left).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k0 Hk0 k1 Hk1 (from right to left).
We will prove eps_ k0 * eps_ k1 (x + - w0) * (z1 + - y).
Apply nonneg_mul_SNo_Le2 (eps_ k0) (eps_ k1) (x + - w0) (z1 + - y) Lek0 Lek1 (SNo_add_SNo x (- w0) Hx1 (SNo_minus_SNo w0 Hw01)) (SNo_add_SNo z1 (- y) Hz11 (SNo_minus_SNo y Hy1)) to the current goal.
We will prove 0 eps_ k0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k0 Hk0.
We will prove 0 eps_ k1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k1 Hk1.
We will prove eps_ k0 x + - w0.
An exact proof term for the current goal is Hk0b.
We will prove eps_ k1 z1 + - y.
An exact proof term for the current goal is Hk1b.
We will prove (w0 * y + x * z1 + - w0 * z1) + - eps_ (k0 + k1) < hR (k0 + k1) + - eps_ (k0 + k1).
Apply add_SNo_Lt1 (w0 * y + x * z1 + - w0 * z1) (- eps_ (k0 + k1)) (hR (k0 + k1)) Lw0yxz1mw0z1 Lmek0k1 LhRk0k1 to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is L8 (k0 + k1) Lk0k1.
Assume H1: hR (k0 + k1) w0 * y + x * z1 + - w0 * z1.
An exact proof term for the current goal is H1.
Let z0 be given.
Assume Hz0: z0 SNoR x.
Let w1 be given.
Assume Hw1: w1 SNoL y.
Assume Hze: z = z0 * y + x * w1 + - z0 * w1.
Apply LRx2 z0 Hz0 to the current goal.
Let k0 be given.
Assume Hk0: k0 ω.
Assume Hk0b: eps_ k0 z0 + - x.
Apply LLy2 w1 Hw1 to the current goal.
Let k1 be given.
Assume Hk1: k1 ω.
Assume Hk1b: eps_ k1 y + - w1.
Apply SNoR_E x Hx1 z0 Hz0 to the current goal.
Assume Hz01: SNo z0.
Assume Hz02: SNoLev z0 SNoLev x.
Assume Hz03: x < z0.
Apply SNoL_E y Hy1 w1 Hw1 to the current goal.
Assume Hw11: SNo w1.
Assume Hw12: SNoLev w1 SNoLev y.
Assume Hw13: w1 < y.
We prove the intermediate claim Lek0: SNo (eps_ k0).
An exact proof term for the current goal is SNo_eps_ k0 Hk0.
We prove the intermediate claim Lek1: SNo (eps_ k1).
An exact proof term for the current goal is SNo_eps_ k1 Hk1.
We prove the intermediate claim Lk0k1: k0 + k1 ω.
An exact proof term for the current goal is add_SNo_In_omega k0 Hk0 k1 Hk1.
We prove the intermediate claim Lek0k1: SNo (eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_eps_ (k0 + k1) Lk0k1.
We prove the intermediate claim Lmek0k1: SNo (- eps_ (k0 + k1)).
An exact proof term for the current goal is SNo_minus_SNo (eps_ (k0 + k1)) Lek0k1.
We prove the intermediate claim LhRk0k1: SNo (hR (k0 + k1)).
An exact proof term for the current goal is LhR (k0 + k1) Lk0k1.
We prove the intermediate claim Lz0y: SNo (z0 * y).
An exact proof term for the current goal is SNo_mul_SNo z0 y Hz01 Hy1.
We prove the intermediate claim Lxw1: SNo (x * w1).
An exact proof term for the current goal is SNo_mul_SNo x w1 Hx1 Hw11.
We prove the intermediate claim Lz0w1: SNo (z0 * w1).
An exact proof term for the current goal is SNo_mul_SNo z0 w1 Hz01 Hw11.
We prove the intermediate claim Lmz0w1: SNo (- z0 * w1).
An exact proof term for the current goal is SNo_minus_SNo (z0 * w1) Lz0w1.
We prove the intermediate claim Lz0yxw1mz0w1: SNo (z0 * y + x * w1 + - z0 * w1).
An exact proof term for the current goal is SNo_add_SNo_3 (z0 * y) (x * w1) (- z0 * w1) Lz0y Lxw1 Lmz0w1.
rewrite the current goal using Hze (from left to right).
Apply SNoLtLe_tra (SNoCut {hL n|nω} {hR n|nω}) (hR (k0 + k1)) (z0 * y + x * w1 + - z0 * w1) HhLR2 LhRk0k1 Lz0yxw1mz0w1 to the current goal.
We will prove SNoCut {hL n|nω} {hR n|nω} < hR (k0 + k1).
An exact proof term for the current goal is HhLR6 (k0 + k1) Lk0k1.
We will prove hR (k0 + k1) z0 * y + x * w1 + - z0 * w1.
Apply SNoLtLe_or (z0 * y + x * w1 + - z0 * w1) (hR (k0 + k1)) Lz0yxw1mz0w1 LhRk0k1 to the current goal.
Assume H1: z0 * y + x * w1 + - z0 * w1 < hR (k0 + k1).
We will prove False.
Apply SNoLt_irref (x * y) to the current goal.
We will prove x * y < x * y.
Apply SNoLt_tra (x * y) (hR (k0 + k1) + - eps_ (k0 + k1)) (x * y) Lxy (SNo_add_SNo (hR (k0 + k1)) (- eps_ (k0 + k1)) LhRk0k1 Lmek0k1) Lxy to the current goal.
We will prove x * y < hR (k0 + k1) + - eps_ (k0 + k1).
Apply SNoLeLt_tra (x * y) ((z0 * y + x * w1 + - z0 * w1) + - eps_ (k0 + k1)) (hR (k0 + k1) + - eps_ (k0 + k1)) Lxy (SNo_add_SNo (z0 * y + x * w1 + - z0 * w1) (- eps_ (k0 + k1)) Lz0yxw1mz0w1 Lmek0k1) (SNo_add_SNo (hR (k0 + k1)) (- eps_ (k0 + k1)) LhRk0k1 Lmek0k1) to the current goal.
We will prove x * y (z0 * y + x * w1 + - z0 * w1) + - eps_ (k0 + k1).
Apply add_SNo_minus_Le2b (z0 * y + x * w1 + - z0 * w1) (eps_ (k0 + k1)) (x * y) Lz0yxw1mz0w1 Lek0k1 Lxy to the current goal.
We will prove x * y + eps_ (k0 + k1) z0 * y + x * w1 + - z0 * w1.
rewrite the current goal using add_SNo_com (x * y) (eps_ (k0 + k1)) Lxy Lek0k1 (from left to right).
Apply add_SNo_minus_Le2 (z0 * y + x * w1 + - z0 * w1) (x * y) (eps_ (k0 + k1)) Lz0yxw1mz0w1 Lxy Lek0k1 to the current goal.
We will prove eps_ (k0 + k1) (z0 * y + x * w1 + - z0 * w1) + - x * y.
rewrite the current goal using add_SNo_assoc_4 (z0 * y) (x * w1) (- z0 * w1) (- x * y) Lz0y Lxw1 Lmz0w1 Lmxy (from right to left).
We will prove eps_ (k0 + k1) z0 * y + x * w1 + - z0 * w1 + - x * y.
rewrite the current goal using add_SNo_rotate_3_1 (- z0 * w1) (- x * y) (x * w1) Lmz0w1 Lmxy Lxw1 (from right to left).
We will prove eps_ (k0 + k1) z0 * y + - z0 * w1 + - x * y + x * w1.
rewrite the current goal using mul_SNo_minus_distrR z0 w1 Hz01 Hw11 (from right to left).
rewrite the current goal using mul_SNo_minus_distrL x y Hx1 Hy1 (from right to left).
rewrite the current goal using mul_SNo_minus_minus x w1 Hx1 Hw11 (from right to left).
We will prove eps_ (k0 + k1) z0 * y + z0 * (- w1) + (- x) * y + (- x) * (- w1).
rewrite the current goal using SNo_foil z0 (- x) y (- w1) Hz01 (SNo_minus_SNo x Hx1) Hy1 (SNo_minus_SNo w1 Hw11) (from right to left).
rewrite the current goal using mul_SNo_eps_eps_add_SNo k0 Hk0 k1 Hk1 (from right to left).
We will prove eps_ k0 * eps_ k1 (z0 + - x) * (y + - w1).
Apply nonneg_mul_SNo_Le2 (eps_ k0) (eps_ k1) (z0 + - x) (y + - w1) Lek0 Lek1 (SNo_add_SNo z0 (- x) Hz01 (SNo_minus_SNo x Hx1)) (SNo_add_SNo y (- w1) Hy1 (SNo_minus_SNo w1 Hw11)) to the current goal.
We will prove 0 eps_ k0.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k0 Hk0.
We will prove 0 eps_ k1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNo_eps_pos k1 Hk1.
We will prove eps_ k0 z0 + - x.
An exact proof term for the current goal is Hk0b.
We will prove eps_ k1 y + - w1.
An exact proof term for the current goal is Hk1b.
We will prove (z0 * y + x * w1 + - z0 * w1) + - eps_ (k0 + k1) < hR (k0 + k1) + - eps_ (k0 + k1).
Apply add_SNo_Lt1 (z0 * y + x * w1 + - z0 * w1) (- eps_ (k0 + k1)) (hR (k0 + k1)) Lz0yxw1mz0w1 Lmek0k1 LhRk0k1 to the current goal.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is L8 (k0 + k1) Lk0k1.
Assume H1: hR (k0 + k1) z0 * y + x * w1 + - z0 * w1.
An exact proof term for the current goal is H1.
Let w be given.
Assume Hw: w {hL n|nω}.
rewrite the current goal using HxyLR (from right to left).
We will prove w < x * y.
Apply ReplE_impred ω (λn ⇒ hL n) w Hw to the current goal.
Let n be given.
Assume Hn Hwn.
rewrite the current goal using Hwn (from left to right).
We will prove hL n < x * y.
An exact proof term for the current goal is L3 n Hn.
Let z be given.
Assume Hz: z {hR n|nω}.
rewrite the current goal using HxyLR (from right to left).
We will prove x * y < z.
Apply ReplE_impred ω (λn ⇒ hR n) z Hz to the current goal.
Let n be given.
Assume Hn Hzn.
rewrite the current goal using Hzn (from left to right).
We will prove x * y < hR n.
An exact proof term for the current goal is L4 n Hn.
Apply HC to the current goal.
An exact proof term for the current goal is SNo_approx_real (x * y) Lxy hL HhL1 hR HhR1 L3 L6 L7 L4 L9 L10.
Theorem. (real_mul_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is real_SNo x Hx.
We prove the intermediate claim Ly: SNo y.
An exact proof term for the current goal is real_SNo y Hy.
We prove the intermediate claim Lxy: SNo (x * y).
An exact proof term for the current goal is SNo_mul_SNo x y Lx Ly.
Apply SNoLt_trichotomy_or_impred x 0 Lx SNo_0 to the current goal.
Assume H1: x < 0.
We prove the intermediate claim Lmx: 0 < - x.
Apply minus_SNo_Lt_contra2 x 0 Lx SNo_0 to the current goal.
We will prove x < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H1.
Apply SNoLt_trichotomy_or_impred y 0 Ly SNo_0 to the current goal.
Assume H2: y < 0.
We will prove x * y real.
rewrite the current goal using mul_SNo_minus_minus x y Lx Ly (from right to left).
We will prove (- x) * (- y) real.
Apply real_mul_SNo_pos (- x) (real_minus_SNo x Hx) (- y) (real_minus_SNo y Hy) Lmx to the current goal.
We will prove 0 < - y.
Apply minus_SNo_Lt_contra2 y 0 Ly SNo_0 to the current goal.
We will prove y < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H2.
Assume H2: y = 0.
rewrite the current goal using H2 (from left to right).
rewrite the current goal using mul_SNo_zeroR x Lx (from left to right).
An exact proof term for the current goal is real_0.
Assume H2: 0 < y.
We will prove x * y real.
rewrite the current goal using minus_SNo_invol (x * y) Lxy (from right to left).
We will prove - - (x * y) real.
rewrite the current goal using mul_SNo_minus_distrL x y Lx Ly (from right to left).
We will prove - ((- x) * y) real.
Apply real_minus_SNo to the current goal.
We will prove (- x) * y real.
An exact proof term for the current goal is real_mul_SNo_pos (- x) (real_minus_SNo x Hx) y Hy Lmx H2.
Assume H1: x = 0.
We will prove x * y real.
rewrite the current goal using H1 (from left to right).
rewrite the current goal using mul_SNo_zeroL y Ly (from left to right).
An exact proof term for the current goal is real_0.
Assume H1: 0 < x.
Apply SNoLt_trichotomy_or_impred y 0 Ly SNo_0 to the current goal.
Assume H2: y < 0.
rewrite the current goal using minus_SNo_invol (x * y) Lxy (from right to left).
We will prove - - (x * y) real.
rewrite the current goal using mul_SNo_minus_distrR x y Lx Ly (from right to left).
We will prove - (x * (- y)) real.
Apply real_minus_SNo to the current goal.
We will prove x * (- y) real.
Apply real_mul_SNo_pos x Hx (- y) (real_minus_SNo y Hy) H1 to the current goal.
We will prove 0 < - y.
Apply minus_SNo_Lt_contra2 y 0 Ly SNo_0 to the current goal.
We will prove y < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H2.
Assume H2: y = 0.
rewrite the current goal using H2 (from left to right).
rewrite the current goal using mul_SNo_zeroR x Lx (from left to right).
An exact proof term for the current goal is real_0.
Assume H2: 0 < y.
An exact proof term for the current goal is real_mul_SNo_pos x Hx y Hy H1 H2.
Theorem. (abs_SNo_intvl_bd) The following is provable:
∀x y z, SNo xSNo ySNo zx yy < x + zabs_SNo (y + - x) < z
Proof:
Let x, y and z be given.
Assume Hx Hy Hz Hxy Hyxz.
We prove the intermediate claim L1: 0 y + - x.
rewrite the current goal using add_SNo_minus_SNo_rinv x Hx (from right to left).
We will prove x + - x y + - x.
An exact proof term for the current goal is add_SNo_Le1 x (- x) y Hx (SNo_minus_SNo x Hx) Hy Hxy.
We prove the intermediate claim L2: abs_SNo (y + - x) = y + - x.
Apply nonneg_abs_SNo (y + - x) L1 to the current goal.
rewrite the current goal using L2 (from left to right).
We will prove y + - x < z.
Apply add_SNo_minus_Lt1b y x z Hy Hx Hz to the current goal.
We will prove y < z + x.
rewrite the current goal using add_SNo_com z x Hz Hx (from left to right).
An exact proof term for the current goal is Hyxz.
Proof:
Let x be given.
Assume HxR Hxnn.
Apply real_E x HxR to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ω.
Assume Hx3: x SNoS_ (ordsucc ω).
Assume Hx4: - ω < x.
Assume Hx5: x < ω.
Assume Hx6: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Assume Hx7: kω, qSNoS_ ω, q < x x < q + eps_ k.
We prove the intermediate claim L1: ∀m, nat_p mx < mnω, n x x < ordsucc n.
Apply nat_ind to the current goal.
Assume H1: x < 0.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
An exact proof term for the current goal is SNoLeLt_tra 0 x 0 SNo_0 Hx1 SNo_0 Hxnn H1.
Let m be given.
Assume Hm.
Assume IHm: x < mnω, n x x < ordsucc n.
Assume H2: x < ordsucc m.
Apply SNoLtLe_or x m Hx1 (nat_p_SNo m Hm) to the current goal.
Assume H3: x < m.
Apply IHm to the current goal.
We will prove x < m.
An exact proof term for the current goal is H3.
Assume H3: m x.
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove m ω.
An exact proof term for the current goal is nat_p_omega m Hm.
Apply andI to the current goal.
We will prove m x.
An exact proof term for the current goal is H3.
We will prove x < ordsucc m.
An exact proof term for the current goal is H2.
Apply Hx7 0 (nat_p_omega 0 nat_0) to the current goal.
Let q be given.
Assume H.
Apply H to the current goal.
Assume Hq: q SNoS_ ω.
Assume H.
Apply H to the current goal.
Assume Hqx: q < x.
rewrite the current goal using eps_0_1 (from left to right).
Assume Hxq1: x < q + 1.
Apply SNoS_E ω omega_ordinal q Hq to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume H1: SNo_ m q.
We prove the intermediate claim Lq: SNo q.
An exact proof term for the current goal is SNo_SNo m (nat_p_ordinal m (omega_nat_p m Hm)) q H1.
Apply L1 (ordsucc m) to the current goal.
We will prove nat_p (ordsucc m).
Apply nat_ordsucc to the current goal.
Apply omega_nat_p to the current goal.
An exact proof term for the current goal is Hm.
We will prove x < ordsucc m.
Apply SNoLtLe_tra x (q + 1) (ordsucc m) Hx1 (SNo_add_SNo q 1 Lq SNo_1) (nat_p_SNo (ordsucc m) (nat_ordsucc m (omega_nat_p m Hm))) Hxq1 to the current goal.
We will prove q + 1 ordsucc m.
We prove the intermediate claim Lq1: SNo (q + 1).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lq.
An exact proof term for the current goal is SNo_1.
Apply ordinal_SNoLev_max_2 (ordsucc m) (nat_p_ordinal (ordsucc m) (nat_ordsucc m (omega_nat_p m Hm))) (q + 1) to the current goal.
We will prove SNo (q + 1).
An exact proof term for the current goal is Lq1.
We will prove SNoLev (q + 1) ordsucc (ordsucc m).
Apply ordinal_In_Or_Subq (SNoLev (q + 1)) (ordsucc m) (SNoLev_ordinal (q + 1) Lq1) (nat_p_ordinal (ordsucc m) (nat_ordsucc m (omega_nat_p m Hm))) to the current goal.
Assume H2: SNoLev (q + 1) ordsucc m.
Apply ordsuccI1 to the current goal.
An exact proof term for the current goal is H2.
Assume H2: ordsucc m SNoLev (q + 1).
We prove the intermediate claim L2: SNoLev (q + 1) ordsucc m.
Apply Subq_tra (SNoLev (q + 1)) (SNoLev q + SNoLev 1) to the current goal.
We will prove SNoLev (q + 1) SNoLev q + SNoLev 1.
Apply add_SNo_Lev_bd to the current goal.
An exact proof term for the current goal is Lq.
An exact proof term for the current goal is SNo_1.
We will prove SNoLev q + SNoLev 1 ordsucc m.
rewrite the current goal using SNoLev_uniq2 m (nat_p_ordinal m (omega_nat_p m Hm)) q H1 (from left to right).
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
We will prove m + 1 ordsucc m.
rewrite the current goal using add_SNo_1_ordsucc m Hm (from left to right).
Apply Subq_ref to the current goal.
We prove the intermediate claim L3: SNoLev (q + 1) = ordsucc m.
Apply set_ext to the current goal.
An exact proof term for the current goal is L2.
An exact proof term for the current goal is H2.
rewrite the current goal using L3 (from left to right).
Apply ordsuccI2 to the current goal.
Theorem. (pos_real_left_approx_double) The following is provable:
Proof:
Let x be given.
Assume HxR Hxpos Hxn2 Hxne.
Apply real_E x HxR to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ω.
Assume Hx3: x SNoS_ (ordsucc ω).
Assume Hx4: - ω < x.
Assume Hx5: x < ω.
Assume Hx6: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Assume Hx7: kω, qSNoS_ ω, q < x x < q + eps_ k.
We prove the intermediate claim L1: ∀m, nat_p meps_ m < xwSNoL_pos x, x < 2 * w.
Apply nat_ind to the current goal.
We will prove eps_ 0 < xwSNoL_pos x, x < 2 * w.
rewrite the current goal using eps_0_1 (from left to right).
Assume H1: 1 < x.
Apply SNoLt_trichotomy_or_impred x 2 Hx1 SNo_2 to the current goal.
Assume H2: x < 2.
We use 1 to witness the existential quantifier.
Apply andI to the current goal.
We will prove 1 SNoL_pos x.
We will prove 1 {wSNoL x|0 < w}.
Apply SepI to the current goal.
We will prove 1 SNoL x.
Apply SNoL_I x Hx1 1 SNo_1 to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
We will prove 1 SNoLev x.
Apply ordinal_In_Or_Subq 1 (SNoLev x) (nat_p_ordinal 1 nat_1) (SNoLev_ordinal x Hx1) to the current goal.
Assume H3: 1 SNoLev x.
An exact proof term for the current goal is H3.
Assume H3: SNoLev x 1.
We will prove False.
Apply Hxne 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove x = eps_ 0.
rewrite the current goal using eps_0_1 (from left to right).
An exact proof term for the current goal is pos_low_eq_one x Hx1 Hxpos H3.
We will prove 1 < x.
An exact proof term for the current goal is H1.
We will prove 0 < 1.
An exact proof term for the current goal is SNoLt_0_1.
We will prove x < 2 * 1.
rewrite the current goal using mul_SNo_oneR 2 SNo_2 (from left to right).
An exact proof term for the current goal is H2.
Assume H2: x = 2.
We will prove False.
Apply Hxn2 to the current goal.
An exact proof term for the current goal is H2.
Assume H2: 2 < x.
Apply nonneg_real_nat_interval x HxR (SNoLtLe 0 x Hxpos) to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume H.
Apply H to the current goal.
Assume Hmx: m x.
Assume Hxm1: x < ordsucc m.
We prove the intermediate claim Lm: nat_p m.
An exact proof term for the current goal is omega_nat_p m Hm.
Apply nat_inv m Lm to the current goal.
Assume Hm0: m = 0.
We will prove False.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x 1 x Hx1 SNo_1 Hx1 to the current goal.
We will prove x < ordsucc 0.
rewrite the current goal using Hm0 (from right to left).
An exact proof term for the current goal is Hxm1.
We will prove 1 < x.
An exact proof term for the current goal is H1.
Assume H.
Apply H to the current goal.
Let m' be given.
Assume H.
Apply H to the current goal.
Assume Hm': nat_p m'.
Assume Hmm': m = ordsucc m'.
Apply nat_inv m' Hm' to the current goal.
Assume Hm'0: m' = 0.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLt_tra x 2 x Hx1 SNo_2 Hx1 to the current goal.
We will prove x < ordsucc (ordsucc 0).
rewrite the current goal using Hm'0 (from right to left).
rewrite the current goal using Hmm' (from right to left).
An exact proof term for the current goal is Hxm1.
We will prove 2 < x.
An exact proof term for the current goal is H2.
Assume H.
Apply H to the current goal.
Let m'' be given.
Assume H.
Apply H to the current goal.
Assume Hm'': nat_p m''.
Assume Hm'm'': m' = ordsucc m''.
We prove the intermediate claim L1a: kω, 2 k k < x x ordsucc k.
Apply SNoLeE m x (nat_p_SNo m Lm) Hx1 Hmx to the current goal.
Assume H4: m < x.
We use m to witness the existential quantifier.
Apply andI to the current goal.
We will prove m ω.
An exact proof term for the current goal is Hm.
Apply and3I to the current goal.
We will prove 2 m.
Apply SNoLtLe_or m 2 (nat_p_SNo m Lm) SNo_2 to the current goal.
Assume H5: m < 2.
We will prove False.
We prove the intermediate claim L1aa: m 2.
Apply ordinal_SNoLt_In to the current goal.
An exact proof term for the current goal is nat_p_ordinal m Lm.
An exact proof term for the current goal is nat_p_ordinal 2 nat_2.
An exact proof term for the current goal is H5.
Apply cases_2 m L1aa (λi ⇒ m i) to the current goal.
rewrite the current goal using Hmm' (from left to right).
An exact proof term for the current goal is neq_ordsucc_0 m'.
rewrite the current goal using Hmm' (from left to right).
rewrite the current goal using Hm'm'' (from left to right).
Assume H6: ordsucc (ordsucc m'') = 1.
An exact proof term for the current goal is neq_ordsucc_0 m'' (ordsucc_inj (ordsucc m'') 0 H6).
Use reflexivity.
Assume H5: 2 m.
An exact proof term for the current goal is H5.
We will prove m < x.
An exact proof term for the current goal is H4.
We will prove x ordsucc m.
Apply SNoLtLe to the current goal.
We will prove x < ordsucc m.
An exact proof term for the current goal is Hxm1.
Assume H4: m = x.
Apply nat_inv m'' Hm'' to the current goal.
Assume Hm''0: m'' = 0.
We will prove False.
Apply Hxn2 to the current goal.
We will prove x = 2.
rewrite the current goal using H4 (from right to left).
rewrite the current goal using Hmm' (from left to right).
rewrite the current goal using Hm'm'' (from left to right).
rewrite the current goal using Hm''0 (from left to right).
Use reflexivity.
Assume H.
Apply H to the current goal.
Let m''' be given.
Assume H.
Apply H to the current goal.
Assume Hm''': nat_p m'''.
Assume Hm''m''': m'' = ordsucc m'''.
We will prove kω, 2 k k < x x ordsucc k.
We use m' to witness the existential quantifier.
Apply andI to the current goal.
We will prove m' ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is Hm'.
We will prove 2 m' m' < x x ordsucc m'.
Apply and3I to the current goal.
We will prove 2 m'.
rewrite the current goal using Hm'm'' (from left to right).
We will prove 2 ordsucc m''.
rewrite the current goal using ordinal_ordsucc_SNo_eq m'' (nat_p_ordinal m'' Hm'') (from left to right).
We will prove 2 1 + m''.
rewrite the current goal using Hm''m''' (from left to right).
We will prove 2 1 + ordsucc m'''.
rewrite the current goal using ordinal_ordsucc_SNo_eq m''' (nat_p_ordinal m''' Hm''') (from left to right).
We will prove 2 1 + 1 + m'''.
rewrite the current goal using add_SNo_assoc 1 1 m''' SNo_1 SNo_1 (nat_p_SNo m''' Hm''') (from left to right).
We will prove 2 (1 + 1) + m'''.
rewrite the current goal using add_SNo_1_1_2 (from left to right).
We will prove 2 2 + m'''.
rewrite the current goal using add_SNo_0R 2 SNo_2 (from right to left) at position 1.
We will prove 2 + 0 2 + m'''.
Apply add_SNo_Le2 2 0 m''' SNo_2 SNo_0 (nat_p_SNo m''' Hm''') to the current goal.
We will prove 0 m'''.
Apply ordinal_Subq_SNoLe 0 m''' ordinal_Empty (nat_p_ordinal m''' Hm''') to the current goal.
We will prove 0 m'''.
Apply Subq_Empty to the current goal.
We will prove m' < x.
rewrite the current goal using H4 (from right to left).
We will prove m' < m.
Apply ordinal_In_SNoLt to the current goal.
An exact proof term for the current goal is nat_p_ordinal m Lm.
rewrite the current goal using Hmm' (from left to right).
Apply ordsuccI2 to the current goal.
We will prove x ordsucc m'.
rewrite the current goal using H4 (from right to left).
rewrite the current goal using Hmm' (from left to right).
We will prove ordsucc m' ordsucc m'.
Apply SNoLe_ref to the current goal.
Apply L1a to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H.
Apply H to the current goal.
Assume H.
Apply H to the current goal.
Assume H2k: 2 k.
Assume Hkx: k < x.
Assume HxSk: x ordsucc k.
We prove the intermediate claim Lk: nat_p k.
An exact proof term for the current goal is omega_nat_p k Hk.
We prove the intermediate claim LkS: SNo k.
An exact proof term for the current goal is nat_p_SNo k Lk.
We use k to witness the existential quantifier.
Apply andI to the current goal.
We will prove k SNoL_pos x.
We will prove k {wSNoL x|0 < w}.
Apply SepI to the current goal.
We will prove k SNoL x.
Apply SNoL_I to the current goal.
An exact proof term for the current goal is Hx1.
An exact proof term for the current goal is LkS.
We will prove SNoLev k SNoLev x.
rewrite the current goal using ordinal_SNoLev k (nat_p_ordinal k Lk) (from left to right).
We will prove k SNoLev x.
Apply ordinal_trichotomy_or_impred k (SNoLev x) (nat_p_ordinal k Lk) (SNoLev_ordinal x Hx1) to the current goal.
Assume H4: k SNoLev x.
An exact proof term for the current goal is H4.
Assume H4: k = SNoLev x.
We will prove False.
Apply SNoLt_irref k to the current goal.
Apply SNoLtLe_tra k x k LkS Hx1 LkS Hkx to the current goal.
We will prove x k.
Apply ordinal_SNoLev_max_2 k (nat_p_ordinal k Lk) x Hx1 to the current goal.
rewrite the current goal using H4 (from right to left).
Apply ordsuccI2 to the current goal.
Assume H4: SNoLev x k.
We will prove False.
Apply SNoLt_irref k to the current goal.
Apply SNoLt_tra k x k LkS Hx1 LkS Hkx to the current goal.
We will prove x < k.
An exact proof term for the current goal is ordinal_SNoLev_max k (nat_p_ordinal k Lk) x Hx1 H4.
We will prove k < x.
An exact proof term for the current goal is Hkx.
We will prove 0 < k.
Apply SNoLtLe_tra 0 2 k SNo_0 SNo_2 LkS SNoLt_0_2 to the current goal.
We will prove 2 k.
An exact proof term for the current goal is H2k.
We will prove x < 2 * k.
rewrite the current goal using add_SNo_1_1_2 (from right to left).
rewrite the current goal using mul_SNo_distrR 1 1 k SNo_1 SNo_1 LkS (from left to right).
rewrite the current goal using mul_SNo_oneL k LkS (from left to right).
We will prove x < k + k.
Apply SNoLeLt_tra x (ordsucc k) (k + k) Hx1 (nat_p_SNo (ordsucc k) (nat_ordsucc k Lk)) (SNo_add_SNo k k LkS LkS) HxSk to the current goal.
We will prove ordsucc k < k + k.
rewrite the current goal using ordinal_ordsucc_SNo_eq k (nat_p_ordinal k Lk) (from left to right).
We will prove 1 + k < k + k.
Apply add_SNo_Lt1 1 k k SNo_1 LkS LkS to the current goal.
We will prove 1 < k.
Apply SNoLtLe_tra 1 2 k SNo_1 SNo_2 LkS SNoLt_1_2 to the current goal.
We will prove 2 k.
An exact proof term for the current goal is H2k.
Let m be given.
Assume Hm.
Assume IHm: eps_ m < xwSNoL_pos x, x < 2 * w.
Assume H1: eps_ (ordsucc m) < x.
We prove the intermediate claim Lm: m ω.
An exact proof term for the current goal is nat_p_omega m Hm.
We prove the intermediate claim Lem: SNo (eps_ m).
An exact proof term for the current goal is SNo_eps_ m Lm.
Apply SNoLt_trichotomy_or_impred x (eps_ m) Hx1 Lem to the current goal.
Assume H2: x < eps_ m.
We prove the intermediate claim LSm: ordsucc m ω.
An exact proof term for the current goal is omega_ordsucc m Lm.
We prove the intermediate claim LeSm: SNo (eps_ (ordsucc m)).
An exact proof term for the current goal is SNo_eps_ (ordsucc m) LSm.
We use (eps_ (ordsucc m)) to witness the existential quantifier.
Apply andI to the current goal.
We will prove eps_ (ordsucc m) SNoL_pos x.
We will prove eps_ (ordsucc m) {wSNoL x|0 < w}.
Apply SepI to the current goal.
We will prove eps_ (ordsucc m) SNoL x.
Apply SNoL_I x Hx1 (eps_ (ordsucc m)) LeSm to the current goal.
We will prove SNoLev (eps_ (ordsucc m)) SNoLev x.
Apply SNoLtE x (eps_ m) Hx1 Lem H2 to the current goal.
Let z be given.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x SNoLev (eps_ m).
Assume Hz3: SNoEq_ (SNoLev z) z x.
Assume Hz4: SNoEq_ (SNoLev z) z (eps_ m).
Assume Hz5: x < z.
Assume Hz6: z < eps_ m.
Assume Hz7: SNoLev z x.
Assume Hz8: SNoLev z eps_ m.
We will prove False.
We prove the intermediate claim Lz0: z = 0.
Apply SNoLev_0_eq_0 z Hz1 to the current goal.
We will prove SNoLev z = 0.
Apply eps_ordinal_In_eq_0 m to the current goal.
We will prove ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz1.
We will prove SNoLev z eps_ m.
An exact proof term for the current goal is Hz8.
Apply SNoLt_irref x to the current goal.
Apply SNoLt_tra x z x Hx1 Hz1 Hx1 Hz5 to the current goal.
We will prove z < x.
rewrite the current goal using Lz0 (from left to right).
An exact proof term for the current goal is Hxpos.
Assume H3: SNoLev x SNoLev (eps_ m).
Assume H4: SNoEq_ (SNoLev x) x (eps_ m).
Assume H5: SNoLev x eps_ m.
We will prove False.
We prove the intermediate claim Lx0: x = 0.
Apply SNoLev_0_eq_0 x Hx1 to the current goal.
We will prove SNoLev x = 0.
Apply eps_ordinal_In_eq_0 m to the current goal.
We will prove ordinal (SNoLev x).
An exact proof term for the current goal is SNoLev_ordinal x Hx1.
We will prove SNoLev x eps_ m.
An exact proof term for the current goal is H5.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lx0 (from left to right) at position 1.
An exact proof term for the current goal is Hxpos.
rewrite the current goal using SNoLev_eps_ m Lm (from left to right).
Assume H3: ordsucc m SNoLev x.
Assume H4: SNoEq_ (ordsucc m) x (eps_ m).
Assume H5: ordsucc m x.
Apply SNoLtE (eps_ (ordsucc m)) x LeSm Hx1 H1 to the current goal.
Let z be given.
Assume Hz1: SNo z.
rewrite the current goal using SNoLev_eps_ (ordsucc m) LSm (from left to right).
Assume Hz2: SNoLev z ordsucc (ordsucc m) SNoLev x.
Assume Hz3: SNoEq_ (SNoLev z) z (eps_ (ordsucc m)).
Assume Hz4: SNoEq_ (SNoLev z) z x.
Assume Hz5: eps_ (ordsucc m) < z.
Assume Hz6: z < x.
Assume Hz7: SNoLev z eps_ (ordsucc m).
Assume Hz8: SNoLev z x.
We will prove False.
Apply ordsuccE (ordsucc m) (SNoLev z) (binintersectE1 (ordsucc (ordsucc m)) (SNoLev x) (SNoLev z) Hz2) to the current goal.
Assume H6: SNoLev z ordsucc m.
We prove the intermediate claim Lz0: z = 0.
Apply SNoLev_0_eq_0 z Hz1 to the current goal.
We will prove SNoLev z = 0.
Apply eps_ordinal_In_eq_0 m to the current goal.
We will prove ordinal (SNoLev z).
An exact proof term for the current goal is SNoLev_ordinal z Hz1.
We will prove SNoLev z eps_ m.
Apply H4 (SNoLev z) H6 to the current goal.
Assume H7 _.
Apply H7 to the current goal.
We will prove SNoLev z x.
An exact proof term for the current goal is Hz8.
Apply SNoLt_irref (eps_ (ordsucc m)) to the current goal.
Apply SNoLt_tra (eps_ (ordsucc m)) z (eps_ (ordsucc m)) LeSm Hz1 LeSm Hz5 to the current goal.
We will prove z < eps_ (ordsucc m).
rewrite the current goal using Lz0 (from left to right).
An exact proof term for the current goal is SNo_eps_pos (ordsucc m) LSm.
Assume H6: SNoLev z = ordsucc m.
Apply H5 to the current goal.
rewrite the current goal using H6 (from right to left).
An exact proof term for the current goal is Hz8.
Assume H6: SNoLev (eps_ (ordsucc m)) SNoLev x.
Assume H7: SNoEq_ (SNoLev (eps_ (ordsucc m))) (eps_ (ordsucc m)) x.
Assume H8: SNoLev (eps_ (ordsucc m)) x.
An exact proof term for the current goal is H6.
rewrite the current goal using SNoLev_eps_ (ordsucc m) LSm (from left to right).
Assume H6: SNoLev x ordsucc (ordsucc m).
Assume H7: SNoEq_ (SNoLev x) (eps_ (ordsucc m)) x.
Assume H8: SNoLev x eps_ (ordsucc m).
We will prove False.
Apply ordsuccE (ordsucc m) (SNoLev x) H6 to the current goal.
Assume H9: SNoLev x ordsucc m.
An exact proof term for the current goal is In_no2cycle (SNoLev x) (ordsucc m) H9 H3.
Assume H9: SNoLev x = ordsucc m.
Apply In_irref (SNoLev x) to the current goal.
rewrite the current goal using H9 (from left to right) at position 1.
An exact proof term for the current goal is H3.
We will prove eps_ (ordsucc m) < x.
An exact proof term for the current goal is H1.
We will prove 0 < eps_ (ordsucc m).
An exact proof term for the current goal is SNo_eps_pos (ordsucc m) LSm.
We will prove x < 2 * eps_ (ordsucc m).
rewrite the current goal using add_SNo_1_1_2 (from right to left).
rewrite the current goal using mul_SNo_distrR 1 1 (eps_ (ordsucc m)) SNo_1 SNo_1 LeSm (from left to right).
rewrite the current goal using mul_SNo_oneL (eps_ (ordsucc m)) LeSm (from left to right).
rewrite the current goal using eps_ordsucc_half_add m Hm (from left to right).
An exact proof term for the current goal is H2.
Assume H2: x = eps_ m.
We will prove False.
An exact proof term for the current goal is Hxne m (nat_p_omega m Hm) H2.
Assume H2: eps_ m < x.
An exact proof term for the current goal is IHm H2.
We prove the intermediate claim L2: kω, eps_ k < x.
Apply dneg to the current goal.
Assume H1: ¬ kω, eps_ k < x.
We prove the intermediate claim Lx0: 0 = x.
Apply Hx6 0 to the current goal.
We will prove 0 SNoS_ ω.
Apply SNoS_I ω omega_ordinal 0 0 to the current goal.
We will prove 0 ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_0.
We will prove SNo_ 0 0.
Apply ordinal_SNo_ to the current goal.
An exact proof term for the current goal is ordinal_Empty.
We will prove kω, abs_SNo (0 + - x) < eps_ k.
Let k be given.
Assume Hk.
rewrite the current goal using add_SNo_0L (- x) (SNo_minus_SNo x Hx1) (from left to right).
rewrite the current goal using abs_SNo_minus x Hx1 (from left to right).
rewrite the current goal using pos_abs_SNo x Hxpos (from left to right).
We will prove x < eps_ k.
Apply SNoLt_trichotomy_or_impred x (eps_ k) Hx1 (SNo_eps_ k Hk) to the current goal.
Assume H2: x < eps_ k.
An exact proof term for the current goal is H2.
Assume H2: x = eps_ k.
We will prove False.
An exact proof term for the current goal is Hxne k Hk H2.
Assume H2: eps_ k < x.
We will prove False.
Apply H1 to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
An exact proof term for the current goal is H2.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using Lx0 (from right to left) at position 1.
An exact proof term for the current goal is Hxpos.
Apply L2 to the current goal.
Let k be given.
Assume H.
Apply H to the current goal.
Assume Hk: k ω.
Assume H1: eps_ k < x.
An exact proof term for the current goal is L1 k (omega_nat_p k Hk) H1.
Theorem. (real_recip_SNo_lem1) The following is provable:
Proof:
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume HxR: x real.
Assume Hxpos: 0 < x.
Apply real_E x HxR to the current goal.
Assume _.
Assume HxR2: SNoLev x ordsucc ω.
Assume _ _ _ _ _.
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: yreal, zSNoS_ (SNoLev x), 0 < z(1 + (z + - x) * y) * recip_SNo_pos z real.
Let y be given.
Assume Hy.
Let z be given.
Assume Hz Hzpos.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) z Hz to the current goal.
Assume Hz1: SNoLev z SNoLev x.
Assume Hz2: ordinal (SNoLev z).
Assume Hz3: SNo z.
Assume Hz4: SNo_ (SNoLev z) z.
We prove the intermediate claim LzR: z real.
Apply SNoS_omega_real to the current goal.
Apply SNoS_I ω omega_ordinal z (SNoLev z) to the current goal.
We will prove SNoLev z ω.
Apply ordsuccE ω (SNoLev x) HxR2 to the current goal.
Assume H1: SNoLev x ω.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_p_trans (SNoLev x) (omega_nat_p (SNoLev x) H1) (SNoLev z) Hz1.
Assume H1: SNoLev x = ω.
rewrite the current goal using H1 (from right to left).
An exact proof term for the current goal is Hz1.
An exact proof term for the current goal is Hz4.
Apply IHx z Hz LzR Hzpos to the current goal.
Assume IH1: recip_SNo_pos z real.
Assume _.
Apply real_mul_SNo to the current goal.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is real_1.
Apply real_mul_SNo to the current goal.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is LzR.
Apply real_minus_SNo to the current goal.
An exact proof term for the current goal is HxR.
An exact proof term for the current goal is Hy.
An exact proof term for the current goal is IH1.
We prove the intermediate claim L2: ∀k, nat_p k(SNo_recipaux x recip_SNo_pos k 0 real) (SNo_recipaux x recip_SNo_pos k 1 real).
Apply nat_ind to the current goal.
rewrite the current goal using SNo_recipaux_0 (from left to right).
Apply andI to the current goal.
rewrite the current goal using tuple_2_0_eq (from left to right).
Let y be given.
Assume Hy: y {0}.
rewrite the current goal using SingE 0 y Hy (from left to right).
We will prove 0 real.
An exact proof term for the current goal is real_0.
rewrite the current goal using tuple_2_1_eq (from left to right).
Let y be given.
Assume Hy: y 0.
We will prove False.
An exact proof term for the current goal is EmptyE y Hy.
Let k be given.
Assume Hk: nat_p k.
Apply IHk to the current goal.
Assume IHk0 IHk1.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k Hk (from left to right).
Apply andI to the current goal.
rewrite the current goal using tuple_2_0_eq (from left to right).
Let y be given.
Apply binunionE' to the current goal.
Apply binunionE' to the current goal.
An exact proof term for the current goal is IHk0 y.
Apply SNo_recipauxset_E (SNo_recipaux x recip_SNo_pos k 0) x (SNoR x) recip_SNo_pos y Hy to the current goal.
Let u be given.
Assume Hu: u SNo_recipaux x recip_SNo_pos k 0.
Let z be given.
Assume Hz: z SNoR x.
Assume Hye: y = (1 + (z + - x) * u) * recip_SNo_pos z.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x.
Assume Hz3: x < z.
rewrite the current goal using Hye (from left to right).
Apply L1 to the current goal.
We will prove u real.
An exact proof term for the current goal is IHk0 u Hu.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz1 Hx Hz2.
We will prove 0 < z.
An exact proof term for the current goal is SNoLt_tra 0 x z SNo_0 Hx Hz1 Hxpos Hz3.
Apply SNo_recipauxset_E (SNo_recipaux x recip_SNo_pos k 1) x (SNoL_pos x) recip_SNo_pos y Hy to the current goal.
Let u be given.
Assume Hu: u SNo_recipaux x recip_SNo_pos k 1.
Let w be given.
Assume Hw: w SNoL_pos x.
Assume Hye: y = (1 + (w + - x) * u) * recip_SNo_pos w.
Apply SepE (SNoL x) (λw ⇒ 0 < w) w Hw to the current goal.
Assume Hw0: w SNoL x.
Assume Hwpos: 0 < w.
Apply SNoL_E x Hx w Hw0 to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
rewrite the current goal using Hye (from left to right).
Apply L1 to the current goal.
We will prove u real.
An exact proof term for the current goal is IHk1 u Hu.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
We will prove 0 < w.
An exact proof term for the current goal is Hwpos.
rewrite the current goal using tuple_2_1_eq (from left to right).
Let y be given.
Apply binunionE' to the current goal.
Apply binunionE' to the current goal.
An exact proof term for the current goal is IHk1 y.
Apply SNo_recipauxset_E (SNo_recipaux x recip_SNo_pos k 0) x (SNoL_pos x) recip_SNo_pos y Hy to the current goal.
Let u be given.
Assume Hu: u SNo_recipaux x recip_SNo_pos k 0.
Let w be given.
Assume Hw: w SNoL_pos x.
Assume Hye: y = (1 + (w + - x) * u) * recip_SNo_pos w.
Apply SepE (SNoL x) (λw ⇒ 0 < w) w Hw to the current goal.
Assume Hw0: w SNoL x.
Assume Hwpos: 0 < w.
Apply SNoL_E x Hx w Hw0 to the current goal.
Assume Hw1: SNo w.
Assume Hw2: SNoLev w SNoLev x.
Assume Hw3: w < x.
rewrite the current goal using Hye (from left to right).
Apply L1 to the current goal.
We will prove u real.
An exact proof term for the current goal is IHk0 u Hu.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1 Hx Hw2.
We will prove 0 < w.
An exact proof term for the current goal is Hwpos.
Apply SNo_recipauxset_E (SNo_recipaux x recip_SNo_pos k 1) x (SNoR x) recip_SNo_pos y Hy to the current goal.
Let u be given.
Assume Hu: u SNo_recipaux x recip_SNo_pos k 1.
Let z be given.
Assume Hz: z SNoR x.
Assume Hye: y = (1 + (z + - x) * u) * recip_SNo_pos z.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: SNoLev z SNoLev x.
Assume Hz3: x < z.
rewrite the current goal using Hye (from left to right).
Apply L1 to the current goal.
We will prove u real.
An exact proof term for the current goal is IHk1 u Hu.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz1 Hx Hz2.
We will prove 0 < z.
An exact proof term for the current goal is SNoLt_tra 0 x z SNo_0 Hx Hz1 Hxpos Hz3.
Apply andI to the current goal.
We will prove recip_SNo_pos x real.
We prove the intermediate claim L3: uSNoS_ (SNoLev x), 0 < uSNo (recip_SNo_pos u) u * recip_SNo_pos u = 1.
Let u be given.
Assume Hu Hupos.
Apply SNoS_E2 (SNoLev x) (SNoLev_ordinal x Hx) u Hu to the current goal.
Assume _ _.
Assume Hu1: SNo u.
Assume _.
An exact proof term for the current goal is recip_SNo_pos_prop1 u Hu1 Hupos.
Set L to be the term (kωSNo_recipaux x recip_SNo_pos k 0).
Set R to be the term (kωSNo_recipaux x recip_SNo_pos k 1).
We prove the intermediate claim LrxLR: recip_SNo_pos x = SNoCut L R.
An exact proof term for the current goal is recip_SNo_pos_eq x Hx.
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is SNo_recipaux_lem2 x Hx Hxpos recip_SNo_pos L3.
Apply SNoCutP_SNoCut_impred L R LLR to the current goal.
Set y to be the term SNoCut L R.
Assume HLR1: SNo y.
Assume HLR2: SNoLev y ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Assume HLR3: wL, w < y.
Assume HLR4: zR, y < z.
Assume HLR5: ∀u, SNo u(wL, w < u)(zR, u < z)SNoLev y SNoLev u SNoEq_ (SNoLev y) y u.
We prove the intermediate claim LLI: kω, SNo_recipaux x recip_SNo_pos k 0 L.
Let k be given.
Assume Hk.
Let w be given.
Assume Hw.
An exact proof term for the current goal is famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) k w Hk Hw.
We prove the intermediate claim LRI: kω, SNo_recipaux x recip_SNo_pos k 1 R.
Let k be given.
Assume Hk.
Let z be given.
Assume Hz.
An exact proof term for the current goal is famunionI ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) k z Hk Hz.
We prove the intermediate claim LLE: wL, ∀p : prop, (kω, w SNo_recipaux x recip_SNo_pos k 0p)p.
Let w be given.
Assume Hw: w L.
Let p be given.
Assume Hp.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 0) w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w SNo_recipaux x recip_SNo_pos k 0.
An exact proof term for the current goal is Hp k Hk Hwk.
We prove the intermediate claim LRE: zR, ∀p : prop, (kω, z SNo_recipaux x recip_SNo_pos k 1p)p.
Let z be given.
Assume Hz: z R.
Let p be given.
Assume Hp.
Apply famunionE_impred ω (λk ⇒ SNo_recipaux x recip_SNo_pos k 1) z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z SNo_recipaux x recip_SNo_pos k 1.
An exact proof term for the current goal is Hp k Hk Hzk.
We prove the intermediate claim LLreal: L real.
Let w be given.
Assume Hw: w L.
Apply LLE w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w SNo_recipaux x recip_SNo_pos k 0.
Apply L2 k (omega_nat_p k Hk) to the current goal.
Assume _.
An exact proof term for the current goal is H2 w Hwk.
We prove the intermediate claim LRreal: R real.
Let z be given.
Assume Hz: z R.
Apply LRE z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z SNo_recipaux x recip_SNo_pos k 1.
Apply L2 k (omega_nat_p k Hk) to the current goal.
Assume _.
An exact proof term for the current goal is H2 z Hzk.
We prove the intermediate claim LL0: L 0.
Assume H1: L = 0.
Apply EmptyE 0 to the current goal.
We will prove 0 0.
rewrite the current goal using H1 (from right to left) at position 2.
We will prove 0 L.
Apply LLI 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove 0 SNo_recipaux x recip_SNo_pos 0 0.
rewrite the current goal using SNo_recipaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove 0 {0}.
Apply SingI to the current goal.
Apply xm (mω, x = eps_ m) to the current goal.
Assume H.
Apply H to the current goal.
Let m be given.
Assume H.
Apply H to the current goal.
Assume Hm: m ω.
Assume H1: x = eps_ m.
We will prove recip_SNo_pos x real.
rewrite the current goal using H1 (from left to right).
We will prove recip_SNo_pos (eps_ m) real.
rewrite the current goal using recip_SNo_pos_eps_ m (omega_nat_p m Hm) (from left to right).
We will prove 2 ^ m real.
Apply SNoS_omega_real to the current goal.
Apply omega_SNoS_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_exp_SNo_nat 2 nat_2 m (omega_nat_p m Hm).
Assume H1: ¬ (mω, x = eps_ m).
Apply xm (x = 2) to the current goal.
Assume H2: x = 2.
rewrite the current goal using H2 (from left to right).
We will prove recip_SNo_pos 2 real.
rewrite the current goal using recip_SNo_pos_2 (from left to right).
We will prove eps_ 1 real.
Apply SNoS_omega_real to the current goal.
Apply SNo_eps_SNoS_omega to the current goal.
Apply nat_p_omega to the current goal.
An exact proof term for the current goal is nat_1.
Assume H2: x 2.
We prove the intermediate claim L4: mω, x eps_ m.
Let m be given.
Assume Hm H3.
Apply H1 to the current goal.
We use m to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hm.
An exact proof term for the current goal is H3.
Apply pos_real_left_approx_double x HxR Hxpos H2 L4 to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: u SNoL_pos x.
Apply SepE (SNoL x) (λw ⇒ 0 < w) u Hu to the current goal.
Assume Hua: u SNoL x.
Assume Hub: 0 < u.
Apply SNoL_E x Hx u Hua to the current goal.
Assume Hua1: SNo u.
Assume Hua2: SNoLev u SNoLev x.
Assume Hua3: u < x.
Assume H3: x < 2 * u.
We prove the intermediate claim Lru: SNo (recip_SNo_pos u).
An exact proof term for the current goal is SNo_recip_SNo_pos u Hua1 Hub.
We prove the intermediate claim Lumx: SNo (u + - x).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Hua1.
An exact proof term for the current goal is Lmx.
Set f to be the term λv ⇒ (1 + (u + - x) * v) * recip_SNo_pos u of type setset.
We prove the intermediate claim L5: wL, f w R.
Let w be given.
Assume Hw.
Apply LLE w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w SNo_recipaux x recip_SNo_pos k 0.
Apply LRI (ordsucc k) (omega_ordsucc k Hk) to the current goal.
We will prove f w SNo_recipaux x recip_SNo_pos (ordsucc k) 1.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
Apply SNo_recipauxset_I (SNo_recipaux x recip_SNo_pos k 0) x (SNoL_pos x) recip_SNo_pos w to the current goal.
We will prove w SNo_recipaux x recip_SNo_pos k 0.
An exact proof term for the current goal is Hwk.
An exact proof term for the current goal is Hu.
We prove the intermediate claim L6: zR, f z L.
Let z be given.
Assume Hz.
Apply LRE z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z SNo_recipaux x recip_SNo_pos k 1.
Apply LLI (ordsucc k) (omega_ordsucc k Hk) to the current goal.
We will prove (1 + (u + - x) * z) * recip_SNo_pos u SNo_recipaux x recip_SNo_pos (ordsucc k) 0.
rewrite the current goal using SNo_recipaux_S x recip_SNo_pos k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionI2 to the current goal.
Apply SNo_recipauxset_I (SNo_recipaux x recip_SNo_pos k 1) x (SNoL_pos x) recip_SNo_pos z to the current goal.
We will prove z SNo_recipaux x recip_SNo_pos k 1.
An exact proof term for the current goal is Hzk.
An exact proof term for the current goal is Hu.
We prove the intermediate claim Luu: SNo (u * u).
An exact proof term for the current goal is SNo_mul_SNo u u Hua1 Hua1.
We prove the intermediate claim Luupos: 0 < u * u.
An exact proof term for the current goal is mul_SNo_pos_pos u u Hua1 Hua1 Hub Hub.
We prove the intermediate claim Luun0: u * u 0.
Assume H.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H (from right to left) at position 2.
An exact proof term for the current goal is Luupos.
We prove the intermediate claim L2u: SNo (2 * u).
An exact proof term for the current goal is SNo_mul_SNo 2 u SNo_2 Hua1.
We prove the intermediate claim Lf: ∀v, SNo v∀p : prop, (SNo ((u + - x) * v)SNo (1 + ((u + - x) * v))SNo (f v)p)p.
Let v be given.
Assume Hv.
Let p be given.
Assume Hp.
We prove the intermediate claim Lf1: SNo ((u + - x) * v).
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Lumx.
An exact proof term for the current goal is Hv.
We prove the intermediate claim Lf2: SNo (1 + (u + - x) * v).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is Lf1.
We prove the intermediate claim Lf3: SNo ((1 + (u + - x) * v) * recip_SNo_pos u).
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is Lf2.
An exact proof term for the current goal is Lru.
An exact proof term for the current goal is Hp Lf1 Lf2 Lf3.
We prove the intermediate claim Luf: ∀v, SNo vu * f v = 1 + (u + - x) * v.
Let v be given.
Assume Hv.
Apply Lf v Hv to the current goal.
Assume Humxv: SNo ((u + - x) * v).
Assume H1umxv: SNo (1 + (u + - x) * v).
Assume Hfv: SNo (f v).
We will prove u * ((1 + (u + - x) * v) * recip_SNo_pos u) = 1 + (u + - x) * v.
rewrite the current goal using mul_SNo_com (1 + (u + - x) * v) (recip_SNo_pos u) H1umxv Lru (from left to right).
rewrite the current goal using mul_SNo_assoc u (recip_SNo_pos u) (1 + (u + - x) * v) Hua1 Lru H1umxv (from left to right).
rewrite the current goal using recip_SNo_pos_invR u Hua1 Hub (from left to right).
An exact proof term for the current goal is mul_SNo_oneL (1 + (u + - x) * v) H1umxv.
We prove the intermediate claim L7: ∀v, SNo vf (f v) = (v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x)) :/: (u * u).
Let v be given.
Assume Hv.
Set v' to be the term f v.
Apply Lf v Hv to the current goal.
Assume Humxv: SNo ((u + - x) * v).
Assume H1umxv: SNo (1 + (u + - x) * v).
Assume Hv': SNo v'.
Apply Lf v' Hv' to the current goal.
Assume Humxv': SNo ((u + - x) * v').
Assume H1umxv': SNo (1 + (u + - x) * v').
Assume Hfv': SNo (f v').
We prove the intermediate claim Lxv: SNo (x * v).
An exact proof term for the current goal is SNo_mul_SNo x v Hx Hv.
We prove the intermediate claim Lxxv: SNo (x * x * v).
An exact proof term for the current goal is SNo_mul_SNo x (x * v) Hx Lxv.
We prove the intermediate claim L2uxv: SNo ((2 * u) * x * v).
An exact proof term for the current goal is SNo_mul_SNo (2 * u) (x * v) L2u Lxv.
We prove the intermediate claim Lvuu: SNo (v * u * u).
An exact proof term for the current goal is SNo_mul_SNo v (u * u) Hv Luu.
We prove the intermediate claim Luxv: SNo (u * x * v).
An exact proof term for the current goal is SNo_mul_SNo u (x * v) Hua1 Lxv.
We prove the intermediate claim Luv: SNo (u * v).
An exact proof term for the current goal is SNo_mul_SNo u v Hua1 Hv.
We prove the intermediate claim Lxuv: SNo (x * u * v).
An exact proof term for the current goal is SNo_mul_SNo x (u * v) Hx Luv.
We prove the intermediate claim Lmuxv: SNo (- u * x * v).
An exact proof term for the current goal is SNo_minus_SNo (u * x * v) Luxv.
We prove the intermediate claim Lmxuv: SNo (- x * u * v).
An exact proof term for the current goal is SNo_minus_SNo (x * u * v) Lxuv.
We prove the intermediate claim Lmxmxuv: SNo (- x + - x * u * v).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lmx.
An exact proof term for the current goal is Lmxuv.
We prove the intermediate claim Lmxmxuvxxv: SNo (- x + - x * u * v + x * x * v).
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is Lmx.
An exact proof term for the current goal is Lmxuv.
An exact proof term for the current goal is Lxxv.
We will prove f v' = (v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x)) :/: (u * u).
Use symmetry.
Apply mul_div_SNo_nonzero_eq (v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x)) (u * u) (f v') (SNo_add_SNo_4 (v * u * u) (x * x * v) (2 * u) (- ((2 * u) * x * v + x)) Lvuu Lxxv L2u (SNo_minus_SNo ((2 * u) * x * v + x) (SNo_add_SNo ((2 * u) * x * v) x L2uxv Hx))) Luu Hfv' Luun0 to the current goal.
We will prove v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x) = (u * u) * f v'.
Use transitivity with u + u * (1 + (u + - x) * v) + - x * (1 + (u + - x) * v), u + u * u * v' + - x * u * v', u * (1 + (u + - x) * v'), and u * (u * f v').
We will prove v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x) = u + u * (1 + (u + - x) * v) + - x * (1 + (u + - x) * v).
Use transitivity with v * u * u + u + u + - u * x * v + (- x + - x * u * v + x * x * v), and u + (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v).
We will prove v * u * u + x * x * v + 2 * u + - ((2 * u) * x * v + x) = v * u * u + u + u + - u * x * v + (- x + - x * u * v + x * x * v).
Use f_equal.
We will prove x * x * v + 2 * u + - ((2 * u) * x * v + x) = u + u + - u * x * v + (- x + - x * u * v + x * x * v).
rewrite the current goal using add_SNo_com_3_0_1 (x * x * v) (2 * u) (- ((2 * u) * x * v + x)) Lxxv L2u (SNo_minus_SNo ((2 * u) * x * v + x) (SNo_add_SNo ((2 * u) * x * v) x L2uxv Hx)) (from left to right).
We will prove 2 * u + x * x * v + - ((2 * u) * x * v + x) = u + u + - u * x * v + (- x + - x * u * v + x * x * v).
rewrite the current goal using add_SNo_1_1_2 (from right to left) at position 1.
rewrite the current goal using mul_SNo_distrR 1 1 u SNo_1 SNo_1 Hua1 (from left to right).
rewrite the current goal using mul_SNo_oneL u Hua1 (from left to right).
We will prove (u + u) + x * x * v + - ((2 * u) * x * v + x) = u + u + - u * x * v + (- x + - x * u * v + x * x * v).
Use transitivity with and u + u + x * x * v + - ((2 * u) * x * v + x).
Use symmetry.
Apply add_SNo_assoc u u (x * x * v + - ((2 * u) * x * v + x)) Hua1 Hua1 to the current goal.
We will prove SNo (x * x * v + - ((2 * u) * x * v + x)).
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is Lxxv.
Apply SNo_minus_SNo to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is L2uxv.
An exact proof term for the current goal is Hx.
Use f_equal.
Use f_equal.
We will prove x * x * v + - ((2 * u) * x * v + x) = - u * x * v + (- x + - x * u * v + x * x * v).
Use transitivity with and x * x * v + - u * x * v + - x + - x * u * v.
We will prove x * x * v + - ((2 * u) * x * v + x) = x * x * v + - u * x * v + - x + - x * u * v.
Use f_equal.
We will prove - ((2 * u) * x * v + x) = - u * x * v + - x + - x * u * v.
rewrite the current goal using minus_add_SNo_distr_3 (u * x * v) x (x * u * v) Luxv Hx Lxuv (from right to left).
We will prove - ((2 * u) * x * v + x) = - (u * x * v + x + x * u * v).
Use f_equal.
We will prove (2 * u) * x * v + x = u * x * v + x + x * u * v.
rewrite the current goal using mul_SNo_com_3_0_1 x u v Hx Hua1 Hv (from left to right).
We will prove (2 * u) * x * v + x = u * x * v + x + u * x * v.
rewrite the current goal using add_SNo_com x (u * x * v) Hx Luxv (from left to right).
rewrite the current goal using add_SNo_assoc (u * x * v) (u * x * v) x Luxv Luxv Hx (from left to right).
Use f_equal.
We will prove (2 * u) * x * v = u * x * v + u * x * v.
rewrite the current goal using add_SNo_1_1_2 (from right to left) at position 1.
rewrite the current goal using mul_SNo_distrR 1 1 u SNo_1 SNo_1 Hua1 (from left to right).
rewrite the current goal using mul_SNo_oneL u Hua1 (from left to right).
We will prove (u + u) * x * v = u * x * v + u * x * v.
An exact proof term for the current goal is mul_SNo_distrR u u (x * v) Hua1 Hua1 Lxv.
We will prove x * x * v + - u * x * v + - x + - x * u * v = - u * x * v + (- x + - x * u * v + x * x * v).
rewrite the current goal using add_SNo_com_3_0_1 (x * x * v) (- u * x * v) (- x + - x * u * v) Lxxv Lmuxv Lmxmxuv (from left to right).
Use f_equal.
We will prove x * x * v + - x + - x * u * v = - x + - x * u * v + x * x * v.
rewrite the current goal using add_SNo_com_3_0_1 (x * x * v) (- x) (- x * u * v) Lxxv Lmx Lmxuv (from left to right).
Use f_equal.
We will prove x * x * v + - x * u * v = - x * u * v + x * x * v.
An exact proof term for the current goal is add_SNo_com (x * x * v) (- x * u * v) Lxxv Lmxuv.
We will prove v * u * u + u + u + - u * x * v + (- x + - x * u * v + x * x * v) = u + (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v).
rewrite the current goal using add_SNo_com_3_0_1 (v * u * u) u (u + - u * x * v + (- x + - x * u * v + x * x * v)) Lvuu Hua1 (from left to right).
We will prove u + v * u * u + u + - u * x * v + (- x + - x * u * v + x * x * v) = u + (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v).
Use f_equal.
We will prove v * u * u + u + - u * x * v + (- x + - x * u * v + x * x * v) = (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v).
Apply add_SNo_assoc_4 to the current goal.
An exact proof term for the current goal is Lvuu.
An exact proof term for the current goal is Hua1.
An exact proof term for the current goal is Lmuxv.
An exact proof term for the current goal is Lmxmxuvxxv.
Apply SNo_add_SNo_3 to the current goal.
An exact proof term for the current goal is Hua1.
An exact proof term for the current goal is Lmuxv.
An exact proof term for the current goal is Lmxmxuvxxv.
We will prove u + (v * u * u + u + - u * x * v) + (- x + - x * u * v + x * x * v) = u + u * (1 + (u + - x) * v) + - x * (1 + (u + - x) * v).
Use f_equal.
Use f_equal.
We will prove v * u * u + u + - u * x * v = u * (1 + (u + - x) * v).
rewrite the current goal using mul_SNo_distrL u 1 ((u + - x) * v) Hua1 SNo_1 Humxv (from left to right).
We will prove v * u * u + u + - u * x * v = u * 1 + u * (u + - x) * v.
rewrite the current goal using mul_SNo_oneR u Hua1 (from left to right).
We will prove v * u * u + u + - u * x * v = u + u * (u + - x) * v.
rewrite the current goal using add_SNo_com_3_0_1 (v * u * u) u (- u * x * v) Lvuu Hua1 (SNo_minus_SNo (u * x * v) Luxv) (from left to right).
We will prove u + v * u * u + - u * x * v = u + u * (u + - x) * v.
Use f_equal.
We will prove v * u * u + - u * x * v = u * (u + - x) * v.
rewrite the current goal using mul_SNo_distrR u (- x) v Hua1 Lmx Hv (from left to right).
We will prove v * u * u + - u * x * v = u * (u * v + (- x) * v).
rewrite the current goal using mul_SNo_distrL u (u * v) ((- x) * v) Hua1 Luv (SNo_mul_SNo (- x) v Lmx Hv) (from left to right).
We will prove v * u * u + - u * x * v = u * u * v + u * (- x) * v.
Use f_equal.
We will prove v * u * u = u * u * v.
rewrite the current goal using mul_SNo_com u v Hua1 Hv (from left to right).
An exact proof term for the current goal is mul_SNo_com_3_0_1 v u u Hv Hua1 Hua1.
We will prove - u * x * v = u * (- x) * v.
rewrite the current goal using mul_SNo_minus_distrL x v Hx Hv (from left to right).
Use symmetry.
An exact proof term for the current goal is mul_SNo_minus_distrR u (x * v) Hua1 Lxv.
We will prove - x + - x * u * v + x * x * v = - x * (1 + (u + - x) * v).
rewrite the current goal using mul_SNo_minus_distrL x (1 + (u + - x) * v) Hx H1umxv (from right to left).
We will prove - x + - x * u * v + x * x * v = (- x) * (1 + (u + - x) * v).
Apply mul_SNo_distrL (- x) 1 ((u + - x) * v) Lmx SNo_1 Humxv (λw z ⇒ - x + - x * u * v + x * x * v = z) to the current goal.
We will prove - x + - x * u * v + x * x * v = (- x) * 1 + (- x) * (u + - x) * v.
rewrite the current goal using mul_SNo_oneR (- x) Lmx (from left to right).
We will prove - x + - x * u * v + x * x * v = - x + (- x) * (u + - x) * v.
Use f_equal.
We will prove - x * u * v + x * x * v = (- x) * (u + - x) * v.
rewrite the current goal using mul_SNo_distrR u (- x) v Hua1 Lmx Hv (from left to right).
rewrite the current goal using mul_SNo_distrL (- x) (u * v) ((- x) * v) Lmx Luv (SNo_mul_SNo (- x) v Lmx Hv) (from left to right).
We will prove - x * u * v + x * x * v = (- x) * u * v + (- x) * (- x) * v.
rewrite the current goal using mul_SNo_minus_distrL x (u * v) Hx Luv (from left to right).
We will prove - x * u * v + x * x * v = - x * u * v + (- x) * (- x) * v.
Use f_equal.
We will prove x * x * v = (- x) * (- x) * v.
rewrite the current goal using mul_SNo_assoc (- x) (- x) v Lmx Lmx Hv (from left to right).
rewrite the current goal using mul_SNo_minus_minus x x Hx Hx (from left to right).
An exact proof term for the current goal is mul_SNo_assoc x x v Hx Hx Hv.
We will prove u + u * (1 + (u + - x) * v) + - x * (1 + (u + - x) * v) = u + u * u * v' + - x * u * v'.
An exact proof term for the current goal is Luf v Hv (λw z ⇒ u + u * w + - x * w = u + u * u * v' + - x * u * v') (λq H ⇒ H).
We will prove u + u * u * v' + - x * u * v' = u * (1 + (u + - x) * v').
Apply mul_SNo_distrL u 1 ((u + - x) * v') Hua1 SNo_1 Humxv' (λw z ⇒ u + u * u * v' + - x * u * v' = z) to the current goal.
We will prove u + u * u * v' + - x * u * v' = u * 1 + u * (u + - x) * v'.
rewrite the current goal using mul_SNo_oneR u Hua1 (from left to right).
Use f_equal.
We will prove u * u * v' + - x * u * v' = u * (u + - x) * v'.
Apply mul_SNo_distrR u (- x) v' Hua1 Lmx Hv' (λw z ⇒ u * u * v' + - x * u * v' = u * z) to the current goal.
We will prove u * u * v' + - x * u * v' = u * (u * v' + (- x) * v').
Apply mul_SNo_distrL u (u * v') ((- x) * v') Hua1 (SNo_mul_SNo u v' Hua1 Hv') (SNo_mul_SNo (- x) v' Lmx Hv') (λw z ⇒ u * u * v' + - x * u * v' = z) to the current goal.
We will prove u * u * v' + - x * u * v' = u * u * v' + u * (- x) * v'.
Use f_equal.
We will prove - x * u * v' = u * (- x) * v'.
Apply mul_SNo_com_3_0_1 u (- x) v' Hua1 Lmx Hv' (λw z ⇒ - x * u * v' = z) to the current goal.
We will prove - x * u * v' = (- x) * u * v'.
Use symmetry.
An exact proof term for the current goal is mul_SNo_minus_distrL x (u * v') Hx (SNo_mul_SNo u v' Hua1 Hv').
Use f_equal.
Use symmetry.
An exact proof term for the current goal is Luf v' Hv'.
An exact proof term for the current goal is mul_SNo_assoc u u (f v') Hua1 Hua1 Hfv'.
We prove the intermediate claim L8: wL, w'L, w < w'.
Let w be given.
Assume Hw.
We prove the intermediate claim Lw: SNo w.
Apply real_SNo to the current goal.
An exact proof term for the current goal is LLreal w Hw.
We prove the intermediate claim Lxw: SNo (x * w).
An exact proof term for the current goal is SNo_mul_SNo x w Hx Lw.
We prove the intermediate claim Lxxw: SNo (x * x * w).
An exact proof term for the current goal is SNo_mul_SNo x (x * w) Hx Lxw.
We prove the intermediate claim L2uxw: SNo ((2 * u) * x * w).
An exact proof term for the current goal is SNo_mul_SNo (2 * u) (x * w) L2u Lxw.
We prove the intermediate claim Lwuu: SNo (w * u * u).
An exact proof term for the current goal is SNo_mul_SNo w (u * u) Lw Luu.
We use f (f w) to witness the existential quantifier.
Apply andI to the current goal.
Apply L6 to the current goal.
Apply L5 to the current goal.
An exact proof term for the current goal is Hw.
We will prove w < f (f w).
We prove the intermediate claim L8a: w < (w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x)) :/: (u * u).
We will prove w < (w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x)) :/: (u * u).
Apply div_SNo_pos_LtR (w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x)) (u * u) w to the current goal.
An exact proof term for the current goal is SNo_add_SNo_4 (w * u * u) (x * x * w) (2 * u) (- ((2 * u) * x * w + x)) Lwuu Lxxw L2u (SNo_minus_SNo ((2 * u) * x * w + x) (SNo_add_SNo ((2 * u) * x * w) x L2uxw Hx)).
An exact proof term for the current goal is Luu.
An exact proof term for the current goal is Lw.
We will prove 0 < u * u.
An exact proof term for the current goal is Luupos.
We will prove w * u * u < w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x).
rewrite the current goal using add_SNo_0R (w * u * u) (from right to left) at position 1.
We will prove w * u * u + 0 < w * u * u + x * x * w + 2 * u + - ((2 * u) * x * w + x).
Apply add_SNo_Lt2 to the current goal.
An exact proof term for the current goal is Lwuu.
An exact proof term for the current goal is SNo_0.
An exact proof term for the current goal is SNo_add_SNo_3 (x * x * w) (2 * u) (- ((2 * u) * x * w + x)) Lxxw L2u (SNo_minus_SNo ((2 * u) * x * w + x) (SNo_add_SNo ((2 * u) * x * w) x L2uxw Hx)).
We will prove 0 < x * x * w + 2 * u + - ((2 * u) * x * w + x).
Apply add_SNo_minus_Lt2b3 to the current goal.
An exact proof term for the current goal is Lxxw.
An exact proof term for the current goal is L2u.
An exact proof term for the current goal is SNo_add_SNo ((2 * u) * x * w) x L2uxw Hx.
An exact proof term for the current goal is SNo_0.
We will prove 0 + (2 * u) * x * w + x < x * x * w + 2 * u.
rewrite the current goal using add_SNo_0L (from left to right).
We will prove (2 * u) * x * w + x < x * x * w + 2 * u.
rewrite the current goal using add_SNo_com ((2 * u) * x * w) x (SNo_mul_SNo (2 * u) (x * w) L2u Lxw) Hx (from left to right).
rewrite the current goal using add_SNo_com (x * x * w) (2 * u) Lxxw L2u (from left to right).
rewrite the current goal using mul_SNo_oneR x Hx (from right to left) at position 1.
We will prove x * 1 + (2 * u) * x * w < 2 * u + x * x * w.
rewrite the current goal using mul_SNo_oneR (2 * u) L2u (from right to left) at position 2.
We will prove x * 1 + (2 * u) * x * w < (2 * u) * 1 + x * x * w.
Apply mul_SNo_Lt to the current goal.
An exact proof term for the current goal is L2u.
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Lxw.
We will prove x < 2 * u.
An exact proof term for the current goal is H3.
We will prove x * w < 1.
rewrite the current goal using mul_SNo_com x w Hx Lw (from left to right).
Apply div_SNo_pos_LtR' to the current goal.
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Lw.
We will prove 0 < x.
An exact proof term for the current goal is Hxpos.
We will prove w < 1 :/: x.
We will prove w < 1 * recip_SNo x.
rewrite the current goal using mul_SNo_oneL (recip_SNo x) (SNo_recip_SNo x Hx) (from left to right).
rewrite the current goal using recip_SNo_poscase x Hxpos (from left to right).
We will prove w < recip_SNo_pos x.
rewrite the current goal using LrxLR (from left to right).
We will prove w < y.
Apply HLR3 to the current goal.
An exact proof term for the current goal is Hw.
An exact proof term for the current goal is SNo_add_SNo ((2 * u) * x * w) x (SNo_mul_SNo (2 * u) (x * w) L2u Lxw) Hx.
An exact proof term for the current goal is Lwuu.
An exact proof term for the current goal is L7 w Lw (λu v ⇒ w < v) L8a.
We prove the intermediate claim L9: zR, z'R, z' < z.
Let z be given.
Assume Hz.
We prove the intermediate claim Lz: SNo z.
Apply real_SNo to the current goal.
An exact proof term for the current goal is LRreal z Hz.
We prove the intermediate claim Lxz: SNo (x * z).
An exact proof term for the current goal is SNo_mul_SNo x z Hx Lz.
We prove the intermediate claim Lxxz: SNo (x * x * z).
An exact proof term for the current goal is SNo_mul_SNo x (x * z) Hx Lxz.
We prove the intermediate claim L2uxz: SNo ((2 * u) * x * z).
An exact proof term for the current goal is SNo_mul_SNo (2 * u) (x * z) L2u Lxz.
We prove the intermediate claim Lzuu: SNo (z * u * u).
An exact proof term for the current goal is SNo_mul_SNo z (u * u) Lz Luu.
We use f (f z) to witness the existential quantifier.
Apply andI to the current goal.
Apply L5 to the current goal.
Apply L6 to the current goal.
An exact proof term for the current goal is Hz.
We will prove f (f z) < z.
We prove the intermediate claim L9a: (z * u * u + x * x * z + 2 * u + - ((2 * u) * x * z + x)) :/: (u * u) < z.
Apply div_SNo_pos_LtL (z * u * u + x * x * z + 2 * u + - ((2 * u) * x * z + x)) (u * u) z to the current goal.
An exact proof term for the current goal is SNo_add_SNo_4 (z * u * u) (x * x * z) (2 * u) (- ((2 * u) * x * z + x)) Lzuu Lxxz L2u (SNo_minus_SNo ((2 * u) * x * z + x) (SNo_add_SNo ((2 * u) * x * z) x L2uxz Hx)).
An exact proof term for the current goal is Luu.
An exact proof term for the current goal is Lz.
We will prove 0 < u * u.
An exact proof term for the current goal is Luupos.
We will prove z * u * u + x * x * z + 2 * u + - ((2 * u) * x * z + x) < z * u * u.
rewrite the current goal using add_SNo_0R (z * u * u) (from right to left) at position 2.
We will prove z * u * u + x * x * z + 2 * u + - ((2 * u) * x * z + x) < z * u * u + 0.
Apply add_SNo_Lt2 to the current goal.
An exact proof term for the current goal is Lzuu.
An exact proof term for the current goal is SNo_add_SNo_3 (x * x * z) (2 * u) (- ((2 * u) * x * z + x)) Lxxz L2u (SNo_minus_SNo ((2 * u) * x * z + x) (SNo_add_SNo ((2 * u) * x * z) x L2uxz Hx)).
An exact proof term for the current goal is SNo_0.
We will prove x * x * z + 2 * u + - ((2 * u) * x * z + x) < 0.
Apply add_SNo_minus_Lt1b3 to the current goal.
An exact proof term for the current goal is Lxxz.
An exact proof term for the current goal is L2u.
An exact proof term for the current goal is SNo_add_SNo ((2 * u) * x * z) x L2uxz Hx.
An exact proof term for the current goal is SNo_0.
We will prove x * x * z + 2 * u < 0 + (2 * u) * x * z + x.
rewrite the current goal using add_SNo_0L (from left to right).
We will prove x * x * z + 2 * u < (2 * u) * x * z + x.
rewrite the current goal using mul_SNo_oneR x Hx (from right to left) at position 4.
We will prove x * x * z + 2 * u < (2 * u) * x * z + x * 1.
rewrite the current goal using mul_SNo_oneR (2 * u) L2u (from right to left) at position 1.
We will prove x * x * z + (2 * u) * 1 < (2 * u) * x * z + x * 1.
Apply mul_SNo_Lt to the current goal.
An exact proof term for the current goal is L2u.
An exact proof term for the current goal is Lxz.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is SNo_1.
We will prove x < 2 * u.
An exact proof term for the current goal is H3.
We will prove 1 < x * z.
rewrite the current goal using mul_SNo_com x z Hx Lz (from left to right).
We will prove 1 < z * x.
Apply div_SNo_pos_LtL' to the current goal.
An exact proof term for the current goal is SNo_1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Lz.
We will prove 0 < x.
An exact proof term for the current goal is Hxpos.
We will prove 1 :/: x < z.
We will prove 1 * recip_SNo x < z.
rewrite the current goal using mul_SNo_oneL (recip_SNo x) (SNo_recip_SNo x Hx) (from left to right).
rewrite the current goal using recip_SNo_poscase x Hxpos (from left to right).
We will prove recip_SNo_pos x < z.
rewrite the current goal using LrxLR (from left to right).
We will prove y < z.
Apply HLR4 to the current goal.
An exact proof term for the current goal is Hz.
An exact proof term for the current goal is SNo_add_SNo ((2 * u) * x * z) x (SNo_mul_SNo (2 * u) (x * z) L2u Lxz) Hx.
An exact proof term for the current goal is Lzuu.
An exact proof term for the current goal is L7 z Lz (λu v ⇒ v < z) L9a.
We will prove recip_SNo_pos x real.
rewrite the current goal using recip_SNo_pos_eq x Hx (from left to right).
We will prove SNoCut L R real.
Apply real_SNoCut to the current goal.
An exact proof term for the current goal is LLreal.
An exact proof term for the current goal is LRreal.
An exact proof term for the current goal is LLR.
An exact proof term for the current goal is LL0.
We will prove R 0.
Assume H4: R = 0.
Apply EmptyE ((1 + (u + - x) * 0) * recip_SNo_pos u) to the current goal.
We will prove (1 + (u + - x) * 0) * recip_SNo_pos u 0.
rewrite the current goal using H4 (from right to left) at position 3.
We will prove (1 + (u + - x) * 0) * recip_SNo_pos u R.
Apply L5 0 to the current goal.
We will prove 0 L.
Apply LLI 0 (nat_p_omega 0 nat_0) to the current goal.
We will prove 0 SNo_recipaux x recip_SNo_pos 0 0.
rewrite the current goal using SNo_recipaux_0 x recip_SNo_pos (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove 0 {0}.
Apply SingI to the current goal.
We will prove wL, w'L, w < w'.
An exact proof term for the current goal is L8.
We will prove zR, z'R, z' < z.
An exact proof term for the current goal is L9.
An exact proof term for the current goal is L2.
Proof:
Let x be given.
Assume Hx Hxpos.
Apply real_recip_SNo_lem1 x (real_SNo x Hx) Hx Hxpos to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Proof:
Let x be given.
Assume Hx.
We prove the intermediate claim Lx: SNo x.
An exact proof term for the current goal is real_SNo x Hx.
Apply SNoLt_trichotomy_or_impred x 0 Lx SNo_0 to the current goal.
Assume H1: x < 0.
rewrite the current goal using recip_SNo_negcase x Lx H1 (from left to right).
We will prove - recip_SNo_pos (- x) real.
Apply real_minus_SNo (recip_SNo_pos (- x)) to the current goal.
We will prove recip_SNo_pos (- x) real.
Apply real_recip_SNo_pos (- x) to the current goal.
We will prove - x real.
An exact proof term for the current goal is real_minus_SNo x Hx.
We will prove 0 < - x.
Apply minus_SNo_Lt_contra2 x 0 Lx SNo_0 to the current goal.
We will prove x < - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
An exact proof term for the current goal is H1.
Assume H1: x = 0.
rewrite the current goal using H1 (from left to right).
rewrite the current goal using recip_SNo_0 (from left to right).
We will prove 0 real.
An exact proof term for the current goal is real_0.
Assume H1: 0 < x.
rewrite the current goal using recip_SNo_poscase x H1 (from left to right).
An exact proof term for the current goal is real_recip_SNo_pos x Hx H1.
Theorem. (real_div_SNo) The following is provable:
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
We will prove x * recip_SNo y real.
Apply real_mul_SNo to the current goal.
An exact proof term for the current goal is Hx.
Apply real_recip_SNo to the current goal.
An exact proof term for the current goal is Hy.
Theorem. (sqrt_SNo_nonneg_0inL0) The following is provable:
∀x, SNo x0 x0 SNoLev x0 SNo_sqrtaux x sqrt_SNo_nonneg 0 0
Proof:
Let x be given.
Assume Hx Hxnn H1.
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
We will prove 0 L_ 0.
rewrite the current goal using sqrt_SNo_nonneg_0 (from right to left) at position 1.
rewrite the current goal using SNo_sqrtaux_0 x sqrt_SNo_nonneg (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply ReplI to the current goal.
We will prove 0 SNoL_nonneg x.
We will prove 0 {wSNoL x|0 w}.
Apply SepI to the current goal.
We will prove 0 SNoL x.
Apply SNoL_I x Hx 0 SNo_0 to the current goal.
We will prove SNoLev 0 SNoLev x.
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is H1.
We will prove 0 < x.
Apply SNoLeE 0 x SNo_0 Hx Hxnn to the current goal.
Assume H3: 0 < x.
An exact proof term for the current goal is H3.
Assume H3: 0 = x.
We will prove False.
Apply EmptyE 0 to the current goal.
rewrite the current goal using SNoLev_0 (from right to left) at position 2.
rewrite the current goal using H3 (from left to right) at position 2.
An exact proof term for the current goal is H1.
We will prove 0 0.
Apply SNoLe_ref to the current goal.
Theorem. (sqrt_SNo_nonneg_Lnonempty) The following is provable:
∀x, SNo x0 x0 SNoLev x(kωSNo_sqrtaux x sqrt_SNo_nonneg k 0) 0
Proof:
Let x be given.
Assume Hx Hxnn H1.
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove L 0.
Assume H2: L = 0.
We prove the intermediate claim L1: sqrt_SNo_nonneg 0 L_ 0.
rewrite the current goal using sqrt_SNo_nonneg_0 (from left to right).
An exact proof term for the current goal is sqrt_SNo_nonneg_0inL0 x Hx Hxnn H1.
Apply EmptyE (sqrt_SNo_nonneg 0) to the current goal.
We will prove sqrt_SNo_nonneg 0 0.
rewrite the current goal using H2 (from right to left) at position 2.
An exact proof term for the current goal is famunionI ω L_ 0 (sqrt_SNo_nonneg 0) (nat_p_omega 0 nat_0) L1.
Theorem. (sqrt_SNo_nonneg_Rnonempty) The following is provable:
∀x, SNo x0 x1 SNoLev x(kωSNo_sqrtaux x sqrt_SNo_nonneg k 1) 0
Proof:
Let x be given.
Assume Hx Hxnn H1.
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove R 0.
Assume H2: R = 0.
Apply SNoLt_trichotomy_or_impred x 1 Hx SNo_1 to the current goal.
Assume H3: x < 1.
We prove the intermediate claim L1: 1 SNoR x.
Apply SNoR_I x Hx 1 SNo_1 to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H3.
We prove the intermediate claim L2: sqrt_SNo_nonneg 1 R_ 0.
rewrite the current goal using SNo_sqrtaux_0 x sqrt_SNo_nonneg (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply ReplI to the current goal.
An exact proof term for the current goal is L1.
Apply EmptyE (sqrt_SNo_nonneg 1) to the current goal.
rewrite the current goal using H2 (from right to left) at position 2.
We will prove sqrt_SNo_nonneg 1 R.
An exact proof term for the current goal is famunionI ω R_ 0 (sqrt_SNo_nonneg 1) (nat_p_omega 0 nat_0) L2.
Assume H3: x = 1.
We will prove False.
Apply In_irref 1 to the current goal.
We will prove 1 1.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from right to left) at position 2.
rewrite the current goal using H3 (from right to left) at position 2.
An exact proof term for the current goal is H1.
Assume H3: 1 < x.
We prove the intermediate claim L3: 1 SNoL_nonneg x.
We will prove 1 {wSNoL x|0 w}.
Apply SepI to the current goal.
Apply SNoL_I x Hx 1 SNo_1 to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 (nat_p_ordinal 1 nat_1) (from left to right).
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H3.
We will prove 0 1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_1.
We prove the intermediate claim L4: (x + 1 * 0) :/: (1 + 0) R_ 1.
We will prove (x + 1 * 0) :/: (1 + 0) SNo_sqrtaux x sqrt_SNo_nonneg 1 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg 0 nat_0 (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
Apply SNo_sqrtauxset_I to the current goal.
We will prove 1 L_ 0.
We will prove 1 SNo_sqrtaux x sqrt_SNo_nonneg 0 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using sqrt_SNo_nonneg_1 (from right to left).
Apply ReplI to the current goal.
We will prove 1 SNoL_nonneg x.
An exact proof term for the current goal is L3.
We will prove 0 L_ 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_0inL0 x Hx Hxnn (ordinal_TransSet (SNoLev x) (SNoLev_ordinal x Hx) 1 H1 0 In_0_1).
We will prove 0 < 1 + 0.
rewrite the current goal using add_SNo_0R 1 SNo_1 (from left to right).
An exact proof term for the current goal is SNoLt_0_1.
Apply EmptyE ((x + 1 * 0) :/: (1 + 0)) to the current goal.
rewrite the current goal using H2 (from right to left) at position 5.
We will prove ((x + 1 * 0) :/: (1 + 0)) R.
An exact proof term for the current goal is famunionI ω R_ 1 ((x + 1 * 0) :/: (1 + 0)) (nat_p_omega 1 nat_1) L4.
Theorem. (SNo_sqrtauxset_real) The following is provable:
∀Y Z x, Y realZ realx realSNo_sqrtauxset Y Z x real
Proof:
Let Y, Z and x be given.
Assume HY HZ Hx.
We will prove (yY{(x + y * z) :/: (y + z)|zZ, 0 < y + z}) real.
Let w be given.
Assume Hw.
Apply famunionE_impred Y (λy ⇒ {(x + y * z) :/: (y + z)|zZ, 0 < y + z}) w Hw to the current goal.
Let y be given.
Assume Hy: y Y.
Assume Hw2: w {(x + y * z) :/: (y + z)|zZ, 0 < y + z}.
Apply ReplSepE_impred Z (λz ⇒ 0 < y + z) (λz ⇒ (x + y * z) :/: (y + z)) w Hw2 to the current goal.
Let z be given.
Assume Hz: z Z.
Assume Hyz: 0 < y + z.
Assume Hw3: w = (x + y * z) :/: (y + z).
We will prove w real.
rewrite the current goal using Hw3 (from left to right).
Apply real_div_SNo to the current goal.
We will prove x + y * z real.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is Hx.
Apply real_mul_SNo to the current goal.
An exact proof term for the current goal is HY y Hy.
An exact proof term for the current goal is HZ z Hz.
We will prove y + z real.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is HY y Hy.
An exact proof term for the current goal is HZ z Hz.
Theorem. (SNo_sqrtauxset_real_nonneg) The following is provable:
∀Y Z x, Y {wreal|0 w}Z {zreal|0 z}x real0 xSNo_sqrtauxset Y Z x {wreal|0 w}
Proof:
Let Y, Z and x be given.
Assume HY HZ Hx Hxnneg.
We will prove (yY{(x + y * z) :/: (y + z)|zZ, 0 < y + z}) {wreal|0 w}.
We prove the intermediate claim LY: Y real.
Let y be given.
Assume Hy.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) y (HY y Hy).
We prove the intermediate claim LZ: Z real.
Let z be given.
Assume Hz.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) z (HZ z Hz).
We prove the intermediate claim LxS: SNo x.
An exact proof term for the current goal is real_SNo x Hx.
Let w be given.
Assume Hw.
Apply SepI to the current goal.
Apply SNo_sqrtauxset_real Y Z x LY LZ Hx w Hw to the current goal.
We will prove 0 w.
Apply famunionE_impred Y (λy ⇒ {(x + y * z) :/: (y + z)|zZ, 0 < y + z}) w Hw to the current goal.
Let y be given.
Assume Hy: y Y.
Assume Hw2: w {(x + y * z) :/: (y + z)|zZ, 0 < y + z}.
Apply ReplSepE_impred Z (λz ⇒ 0 < y + z) (λz ⇒ (x + y * z) :/: (y + z)) w Hw2 to the current goal.
Let z be given.
Assume Hz: z Z.
Assume Hyz: 0 < y + z.
Assume Hw3: w = (x + y * z) :/: (y + z).
Apply SepE real (λw ⇒ 0 w) y (HY y Hy) to the current goal.
Assume HyR: y real.
Assume Hynneg: 0 y.
We prove the intermediate claim LyS: SNo y.
An exact proof term for the current goal is real_SNo y HyR.
Apply SepE real (λz ⇒ 0 z) z (HZ z Hz) to the current goal.
Assume HzR: z real.
Assume Hznneg: 0 z.
We prove the intermediate claim LzS: SNo z.
An exact proof term for the current goal is real_SNo z HzR.
rewrite the current goal using Hw3 (from left to right).
We will prove 0 (x + y * z) :/: (y + z).
We prove the intermediate claim L1: 0 x + y * z.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
Apply add_SNo_Le3 0 0 x (y * z) SNo_0 SNo_0 (real_SNo x Hx) (SNo_mul_SNo y z LyS LzS) to the current goal.
We will prove 0 x.
An exact proof term for the current goal is Hxnneg.
We will prove 0 y * z.
Apply SNoLeE 0 y SNo_0 LyS Hynneg to the current goal.
Assume H1: 0 < y.
Apply SNoLeE 0 z SNo_0 LzS Hznneg to the current goal.
Assume H2: 0 < z.
Apply SNoLtLe to the current goal.
We will prove 0 < y * z.
An exact proof term for the current goal is mul_SNo_pos_pos y z LyS LzS H1 H2.
Assume H2: 0 = z.
rewrite the current goal using H2 (from right to left).
rewrite the current goal using mul_SNo_zeroR y LyS (from left to right).
Apply SNoLe_ref to the current goal.
Assume H1: 0 = y.
rewrite the current goal using H1 (from right to left).
rewrite the current goal using mul_SNo_zeroL z LzS (from left to right).
Apply SNoLe_ref to the current goal.
Apply SNoLeE 0 (x + y * z) SNo_0 (SNo_add_SNo x (y * z) LxS (SNo_mul_SNo y z LyS LzS)) L1 to the current goal.
Assume H1: 0 < x + y * z.
We will prove 0 (x + y * z) :/: (y + z).
Apply SNoLtLe to the current goal.
We will prove 0 < (x + y * z) :/: (y + z).
An exact proof term for the current goal is div_SNo_pos_pos (x + y * z) (y + z) (SNo_add_SNo x (y * z) LxS (SNo_mul_SNo y z LyS LzS)) (SNo_add_SNo y z LyS LzS) H1 Hyz.
Assume H1: 0 = x + y * z.
rewrite the current goal using H1 (from right to left).
rewrite the current goal using div_SNo_0_num (y + z) (SNo_add_SNo y z LyS LzS) (from left to right).
Apply SNoLe_ref to the current goal.
Proof:
We prove the intermediate claim L1: ∀x, SNo xSNoLev x ω0 xsqrt_SNo_nonneg x real.
Apply SNoLev_ind to the current goal.
Let x be given.
Assume Hx: SNo x.
Assume IH: wSNoS_ (SNoLev x), SNoLev w ω0 wsqrt_SNo_nonneg w real.
Assume Hx1: SNoLev x ω.
Assume Hx2: 0 x.
We prove the intermediate claim Lx: x real.
Apply SNoS_omega_real to the current goal.
Apply SNoS_I ω omega_ordinal x (SNoLev x) Hx1 to the current goal.
We will prove SNo_ (SNoLev x) x.
An exact proof term for the current goal is SNoLev_ x Hx.
We will prove sqrt_SNo_nonneg x real.
Apply ordinal_In_Or_Subq 0 (SNoLev x) ordinal_Empty (SNoLev_ordinal x Hx) to the current goal.
Assume H1: 0 SNoLev x.
Apply ordinal_In_Or_Subq 1 (SNoLev x) ordinal_1 (SNoLev_ordinal x Hx) to the current goal.
Assume H2: 1 SNoLev x.
We will prove sqrt_SNo_nonneg x real.
rewrite the current goal using sqrt_SNo_nonneg_eq x Hx (from left to right).
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove SNoCut L R real.
We prove the intermediate claim L_L_R_real: ∀k, nat_p kL_ k real R_ k real.
Apply nat_ind to the current goal.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
Let w' be given.
Assume Hw'.
Apply ReplE_impred (SNoL_nonneg x) sqrt_SNo_nonneg w' Hw' to the current goal.
Let w be given.
Assume Hw: w SNoL_nonneg x.
Assume Hw'w: w' = sqrt_SNo_nonneg w.
rewrite the current goal using Hw'w (from left to right).
We will prove sqrt_SNo_nonneg w real.
Apply SepE (SNoL x) (λw ⇒ 0 w) w Hw to the current goal.
Assume Hw1: w SNoL x.
Assume Hwnneg: 0 w.
Apply SNoL_E x Hx w Hw1 to the current goal.
Assume Hw1a Hw1b Hw1c.
Apply IH to the current goal.
We will prove w SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 w x Hw1a Hx Hw1b.
We will prove SNoLev w ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) Hx1 (SNoLev w) Hw1b.
We will prove 0 w.
An exact proof term for the current goal is Hwnneg.
Let z' be given.
Assume Hz'.
Apply ReplE_impred (SNoR x) sqrt_SNo_nonneg z' Hz' to the current goal.
Let z be given.
Assume Hz: z SNoR x.
Assume Hz'z: z' = sqrt_SNo_nonneg z.
rewrite the current goal using Hz'z (from left to right).
We will prove sqrt_SNo_nonneg z real.
Apply SNoR_E x Hx z Hz to the current goal.
Assume Hz1 Hz2 Hz3.
Apply IH to the current goal.
We will prove z SNoS_ (SNoLev x).
An exact proof term for the current goal is SNoS_I2 z x Hz1 Hx Hz2.
We will prove SNoLev z ω.
An exact proof term for the current goal is omega_TransSet (SNoLev x) Hx1 (SNoLev z) Hz2.
We will prove 0 z.
Apply SNoLtLe to the current goal.
We will prove 0 < z.
Apply SNoLeLt_tra 0 x z SNo_0 Hx Hz1 Hx2 to the current goal.
We will prove x < z.
An exact proof term for the current goal is Hz3.
Let k be given.
Assume Hk.
Assume IHk.
Apply IHk to the current goal.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHk0.
Apply SNo_sqrtauxset_real to the current goal.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is Lx.
Apply binunion_Subq_min to the current goal.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHk1.
Apply SNo_sqrtauxset_real to the current goal.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is Lx.
Apply SNo_sqrtauxset_real to the current goal.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is Lx.
We prove the intermediate claim L1L: wL, ∀p : prop, (SNo w0 ww * w < xp)p.
Let w be given.
Assume Hw.
Let p be given.
Assume Hp.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply SNo_sqrtaux_0_prop x Hx Hx2 k (omega_nat_p k Hk) w H1 to the current goal.
Assume H2.
Apply H2 to the current goal.
An exact proof term for the current goal is Hp.
We prove the intermediate claim L1R: zR, ∀p : prop, (SNo z0 zx < z * zp)p.
Let z be given.
Assume Hz.
Let p be given.
Assume Hp.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z R_ k.
Apply SNo_sqrtaux_1_prop x Hx Hx2 k (omega_nat_p k Hk) z H1 to the current goal.
Assume H3.
Apply H3 to the current goal.
An exact proof term for the current goal is Hp.
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is SNo_sqrt_SNo_SNoCutP x Hx Hx2.
Apply LLR to the current goal.
Assume HLHR.
Apply HLHR to the current goal.
Assume HL: wL, SNo w.
Assume HR: zR, SNo z.
Assume HLR: wL, zR, w < z.
Apply real_SNoCut to the current goal.
We will prove L real.
Let w be given.
Assume Hw: w L.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: w L_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume H2 _.
An exact proof term for the current goal is H2 w H1.
We will prove R real.
Let z be given.
Assume Hz: z R.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H1: z R_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume _ H2.
An exact proof term for the current goal is H2 z H1.
We will prove SNoCutP L R.
An exact proof term for the current goal is LLR.
We will prove L 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_Lnonempty x Hx Hx2 H1.
We will prove R 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_Rnonempty x Hx Hx2 H2.
We will prove wL, w'L, w < w'.
Let w be given.
Assume Hw.
Apply famunionE_impred ω L_ w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H3: w L_ k.
Apply L1L w Hw to the current goal.
Assume Hw1: SNo w.
Assume Hw2: 0 w.
Assume Hw3: w * w < x.
We prove the intermediate claim Lwmw: SNo (w * w).
An exact proof term for the current goal is SNo_mul_SNo w w Hw1 Hw1.
We prove the intermediate claim Lwpw: SNo (w + w).
An exact proof term for the current goal is SNo_add_SNo w w Hw1 Hw1.
We prove the intermediate claim L1a: z, z R_ (ordsucc k).
Apply SNoLt_trichotomy_or_impred x 1 Hx SNo_1 to the current goal.
Assume H4: x < 1.
We use 1 to witness the existential quantifier.
We will prove 1 R_ (ordsucc k).
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg 0 nat_0 (ordsucc k) (nat_ordsucc k (omega_nat_p k Hk)) (Subq_Empty (ordsucc k)) to the current goal.
Assume _.
Assume H5: zR_ 0, z R_ (ordsucc k).
We will prove 1 R_ (ordsucc k).
Apply H5 to the current goal.
We will prove 1 R_ 0.
We will prove 1 SNo_sqrtaux x sqrt_SNo_nonneg 0 1.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove 1 {sqrt_SNo_nonneg z|zSNoR x}.
rewrite the current goal using sqrt_SNo_nonneg_1 (from right to left).
Apply ReplI to the current goal.
We will prove 1 SNoR x.
We will prove 1 {zSNoS_ (SNoLev x)|x < z}.
Apply SepI to the current goal.
We will prove 1 SNoS_ (SNoLev x).
Apply SNoS_I2 1 x SNo_1 Hx to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
An exact proof term for the current goal is H2.
We will prove x < 1.
An exact proof term for the current goal is H4.
Assume H4: x = 1.
We will prove False.
Apply In_irref 1 to the current goal.
We will prove 1 1.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from right to left) at position 2.
We will prove 1 SNoLev 1.
rewrite the current goal using H4 (from right to left) at position 2.
An exact proof term for the current goal is H2.
Assume H4: 1 < x.
We prove the intermediate claim L1a1: 1 L_ k.
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg 0 nat_0 k (omega_nat_p k Hk) (Subq_Empty k) to the current goal.
Assume H5: zL_ 0, z L_ k.
Assume _.
We will prove 1 L_ k.
Apply H5 to the current goal.
We will prove 1 L_ 0.
We will prove 1 SNo_sqrtaux x sqrt_SNo_nonneg 0 0.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using sqrt_SNo_nonneg_1 (from right to left).
Apply ReplI to the current goal.
We will prove 1 SNoL_nonneg x.
We will prove 1 {wSNoL x|0 w}.
Apply SepI to the current goal.
We will prove 1 {zSNoS_ (SNoLev x)|z < x}.
Apply SepI to the current goal.
We will prove 1 SNoS_ (SNoLev x).
Apply SNoS_I2 1 x SNo_1 Hx to the current goal.
We will prove SNoLev 1 SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
An exact proof term for the current goal is H2.
We will prove 1 < x.
An exact proof term for the current goal is H4.
We will prove 0 1.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is SNoLt_0_1.
We prove the intermediate claim L1a2: 0 < 1 + 1.
rewrite the current goal using add_SNo_1_1_2 (from left to right).
An exact proof term for the current goal is SNoLt_0_2.
Set z to be the term (x + 1 * 1) :/: (1 + 1).
We use z to witness the existential quantifier.
We will prove z R_ (ordsucc k).
We will prove z SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove z R_ k SNo_sqrtauxset (L_ k) (L_ k) x SNo_sqrtauxset (R_ k) (R_ k) x.
Apply binunionI1 to the current goal.
Apply binunionI2 to the current goal.
We will prove z SNo_sqrtauxset (L_ k) (L_ k) x.
An exact proof term for the current goal is SNo_sqrtauxset_I (L_ k) (L_ k) x 1 L1a1 1 L1a1 L1a2.
Apply L1a to the current goal.
Let z be given.
Assume Hz: z R_ (ordsucc k).
We prove the intermediate claim Lz: z R.
An exact proof term for the current goal is famunionI ω R_ (ordsucc k) z (omega_ordsucc k Hk) Hz.
Apply L1R z Lz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: 0 z.
Assume Hz3: x < z * z.
We prove the intermediate claim Lwmz: SNo (w * z).
An exact proof term for the current goal is SNo_mul_SNo w z Hw1 Hz1.
We prove the intermediate claim Lwpz: SNo (w + z).
An exact proof term for the current goal is SNo_add_SNo w z Hw1 Hz1.
We prove the intermediate claim Lzpos: 0 < z.
Apply SNoLeE 0 z SNo_0 Hz1 Hz2 to the current goal.
Assume H4: 0 < z.
An exact proof term for the current goal is H4.
Assume H4: 0 = z.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLeLt_tra 0 x 0 SNo_0 Hx SNo_0 Hx2 to the current goal.
We will prove x < 0.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left).
rewrite the current goal using H4 (from left to right).
We will prove x < z * z.
An exact proof term for the current goal is Hz3.
We prove the intermediate claim Lwpzpos: 0 < w + z.
Apply SNoLtLe_tra 0 z (w + z) SNo_0 Hz1 Lwpz Lzpos to the current goal.
We will prove z w + z.
rewrite the current goal using add_SNo_0L z Hz1 (from right to left) at position 1.
We will prove 0 + z w + z.
An exact proof term for the current goal is add_SNo_Le1 0 z w SNo_0 Hz1 Hw1 Hw2.
We prove the intermediate claim Lwpzn0: w + z 0.
Assume H4: w + z = 0.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H4 (from right to left) at position 2.
An exact proof term for the current goal is Lwpzpos.
Set w' to be the term (x + w * z) :/: (w + z).
We prove the intermediate claim Lw': w' L_ (ordsucc (ordsucc k)).
We will prove w' SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc (ordsucc k)) 0.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg (ordsucc k) (nat_ordsucc k (omega_nat_p k Hk)) (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
We will prove w' L_ (ordsucc k) SNo_sqrtauxset (L_ (ordsucc k)) (R_ (ordsucc k)) x.
Apply binunionI2 to the current goal.
We will prove w' SNo_sqrtauxset (L_ (ordsucc k)) (R_ (ordsucc k)) x.
We will prove (x + w * z) :/: (w + z) SNo_sqrtauxset (L_ (ordsucc k)) (R_ (ordsucc k)) x.
We prove the intermediate claim LwLk: w L_ (ordsucc k).
We will prove w L_ (ordsucc k).
Apply SNo_sqrtaux_mon x sqrt_SNo_nonneg k (omega_nat_p k Hk) (ordsucc k) (nat_ordsucc k (omega_nat_p k Hk)) (ordsuccI1 k) to the current goal.
Assume H5: uL_ k, u L_ (ordsucc k).
Assume _.
Apply H5 to the current goal.
We will prove w L_ k.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is SNo_sqrtauxset_I (L_ (ordsucc k)) (R_ (ordsucc k)) x w LwLk z Hz Lwpzpos.
We use w' to witness the existential quantifier.
Apply andI to the current goal.
We will prove w' L.
An exact proof term for the current goal is famunionI ω L_ (ordsucc (ordsucc k)) w' (omega_ordsucc (ordsucc k) (omega_ordsucc k Hk)) Lw'.
We will prove w < w'.
rewrite the current goal using div_mul_SNo_invL w (w + z) Hw1 Lwpz Lwpzn0 (from right to left) at position 1.
We will prove (w * (w + z)) :/: (w + z) < w'.
We will prove (w * (w + z)) * recip_SNo (w + z) < (x + w * z) * recip_SNo (w + z).
Apply pos_mul_SNo_Lt' (w * (w + z)) (x + w * z) (recip_SNo (w + z)) (SNo_mul_SNo w (w + z) Hw1 Lwpz) (SNo_add_SNo x (w * z) Hx Lwmz) (SNo_recip_SNo (w + z) Lwpz) (recip_SNo_of_pos_is_pos (w + z) Lwpz Lwpzpos) to the current goal.
We will prove w * (w + z) < x + w * z.
rewrite the current goal using mul_SNo_distrL w w z Hw1 Hw1 Hz1 (from left to right).
We will prove w * w + w * z < x + w * z.
Apply add_SNo_Lt1 (w * w) (w * z) x Lwmw Lwmz Hx to the current goal.
We will prove w * w < x.
An exact proof term for the current goal is Hw3.
We will prove zR, z'R, z' < z.
Let z be given.
Assume Hz.
Apply famunionE_impred ω R_ z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume H3: z R_ k.
Apply L1R z Hz to the current goal.
Assume Hz1: SNo z.
Assume Hz2: 0 z.
Assume Hz3: x < z * z.
We prove the intermediate claim Lzmz: SNo (z * z).
An exact proof term for the current goal is SNo_mul_SNo z z Hz1 Hz1.
We prove the intermediate claim Lzpz: SNo (z + z).
An exact proof term for the current goal is SNo_add_SNo z z Hz1 Hz1.
We prove the intermediate claim Lzpos: 0 < z.
Apply SNoLeE 0 z SNo_0 Hz1 Hz2 to the current goal.
Assume H4: 0 < z.
An exact proof term for the current goal is H4.
Assume H4: 0 = z.
We will prove False.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLeLt_tra 0 x 0 SNo_0 Hx SNo_0 Hx2 to the current goal.
We will prove x < 0.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from right to left).
rewrite the current goal using H4 (from left to right).
We will prove x < z * z.
An exact proof term for the current goal is Hz3.
We prove the intermediate claim Lzpzpos: 0 < z + z.
rewrite the current goal using add_SNo_0L 0 SNo_0 (from right to left).
An exact proof term for the current goal is add_SNo_Lt3 0 0 z z SNo_0 SNo_0 Hz1 Hz1 Lzpos Lzpos.
We prove the intermediate claim Lzpzn0: z + z 0.
Assume H4: z + z = 0.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H4 (from right to left) at position 2.
An exact proof term for the current goal is Lzpzpos.
Set z' to be the term (x + z * z) :/: (z + z).
We prove the intermediate claim Lz': z' R_ (ordsucc k).
We will prove z' SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
We will prove z' R_ k SNo_sqrtauxset (L_ k) (L_ k) x SNo_sqrtauxset (R_ k) (R_ k) x.
Apply binunionI2 to the current goal.
We will prove z' SNo_sqrtauxset (R_ k) (R_ k) x.
Apply SNo_sqrtauxset_I to the current goal.
We will prove z R_ k.
An exact proof term for the current goal is H3.
We will prove z R_ k.
An exact proof term for the current goal is H3.
We will prove 0 < z + z.
An exact proof term for the current goal is Lzpzpos.
We use z' to witness the existential quantifier.
Apply andI to the current goal.
We will prove z' R.
An exact proof term for the current goal is famunionI ω R_ (ordsucc k) z' (omega_ordsucc k Hk) Lz'.
We will prove z' < z.
rewrite the current goal using div_mul_SNo_invL z (z + z) Hz1 Lzpz Lzpzn0 (from right to left) at position 5.
We will prove z' < (z * (z + z)) :/: (z + z).
We will prove (x + z * z) * recip_SNo (z + z) < (z * (z + z)) * recip_SNo (z + z).
Apply pos_mul_SNo_Lt' (x + z * z) (z * (z + z)) (recip_SNo (z + z)) (SNo_add_SNo x (z * z) Hx Lzmz) (SNo_mul_SNo z (z + z) Hz1 Lzpz) (SNo_recip_SNo (z + z) Lzpz) (recip_SNo_of_pos_is_pos (z + z) Lzpz Lzpzpos) to the current goal.
We will prove x + z * z < z * (z + z).
rewrite the current goal using mul_SNo_distrL z z z Hz1 Hz1 Hz1 (from left to right).
We will prove x + z * z < z * z + z * z.
Apply add_SNo_Lt1 x (z * z) (z * z) Hx Lzmz Lzmz to the current goal.
We will prove x < z * z.
An exact proof term for the current goal is Hz3.
Assume H2: SNoLev x 1.
We prove the intermediate claim L1_1: x = 1.
Use symmetry.
Apply SNo_eq 1 x SNo_1 Hx to the current goal.
We will prove SNoLev 1 = SNoLev x.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
We will prove 1 = SNoLev x.
Apply set_ext to the current goal.
Let u be given.
Assume Hu: u 1.
Apply cases_1 u Hu to the current goal.
We will prove 0 SNoLev x.
An exact proof term for the current goal is H1.
An exact proof term for the current goal is H2.
We will prove SNoEq_ (SNoLev 1) 1 x.
rewrite the current goal using ordinal_SNoLev 1 ordinal_1 (from left to right).
We will prove SNoEq_ 1 1 x.
Let u be given.
Assume Hu: u 1.
We will prove u 1 u x.
Apply iffI to the current goal.
Assume _.
Apply cases_1 u Hu to the current goal.
We will prove 0 x.
Apply dneg to the current goal.
Assume H3: 0 x.
Apply SNoLt_irref 0 to the current goal.
We will prove 0 < 0.
Apply SNoLeLt_tra 0 x 0 SNo_0 Hx SNo_0 Hx2 to the current goal.
We will prove x < 0.
Apply SNoLtI3 to the current goal.
We will prove SNoLev 0 SNoLev x.
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is H1.
We will prove SNoEq_ (SNoLev 0) x 0.
rewrite the current goal using SNoLev_0 (from left to right).
Let u be given.
Assume Hu: u 0.
We will prove False.
An exact proof term for the current goal is EmptyE u Hu.
rewrite the current goal using SNoLev_0 (from left to right).
An exact proof term for the current goal is H3.
Assume _.
An exact proof term for the current goal is Hu.
rewrite the current goal using L1_1 (from left to right).
rewrite the current goal using sqrt_SNo_nonneg_1 (from left to right).
We will prove 1 real.
An exact proof term for the current goal is real_1.
Assume H1: SNoLev x 0.
We prove the intermediate claim L1_0: x = 0.
Apply SNoLev_0_eq_0 x Hx to the current goal.
We will prove SNoLev x = 0.
Apply Empty_Subq_eq to the current goal.
An exact proof term for the current goal is H1.
rewrite the current goal using L1_0 (from left to right).
rewrite the current goal using sqrt_SNo_nonneg_0 (from left to right).
We will prove 0 real.
An exact proof term for the current goal is real_0.
Let x be given.
Assume Hx.
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.
An exact proof term for the current goal is L1 x Hx3 Hx1.
Proof:
Let x be given.
Assume Hx Hxnn.
Apply real_E x Hx to the current goal.
Assume Hx1: SNo x.
Assume Hx2: SNoLev x ordsucc ω.
Assume Hx3: x SNoS_ (ordsucc ω).
Assume Hx4: - ω < x.
Assume Hx5: x < ω.
Assume Hx6: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Assume Hx7: kω, qSNoS_ ω, q < x x < q + eps_ k.
Apply sqrt_SNo_nonneg_prop1 x Hx1 Hxnn to the current goal.
Assume H.
Apply H to the current goal.
Assume H1: SNo (sqrt_SNo_nonneg x).
Assume H2: 0 sqrt_SNo_nonneg x.
Apply ordsuccE ω (SNoLev x) Hx2 to the current goal.
Assume H4: SNoLev x ω.
We will prove sqrt_SNo_nonneg x real.
Apply sqrt_SNo_nonneg_SNoS_omega to the current goal.
We will prove x SNoS_ ω.
Apply SNoS_I ω omega_ordinal x (SNoLev x) H4 to the current goal.
We will prove SNo_ (SNoLev x) x.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hx1.
We will prove 0 x.
An exact proof term for the current goal is Hxnn.
Assume H4: SNoLev x = ω.
We will prove sqrt_SNo_nonneg x real.
rewrite the current goal using sqrt_SNo_nonneg_eq x Hx1 (from left to right).
Set L_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 0.
Set R_ to be the term λk : setSNo_sqrtaux x sqrt_SNo_nonneg k 1.
Set L to be the term kωL_ k.
Set R to be the term kωR_ k.
We will prove SNoCut L R real.
We prove the intermediate claim LLI: kω, SNo_sqrtaux x sqrt_SNo_nonneg k 0 L.
Let k be given.
Assume Hk.
Let w be given.
Assume Hw.
An exact proof term for the current goal is famunionI ω (λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0) k w Hk Hw.
We prove the intermediate claim LRI: kω, SNo_sqrtaux x sqrt_SNo_nonneg k 1 R.
Let k be given.
Assume Hk.
Let z be given.
Assume Hz.
An exact proof term for the current goal is famunionI ω (λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1) k z Hk Hz.
We prove the intermediate claim LLE: wL, ∀p : prop, (kω, w SNo_sqrtaux x sqrt_SNo_nonneg k 0p)p.
Let w be given.
Assume Hw: w L.
Let p be given.
Assume Hp.
Apply famunionE_impred ω (λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 0) w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w SNo_sqrtaux x sqrt_SNo_nonneg k 0.
An exact proof term for the current goal is Hp k Hk Hwk.
We prove the intermediate claim LRE: zR, ∀p : prop, (kω, z SNo_sqrtaux x sqrt_SNo_nonneg k 1p)p.
Let z be given.
Assume Hz: z R.
Let p be given.
Assume Hp.
Apply famunionE_impred ω (λk ⇒ SNo_sqrtaux x sqrt_SNo_nonneg k 1) z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z SNo_sqrtaux x sqrt_SNo_nonneg k 1.
An exact proof term for the current goal is Hp k Hk Hzk.
We prove the intermediate claim L_L_Subq: ∀k, nat_p kL_ k L_ (ordsucc k).
Let k be given.
Assume Hk.
Let w be given.
Assume Hw: w L_ k.
We will prove w SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 0.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hw.
We prove the intermediate claim L_R_Subq: ∀k, nat_p kR_ k R_ (ordsucc k).
Let k be given.
Assume Hk.
Let w be given.
Assume Hw: w R_ k.
We will prove w SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI1 to the current goal.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hw.
We prove the intermediate claim L_L_R_Subq: ∀k, nat_p kk'k, L_ k' L_ k R_ k' R_ k.
Apply nat_ind to the current goal.
Let k' be given.
Assume Hk': k' 0.
We will prove False.
An exact proof term for the current goal is EmptyE k' Hk'.
Let k be given.
Assume Hk.
Assume IHk: k'k, L_ k' L_ k R_ k' R_ k.
Let k' be given.
Assume Hk': k' ordsucc k.
Apply ordsuccE k k' Hk' to the current goal.
Assume Hk'2: k' k.
Apply IHk k' Hk'2 to the current goal.
Assume IHkL IHkR.
Apply andI to the current goal.
We will prove L_ k' L_ (ordsucc k).
Apply Subq_tra (L_ k') (L_ k) (L_ (ordsucc k)) IHkL to the current goal.
We will prove L_ k L_ (ordsucc k).
An exact proof term for the current goal is L_L_Subq k Hk.
We will prove R_ k' R_ (ordsucc k).
Apply Subq_tra (R_ k') (R_ k) (R_ (ordsucc k)) IHkR to the current goal.
We will prove R_ k R_ (ordsucc k).
An exact proof term for the current goal is L_R_Subq k Hk.
Assume Hk'2: k' = k.
rewrite the current goal using Hk'2 (from left to right).
Apply andI to the current goal.
We will prove L_ k L_ (ordsucc k).
An exact proof term for the current goal is L_L_Subq k Hk.
We will prove R_ k R_ (ordsucc k).
An exact proof term for the current goal is L_R_Subq k Hk.
We prove the intermediate claim L_L_R_real: ∀k, nat_p kL_ k {wreal|0 w} R_ k {wreal|0 w}.
Apply nat_ind to the current goal.
rewrite the current goal using SNo_sqrtaux_0 (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
Let w' be given.
Assume Hw'.
Apply ReplE_impred (SNoL_nonneg x) sqrt_SNo_nonneg w' Hw' to the current goal.
Let w be given.
Assume Hw: w SNoL_nonneg x.
Assume Hw'w: w' = sqrt_SNo_nonneg w.
rewrite the current goal using Hw'w (from left to right).
We will prove sqrt_SNo_nonneg w {wreal|0 w}.
Apply SepE (SNoL x) (λw ⇒ 0 w) w Hw to the current goal.
Assume Hw1: w SNoL x.
Assume Hwnneg: 0 w.
Apply SNoL_E x Hx1 w Hw1 to the current goal.
Assume Hw1a Hw1b Hw1c.
Apply SepI to the current goal.
Apply sqrt_SNo_nonneg_SNoS_omega to the current goal.
We will prove w SNoS_ ω.
Apply SNoS_I ω omega_ordinal w (SNoLev w) to the current goal.
We will prove SNoLev w ω.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is Hw1b.
We will prove SNo_ (SNoLev w) w.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hw1a.
We will prove 0 w.
An exact proof term for the current goal is Hwnneg.
We will prove 0 sqrt_SNo_nonneg w.
An exact proof term for the current goal is sqrt_SNo_nonneg_nonneg w Hw1a Hwnneg.
Let z' be given.
Assume Hz'.
Apply ReplE_impred (SNoR x) sqrt_SNo_nonneg z' Hz' to the current goal.
Let z be given.
Assume Hz: z SNoR x.
Assume Hz'z: z' = sqrt_SNo_nonneg z.
rewrite the current goal using Hz'z (from left to right).
We will prove sqrt_SNo_nonneg z {zreal|0 z}.
Apply SNoR_E x Hx1 z Hz to the current goal.
Assume Hz1 Hz2 Hz3.
Apply SepI to the current goal.
Apply sqrt_SNo_nonneg_SNoS_omega to the current goal.
We will prove z SNoS_ ω.
Apply SNoS_I ω omega_ordinal z (SNoLev z) to the current goal.
We will prove SNoLev z ω.
rewrite the current goal using H4 (from right to left).
An exact proof term for the current goal is Hz2.
We will prove SNo_ (SNoLev z) z.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is Hz1.
We will prove 0 z.
Apply SNoLtLe to the current goal.
We will prove 0 < z.
An exact proof term for the current goal is SNoLeLt_tra 0 x z SNo_0 Hx1 Hz1 Hxnn Hz3.
We will prove 0 sqrt_SNo_nonneg z.
Apply sqrt_SNo_nonneg_nonneg z Hz1 to the current goal.
We will prove 0 z.
Apply SNoLtLe to the current goal.
We will prove 0 < z.
An exact proof term for the current goal is SNoLeLt_tra 0 x z SNo_0 Hx1 Hz1 Hxnn Hz3.
Let k be given.
Assume Hk.
Assume IHk.
Apply IHk to the current goal.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k Hk (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply andI to the current goal.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHk0.
Apply SNo_sqrtauxset_real_nonneg to the current goal.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hxnn.
Apply binunion_Subq_min to the current goal.
Apply binunion_Subq_min to the current goal.
An exact proof term for the current goal is IHk1.
Apply SNo_sqrtauxset_real_nonneg to the current goal.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is IHk0.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hxnn.
Apply SNo_sqrtauxset_real_nonneg to the current goal.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is IHk1.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is Hxnn.
We prove the intermediate claim LLsR: L real.
Let w be given.
Assume Hw.
Apply LLE w Hw to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hwk: w L_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume H _.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) w (H w Hwk).
We prove the intermediate claim LRsR: R real.
Let z be given.
Assume Hz.
Apply LRE z Hz to the current goal.
Let k be given.
Assume Hk: k ω.
Assume Hzk: z R_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume _ H.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) z (H z Hzk).
We prove the intermediate claim LLR: SNoCutP L R.
An exact proof term for the current goal is SNo_sqrt_SNo_SNoCutP x Hx1 Hxnn.
Apply SNoCutP_SNoCut_impred L R LLR to the current goal.
rewrite the current goal using sqrt_SNo_nonneg_eq x Hx1 (from right to left).
Assume HLR1 HLR2.
Assume HLR3: wL, w < sqrt_SNo_nonneg x.
Assume HLR4: zR, sqrt_SNo_nonneg x < z.
Assume HLR5.
We prove the intermediate claim L0Lx: 0 SNoLev x.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is nat_p_omega 0 nat_0.
We prove the intermediate claim L1Lx: 1 SNoLev x.
rewrite the current goal using H4 (from left to right).
An exact proof term for the current goal is nat_p_omega 1 nat_1.
We prove the intermediate claim LLne: L 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_Lnonempty x Hx1 Hxnn L0Lx.
We prove the intermediate claim LRne: R 0.
An exact proof term for the current goal is sqrt_SNo_nonneg_Rnonempty x Hx1 Hxnn L1Lx.
We will prove SNoCut L R real.
We prove the intermediate claim LRE': zR, SNo z 0 < z.
Let z be given.
Assume Hz.
We prove the intermediate claim LzS: SNo z.
An exact proof term for the current goal is real_SNo z (LRsR z Hz).
Apply andI to the current goal.
An exact proof term for the current goal is LzS.
Apply SNoLeLt_tra 0 (sqrt_SNo_nonneg x) z SNo_0 H1 LzS to the current goal.
We will prove 0 sqrt_SNo_nonneg x.
An exact proof term for the current goal is H2.
We will prove sqrt_SNo_nonneg x < z.
An exact proof term for the current goal is HLR4 z Hz.
We prove the intermediate claim LLnomax: wL, w'L, w < w'.
Let w be given.
Assume Hw.
Apply LLE w Hw to the current goal.
Let k be given.
Assume Hk.
Assume Hwk: w L_ k.
Apply L_L_R_real k (omega_nat_p k Hk) to the current goal.
Assume H _.
Apply SepE real (λw ⇒ 0 w) w (H w Hwk) to the current goal.
Assume HwR: w real.
Assume Hwnn: 0 w.
We prove the intermediate claim Lw: SNo w.
An exact proof term for the current goal is real_SNo w HwR.
Apply xm (z, z R) to the current goal.
Assume H5.
Apply H5 to the current goal.
Let z be given.
Assume Hz: z R.
Apply LRE z Hz to the current goal.
Let k' be given.
Assume Hk'.
Assume Hzk': z R_ k'.
Apply LRE' z Hz to the current goal.
Assume HzS: SNo z.
Assume Hzpos: 0 < z.
Apply L_L_R_real k' (omega_nat_p k' Hk') to the current goal.
Assume _ H.
We prove the intermediate claim LzR: z real.
An exact proof term for the current goal is SepE1 real (λw ⇒ 0 w) z (H z Hzk').
We prove the intermediate claim Lz: SNo z.
An exact proof term for the current goal is real_SNo z LzR.
We prove the intermediate claim Lzpos: 0 < z.
Apply SNoLeLt_tra 0 (sqrt_SNo_nonneg x) z SNo_0 H1 Lz to the current goal.
We will prove 0 sqrt_SNo_nonneg x.
An exact proof term for the current goal is H2.
We will prove sqrt_SNo_nonneg x < z.
An exact proof term for the current goal is HLR4 z Hz.
We prove the intermediate claim Lwz: SNo (w + z).
An exact proof term for the current goal is SNo_add_SNo w z Lw Lz.
We prove the intermediate claim Lwmz: SNo (w * z).
An exact proof term for the current goal is SNo_mul_SNo w z Lw Lz.
We prove the intermediate claim Lwzpos: 0 < w + z.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
Apply add_SNo_Lt3b 0 0 w z SNo_0 SNo_0 Lw Lz Hwnn to the current goal.
We will prove 0 < z.
An exact proof term for the current goal is Lzpos.
Set w' to be the term (x + w * z) :/: (w + z).
We use w' to witness the existential quantifier.
Apply andI to the current goal.
We will prove w' L.
We prove the intermediate claim Lwzk'': k''ω, w L_ k'' z R_ k''.
Apply ordinal_trichotomy_or_impred k k' (nat_p_ordinal k (omega_nat_p k Hk)) (nat_p_ordinal k' (omega_nat_p k' Hk')) to the current goal.
Assume H6: k k'.
We use k' to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk'.
Apply andI to the current goal.
We will prove w L_ k'.
Apply L_L_R_Subq k' (omega_nat_p k' Hk') k H6 to the current goal.
Assume H _.
An exact proof term for the current goal is H w Hwk.
An exact proof term for the current goal is Hzk'.
Assume H6: k = k'.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
Apply andI to the current goal.
An exact proof term for the current goal is Hwk.
We will prove z R_ k.
rewrite the current goal using H6 (from left to right).
An exact proof term for the current goal is Hzk'.
Assume H6: k' k.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
Apply andI to the current goal.
An exact proof term for the current goal is Hwk.
We will prove z R_ k.
Apply L_L_R_Subq k (omega_nat_p k Hk) k' H6 to the current goal.
Assume _ H.
An exact proof term for the current goal is H z Hzk'.
Apply Lwzk'' to the current goal.
Let k'' be given.
Assume H.
Apply H to the current goal.
Assume Hk'': k'' ω.
Assume H.
Apply H to the current goal.
Assume Hwk'': w L_ k''.
Assume Hzk'': z R_ k''.
We prove the intermediate claim Lw'LSk'': w' L_ (ordsucc k'').
We will prove w' SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k'') 0.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k'' (omega_nat_p k'' Hk'') (from left to right).
rewrite the current goal using tuple_2_0_eq (from left to right).
Apply binunionI2 to the current goal.
We will prove w' SNo_sqrtauxset (L_ k'') (R_ k'') x.
Apply SNo_sqrtauxset_I to the current goal.
An exact proof term for the current goal is Hwk''.
An exact proof term for the current goal is Hzk''.
We will prove 0 < w + z.
An exact proof term for the current goal is Lwzpos.
An exact proof term for the current goal is famunionI ω L_ (ordsucc k'') w' (omega_ordsucc k'' Hk'') Lw'LSk''.
We will prove w < w'.
We will prove w < (x + w * z) :/: (w + z).
Apply div_SNo_pos_LtR (x + w * z) (w + z) w (SNo_add_SNo x (w * z) Hx1 Lwmz) Lwz Lw Lwzpos to the current goal.
We will prove w * (w + z) < x + w * z.
rewrite the current goal using mul_SNo_distrL w w z Lw Lw HzS (from left to right).
We will prove w * w + w * z < x + w * z.
Apply add_SNo_Lt1 (w * w) (w * z) x (SNo_mul_SNo w w Lw Lw) (SNo_mul_SNo w z Lw HzS) Hx1 to the current goal.
We will prove w * w < x.
rewrite the current goal using H3 (from right to left).
We will prove w * w < sqrt_SNo_nonneg x * sqrt_SNo_nonneg x.
We prove the intermediate claim Lwsx: w < sqrt_SNo_nonneg x.
An exact proof term for the current goal is HLR3 w Hw.
Apply SNoLeE 0 w SNo_0 Lw Hwnn to the current goal.
Assume H6: 0 < w.
An exact proof term for the current goal is pos_mul_SNo_Lt2 w w (sqrt_SNo_nonneg x) (sqrt_SNo_nonneg x) Lw Lw H1 H1 H6 H6 Lwsx Lwsx.
Assume H6: 0 = w.
rewrite the current goal using H6 (from right to left).
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from left to right).
We will prove 0 < sqrt_SNo_nonneg x * sqrt_SNo_nonneg x.
We prove the intermediate claim Lsxpos: 0 < sqrt_SNo_nonneg x.
rewrite the current goal using H6 (from left to right).
An exact proof term for the current goal is Lwsx.
An exact proof term for the current goal is mul_SNo_pos_pos (sqrt_SNo_nonneg x) (sqrt_SNo_nonneg x) H1 H1 Lsxpos Lsxpos.
Assume H5: ¬ z, z R.
Apply LRne to the current goal.
Apply Empty_eq to the current goal.
Let z be given.
Assume Hz.
Apply H5 to the current goal.
We use z to witness the existential quantifier.
An exact proof term for the current goal is Hz.
We prove the intermediate claim LRnomin: zR, z'R, z' < z.
Let z be given.
Assume Hz.
Apply LRE z Hz to the current goal.
Let k be given.
Assume Hk.
Assume Hzk: z R_ k.
Apply LRE' z Hz to the current goal.
Assume HzS: SNo z.
Assume Hzpos: 0 < z.
We prove the intermediate claim Lzz: SNo (z + z).
An exact proof term for the current goal is SNo_add_SNo z z HzS HzS.
We prove the intermediate claim Lzzpos: 0 < z + z.
rewrite the current goal using add_SNo_0R 0 SNo_0 (from right to left).
We will prove 0 + 0 < z + z.
An exact proof term for the current goal is add_SNo_Lt3 0 0 z z SNo_0 SNo_0 HzS HzS Hzpos Hzpos.
We prove the intermediate claim Lzzn0: z + z 0.
Assume H5.
Apply SNoLt_irref 0 to the current goal.
rewrite the current goal using H5 (from right to left) at position 2.
An exact proof term for the current goal is Lzzpos.
We prove the intermediate claim Lzmz: SNo (z * z).
An exact proof term for the current goal is SNo_mul_SNo z z HzS HzS.
Set z' to be the term (x + z * z) :/: (z + z).
We prove the intermediate claim Lz': z' R_ (ordsucc k).
We will prove z' SNo_sqrtaux x sqrt_SNo_nonneg (ordsucc k) 1.
rewrite the current goal using SNo_sqrtaux_S x sqrt_SNo_nonneg k (omega_nat_p k Hk) (from left to right).
rewrite the current goal using tuple_2_1_eq (from left to right).
Apply binunionI2 to the current goal.
We will prove (x + z * z) :/: (z + z) SNo_sqrtauxset (SNo_sqrtaux x sqrt_SNo_nonneg k 1) (SNo_sqrtaux x sqrt_SNo_nonneg k 1) x.
Apply SNo_sqrtauxset_I to the current goal.
We will prove z R_ k.
An exact proof term for the current goal is Hzk.
We will prove z R_ k.
An exact proof term for the current goal is Hzk.
We will prove 0 < z + z.
An exact proof term for the current goal is Lzzpos.
We prove the intermediate claim Lz'R: z' R.
An exact proof term for the current goal is famunionI ω R_ (ordsucc k) z' (omega_ordsucc k Hk) Lz'.
We prove the intermediate claim Lz'S: SNo z'.
An exact proof term for the current goal is real_SNo z' (LRsR z' Lz'R).
We use z' to witness the existential quantifier.
Apply andI to the current goal.
We will prove z' R.
An exact proof term for the current goal is Lz'R.
We will prove z' < z.
We will prove (x + z * z) :/: (z + z) < z.
Apply div_SNo_pos_LtL (x + z * z) (z + z) z (SNo_add_SNo x (z * z) Hx1 Lzmz) Lzz HzS Lzzpos to the current goal.
We will prove x + z * z < z * (z + z).
rewrite the current goal using mul_SNo_distrL z z z HzS HzS HzS (from left to right).
We will prove x + z * z < z * z + z * z.
Apply add_SNo_Lt1 x (z * z) (z * z) Hx1 Lzmz Lzmz to the current goal.
We will prove x < z * z.
rewrite the current goal using H3 (from right to left).
We will prove sqrt_SNo_nonneg x * sqrt_SNo_nonneg x < z * z.
Apply SNoLeE 0 (sqrt_SNo_nonneg x) SNo_0 H1 H2 to the current goal.
Assume Hsxpos: 0 < sqrt_SNo_nonneg x.
An exact proof term for the current goal is pos_mul_SNo_Lt2 (sqrt_SNo_nonneg x) (sqrt_SNo_nonneg x) z z H1 H1 HzS HzS Hsxpos Hsxpos (HLR4 z Hz) (HLR4 z Hz).
Assume Hsx0: 0 = sqrt_SNo_nonneg x.
rewrite the current goal using Hsx0 (from right to left).
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from left to right).
We will prove 0 < z * z.
An exact proof term for the current goal is mul_SNo_pos_pos z z HzS HzS Hzpos Hzpos.
An exact proof term for the current goal is real_SNoCut L LLsR R LRsR LLR LLne LRne LLnomax LRnomin.
Theorem. (real_Archimedean) The following is provable:
x yreal, 0 < x0 ynω, y n * x
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Assume Hxpos Hynneg.
Apply real_E x Hx to the current goal.
Assume Hx1 Hx2 Hx3 Hx4 Hx5.
Assume Hx6: qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Assume Hx7.
We prove the intermediate claim L1: nω, eps_ n x.
Apply dneg to the current goal.
Assume HC: ¬ (nω, eps_ n x).
We prove the intermediate claim L1a: 0 = x.
Apply Hx6 0 (omega_SNoS_omega 0 (nat_p_omega 0 nat_0)) to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (0 + - x) < eps_ k.
rewrite the current goal using add_SNo_0L (- x) (SNo_minus_SNo x Hx1) (from left to right).
We will prove abs_SNo (- x) < eps_ k.
rewrite the current goal using abs_SNo_minus x Hx1 (from left to right).
We will prove abs_SNo x < eps_ k.
rewrite the current goal using pos_abs_SNo x Hxpos (from left to right).
We will prove x < eps_ k.
Apply SNoLtLe_or x (eps_ k) Hx1 (SNo_eps_ k Hk) to the current goal.
Assume H1.
An exact proof term for the current goal is H1.
Assume H1: eps_ k x.
We will prove False.
Apply HC to the current goal.
We use k to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hk.
An exact proof term for the current goal is H1.
Apply SNoLt_irref x to the current goal.
rewrite the current goal using L1a (from right to left) at position 1.
An exact proof term for the current goal is Hxpos.
Apply L1 to the current goal.
Let n be given.
Assume Hn.
Apply Hn to the current goal.
Assume Hn1: n ω.
Assume Hn2: eps_ n x.
We prove the intermediate claim L2n: nat_p (2 ^ n).
Apply nat_exp_SNo_nat to the current goal.
An exact proof term for the current goal is nat_2.
An exact proof term for the current goal is omega_nat_p n Hn1.
We prove the intermediate claim L2nb: SNo (2 ^ n).
An exact proof term for the current goal is SNo_exp_SNo_nat 2 SNo_2 n (omega_nat_p n Hn1).
We prove the intermediate claim L2nc: 0 2 ^ n.
Apply ordinal_SNoLev_max_2 to the current goal.
We will prove ordinal (2 ^ n).
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is L2n.
An exact proof term for the current goal is SNo_0.
We will prove SNoLev 0 ordsucc (2 ^ n).
rewrite the current goal using SNoLev_0 (from left to right).
We will prove 0 ordsucc (2 ^ n).
Apply nat_0_in_ordsucc to the current goal.
An exact proof term for the current goal is L2n.
We prove the intermediate claim L2: 1 2 ^ n * x.
rewrite the current goal using mul_SNo_eps_power_2' n (omega_nat_p n Hn1) (from right to left) at position 1.
We will prove 2 ^ n * eps_ n 2 ^ n * x.
Apply nonneg_mul_SNo_Le (2 ^ n) (eps_ n) x L2nb L2nc (SNo_eps_ n Hn1) Hx1 to the current goal.
We will prove eps_ n x.
An exact proof term for the current goal is Hn2.
Apply real_E y Hy to the current goal.
Assume Hy1 Hy2.
Assume Hy3: y SNoS_ (ordsucc ω).
Assume Hy4.
Assume Hy5: y < ω.
Assume Hy6 Hy7.
Apply SNoS_ordsucc_omega_bdd_above y Hy3 Hy5 to the current goal.
Let N be given.
Assume HN.
Apply HN to the current goal.
Assume HN1: N ω.
Assume HN2: y < N.
We use (N * 2 ^ n) to witness the existential quantifier.
Apply andI to the current goal.
We will prove N * 2 ^ n ω.
We will prove N * 2 ^ n ω.
rewrite the current goal using mul_nat_mul_SNo N HN1 (2 ^ n) (nat_p_omega (2 ^ n) L2n) (from right to left).
We will prove mul_nat N (2 ^ n) ω.
Apply nat_p_omega to the current goal.
Apply mul_nat_p to the current goal.
An exact proof term for the current goal is omega_nat_p N HN1.
An exact proof term for the current goal is L2n.
We will prove y (N * 2 ^ n) * x.
We prove the intermediate claim LN1: SNo N.
An exact proof term for the current goal is omega_SNo N HN1.
We prove the intermediate claim LN2n: SNo (N * 2 ^ n).
Apply SNo_mul_SNo to the current goal.
An exact proof term for the current goal is LN1.
An exact proof term for the current goal is L2nb.
Apply SNoLe_tra y N ((N * 2 ^ n) * x) Hy1 LN1 (SNo_mul_SNo (N * 2 ^ n) x LN2n Hx1) to the current goal.
We will prove y N.
Apply SNoLtLe to the current goal.
An exact proof term for the current goal is HN2.
We will prove N (N * 2 ^ n) * x.
rewrite the current goal using mul_SNo_oneR N LN1 (from right to left) at position 1.
We will prove N * 1 (N * 2 ^ n) * x.
rewrite the current goal using mul_SNo_assoc N (2 ^ n) x LN1 L2nb Hx1 (from right to left).
We will prove N * 1 N * (2 ^ n * x).
We prove the intermediate claim LN2: 0 N.
Apply ordinal_SNoLev_max_2 to the current goal.
We will prove ordinal N.
Apply nat_p_ordinal to the current goal.
An exact proof term for the current goal is omega_nat_p N HN1.
An exact proof term for the current goal is SNo_0.
We will prove SNoLev 0 ordsucc N.
rewrite the current goal using SNoLev_0 (from left to right).
We will prove 0 ordsucc N.
Apply nat_0_in_ordsucc to the current goal.
An exact proof term for the current goal is omega_nat_p N HN1.
Apply nonneg_mul_SNo_Le N 1 (2 ^ n * x) LN1 LN2 SNo_1 to the current goal.
We will prove SNo (2 ^ n * x).
An exact proof term for the current goal is SNo_mul_SNo (2 ^ n) x L2nb Hx1.
We will prove 1 2 ^ n * x.
An exact proof term for the current goal is L2.
Theorem. (real_complete1) The following is provable:
Proof:
Let a be given.
Assume Ha.
Let b be given.
Assume Hb H1.
Apply dneg to the current goal.
Assume HC: ¬ (xreal, nω, a n x x b n).
We will prove False.
We prove the intermediate claim La1: nω, SNo (a n).
Let n be given.
Assume Hn.
Apply real_E (a n) (ap_Pi ω (λ_ ⇒ real) a n Ha Hn) to the current goal.
Assume H _ _ _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim Lb1: nω, SNo (b n).
Let n be given.
Assume Hn.
Apply real_E (b n) (ap_Pi ω (λ_ ⇒ real) b n Hb Hn) to the current goal.
Assume H _ _ _ _ _ _.
An exact proof term for the current goal is H.
We prove the intermediate claim La2: ∀n, nat_p nmn, a m a n.
Apply nat_ind to the current goal.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is EmptyE m Hm.
Let n be given.
Assume Hn.
Assume IHn: mn, a m a n.
Let m be given.
Assume Hm: m ordsucc n.
We will prove a m a (ordsucc n).
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
We prove the intermediate claim LSn: ordsucc n ω.
An exact proof term for the current goal is omega_ordsucc n Ln.
We prove the intermediate claim Lm: m ω.
An exact proof term for the current goal is omega_TransSet (ordsucc n) LSn m Hm.
We prove the intermediate claim LanSn: a n a (ordsucc n).
Apply H1 n Ln to the current goal.
Assume H _.
Apply H to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Apply ordsuccE n m Hm to the current goal.
Assume H2: m n.
Apply SNoLe_tra (a m) (a n) (a (ordsucc n)) (La1 m Lm) (La1 n Ln) (La1 (ordsucc n) LSn) to the current goal.
We will prove a m a n.
An exact proof term for the current goal is IHn m H2.
An exact proof term for the current goal is LanSn.
Assume H2: m = n.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is LanSn.
We prove the intermediate claim Lb2: ∀n, nat_p nmn, b n b m.
Apply nat_ind to the current goal.
Let m be given.
Assume Hm: m 0.
We will prove False.
An exact proof term for the current goal is EmptyE m Hm.
Let n be given.
Assume Hn.
Assume IHn: mn, b n b m.
Let m be given.
Assume Hm: m ordsucc n.
We will prove b (ordsucc n) b m.
We prove the intermediate claim Ln: n ω.
An exact proof term for the current goal is nat_p_omega n Hn.
We prove the intermediate claim LSn: ordsucc n ω.
An exact proof term for the current goal is omega_ordsucc n Ln.
We prove the intermediate claim Lm: m ω.
An exact proof term for the current goal is omega_TransSet (ordsucc n) LSn m Hm.
We prove the intermediate claim LbSnn: b (ordsucc n) b n.
Apply H1 n Ln to the current goal.
Assume _ H.
An exact proof term for the current goal is H.
Apply ordsuccE n m Hm to the current goal.
Assume H2: m n.
Apply SNoLe_tra (b (ordsucc n)) (b n) (b m) (Lb1 (ordsucc n) LSn) (Lb1 n Ln) (Lb1 m Lm) to the current goal.
An exact proof term for the current goal is LbSnn.
We will prove b n b m.
An exact proof term for the current goal is IHn m H2.
Assume H2: m = n.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is LbSnn.
We prove the intermediate claim Lab: n mω, a n b m.
Let n be given.
Assume Hn.
Let m be given.
Assume Hm.
We prove the intermediate claim Ln: nat_p n.
An exact proof term for the current goal is omega_nat_p n Hn.
We prove the intermediate claim Lm: nat_p m.
An exact proof term for the current goal is omega_nat_p m Hm.
We prove the intermediate claim Labn: a n b n.
Apply H1 n Hn to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Apply ordinal_trichotomy_or_impred n m (nat_p_ordinal n Ln) (nat_p_ordinal m Lm) to the current goal.
Assume H2: n m.
We will prove a n b m.
Apply SNoLe_tra (a n) (a m) (b m) (La1 n Hn) (La1 m Hm) (Lb1 m Hm) to the current goal.
We will prove a n a m.
An exact proof term for the current goal is La2 m Lm n H2.
We will prove a m b m.
Apply H1 m Hm to the current goal.
Assume H _.
Apply H to the current goal.
Assume H _.
An exact proof term for the current goal is H.
Assume H2: n = m.
rewrite the current goal using H2 (from right to left).
We will prove a n b n.
An exact proof term for the current goal is Labn.
Assume H2: m n.
We will prove a n b m.
Apply SNoLe_tra (a n) (b n) (b m) (La1 n Hn) (Lb1 n Hn) (Lb1 m Hm) to the current goal.
We will prove a n b n.
An exact proof term for the current goal is Labn.
We will prove b n b m.
An exact proof term for the current goal is Lb2 n Ln m H2.
Set L to be the term {qSNoS_ ω|nω, q < a n}.
Set R to be the term {qSNoS_ ω|nω, b n < q}.
Set x to be the term SNoCut L R.
We prove the intermediate claim LL: L SNoS_ ω.
An exact proof term for the current goal is Sep_Subq (SNoS_ ω) (λq ⇒ nω, q < a n).
We prove the intermediate claim LR: R SNoS_ ω.
An exact proof term for the current goal is Sep_Subq (SNoS_ ω) (λq ⇒ nω, b n < q).
We prove the intermediate claim LLR: SNoCutP L R.
We will prove (wL, SNo w) (yR, SNo y) (wL, yR, w < y).
Apply and3I to the current goal.
Let w be given.
Assume Hw: w L.
Apply SepE (SNoS_ ω) (λq ⇒ mω, q < a m) w Hw to the current goal.
Assume H2: w SNoS_ ω.
Assume H3.
Apply H3 to the current goal.
Let n be given.
Assume H3.
Apply H3 to the current goal.
Assume Hn: n ω.
Assume H3: w < a n.
Apply SNoS_E2 ω omega_ordinal w H2 to the current goal.
Assume Hw1 Hw2 Hw3 Hw4.
An exact proof term for the current goal is Hw3.
Let z be given.
Assume Hz: z R.
Apply SepE (SNoS_ ω) (λq ⇒ mω, b m < q) z Hz to the current goal.
Assume H2: z SNoS_ ω.
Assume H3.
Apply H3 to the current goal.
Let m be given.
Assume H3.
Apply H3 to the current goal.
Assume Hm: m ω.
Assume H3: b m < z.
Apply SNoS_E2 ω omega_ordinal z H2 to the current goal.
Assume Hz1 Hz2 Hz3 Hz4.
An exact proof term for the current goal is Hz3.
Let w be given.
Assume Hw: w L.
Let z be given.
Assume Hz: z R.
Apply SepE (SNoS_ ω) (λq ⇒ mω, q < a m) w Hw to the current goal.
Assume H2: w SNoS_ ω.
Assume H3.
Apply H3 to the current goal.
Let n be given.
Assume H3.
Apply H3 to the current goal.
Assume Hn: n ω.
Assume H3: w < a n.
Apply SNoS_E2 ω omega_ordinal w H2 to the current goal.
Assume Hw1 Hw2 Hw3 Hw4.
Apply SepE (SNoS_ ω) (λq ⇒ mω, b m < q) z Hz to the current goal.
Assume H4: z SNoS_ ω.
Assume H5.
Apply H5 to the current goal.
Let m be given.
Assume H5.
Apply H5 to the current goal.
Assume Hm: m ω.
Assume H5: b m < z.
Apply SNoS_E2 ω omega_ordinal z H4 to the current goal.
Assume Hz1 Hz2 Hz3 Hz4.
We will prove w < z.
Apply SNoLt_tra w (a n) z Hw3 (La1 n Hn) Hz3 H3 to the current goal.
We will prove a n < z.
Apply SNoLeLt_tra (a n) (b m) z (La1 n Hn) (Lb1 m Hm) Hz3 to the current goal.
We will prove a n b m.
An exact proof term for the current goal is Lab n Hn m Hm.
We will prove b m < z.
An exact proof term for the current goal is H5.
Apply SNoCutP_SNoCut_impred L R LLR to the current goal.
Assume HLR1: SNo (SNoCut L R).
Assume HLR2: SNoLev (SNoCut L R) ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))).
Assume HLR3: wL, w < SNoCut L R.
Assume HLR4: yR, SNoCut L R < y.
Assume HLR5: ∀z, SNo z(xL, x < z)(yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z.
We prove the intermediate claim Lax: nω, a n x.
Let n be given.
Assume Hn.
Apply SNo_approx_real_rep (a n) (ap_Pi ω (λ_ ⇒ real) a n Ha Hn) to the current goal.
Let f be given.
Assume Hf.
Let g be given.
Assume Hg Hf1 Hf2 Hf3 Hg1 Hg2 Hg3 Hfg Hanfg.
rewrite the current goal using Hanfg (from left to right).
We will prove SNoCut {f m|mω} {g m|mω} SNoCut L R.
Apply SNoCut_Le {f m|mω} {g m|mω} L R to the current goal.
We will prove SNoCutP {f m|mω} {g m|mω}.
An exact proof term for the current goal is Hfg.
We will prove SNoCutP L R.
An exact proof term for the current goal is LLR.
Let w be given.
Assume Hw: w {f m|mω}.
We will prove w < x.
Apply ReplE_impred ω (λm ⇒ f m) w Hw to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hwm: w = f m.
rewrite the current goal using Hwm (from left to right).
We will prove f m < x.
Apply HLR3 to the current goal.
We will prove f m L.
Apply SepI to the current goal.
We will prove f m SNoS_ ω.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) f m Hf Hm.
We will prove nω, f m < a n.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hf1 m Hm.
Let z be given.
Assume Hz: z R.
rewrite the current goal using Hanfg (from right to left).
We will prove a n < z.
Apply SepE (SNoS_ ω) (λq ⇒ mω, b m < q) z Hz to the current goal.
Assume H2: z SNoS_ ω.
Assume H3.
Apply H3 to the current goal.
Let m be given.
Assume H3.
Apply H3 to the current goal.
Assume Hm: m ω.
Assume H3: b m < z.
Apply SNoS_E2 ω omega_ordinal z H2 to the current goal.
Assume Hz1 Hz2 Hz3 Hz4.
Apply SNoLeLt_tra (a n) (b m) z (La1 n Hn) (Lb1 m Hm) Hz3 to the current goal.
We will prove a n b m.
An exact proof term for the current goal is Lab n Hn m Hm.
An exact proof term for the current goal is H3.
We prove the intermediate claim Lxb: nω, x b n.
Let n be given.
Assume Hn.
We will prove x b n.
Apply SNo_approx_real_rep (b n) (ap_Pi ω (λ_ ⇒ real) b n Hb Hn) to the current goal.
Let f be given.
Assume Hf.
Let g be given.
Assume Hg Hf1 Hf2 Hf3 Hg1 Hg2 Hg3 Hfg Hbnfg.
rewrite the current goal using Hbnfg (from left to right).
We will prove SNoCut L R SNoCut {f m|mω} {g m|mω}.
Apply SNoCut_Le L R {f m|mω} {g m|mω} to the current goal.
We will prove SNoCutP L R.
An exact proof term for the current goal is LLR.
We will prove SNoCutP {f m|mω} {g m|mω}.
An exact proof term for the current goal is Hfg.
Let w be given.
Assume Hw: w L.
rewrite the current goal using Hbnfg (from right to left).
We will prove w < b n.
Apply SepE (SNoS_ ω) (λq ⇒ mω, q < a m) w Hw to the current goal.
Assume H2: w SNoS_ ω.
Assume H3.
Apply H3 to the current goal.
Let m be given.
Assume H3.
Apply H3 to the current goal.
Assume Hm: m ω.
Assume H3: w < a m.
Apply SNoS_E2 ω omega_ordinal w H2 to the current goal.
Assume Hw1 Hw2 Hw3 Hw4.
Apply SNoLtLe_tra w (a m) (b n) Hw3 (La1 m Hm) (Lb1 n Hn) to the current goal.
An exact proof term for the current goal is H3.
We will prove a m b n.
An exact proof term for the current goal is Lab m Hm n Hn.
Let z be given.
Assume Hz: z {g m|mω}.
We will prove x < z.
Apply ReplE_impred ω (λm ⇒ g m) z Hz to the current goal.
Let m be given.
Assume Hm: m ω.
Assume Hzm: z = g m.
rewrite the current goal using Hzm (from left to right).
We will prove x < g m.
Apply HLR4 to the current goal.
We will prove g m R.
Apply SepI to the current goal.
We will prove g m SNoS_ ω.
An exact proof term for the current goal is ap_Pi ω (λ_ ⇒ SNoS_ ω) g m Hg Hm.
We will prove nω, b n < g m.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
An exact proof term for the current goal is Hg2 m Hm.
We prove the intermediate claim Laxb: nω, a n x x b n.
Let n be given.
Assume Hn.
Apply andI to the current goal.
An exact proof term for the current goal is Lax n Hn.
An exact proof term for the current goal is Lxb n Hn.
We prove the intermediate claim L1: qSNoS_ ω, q L q R.
Let q be given.
Assume Hq.
Apply dneg to the current goal.
Assume HCq: ¬ (q L q R).
Apply SNoS_E2 ω omega_ordinal q Hq to the current goal.
Assume Hq1 Hq2 Hq3 Hq4.
We prove the intermediate claim L1a: wL, w < q.
Let w be given.
Assume Hw: w L.
Apply SepE (SNoS_ ω) (λq ⇒ mω, q < a m) w Hw to the current goal.
Assume H2: w SNoS_ ω.
Assume H3.
Apply H3 to the current goal.
Let n be given.
Assume H3.
Apply H3 to the current goal.
Assume Hn: n ω.
Assume H3: w < a n.
Apply SNoS_E2 ω omega_ordinal w H2 to the current goal.
Assume Hw1 Hw2 Hw3 Hw4.
Apply SNoLtLe_or w q Hw3 Hq3 to the current goal.
Assume H4: w < q.
An exact proof term for the current goal is H4.
Assume H4: q w.
We will prove False.
Apply HCq to the current goal.
Apply orIL to the current goal.
We will prove q L.
Apply SepI to the current goal.
An exact proof term for the current goal is Hq.
We will prove nω, q < a n.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
We will prove q < a n.
An exact proof term for the current goal is SNoLeLt_tra q w (a n) Hq3 Hw3 (La1 n Hn) H4 H3.
We prove the intermediate claim L1b: zR, q < z.
Let z be given.
Assume Hz: z R.
Apply SepE (SNoS_ ω) (λq ⇒ mω, b m < q) z Hz to the current goal.
Assume H2: z SNoS_ ω.
Assume H3.
Apply H3 to the current goal.
Let n be given.
Assume H3.
Apply H3 to the current goal.
Assume Hn: n ω.
Assume H3: b n < z.
Apply SNoS_E2 ω omega_ordinal z H2 to the current goal.
Assume Hz1 Hz2 Hz3 Hz4.
Apply SNoLtLe_or q z Hq3 Hz3 to the current goal.
Assume H4: q < z.
An exact proof term for the current goal is H4.
Assume H4: z q.
We will prove False.
Apply HCq to the current goal.
Apply orIR to the current goal.
We will prove q R.
Apply SepI to the current goal.
An exact proof term for the current goal is Hq.
We will prove nω, b n < q.
We use n to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hn.
We will prove b n < q.
An exact proof term for the current goal is SNoLtLe_tra (b n) z q (Lb1 n Hn) Hz3 Hq3 H3 H4.
Apply HLR5 q Hq3 L1a L1b to the current goal.
Assume H2: SNoLev x SNoLev q.
Assume _.
Apply HC to the current goal.
We use x to witness the existential quantifier.
Apply andI to the current goal.
Apply SNoS_omega_real to the current goal.
We will prove x SNoS_ ω.
Apply SNoS_I ω omega_ordinal x (SNoLev x) to the current goal.
We will prove SNoLev x ω.
Apply omega_TransSet (ordsucc (SNoLev q)) (omega_ordsucc (SNoLev q) Hq1) to the current goal.
We will prove SNoLev x ordsucc (SNoLev q).
Apply ordinal_In_Or_Subq (SNoLev x) (ordsucc (SNoLev q)) (SNoLev_ordinal x HLR1) (ordinal_ordsucc (SNoLev q) Hq2) to the current goal.
Assume H3.
An exact proof term for the current goal is H3.
Assume H3: ordsucc (SNoLev q) SNoLev x.
We will prove False.
Apply In_irref (SNoLev q) to the current goal.
Apply H2 to the current goal.
Apply H3 to the current goal.
Apply ordsuccI2 to the current goal.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is HLR1.
An exact proof term for the current goal is Laxb.
Apply HC to the current goal.
We use x to witness the existential quantifier.
Apply andI to the current goal.
We will prove x real.
Apply real_I to the current goal.
We will prove x SNoS_ (ordsucc ω).
Apply SNoS_I (ordsucc ω) ordsucc_omega_ordinal x (SNoLev x) to the current goal.
We will prove SNoLev x ordsucc ω.
An exact proof term for the current goal is SNoCutP_SNoCut_omega L LL R LR LLR.
Apply SNoLev_ to the current goal.
An exact proof term for the current goal is HLR1.
We will prove x ω.
Assume H2: x = ω.
We prove the intermediate claim Lbd1: x b 0.
An exact proof term for the current goal is Lxb 0 (nat_p_omega 0 nat_0).
Apply real_E (b 0) (ap_Pi ω (λ_ ⇒ real) b 0 Hb (nat_p_omega 0 nat_0)) to the current goal.
Assume Hb0a: SNo (b 0).
Assume _ _ _.
Assume Hb0b: b 0 < ω.
Assume _ _.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLeLt_tra x (b 0) x HLR1 Hb0a HLR1 Lbd1 to the current goal.
We will prove b 0 < x.
rewrite the current goal using H2 (from left to right).
We will prove b 0 < ω.
An exact proof term for the current goal is Hb0b.
We will prove x - ω.
Assume H2: x = - ω.
We prove the intermediate claim Lbd2: a 0 x.
An exact proof term for the current goal is Lax 0 (nat_p_omega 0 nat_0).
Apply real_E (a 0) (ap_Pi ω (λ_ ⇒ real) a 0 Ha (nat_p_omega 0 nat_0)) to the current goal.
Assume Ha0a: SNo (a 0).
Assume _ _.
Assume Ha0b: - ω < a 0.
Assume _ _ _.
Apply SNoLt_irref x to the current goal.
We will prove x < x.
Apply SNoLtLe_tra x (a 0) x HLR1 Ha0a HLR1 to the current goal.
We will prove x < a 0.
rewrite the current goal using H2 (from left to right).
An exact proof term for the current goal is Ha0b.
We will prove a 0 x.
An exact proof term for the current goal is Lbd2.
We will prove qSNoS_ ω, (kω, abs_SNo (q + - x) < eps_ k)q = x.
Let q be given.
Assume Hq1: q SNoS_ ω.
Assume Hq2: kω, abs_SNo (q + - x) < eps_ k.
We will prove False.
Apply SNoS_E2 ω omega_ordinal q Hq1 to the current goal.
Assume Hq1a Hq1b Hq1c Hq1d.
Apply L1 q Hq1 to the current goal.
Assume H2: q L.
Apply SepE (SNoS_ ω) (λq ⇒ mω, q < a m) q H2 to the current goal.
Assume _ H3.
Apply H3 to the current goal.
Let n be given.
Assume H3.
Apply H3 to the current goal.
Assume Hn: n ω.
Assume H3: q < a n.
Apply real_E (a n) (ap_Pi ω (λ_ ⇒ real) a n Ha Hn) to the current goal.
Assume _ _ _ _ _.
Assume H4: qSNoS_ ω, (kω, abs_SNo (q + - a n) < eps_ k)q = a n.
Assume _.
We prove the intermediate claim L2: q = a n.
Apply H4 q Hq1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (q + - a n) < eps_ k.
We prove the intermediate claim L2a: 0 < a n + - q.
An exact proof term for the current goal is SNoLt_minus_pos q (a n) Hq1c (La1 n Hn) H3.
We prove the intermediate claim L2b: a n x.
An exact proof term for the current goal is Lax n Hn.
We prove the intermediate claim L2c: 0 < x + - q.
Apply SNoLt_minus_pos q x Hq1c HLR1 to the current goal.
We will prove q < x.
An exact proof term for the current goal is SNoLtLe_tra q (a n) x Hq1c (La1 n Hn) HLR1 H3 L2b.
rewrite the current goal using abs_SNo_dist_swap q (a n) Hq1c (La1 n Hn) (from left to right).
We will prove abs_SNo (a n + - q) < eps_ k.
rewrite the current goal using pos_abs_SNo (a n + - q) L2a (from left to right).
We will prove a n + - q < eps_ k.
Apply SNoLeLt_tra (a n + - q) (x + - q) (eps_ k) (SNo_add_SNo (a n) (- q) (La1 n Hn) (SNo_minus_SNo q Hq1c)) (SNo_add_SNo x (- q) HLR1 (SNo_minus_SNo q Hq1c)) (SNo_eps_ k Hk) to the current goal.
We will prove a n + - q x + - q.
Apply add_SNo_Le1 (a n) (- q) x (La1 n Hn) (SNo_minus_SNo q Hq1c) HLR1 to the current goal.
We will prove a n x.
An exact proof term for the current goal is L2b.
We will prove x + - q < eps_ k.
rewrite the current goal using pos_abs_SNo (x + - q) L2c (from right to left).
rewrite the current goal using abs_SNo_dist_swap x q HLR1 Hq1c (from left to right).
We will prove abs_SNo (q + - x) < eps_ k.
An exact proof term for the current goal is Hq2 k Hk.
Apply SNoLt_irref q to the current goal.
rewrite the current goal using L2 (from left to right) at position 2.
An exact proof term for the current goal is H3.
Assume H2: q R.
Apply SepE (SNoS_ ω) (λq ⇒ mω, b m < q) q H2 to the current goal.
Assume _ H3.
Apply H3 to the current goal.
Let n be given.
Assume H3.
Apply H3 to the current goal.
Assume Hn: n ω.
Assume H3: b n < q.
Apply real_E (b n) (ap_Pi ω (λ_ ⇒ real) b n Hb Hn) to the current goal.
Assume _ _ _ _ _.
Assume H4: qSNoS_ ω, (kω, abs_SNo (q + - b n) < eps_ k)q = b n.
Assume _.
We prove the intermediate claim L3: q = b n.
Apply H4 q Hq1 to the current goal.
Let k be given.
Assume Hk: k ω.
We will prove abs_SNo (q + - b n) < eps_ k.
We prove the intermediate claim L3a: 0 < q + - b n.
An exact proof term for the current goal is SNoLt_minus_pos (b n) q (Lb1 n Hn) Hq1c H3.
We prove the intermediate claim L3b: x b n.
An exact proof term for the current goal is Lxb n Hn.
We prove the intermediate claim L3c: 0 < q + - x.
Apply SNoLt_minus_pos x q HLR1 Hq1c to the current goal.
We will prove x < q.
An exact proof term for the current goal is SNoLeLt_tra x (b n) q HLR1 (Lb1 n Hn) Hq1c L3b H3.
We will prove abs_SNo (q + - b n) < eps_ k.
rewrite the current goal using pos_abs_SNo (q + - b n) L3a (from left to right).
We will prove q + - b n < eps_ k.
Apply SNoLeLt_tra (q + - b n) (q + - x) (eps_ k) (SNo_add_SNo q (- b n) Hq1c (SNo_minus_SNo (b n) (Lb1 n Hn))) (SNo_add_SNo q (- x) Hq1c (SNo_minus_SNo x HLR1)) (SNo_eps_ k Hk) to the current goal.
We will prove q + - b n q + - x.
Apply add_SNo_Le2 q (- b n) (- x) Hq1c (SNo_minus_SNo (b n) (Lb1 n Hn)) (SNo_minus_SNo x HLR1) to the current goal.
We will prove - b n - x.
An exact proof term for the current goal is minus_SNo_Le_contra x (b n) HLR1 (Lb1 n Hn) L3b.
We will prove q + - x < eps_ k.
rewrite the current goal using pos_abs_SNo (q + - x) L3c (from right to left).
We will prove abs_SNo (q + - x) < eps_ k.
An exact proof term for the current goal is Hq2 k Hk.
Apply SNoLt_irref q to the current goal.
rewrite the current goal using L3 (from left to right) at position 1.
An exact proof term for the current goal is H3.
An exact proof term for the current goal is Laxb.
Theorem. (real_complete2) The following is provable:
a brealω, (nω, a n b n a n a (n + 1) b (n + 1) b n)xreal, nω, a n x x b n
Proof:
Let a be given.
Assume Ha.
Let b be given.
Assume Hb.
Assume H1.
Apply real_complete1 a Ha b Hb to the current goal.
Let n be given.
Assume Hn.
We will prove a n b n a n a (ordsucc n) b (ordsucc n) b n.
We prove the intermediate claim L1: ordsucc n = n + 1.
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 ordsucc n = add_nat n 1.
rewrite the current goal using add_nat_SR n 0 nat_0 (from left to right).
We will prove ordsucc n = ordsucc (add_nat n 0).
rewrite the current goal using add_nat_0R (from left to right).
Use reflexivity.
rewrite the current goal using L1 (from left to right).
An exact proof term for the current goal is H1 n Hn.
End of Section Reals