Complex Surreal Numbers and Complex Numbers

From Parts 1 to 8

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

Complex Surreal Numbers

Beginning of Section ComplexSNo
Beginning of Section CTaggedSets
Let tag : setsetλalpha ⇒ SetAdjoin alpha {1}
Notation. We use ' as a postfix operator with priority 100 corresponding to applying term tag.
Let ctag : setsetλalpha ⇒ SetAdjoin alpha {2}
Notation. We use '' as a postfix operator with priority 100 corresponding to applying term ctag.
Theorem. (not_TransSet_Sing2) The following is provable:
¬ TransSet {2}
Proof:
Assume H1: TransSet {2}.
We prove the intermediate claim L1: 0{2}.
An exact proof term for the current goal is H1 2 (SingI 2) 0 In_0_2.
Apply neq_0_2 to the current goal.
An exact proof term for the current goal is SingE 2 0 L1.
Theorem. (not_ordinal_Sing2) The following is provable:
¬ ordinal {2}
Proof:
Assume H1.
Apply H1 to the current goal.
Assume H2 _.
An exact proof term for the current goal is not_TransSet_Sing2 H2.
Theorem. (ctagged_not_ordinal) The following is provable:
∀y, ¬ ordinal (y '')
Proof:
Let y be given.
Assume H1: ordinal (y '').
We prove the intermediate claim L1: {2}y ''.
We will prove {2}y{{2}}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is SingI {2}.
Apply not_ordinal_Sing2 to the current goal.
An exact proof term for the current goal is ordinal_Hered (y '') H1 {2} L1.
Theorem. (ctagged_notin_ordinal) The following is provable:
∀alpha y, ordinal alpha(y '')alpha
Proof:
Let alpha and y be given.
Assume H1 H2.
Apply ctagged_not_ordinal y to the current goal.
An exact proof term for the current goal is ordinal_Hered alpha H1 (y '') H2.
Theorem. (Sing2_notin_SingSing1) The following is provable:
{2}{{1}}
Proof:
Assume H1: {2}{{1}}.
We prove the intermediate claim L1: 1{2}.
rewrite the current goal using SingE {1} {2} H1 (from left to right).
An exact proof term for the current goal is SingI 1.
Apply neq_1_2 to the current goal.
We will prove 1 = 2.
An exact proof term for the current goal is SingE 2 1 L1.
Theorem. (ctagged_notin_SNo) The following is provable:
∀x y, SNo x(y '')x
Proof:
Let x and y be given.
Assume Hx: SNo x.
Assume Hyc: (y '')x.
We will prove False.
Set alpha to be the term SNoLev x.
Apply SNoLev_prop x Hx to the current goal.
Assume Ha: ordinal alpha.
Assume Hxa: SNo_ alpha x.
Apply Hxa to the current goal.
Assume Hxa1: xSNoElts_ (SNoLev x).
We will prove False.
We prove the intermediate claim L1: y ''alpha{beta '|beta ∈ alpha}.
An exact proof term for the current goal is Hxa1 (y '') Hyc.
Apply binunionE alpha {beta '|beta ∈ alpha} (y '') L1 to the current goal.
Assume H1: y ''alpha.
An exact proof term for the current goal is ctagged_notin_ordinal alpha y Ha H1.
Assume H1: y ''{beta '|beta ∈ alpha}.
Apply ReplE_impred alpha (λbeta ⇒ beta ') (y '') H1 to the current goal.
Let beta be given.
Assume Hb: betaalpha.
Assume Hyb: y '' = beta '.
We prove the intermediate claim Lb: ordinal beta.
An exact proof term for the current goal is ordinal_Hered alpha Ha beta Hb.
We prove the intermediate claim L2: {2}beta '.
rewrite the current goal using Hyb (from right to left).
We will prove {2}y{{2}}.
Apply binunionI2 to the current goal.
An exact proof term for the current goal is SingI {2}.
Apply binunionE beta {{1}} {2} L2 to the current goal.
Assume H2: {2}beta.
Apply not_ordinal_Sing2 to the current goal.
An exact proof term for the current goal is ordinal_Hered beta Lb {2} H2.
An exact proof term for the current goal is Sing2_notin_SingSing1.
Theorem. (ctagged_eqE_Subq) The following is provable:
∀x y, SNo xSNo y∀u ∈ x, ∀v ∈ y, u '' = v ''uv
Proof:
Let x and y be given.
Assume Hx Hy.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv Huv.
Let w be given.
Assume Hw: wu.
We prove the intermediate claim L1: wv ''.
rewrite the current goal using Huv (from right to left).
We will prove wu{{2}}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hw.
Apply binunionE v {{2}} w L1 to the current goal.
Assume H1: wv.
An exact proof term for the current goal is H1.
Assume H1: w{{2}}.
We will prove False.
We prove the intermediate claim L2: w = {2}.
An exact proof term for the current goal is SingE {2} w H1.
We prove the intermediate claim L3: {2}u.
rewrite the current goal using L2 (from right to left).
An exact proof term for the current goal is Hw.
Set alpha to be the term SNoLev x.
Apply SNoLev_prop x Hx to the current goal.
Assume Ha: ordinal alpha.
Assume Hxa: SNo_ alpha x.
Apply Hxa to the current goal.
Assume Hxa1: xSNoElts_ alpha.
We will prove False.
Apply binunionE alpha {beta '|beta ∈ alpha} u (Hxa1 u Hu) to the current goal.
Assume H2: ualpha.
We prove the intermediate claim Lu: ordinal u.
An exact proof term for the current goal is ordinal_Hered alpha Ha u H2.
Apply not_ordinal_Sing2 to the current goal.
An exact proof term for the current goal is ordinal_Hered u Lu {2} L3.
Assume H2: u{beta '|beta ∈ alpha}.
Apply ReplE_impred alpha (λbeta ⇒ beta ') u H2 to the current goal.
Let beta be given.
Assume Hb: betaalpha.
Assume Hub: u = beta '.
We prove the intermediate claim Lb: ordinal beta.
An exact proof term for the current goal is ordinal_Hered alpha Ha beta Hb.
We prove the intermediate claim L4: {2}beta '.
rewrite the current goal using Hub (from right to left).
An exact proof term for the current goal is L3.
Apply binunionE beta {{1}} {2} L4 to the current goal.
Assume H3: {2}beta.
Apply not_ordinal_Sing2 to the current goal.
An exact proof term for the current goal is ordinal_Hered beta Lb {2} H3.
An exact proof term for the current goal is Sing2_notin_SingSing1.
Theorem. (ctagged_eqE_eq) The following is provable:
∀x y, SNo xSNo y∀u ∈ x, ∀v ∈ y, u '' = v ''u = v
Proof:
Let x and y be given.
Assume Hx Hy.
Let u be given.
Assume Hu.
Let v be given.
Assume Hv Huv.
Apply set_ext to the current goal.
An exact proof term for the current goal is ctagged_eqE_Subq x y Hx Hy u Hu v Hv Huv.
Apply ctagged_eqE_Subq y x Hy Hx v Hv u Hu to the current goal.
Use symmetry.
An exact proof term for the current goal is Huv.
Definition. We define SNo_pair to be λx y ⇒ x{u ''|u ∈ y} of type setsetset.
Theorem. (SNo_pair_prop_1_Subq) The following is provable:
∀x1 y1 x2 y2, SNo x1SNo_pair x1 y1 = SNo_pair x2 y2x1x2
Proof:
Let x1, y1, x2 and y2 be given.
Assume Hx1.
Assume H1: SNo_pair x1 y1 = SNo_pair x2 y2.
Let v be given.
Assume Hv: vx1.
We prove the intermediate claim L1: vSNo_pair x2 y2.
rewrite the current goal using H1 (from right to left).
We will prove vx1{u ''|u ∈ y1}.
Apply binunionI1 to the current goal.
An exact proof term for the current goal is Hv.
Apply binunionE x2 {u ''|u ∈ y2} v L1 to the current goal.
Assume H2: vx2.
An exact proof term for the current goal is H2.
Assume H2: v{u ''|u ∈ y2}.
We will prove False.
Apply ReplE_impred y2 (λu ⇒ u '') v H2 to the current goal.
Let u be given.
Assume Hu: uy2.
Assume Hvu: v = u ''.
Apply ctagged_notin_SNo x1 u Hx1 to the current goal.
We will prove u ''x1.
rewrite the current goal using Hvu (from right to left).
An exact proof term for the current goal is Hv.
Theorem. (SNo_pair_prop_1) The following is provable:
∀x1 y1 x2 y2, SNo x1SNo x2SNo_pair x1 y1 = SNo_pair x2 y2x1 = x2
Proof:
Let x1, y1, x2 and y2 be given.
Assume Hx1 Hx2.
Assume H1: SNo_pair x1 y1 = SNo_pair x2 y2.
Apply set_ext to the current goal.
An exact proof term for the current goal is SNo_pair_prop_1_Subq x1 y1 x2 y2 Hx1 H1.
Apply SNo_pair_prop_1_Subq x2 y2 x1 y1 Hx2 to the current goal.
Use symmetry.
An exact proof term for the current goal is H1.
Theorem. (SNo_pair_prop_2_Subq) The following is provable:
∀x1 y1 x2 y2, SNo y1SNo x2SNo y2SNo_pair x1 y1 = SNo_pair x2 y2y1y2
Proof:
Let x1, y1, x2 and y2 be given.
Assume Hy1 Hx2 Hy2.
Assume H1: SNo_pair x1 y1 = SNo_pair x2 y2.
Let v be given.
Assume Hv: vy1.
We prove the intermediate claim L1: v ''SNo_pair x2 y2.
rewrite the current goal using H1 (from right to left).
We will prove v ''x1{u ''|u ∈ y1}.
Apply binunionI2 to the current goal.
We will prove v ''{u ''|u ∈ y1}.
An exact proof term for the current goal is ReplI y1 (λu ⇒ u '') v Hv.
Apply binunionE x2 {u ''|u ∈ y2} (v '') L1 to the current goal.
Assume H2: v ''x2.
We will prove False.
An exact proof term for the current goal is ctagged_notin_SNo x2 v Hx2 H2.
Assume H2: v ''{u ''|u ∈ y2}.
Apply ReplE_impred y2 (λu ⇒ u '') (v '') H2 to the current goal.
Let u be given.
Assume Hu: uy2.
Assume Hvu: v '' = u ''.
We prove the intermediate claim L2: v = u.
An exact proof term for the current goal is ctagged_eqE_eq y1 y2 Hy1 Hy2 v Hv u Hu Hvu.
We will prove vy2.
rewrite the current goal using L2 (from left to right).
An exact proof term for the current goal is Hu.
Theorem. (SNo_pair_prop_2) The following is provable:
∀x1 y1 x2 y2, SNo x1SNo y1SNo x2SNo y2SNo_pair x1 y1 = SNo_pair x2 y2y1 = y2
Proof:
Let x1, y1, x2 and y2 be given.
Assume Hx1 Hy1 Hx2 Hy2.
Assume H1: SNo_pair x1 y1 = SNo_pair x2 y2.
Apply set_ext to the current goal.
An exact proof term for the current goal is SNo_pair_prop_2_Subq x1 y1 x2 y2 Hy1 Hx2 Hy2 H1.
Apply SNo_pair_prop_2_Subq x2 y2 x1 y1 Hy2 Hx1 Hy1 to the current goal.
Use symmetry.
An exact proof term for the current goal is H1.
Theorem. (SNo_pair_0) The following is provable:
∀x, SNo_pair x 0 = x
Proof:
Let x be given.
We will prove x{u ''|u ∈ 0} = x.
rewrite the current goal using Repl_Empty (λu ⇒ u '') (from left to right).
We will prove x0 = x.
An exact proof term for the current goal is binunion_idr x.
End of Section CTaggedSets
Definition. We define CSNo to be λz ⇒ ∃x, SNo x∃y, SNo yz = SNo_pair x y of type setprop.
Theorem. (CSNo_I) The following is provable:
∀x y, SNo xSNo yCSNo (SNo_pair x y)
Proof:
Let x and y be given.
Assume Hx Hy.
We will prove ∃x', SNo x'∃y', SNo y'SNo_pair x y = SNo_pair x' y'.
We use x to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hx.
We use y to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hy.
Use reflexivity.
Theorem. (CSNo_E) The following is provable:
∀z, CSNo z∀p : setprop, (∀x y, SNo xSNo yz = SNo_pair x yp (SNo_pair x y))p z
Proof:
Let z be given.
Assume Hz.
Let p be given.
Assume Hp.
Apply Hz to the current goal.
Let x be given.
Assume H1.
Apply H1 to the current goal.
Assume Hx.
Assume H1.
Apply H1 to the current goal.
Let y be given.
Assume H1.
Apply H1 to the current goal.
Assume Hy Hzxy.
rewrite the current goal using Hzxy (from left to right).
An exact proof term for the current goal is Hp x y Hx Hy Hzxy.
Theorem. (SNo_CSNo) The following is provable:
∀x, SNo xCSNo x
Proof:
Let x be given.
Assume Hx.
We will prove ∃x', SNo x'∃y, SNo yx = SNo_pair x' y.
We use x to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hx.
We use 0 to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is SNo_0.
Use symmetry.
An exact proof term for the current goal is SNo_pair_0 x.
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 Complex_i to be SNo_pair 0 1 of type set.
Definition. We define CSNo_Re to be λz ⇒ Eps_i (λx ⇒ SNo x∃y, SNo yz = SNo_pair x y) of type setset.
Definition. We define CSNo_Im to be λz ⇒ Eps_i (λy ⇒ SNo yz = SNo_pair (CSNo_Re z) y) of type setset.
Let i ≝ Complex_i
Let Re : setsetCSNo_Re
Let Im : setsetCSNo_Im
Let pa : setsetsetSNo_pair
Theorem. (CSNo_Re1) The following is provable:
∀z, CSNo zSNo (Re z)∃y, SNo yz = pa (Re z) y
Proof:
Let z be given.
Assume Hz.
Apply Eps_i_ex (λx ⇒ SNo x∃y, SNo yz = pa x y) to the current goal.
We will prove ∃x, SNo x∃y, SNo yz = pa x y.
An exact proof term for the current goal is Hz.
Theorem. (CSNo_Re2) The following is provable:
∀x y, SNo xSNo yRe (pa x y) = x
Proof:
Let x and y be given.
Assume Hx Hy.
Apply CSNo_Re1 (pa x y) (CSNo_I x y Hx Hy) to the current goal.
Assume H1: SNo (Re (pa x y)).
Assume H2: ∃y', SNo y'pa x y = pa (Re (pa x y)) y'.
Apply H2 to the current goal.
Let y' be given.
Assume H3.
Apply H3 to the current goal.
Assume Hy': SNo y'.
Assume H4: pa x y = pa (Re (pa x y)) y'.
Use symmetry.
An exact proof term for the current goal is SNo_pair_prop_1 x y (Re (pa x y)) y' Hx H1 H4.
Theorem. (CSNo_Im1) The following is provable:
∀z, CSNo zSNo (Im z)z = pa (Re z) (Im z)
Proof:
Let z be given.
Assume Hz.
Apply Eps_i_ex (λy ⇒ SNo yz = pa (Re z) y) to the current goal.
We will prove ∃y, SNo yz = pa (Re z) y.
Apply CSNo_E z Hz to the current goal.
Let x and y be given.
Assume Hx Hy.
Assume Hzxy: z = pa x y.
We use y to witness the existential quantifier.
Apply andI to the current goal.
An exact proof term for the current goal is Hy.
We will prove pa x y = pa (Re (pa x y)) y.
Apply CSNo_Re2 x y Hx Hy (λu v ⇒ pa x y = pa v y) to the current goal.
We will prove pa x y = pa x y.
Use reflexivity.
Theorem. (CSNo_Im2) The following is provable:
∀x y, SNo xSNo yIm (pa x y) = y
Proof:
Let x and y be given.
Assume Hx Hy.
Use symmetry.
Apply CSNo_Im1 (pa x y) (CSNo_I x y Hx Hy) to the current goal.
Assume H1: SNo (Im (pa x y)).
Apply CSNo_Re2 x y Hx Hy (λu v ⇒ pa x y = pa v (Im (pa x y))y = Im (pa x y)) to the current goal.
Assume H2: pa x y = pa x (Im (pa x y)).
An exact proof term for the current goal is SNo_pair_prop_2 x y x (Im (pa x y)) Hx Hy Hx H1 H2.
Theorem. (CSNo_ReR) The following is provable:
∀z, CSNo zSNo (Re z)
Proof:
Let z be given.
Assume Hz.
Apply CSNo_Re1 z Hz to the current goal.
An exact proof term for the current goal is (λH _ ⇒ H).
Theorem. (CSNo_ImR) The following is provable:
∀z, CSNo zSNo (Im z)
Proof:
Let z be given.
Assume Hz.
Apply CSNo_Im1 z Hz to the current goal.
An exact proof term for the current goal is (λH _ ⇒ H).
Theorem. (CSNo_ReIm) The following is provable:
∀z, CSNo zz = pa (Re z) (Im z)
Proof:
Let z be given.
Assume Hz.
Apply CSNo_Im1 z Hz to the current goal.
An exact proof term for the current goal is (λ_ H ⇒ H).
Theorem. (CSNo_ReIm_split) The following is provable:
∀z w, CSNo zCSNo wRe z = Re wIm z = Im wz = w
Proof:
Let z and w be given.
Assume Hz Hw.
Assume H1 H2.
Use transitivity with and (pa (Re z) (Im z)).
An exact proof term for the current goal is CSNo_ReIm z Hz.
Use transitivity with and (pa (Re w) (Im w)).
rewrite the current goal using H1 (from left to right).
rewrite the current goal using H2 (from left to right).
Use reflexivity.
Use symmetry.
An exact proof term for the current goal is CSNo_ReIm w Hw.
Definition. We define minus_CSNo to be λz ⇒ pa (- Re z) (- Im z) of type setset.
Definition. We define add_CSNo to be λz w ⇒ pa (Re z + Re w) (Im z + Im w) of type setsetset.
Definition. We define mul_CSNo to be λz w ⇒ pa (Re z * Re w + - (Im z * Im w)) (Re z * Im w + Im z * Re w) of type setsetset.
Let plus' ≝ add_CSNo
Let mult' ≝ mul_CSNo
Notation. We use :-: as a prefix operator with priority 358 corresponding to applying term minus_CSNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_CSNo.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_CSNo.
Theorem. (CSNo_Complex_i) The following is provable:
Proof:
We will prove CSNo (pa 0 1).
Apply CSNo_I to the current goal.
An exact proof term for the current goal is SNo_0.
An exact proof term for the current goal is SNo_1.
Theorem. (minus_CSNo_CRe) The following is provable:
∀z, CSNo zRe (:-: z) = - Re z
Proof:
Let z be given.
Assume Hz.
An exact proof term for the current goal is CSNo_Re2 (- Re z) (- Im z) (SNo_minus_SNo (Re z) (CSNo_ReR z Hz)) (SNo_minus_SNo (Im z) (CSNo_ImR z Hz)).
Theorem. (minus_CSNo_CIm) The following is provable:
∀z, CSNo zIm (:-: z) = - Im z
Proof:
Let z be given.
Assume Hz.
An exact proof term for the current goal is CSNo_Im2 (- Re z) (- Im z) (SNo_minus_SNo (Re z) (CSNo_ReR z Hz)) (SNo_minus_SNo (Im z) (CSNo_ImR z Hz)).
Theorem. (add_CSNo_CRe) The following is provable:
∀z w, CSNo zCSNo wRe (plus' z w) = Re z + Re w
Proof:
Let z and w be given.
Assume Hz Hw.
An exact proof term for the current goal is CSNo_Re2 (Re z + Re w) (Im z + Im w) (SNo_add_SNo (Re z) (Re w) (CSNo_ReR z Hz) (CSNo_ReR w Hw)) (SNo_add_SNo (Im z) (Im w) (CSNo_ImR z Hz) (CSNo_ImR w Hw)).
Theorem. (add_CSNo_CIm) The following is provable:
∀z w, CSNo zCSNo wIm (plus' z w) = Im z + Im w
Proof:
Let z and w be given.
Assume Hz Hw.
An exact proof term for the current goal is CSNo_Im2 (Re z + Re w) (Im z + Im w) (SNo_add_SNo (Re z) (Re w) (CSNo_ReR z Hz) (CSNo_ReR w Hw)) (SNo_add_SNo (Im z) (Im w) (CSNo_ImR z Hz) (CSNo_ImR w Hw)).
Theorem. (CSNo_minus_CSNo) The following is provable:
∀z, CSNo zCSNo (minus_CSNo z)
Proof:
Let z be given.
Assume Hz.
We will prove CSNo (pa (- Re z) (- Im z)).
Apply CSNo_I to the current goal.
Apply SNo_minus_SNo to the current goal.
Apply CSNo_ReR to the current goal.
An exact proof term for the current goal is Hz.
Apply SNo_minus_SNo to the current goal.
Apply CSNo_ImR to the current goal.
An exact proof term for the current goal is Hz.
Theorem. (SNo_Re) The following is provable:
∀x, SNo xRe x = x
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using SNo_pair_0 x (from right to left) at position 1.
We will prove Re (pa x 0) = x.
An exact proof term for the current goal is CSNo_Re2 x 0 Hx SNo_0.
Theorem. (SNo_Im) The following is provable:
∀x, SNo xIm x = 0
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using SNo_pair_0 x (from right to left) at position 1.
We will prove Im (pa x 0) = 0.
An exact proof term for the current goal is CSNo_Im2 x 0 Hx SNo_0.
Theorem. (Re_0) The following is provable:
Re 0 = 0
Proof:
An exact proof term for the current goal is SNo_Re 0 SNo_0.
Theorem. (Im_0) The following is provable:
Im 0 = 0
Proof:
An exact proof term for the current goal is SNo_Im 0 SNo_0.
Theorem. (Re_1) The following is provable:
Re 1 = 1
Proof:
An exact proof term for the current goal is SNo_Re 1 SNo_1.
Theorem. (Im_1) The following is provable:
Im 1 = 0
Proof:
An exact proof term for the current goal is SNo_Im 1 SNo_1.
Theorem. (Re_i) The following is provable:
Re i = 0
Proof:
An exact proof term for the current goal is CSNo_Re2 0 1 SNo_0 SNo_1.
Theorem. (Im_i) The following is provable:
Im i = 1
Proof:
An exact proof term for the current goal is CSNo_Im2 0 1 SNo_0 SNo_1.
Theorem. (add_SNo_add_CSNo) The following is provable:
∀x y, SNo xSNo yx + y = add_CSNo x y
Proof:
Let x and y be given.
Assume Hx Hy.
Use transitivity with Re x + Re y, and pa (Re x + Re y) 0.
rewrite the current goal using SNo_Re x Hx (from left to right).
rewrite the current goal using SNo_Re y Hy (from left to right).
Use reflexivity.
Use symmetry.
An exact proof term for the current goal is SNo_pair_0 (Re x + Re y).
We will prove pa (Re x + Re y) 0 = pa (Re x + Re y) (Im x + Im y).
Use f_equal.
rewrite the current goal using SNo_Im x Hx (from left to right).
rewrite the current goal using SNo_Im y Hy (from left to right).
We will prove 0 = 0 + 0.
Use symmetry.
An exact proof term for the current goal is add_SNo_0L 0 SNo_0.
Theorem. (CSNo_add_CSNo) The following is provable:
∀z w, CSNo zCSNo wCSNo (add_CSNo z w)
Proof:
Let z and w be given.
Assume Hz Hw.
We will prove CSNo (pa (Re z + Re w) (Im z + Im w)).
Apply CSNo_I to the current goal.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is CSNo_ReR z Hz.
An exact proof term for the current goal is CSNo_ReR w Hw.
Apply SNo_add_SNo to the current goal.
An exact proof term for the current goal is CSNo_ImR z Hz.
An exact proof term for the current goal is CSNo_ImR w Hw.
Theorem. (add_CSNo_0L) The following is provable:
∀z, CSNo zadd_CSNo 0 z = z
Proof:
Let z be given.
Assume Hz.
We will prove pa (Re 0 + Re z) (Im 0 + Im z) = z.
rewrite the current goal using Re_0 (from left to right).
rewrite the current goal using Im_0 (from left to right).
We will prove pa (0 + Re z) (0 + Im z) = z.
rewrite the current goal using add_SNo_0L (Re z) (CSNo_ReR z Hz) (from left to right).
rewrite the current goal using add_SNo_0L (Im z) (CSNo_ImR z Hz) (from left to right).
Use symmetry.
An exact proof term for the current goal is CSNo_ReIm z Hz.
Theorem. (add_CSNo_0R) The following is provable:
∀z, CSNo zadd_CSNo z 0 = z
Proof:
Let z be given.
Assume Hz.
We will prove pa (Re z + Re 0) (Im z + Im 0) = z.
rewrite the current goal using Re_0 (from left to right).
rewrite the current goal using Im_0 (from left to right).
We will prove pa (Re z + 0) (Im z + 0) = z.
rewrite the current goal using add_SNo_0R (Re z) (CSNo_ReR z Hz) (from left to right).
rewrite the current goal using add_SNo_0R (Im z) (CSNo_ImR z Hz) (from left to right).
Use symmetry.
An exact proof term for the current goal is CSNo_ReIm z Hz.
Theorem. (add_CSNo_minus_CSNo_linv) The following is provable:
∀z, CSNo zadd_CSNo (minus_CSNo z) z = 0
Proof:
Let z be given.
Assume Hz.
We will prove pa (Re (pa (- Re z) (- Im z)) + Re z) (Im (pa (- Re z) (- Im z)) + Im z) = 0.
We prove the intermediate claim LmRez: SNo (- Re z).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is CSNo_ReR z Hz.
We prove the intermediate claim LmImz: SNo (- Im z).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is CSNo_ImR z Hz.
rewrite the current goal using CSNo_Re2 (- Re z) (- Im z) LmRez LmImz (from left to right).
rewrite the current goal using CSNo_Im2 (- Re z) (- Im z) LmRez LmImz (from left to right).
We will prove pa ((- Re z) + Re z) ((- Im z) + Im z) = 0.
rewrite the current goal using add_SNo_minus_SNo_linv (Re z) (CSNo_ReR z Hz) (from left to right).
rewrite the current goal using add_SNo_minus_SNo_linv (Im z) (CSNo_ImR z Hz) (from left to right).
We will prove pa 0 0 = 0.
An exact proof term for the current goal is SNo_pair_0 0.
Theorem. (add_CSNo_minus_CSNo_rinv) The following is provable:
∀z, CSNo zadd_CSNo z (minus_CSNo z) = 0
Proof:
Let z be given.
Assume Hz.
We prove the intermediate claim LmRez: SNo (- Re z).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is CSNo_ReR z Hz.
We prove the intermediate claim LmImz: SNo (- Im z).
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is CSNo_ImR z Hz.
We will prove pa (Re z + Re (pa (- Re z) (- Im z))) (Im z + Im (pa (- Re z) (- Im z))) = 0.
rewrite the current goal using CSNo_Re2 (- Re z) (- Im z) LmRez LmImz (from left to right).
rewrite the current goal using CSNo_Im2 (- Re z) (- Im z) LmRez LmImz (from left to right).
We will prove pa (Re z + - Re z) (Im z + - Im z) = 0.
rewrite the current goal using add_SNo_minus_SNo_rinv (Re z) (CSNo_ReR z Hz) (from left to right).
rewrite the current goal using add_SNo_minus_SNo_rinv (Im z) (CSNo_ImR z Hz) (from left to right).
We will prove pa 0 0 = 0.
An exact proof term for the current goal is SNo_pair_0 0.
Theorem. (minus_SNo_minus_CSNo) The following is provable:
∀x, SNo x- x = minus_CSNo x
Proof:
Let x be given.
Assume Hx.
We will prove - x = pa (- Re x) (- Im x).
rewrite the current goal using SNo_Re x Hx (from left to right).
rewrite the current goal using SNo_Im x Hx (from left to right).
We will prove - x = pa (- x) (- 0).
rewrite the current goal using minus_SNo_0 (from left to right).
Use symmetry.
An exact proof term for the current goal is SNo_pair_0 (- x).
Theorem. (add_CSNo_com) The following is provable:
∀z w, CSNo zCSNo wz + w = w + z
Proof:
Let z and w be given.
Assume Hz Hw.
We prove the intermediate claim Lzw: CSNo (plus' z w).
An exact proof term for the current goal is CSNo_add_CSNo z w Hz Hw.
We prove the intermediate claim Lwz: CSNo (plus' w z).
An exact proof term for the current goal is CSNo_add_CSNo w z Hw Hz.
Apply CSNo_ReIm_split (plus' z w) (plus' w z) Lzw Lwz to the current goal.
We will prove Re (plus' z w) = Re (plus' w z).
Use transitivity with and (Re z + Re w).
An exact proof term for the current goal is add_CSNo_CRe z w Hz Hw.
Use transitivity with and (Re w + Re z).
An exact proof term for the current goal is add_SNo_com (Re z) (Re w) (CSNo_ReR z Hz) (CSNo_ReR w Hw).
Use symmetry.
An exact proof term for the current goal is add_CSNo_CRe w z Hw Hz.
We will prove Im (plus' z w) = Im (plus' w z).
Use transitivity with and (Im z + Im w).
An exact proof term for the current goal is add_CSNo_CIm z w Hz Hw.
Use transitivity with and (Im w + Im z).
An exact proof term for the current goal is add_SNo_com (Im z) (Im w) (CSNo_ImR z Hz) (CSNo_ImR w Hw).
Use symmetry.
An exact proof term for the current goal is add_CSNo_CIm w z Hw Hz.
Theorem. (add_CSNo_assoc) The following is provable:
∀z w v, CSNo zCSNo wCSNo vz + (w + v) = (z + w) + v
Proof:
Let z, w and v be given.
Assume Hz Hw Hv.
We prove the intermediate claim Lwv: CSNo (plus' w v).
An exact proof term for the current goal is CSNo_add_CSNo w v Hw Hv.
We prove the intermediate claim Lzw: CSNo (plus' z w).
An exact proof term for the current goal is CSNo_add_CSNo z w Hz Hw.
We prove the intermediate claim Lzwv1: CSNo (plus' z (plus' w v)).
An exact proof term for the current goal is CSNo_add_CSNo z (plus' w v) Hz Lwv.
We prove the intermediate claim Lzwv2: CSNo (plus' (plus' z w) v).
An exact proof term for the current goal is CSNo_add_CSNo (plus' z w) v Lzw Hv.
Apply CSNo_ReIm_split (plus' z (plus' w v)) (plus' (plus' z w) v) Lzwv1 Lzwv2 to the current goal.
We will prove Re (plus' z (plus' w v)) = Re (plus' (plus' z w) v).
Use transitivity with and (Re z + Re (plus' w v)).
An exact proof term for the current goal is add_CSNo_CRe z (plus' w v) Hz Lwv.
Use transitivity with and (Re (plus' z w) + Re v).
We will prove Re z + Re (plus' w v) = Re (plus' z w) + Re v.
Use transitivity with and (Re z + (Re w + Re v)).
Apply f_eq_i (λV ⇒ Re z + V) to the current goal.
An exact proof term for the current goal is add_CSNo_CRe w v Hw Hv.
We will prove Re z + (Re w + Re v) = Re (plus' z w) + Re v.
Use transitivity with and (Re z + Re w) + Re v.
An exact proof term for the current goal is add_SNo_assoc (Re z) (Re w) (Re v) (CSNo_ReR z Hz) (CSNo_ReR w Hw) (CSNo_ReR v Hv).
Use symmetry.
We will prove Re (plus' z w) + Re v = (Re z + Re w) + Re v.
We will prove (λU : setU + Re v) (Re (plus' z w)) = (λU : setU + Re v) (Re z + Re w).
Use f_equal.
We will prove Re (plus' z w) = Re z + Re w.
An exact proof term for the current goal is add_CSNo_CRe z w Hz Hw.
Use symmetry.
An exact proof term for the current goal is add_CSNo_CRe (plus' z w) v Lzw Hv.
We will prove Im (plus' z (plus' w v)) = Im (plus' (plus' z w) v).
Use transitivity with and (Im z + Im (plus' w v)).
An exact proof term for the current goal is add_CSNo_CIm z (plus' w v) Hz Lwv.
Use transitivity with and (Im (plus' z w) + Im v).
We will prove Im z + Im (plus' w v) = Im (plus' z w) + Im v.
Use transitivity with and (Im z + (Im w + Im v)).
Apply f_eq_i (λV ⇒ Im z + V) to the current goal.
An exact proof term for the current goal is add_CSNo_CIm w v Hw Hv.
We will prove Im z + (Im w + Im v) = Im (plus' z w) + Im v.
Use transitivity with and (Im z + Im w) + Im v.
An exact proof term for the current goal is add_SNo_assoc (Im z) (Im w) (Im v) (CSNo_ImR z Hz) (CSNo_ImR w Hw) (CSNo_ImR v Hv).
Use symmetry.
We will prove Im (plus' z w) + Im v = (Im z + Im w) + Im v.
We will prove (λU : setU + Im v) (Im (plus' z w)) = (λU : setU + Im v) (Im z + Im w).
Apply f_eq_i (λU ⇒ U + Im v) to the current goal.
We will prove Im (plus' z w) = Im z + Im w.
An exact proof term for the current goal is add_CSNo_CIm z w Hz Hw.
Use symmetry.
An exact proof term for the current goal is add_CSNo_CIm (plus' z w) v Lzw Hv.
Theorem. (add_SNo_rotate_4_0312) The following is provable:
∀x y z w, SNo xSNo ySNo zSNo w(x + y) + (z + w) = (x + w) + (y + z)
Proof:
Let x, y, z and w be given.
Assume Hx Hy Hz Hw.
rewrite the current goal using add_SNo_com z w Hz Hw (from left to right).
We will prove (x + y) + (w + z) = (x + w) + (y + z).
An exact proof term for the current goal is add_SNo_com_4_inner_mid x y w z Hx Hy Hw Hz.
Theorem. (mul_CSNo_ReR) The following is provable:
∀z w, CSNo zCSNo wSNo (Re z * Re w + - (Im z * Im w))
Proof:
Let z and w be given.
Assume Hz Hw.
Apply SNo_add_SNo to the current goal.
Apply SNo_mul_SNo to the current goal.
Apply CSNo_ReR to the current goal.
An exact proof term for the current goal is Hz.
Apply CSNo_ReR to the current goal.
An exact proof term for the current goal is Hw.
Apply SNo_minus_SNo to the current goal.
Apply SNo_mul_SNo to the current goal.
Apply CSNo_ImR to the current goal.
An exact proof term for the current goal is Hz.
Apply CSNo_ImR to the current goal.
An exact proof term for the current goal is Hw.
Theorem. (mul_CSNo_ImR) The following is provable:
∀z w, CSNo zCSNo wSNo (Re z * Im w + Im z * Re w)
Proof:
Let z and w be given.
Assume Hz Hw.
Apply SNo_add_SNo to the current goal.
Apply SNo_mul_SNo to the current goal.
Apply CSNo_ReR to the current goal.
An exact proof term for the current goal is Hz.
Apply CSNo_ImR to the current goal.
An exact proof term for the current goal is Hw.
Apply SNo_mul_SNo to the current goal.
Apply CSNo_ImR to the current goal.
An exact proof term for the current goal is Hz.
Apply CSNo_ReR to the current goal.
An exact proof term for the current goal is Hw.
Theorem. (mul_CSNo_CRe) The following is provable:
∀z w, CSNo zCSNo wRe (mult' z w) = Re z * Re w + - (Im z * Im w)
Proof:
Let z and w be given.
Assume Hz Hw.
An exact proof term for the current goal is CSNo_Re2 (Re z * Re w + - (Im z * Im w)) (Re z * Im w + Im z * Re w) (mul_CSNo_ReR z w Hz Hw) (mul_CSNo_ImR z w Hz Hw).
Theorem. (mul_CSNo_CIm) The following is provable:
∀z w, CSNo zCSNo wIm (mult' z w) = Re z * Im w + Im z * Re w
Proof:
Let z and w be given.
Assume Hz Hw.
An exact proof term for the current goal is CSNo_Im2 (Re z * Re w + - (Im z * Im w)) (Re z * Im w + Im z * Re w) (mul_CSNo_ReR z w Hz Hw) (mul_CSNo_ImR z w Hz Hw).
Theorem. (CSNo_mul_CSNo) The following is provable:
∀z w, CSNo zCSNo wCSNo (zw)
Proof:
Let z and w be given.
Assume Hz Hw.
We will prove CSNo (pa (Re z * Re w + - (Im z * Im w)) (Re z * Im w + Im z * Re w)).
Apply CSNo_I to the current goal.
An exact proof term for the current goal is mul_CSNo_ReR z w Hz Hw.
An exact proof term for the current goal is mul_CSNo_ImR z w Hz Hw.
Theorem. (mul_CSNo_com) The following is provable:
∀z w, CSNo zCSNo wzw = wz
Proof:
Let z and w be given.
Assume Hz Hw.
We prove the intermediate claim Lzw: CSNo (mult' z w).
An exact proof term for the current goal is CSNo_mul_CSNo z w Hz Hw.
We prove the intermediate claim Lwz: CSNo (mult' w z).
An exact proof term for the current goal is CSNo_mul_CSNo w z Hw Hz.
We prove the intermediate claim LRezR: SNo (Re z).
An exact proof term for the current goal is CSNo_ReR z Hz.
We prove the intermediate claim LRewR: SNo (Re w).
An exact proof term for the current goal is CSNo_ReR w Hw.
We prove the intermediate claim LImzR: SNo (Im z).
An exact proof term for the current goal is CSNo_ImR z Hz.
We prove the intermediate claim LImwR: SNo (Im w).
An exact proof term for the current goal is CSNo_ImR w Hw.
Apply CSNo_ReIm_split (mult' z w) (mult' w z) Lzw Lwz to the current goal.
We will prove Re (mult' z w) = Re (mult' w z).
Use transitivity with Re z * Re w + - (Im z * Im w), and Re w * Re z + - (Im w * Im z).
An exact proof term for the current goal is mul_CSNo_CRe z w Hz Hw.
Use f_equal.
An exact proof term for the current goal is mul_SNo_com (Re z) (Re w) LRezR LRewR.
Use f_equal.
An exact proof term for the current goal is mul_SNo_com (Im z) (Im w) LImzR LImwR.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CRe w z Hw Hz.
We will prove Im (mult' z w) = Im (mult' w z).
Use transitivity with Re z * Im w + Im z * Re w, Im z * Re w + Re z * Im w, and Re w * Im z + Im w * Re z.
An exact proof term for the current goal is mul_CSNo_CIm z w Hz Hw.
An exact proof term for the current goal is add_SNo_com (Re z * Im w) (Im z * Re w) (SNo_mul_SNo (Re z) (Im w) LRezR LImwR) (SNo_mul_SNo (Im z) (Re w) LImzR LRewR).
Use f_equal.
An exact proof term for the current goal is mul_SNo_com (Im z) (Re w) LImzR LRewR.
An exact proof term for the current goal is mul_SNo_com (Re z) (Im w) LRezR LImwR.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CIm w z Hw Hz.
Theorem. (mul_CSNo_assoc) The following is provable:
∀z w v, CSNo zCSNo wCSNo vz(wv) = (zw)v
Proof:
Let z, w and v be given.
Assume Hz Hw Hv.
We prove the intermediate claim Lwv: CSNo (mult' w v).
An exact proof term for the current goal is CSNo_mul_CSNo w v Hw Hv.
We prove the intermediate claim Lzw: CSNo (mult' z w).
An exact proof term for the current goal is CSNo_mul_CSNo z w Hz Hw.
We prove the intermediate claim Lzwv1: CSNo (mult' z (mult' w v)).
An exact proof term for the current goal is CSNo_mul_CSNo z (mult' w v) Hz Lwv.
We prove the intermediate claim Lzwv2: CSNo (mult' (mult' z w) v).
An exact proof term for the current goal is CSNo_mul_CSNo (mult' z w) v Lzw Hv.
We prove the intermediate claim LRezR: SNo (Re z).
An exact proof term for the current goal is CSNo_ReR z Hz.
We prove the intermediate claim LRewR: SNo (Re w).
An exact proof term for the current goal is CSNo_ReR w Hw.
We prove the intermediate claim LRevR: SNo (Re v).
An exact proof term for the current goal is CSNo_ReR v Hv.
We prove the intermediate claim LImzR: SNo (Im z).
An exact proof term for the current goal is CSNo_ImR z Hz.
We prove the intermediate claim LImwR: SNo (Im w).
An exact proof term for the current goal is CSNo_ImR w Hw.
We prove the intermediate claim LImvR: SNo (Im v).
An exact proof term for the current goal is CSNo_ImR v Hv.
Apply CSNo_ReIm_split (mult' z (mult' w v)) (mult' (mult' z w) v) Lzwv1 Lzwv2 to the current goal.
We will prove Re (mult' z (mult' w v)) = Re (mult' (mult' z w) v).
Use transitivity with (Re z * Re (mult' w v) + - (Im z * Im (mult' w v))), ((Re z * Re w * Re v + - (Re z * Im w * Im v)) + (- (Im z * Re w * Im v) + - (Im z * Im w * Re v))), ((Re z * Re w * Re v + - (Im z * Im w * Re v)) + (- (Re z * Im w * Im v) + - (Im z * Re w * Im v))), and (Re (mult' z w) * Re v + - (Im (mult' z w) * Im v)).
An exact proof term for the current goal is mul_CSNo_CRe z (mult' w v) Hz Lwv.
Use f_equal.
We will prove Re z * Re (mult' w v) = Re z * Re w * Re v + - (Re z * Im w * Im v).
Use transitivity with Re z * (Re w * Re v + - (Im w * Im v)), and Re z * Re w * Re v + Re z * (- (Im w * Im v)).
Use f_equal.
An exact proof term for the current goal is mul_CSNo_CRe w v Hw Hv.
Apply mul_SNo_distrL (Re z) (Re w * Re v) (- (Im w * Im v)) LRezR (SNo_mul_SNo (Re w) (Re v) LRewR LRevR) to the current goal.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo (Im w) (Im v) LImwR LImvR.
Use f_equal.
We will prove Re z * (- (Im w * Im v)) = - (Re z * Im w * Im v).
An exact proof term for the current goal is mul_SNo_minus_distrR (Re z) (Im w * Im v) LRezR (SNo_mul_SNo (Im w) (Im v) LImwR LImvR).
We will prove - (Im z * Im (mult' w v)) = - (Im z * Re w * Im v) + - (Im z * Im w * Re v).
Use transitivity with and - (Im z * Re w * Im v + Im z * Im w * Re v).
Use f_equal.
We will prove Im z * Im (mult' w v) = Im z * Re w * Im v + Im z * Im w * Re v.
Use transitivity with and Im z * (Re w * Im v + Im w * Re v).
Use f_equal.
An exact proof term for the current goal is mul_CSNo_CIm w v Hw Hv.
An exact proof term for the current goal is mul_SNo_distrL (Im z) (Re w * Im v) (Im w * Re v) LImzR (SNo_mul_SNo (Re w) (Im v) LRewR LImvR) (SNo_mul_SNo (Im w) (Re v) LImwR LRevR).
Apply minus_add_SNo_distr to the current goal.
An exact proof term for the current goal is SNo_mul_SNo_3 (Im z) (Re w) (Im v) LImzR LRewR LImvR.
An exact proof term for the current goal is SNo_mul_SNo_3 (Im z) (Im w) (Re v) LImzR LImwR LRevR.
Apply add_SNo_rotate_4_0312 to the current goal.
An exact proof term for the current goal is SNo_mul_SNo_3 (Re z) (Re w) (Re v) LRezR LRewR LRevR.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo_3 (Re z) (Im w) (Im v) LRezR LImwR LImvR.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo_3 (Im z) (Re w) (Im v) LImzR LRewR LImvR.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo_3 (Im z) (Im w) (Re v) LImzR LImwR LRevR.
Use f_equal.
We will prove Re z * Re w * Re v + - (Im z * Im w * Re v) = Re (mult' z w) * Re v.
Use transitivity with (Re z * Re w) * Re v + (- (Im z * Im w)) * Re v, and (Re z * Re w + - (Im z * Im w)) * Re v.
Use f_equal.
We will prove Re z * Re w * Re v = (Re z * Re w) * Re v.
An exact proof term for the current goal is mul_SNo_assoc (Re z) (Re w) (Re v) LRezR LRewR LRevR.
We will prove - (Im z * Im w * Re v) = (- (Im z * Im w)) * Re v.
Use transitivity with and - ((Im z * Im w) * Re v).
Use f_equal.
An exact proof term for the current goal is mul_SNo_assoc (Im z) (Im w) (Re v) LImzR LImwR LRevR.
Use symmetry.
An exact proof term for the current goal is mul_SNo_minus_distrL (Im z * Im w) (Re v) (SNo_mul_SNo (Im z) (Im w) LImzR LImwR) LRevR.
Use symmetry.
An exact proof term for the current goal is mul_SNo_distrR (Re z * Re w) (- (Im z * Im w)) (Re v) (SNo_mul_SNo (Re z) (Re w) LRezR LRewR) (SNo_minus_SNo (Im z * Im w) (SNo_mul_SNo (Im z) (Im w) LImzR LImwR)) LRevR.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CRe z w Hz Hw.
We will prove - (Re z * Im w * Im v) + - (Im z * Re w * Im v) = - (Im (mult' z w) * Im v).
Use transitivity with and - (Re z * Im w * Im v + Im z * Re w * Im v).
Use symmetry.
Apply minus_add_SNo_distr to the current goal.
An exact proof term for the current goal is SNo_mul_SNo_3 (Re z) (Im w) (Im v) LRezR LImwR LImvR.
An exact proof term for the current goal is SNo_mul_SNo_3 (Im z) (Re w) (Im v) LImzR LRewR LImvR.
Use f_equal.
Use transitivity with (Re z * Im w) * Im v + (Im z * Re w) * Im v, and (Re z * Im w + Im z * Re w) * Im v.
Use f_equal.
An exact proof term for the current goal is mul_SNo_assoc (Re z) (Im w) (Im v) LRezR LImwR LImvR.
An exact proof term for the current goal is mul_SNo_assoc (Im z) (Re w) (Im v) LImzR LRewR LImvR.
Use symmetry.
An exact proof term for the current goal is mul_SNo_distrR (Re z * Im w) (Im z * Re w) (Im v) (SNo_mul_SNo (Re z) (Im w) LRezR LImwR) (SNo_mul_SNo (Im z) (Re w) LImzR LRewR) LImvR.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CIm z w Hz Hw.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CRe (mult' z w) v Lzw Hv.
We will prove Im (mult' z (mult' w v)) = Im (mult' (mult' z w) v).
Use transitivity with (Re z * Im (mult' w v) + (Im z * Re (mult' w v))), ((Re z * Re w * Im v + Re z * Im w * Re v) + (Im z * Re w * Re v + - (Im z * Im w * Im v))), ((Re z * Re w * Im v + - (Im z * Im w * Im v)) + (Re z * Im w * Re v + Im z * Re w * Re v)), and (Re (mult' z w) * Im v + Im (mult' z w) * Re v).
An exact proof term for the current goal is mul_CSNo_CIm z (mult' w v) Hz Lwv.
Use f_equal.
We will prove Re z * Im (mult' w v) = Re z * Re w * Im v + Re z * Im w * Re v.
Use transitivity with and Re z * (Re w * Im v + Im w * Re v).
Use f_equal.
An exact proof term for the current goal is mul_CSNo_CIm w v Hw Hv.
An exact proof term for the current goal is mul_SNo_distrL (Re z) (Re w * Im v) (Im w * Re v) LRezR (SNo_mul_SNo (Re w) (Im v) LRewR LImvR) (SNo_mul_SNo (Im w) (Re v) LImwR LRevR).
We will prove Im z * Re (mult' w v) = Im z * Re w * Re v + - (Im z * Im w * Im v).
Use transitivity with Im z * (Re w * Re v + - (Im w * Im v)), and Im z * Re w * Re v + Im z * (- (Im w * Im v)).
Use f_equal.
An exact proof term for the current goal is mul_CSNo_CRe w v Hw Hv.
An exact proof term for the current goal is mul_SNo_distrL (Im z) (Re w * Re v) (- (Im w * Im v)) LImzR (SNo_mul_SNo (Re w) (Re v) LRewR LRevR) (SNo_minus_SNo (Im w * Im v) (SNo_mul_SNo (Im w) (Im v) LImwR LImvR)).
Use f_equal.
An exact proof term for the current goal is mul_SNo_minus_distrR (Im z) (Im w * Im v) LImzR (SNo_mul_SNo (Im w) (Im v) LImwR LImvR).
Apply add_SNo_rotate_4_0312 to the current goal.
An exact proof term for the current goal is SNo_mul_SNo_3 (Re z) (Re w) (Im v) LRezR LRewR LImvR.
An exact proof term for the current goal is SNo_mul_SNo_3 (Re z) (Im w) (Re v) LRezR LImwR LRevR.
An exact proof term for the current goal is SNo_mul_SNo_3 (Im z) (Re w) (Re v) LImzR LRewR LRevR.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo_3 (Im z) (Im w) (Im v) LImzR LImwR LImvR.
Use f_equal.
We will prove Re z * Re w * Im v + - (Im z * Im w * Im v) = Re (mult' z w) * Im v.
Use transitivity with (Re z * Re w) * Im v + (- (Im z * Im w)) * Im v, and (Re z * Re w + - (Im z * Im w)) * Im v.
Use f_equal.
We will prove Re z * Re w * Im v = (Re z * Re w) * Im v.
An exact proof term for the current goal is mul_SNo_assoc (Re z) (Re w) (Im v) LRezR LRewR LImvR.
We will prove - (Im z * Im w * Im v) = (- (Im z * Im w)) * Im v.
Use transitivity with and - ((Im z * Im w) * Im v).
Use f_equal.
An exact proof term for the current goal is mul_SNo_assoc (Im z) (Im w) (Im v) LImzR LImwR LImvR.
Use symmetry.
We will prove (- (Im z * Im w)) * Im v = - ((Im z * Im w) * Im v).
An exact proof term for the current goal is mul_SNo_minus_distrL (Im z * Im w) (Im v) (SNo_mul_SNo (Im z) (Im w) LImzR LImwR) LImvR.
Use symmetry.
An exact proof term for the current goal is mul_SNo_distrR (Re z * Re w) (- (Im z * Im w)) (Im v) (SNo_mul_SNo (Re z) (Re w) LRezR LRewR) (SNo_minus_SNo (Im z * Im w) (SNo_mul_SNo (Im z) (Im w) LImzR LImwR)) LImvR.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CRe z w Hz Hw.
We will prove Re z * Im w * Re v + Im z * Re w * Re v = Im (mult' z w) * Re v.
Use transitivity with (Re z * Im w) * Re v + (Im z * Re w) * Re v, and (Re z * Im w + Im z * Re w) * Re v.
Use f_equal.
An exact proof term for the current goal is mul_SNo_assoc (Re z) (Im w) (Re v) LRezR LImwR LRevR.
An exact proof term for the current goal is mul_SNo_assoc (Im z) (Re w) (Re v) LImzR LRewR LRevR.
Use symmetry.
An exact proof term for the current goal is mul_SNo_distrR (Re z * Im w) (Im z * Re w) (Re v) (SNo_mul_SNo (Re z) (Im w) LRezR LImwR) (SNo_mul_SNo (Im z) (Re w) LImzR LRewR) LRevR.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CIm z w Hz Hw.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CIm (mult' z w) v Lzw Hv.
Theorem. (CSNo_0) The following is provable:
Proof:
Apply SNo_CSNo to the current goal.
An exact proof term for the current goal is SNo_0.
Theorem. (CSNo_1) The following is provable:
Proof:
Apply SNo_CSNo to the current goal.
An exact proof term for the current goal is SNo_1.
Theorem. (mul_CSNo_oneL) The following is provable:
∀z, CSNo z1z = z
Proof:
Let z be given.
Assume Hz.
We prove the intermediate claim L1z: CSNo (mult' 1 z).
An exact proof term for the current goal is CSNo_mul_CSNo 1 z CSNo_1 Hz.
We prove the intermediate claim LRezR: SNo (Re z).
An exact proof term for the current goal is CSNo_ReR z Hz.
We prove the intermediate claim LImzR: SNo (Im z).
An exact proof term for the current goal is CSNo_ImR z Hz.
Apply CSNo_ReIm_split (mult' 1 z) z L1z Hz to the current goal.
We will prove Re (mult' 1 z) = Re z.
Use transitivity with Re 1 * Re z + - (Im 1 * Im z), and Re z + 0.
An exact proof term for the current goal is mul_CSNo_CRe 1 z CSNo_1 Hz.
Use f_equal.
We will prove Re 1 * Re z = Re z.
rewrite the current goal using SNo_pair_0 1 (from right to left).
We will prove Re (pa 1 0) * Re z = Re z.
Apply CSNo_Re2 1 0 SNo_1 SNo_0 (λU V ⇒ V * Re z = Re z) to the current goal.
We will prove 1 * Re z = Re z.
An exact proof term for the current goal is mul_SNo_oneL (Re z) LRezR.
We will prove - (Im 1 * Im z) = 0.
rewrite the current goal using minus_SNo_0 (from right to left) at position 2.
We will prove - (Im 1 * Im z) = - 0.
Use f_equal.
rewrite the current goal using SNo_pair_0 1 (from right to left).
We will prove Im (pa 1 0) * Im z = 0.
Use transitivity with and 0 * Im z.
Use f_equal.
An exact proof term for the current goal is CSNo_Im2 1 0 SNo_1 SNo_0.
An exact proof term for the current goal is mul_SNo_zeroL (Im z) LImzR.
Use transitivity with and 0 + Re z.
An exact proof term for the current goal is add_SNo_com (Re z) 0 LRezR SNo_0.
An exact proof term for the current goal is add_SNo_0L (Re z) LRezR.
We will prove Im (mult' 1 z) = Im z.
Use transitivity with Re 1 * Im z + Im 1 * Re z, and Im z + 0.
An exact proof term for the current goal is mul_CSNo_CIm 1 z CSNo_1 Hz.
Use f_equal.
We will prove Re 1 * Im z = Im z.
rewrite the current goal using SNo_pair_0 1 (from right to left).
We will prove Re (pa 1 0) * Im z = Im z.
Apply CSNo_Re2 1 0 SNo_1 SNo_0 (λU V ⇒ V * Im z = Im z) to the current goal.
We will prove 1 * Im z = Im z.
An exact proof term for the current goal is mul_SNo_oneL (Im z) LImzR.
We will prove Im 1 * Re z = 0.
Use transitivity with and 0 * Re z.
Use f_equal.
rewrite the current goal using SNo_pair_0 1 (from right to left).
An exact proof term for the current goal is CSNo_Im2 1 0 SNo_1 SNo_0.
An exact proof term for the current goal is mul_SNo_zeroL (Re z) LRezR.
Use transitivity with and 0 + Im z.
An exact proof term for the current goal is add_SNo_com (Im z) 0 LImzR SNo_0.
An exact proof term for the current goal is add_SNo_0L (Im z) LImzR.
Theorem. (mul_CSNo_distrL) The following is provable:
∀z w v, CSNo zCSNo wCSNo vz(w + v) = zw + zv
Proof:
Let z, w and v be given.
Assume Hz Hw Hv.
We prove the intermediate claim Lwv: CSNo (plus' w v).
An exact proof term for the current goal is CSNo_add_CSNo w v Hw Hv.
We prove the intermediate claim Lzw: CSNo (mult' z w).
An exact proof term for the current goal is CSNo_mul_CSNo z w Hz Hw.
We prove the intermediate claim Lzv: CSNo (mult' z v).
An exact proof term for the current goal is CSNo_mul_CSNo z v Hz Hv.
We prove the intermediate claim Lzwv: CSNo (mult' z (plus' w v)).
An exact proof term for the current goal is CSNo_mul_CSNo z (plus' w v) Hz Lwv.
We prove the intermediate claim Lzwzv: CSNo (plus' (mult' z w) (mult' z v)).
An exact proof term for the current goal is CSNo_add_CSNo (mult' z w) (mult' z v) Lzw Lzv.
We prove the intermediate claim LRezR: SNo (Re z).
An exact proof term for the current goal is CSNo_ReR z Hz.
We prove the intermediate claim LRewR: SNo (Re w).
An exact proof term for the current goal is CSNo_ReR w Hw.
We prove the intermediate claim LRevR: SNo (Re v).
An exact proof term for the current goal is CSNo_ReR v Hv.
We prove the intermediate claim LImzR: SNo (Im z).
An exact proof term for the current goal is CSNo_ImR z Hz.
We prove the intermediate claim LImwR: SNo (Im w).
An exact proof term for the current goal is CSNo_ImR w Hw.
We prove the intermediate claim LImvR: SNo (Im v).
An exact proof term for the current goal is CSNo_ImR v Hv.
Apply CSNo_ReIm_split (mult' z (plus' w v)) (plus' (mult' z w) (mult' z v)) Lzwv Lzwzv to the current goal.
We will prove Re (mult' z (plus' w v)) = Re (plus' (mult' z w) (mult' z v)).
Use transitivity with Re z * Re (plus' w v) + - Im z * Im (plus' w v), (Re z * Re w + Re z * Re v) + (- Im z * Im w + - Im z * Im v), (Re z * Re w + - (Im z * Im w)) + (Re z * Re v + - (Im z * Im v)), and Re (mult' z w) + Re (mult' z v).
An exact proof term for the current goal is mul_CSNo_CRe z (plus' w v) Hz Lwv.
Use f_equal.
We will prove Re z * Re (plus' w v) = Re z * Re w + Re z * Re v.
Apply mul_SNo_distrL (Re z) (Re w) (Re v) LRezR LRewR LRevR (λU V ⇒ Re z * Re (plus' w v) = U) to the current goal.
We will prove Re z * Re (plus' w v) = Re z * (Re w + Re v).
Use f_equal.
An exact proof term for the current goal is add_CSNo_CRe w v Hw Hv.
We will prove - Im z * Im (plus' w v) = - Im z * Im w + - Im z * Im v.
Use transitivity with - Im z * (Im w + Im v), (- Im z) * (Im w + Im v), and (- Im z) * Im w + (- Im z) * Im v.
Use f_equal.
Use f_equal.
An exact proof term for the current goal is add_CSNo_CIm w v Hw Hv.
Use symmetry.
An exact proof term for the current goal is mul_SNo_minus_distrL (Im z) (Im w + Im v) LImzR (SNo_add_SNo (Im w) (Im v) LImwR LImvR).
An exact proof term for the current goal is mul_SNo_distrL (- Im z) (Im w) (Im v) (SNo_minus_SNo (Im z) LImzR) LImwR LImvR.
Use f_equal.
An exact proof term for the current goal is mul_SNo_minus_distrL (Im z) (Im w) LImzR LImwR.
An exact proof term for the current goal is mul_SNo_minus_distrL (Im z) (Im v) LImzR LImvR.
Apply add_SNo_com_4_inner_mid to the current goal.
An exact proof term for the current goal is SNo_mul_SNo (Re z) (Re w) LRezR LRewR.
An exact proof term for the current goal is SNo_mul_SNo (Re z) (Re v) LRezR LRevR.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo (Im z) (Im w) LImzR LImwR.
Apply SNo_minus_SNo to the current goal.
An exact proof term for the current goal is SNo_mul_SNo (Im z) (Im v) LImzR LImvR.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CRe z w Hz Hw.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CRe z v Hz Hv.
Use symmetry.
An exact proof term for the current goal is add_CSNo_CRe (mult' z w) (mult' z v) Lzw Lzv.
We will prove Im (mult' z (plus' w v)) = Im (plus' (mult' z w) (mult' z v)).
Use transitivity with Re z * Im (plus' w v) + Im z * Re (plus' w v), (Re z * Im w + Re z * Im v) + (Im z * Re w + Im z * Re v), (Re z * Im w + Im z * Re w) + (Re z * Im v + Im z * Re v), and Im (mult' z w) + Im (mult' z v).
An exact proof term for the current goal is mul_CSNo_CIm z (plus' w v) Hz Lwv.
Use f_equal.
We will prove Re z * Im (plus' w v) = Re z * Im w + Re z * Im v.
Apply mul_SNo_distrL (Re z) (Im w) (Im v) LRezR LImwR LImvR (λU V ⇒ Re z * Im (plus' w v) = U) to the current goal.
We will prove Re z * Im (plus' w v) = Re z * (Im w + Im v).
Use f_equal.
An exact proof term for the current goal is add_CSNo_CIm w v Hw Hv.
We will prove Im z * Re (plus' w v) = Im z * Re w + Im z * Re v.
Use transitivity with and Im z * (Re w + Re v).
Use f_equal.
An exact proof term for the current goal is add_CSNo_CRe w v Hw Hv.
An exact proof term for the current goal is mul_SNo_distrL (Im z) (Re w) (Re v) LImzR LRewR LRevR.
Apply add_SNo_com_4_inner_mid to the current goal.
An exact proof term for the current goal is SNo_mul_SNo (Re z) (Im w) LRezR LImwR.
An exact proof term for the current goal is SNo_mul_SNo (Re z) (Im v) LRezR LImvR.
An exact proof term for the current goal is SNo_mul_SNo (Im z) (Re w) LImzR LRewR.
An exact proof term for the current goal is SNo_mul_SNo (Im z) (Re v) LImzR LRevR.
Use f_equal.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CIm z w Hz Hw.
Use symmetry.
An exact proof term for the current goal is mul_CSNo_CIm z v Hz Hv.
Use symmetry.
An exact proof term for the current goal is add_CSNo_CIm (mult' z w) (mult' z v) Lzw Lzv.
Theorem. (mul_SNo_mul_CSNo) The following is provable:
∀x y, SNo xSNo yx * y = xy
Proof:
Let x and y be given.
Assume Hx Hy.
Use transitivity with Re x * Re y, and pa (Re x * Re y) 0.
rewrite the current goal using SNo_Re x Hx (from left to right).
rewrite the current goal using SNo_Re y Hy (from left to right).
Use reflexivity.
Use symmetry.
An exact proof term for the current goal is SNo_pair_0 (Re x * Re y).
We will prove pa (Re x * Re y) 0 = pa (Re x * Re y + - Im x * Im y) (Re x * Im y + Im x * Re y).
Use f_equal.
We will prove Re x * Re y = Re x * Re y + - Im x * Im y.
rewrite the current goal using SNo_Im x Hx (from left to right).
rewrite the current goal using mul_SNo_zeroL (Im y) (CSNo_ImR y (SNo_CSNo y Hy)) (from left to right).
We will prove Re x * Re y = Re x * Re y + - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
Use symmetry.
We will prove Re x * Re y + 0 = Re x * Re y.
An exact proof term for the current goal is add_SNo_0R (Re x * Re y) (SNo_mul_SNo (Re x) (Re y) (CSNo_ReR x (SNo_CSNo x Hx)) (CSNo_ReR y (SNo_CSNo y Hy))).
We will prove 0 = Re x * Im y + Im x * Re y.
rewrite the current goal using SNo_Im x Hx (from left to right).
rewrite the current goal using SNo_Im y Hy (from left to right).
rewrite the current goal using mul_SNo_zeroL (Re y) (CSNo_ReR y (SNo_CSNo y Hy)) (from left to right).
rewrite the current goal using mul_SNo_zeroR (Re x) (CSNo_ReR x (SNo_CSNo x Hx)) (from left to right).
Use symmetry.
An exact proof term for the current goal is add_SNo_0R 0 SNo_0.
Theorem. (Complex_i_sqr) The following is provable:
ii = :-: 1
Proof:
We prove the intermediate claim Lii: CSNo (ii).
An exact proof term for the current goal is CSNo_mul_CSNo i i CSNo_Complex_i CSNo_Complex_i.
We prove the intermediate claim Lm1: CSNo (:-: 1).
An exact proof term for the current goal is CSNo_minus_CSNo 1 CSNo_1.
Apply CSNo_ReIm_split (ii) (:-: 1) Lii Lm1 to the current goal.
We will prove Re (ii) = Re (:-: 1).
rewrite the current goal using mul_CSNo_CRe i i CSNo_Complex_i CSNo_Complex_i (from left to right).
rewrite the current goal using minus_CSNo_CRe 1 CSNo_1 (from left to right).
We will prove Re i * Re i + - Im i * Im i = - Re 1.
rewrite the current goal using Re_i (from left to right).
rewrite the current goal using Im_i (from left to right).
rewrite the current goal using Re_1 (from left to right).
We will prove 0 * 0 + - 1 * 1 = - 1.
rewrite the current goal using mul_SNo_zeroL 0 SNo_0 (from left to right).
rewrite the current goal using mul_SNo_oneL 1 SNo_1 (from left to right).
We will prove 0 + - 1 = - 1.
An exact proof term for the current goal is add_SNo_0L (- 1) (SNo_minus_SNo 1 SNo_1).
We will prove Im (ii) = Im (:-: 1).
rewrite the current goal using mul_CSNo_CIm i i CSNo_Complex_i CSNo_Complex_i (from left to right).
rewrite the current goal using minus_CSNo_CIm 1 CSNo_1 (from left to right).
We will prove Re i * Im i + Im i * Re i = - Im 1.
rewrite the current goal using Re_i (from left to right).
rewrite the current goal using Im_i (from left to right).
rewrite the current goal using Im_1 (from left to right).
We will prove 0 * 1 + 1 * 0 = - 0.
rewrite the current goal using minus_SNo_0 (from left to right).
rewrite the current goal using mul_SNo_zeroL 1 SNo_1 (from left to right).
rewrite the current goal using mul_SNo_zeroR 1 SNo_1 (from left to right).
We will prove 0 + 0 = 0.
An exact proof term for the current goal is add_SNo_0L 0 SNo_0.
Theorem. (CSNo_relative_recip) The following is provable:
∀z, CSNo z∀u, SNo u(Re z * Re z + Im z * Im z) * u = 1z(uRe z + :-: iuIm z) = 1
Proof:
Let z be given.
Assume Hz.
Let u be given.
Assume Hu.
Assume Hur: (Re z * Re z + Im z * Im z) * u = 1.
We will prove z(uRe z + :-: iuIm z) = 1.
We prove the intermediate claim LRezR: SNo (Re z).
An exact proof term for the current goal is CSNo_ReR z Hz.
We prove the intermediate claim LImzR: SNo (Im z).
An exact proof term for the current goal is CSNo_ImR z Hz.
We will prove z(uRe z + :-: iuIm z) = 1.
rewrite the current goal using mul_SNo_mul_CSNo u (Re z) Hu LRezR (from right to left).
rewrite the current goal using mul_SNo_mul_CSNo u (Im z) Hu LImzR (from right to left).
We will prove z(u * Re z + :-: iu * Im z) = 1.
We prove the intermediate claim LuRez: SNo (u * Re z).
An exact proof term for the current goal is SNo_mul_SNo u (Re z) ?? ??.
We prove the intermediate claim LuRez': CSNo (u * Re z).
Apply SNo_CSNo to the current goal.
An exact proof term for the current goal is LuRez.
We prove the intermediate claim LuImz: SNo (u * Im z).
An exact proof term for the current goal is SNo_mul_SNo u (Im z) ?? ??.
We prove the intermediate claim LuImz': CSNo (u * Im z).
Apply SNo_CSNo to the current goal.
An exact proof term for the current goal is LuImz.
We prove the intermediate claim LiuImz: CSNo (iu * Im z).
Apply CSNo_mul_CSNo to the current goal.
An exact proof term for the current goal is CSNo_Complex_i.
An exact proof term for the current goal is LuImz'.
We prove the intermediate claim LmiuImz: CSNo (:-: iu * Im z).
Apply CSNo_minus_CSNo to the current goal.
An exact proof term for the current goal is LiuImz.
We prove the intermediate claim L1: CSNo (u * Re z + :-: iu * Im z).
Apply CSNo_add_CSNo to the current goal.
We will prove CSNo (u * Re z).
An exact proof term for the current goal is LuRez'.
We will prove CSNo (:-: iu * Im z).
An exact proof term for the current goal is LmiuImz.
We prove the intermediate claim LRezRez: SNo (Re z * Re z).
An exact proof term for the current goal is SNo_mul_SNo (Re z) (Re z) ?? ??.
We prove the intermediate claim LImzImz: SNo (Im z * Im z).
An exact proof term for the current goal is SNo_mul_SNo (Im z) (Im z) ?? ??.
Apply CSNo_ReIm_split (z(u * Re z + :-: iu * Im z)) 1 (CSNo_mul_CSNo z (u * Re z + :-: iu * Im z) Hz L1) CSNo_1 to the current goal.
We will prove Re (z(u * Re z + :-: iu * Im z)) = Re 1.
rewrite the current goal using Re_1 (from left to right).
rewrite the current goal using mul_CSNo_CRe z (u * Re z + :-: iu * Im z) Hz L1 (from left to right).
We will prove Re z * Re (u * Re z + :-: iu * Im z) + - Im z * Im (u * Re z + :-: iu * Im z) = 1.
rewrite the current goal using add_CSNo_CRe (u * Re z) (:-: iu * Im z) LuRez' LmiuImz (from left to right).
rewrite the current goal using add_CSNo_CIm (u * Re z) (:-: iu * Im z) LuRez' LmiuImz (from left to right).
We will prove Re z * (Re (u * Re z) + Re (:-: iu * Im z)) + - Im z * (Im (u * Re z) + Im (:-: iu * Im z)) = 1.
rewrite the current goal using minus_CSNo_CRe (iu * Im z) LiuImz (from left to right).
rewrite the current goal using minus_CSNo_CIm (iu * Im z) LiuImz (from left to right).
rewrite the current goal using SNo_Re (u * Re z) LuRez (from left to right).
rewrite the current goal using SNo_Im (u * Re z) LuRez (from left to right).
We will prove Re z * (u * Re z + - Re (iu * Im z)) + - Im z * (0 + - Im (iu * Im z)) = 1.
rewrite the current goal using mul_CSNo_CRe i (u * Im z) CSNo_Complex_i LuImz' (from left to right).
We will prove Re z * (u * Re z + - (Re i * Re (u * Im z) + - Im i * Im (u * Im z))) + - Im z * (0 + - Im (iu * Im z)) = 1.
rewrite the current goal using mul_CSNo_CIm i (u * Im z) CSNo_Complex_i LuImz' (from left to right).
We will prove Re z * (u * Re z + - (Re i * Re (u * Im z) + - Im i * Im (u * Im z))) + - Im z * (0 + - (Re i * Im (u * Im z) + Im i * Re (u * Im z))) = 1.
rewrite the current goal using Re_i (from left to right).
rewrite the current goal using Im_i (from left to right).
We will prove Re z * (u * Re z + - (0 * Re (u * Im z) + - 1 * Im (u * Im z))) + - Im z * (0 + - (0 * Im (u * Im z) + 1 * Re (u * Im z))) = 1.
rewrite the current goal using SNo_Re (u * Im z) LuImz (from left to right).
rewrite the current goal using SNo_Im (u * Im z) LuImz (from left to right).
We will prove Re z * (u * Re z + - (0 * (u * Im z) + - 1 * 0)) + - Im z * (0 + - (0 * 0 + 1 * (u * Im z))) = 1.
rewrite the current goal using mul_SNo_zeroR 0 SNo_0 (from left to right).
rewrite the current goal using mul_SNo_zeroL (u * Im z) LuImz (from left to right).
rewrite the current goal using mul_SNo_zeroR 1 SNo_1 (from left to right).
We will prove Re z * (u * Re z + - (0 + - 0)) + - Im z * (0 + - (0 + 1 * (u * Im z))) = 1.
rewrite the current goal using minus_SNo_0 (from left to right).
rewrite the current goal using add_SNo_0L 0 SNo_0 (from left to right).
rewrite the current goal using minus_SNo_0 (from left to right).
rewrite the current goal using add_SNo_0R (u * Re z) LuRez (from left to right).
We will prove Re z * (u * Re z) + - Im z * (0 + - (0 + 1 * (u * Im z))) = 1.
rewrite the current goal using mul_SNo_oneL (u * Im z) LuImz (from left to right).
We will prove Re z * (u * Re z) + - Im z * (0 + - (0 + (u * Im z))) = 1.
rewrite the current goal using add_SNo_0L (u * Im z) LuImz (from left to right).
rewrite the current goal using add_SNo_0L (- u * Im z) (SNo_minus_SNo (u * Im z) LuImz) (from left to right).
We will prove Re z * (u * Re z) + - Im z * (- (u * Im z)) = 1.
rewrite the current goal using mul_SNo_minus_distrR (Im z) (- u * Im z) LImzR (SNo_minus_SNo (u * Im z) LuImz) (from right to left).
rewrite the current goal using minus_SNo_invol (u * Im z) LuImz (from left to right).
We will prove Re z * (u * Re z) + Im z * (u * Im z) = 1.
rewrite the current goal using mul_SNo_com_3_0_1 (Re z) u (Re z) ?? ?? ?? (from left to right).
rewrite the current goal using mul_SNo_com_3_0_1 (Im z) u (Im z) ?? ?? ?? (from left to right).
We will prove u * (Re z * Re z) + u * (Im z * Im z) = 1.
rewrite the current goal using mul_SNo_com u (Re z * Re z) ?? ?? (from left to right).
rewrite the current goal using mul_SNo_com u (Im z * Im z) ?? ?? (from left to right).
rewrite the current goal using mul_SNo_distrR (Re z * Re z) (Im z * Im z) u ?? ?? ?? (from right to left).
An exact proof term for the current goal is Hur.
We will prove Im (z(u * Re z + :-: iu * Im z)) = Im 1.
rewrite the current goal using mul_CSNo_CIm z (u * Re z + :-: iu * Im z) Hz L1 (from left to right).
rewrite the current goal using Im_1 (from left to right).
We will prove Re z * Im (u * Re z + :-: iu * Im z) + Im z * Re (u * Re z + :-: iu * Im z) = 0.
rewrite the current goal using add_CSNo_CRe (u * Re z) (:-: iu * Im z) LuRez' LmiuImz (from left to right).
rewrite the current goal using add_CSNo_CIm (u * Re z) (:-: iu * Im z) LuRez' LmiuImz (from left to right).
We will prove Re z * (Im (u * Re z) + Im (:-: iu * Im z)) + Im z * (Re (u * Re z) + Re (:-: iu * Im z)) = 0.
rewrite the current goal using minus_CSNo_CRe (iu * Im z) LiuImz (from left to right).
rewrite the current goal using minus_CSNo_CIm (iu * Im z) LiuImz (from left to right).
We will prove Re z * (Im (u * Re z) + - Im (iu * Im z)) + Im z * (Re (u * Re z) + - Re (iu * Im z)) = 0.
rewrite the current goal using SNo_Re (u * Re z) LuRez (from left to right).
rewrite the current goal using SNo_Im (u * Re z) LuRez (from left to right).
We will prove Re z * (0 + - Im (iu * Im z)) + Im z * ((u * Re z) + - Re (iu * Im z)) = 0.
rewrite the current goal using mul_CSNo_CRe i (u * Im z) CSNo_Complex_i LuImz' (from left to right).
We will prove Re z * (0 + - Im (iu * Im z)) + Im z * ((u * Re z) + - (Re i * Re (u * Im z) + - Im i * Im (u * Im z))) = 0.
rewrite the current goal using mul_CSNo_CIm i (u * Im z) CSNo_Complex_i LuImz' (from left to right).
We will prove Re z * (0 + - (Re i * Im (u * Im z) + Im i * Re (u * Im z))) + Im z * ((u * Re z) + - (Re i * Re (u * Im z) + - Im i * Im (u * Im z))) = 0.
rewrite the current goal using Re_i (from left to right).
rewrite the current goal using Im_i (from left to right).
We will prove Re z * (0 + - (0 * Im (u * Im z) + 1 * Re (u * Im z))) + Im z * ((u * Re z) + - (0 * Re (u * Im z) + - 1 * Im (u * Im z))) = 0.
rewrite the current goal using SNo_Re (u * Im z) LuImz (from left to right).
rewrite the current goal using SNo_Im (u * Im z) LuImz (from left to right).
We will prove Re z * (0 + - (0 * 0 + 1 * (u * Im z))) + Im z * ((u * Re z) + - (0 * (u * Im z) + - 1 * 0)) = 0.
rewrite the current goal using mul_SNo_zeroL 0 SNo_0 (from left to right).
rewrite the current goal using mul_SNo_zeroL (u * Im z) ?? (from left to right).
rewrite the current goal using mul_SNo_zeroR 1 SNo_1 (from left to right).
rewrite the current goal using mul_SNo_oneL (u * Im z) ?? (from left to right).
We will prove Re z * (0 + - (0 + u * Im z)) + Im z * ((u * Re z) + - (0 + - 0)) = 0.
rewrite the current goal using minus_SNo_0 (from left to right).
rewrite the current goal using add_SNo_0L 0 SNo_0 (from left to right).
rewrite the current goal using minus_SNo_0 (from left to right).
rewrite the current goal using add_SNo_0R (u * Re z) ?? (from left to right).
rewrite the current goal using add_SNo_0L (u * Im z) ?? (from left to right).
We will prove Re z * (0 + - (u * Im z)) + Im z * (u * Re z) = 0.
rewrite the current goal using add_SNo_0L (- (u * Im z)) (SNo_minus_SNo (u * Im z) ??) (from left to right).
We will prove Re z * (- (u * Im z)) + Im z * (u * Re z) = 0.
rewrite the current goal using mul_SNo_minus_distrR (Re z) (u * Im z) ?? ?? (from left to right).
We will prove - Re z * u * Im z + Im z * u * Re z = 0.
rewrite the current goal using mul_SNo_com_3_0_1 (Re z) u (Im z) ?? ?? ?? (from left to right).
rewrite the current goal using mul_SNo_com_3_0_1 (Im z) u (Re z) ?? ?? ?? (from left to right).
We will prove - u * Re z * Im z + u * Im z * Re z = 0.
rewrite the current goal using mul_SNo_com (Re z) (Im z) ?? ?? (from left to right).
We will prove - u * Im z * Re z + u * Im z * Re z = 0.
An exact proof term for the current goal is add_SNo_minus_SNo_linv (u * Im z * Re z) (SNo_mul_SNo_3 u (Im z) (Re z) ?? ?? ??).
End of Section ComplexSNo
Beginning of Section Complex
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_CSNo.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_CSNo.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_CSNo.
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.
Let i ≝ Complex_i
Let Re : setsetCSNo_Re
Let Im : setsetCSNo_Im
Let pa : setsetsetSNo_pair
Definition. We define complex to be {pa (u 0) (u 1)|u ∈ realreal} of type set.
Theorem. (complex_I) The following is provable:
∀x y ∈ real, pa x ycomplex
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
We will prove pa x ycomplex.
rewrite the current goal using tuple_2_0_eq x y (from right to left).
rewrite the current goal using tuple_2_1_eq x y (from right to left) at position 2.
We will prove pa ((x,y) 0) ((x,y) 1)complex.
Apply ReplI (realreal) (λu ⇒ pa (u 0) (u 1)) to the current goal.
We will prove (x,y)realreal.
An exact proof term for the current goal is tuple_2_setprod real real x Hx y Hy.
Theorem. (complex_E) The following is provable:
∀z ∈ complex, ∀p : prop, (∀x y ∈ real, z = pa x yp)p
Proof:
Let z be given.
Assume Hz.
Let p be given.
Assume Hp.
Apply ReplE_impred (realreal) (λu ⇒ pa (u 0) (u 1)) z Hz to the current goal.
Let u be given.
Assume Hu: urealreal.
Assume Hzu: z = pa (u 0) (u 1).
An exact proof term for the current goal is Hp (u 0) (ap0_Sigma real (λ_ ⇒ real) u Hu) (u 1) (ap1_Sigma real (λ_ ⇒ real) u Hu) Hzu.
Theorem. (complex_CSNo) The following is provable:
∀z ∈ complex, CSNo z
Proof:
Let z be given.
Assume Hz.
Apply complex_E z Hz to the current goal.
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
Assume Hzxy: z = pa x y.
We will prove CSNo z.
rewrite the current goal using Hzxy (from left to right).
Apply CSNo_I to the current goal.
An exact proof term for the current goal is real_SNo x Hx.
An exact proof term for the current goal is real_SNo y Hy.
Theorem. (real_complex) The following is provable:
Proof:
Let x be given.
Assume Hx: xreal.
We will prove xcomplex.
rewrite the current goal using SNo_pair_0 x (from right to left).
We will prove pa x 0complex.
Apply complex_I to the current goal.
An exact proof term for the current goal is Hx.
An exact proof term for the current goal is real_0.
Theorem. (complex_0) The following is provable:
0complex
Proof:
An exact proof term for the current goal is real_complex 0 real_0.
Theorem. (complex_1) The following is provable:
1complex
Proof:
An exact proof term for the current goal is real_complex 1 real_1.
Theorem. (complex_i) The following is provable:
icomplex
Proof:
We will prove pa 0 1complex.
Apply complex_I to the current goal.
An exact proof term for the current goal is real_0.
An exact proof term for the current goal is real_1.
Theorem. (complex_Re_eq) The following is provable:
∀x y ∈ real, Re (pa x y) = x
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
An exact proof term for the current goal is CSNo_Re2 x y (real_SNo x Hx) (real_SNo y Hy).
Theorem. (complex_Im_eq) The following is provable:
∀x y ∈ real, Im (pa x y) = y
Proof:
Let x be given.
Assume Hx.
Let y be given.
Assume Hy.
An exact proof term for the current goal is CSNo_Im2 x y (real_SNo x Hx) (real_SNo y Hy).
Theorem. (complex_Re_real) The following is provable:
∀z ∈ complex, Re zreal
Proof:
Let z be given.
Assume Hz.
Apply complex_E z Hz to the current goal.
Let x be given.
Assume Hx.
Let y be given.
Assume Hy Hzxy.
rewrite the current goal using Hzxy (from left to right).
We will prove Re (pa x y)real.
rewrite the current goal using complex_Re_eq x Hx y Hy (from left to right).
We will prove xreal.
An exact proof term for the current goal is Hx.
Theorem. (complex_Im_real) The following is provable:
∀z ∈ complex, Im zreal
Proof:
Let z be given.
Assume Hz.
Apply complex_E z Hz to the current goal.
Let x be given.
Assume Hx.
Let y be given.
Assume Hy Hzxy.
rewrite the current goal using Hzxy (from left to right).
We will prove Im (pa x y)real.
rewrite the current goal using complex_Im_eq x Hx y Hy (from left to right).
We will prove yreal.
An exact proof term for the current goal is Hy.
Theorem. (complex_ReIm_split) The following is provable:
∀z w ∈ complex, Re z = Re wIm z = Im wz = w
Proof:
Let z be given.
Assume Hz.
Let w be given.
Assume Hw.
An exact proof term for the current goal is CSNo_ReIm_split z w (complex_CSNo z Hz) (complex_CSNo w Hw).
Theorem. (complex_minus_CSNo) The following is provable:
∀z ∈ complex, - zcomplex
Proof:
Let z be given.
Assume Hz.
We will prove pa (minus_SNo (Re z)) (minus_SNo (Im z))complex.
Apply complex_I to the current goal.
Apply real_minus_SNo to the current goal.
An exact proof term for the current goal is complex_Re_real z Hz.
Apply real_minus_SNo to the current goal.
An exact proof term for the current goal is complex_Im_real z Hz.
Theorem. (complex_add_CSNo) The following is provable:
∀z w ∈ complex, z + wcomplex
Proof:
Let z be given.
Assume Hz.
Let w be given.
Assume Hw.
We will prove pa (add_SNo (Re z) (Re w)) (add_SNo (Im z) (Im w))complex.
Apply complex_I to the current goal.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is complex_Re_real z Hz.
An exact proof term for the current goal is complex_Re_real w Hw.
Apply real_add_SNo to the current goal.
An exact proof term for the current goal is complex_Im_real z Hz.
An exact proof term for the current goal is complex_Im_real w Hw.
Theorem. (complex_mul_CSNo) The following is provable:
∀z w ∈ complex, z * wcomplex
Proof:
Let z be given.
Assume Hz.
Let w be given.
Assume Hw.
We will prove pa (add_SNo (mul_SNo (Re z) (Re w)) (minus_SNo (mul_SNo (Im z) (Im w)))) (add_SNo (mul_SNo (Re z) (Im w)) (mul_SNo (Im z) (Re w)))complex.
We prove the intermediate claim Lz0: Re zreal.
An exact proof term for the current goal is complex_Re_real z Hz.
We prove the intermediate claim Lz1: Im zreal.
An exact proof term for the current goal is complex_Im_real z Hz.
We prove the intermediate claim Lw0: Re wreal.
An exact proof term for the current goal is complex_Re_real w Hw.
We prove the intermediate claim Lw1: Im wreal.
An exact proof term for the current goal is complex_Im_real w Hw.
Apply complex_I to the current goal.
Apply real_add_SNo to the current goal.
Apply real_mul_SNo to the current goal.
An exact proof term for the current goal is ??.
An exact proof term for the current goal is ??.
Apply real_minus_SNo to the current goal.
Apply real_mul_SNo to the current goal.
An exact proof term for the current goal is ??.
An exact proof term for the current goal is ??.
Apply real_add_SNo to the current goal.
Apply real_mul_SNo to the current goal.
An exact proof term for the current goal is ??.
An exact proof term for the current goal is ??.
Apply real_mul_SNo to the current goal.
An exact proof term for the current goal is ??.
An exact proof term for the current goal is ??.
Theorem. (real_Re_eq) The following is provable:
∀x ∈ real, Re x = x
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using SNo_pair_0 x (from right to left) at position 1.
An exact proof term for the current goal is complex_Re_eq x Hx 0 real_0.
Theorem. (real_Im_eq) The following is provable:
∀x ∈ real, Im x = 0
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using SNo_pair_0 x (from right to left).
An exact proof term for the current goal is complex_Im_eq x Hx 0 real_0.
Theorem. (mul_i_real_eq) The following is provable:
∀x ∈ real, i * x = pa 0 x
Proof:
Let x be given.
Assume Hx.
We will prove pa (add_SNo (mul_SNo (Re (pa 0 1)) (Re x)) (minus_SNo (mul_SNo (Im (pa 0 1)) (Im x)))) (add_SNo (mul_SNo (Re (pa 0 1)) (Im x)) (mul_SNo (Im (pa 0 1)) (Re x))) = pa 0 x.
rewrite the current goal using real_Re_eq x Hx (from left to right).
rewrite the current goal using real_Im_eq x Hx (from left to right).
rewrite the current goal using complex_Re_eq 0 real_0 1 real_1 (from left to right).
rewrite the current goal using complex_Im_eq 0 real_0 1 real_1 (from left to right).
We will prove pa (add_SNo (mul_SNo 0 x) (minus_SNo (mul_SNo 1 0))) (add_SNo (mul_SNo 0 0) (mul_SNo 1 x)) = pa 0 x.
rewrite the current goal using mul_SNo_zeroL x (real_SNo x Hx) (from left to right).
rewrite the current goal using mul_SNo_zeroR 1 SNo_1 (from left to right).
rewrite the current goal using minus_SNo_0 (from left to right).
rewrite the current goal using mul_SNo_zeroL 0 SNo_0 (from left to right).
rewrite the current goal using mul_SNo_oneL x (real_SNo x Hx) (from left to right).
We will prove pa (add_SNo 0 0) (add_SNo 0 x) = pa 0 x.
rewrite the current goal using add_SNo_0L 0 SNo_0 (from left to right).
rewrite the current goal using add_SNo_0L x (real_SNo x Hx) (from left to right).
Use reflexivity.
Theorem. (real_Re_i_eq) The following is provable:
∀x ∈ real, Re (i * x) = 0
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using mul_i_real_eq x Hx (from left to right).
We will prove Re (pa 0 x) = 0.
An exact proof term for the current goal is complex_Re_eq 0 real_0 x Hx.
Theorem. (real_Im_i_eq) The following is provable:
∀x ∈ real, Im (i * x) = x
Proof:
Let x be given.
Assume Hx.
rewrite the current goal using mul_i_real_eq x Hx (from left to right).
We will prove Im (pa 0 x) = x.
An exact proof term for the current goal is complex_Im_eq 0 real_0 x Hx.
Theorem. (complex_eta) The following is provable:
∀z ∈ complex, z = Re z + i * Im z
Proof:
Let z be given.
Assume Hz.
Apply complex_E z Hz to the current goal.
Let x be given.
Assume Hx.
Let y be given.
Assume Hy Hzxy.
rewrite the current goal using Hzxy (from left to right).
rewrite the current goal using complex_Re_eq x Hx y Hy (from left to right).
rewrite the current goal using complex_Im_eq x Hx y Hy (from left to right).
We will prove pa x y = x + i * y.
We will prove pa x y = pa (add_SNo (Re x) (Re (i * y))) (add_SNo (Im x) (Im (i * y))).
rewrite the current goal using real_Re_eq x Hx (from left to right).
rewrite the current goal using real_Im_eq x Hx (from left to right).
rewrite the current goal using real_Re_i_eq y Hy (from left to right).
rewrite the current goal using real_Im_i_eq y Hy (from left to right).
We will prove pa x y = pa (add_SNo x 0) (add_SNo 0 y).
rewrite the current goal using add_SNo_0R x (real_SNo x Hx) (from left to right).
rewrite the current goal using add_SNo_0L y (real_SNo y Hy) (from left to right).
Use reflexivity.
Theorem. (nonzero_complex_recip_ex) The following is provable:
∀z ∈ complex, z0∃w ∈ complex, z * w = 1
Proof:
Let z be given.
Assume Hz Hznz.
Set x to be the term Re z.
Set y to be the term Im z.
Set r to be the term add_SNo (mul_SNo x x) (mul_SNo y y).
We prove the intermediate claim Lx: xreal.
An exact proof term for the current goal is complex_Re_real z Hz.
We prove the intermediate claim Ly: yreal.
An exact proof term for the current goal is complex_Im_real z Hz.
We prove the intermediate claim Lxx: mul_SNo x xreal.
An exact proof term for the current goal is real_mul_SNo x ?? x ??.
We prove the intermediate claim Lxx': SNo (mul_SNo x x).
Apply real_SNo to the current goal.
An exact proof term for the current goal is Lxx.
We prove the intermediate claim Lyy: mul_SNo y yreal.
An exact proof term for the current goal is real_mul_SNo y ?? y ??.
We prove the intermediate claim Lyy': SNo (mul_SNo y y).
Apply real_SNo to the current goal.
An exact proof term for the current goal is Lyy.
We prove the intermediate claim Lr: rreal.
An exact proof term for the current goal is real_add_SNo (mul_SNo x x) ?? (mul_SNo y y) ??.
We prove the intermediate claim Lr': SNo r.
Apply real_SNo to the current goal.
An exact proof term for the current goal is Lr.
We prove the intermediate claim Lrnz: r0.
Assume H1: r = 0.
Apply Hznz to the current goal.
We will prove z = 0.
Apply CSNo_ReIm_split z 0 (complex_CSNo z Hz) CSNo_0 to the current goal.
We will prove Re z = Re 0.
rewrite the current goal using Re_0 (from left to right).
We will prove x = 0.
Apply SNo_zero_or_sqr_pos x (real_SNo x Lx) to the current goal.
Assume H2: x = 0.
An exact proof term for the current goal is H2.
Assume H2: 0 < mul_SNo x x.
We will prove False.
Apply SNoLt_irref 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 < r.
Apply SNoLtLe_tra 0 (mul_SNo x x) r SNo_0 ?? ?? H2 to the current goal.
We will prove mul_SNo x xr.
rewrite the current goal using add_SNo_0R (mul_SNo x x) ?? (from right to left) at position 1.
We will prove add_SNo (mul_SNo x x) 0r.
Apply add_SNo_Le2 (mul_SNo x x) 0 (mul_SNo y y) ?? SNo_0 ?? to the current goal.
We will prove 0mul_SNo y y.
Apply SNo_sqr_nonneg y (real_SNo y Ly) to the current goal.
We will prove Im z = Im 0.
rewrite the current goal using Im_0 (from left to right).
We will prove y = 0.
Apply SNo_zero_or_sqr_pos y (real_SNo y Ly) to the current goal.
Assume H2: y = 0.
An exact proof term for the current goal is H2.
Assume H2: 0 < mul_SNo y y.
We will prove False.
Apply SNoLt_irref 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 < r.
Apply SNoLtLe_tra 0 (mul_SNo y y) r SNo_0 ?? ?? H2 to the current goal.
We will prove mul_SNo y yr.
rewrite the current goal using add_SNo_0L (mul_SNo y y) ?? (from right to left) at position 1.
We will prove add_SNo 0 (mul_SNo y y)r.
Apply add_SNo_Le1 0 (mul_SNo y y) (mul_SNo x x) SNo_0 ?? ?? to the current goal.
We will prove 0mul_SNo x x.
Apply SNo_sqr_nonneg x (real_SNo x Lx) to the current goal.
Apply nonzero_real_recip_ex r Lr Lrnz to the current goal.
Let u be given.
Assume H.
Apply H to the current goal.
Assume Hu: ureal.
Assume Hu2: mul_SNo r u = 1.
We use (u * x + - i * u * y) to witness the existential quantifier.
Apply andI to the current goal.
Apply complex_add_CSNo to the current goal.
Apply complex_mul_CSNo to the current goal.
Apply real_complex to the current goal.
An exact proof term for the current goal is Hu.
Apply real_complex to the current goal.
An exact proof term for the current goal is ??.
Apply complex_minus_CSNo to the current goal.
Apply complex_mul_CSNo to the current goal.
An exact proof term for the current goal is complex_i.
Apply complex_mul_CSNo to the current goal.
Apply real_complex to the current goal.
An exact proof term for the current goal is Hu.
Apply real_complex to the current goal.
An exact proof term for the current goal is ??.
Apply CSNo_relative_recip z (complex_CSNo z Hz) u (real_SNo u Hu) Hu2 to the current goal.
Theorem. (complex_real_set_eq) The following is provable:
real = {z ∈ complex|Re z = z}
Proof:
Apply set_ext to the current goal.
Let x be given.
Assume Hx: xreal.
Apply SepI to the current goal.
An exact proof term for the current goal is real_complex x Hx.
An exact proof term for the current goal is real_Re_eq x Hx.
Let z be given.
Assume Hz: z{z ∈ complex|Re z = z}.
Apply SepE complex (λz ⇒ Re z = z) z Hz to the current goal.
Assume Hz1: zcomplex.
Assume Hz2: Re z = z.
We will prove zreal.
rewrite the current goal using Hz2 (from right to left).
An exact proof term for the current goal is complex_Re_real z Hz1.
End of Section Complex