Primitive. The name Eps_i is a term of type (setprop)set.
Axiom. (Eps_i_ax) We take the following as an axiom:
∀P : setprop, ∀x : set, P xP (Eps_i P)
Definition. We define True to be ∀p : prop, pp of type prop.
Definition. We define False to be ∀p : prop, p of type prop.
Definition. We define not to be λA : propAFalse of type propprop.
Notation. We use ¬ as a prefix operator with priority 700 corresponding to applying term not.
Definition. We define and to be λA B : prop∀p : prop, (ABp)p of type proppropprop.
Notation. We use as an infix operator with priority 780 and which associates to the left corresponding to applying term and.
Definition. We define or to be λA B : prop∀p : prop, (Ap)(Bp)p of type proppropprop.
Notation. We use as an infix operator with priority 785 and which associates to the left corresponding to applying term or.
Definition. We define iff to be λA B : propand (AB) (BA) of type proppropprop.
Notation. We use as an infix operator with priority 805 and no associativity corresponding to applying term iff.
Beginning of Section Eq
Variable A : SType
Definition. We define eq to be λx y : A∀Q : AAprop, Q x yQ y x of type AAprop.
Definition. We define neq to be λx y : A¬ eq x y of type AAprop.
End of Section Eq
Notation. We use = as an infix operator with priority 502 and no associativity corresponding to applying term eq.
Notation. We use as an infix operator with priority 502 and no associativity corresponding to applying term neq.
Beginning of Section FE
Variable A B : SType
Axiom. (func_ext) We take the following as an axiom:
∀f g : AB, (∀x : A, f x = g x)f = g
End of Section FE
Beginning of Section Ex
Variable A : SType
Definition. We define ex to be λQ : Aprop∀P : prop, (∀x : A, Q xP)P of type (Aprop)prop.
End of Section Ex
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using ex.
Axiom. (prop_ext) We take the following as an axiom:
∀p q : prop, iff p qp = q
Primitive. The name In is a term of type setsetprop.
Notation. We use as an infix operator with priority 500 and no associativity corresponding to applying term In. Furthermore, we may write xA, B to mean x : set, xAB.
Definition. We define Subq to be λA B ⇒ ∀xA, x B of type setsetprop.
Notation. We use as an infix operator with priority 500 and no associativity corresponding to applying term Subq. Furthermore, we may write xA, B to mean x : set, xAB.
Axiom. (set_ext) We take the following as an axiom:
∀X Y : set, X YY XX = Y
Axiom. (In_ind) We take the following as an axiom:
∀P : setprop, (∀X : set, (∀xX, P x)P X)∀X : set, P X
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using ex and handling ∈ or ⊆ ascriptions using and.
Primitive. The name Empty is a term of type set.
Axiom. (EmptyAx) We take the following as an axiom:
¬ ∃x : set, x Empty
Primitive. The name is a term of type setset.
Axiom. (UnionEq) We take the following as an axiom:
∀X x, x X ∃Y, x Y Y X
Primitive. The name 𝒫 is a term of type setset.
Axiom. (PowerEq) We take the following as an axiom:
∀X Y : set, Y 𝒫 X Y X
Primitive. The name Repl is a term of type set(setset)set.
Notation. {B| xA} is notation for Repl Ax . B).
Axiom. (ReplEq) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y {F x|xA} ∃xA, y = F x
Definition. We define TransSet to be λU : set∀xU, x U of type setprop.
Definition. We define Union_closed to be λU : set∀X : set, X U X U of type setprop.
Definition. We define Power_closed to be λU : set∀X : set, X U𝒫 X U of type setprop.
Definition. We define Repl_closed to be λU : set∀X : set, X U∀F : setset, (∀x : set, x XF x U){F x|xX} U of type setprop.
Definition. We define ZF_closed to be λU : setUnion_closed U Power_closed U Repl_closed U of type setprop.
Primitive. The name UnivOf is a term of type setset.
Axiom. (UnivOf_In) We take the following as an axiom:
∀N : set, N UnivOf N
Axiom. (UnivOf_TransSet) We take the following as an axiom:
∀N : set, TransSet (UnivOf N)
Axiom. (UnivOf_ZF_closed) We take the following as an axiom:
∀N : set, ZF_closed (UnivOf N)
Axiom. (UnivOf_Min) We take the following as an axiom:
∀N U : set, N UTransSet UZF_closed UUnivOf N U
Axiom. (FalseE) We take the following as an axiom:
False∀p : prop, p
Axiom. (TrueI) We take the following as an axiom:
True
Axiom. (notI) We take the following as an axiom:
∀A : prop, (AFalse)¬ A
Axiom. (notE) We take the following as an axiom:
∀A : prop, ¬ AAFalse
Axiom. (andI) We take the following as an axiom:
∀A B : prop, ABA B
Axiom. (andEL) We take the following as an axiom:
∀A B : prop, A BA
Axiom. (andER) We take the following as an axiom:
∀A B : prop, A BB
Axiom. (orIL) We take the following as an axiom:
∀A B : prop, AA B
Axiom. (orIR) We take the following as an axiom:
∀A B : prop, BA B
Axiom. (orE) We take the following as an axiom:
∀A B C : prop, (AC)(BC)A BC
Beginning of Section PropN
Variable P1 P2 P3 : prop
Axiom. (and3I) We take the following as an axiom:
P1P2P3P1 P2 P3
Axiom. (and3E) We take the following as an axiom:
P1 P2 P3(∀p : prop, (P1P2P3p)p)
Axiom. (or3I1) We take the following as an axiom:
P1P1 P2 P3
Axiom. (or3I2) We take the following as an axiom:
P2P1 P2 P3
Axiom. (or3I3) We take the following as an axiom:
P3P1 P2 P3
Axiom. (or3E) We take the following as an axiom:
P1 P2 P3(∀p : prop, (P1p)(P2p)(P3p)p)
Variable P4 : prop
Axiom. (and4I) We take the following as an axiom:
P1P2P3P4P1 P2 P3 P4
Axiom. (and4E) We take the following as an axiom:
P1 P2 P3 P4(∀p : prop, (P1P2P3P4p)p)
Axiom. (or4I1) We take the following as an axiom:
P1P1 P2 P3 P4
Axiom. (or4I2) We take the following as an axiom:
P2P1 P2 P3 P4
Axiom. (or4I3) We take the following as an axiom:
P3P1 P2 P3 P4
Axiom. (or4I4) We take the following as an axiom:
P4P1 P2 P3 P4
Axiom. (or4E) We take the following as an axiom:
P1 P2 P3 P4(∀p : prop, (P1p)(P2p)(P3p)(P4p)p)
Variable P5 : prop
Axiom. (and5I) We take the following as an axiom:
P1P2P3P4P5P1 P2 P3 P4 P5
Axiom. (and5E) We take the following as an axiom:
P1 P2 P3 P4 P5(∀p : prop, (P1P2P3P4P5p)p)
Axiom. (or5I1) We take the following as an axiom:
P1P1 P2 P3 P4 P5
Axiom. (or5I2) We take the following as an axiom:
P2P1 P2 P3 P4 P5
Axiom. (or5I3) We take the following as an axiom:
P3P1 P2 P3 P4 P5
Axiom. (or5I4) We take the following as an axiom:
P4P1 P2 P3 P4 P5
Axiom. (or5I5) We take the following as an axiom:
P5P1 P2 P3 P4 P5
Axiom. (or5E) We take the following as an axiom:
P1 P2 P3 P4 P5(∀p : prop, (P1p)(P2p)(P3p)(P4p)(P5p)p)
Variable P6 : prop
Axiom. (and6I) We take the following as an axiom:
P1P2P3P4P5P6P1 P2 P3 P4 P5 P6
Axiom. (and6E) We take the following as an axiom:
P1 P2 P3 P4 P5 P6(∀p : prop, (P1P2P3P4P5P6p)p)
Variable P7 : prop
Axiom. (and7I) We take the following as an axiom:
P1P2P3P4P5P6P7P1 P2 P3 P4 P5 P6 P7
Axiom. (and7E) We take the following as an axiom:
P1 P2 P3 P4 P5 P6 P7(∀p : prop, (P1P2P3P4P5P6P7p)p)
End of Section PropN
Axiom. (iffI) We take the following as an axiom:
∀A B : prop, (AB)(BA)(A B)
Axiom. (iffEL) We take the following as an axiom:
∀A B : prop, (A B)AB
Axiom. (iffER) We take the following as an axiom:
∀A B : prop, (A B)BA
Axiom. (iff_ref) We take the following as an axiom:
∀A : prop, A A
Axiom. (neq_i_sym) We take the following as an axiom:
∀x y, x yy x
Definition. We define nIn to be λx X ⇒ ¬ In x X of type setsetprop.
Notation. We use as an infix operator with priority 502 and no associativity corresponding to applying term nIn.
Axiom. (Eps_i_ex) We take the following as an axiom:
∀P : setprop, (∃x, P x)P (Eps_i P)
Axiom. (pred_ext) We take the following as an axiom:
∀P Q : setprop, (∀x, P x Q x)P = Q
Axiom. (prop_ext_2) We take the following as an axiom:
∀p q : prop, (pq)(qp)p = q
Axiom. (pred_ext_2) We take the following as an axiom:
∀P Q : setprop, P QQ PP = Q
Axiom. (Subq_ref) We take the following as an axiom:
∀X : set, X X
Axiom. (Subq_tra) We take the following as an axiom:
∀X Y Z : set, X YY ZX Z
Axiom. (Subq_contra) We take the following as an axiom:
∀X Y z : set, X Yz Yz X
Axiom. (EmptyE) We take the following as an axiom:
∀x : set, x Empty
Axiom. (Subq_Empty) We take the following as an axiom:
∀X : set, Empty X
Axiom. (Empty_Subq_eq) We take the following as an axiom:
∀X : set, X EmptyX = Empty
Axiom. (Empty_eq) We take the following as an axiom:
∀X : set, (∀x, x X)X = Empty
Axiom. (UnionI) We take the following as an axiom:
∀X x Y : set, x YY Xx X
Axiom. (UnionE) We take the following as an axiom:
∀X x : set, x X∃Y : set, x Y Y X
Axiom. (UnionE_impred) We take the following as an axiom:
∀X x : set, x X∀p : prop, (∀Y : set, x YY Xp)p
Axiom. (Union_Empty) We take the following as an axiom:
Empty = Empty
Axiom. (PowerI) We take the following as an axiom:
∀X Y : set, Y XY 𝒫 X
Axiom. (PowerE) We take the following as an axiom:
∀X Y : set, Y 𝒫 XY X
Axiom. (Power_Subq) We take the following as an axiom:
∀X Y : set, X Y𝒫 X 𝒫 Y
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. (Union_Power_Subq) 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. (imp_not_or) We take the following as an axiom:
∀p q : prop, (pq)¬ p q
Axiom. (not_and_or_demorgan) We take the following as an axiom:
∀p q : prop, ¬ (p q)¬ p ¬ q
Primitive. The name exactly1of2 is a term of type proppropprop.
Axiom. (exactly1of2_I1) We take the following as an axiom:
∀A B : prop, A¬ Bexactly1of2 A B
Axiom. (exactly1of2_I2) We take the following as an axiom:
∀A B : prop, ¬ ABexactly1of2 A B
Axiom. (exactly1of2_impI1) We take the following as an axiom:
∀A B : prop, (A¬ B)(¬ AB)exactly1of2 A B
Axiom. (exactly1of2_impI2) We take the following as an axiom:
∀A B : prop, (B¬ A)(¬ BA)exactly1of2 A B
Axiom. (exactly1of2_E) We take the following as an axiom:
∀A B : prop, exactly1of2 A B∀p : prop, (A¬ Bp)(¬ ABp)p
Axiom. (exactly1of2_or) We take the following as an axiom:
∀A B : prop, exactly1of2 A BA B
Axiom. (exactly1of2_impn12) We take the following as an axiom:
∀A B : prop, exactly1of2 A BA¬ B
Axiom. (exactly1of2_impn21) We take the following as an axiom:
∀A B : prop, exactly1of2 A BB¬ A
Axiom. (exactly1of2_nimp12) We take the following as an axiom:
∀A B : prop, exactly1of2 A B¬ AB
Axiom. (exactly1of2_nimp21) We take the following as an axiom:
∀A B : prop, exactly1of2 A B¬ BA
Primitive. The name exactly1of3 is a term of type propproppropprop.
Axiom. (exactly1of3_I1) We take the following as an axiom:
∀A B C : prop, A¬ B¬ Cexactly1of3 A B C
Axiom. (exactly1of3_I2) We take the following as an axiom:
∀A B C : prop, ¬ AB¬ Cexactly1of3 A B C
Axiom. (exactly1of3_I3) We take the following as an axiom:
∀A B C : prop, ¬ A¬ BCexactly1of3 A B C
Axiom. (exactly1of3_impI1) We take the following as an axiom:
∀A B C : prop, (A¬ B)(A¬ C)(B¬ C)(¬ AB C)exactly1of3 A B C
Axiom. (exactly1of3_impI2) We take the following as an axiom:
∀A B C : prop, (B¬ A)(B¬ C)(A¬ C)(¬ BA C)exactly1of3 A B C
Axiom. (exactly1of3_impI3) We take the following as an axiom:
∀A B C : prop, (C¬ A)(C¬ B)(A¬ B)(¬ AB)exactly1of3 A B C
Axiom. (exactly1of3_E) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B C∀p : prop, (A¬ B¬ Cp)(¬ AB¬ Cp)(¬ A¬ BCp)p
Axiom. (exactly1of3_or) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B CA B C
Axiom. (exactly1of3_impn12) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B CA¬ B
Axiom. (exactly1of3_impn13) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B CA¬ C
Axiom. (exactly1of3_impn21) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B CB¬ A
Axiom. (exactly1of3_impn23) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B CB¬ C
Axiom. (exactly1of3_impn31) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B CC¬ A
Axiom. (exactly1of3_impn32) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B CC¬ B
Axiom. (exactly1of3_nimp1) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B C¬ AB C
Axiom. (exactly1of3_nimp2) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B C¬ BA C
Axiom. (exactly1of3_nimp3) We take the following as an axiom:
∀A B C : prop, exactly1of3 A B C¬ CA B
Axiom. (ReplI) We take the following as an axiom:
∀A : set, ∀F : setset, ∀x : set, x AF x {F x|xA}
Axiom. (ReplE) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y {F x|xA}∃xA, y = F x
Axiom. (ReplE_impred) We take the following as an axiom:
∀A : set, ∀F : setset, ∀y : set, y {F x|xA}∀p : prop, (∀x : set, x Ay = F xp)p
Axiom. (Repl_Empty) We take the following as an axiom:
∀F : setset, {F x|xEmpty} = Empty
Axiom. (ReplEq_ext_sub) We take the following as an axiom:
∀X, ∀F G : setset, (∀xX, F x = G x){F x|xX} {G x|xX}
Axiom. (ReplEq_ext) We take the following as an axiom:
∀X, ∀F G : setset, (∀xX, F x = G x){F x|xX} = {G x|xX}
Primitive. The name If_i is a term of type propsetsetset.
Notation. if cond then T else E is notation corresponding to If_i type cond T E where type is the inferred type of T.
Axiom. (If_i_correct) We take the following as an axiom:
∀p : prop, ∀x y : set, p (if p then x else y) = x ¬ p (if p then x else y) = y
Axiom. (If_i_0) We take the following as an axiom:
∀p : prop, ∀x y : set, ¬ p(if p then x else y) = y
Axiom. (If_i_1) We take the following as an axiom:
∀p : prop, ∀x y : set, p(if p then x else y) = x
Axiom. (If_i_or) We take the following as an axiom:
∀p : prop, ∀x y : set, (if p then x else y) = x (if p then x else y) = y
Axiom. (If_i_eta) We take the following as an axiom:
∀p : prop, ∀x : set, (if p then x else x) = x
Primitive. The name UPair is a term of type setsetset.
Notation. {x,y} is notation for UPair x y.
Axiom. (UPairE) We take the following as an axiom:
∀x y z : set, x {y,z}x = y x = z
Axiom. (UPairI1) We take the following as an axiom:
∀y z : set, y {y,z}
Axiom. (UPairI2) We take the following as an axiom:
∀y z : set, z {y,z}
Axiom. (UPair_com) We take the following as an axiom:
∀x y : set, {x,y} = {y,x}
Primitive. The name Sing is a term of type setset.
Notation. {x} is notation for Sing x.
Axiom. (SingI) We take the following as an axiom:
∀x : set, x {x}
Axiom. (SingE) We take the following as an axiom:
∀x y : set, y {x}y = x
Primitive. The name binunion is a term of type setsetset.
Notation. We use as an infix operator with priority 345 and which associates to the left corresponding to applying term binunion.
Axiom. (binunionI1) We take the following as an axiom:
∀X Y z : set, z Xz X Y
Axiom. (binunionI2) We take the following as an axiom:
∀X Y z : set, z Yz X Y
Axiom. (binunionE) We take the following as an axiom:
∀X Y z : set, z X Yz X z Y
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.
Axiom. (Power_0_Sing_0) We take the following as an axiom:
𝒫 Empty = {Empty}
Axiom. (Repl_UPair) We take the following as an axiom:
∀F : setset, ∀x y : set, {F z|z{x,y}} = {F x,F y}
Axiom. (Repl_Sing) We take the following as an axiom:
∀F : setset, ∀x : set, {F z|z{x}} = {F x}
Axiom. (Repl_restr) We take the following as an axiom:
∀X : set, ∀F G : setset, (∀x : set, x XF x = G x){F x|xX} = {G x|xX}
Definition. We define famunion to be λX F ⇒ {F x|xX} of type set(setset)set.
Notation. We use x [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using famunion.
Axiom. (famunionI) We take the following as an axiom:
∀X : set, ∀F : (setset), ∀x y : set, x Xy F xy xXF x
Axiom. (famunionE) We take the following as an axiom:
∀X : set, ∀F : (setset), ∀y : set, y (xXF x)∃xX, y F x
Axiom. (famunionE_impred) We take the following as an axiom:
∀X : set, ∀F : (setset), ∀y : set, y (xXF x)∀p : prop, (∀x, x Xy F xp)p
Axiom. (UnionEq_famunionId) We take the following as an axiom:
∀X : set, X = xXx
Axiom. (ReplEq_famunion_Sing) We take the following as an axiom:
∀X : set, ∀F : (setset), {F x|xX} = xX{F x}
Axiom. (Power_Sing) We take the following as an axiom:
∀x : set, 𝒫 {x} = {Empty,{x}}
Axiom. (Power_Sing_0) We take the following as an axiom:
𝒫 {Empty} = {Empty,{Empty}}
Primitive. The name Sep is a term of type set(setprop)set.
Notation. {xA | B} is notation for Sep Ax . B).
Axiom. (SepI) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x XP xx {xX|P x}
Axiom. (SepE) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}x X P x
Axiom. (SepE1) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}x X
Axiom. (SepE2) We take the following as an axiom:
∀X : set, ∀P : (setprop), ∀x : set, x {xX|P x}P x
Axiom. (Sep_Subq) We take the following as an axiom:
∀X : set, ∀P : setprop, {xX|P x} X
Axiom. (Sep_In_Power) We take the following as an axiom:
∀X : set, ∀P : setprop, {xX|P x} 𝒫 X
Primitive. The name ReplSep is a term of type set(setprop)(setset)set.
Notation. {B| xA, C} is notation for ReplSep Ax . C) (λ x . B).
Axiom. (ReplSepI) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀F : setset, ∀x : set, x XP xF x {F x|xX, P x}
Axiom. (ReplSepE) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀F : setset, ∀y : set, y {F x|xX, P x}∃x : set, x X P x y = F x
Axiom. (ReplSepE_impred) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀F : setset, ∀y : set, y {F x|xX, P x}∀p : prop, (∀xX, P xy = F xp)p
Primitive. The name ReplSep2 is a term of type set(setset)(setsetprop)(setsetset)set.
Axiom. (ReplSep2I) We take the following as an axiom:
∀A, ∀B : setset, ∀P : setsetprop, ∀F : setsetset, ∀xA, ∀yB x, P x yF x y ReplSep2 A B P F
Axiom. (ReplSep2E_impred) We take the following as an axiom:
∀A, ∀B : setset, ∀P : setsetprop, ∀F : setsetset, ∀rReplSep2 A B P F, ∀p : prop, (∀xA, ∀yB x, P x yr = F x yp)p
Axiom. (ReplSep2E) We take the following as an axiom:
∀A, ∀B : setset, ∀P : setsetprop, ∀F : setsetset, ∀rReplSep2 A B P F, ∃xA, ∃yB x, P x y r = F x y
Axiom. (binunion_asso) We take the following as an axiom:
∀X Y Z : set, X (Y Z) = (X Y) Z
Axiom. (binunion_com) We take the following as an axiom:
∀X Y : set, X Y = Y X
Axiom. (binunion_idl) We take the following as an axiom:
∀X : set, Empty X = X
Axiom. (binunion_idr) We take the following as an axiom:
∀X : set, X Empty = X
Axiom. (binunion_idem) We take the following as an axiom:
∀X : set, X X = X
Axiom. (binunion_Subq_1) We take the following as an axiom:
∀X Y : set, X X Y
Axiom. (binunion_Subq_2) We take the following as an axiom:
∀X Y : set, Y X Y
Axiom. (binunion_Subq_min) We take the following as an axiom:
∀X Y Z : set, X ZY ZX Y Z
Axiom. (Subq_binunion_eq) We take the following as an axiom:
∀X Y, (X Y) = (X Y = Y)
Axiom. (binunion_nIn_I) We take the following as an axiom:
∀X Y z : set, z Xz Yz X Y
Axiom. (binunion_nIn_E) We take the following as an axiom:
∀X Y z : set, z X Yz X z Y
Primitive. The name binintersect is a term of type setsetset.
Notation. We use as an infix operator with priority 340 and which associates to the left corresponding to applying term binintersect.
Axiom. (binintersectI) We take the following as an axiom:
∀X Y z, z Xz Yz X Y
Axiom. (binintersectE) We take the following as an axiom:
∀X Y z, z X Yz X z Y
Axiom. (binintersectE1) We take the following as an axiom:
∀X Y z, z X Yz X
Axiom. (binintersectE2) We take the following as an axiom:
∀X Y z, z X Yz Y
Axiom. (binintersect_Subq_1) We take the following as an axiom:
∀X Y : set, X Y X
Axiom. (binintersect_Subq_2) We take the following as an axiom:
∀X Y : set, X Y Y
Axiom. (binintersect_Subq_eq_1) We take the following as an axiom:
∀X Y, X YX Y = X
Axiom. (binintersect_Subq_max) We take the following as an axiom:
∀X Y Z : set, Z XZ YZ X Y
Axiom. (binintersect_asso) We take the following as an axiom:
∀X Y Z : set, X (Y Z) = (X Y) Z
Axiom. (binintersect_com) We take the following as an axiom:
∀X Y : set, X Y = Y X
Axiom. (binintersect_annil) We take the following as an axiom:
∀X : set, Empty X = Empty
Axiom. (binintersect_annir) We take the following as an axiom:
∀X : set, X Empty = Empty
Axiom. (binintersect_idem) We take the following as an axiom:
∀X : set, X X = X
Axiom. (binintersect_binunion_distr) We take the following as an axiom:
∀X Y Z : set, X (Y Z) = X Y X Z
Axiom. (binunion_binintersect_distr) We take the following as an axiom:
∀X Y Z : set, X Y Z = (X Y) (X Z)
Axiom. (Subq_binintersection_eq) We take the following as an axiom:
∀X Y : set, (X Y) = (X Y = X)
Axiom. (binintersect_nIn_I1) We take the following as an axiom:
∀X Y z : set, z Xz X Y
Axiom. (binintersect_nIn_I2) We take the following as an axiom:
∀X Y z : set, z Yz X Y
Axiom. (binintersect_nIn_E) We take the following as an axiom:
∀X Y z : set, z X Yz X z Y
Primitive. The name setminus is a term of type setsetset.
Notation. We use as an infix operator with priority 350 and no associativity corresponding to applying term setminus.
Axiom. (setminusI) We take the following as an axiom:
∀X Y z, (z X)(z Y)z X Y
Axiom. (setminusE) We take the following as an axiom:
∀X Y z, (z X Y)z X z Y
Axiom. (setminusE1) We take the following as an axiom:
∀X Y z, (z X Y)z X
Axiom. (setminusE2) We take the following as an axiom:
∀X Y z, (z X Y)z Y
Axiom. (setminus_Subq) We take the following as an axiom:
∀X Y : set, X Y X
Axiom. (setminus_Subq_contra) We take the following as an axiom:
∀X Y Z : set, Z YX Y X Z
Axiom. (setminus_nIn_I1) We take the following as an axiom:
∀X Y z, z Xz X Y
Axiom. (setminus_nIn_I2) We take the following as an axiom:
∀X Y z, z Yz X Y
Axiom. (setminus_nIn_E) We take the following as an axiom:
∀X Y z, z X Yz X z Y
Axiom. (setminus_selfannih) We take the following as an axiom:
∀X : set, (X X) = Empty
Axiom. (setminus_binintersect) We take the following as an axiom:
∀X Y Z : set, X Y Z = (X Y) (X Z)
Axiom. (setminus_binunion) We take the following as an axiom:
∀X Y Z : set, X Y Z = (X Y) Z
Axiom. (binintersect_setminus) We take the following as an axiom:
∀X Y Z : set, (X Y) Z = X (Y Z)
Axiom. (binunion_setminus) We take the following as an axiom:
∀X Y Z : set, X Y Z = (X Z) (Y Z)
Axiom. (setminus_setminus) We take the following as an axiom:
∀X Y Z : set, X (Y Z) = (X Y) (X Z)
Axiom. (setminus_annil) We take the following as an axiom:
∀X : set, Empty X = Empty
Axiom. (setminus_idr) We take the following as an axiom:
∀X : set, X Empty = X
Axiom. (In_irref) We take the following as an axiom:
∀x, x x
Axiom. (In_no2cycle) We take the following as an axiom:
∀x y, x yy xFalse
Axiom. (In_no3cycle) We take the following as an axiom:
∀x y z, x yy zz xFalse
Primitive. The name ordsucc is a term of type setset.
Axiom. (ordsuccI1) We take the following as an axiom:
∀x : set, x ordsucc x
Axiom. (ordsuccI2) We take the following as an axiom:
∀x : set, x ordsucc x
Axiom. (ordsuccE) We take the following as an axiom:
∀x y : set, y ordsucc xy x y = x
Notation. Natural numbers 0,1,2,... are notation for the terms formed using Empty as 0 and forming successors with ordsucc.
Axiom. (neq_0_ordsucc) We take the following as an axiom:
∀a : set, 0 ordsucc a
Axiom. (neq_ordsucc_0) We take the following as an axiom:
∀a : set, ordsucc a 0
Axiom. (ordsucc_inj) We take the following as an axiom:
∀a b : set, ordsucc a = ordsucc ba = b
Axiom. (ordsucc_inj_contra) We take the following as an axiom:
∀a b : set, a bordsucc a ordsucc b
Axiom. (In_0_1) We take the following as an axiom:
0 1
Axiom. (In_0_2) We take the following as an axiom:
0 2
Axiom. (In_1_2) We take the following as an axiom:
1 2
Definition. We define nat_p to be λn : set∀p : setprop, p 0(∀x : set, p xp (ordsucc x))p n of type setprop.
Axiom. (nat_0) We take the following as an axiom:
nat_p 0
Axiom. (nat_ordsucc) We take the following as an axiom:
∀n : set, nat_p nnat_p (ordsucc n)
Axiom. (nat_1) We take the following as an axiom:
nat_p 1
Axiom. (nat_2) We take the following as an axiom:
nat_p 2
Axiom. (nat_3) We take the following as an axiom:
nat_p 3
Axiom. (nat_4) We take the following as an axiom:
nat_p 4
Axiom. (nat_5) We take the following as an axiom:
nat_p 5
Axiom. (nat_6) We take the following as an axiom:
nat_p 6
Axiom. (nat_0_in_ordsucc) We take the following as an axiom:
∀n, nat_p n0 ordsucc n
Axiom. (nat_ordsucc_in_ordsucc) We take the following as an axiom:
∀n, nat_p n∀mn, ordsucc m ordsucc n
Axiom. (nat_ind) We take the following as an axiom:
∀p : setprop, p 0(∀n, nat_p np np (ordsucc n))∀n, nat_p np n
Axiom. (nat_inv) We take the following as an axiom:
∀n, nat_p nn = 0 ∃x, nat_p x n = ordsucc x
Axiom. (nat_complete_ind) We take the following as an axiom:
∀p : setprop, (∀n, nat_p n(∀mn, p m)p n)∀n, nat_p np n
Axiom. (nat_p_trans) We take the following as an axiom:
∀n, nat_p n∀mn, nat_p m
Axiom. (nat_trans) We take the following as an axiom:
∀n, nat_p n∀mn, m n
Axiom. (nat_ordsucc_trans) We take the following as an axiom:
∀n, nat_p n∀mordsucc n, m n
Axiom. (Union_ordsucc_eq) We take the following as an axiom:
∀n, nat_p n (ordsucc n) = n
Axiom. (In_0_3) We take the following as an axiom:
0 3
Axiom. (In_1_3) We take the following as an axiom:
1 3
Axiom. (In_2_3) We take the following as an axiom:
2 3
Axiom. (In_0_4) We take the following as an axiom:
0 4
Axiom. (In_1_4) We take the following as an axiom:
1 4
Axiom. (In_2_4) We take the following as an axiom:
2 4
Axiom. (In_3_4) We take the following as an axiom:
3 4
Axiom. (In_0_5) We take the following as an axiom:
0 5
Axiom. (In_1_5) We take the following as an axiom:
1 5
Axiom. (In_2_5) We take the following as an axiom:
2 5
Axiom. (In_3_5) We take the following as an axiom:
3 5
Axiom. (In_4_5) We take the following as an axiom:
4 5
Axiom. (In_0_6) We take the following as an axiom:
0 6
Axiom. (In_1_6) We take the following as an axiom:
1 6
Axiom. (In_2_6) We take the following as an axiom:
2 6
Axiom. (In_3_6) We take the following as an axiom:
3 6
Axiom. (In_4_6) We take the following as an axiom:
4 6
Axiom. (In_5_6) We take the following as an axiom:
5 6
Axiom. (cases_1) We take the following as an axiom:
∀i1, ∀p : setprop, p 0p i
Axiom. (cases_2) We take the following as an axiom:
∀i2, ∀p : setprop, p 0p 1p i
Axiom. (cases_3) We take the following as an axiom:
∀i3, ∀p : setprop, p 0p 1p 2p i
Axiom. (cases_4) We take the following as an axiom:
∀i4, ∀p : setprop, p 0p 1p 2p 3p i
Axiom. (cases_5) We take the following as an axiom:
∀i5, ∀p : setprop, p 0p 1p 2p 3p 4p i
Axiom. (cases_6) We take the following as an axiom:
∀i6, ∀p : setprop, p 0p 1p 2p 3p 4p 5p i
Axiom. (neq_0_1) We take the following as an axiom:
0 1
Axiom. (neq_0_2) We take the following as an axiom:
0 2
Axiom. (neq_1_2) We take the following as an axiom:
1 2
Axiom. (neq_1_0) We take the following as an axiom:
1 0
Axiom. (neq_2_0) We take the following as an axiom:
2 0
Axiom. (neq_2_1) We take the following as an axiom:
2 1
Axiom. (neq_3_0) We take the following as an axiom:
3 0
Axiom. (neq_3_1) We take the following as an axiom:
3 1
Axiom. (neq_3_2) We take the following as an axiom:
3 2
Axiom. (neq_4_0) We take the following as an axiom:
4 0
Axiom. (neq_4_1) We take the following as an axiom:
4 1
Axiom. (neq_4_2) We take the following as an axiom:
4 2
Axiom. (neq_4_3) We take the following as an axiom:
4 3
Axiom. (neq_5_0) We take the following as an axiom:
5 0
Axiom. (neq_5_1) We take the following as an axiom:
5 1
Axiom. (neq_5_2) We take the following as an axiom:
5 2
Axiom. (neq_5_3) We take the following as an axiom:
5 3
Axiom. (neq_5_4) We take the following as an axiom:
5 4
Axiom. (ZF_closed_I) We take the following as an axiom:
∀U, Union_closed UPower_closed URepl_closed UZF_closed U
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∀XU, X U
Axiom. (ZF_Power_closed) We take the following as an axiom:
∀U, ZF_closed U∀XU, 𝒫 X U
Axiom. (ZF_Repl_closed) We take the following as an axiom:
∀U, ZF_closed U∀XU, ∀F : setset, (∀xX, F x U){F x|xX} U
Axiom. (ZF_UPair_closed) We take the following as an axiom:
∀U, ZF_closed U∀x yU, {x,y} U
Axiom. (ZF_Sing_closed) We take the following as an axiom:
∀U, ZF_closed U∀xU, {x} U
Axiom. (ZF_binunion_closed) We take the following as an axiom:
∀U, ZF_closed U∀X YU, (X Y) U
Axiom. (ZF_ordsucc_closed) We take the following as an axiom:
∀U, ZF_closed U∀xU, ordsucc x U
Axiom. (nat_p_UnivOf_Empty) We take the following as an axiom:
∀n : set, nat_p nn UnivOf Empty
Definition. We define omega to be {nUnivOf Empty|nat_p n} of type set.
Axiom. (omega_nat_p) We take the following as an axiom:
∀nomega, nat_p n
Axiom. (nat_p_omega) We take the following as an axiom:
∀n : set, nat_p nn omega
Axiom. (omega_ordsucc) We take the following as an axiom:
∀nomega, ordsucc n omega
Definition. We define ordinal to be λalpha : setTransSet alpha ∀betaalpha, TransSet beta of type setprop.
Axiom. (ordinal_TransSet) We take the following as an axiom:
∀alpha : set, ordinal alphaTransSet alpha
Axiom. (ordinal_In_TransSet) We take the following as an axiom:
∀alpha : set, ordinal alpha∀betaalpha, TransSet beta
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∀betaalpha, 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 omega
Axiom. (omega_ordinal) We take the following as an axiom:
ordinal omega
Axiom. (ordsucc_omega_ordinal) We take the following as an axiom:
ordinal (ordsucc omega)
Axiom. (TransSet_ordsucc_In_Subq) We take the following as an axiom:
∀X : set, TransSet X∀xX, ordsucc x X
Axiom. (ordinal_ordsucc_In_Subq) We take the following as an axiom:
∀alpha, ordinal alpha∀betaalpha, ordsucc beta alpha
Axiom. (ordinal_trichotomy_or) We take the following as an axiom:
∀alpha beta : set, ordinal alphaordinal betaalpha beta alpha = beta beta alpha
Axiom. (ordinal_In_Or_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha beta beta alpha
Axiom. (ordinal_linear) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha beta beta alpha
Axiom. (ordinal_ordsucc_In_eq) We take the following as an axiom:
∀alpha beta, ordinal alphabeta alphaordsucc beta alpha alpha = ordsucc beta
Axiom. (ordinal_lim_or_succ) We take the following as an axiom:
∀alpha, ordinal alpha(∀betaalpha, ordsucc beta alpha) (∃betaalpha, alpha = ordsucc beta)
Axiom. (ordinal_ordsucc_In) We take the following as an axiom:
∀alpha, ordinal alpha∀betaalpha, ordsucc beta ordsucc alpha
Axiom. (ordinal_Union) We take the following as an axiom:
∀X, (∀xX, ordinal x)ordinal ( X)
Axiom. (ordinal_famunion) We take the following as an axiom:
∀X, ∀F : setset, (∀xX, ordinal (F x))ordinal (xXF x)
Axiom. (ordinal_binintersect) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaordinal (alpha beta)
Axiom. (ordinal_binunion) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaordinal (alpha beta)
Axiom. (ordinal_Sep) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, (∀betaalpha, ∀gammabeta, p betap gamma)ordinal {betaalpha|p beta}
Definition. We define inj to be λX Y f ⇒ (∀uX, f u Y) (∀u vX, f u = f vu = v) of type setset(setset)prop.
Definition. We define surj to be λX Y f ⇒ (∀uX, f u Y) (∀wY, ∃uX, f u = w) of type setset(setset)prop.
Definition. We define bij to be λX Y f ⇒ (∀uX, f u Y) (∀u vX, f u = f vu = v) (∀wY, ∃uX, f u = w) of type setset(setset)prop.
Axiom. (bijI) We take the following as an axiom:
∀X Y, ∀f : setset, (∀uX, f u Y)(∀u vX, f u = f vu = v)(∀wY, ∃uX, f u = w)bij X Y f
Axiom. (bijE) We take the following as an axiom:
∀X Y, ∀f : setset, bij X Y f∀p : prop, ((∀uX, f u Y)(∀u vX, f u = f vu = v)(∀wY, ∃uX, f u = w)p)p
Primitive. The name inv is a term of type set(setset)setset.
Axiom. (surj_rinv) We take the following as an axiom:
∀X Y, ∀f : setset, (∀wY, ∃uX, f u = w)∀yY, inv X f y X f (inv X f y) = y
Axiom. (inj_linv) We take the following as an axiom:
∀X, ∀f : setset, (∀u vX, f u = f vu = v)∀xX, inv X f (f x) = x
Axiom. (bij_inv) We take the following as an axiom:
∀X Y, ∀f : setset, bij X Y fbij Y X (inv X f)
Axiom. (bij_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))
Axiom. (bij_id) We take the following as an axiom:
∀X, bij X X (λx ⇒ x)
Axiom. (bij_inj) We take the following as an axiom:
∀X Y, ∀f : setset, bij X Y finj X Y f
Axiom. (bij_surj) We take the following as an axiom:
∀X Y, ∀f : setset, bij X Y fsurj X Y f
Axiom. (inj_surj_bij) We take the following as an axiom:
∀X Y, ∀f : setset, inj X Y fsurj X Y fbij X Y f
Axiom. (surj_inv_inj) We take the following as an axiom:
∀X Y, ∀f : setset, (∀yY, ∃xX, f x = y)inj Y X (inv X f)
Definition. We define atleastp to be λX Y : set∃f : setset, inj X Y f of type setsetprop.
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
Definition. We define finite to be λX ⇒ ∃nomega, equip X n of type setprop.
Definition. We define infinite to be λX ⇒ ¬ finite X of type setprop.
Axiom. (KnasterTarski_set) We take the following as an axiom:
∀A, ∀F : setset, (∀U𝒫 A, F U 𝒫 A)(∀U V𝒫 A, U VF U F V)∃Y𝒫 A, F Y = Y
Axiom. (image_In_Power) We take the following as an axiom:
∀A B, ∀f : setset, (∀xA, f x B)∀U𝒫 A, {f x|xU} 𝒫 B
Axiom. (image_monotone) We take the following as an axiom:
∀f : setset, ∀U V, U V{f x|xU} {f x|xV}
Axiom. (setminus_In_Power) We take the following as an axiom:
∀A U, A U 𝒫 A
Axiom. (setminus_antimonotone) We take the following as an axiom:
∀A U V, U VA V A U
Axiom. (SchroederBernstein) We take the following as an axiom:
∀A B, ∀f g : setset, inj A B finj B A gequip A B
Axiom. (f_eq_i) We take the following as an axiom:
∀f : setset, ∀x y, x = yf x = f y
Axiom. (f_eq_i_i) We take the following as an axiom:
∀f : setsetset, ∀x y z w, x = yz = wf x z = f y w
Axiom. (eq_i_tra) We take the following as an axiom:
∀x y z, x = yy = zx = z
Definition. We define nSubq to be λX Y ⇒ ¬ Subq X Y of type setsetprop.
Notation. We use as an infix operator with priority 502 and no associativity corresponding to applying term nSubq.
Axiom. (Sing_inv) We take the following as an axiom:
∀x Y, {x} = Yx Y ∀yY, y = x
Axiom. (TransSet_In_ordsucc_Subq) We take the following as an axiom:
∀x y, TransSet yx ordsucc yx y
Axiom. (inv_Repl_eq) We take the following as an axiom:
∀X, ∀f g : setset, (∀xX, f (g x) = x){f y|y{g x|xX}} = X
Axiom. (invol_Repl_eq) We take the following as an axiom:
∀X, ∀f : setset, (∀xX, f (f x) = x){f y|y{f x|xX}} = X
Axiom. (Eps_i_set_R) We take the following as an axiom:
∀X : set, ∀P : setprop, ∀xX, P xEps_i (λx ⇒ x X P x) X P (Eps_i (λx ⇒ x X P x))
Axiom. (exandE_i) We take the following as an axiom:
∀P Q : setprop, (∃x, P x Q x)∀r : prop, (∀x, P xQ xr)r
Axiom. (exandE_ii) We take the following as an axiom:
∀P Q : (setset)prop, (∃x : setset, P x Q x)∀p : prop, (∀x : setset, P xQ xp)p
Axiom. (exandE_iii) We take the following as an axiom:
∀P Q : (setsetset)prop, (∃x : setsetset, P x Q x)∀p : prop, (∀x : setsetset, P xQ xp)p
Axiom. (exandE_iiii) We take the following as an axiom:
∀P Q : (setsetsetset)prop, (∃x : setsetsetset, P x Q x)∀p : prop, (∀x : setsetsetset, P xQ xp)p
Axiom. (exandE_iio) We take the following as an axiom:
∀P Q : (setsetprop)prop, (∃x : setsetprop, P x Q x)∀p : prop, (∀x : setsetprop, P xQ xp)p
Axiom. (exandE_iiio) We take the following as an axiom:
∀P Q : (setsetsetprop)prop, (∃x : setsetsetprop, P x Q x)∀p : prop, (∀x : setsetsetprop, P xQ xp)p
Beginning of Section Descr_ii
Variable P : (setset)prop
Primitive. The name Descr_ii is a term of type setset.
Hypothesis Pex : ∃f : setset, P f
Hypothesis Puniq : ∀f g : setset, P fP gf = g
Axiom. (Descr_ii_prop) We take the following as an axiom:
End of Section Descr_ii
Beginning of Section Descr_iii
Variable P : (setsetset)prop
Primitive. The name Descr_iii is a term of type setsetset.
Hypothesis Pex : ∃f : setsetset, P f
Hypothesis Puniq : ∀f g : setsetset, P fP gf = g
Axiom. (Descr_iii_prop) We take the following as an axiom:
End of Section Descr_iii
Beginning of Section Descr_iio
Variable P : (setsetprop)prop
Primitive. The name Descr_iio is a term of type setsetprop.
Hypothesis Pex : ∃f : setsetprop, P f
Hypothesis Puniq : ∀f g : setsetprop, P fP gf = g
Axiom. (Descr_iio_prop) We take the following as an axiom:
End of Section Descr_iio
Beginning of Section Descr_Vo1
Variable P : Vo 1prop
Primitive. The name Descr_Vo1 is a term of type Vo 1.
Hypothesis Pex : ∃f : Vo 1, P f
Hypothesis Puniq : ∀f g : Vo 1, P fP gf = g
Axiom. (Descr_Vo1_prop) We take the following as an axiom:
End of Section Descr_Vo1
Beginning of Section Descr_Vo2
Variable P : Vo 2prop
Primitive. The name Descr_Vo2 is a term of type Vo 2.
Hypothesis Pex : ∃f : Vo 2, P f
Hypothesis Puniq : ∀f g : Vo 2, P fP gf = g
Axiom. (Descr_Vo2_prop) We take the following as an axiom:
End of Section Descr_Vo2
Beginning of Section If_ii
Variable p : prop
Variable f g : setset
Primitive. The name If_ii is a term of type setset.
Axiom. (If_ii_1) We take the following as an axiom:
pIf_ii = f
Axiom. (If_ii_0) We take the following as an axiom:
¬ pIf_ii = g
End of Section If_ii
Beginning of Section If_iii
Variable p : prop
Variable f g : setsetset
Primitive. The name If_iii is a term of type setsetset.
Axiom. (If_iii_1) We take the following as an axiom:
pIf_iii = f
Axiom. (If_iii_0) We take the following as an axiom:
¬ pIf_iii = g
End of Section If_iii
Beginning of Section If_Vo1
Variable p : prop
Variable f g : Vo 1
Primitive. The name If_Vo1 is a term of type Vo 1.
Axiom. (If_Vo1_1) We take the following as an axiom:
pIf_Vo1 = f
Axiom. (If_Vo1_0) We take the following as an axiom:
¬ pIf_Vo1 = g
End of Section If_Vo1
Beginning of Section If_iio
Variable p : prop
Variable f g : setsetprop
Primitive. The name If_iio is a term of type setsetprop.
Axiom. (If_iio_1) We take the following as an axiom:
pIf_iio = f
Axiom. (If_iio_0) We take the following as an axiom:
¬ pIf_iio = g
End of Section If_iio
Beginning of Section If_Vo2
Variable p : prop
Variable f g : Vo 2
Primitive. The name If_Vo2 is a term of type Vo 2.
Axiom. (If_Vo2_1) We take the following as an axiom:
pIf_Vo2 = f
Axiom. (If_Vo2_0) We take the following as an axiom:
¬ pIf_Vo2 = g
End of Section If_Vo2
Beginning of Section EpsilonRec_i
Variable F : set(setset)set
Primitive. The name In_rec_i is a term of type setset.
Hypothesis Fr : ∀X : set, ∀g h : setset, (∀xX, g x = h x)F X g = F X h
Axiom. (In_rec_i_eq) We take the following as an axiom:
∀X : set, In_rec_i X = F X In_rec_i
End of Section EpsilonRec_i
Beginning of Section EpsilonRec_ii
Variable F : set(set(setset))(setset)
Primitive. The name In_rec_ii is a term of type set(setset).
Hypothesis Fr : ∀X : set, ∀g h : set(setset), (∀xX, g x = h x)F X g = F X h
Axiom. (In_rec_ii_eq) We take the following as an axiom:
∀X : set, In_rec_ii X = F X In_rec_ii
End of Section EpsilonRec_ii
Beginning of Section EpsilonRec_iii
Variable F : set(set(setsetset))(setsetset)
Primitive. The name In_rec_iii is a term of type set(setsetset).
Hypothesis Fr : ∀X : set, ∀g h : set(setsetset), (∀xX, g x = h x)F X g = F X h
Axiom. (In_rec_iii_eq) We take the following as an axiom:
∀X : set, In_rec_iii X = F X In_rec_iii
End of Section EpsilonRec_iii
Beginning of Section EpsilonRec_iio
Variable F : set(set(setsetprop))(setsetprop)
Primitive. The name In_rec_iio is a term of type set(setsetprop).
Hypothesis Fr : ∀X : set, ∀g h : set(setsetprop), (∀xX, g x = h x)F X g = F X h
Axiom. (In_rec_iio_eq) We take the following as an axiom:
∀X : set, In_rec_iio X = F X In_rec_iio
End of Section EpsilonRec_iio
Beginning of Section EpsilonRec_Vo1
Variable F : set(setVo 1)Vo 1
Primitive. The name In_rec_Vo1 is a term of type setVo 1.
Hypothesis Fr : ∀X : set, ∀g h : setVo 1, (∀xX, g x = h x)F X g = F X h
Axiom. (In_rec_Vo1_eq) We take the following as an axiom:
∀X : set, In_rec_Vo1 X = F X In_rec_Vo1
End of Section EpsilonRec_Vo1
Beginning of Section EpsilonRec_Vo2
Variable F : set(setVo 2)Vo 2
Primitive. The name In_rec_Vo2 is a term of type setVo 2.
Hypothesis Fr : ∀X : set, ∀g h : setVo 2, (∀xX, g x = h x)F X g = F X h
Axiom. (In_rec_Vo2_eq) We take the following as an axiom:
∀X : set, In_rec_Vo2 X = F X In_rec_Vo2
End of Section EpsilonRec_Vo2
Beginning of Section If_Vo3
Variable p : prop
Variable f g : Vo 3
Primitive. The name If_Vo3 is a term of type Vo 3.
Axiom. (If_Vo3_1) We take the following as an axiom:
pIf_Vo3 = f
Axiom. (If_Vo3_0) We take the following as an axiom:
¬ pIf_Vo3 = g
End of Section If_Vo3
Beginning of Section Descr_Vo3
Variable P : Vo 3prop
Primitive. The name Descr_Vo3 is a term of type Vo 3.
Hypothesis Pex : ∃f : Vo 3, P f
Hypothesis Puniq : ∀f g : Vo 3, P fP gf = g
Axiom. (Descr_Vo3_prop) We take the following as an axiom:
End of Section Descr_Vo3
Beginning of Section EpsilonRec_Vo3
Variable F : set(setVo 3)Vo 3
Primitive. The name In_rec_Vo3 is a term of type setVo 3.
Hypothesis Fr : ∀X : set, ∀g h : setVo 3, (∀xX, g x = h x)F X g = F X h
Axiom. (In_rec_Vo3_eq) We take the following as an axiom:
∀X : set, In_rec_Vo3 X = F X In_rec_Vo3
End of Section EpsilonRec_Vo3
Beginning of Section If_Vo4
Variable p : prop
Variable f g : Vo 4
Primitive. The name If_Vo4 is a term of type Vo 4.
Axiom. (If_Vo4_1) We take the following as an axiom:
pIf_Vo4 = f
Axiom. (If_Vo4_0) We take the following as an axiom:
¬ pIf_Vo4 = g
End of Section If_Vo4
Beginning of Section Descr_Vo4
Variable P : Vo 4prop
Primitive. The name Descr_Vo4 is a term of type Vo 4.
Hypothesis Pex : ∃f : Vo 4, P f
Hypothesis Puniq : ∀f g : Vo 4, P fP gf = g
Axiom. (Descr_Vo4_prop) We take the following as an axiom:
End of Section Descr_Vo4
Beginning of Section EpsilonRec_Vo4
Variable F : set(setVo 4)Vo 4
Primitive. The name In_rec_Vo4 is a term of type setVo 4.
Hypothesis Fr : ∀X : set, ∀g h : setVo 4, (∀xX, g x = h x)F X g = F X h
Axiom. (In_rec_Vo4_eq) We take the following as an axiom:
∀X : set, In_rec_Vo4 X = F X In_rec_Vo4
End of Section EpsilonRec_Vo4
Definition. We define bigintersect to be λ(D : (setprop)prop)(x : set) ⇒ ∀P : setprop, D PP x.
Definition. We define reflexive to be λR ⇒ ∀x : set, R x x of type (setsetprop)prop.
Definition. We define irreflexive to be λR ⇒ ∀x : set, ¬ R x x of type (setsetprop)prop.
Definition. We define symmetric to be λR ⇒ ∀x y : set, R x yR y x of type (setsetprop)prop.
Definition. We define antisymmetric to be λR ⇒ ∀x y : set, R x yR y xx = y of type (setsetprop)prop.
Definition. We define transitive to be λR ⇒ ∀x y z : set, R x yR y zR x z of type (setsetprop)prop.
Definition. We define eqreln to be λR ⇒ reflexive R symmetric R transitive R of type (setsetprop)prop.
Definition. We define per to be λR ⇒ symmetric R transitive R of type (setsetprop)prop.
Definition. We define linear to be λR ⇒ ∀x y : set, R x y R y x of type (setsetprop)prop.
Definition. We define trichotomous_or to be λR ⇒ ∀x y : set, R x y x = y R y x of type (setsetprop)prop.
Definition. We define partialorder to be λR ⇒ reflexive R antisymmetric R transitive R of type (setsetprop)prop.
Definition. We define totalorder to be λR ⇒ partialorder R linear R of type (setsetprop)prop.
Definition. We define strictpartialorder to be λR ⇒ irreflexive R transitive R of type (setsetprop)prop.
Definition. We define stricttotalorder to be λR ⇒ strictpartialorder R trichotomous_or R of type (setsetprop)prop.
Axiom. (per_sym) We take the following as an axiom:
∀R : setsetprop, per Rsymmetric R
Axiom. (per_tra) We take the following as an axiom:
∀R : setsetprop, per Rtransitive R
Axiom. (per_stra1) We take the following as an axiom:
∀R : setsetprop, per R∀x y z : set, R y xR y zR x z
Axiom. (per_stra2) We take the following as an axiom:
∀R : setsetprop, per R∀x y z : set, R x yR z yR x z
Axiom. (per_stra3) We take the following as an axiom:
∀R : setsetprop, per R∀x y z : set, R y xR z yR x z
Axiom. (per_ref1) We take the following as an axiom:
∀R : setsetprop, per R∀x y : set, R x yR x x
Axiom. (per_ref2) We take the following as an axiom:
∀R : setsetprop, per R∀x y : set, R x yR y y
Axiom. (partialorder_strictpartialorder) We take the following as an axiom:
∀R : setsetprop, partialorder Rstrictpartialorder (λx y ⇒ R x y x y)
Definition. We define reflclos to be λR x y ⇒ R x y x = y of type (setsetprop)(setsetprop).
Axiom. (reflclos_refl) We take the following as an axiom:
∀R : setsetprop, reflexive (reflclos R)
Axiom. (reflclos_min) We take the following as an axiom:
∀R S : setsetprop, R Sreflexive Sreflclos R S
Axiom. (strictpartialorder_partialorder_reflclos) We take the following as an axiom:
∀R : setsetprop, strictpartialorder Rpartialorder (reflclos R)
Axiom. (stricttotalorder_totalorder_reflclos) We take the following as an axiom:
∀R : setsetprop, stricttotalorder Rtotalorder (reflclos R)
Beginning of Section Zermelo1908
Primitive. The name ZermeloWO is a term of type setsetprop.
Axiom. (ZermeloWO_Eps) We take the following as an axiom:
∀a : set, (Eps_i (ZermeloWO a)) = a
Axiom. (ZermeloWO_ref) We take the following as an axiom:
Axiom. (ZermeloWO_lin) We take the following as an axiom:
Axiom. (ZermeloWO_tra) We take the following as an axiom:
Axiom. (ZermeloWO_antisym) We take the following as an axiom:
Axiom. (ZermeloWO_partialorder) We take the following as an axiom:
Axiom. (ZermeloWO_totalorder) We take the following as an axiom:
Axiom. (ZermeloWO_wo) We take the following as an axiom:
∀p : setprop, (∃x : set, p x)∃x : set, p x ∀y : set, p yZermeloWO x y
Definition. We define ZermeloWOstrict to be λa b : setZermeloWO a b a b.
Axiom. (ZermeloWOstrict_trich) We take the following as an axiom:
Axiom. (ZermeloWOstrict_stricttotalorder) We take the following as an axiom:
Axiom. (ZermeloWOstrict_wo) We take the following as an axiom:
∀p : setprop, (∃x : set, p x)∃x : set, p x ∀y : set, p y y xZermeloWOstrict x y
Axiom. (Zermelo_WO) We take the following as an axiom:
∃r : setsetprop, totalorder r (∀p : setprop, (∃x : set, p x)∃x : set, p x ∀y : set, p yr x y)
Axiom. (Zermelo_WO_strict) We take the following as an axiom:
∃r : setsetprop, stricttotalorder r (∀p : setprop, (∃x : set, p x)∃x : set, p x ∀y : set, p y y xr x y)
End of Section Zermelo1908
Axiom. (eq_imp_or) We take the following as an axiom:
(λx y : prop(xy)) = (λx y : prop(¬ x y))
Axiom. (famunion_Empty) We take the following as an axiom:
∀F : setset, (x0F x) = 0
Axiom. (Empty_or_ex) We take the following as an axiom:
∀X : set, X = Empty ∃x : set, x X
Axiom. (nIn_0_0) We take the following as an axiom:
0 0
Axiom. (nIn_1_0) We take the following as an axiom:
1 0
Axiom. (nIn_2_0) We take the following as an axiom:
2 0
Axiom. (nIn_1_1) We take the following as an axiom:
1 1
Axiom. (nIn_2_2) We take the following as an axiom:
2 2
Axiom. (Subq_0_0) We take the following as an axiom:
0 0
Axiom. (Subq_0_1) We take the following as an axiom:
0 1
Axiom. (Subq_0_2) We take the following as an axiom:
0 2
Axiom. (nSubq_1_0) We take the following as an axiom:
1 0
Axiom. (Subq_1_1) We take the following as an axiom:
1 1
Axiom. (Subq_1_2) We take the following as an axiom:
1 2
Axiom. (nSubq_2_0) We take the following as an axiom:
2 0
Axiom. (nSubq_2_1) We take the following as an axiom:
2 1
Axiom. (Subq_2_2) We take the following as an axiom:
2 2
Axiom. (In_0_7) We take the following as an axiom:
0 7
Axiom. (In_1_7) We take the following as an axiom:
1 7
Axiom. (In_2_7) We take the following as an axiom:
2 7
Axiom. (In_3_7) We take the following as an axiom:
3 7
Axiom. (In_4_7) We take the following as an axiom:
4 7
Axiom. (In_5_7) We take the following as an axiom:
5 7
Axiom. (In_6_7) We take the following as an axiom:
6 7
Axiom. (In_0_8) We take the following as an axiom:
0 8
Axiom. (In_1_8) We take the following as an axiom:
1 8
Axiom. (In_2_8) We take the following as an axiom:
2 8
Axiom. (In_3_8) We take the following as an axiom:
3 8
Axiom. (In_4_8) We take the following as an axiom:
4 8
Axiom. (In_5_8) We take the following as an axiom:
5 8
Axiom. (In_6_8) We take the following as an axiom:
6 8
Axiom. (In_7_8) We take the following as an axiom:
7 8
Axiom. (In_0_9) We take the following as an axiom:
0 9
Axiom. (In_1_9) We take the following as an axiom:
1 9
Axiom. (In_2_9) We take the following as an axiom:
2 9
Axiom. (In_3_9) We take the following as an axiom:
3 9
Axiom. (In_4_9) We take the following as an axiom:
4 9
Axiom. (In_5_9) We take the following as an axiom:
5 9
Axiom. (In_6_9) We take the following as an axiom:
6 9
Axiom. (In_7_9) We take the following as an axiom:
7 9
Axiom. (In_8_9) We take the following as an axiom:
8 9
Beginning of Section NatRec
Variable z : set
Variable f : setsetset
Let F : set(setset)setλn g ⇒ if n n then f ( n) (g ( n)) else z
Definition. We define nat_primrec to be In_rec_i F of type setset.
Axiom. (nat_primrec_r) We take the following as an axiom:
∀X : set, ∀g h : setset, (∀xX, g x = h x)F X g = F X h
Axiom. (nat_primrec_0) We take the following as an axiom:
Axiom. (nat_primrec_S) We take the following as an axiom:
∀n : set, nat_p nnat_primrec (ordsucc n) = f n (nat_primrec n)
End of Section NatRec
Beginning of Section NatArith
Definition. We define add_nat to be λn m : setnat_primrec n (λ_ r ⇒ ordsucc r) m of type setsetset.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_nat.
Axiom. (add_nat_0R) We take the following as an axiom:
∀n : set, n + 0 = n
Axiom. (add_nat_SR) We take the following as an axiom:
∀n m : set, nat_p mn + ordsucc m = ordsucc (n + m)
Axiom. (add_nat_p) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p mnat_p (n + m)
Axiom. (add_nat_asso) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p m∀k : set, nat_p k(n + m) + k = n + (m + k)
Axiom. (add_nat_0L) We take the following as an axiom:
∀m : set, nat_p m0 + m = m
Axiom. (add_nat_SL) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p mordsucc n + m = ordsucc (n + m)
Axiom. (add_nat_com) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p mn + m = m + n
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)
Axiom. (mul_nat_0L) We take the following as an axiom:
∀m : set, nat_p m0 * m = 0
Axiom. (mul_nat_SL) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p mordsucc n * m = n * m + m
Axiom. (mul_nat_com) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p mn * m = m * n
Axiom. (mul_add_nat_distrL) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p m∀k : set, nat_p kn * (m + k) = n * m + n * k
Axiom. (mul_add_nat_distrR) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p m∀k : set, nat_p k(n + m) * k = n * k + m * k
Axiom. (mul_nat_asso) We take the following as an axiom:
∀n : set, nat_p n∀m : set, nat_p m∀k : set, nat_p k(n * m) * k = n * (m * k)
Axiom. (add_nat_1_1_2) We take the following as an axiom:
1 + 1 = 2
Definition. We define divides_nat to be λm n ⇒ m omega n omega ∃komega, m * k = n of type setsetprop.
Definition. We define prime_nat to be λn ⇒ n omega 1 n ∀komega, divides_nat k nk = 1 k = n of type setprop.
Definition. We define coprime_nat to be λa b ⇒ a omega b omega ∀xomega 1, divides_nat x adivides_nat x bx = 1 of type setsetprop.
Definition. We define equiv_nat_mod to be λm k n ⇒ m omega k omega n omega ((∃qomega, m + q * n = k) (∃qomega, k + q * n = m)) of type setsetsetprop.
Definition. We define exp_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_nat.
Definition. We define even_nat to be λn ⇒ n omega ∃momega, n = 2 * m of type setprop.
Definition. We define odd_nat to be λn ⇒ n omega ∀momega, n 2 * m of type setprop.
Definition. We define nat_factorial to be λn ⇒ nat_primrec 1 (λk r ⇒ ordsucc k * r) n of type setset.
End of Section NatArith
Axiom. (PigeonHole_nat) We take the following as an axiom:
∀n, nat_p n∀f : setset, (∀iordsucc n, f i n)¬ (∀i jordsucc n, f i = f ji = j)
Axiom. (PigeonHole_nat_bij) We take the following as an axiom:
∀n, nat_p n∀f : setset, (∀in, f i n)(∀i jn, f i = f ji = j)bij n n f
Axiom. (cases_7) We take the following as an axiom:
∀i7, ∀p : setprop, p 0p 1p 2p 3p 4p 5p 6p i
Axiom. (cases_8) We take the following as an axiom:
∀i8, ∀p : setprop, p 0p 1p 2p 3p 4p 5p 6p 7p i
Axiom. (cases_9) We take the following as an axiom:
∀i9, ∀p : setprop, p 0p 1p 2p 3p 4p 5p 6p 7p 8p i
Axiom. (nIn_2_1) We take the following as an axiom:
2 1
Axiom. (neq_6_0) We take the following as an axiom:
6 0
Axiom. (neq_6_1) We take the following as an axiom:
6 1
Axiom. (neq_6_2) We take the following as an axiom:
6 2
Axiom. (neq_6_3) We take the following as an axiom:
6 3
Axiom. (neq_6_4) We take the following as an axiom:
6 4
Axiom. (neq_6_5) We take the following as an axiom:
6 5
Axiom. (neq_7_0) We take the following as an axiom:
7 0
Axiom. (neq_7_1) We take the following as an axiom:
7 1
Axiom. (neq_7_2) We take the following as an axiom:
7 2
Axiom. (neq_7_3) We take the following as an axiom:
7 3
Axiom. (neq_7_4) We take the following as an axiom:
7 4
Axiom. (neq_7_5) We take the following as an axiom:
7 5
Axiom. (neq_7_6) We take the following as an axiom:
7 6
Axiom. (neq_8_0) We take the following as an axiom:
8 0
Axiom. (neq_8_1) We take the following as an axiom:
8 1
Axiom. (neq_8_2) We take the following as an axiom:
8 2
Axiom. (neq_8_3) We take the following as an axiom:
8 3
Axiom. (neq_8_4) We take the following as an axiom:
8 4
Axiom. (neq_8_5) We take the following as an axiom:
8 5
Axiom. (neq_8_6) We take the following as an axiom:
8 6
Axiom. (neq_8_7) We take the following as an axiom:
8 7
Axiom. (neq_9_0) We take the following as an axiom:
9 0
Axiom. (neq_9_1) We take the following as an axiom:
9 1
Axiom. (neq_9_2) We take the following as an axiom:
9 2
Axiom. (neq_9_3) We take the following as an axiom:
9 3
Axiom. (neq_9_4) We take the following as an axiom:
9 4
Axiom. (neq_9_5) We take the following as an axiom:
9 5
Axiom. (neq_9_6) We take the following as an axiom:
9 6
Axiom. (neq_9_7) We take the following as an axiom:
9 7
Axiom. (neq_9_8) We take the following as an axiom:
9 8
Axiom. (Subq_1_Sing0) We take the following as an axiom:
1 {0}
Axiom. (Subq_Sing0_1) We take the following as an axiom:
{0} 1
Axiom. (eq_1_Sing0) We take the following as an axiom:
1 = {0}
Axiom. (Subq_2_UPair01) We take the following as an axiom:
2 {0,1}
Axiom. (Subq_UPair01_2) We take the following as an axiom:
{0,1} 2
Axiom. (eq_2_UPair01) We take the following as an axiom:
2 = {0,1}
Axiom. (ordinal_ind) We take the following as an axiom:
∀p : setprop, (∀alpha, ordinal alpha(∀betaalpha, p beta)p alpha)∀alpha, ordinal alphap alpha
Axiom. (least_ordinal_ex) We take the following as an axiom:
∀p : setprop, (∃alpha, ordinal alpha p alpha)∃alpha, ordinal alpha p alpha ∀betaalpha, ¬ p beta
Axiom. (ordinal_trichotomy_or_impred) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p : prop, (alpha betap)(alpha = betap)(beta alphap)p
Axiom. (ordinal_trichotomy) We take the following as an axiom:
∀alpha beta : set, ordinal alphaordinal betaexactly1of3 (alpha beta) (alpha = beta) (beta alpha)
Definition. We define Inj1 to be In_rec_i (λX f ⇒ {0} {f x|xX}) of type setset.
Axiom. (Inj1_eq) We take the following as an axiom:
∀X : set, Inj1 X = {0} {Inj1 x|xX}
Axiom. (Inj1I1) We take the following as an axiom:
∀X : set, 0 Inj1 X
Axiom. (Inj1I2) We take the following as an axiom:
∀X x : set, x XInj1 x Inj1 X
Axiom. (Inj1E) We take the following as an axiom:
∀X y : set, y Inj1 Xy = 0 ∃xX, y = Inj1 x
Axiom. (Inj1NE1) We take the following as an axiom:
∀x : set, Inj1 x 0
Axiom. (Inj1NE2) We take the following as an axiom:
∀x : set, Inj1 x {0}
Definition. We define Inj0 to be λX ⇒ {Inj1 x|xX} of type setset.
Axiom. (Inj0I) We take the following as an axiom:
∀X x : set, x XInj1 x Inj0 X
Axiom. (Inj0E) We take the following as an axiom:
∀X y : set, y Inj0 X∃x : set, x X y = Inj1 x
Definition. We define Unj to be In_rec_i (λX f ⇒ {f x|xX {0}}) of type setset.
Axiom. (Unj_eq) We take the following as an axiom:
∀X : set, Unj X = {Unj x|xX {0}}
Axiom. (Unj_Inj1_eq) We take the following as an axiom:
∀X : set, Unj (Inj1 X) = X
Axiom. (Inj1_inj) We take the following as an axiom:
∀X Y : set, Inj1 X = Inj1 YX = Y
Axiom. (Unj_Inj0_eq) We take the following as an axiom:
∀X : set, Unj (Inj0 X) = X
Axiom. (Inj0_inj) We take the following as an axiom:
∀X Y : set, Inj0 X = Inj0 YX = Y
Axiom. (Inj0_0) We take the following as an axiom:
Inj0 0 = 0
Axiom. (Inj0_Inj1_neq) We take the following as an axiom:
∀X Y : set, Inj0 X Inj1 Y
Definition. We define setsum to be λX Y ⇒ {Inj0 x|xX} {Inj1 y|yY} of type setsetset.
Notation. We use + as an infix operator with priority 450 and which associates to the left corresponding to applying term setsum.
Axiom. (Inj0_setsum) We take the following as an axiom:
∀X Y x : set, x XInj0 x X + Y
Axiom. (Inj1_setsum) We take the following as an axiom:
∀X Y y : set, y YInj1 y X + Y
Axiom. (setsum_Inj_inv) We take the following as an axiom:
∀X Y z : set, z X + Y(∃xX, z = Inj0 x) (∃yY, z = Inj1 y)
Axiom. (Inj0_setsum_0L) We take the following as an axiom:
∀X : set, 0 + X = Inj0 X
Axiom. (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
Axiom. (setsum_mon) We take the following as an axiom:
∀X Y W Z, X WY ZX + Y W + Z
Definition. We define combine_funcs to be λX Y f g z ⇒ if z = Inj0 (Unj z) then f (Unj z) else g (Unj z) of type setset(setset)(setset)setset.
Axiom. (combine_funcs_eq1) We take the following as an axiom:
∀X Y, ∀f g : setset, ∀x, combine_funcs X Y f g (Inj0 x) = f x
Axiom. (combine_funcs_eq2) We take the following as an axiom:
∀X Y, ∀f g : setset, ∀y, combine_funcs X Y f g (Inj1 y) = g y
Beginning of Section pair_setsum
Let pair ≝ setsum
Axiom. (pair_0_0) We take the following as an axiom:
pair 0 0 = 0
Axiom. (pair_1_0_1) We take the following as an axiom:
pair 1 0 = 1
Axiom. (pair_1_1_2) We take the following as an axiom:
pair 1 1 = 2
Axiom. (nat_pair1_ordsucc) We take the following as an axiom:
∀n : set, nat_p npair 1 n = ordsucc n
Definition. We define proj0 to be λZ ⇒ {Unj z|zZ, ∃x : set, Inj0 x = z} of type setset.
Definition. We define proj1 to be λZ ⇒ {Unj z|zZ, ∃y : set, Inj1 y = z} of type setset.
Axiom. (Inj0_pair_0_eq) We take the following as an axiom:
Inj0 = pair 0
Axiom. (Inj1_pair_1_eq) We take the following as an axiom:
Inj1 = pair 1
Axiom. (pairI0) We take the following as an axiom:
∀X Y x, x Xpair 0 x pair X Y
Axiom. (pairI1) We take the following as an axiom:
∀X Y y, y Ypair 1 y pair X Y
Axiom. (pairE) We take the following as an axiom:
∀X Y z, z pair X Y(∃xX, z = pair 0 x) (∃yY, z = pair 1 y)
Axiom. (pairE0) We take the following as an axiom:
∀X Y x, pair 0 x pair X Yx X
Axiom. (pairE1) We take the following as an axiom:
∀X Y y, pair 1 y pair X Yy Y
Axiom. (pairEq) We take the following as an axiom:
∀X Y z, z pair X Y (∃xX, z = pair 0 x) (∃yY, z = pair 1 y)
Axiom. (pairSubq) We take the following as an axiom:
∀X Y W Z, X WY Zpair X Y pair W Z
Axiom. (proj0I) We take the following as an axiom:
∀w u : set, pair 0 u wu proj0 w
Axiom. (proj0E) We take the following as an axiom:
∀w u : set, u proj0 wpair 0 u w
Axiom. (proj1I) We take the following as an axiom:
∀w u : set, pair 1 u wu proj1 w
Axiom. (proj1E) We take the following as an axiom:
∀w u : set, u proj1 wpair 1 u w
Axiom. (proj0_pair_eq) We take the following as an axiom:
∀X Y : set, proj0 (pair X Y) = X
Axiom. (proj1_pair_eq) We take the following as an axiom:
∀X Y : set, proj1 (pair X Y) = Y
Axiom. (pair_inj) We take the following as an axiom:
∀x y w z : set, pair x y = pair w zx = w y = z
Axiom. (pair_eta_Subq_proj) We take the following as an axiom:
∀w, pair (proj0 w) (proj1 w) w
Definition. We define Sigma to be λX Y ⇒ xX{pair x y|yY x} of type set(setset)set.
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Sigma.
Axiom. (pair_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀xX, ∀yY x, pair x y xX, Y x
Axiom. (Sigma_eta_proj0_proj1) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z(xX, Y x), pair (proj0 z) (proj1 z) = z proj0 z X proj1 z Y (proj0 z)
Axiom. (proj_Sigma_eta) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z(xX, Y x), pair (proj0 z) (proj1 z) = z
Axiom. (proj0_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)proj0 z X
Axiom. (proj1_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)proj1 z Y (proj0 z)
Axiom. (pair_Sigma_E0) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀x y : set, pair x y (xX, Y x)x X
Axiom. (pair_Sigma_E1) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀x y : set, pair x y (xX, Y x)y Y x
Axiom. (Sigma_E) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)∃xX, ∃yY x, z = pair x y
Axiom. (Sigma_Eq) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x) ∃xX, ∃yY x, z = pair x y
Axiom. (Sigma_mon) We take the following as an axiom:
∀X Y : set, X Y∀Z W : setset, (∀xX, Z x W x)(xX, Z x) yY, W y
Axiom. (Sigma_mon0) We take the following as an axiom:
∀X Y : set, X Y∀Z : setset, (xX, Z x) yY, Z y
Axiom. (Sigma_mon1) We take the following as an axiom:
∀X : set, ∀Z W : setset, (∀x, x XZ x W x)(xX, Z x) xX, W x
Axiom. (Sigma_Power_1) We take the following as an axiom:
∀X : set, X 𝒫 1∀Y : setset, (∀xX, Y x 𝒫 1)(xX, Y x) 𝒫 1
Definition. We define setprod to be λX Y : setxX, Y of type setsetset.
Notation. We use as an infix operator with priority 440 and which associates to the left corresponding to applying term setprod.
Axiom. (pair_setprod) We take the following as an axiom:
∀X Y : set, ∀(xX)(yY), pair x y X Y
Axiom. (proj0_setprod) We take the following as an axiom:
∀X Y : set, ∀zX Y, proj0 z X
Axiom. (proj1_setprod) We take the following as an axiom:
∀X Y : set, ∀zX Y, proj1 z Y
Axiom. (pair_setprod_E0) We take the following as an axiom:
∀X Y x y : set, pair x y X Yx X
Axiom. (pair_setprod_E1) We take the following as an axiom:
∀X Y x y : set, pair x y X Yy Y
Let lam : set(setset)setSigma
Definition. We define ap to be λf x ⇒ {proj1 z|zf, ∃y : set, z = pair x y} of type setsetset.
Notation. When x is a set, a term x y is notation for ap x y.
Notation. λ xAB is notation for the set Sigma Ax : set ⇒ B).
Notation. We now use n-tuple notation (a0,...,an-1) for n ≥ 2 for λ i ∈ n . if i = 0 then a0 else ... if i = n-2 then an-2 else an-1.
Axiom. (lamI) We take the following as an axiom:
∀X : set, ∀F : setset, ∀xX, ∀yF x, pair x y λxXF x
Axiom. (lamE) We take the following as an axiom:
∀X : set, ∀F : setset, ∀z : set, z (λxXF x)∃xX, ∃yF x, z = pair x y
Axiom. (lamEq) We take the following as an axiom:
∀X : set, ∀F : setset, ∀z, z (λxXF x) ∃xX, ∃yF x, z = pair x y
Axiom. (apI) We take the following as an axiom:
∀f x y, pair x y fy f x
Axiom. (apE) We take the following as an axiom:
∀f x y, y f xpair x y f
Axiom. (apEq) We take the following as an axiom:
∀f x y, y f x pair x y f
Axiom. (beta) We take the following as an axiom:
∀X : set, ∀F : setset, ∀x : set, x X(λxXF x) x = F x
Axiom. (beta0) We take the following as an axiom:
∀X : set, ∀F : setset, ∀x : set, x X(λxXF x) x = 0
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. (pair_ap_n2) We take the following as an axiom:
∀x y i : set, i 2(pair x y) i = 0
Axiom. (ap0_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)(z 0) X
Axiom. (ap1_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z : set, z (xX, Y x)(z 1) (Y (z 0))
Definition. We define pair_p to be λu : setpair (u 0) (u 1) = u of type setprop.
Axiom. (pair_p_I) We take the following as an axiom:
∀x y, pair_p (pair x y)
Axiom. (pair_p_I2) We take the following as an axiom:
∀w, (∀uw, pair_p u u 0 2)pair_p w
Axiom. (pair_p_In_ap) We take the following as an axiom:
∀w f, pair_p ww fw 1 ap f (w 0)
Definition. We define tuple_p to be λn u ⇒ ∀zu, ∃in, ∃x : set, z = pair i x of type setsetprop.
Axiom. (pair_p_tuple2) We take the following as an axiom:
Axiom. (tuple_p_2_tuple) We take the following as an axiom:
∀x y : set, tuple_p 2 (x,y)
Axiom. (tuple_pair) We take the following as an axiom:
∀x y : set, pair x y = (x,y)
Definition. We define Pi to be λX Y ⇒ {f𝒫 (xX, (Y x))|∀xX, f x Y x} of type set(setset)set.
Notation. We use x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Pi.
Axiom. (PiI) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, (∀uf, pair_p u u 0 X)(∀xX, f x Y x)f xX, Y x
Axiom. (PiE) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, f (xX, Y x)(∀uf, pair_p u u 0 X) (∀xX, f x Y x)
Axiom. (PiEq) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, f Pi X Y (∀uf, pair_p u u 0 X) (∀xX, f x Y x)
Axiom. (lam_Pi) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀F : setset, (∀xX, F x Y x)(λxXF x) (xX, Y x)
Axiom. (ap_Pi) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, ∀x : set, f (xX, Y x)x Xf x Y x
Axiom. (Pi_ext_Subq) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f g(xX, Y x), (∀xX, f x g x)f g
Axiom. (Pi_ext) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f g(xX, Y x), (∀xX, f x = g x)f = g
Axiom. (Pi_eta) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀f : set, f (xX, Y x)(λxXf x) = f
Definition. We define setexp to be λX Y : setyY, X of type setsetset.
Notation. We use :^: as an infix operator with priority 430 and which associates to the left corresponding to applying term setexp.
Axiom. (pair_tuple_fun) We take the following as an axiom:
pair = (λx y ⇒ (x,y))
Axiom. (lamI2) We take the following as an axiom:
∀X, ∀F : setset, ∀xX, ∀yF x, (x,y) λxXF x
Axiom. (lamE2) We take the following as an axiom:
∀X, ∀F : setset, ∀z : set, z (λxXF x)∃xX, ∃yF x, z = (x,y)
Axiom. (tuple_2_inj) We take the following as an axiom:
∀x y w z : set, (x,y) = (w,z)x = w y = z
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
Definition. We define Sep2 to be λX Y R ⇒ {uxX, Y x|R (u 0) (u 1)} of type set(setset)(setsetprop)set.
Axiom. (Sep2I) We take the following as an axiom:
∀X, ∀Y : setset, ∀R : setsetprop, ∀xX, ∀yY x, R x y(x,y) Sep2 X Y R
Axiom. (Sep2E) We take the following as an axiom:
∀X, ∀Y : setset, ∀R : setsetprop, ∀uSep2 X Y R, ∃xX, ∃yY x, u = (x,y) R x y
Axiom. (Sep2E') We take the following as an axiom:
∀X, ∀Y : setset, ∀R : setsetprop, ∀x y, (x,y) Sep2 X Y Rx X y Y x R x y
Axiom. (Sep2E'1) We take the following as an axiom:
∀X, ∀Y : setset, ∀R : setsetprop, ∀x y, (x,y) Sep2 X Y Rx X
Axiom. (Sep2E'2) We take the following as an axiom:
∀X, ∀Y : setset, ∀R : setsetprop, ∀x y, (x,y) Sep2 X Y Ry Y x
Axiom. (Sep2E'3) We take the following as an axiom:
∀X, ∀Y : setset, ∀R : setsetprop, ∀x y, (x,y) Sep2 X Y RR x y
Definition. We define set_of_pairs to be λX ⇒ ∀xX, ∃y z, x = (y,z) of type setprop.
Axiom. (set_of_pairs_ext) We take the following as an axiom:
∀X Y, set_of_pairs Xset_of_pairs Y(∀v w, (v,w) X (v,w) Y)X = Y
Axiom. (Sep2_set_of_pairs) We take the following as an axiom:
∀X, ∀Y : setset, ∀R : setsetprop, set_of_pairs (Sep2 X Y R)
Axiom. (Sep2_ext) We take the following as an axiom:
∀X, ∀Y : setset, ∀R R' : setsetprop, (∀xX, ∀yY x, R x y R' x y)Sep2 X Y R = Sep2 X Y R'
Axiom. (lam_ext_sub) We take the following as an axiom:
∀X, ∀F G : setset, (∀xX, F x = G x)(λxXF x) (λxXG x)
Axiom. (lam_ext) We take the following as an axiom:
∀X, ∀F G : setset, (∀xX, F x = G x)(λxXF x) = (λxXG x)
Axiom. (lam_eta) We take the following as an axiom:
∀X, ∀F : setset, (λxX(λxXF x) x) = (λxXF x)
Axiom. (tuple_2_eta) We take the following as an axiom:
∀x y, (λi2(x,y) i) = (x,y)
Definition. We define lam2 to be λX Y F ⇒ λxXλyY xF x y of type set(setset)(setsetset)set.
Axiom. (beta2) We take the following as an axiom:
∀X, ∀Y : setset, ∀F : setsetset, ∀xX, ∀yY x, lam2 X Y F x y = F x y
Axiom. (lam2_ext) We take the following as an axiom:
∀X, ∀Y : setset, ∀F G : setsetset, (∀xX, ∀yY x, F x y = G x y)lam2 X Y F = lam2 X Y G
Definition. We define encode_u to be lam of type set(setset)set.
Definition. We define decode_u to be ap of type setsetset.
Definition. We define encode_b to be λX F ⇒ lam2 X (λ_ ⇒ X) F of type set(setsetset)set.
Definition. We define decode_b to be λF x y ⇒ F x y of type setsetsetset.
Definition. We define encode_p to be λX P ⇒ Sep X P of type set(setprop)set.
Definition. We define decode_p to be λP x ⇒ x P of type setsetprop.
Definition. We define encode_r to be λX R ⇒ Sep2 X (λ_ ⇒ X) R of type set(setsetprop)set.
Definition. We define decode_r to be λR x y ⇒ (x,y) R of type setsetsetprop.
Definition. We define encode_c to be λX C ⇒ Sep (𝒫 X) (λU ⇒ (C (λx ⇒ x U))) of type set((setprop)prop)set.
Definition. We define decode_c to be λC U ⇒ ∃V, (∀x, U x x V) V C of type set(setprop)prop.
Axiom. (decode_encode_u) We take the following as an axiom:
∀X, ∀F : setset, ∀xX, decode_u (encode_u X F) x = F x
Axiom. (encode_u_ext) We take the following as an axiom:
∀X, ∀F F' : setset, (∀xX, F x = F' x)encode_u X F = encode_u X F'
Axiom. (decode_encode_b) We take the following as an axiom:
∀X, ∀F : setsetset, ∀x yX, decode_b (encode_b X F) x y = F x y
Axiom. (encode_b_ext) We take the following as an axiom:
∀X, ∀F F' : setsetset, (∀x yX, F x y = F' x y)encode_b X F = encode_b X F'
Axiom. (decode_encode_p) We take the following as an axiom:
∀X, ∀P : setprop, ∀xX, (decode_p (encode_p X P) x) = (P x)
Axiom. (encode_p_ext) We take the following as an axiom:
∀X, ∀P P' : setprop, (∀xX, P x P' x)encode_p X P = encode_p X P'
Axiom. (decode_encode_r) We take the following as an axiom:
∀X, ∀R : setsetprop, ∀x yX, (decode_r (encode_r X R) x y) = (R x y)
Axiom. (encode_r_ext) We take the following as an axiom:
∀X, ∀R R' : setsetprop, (∀x yX, R x y R' x y)encode_r X R = encode_r X R'
Axiom. (decode_encode_c) We take the following as an axiom:
∀X, ∀C : (setprop)prop, ∀U : setprop, (∀x, U xx X)(decode_c (encode_c X C) U) = (C U)
Axiom. (encode_c_ext) We take the following as an axiom:
∀X, ∀C C' : (setprop)prop, (∀U : setprop, (∀x, U xx X)(C U C' U))encode_c X C = encode_c X C'
Axiom. (setprod_mon) We take the following as an axiom:
∀X Y : set, X Y∀Z W : set, Z WX Z Y W
Axiom. (setprod_mon0) We take the following as an axiom:
∀X Y : set, X Y∀Z : set, X Z Y Z
Axiom. (setprod_mon1) We take the following as an axiom:
∀X : set, ∀Z W : set, Z WX Z X W
Axiom. (pair_eta_Subq) We take the following as an axiom:
∀w, pair (w 0) (w 1) w
Axiom. (Sigma_eta) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z(xX, Y x), pair (z 0) (z 1) = z
Axiom. (ReplEq_setprod_ext) We take the following as an axiom:
∀X Y, ∀F G : setsetset, (∀xX, ∀yY, F x y = G x y){F (w 0) (w 1)|wX Y} = {G (w 0) (w 1)|wX Y}
Axiom. (tuple_p_3_tuple) We take the following as an axiom:
∀x y z : set, tuple_p 3 (x,y,z)
Axiom. (tuple_p_4_tuple) We take the following as an axiom:
∀x y z w : set, tuple_p 4 (x,y,z,w)
Axiom. (Pi_Power_1) We take the following as an axiom:
∀X : set, ∀Y : setset, (∀xX, Y x 𝒫 1)(xX, Y x) 𝒫 1
Axiom. (Pi_0_dom_mon) We take the following as an axiom:
∀X Y : set, ∀A : setset, X Y(∀yY, y X0 A y)(xX, A x) yY, A y
Axiom. (Pi_cod_mon) We take the following as an axiom:
∀X : set, ∀A B : setset, (∀xX, A x B x)(xX, A x) xX, B x
Axiom. (Pi_0_mon) We take the following as an axiom:
∀X Y : set, ∀A B : setset, (∀xX, A x B x)X Y(∀yY, y X0 B y)(xX, A x) yY, B y
Axiom. (setexp_2_eq) We take the following as an axiom:
∀X : set, X X = X2
Axiom. (setexp_0_dom_mon) We take the following as an axiom:
∀A : set, 0 A∀X Y : set, X YAX AY
Axiom. (setexp_0_mon) We take the following as an axiom:
∀X Y A B : set, 0 BA BX YAX BY
Axiom. (nat_in_setexp_mon) We take the following as an axiom:
∀A : set, 0 A∀n, nat_p n∀mn, Am An
Axiom. (tupleI0) We take the following as an axiom:
∀X Y x, x X(0,x) (X,Y)
Axiom. (tupleI1) We take the following as an axiom:
∀X Y y, y Y(1,y) (X,Y)
Axiom. (tupleE) We take the following as an axiom:
∀X Y z, z (X,Y)(∃xX, z = (0,x)) (∃yY, z = (1,y))
Axiom. (tuple_2_Sigma) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀xX, ∀yY x, (x,y) xX, Y x
Axiom. (tuple_2_setprod) We take the following as an axiom:
∀X : set, ∀Y : set, ∀xX, ∀yY, (x,y) X Y
Axiom. (tuple_Sigma_eta) We take the following as an axiom:
∀X : set, ∀Y : setset, ∀z(xX, Y x), (z 0,z 1) = z
Axiom. (apI2) We take the following as an axiom:
∀f x y, (x,y) fy f x
Axiom. (apE2) We take the following as an axiom:
∀f x y, y f x(x,y) f
Axiom. (ap_const_0) We take the following as an axiom:
∀x, 0 x = 0
Axiom. (tuple_2_in_A_2) We take the following as an axiom:
∀x y A, x Ay A(x,y) A2
Axiom. (tuple_2_bij_2) We take the following as an axiom:
∀x y, x 2y 2x ybij 2 2 (λi ⇒ (x,y) i)
Axiom. (tuple_3_eta) We take the following as an axiom:
∀x y z, (λi3(x,y,z) i) = (x,y,z)
Axiom. (tuple_4_eta) We take the following as an axiom:
∀x y z w, (λi4(x,y,z,w) i) = (x,y,z,w)
Beginning of Section Tuples
Variable x0 x1 x2 : set
Axiom. (tuple_3_0_eq) We take the following as an axiom:
(x0,x1,x2) 0 = x0
Axiom. (tuple_3_1_eq) We take the following as an axiom:
(x0,x1,x2) 1 = x1
Axiom. (tuple_3_2_eq) We take the following as an axiom:
(x0,x1,x2) 2 = x2
Variable x3 : set
Axiom. (tuple_4_0_eq) We take the following as an axiom:
(x0,x1,x2,x3) 0 = x0
Axiom. (tuple_4_1_eq) We take the following as an axiom:
(x0,x1,x2,x3) 1 = x1
Axiom. (tuple_4_2_eq) We take the following as an axiom:
(x0,x1,x2,x3) 2 = x2
Axiom. (tuple_4_3_eq) We take the following as an axiom:
(x0,x1,x2,x3) 3 = x3
Variable x4 : set
Axiom. (tuple_5_0_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4) 0 = x0
Axiom. (tuple_5_1_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4) 1 = x1
Axiom. (tuple_5_2_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4) 2 = x2
Axiom. (tuple_5_3_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4) 3 = x3
Axiom. (tuple_5_4_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4) 4 = x4
Variable x5 : set
Axiom. (tuple_6_0_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5) 0 = x0
Axiom. (tuple_6_1_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5) 1 = x1
Axiom. (tuple_6_2_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5) 2 = x2
Axiom. (tuple_6_3_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5) 3 = x3
Axiom. (tuple_6_4_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5) 4 = x4
Axiom. (tuple_6_5_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5) 5 = x5
Variable x6 : set
Axiom. (tuple_7_0_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6) 0 = x0
Axiom. (tuple_7_1_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6) 1 = x1
Axiom. (tuple_7_2_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6) 2 = x2
Axiom. (tuple_7_3_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6) 3 = x3
Axiom. (tuple_7_4_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6) 4 = x4
Axiom. (tuple_7_5_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6) 5 = x5
Axiom. (tuple_7_6_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6) 6 = x6
Variable x7 : set
Axiom. (tuple_8_0_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7) 0 = x0
Axiom. (tuple_8_1_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7) 1 = x1
Axiom. (tuple_8_2_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7) 2 = x2
Axiom. (tuple_8_3_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7) 3 = x3
Axiom. (tuple_8_4_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7) 4 = x4
Axiom. (tuple_8_5_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7) 5 = x5
Axiom. (tuple_8_6_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7) 6 = x6
Axiom. (tuple_8_7_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7) 7 = x7
Variable x8 : set
Axiom. (tuple_9_0_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 0 = x0
Axiom. (tuple_9_1_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 1 = x1
Axiom. (tuple_9_2_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 2 = x2
Axiom. (tuple_9_3_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 3 = x3
Axiom. (tuple_9_4_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 4 = x4
Axiom. (tuple_9_5_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 5 = x5
Axiom. (tuple_9_6_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 6 = x6
Axiom. (tuple_9_7_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 7 = x7
Axiom. (tuple_9_8_eq) We take the following as an axiom:
(x0,x1,x2,x3,x4,x5,x6,x7,x8) 8 = x8
End of Section Tuples
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.
Axiom. (tuple_3_in_A_3) We take the following as an axiom:
∀x y z A, x Ay Az A(x,y,z) A3
Axiom. (tuple_3_bij_3) We take the following as an axiom:
∀x y z, x 3y 3z 3x yx zy zbij 3 3 (λi ⇒ (x,y,z) i)
Axiom. (tuple_4_in_A_4) We take the following as an axiom:
∀x y z w A, x Ay Az Aw A(x,y,z,w) A4
Axiom. (tuple_4_bij_4) We take the following as an axiom:
∀x y z w, x 4y 4z 4w 4x yx zx wy zy wz wbij 4 4 (λi ⇒ (x,y,z,w) i)
Axiom. (iff_refl) We take the following as an axiom:
∀A : prop, A A
Axiom. (iff_sym) We take the following as an axiom:
∀A B : prop, (A B)(B A)
Axiom. (iff_trans) We take the following as an axiom:
∀A B C : prop, (A B)(B C)(A C)
Axiom. (not_or_and_demorgan) We take the following as an axiom:
∀A B : prop, ¬ (A B)¬ A ¬ B
Axiom. (and_not_or_demorgan) We take the following as an axiom:
∀A B : prop, ¬ A ¬ B¬ (A B)
Axiom. (not_ex_all_demorgan_i) We take the following as an axiom:
∀P : setprop, (¬ ∃x, P x)∀x, ¬ P x
Axiom. (not_all_ex_demorgan_i) We take the following as an axiom:
∀P : setprop, ¬ (∀x, P x)∃x, ¬ P x
Axiom. (eq_or_nand) We take the following as an axiom:
or = (λx y : prop¬ (¬ x ¬ y))
Primitive. The name EpsR_i_i_1 is a term of type (setsetprop)set.
Primitive. The name EpsR_i_i_2 is a term of type (setsetprop)set.
Axiom. (EpsR_i_i_12) We take the following as an axiom:
∀R : setsetprop, (∃x y, R x y)R (EpsR_i_i_1 R) (EpsR_i_i_2 R)
Primitive. The name DescrR_i_io_1 is a term of type (set(setprop)prop)set.
Primitive. The name DescrR_i_io_2 is a term of type (set(setprop)prop)setprop.
Axiom. (DescrR_i_io_12) We take the following as an axiom:
∀R : set(setprop)prop, (∃x, (∃y : setprop, R x y) (∀y z : setprop, R x yR x zy = z))R (DescrR_i_io_1 R) (DescrR_i_io_2 R)
Definition. We define PNoEq_ to be λalpha p q ⇒ ∀betaalpha, p beta q beta of type set(setprop)(setprop)prop.
Axiom. (PNoEq_ref_) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoEq_ alpha p p
Axiom. (PNoEq_sym_) We take the following as an axiom:
∀alpha, ∀p q : setprop, PNoEq_ alpha p qPNoEq_ alpha q p
Axiom. (PNoEq_tra_) We take the following as an axiom:
∀alpha, ∀p q r : setprop, PNoEq_ alpha p qPNoEq_ alpha q rPNoEq_ alpha p r
Axiom. (PNoEq_antimon_) We take the following as an axiom:
∀p q : setprop, ∀alpha, ordinal alpha∀betaalpha, PNoEq_ alpha p qPNoEq_ beta p q
Definition. We define PNoLt_ to be λalpha p q ⇒ ∃betaalpha, PNoEq_ beta p q ¬ p beta q beta of type set(setprop)(setprop)prop.
Axiom. (PNoLt_E_) We take the following as an axiom:
∀alpha, ∀p q : setprop, PNoLt_ alpha p q∀R : prop, (∀beta, beta alphaPNoEq_ beta p q¬ p betaq betaR)R
Axiom. (PNoLt_irref_) We take the following as an axiom:
∀alpha, ∀p : setprop, ¬ PNoLt_ alpha p p
Axiom. (PNoLt_mon_) We take the following as an axiom:
∀p q : setprop, ∀alpha, ordinal alpha∀betaalpha, PNoLt_ beta p qPNoLt_ alpha p q
Axiom. (PNoLt_trichotomy_or_) We take the following as an axiom:
∀p q : setprop, ∀alpha, ordinal alphaPNoLt_ alpha p q PNoEq_ alpha p q PNoLt_ alpha q p
Axiom. (PNoLt_tra_) We take the following as an axiom:
∀alpha, ordinal alpha∀p q r : setprop, PNoLt_ alpha p qPNoLt_ alpha q rPNoLt_ alpha p r
Primitive. The name PNoLt is a term of type set(setprop)set(setprop)prop.
Axiom. (PNoLtI1) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, PNoLt_ (alpha beta) p qPNoLt alpha p beta q
Axiom. (PNoLtI2) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, alpha betaPNoEq_ alpha p qq alphaPNoLt alpha p beta q
Axiom. (PNoLtI3) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, beta alphaPNoEq_ beta p q¬ p betaPNoLt alpha p beta q
Axiom. (PNoLtE) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, PNoLt alpha p beta q∀R : prop, (PNoLt_ (alpha beta) p qR)(alpha betaPNoEq_ alpha p qq alphaR)(beta alphaPNoEq_ beta p q¬ p betaR)R
Axiom. (PNoLtE2) We take the following as an axiom:
∀alpha, ∀p q : setprop, PNoLt alpha p alpha qPNoLt_ alpha p q
Axiom. (PNoLt_irref) We take the following as an axiom:
∀alpha, ∀p : setprop, ¬ PNoLt alpha p alpha p
Axiom. (PNoLt_trichotomy_or) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPNoLt alpha p beta q alpha = beta PNoEq_ alpha p q PNoLt beta q alpha p
Axiom. (PNoLtEq_tra) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q r : setprop, PNoLt alpha p beta qPNoEq_ beta q rPNoLt alpha p beta r
Axiom. (PNoEqLt_tra) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q r : setprop, PNoEq_ alpha p qPNoLt alpha q beta rPNoLt alpha p beta r
Axiom. (PNoLt_tra) We take the following as an axiom:
∀alpha beta gamma, ordinal alphaordinal betaordinal gamma∀p q r : setprop, PNoLt alpha p beta qPNoLt beta q gamma rPNoLt alpha p gamma r
Definition. We define PNoLe to be λalpha p beta q ⇒ PNoLt alpha p beta q alpha = beta PNoEq_ alpha p q of type set(setprop)set(setprop)prop.
Axiom. (PNoLeI1) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, PNoLt alpha p beta qPNoLe alpha p beta q
Axiom. (PNoLeI2) We take the following as an axiom:
∀alpha, ∀p q : setprop, PNoEq_ alpha p qPNoLe alpha p alpha q
Axiom. (PNoLe_ref) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoLe alpha p alpha p
Axiom. (PNoLe_antisym) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q : setprop, PNoLe alpha p beta qPNoLe beta q alpha palpha = beta PNoEq_ alpha p q
Axiom. (PNoLtLe_tra) We take the following as an axiom:
∀alpha beta gamma, ordinal alphaordinal betaordinal gamma∀p q r : setprop, PNoLt alpha p beta qPNoLe beta q gamma rPNoLt alpha p gamma r
Axiom. (PNoLeLt_tra) We take the following as an axiom:
∀alpha beta gamma, ordinal alphaordinal betaordinal gamma∀p q r : setprop, PNoLe alpha p beta qPNoLt beta q gamma rPNoLt alpha p gamma r
Axiom. (PNoEqLe_tra) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q r : setprop, PNoEq_ alpha p qPNoLe alpha q beta rPNoLe alpha p beta r
Axiom. (PNoLeEq_tra) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal beta∀p q r : setprop, PNoLe alpha p beta qPNoEq_ beta q rPNoLe alpha p beta r
Axiom. (PNoLe_tra) We take the following as an axiom:
∀alpha beta gamma, ordinal alphaordinal betaordinal gamma∀p q r : setprop, PNoLe alpha p beta qPNoLe beta q gamma rPNoLe alpha p gamma r
Definition. We define PNo_downc to be λL alpha p ⇒ ∃beta, ordinal beta ∃q : setprop, L beta q PNoLe alpha p beta q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_upc to be λR alpha p ⇒ ∃beta, ordinal beta ∃q : setprop, R beta q PNoLe beta q alpha p of type (set(setprop)prop)set(setprop)prop.
Axiom. (PNoLe_downc) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPNo_downc L alpha pPNoLe beta q alpha pPNo_downc L beta q
Axiom. (PNo_downc_ref) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, L alpha pPNo_downc L alpha p
Axiom. (PNo_upc_ref) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, R alpha pPNo_upc R alpha p
Axiom. (PNoLe_upc) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPNo_upc R alpha pPNoLe alpha p beta qPNo_upc R beta q
Definition. We define PNoLt_pwise to be λL R ⇒ ∀gamma, ordinal gamma∀p : setprop, L gamma p∀delta, ordinal delta∀q : setprop, R delta qPNoLt gamma p delta q of type (set(setprop)prop)(set(setprop)prop)prop.
Axiom. (PNoLt_pwise_downc_upc) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L RPNoLt_pwise (PNo_downc L) (PNo_upc R)
Definition. We define PNo_rel_strict_upperbd to be λL alpha p ⇒ ∀betaalpha, ∀q : setprop, PNo_downc L beta qPNoLt beta q alpha p of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_lowerbd to be λR alpha p ⇒ ∀betaalpha, ∀q : setprop, PNo_upc R beta qPNoLt alpha p beta q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_imv to be λL R alpha p ⇒ PNo_rel_strict_upperbd L alpha p PNo_rel_strict_lowerbd R alpha p of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNoEq_rel_strict_upperbd) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_rel_strict_upperbd L alpha pPNo_rel_strict_upperbd L alpha q
Axiom. (PNo_rel_strict_upperbd_antimon) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, ∀betaalpha, PNo_rel_strict_upperbd L alpha pPNo_rel_strict_upperbd L beta p
Axiom. (PNoEq_rel_strict_lowerbd) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_rel_strict_lowerbd R alpha pPNo_rel_strict_lowerbd R alpha q
Axiom. (PNo_rel_strict_lowerbd_antimon) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, ∀betaalpha, PNo_rel_strict_lowerbd R alpha pPNo_rel_strict_lowerbd R beta p
Axiom. (PNoEq_rel_strict_imv) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_rel_strict_imv L R alpha pPNo_rel_strict_imv L R alpha q
Axiom. (PNo_rel_strict_imv_antimon) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, ∀betaalpha, PNo_rel_strict_imv L R alpha pPNo_rel_strict_imv L R beta p
Definition. We define PNo_rel_strict_uniq_imv to be λL R alpha p ⇒ PNo_rel_strict_imv L R alpha p ∀q : setprop, PNo_rel_strict_imv L R alpha qPNoEq_ alpha p q of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Definition. We define PNo_rel_strict_split_imv to be λL R alpha p ⇒ PNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p delta delta alpha) PNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p delta delta = alpha) of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNo_extend0_eq) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoEq_ alpha p (λdelta ⇒ p delta delta alpha)
Axiom. (PNo_extend1_eq) We take the following as an axiom:
∀alpha, ∀p : setprop, PNoEq_ alpha p (λdelta ⇒ p delta delta = alpha)
Axiom. (PNo_rel_imv_ex) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alpha(∃p : setprop, PNo_rel_strict_uniq_imv L R alpha p) (∃taualpha, ∃p : setprop, PNo_rel_strict_split_imv L R tau p)
Definition. We define PNo_lenbdd to be λalpha L ⇒ ∀beta, ∀p : setprop, L beta pbeta alpha of type set(set(setprop)prop)prop.
Axiom. (PNo_lenbdd_strict_imv_extend0) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∀p : setprop, PNo_rel_strict_imv L R alpha pPNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p delta delta alpha)
Axiom. (PNo_lenbdd_strict_imv_extend1) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∀p : setprop, PNo_rel_strict_imv L R alpha pPNo_rel_strict_imv L R (ordsucc alpha) (λdelta ⇒ p delta delta = alpha)
Axiom. (PNo_lenbdd_strict_imv_split) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∀p : setprop, PNo_rel_strict_imv L R alpha pPNo_rel_strict_split_imv L R alpha p
Axiom. (PNo_rel_imv_bdd_ex) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha R∃betaordsucc alpha, ∃p : setprop, PNo_rel_strict_split_imv L R beta p
Definition. We define PNo_strict_upperbd to be λL alpha p ⇒ ∀beta, ordinal beta∀q : setprop, L beta qPNoLt beta q alpha p of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_strict_lowerbd to be λR alpha p ⇒ ∀beta, ordinal beta∀q : setprop, R beta qPNoLt alpha p beta q of type (set(setprop)prop)set(setprop)prop.
Definition. We define PNo_strict_imv to be λL R alpha p ⇒ PNo_strict_upperbd L alpha p PNo_strict_lowerbd R alpha p of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNoEq_strict_upperbd) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_strict_upperbd L alpha pPNo_strict_upperbd L alpha q
Axiom. (PNoEq_strict_lowerbd) We take the following as an axiom:
∀R : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_strict_lowerbd R alpha pPNo_strict_lowerbd R alpha q
Axiom. (PNoEq_strict_imv) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀p q : setprop, PNoEq_ alpha p qPNo_strict_imv L R alpha pPNo_strict_imv L R alpha q
Axiom. (PNo_strict_upperbd_imp_rel_strict_upperbd) We take the following as an axiom:
∀L : set(setprop)prop, ∀alpha, ordinal alpha∀betaordsucc 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∀betaordsucc 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∀betaordsucc 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. (ordinal_PNo_strict_imv) We take the following as an axiom:
∀L R : set(setprop)prop, ∀alpha, ordinal alpha∀p : setprop, (∀betaalpha, p beta)(∀beta, ordinal beta∀q : setprop, L beta qbeta alpha)(∀betaalpha, L beta p)(∀beta, ordinal beta∀q : setprop, ¬ R beta q)PNo_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∃betaordsucc alpha, ∃p : setprop, PNo_strict_imv L R beta p
Definition. We define PNo_least_rep to be λL R beta p ⇒ ordinal beta PNo_strict_imv L R beta p ∀gammabeta, ∀q : setprop, ¬ PNo_strict_imv L R gamma q of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNo_lenbdd_least_rep_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, ∃p : setprop, PNo_least_rep L R beta p
Definition. We define PNo_least_rep2 to be λL R beta p ⇒ PNo_least_rep L R beta p ∀x, x beta¬ p x of type (set(setprop)prop)(set(setprop)prop)set(setprop)prop.
Axiom. (PNo_strict_imv_pred_eq) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alpha∀p q : setprop, PNo_least_rep L R alpha pPNo_strict_imv L R alpha q∀betaalpha, p beta q beta
Axiom. (PNo_lenbdd_least_rep2_exuniq2) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha 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)
Primitive. The name PNo_bd is a term of type (set(setprop)prop)(set(setprop)prop)set.
Primitive. The name PNo_pred is a term of type (set(setprop)prop)(set(setprop)prop)setprop.
Axiom. (PNo_bd_pred_lem) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha RPNo_least_rep2 L R (PNo_bd L R) (PNo_pred L R)
Axiom. (PNo_bd_pred) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha RPNo_least_rep L R (PNo_bd L R) (PNo_pred L R)
Axiom. (PNo_bd_ord) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha Rordinal (PNo_bd L R)
Axiom. (PNo_bd_pred_strict_imv) 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_strict_imv L R (PNo_bd L R) (PNo_pred L R)
Axiom. (PNo_bd_least_imv) 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∀gammaPNo_bd L R, ∀q : setprop, ¬ PNo_strict_imv L R gamma q
Axiom. (PNo_bd_In) We take the following as an axiom:
∀L R : set(setprop)prop, PNoLt_pwise L R∀alpha, ordinal alphaPNo_lenbdd alpha LPNo_lenbdd alpha RPNo_bd L R ordsucc alpha
Definition. We define PNoCutL to be λalpha p beta q ⇒ beta alpha PNoLt beta q alpha p of type set(setprop)set(setprop)prop.
Definition. We define PNoCutR to be λalpha p beta q ⇒ beta alpha PNoLt alpha p beta q of type set(setprop)set(setprop)prop.
Axiom. (PNoCutL_lenbdd) We take the following as an axiom:
∀alpha, ∀p : setprop, PNo_lenbdd alpha (PNoCutL alpha p)
Axiom. (PNoCutR_lenbdd) We take the following as an axiom:
∀alpha, ∀p : setprop, PNo_lenbdd alpha (PNoCutR alpha p)
Axiom. (PNoCut_pwise) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, PNoLt_pwise (PNoCutL alpha p) (PNoCutR alpha p)
Axiom. (PNoCut_strict_imv) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, PNo_strict_imv (PNoCutL alpha p) (PNoCutR alpha p) alpha p
Axiom. (PNoCut_bd_eq) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, PNo_bd (PNoCutL alpha p) (PNoCutR alpha p) = alpha
Axiom. (PNoCut_pred_eq) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, PNoEq_ alpha p (PNo_pred (PNoCutL alpha p) (PNoCutR alpha p))
Beginning of Section TaggedSets
Let tag : setsetλalpha ⇒ SetAdjoin alpha {1}
Notation. We use ' as a postfix operator with priority 100 corresponding to applying term tag.
Axiom. (not_TransSet_Sing1) We take the following as an axiom:
Axiom. (not_ordinal_Sing1) We take the following as an axiom:
Axiom. (tagged_not_ordinal) We take the following as an axiom:
∀y, ¬ ordinal (y ')
Axiom. (tagged_notin_ordinal) We take the following as an axiom:
∀alpha y, ordinal alpha(y ') alpha
Axiom. (tagged_eqE_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaalpha ' = beta 'alpha beta
Axiom. (tagged_eqE_eq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha ' = beta 'alpha = beta
Axiom. (tagged_ReplE) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betabeta ' {gamma '|gammaalpha}beta alpha
Axiom. (ordinal_notin_tagged_Repl) We take the following as an axiom:
∀alpha Y, ordinal alphaalpha {y '|yY}
Definition. We define SNoElts_ to be λalpha ⇒ alpha {beta '|betaalpha} of type setset.
Axiom. (SNoElts_mon) We take the following as an axiom:
∀alpha beta, alpha betaSNoElts_ alpha SNoElts_ beta
Definition. We define SNo_ to be λalpha x ⇒ x SNoElts_ alpha ∀betaalpha, exactly1of2 (beta ' x) (beta x) of type setsetprop.
Definition. We define PSNo to be λalpha p ⇒ {betaalpha|p beta} {beta '|betaalpha, ¬ p beta} of type set(setprop)set.
Axiom. (PNoEq_PSNo) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, PNoEq_ alpha (λbeta ⇒ beta PSNo alpha p) p
Axiom. (SNo_PSNo) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, SNo_ alpha (PSNo alpha p)
Axiom. (SNo_PSNo_eta_) We take the following as an axiom:
∀alpha x, ordinal alphaSNo_ alpha xx = PSNo alpha (λbeta ⇒ beta x)
Primitive. The name SNo is a term of type setprop.
Axiom. (SNo_SNo) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo_ alpha zSNo z
Primitive. The name SNoLev is a term of type setset.
Axiom. (SNoLev_uniq_Subq) We take the following as an axiom:
∀x alpha beta, ordinal alphaordinal betaSNo_ alpha xSNo_ beta xalpha beta
Axiom. (SNoLev_uniq) We take the following as an axiom:
∀x alpha beta, ordinal alphaordinal betaSNo_ alpha xSNo_ beta xalpha = beta
Axiom. (SNoLev_prop) We take the following as an axiom:
∀x, SNo xordinal (SNoLev x) SNo_ (SNoLev x) x
Axiom. (SNoLev_ordinal) We take the following as an axiom:
∀x, SNo xordinal (SNoLev x)
Axiom. (SNoLev_) We take the following as an axiom:
∀x, SNo xSNo_ (SNoLev x) x
Axiom. (SNo_PSNo_eta) We take the following as an axiom:
∀x, SNo xx = PSNo (SNoLev x) (λbeta ⇒ beta x)
Axiom. (SNoLev_PSNo) We take the following as an axiom:
∀alpha, ordinal alpha∀p : setprop, SNoLev (PSNo alpha p) = alpha
Axiom. (SNo_Subq) We take the following as an axiom:
∀x y, SNo xSNo ySNoLev x SNoLev y(∀alphaSNoLev x, alpha x alpha y)x y
Definition. We define SNoEq_ to be λalpha x y ⇒ PNoEq_ alpha (λbeta ⇒ beta x) (λbeta ⇒ beta y) of type setsetsetprop.
Axiom. (SNoEq_I) We take the following as an axiom:
∀alpha x y, (∀betaalpha, beta x beta y)SNoEq_ alpha x y
Axiom. (SNoEq_E) We take the following as an axiom:
∀alpha x y, SNoEq_ alpha x y∀betaalpha, beta x beta y
Axiom. (SNoEq_E1) We take the following as an axiom:
∀alpha x y, SNoEq_ alpha x y∀betaalpha, beta xbeta y
Axiom. (SNoEq_E2) We take the following as an axiom:
∀alpha x y, SNoEq_ alpha x y∀betaalpha, beta ybeta x
Axiom. (SNoEq_antimon_) We take the following as an axiom:
∀alpha, ordinal alpha∀betaalpha, ∀x y, SNoEq_ alpha x ySNoEq_ beta 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
Let ctag : setsetλalpha ⇒ SetAdjoin alpha {2}
Notation. We use '' as a postfix operator with priority 100 corresponding to applying term ctag.
Axiom. (ctagged_not_ordinal) We take the following as an axiom:
∀y, ¬ ordinal (y '')
Axiom. (ctagged_notin_ordinal) We take the following as an axiom:
∀alpha y, ordinal alpha(y '') alpha
Axiom. (Sing2_notin_SingSing1) We take the following as an axiom:
Axiom. (ctagged_notin_SNo) We take the following as an axiom:
∀x y, SNo x(y '') x
Axiom. (ctagged_eqE_eq) We take the following as an axiom:
∀x y, SNo xSNo y∀ux, ∀vy, u '' = v ''u = v
Definition. We define SNo_pair to be λx y ⇒ x {u ''|uy} of type setsetset.
Axiom. (SNo_pair_prop_1) We take the following as an axiom:
∀x1 y1 x2 y2, SNo x1SNo x2SNo_pair x1 y1 = SNo_pair x2 y2x1 = x2
Axiom. (SNo_pair_prop_2) We take the following as an axiom:
∀x1 y1 x2 y2, SNo x1SNo y1SNo x2SNo y2SNo_pair x1 y1 = SNo_pair x2 y2y1 = y2
Axiom. (SNo_pair_prop) We take the following as an axiom:
∀x1 y1 x2 y2, SNo x1SNo y1SNo x2SNo y2SNo_pair x1 y1 = SNo_pair x2 y2x1 = x2 y1 = y2
Axiom. (SNo_pair_0) We take the following as an axiom:
∀x, SNo_pair x 0 = x
End of Section TaggedSets
Definition. We define SNoLt to be λx y ⇒ PNoLt (SNoLev x) (λbeta ⇒ beta x) (SNoLev y) (λbeta ⇒ beta y) of type setsetprop.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Definition. We define SNoLe to be λx y ⇒ PNoLe (SNoLev x) (λbeta ⇒ beta x) (SNoLev y) (λbeta ⇒ beta y) of type setsetprop.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Axiom. (SNoLtLe) We take the following as an axiom:
∀x y, x < yx y
Axiom. (SNoLeE) We take the following as an axiom:
∀x y, SNo xSNo yx yx < y x = y
Axiom. (SNoEq_ref_) We take the following as an axiom:
∀alpha x, SNoEq_ alpha x x
Axiom. (SNoEq_sym_) We take the following as an axiom:
∀alpha x y, SNoEq_ alpha x ySNoEq_ alpha y x
Axiom. (SNoEq_tra_) We take the following as an axiom:
∀alpha x y z, SNoEq_ alpha x ySNoEq_ alpha y zSNoEq_ alpha x z
Axiom. (SNoLtE) We take the following as an axiom:
∀x y, SNo xSNo yx < y∀p : prop, (∀z, SNo zSNoLev z SNoLev x SNoLev ySNoEq_ (SNoLev z) z xSNoEq_ (SNoLev z) z yx < zz < ySNoLev z xSNoLev z yp)(SNoLev x SNoLev ySNoEq_ (SNoLev x) x ySNoLev x yp)(SNoLev y SNoLev xSNoEq_ (SNoLev y) x ySNoLev y xp)p
Axiom. (SNoLtI2) We take the following as an axiom:
∀x y, SNoLev x SNoLev ySNoEq_ (SNoLev x) x ySNoLev x yx < y
Axiom. (SNoLtI3) We take the following as an axiom:
∀x y, SNoLev y SNoLev xSNoEq_ (SNoLev y) x ySNoLev y xx < y
Axiom. (SNoLt_irref) We take the following as an axiom:
∀x, ¬ SNoLt x x
Axiom. (SNoLt_trichotomy_or) We take the following as an axiom:
∀x y, SNo xSNo yx < y x = y y < x
Axiom. (SNoLt_trichotomy_or_impred) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (x < yp)(x = yp)(y < xp)p
Axiom. (SNoLt_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < yy < zx < z
Axiom. (SNoLe_ref) We take the following as an axiom:
∀x, SNoLe x x
Axiom. (SNoLe_antisym) We take the following as an axiom:
∀x y, SNo xSNo yx yy xx = y
Axiom. (SNoLtLe_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < yy zx < z
Axiom. (SNoLeLt_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx yy < zx < z
Axiom. (SNoLe_tra) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx yy zx z
Axiom. (SNoLtLe_or) We take the following as an axiom:
∀x y, SNo xSNo yx < y y x
Axiom. (SNoLt_PSNo_PNoLt) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPSNo alpha p < PSNo beta qPNoLt alpha p beta q
Axiom. (PNoLt_SNoLt_PSNo) We take the following as an axiom:
∀alpha beta, ∀p q : setprop, ordinal alphaordinal betaPNoLt alpha p beta qPSNo alpha p < PSNo beta q
Definition. We define SNoCut to be λL R ⇒ PSNo (PNo_bd (λalpha p ⇒ ordinal alpha PSNo alpha p L) (λalpha p ⇒ ordinal alpha PSNo alpha p R)) (PNo_pred (λalpha p ⇒ ordinal alpha PSNo alpha p L) (λalpha p ⇒ ordinal alpha PSNo alpha p R)) of type setsetset.
Definition. We define SNoCutP to be λL R ⇒ (∀xL, SNo x) (∀yR, SNo y) (∀xL, ∀yR, x < y) of type setsetprop.
Axiom. (SNoCutP_SNoCut) We take the following as an axiom:
∀L R, SNoCutP L RSNo (SNoCut L R) SNoLev (SNoCut L R) ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y))) (∀xL, x < SNoCut L R) (∀yR, SNoCut L R < y) (∀z, SNo z(∀xL, x < z)(∀yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z)
Axiom. (SNoCutP_SNoCut_impred) We take the following as an axiom:
∀L R, SNoCutP L R∀p : prop, (SNo (SNoCut L R)SNoLev (SNoCut L R) ordsucc ((xLordsucc (SNoLev x)) (yRordsucc (SNoLev y)))(∀xL, x < SNoCut L R)(∀yR, SNoCut L R < y)(∀z, SNo z(∀xL, x < z)(∀yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z)p)p
Axiom. (SNoCutP_L_0) We take the following as an axiom:
∀L, (∀xL, SNo x)SNoCutP L 0
Axiom. (SNoCutP_0_R) We take the following as an axiom:
∀R, (∀xR, SNo x)SNoCutP 0 R
Axiom. (SNoCutP_0_0) We take the following as an axiom:
SNoCutP 0 0
Axiom. (SNoCut_0_0) We take the following as an axiom:
SNoCut 0 0 = 0
Axiom. (ordinal_SNoLt_In) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha < betaalpha beta
Axiom. (ordinal_SNoLe_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha betaalpha beta
Definition. We define SNoS_ to be λalpha ⇒ {x𝒫 (SNoElts_ alpha)|∃betaalpha, SNo_ beta x} of type setset.
Axiom. (SNoS_E) We take the following as an axiom:
∀alpha, ordinal alpha∀xSNoS_ alpha, ∃betaalpha, SNo_ beta x
Beginning of Section TaggedSets2
Let tag : setsetλalpha ⇒ SetAdjoin alpha {1}
Notation. We use ' as a postfix operator with priority 100 corresponding to applying term tag.
Axiom. (SNoS_I) We take the following as an axiom:
∀alpha, ordinal alpha∀x, ∀betaalpha, SNo_ beta xx SNoS_ alpha
Axiom. (SNoS_I2) We take the following as an axiom:
∀x y, SNo xSNo ySNoLev x SNoLev yx SNoS_ (SNoLev y)
Axiom. (SNoS_Subq) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha betaSNoS_ alpha SNoS_ beta
Axiom. (SNoLev_uniq2) We take the following as an axiom:
∀alpha, ordinal alpha∀x, SNo_ alpha xSNoLev x = alpha
Axiom. (SNoS_E2) We take the following as an axiom:
∀alpha, ordinal alpha∀xSNoS_ alpha, ∀p : prop, (SNoLev x alphaordinal (SNoLev x)SNo xSNo_ (SNoLev x) xp)p
Axiom. (SNoS_In_neq) We take the following as an axiom:
∀w, SNo w∀xSNoS_ (SNoLev w), x w
Axiom. (SNoS_SNoLev) We take the following as an axiom:
∀z, SNo zz SNoS_ (ordsucc (SNoLev z))
Definition. We define SNoL to be λz ⇒ {xSNoS_ (SNoLev z)|x < z} of type setset.
Definition. We define SNoR to be λz ⇒ {ySNoS_ (SNoLev z)|z < y} of type setset.
Axiom. (SNoCutP_SNoL_SNoR) We take the following as an axiom:
∀z, SNo zSNoCutP (SNoL z) (SNoR z)
Axiom. (SNoL_E) We take the following as an axiom:
∀x, SNo x∀wSNoL x, ∀p : prop, (SNo wSNoLev w SNoLev xw < xp)p
Axiom. (SNoR_E) We take the following as an axiom:
∀x, SNo x∀zSNoR x, ∀p : prop, (SNo zSNoLev z SNoLev xx < zp)p
Axiom. (SNoL_SNoS) We take the following as an axiom:
∀x, SNo x∀wSNoL x, w SNoS_ (SNoLev x)
Axiom. (SNoR_SNoS) We take the following as an axiom:
∀x, SNo x∀zSNoR x, z SNoS_ (SNoLev x)
Axiom. (SNoL_SNoS_) We take the following as an axiom:
∀z, SNoL z SNoS_ (SNoLev z)
Axiom. (SNoR_SNoS_) We take the following as an axiom:
∀z, SNoR z SNoS_ (SNoLev z)
Axiom. (SNoL_I) We take the following as an axiom:
∀z, SNo z∀x, SNo xSNoLev x SNoLev zx < zx SNoL z
Axiom. (SNoR_I) We take the following as an axiom:
∀z, SNo z∀y, SNo ySNoLev y SNoLev zz < yy SNoR z
Axiom. (SNo_eta) We take the following as an axiom:
∀z, SNo zz = SNoCut (SNoL z) (SNoR z)
Axiom. (SNoCutP_SNo_SNoCut) We take the following as an axiom:
∀L R, SNoCutP L RSNo (SNoCut L R)
Axiom. (SNoCutP_SNoCut_L) We take the following as an axiom:
∀L R, SNoCutP L R∀xL, x < SNoCut L R
Axiom. (SNoCutP_SNoCut_R) We take the following as an axiom:
∀L R, SNoCutP L R∀yR, SNoCut L R < y
Axiom. (SNoCutP_SNoCut_fst) We take the following as an axiom:
∀L R, SNoCutP L R∀z, SNo z(∀xL, x < z)(∀yR, z < y)SNoLev (SNoCut L R) SNoLev z SNoEq_ (SNoLev (SNoCut L R)) (SNoCut L R) z
Axiom. (SNoCut_Le) We take the following as an axiom:
∀L1 R1 L2 R2, SNoCutP L1 R1SNoCutP L2 R2(∀wL1, w < SNoCut L2 R2)(∀zR2, SNoCut L1 R1 < z)SNoCut L1 R1 SNoCut L2 R2
Axiom. (SNoCut_ext) We take the following as an axiom:
∀L1 R1 L2 R2, SNoCutP L1 R1SNoCutP L2 R2(∀wL1, w < SNoCut L2 R2)(∀zR1, SNoCut L2 R2 < z)(∀wL2, w < SNoCut L1 R1)(∀zR2, SNoCut L1 R1 < z)SNoCut L1 R1 = SNoCut L2 R2
Axiom. (SNoLt_SNoL_or_SNoR_impred) We take the following as an axiom:
∀x y, SNo xSNo yx < y∀p : prop, (∀zSNoL y, z SNoR xp)(x SNoL yp)(y SNoR xp)p
Axiom. (SNoL_or_SNoR_impred) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (x = yp)(∀zSNoL y, z SNoR xp)(x SNoL yp)(y SNoR xp)(∀zSNoR y, z SNoL xp)(x SNoR yp)(y SNoL xp)p
Axiom. (ordinal_SNo_) We take the following as an axiom:
∀alpha, ordinal alphaSNo_ alpha alpha
Axiom. (ordinal_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. (ordinal_SNoCutP) We take the following as an axiom:
∀alpha, ordinal alphaSNoCutP (SNoS_ alpha) Empty
Axiom. (ordinal_SNoCut_eta) We take the following as an axiom:
∀alpha, ordinal alphaalpha = SNoCut (SNoS_ alpha) Empty
Axiom. (SNo_0) We take the following as an axiom:
Axiom. (SNoLev_0) We take the following as an axiom:
Axiom. (SNoL_0) We take the following as an axiom:
Axiom. (SNoR_0) We take the following as an axiom:
Axiom. (SNoL_1) We take the following as an axiom:
Axiom. (SNoR_1) We take the following as an axiom:
Axiom. (SNo_max_SNoLev) We take the following as an axiom:
∀x, SNo x(∀ySNoS_ (SNoLev x), y < x)SNoLev x = x
Axiom. (SNo_max_ordinal) We take the following as an axiom:
∀x, SNo x(∀ySNoS_ (SNoLev x), y < x)ordinal x
Definition. We define SNo_extend0 to be λx ⇒ PSNo (ordsucc (SNoLev x)) (λdelta ⇒ delta x delta SNoLev x) of type setset.
Definition. We define SNo_extend1 to be λx ⇒ PSNo (ordsucc (SNoLev x)) (λdelta ⇒ delta x delta = SNoLev x) of type setset.
Axiom. (SNo_extend0_SNo_) We take the following as an axiom:
∀x, SNo xSNo_ (ordsucc (SNoLev x)) (SNo_extend0 x)
Axiom. (SNo_extend1_SNo_) We take the following as an axiom:
∀x, SNo xSNo_ (ordsucc (SNoLev x)) (SNo_extend1 x)
Axiom. (SNo_extend0_SNo) We take the following as an axiom:
∀x, SNo xSNo (SNo_extend0 x)
Axiom. (SNo_extend1_SNo) We take the following as an axiom:
∀x, SNo xSNo (SNo_extend1 x)
Axiom. (SNo_extend0_SNoLev) We take the following as an axiom:
∀x, SNo xSNoLev (SNo_extend0 x) = ordsucc (SNoLev x)
Axiom. (SNo_extend1_SNoLev) We take the following as an axiom:
∀x, SNo xSNoLev (SNo_extend1 x) = ordsucc (SNoLev x)
Axiom. (SNo_extend0_nIn) We take the following as an axiom:
∀x, SNo xSNoLev x SNo_extend0 x
Axiom. (SNo_extend1_In) We take the following as an axiom:
∀x, SNo xSNoLev x SNo_extend1 x
Axiom. (SNo_extend0_SNoEq) We take the following as an axiom:
∀x, SNo xSNoEq_ (SNoLev x) (SNo_extend0 x) x
Axiom. (SNo_extend1_SNoEq) We take the following as an axiom:
∀x, SNo xSNoEq_ (SNoLev x) (SNo_extend1 x) x
Axiom. (SNo_extend0_Lt) We take the following as an axiom:
∀x, SNo xSNo_extend0 x < x
Axiom. (SNo_extend1_Gt) We take the following as an axiom:
∀x, SNo xx < SNo_extend1 x
Definition. We define eps_ to be λn ⇒ {0} {(ordsucc m) '|mn} of type setset.
Axiom. (eps_ordinal_In_eq_0) We take the following as an axiom:
∀n alpha, ordinal alphaalpha eps_ nalpha = 0
Axiom. (eps_0_1) We take the following as an axiom:
Axiom. (SNo__eps_) We take the following as an axiom:
Axiom. (SNo_eps_) We take the following as an axiom:
Axiom. (SNoLev_eps_) We take the following as an axiom:
Axiom. (SNo_eps_SNoS_omega) We take the following as an axiom:
Axiom. (SNo_eps_decr) We take the following as an axiom:
∀nomega, ∀mn, eps_ n < eps_ m
Axiom. (SNo_eps_pos) We take the following as an axiom:
Axiom. (SNo_pos_eps_Lt) We take the following as an axiom:
∀n, nat_p n∀xSNoS_ n, 0 < xeps_ n < x
End of Section TaggedSets2
Axiom. (ordinal_SNo) We take the following as an axiom:
∀alpha, ordinal alphaSNo alpha
Axiom. (ordinal_SNoLev) We take the following as an axiom:
∀alpha, ordinal alphaSNoLev alpha = alpha
Axiom. (ordinal_SNoLev_max) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo zSNoLev z alphaz < alpha
Axiom. (ordinal_In_SNoLt) We take the following as an axiom:
∀alpha, ordinal alpha∀betaalpha, beta < alpha
Axiom. (ordinal_SNoLev_max_2) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo zSNoLev z ordsucc alphaz alpha
Axiom. (ordinal_Subq_SNoLe) We take the following as an axiom:
∀alpha beta, ordinal alphaordinal betaalpha betaalpha beta
Axiom. (SNo_etaE) We take the following as an axiom:
∀z, SNo z∀p : prop, (∀L R, SNoCutP L R(∀xL, SNoLev x SNoLev z)(∀yR, SNoLev y SNoLev z)z = SNoCut L Rp)p
Axiom. (SNo_ind) We take the following as an axiom:
∀P : setprop, (∀L R, SNoCutP L R(∀xL, P x)(∀yR, P y)P (SNoCut L R))∀z, SNo zP z
Beginning of Section SurrealRecI
Variable F : set(setset)set
Primitive. The name SNo_rec_i is a term of type setset.
Hypothesis Fr : ∀z, SNo z∀g h : setset, (∀wSNoS_ (SNoLev z), g w = h w)F z g = F z h
Axiom. (SNo_rec_i_eq) We take the following as an axiom:
∀z, SNo zSNo_rec_i z = F z SNo_rec_i
End of Section SurrealRecI
Beginning of Section SurrealRecII
Variable F : set(set(setset))(setset)
Primitive. The name SNo_rec_ii is a term of type set(setset).
Hypothesis Fr : ∀z, SNo z∀g h : set(setset), (∀wSNoS_ (SNoLev z), g w = h w)F z g = F z h
Axiom. (SNo_rec_ii_eq) We take the following as an axiom:
∀z, SNo zSNo_rec_ii z = F z SNo_rec_ii
End of Section SurrealRecII
Beginning of Section SurrealRec2
Variable F : setset(setsetset)set
Primitive. The name SNo_rec2 is a term of type setsetset.
Hypothesis Fr : ∀w, SNo w∀z, SNo z∀g h : setsetset, (∀xSNoS_ (SNoLev w), ∀y, SNo yg x y = h x y)(∀ySNoS_ (SNoLev z), g w y = h w y)F w z g = F w z h
Axiom. (SNo_rec2_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∀xSNoS_ 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∀xSNoS_ alpha, ∀ySNoS_ beta, P x y)(∀x y, SNo xSNo yP x y)
Axiom. (SNo_ordinal_ind3) We take the following as an axiom:
∀P : setsetsetprop, (∀alpha, ordinal alpha∀beta, ordinal beta∀gamma, ordinal gamma∀xSNoS_ alpha, ∀ySNoS_ beta, ∀zSNoS_ gamma, P x y z)(∀x y z, SNo xSNo ySNo zP x y z)
Axiom. (SNoLev_ind) We take the following as an axiom:
∀P : setprop, (∀x, SNo x(∀wSNoS_ (SNoLev x), P w)P x)(∀x, SNo xP x)
Axiom. (SNoLev_ind2) We take the following as an axiom:
∀P : setsetprop, (∀x y, SNo xSNo y(∀wSNoS_ (SNoLev x), P w y)(∀zSNoS_ (SNoLev y), P x z)(∀wSNoS_ (SNoLev x), ∀zSNoS_ (SNoLev y), P w z)P x y)∀x y, SNo xSNo yP x y
Axiom. (SNoLev_ind3) We take the following as an axiom:
∀P : setsetsetprop, (∀x y z, SNo xSNo ySNo z(∀uSNoS_ (SNoLev x), P u y z)(∀vSNoS_ (SNoLev y), P x v z)(∀wSNoS_ (SNoLev z), P x y w)(∀uSNoS_ (SNoLev x), ∀vSNoS_ (SNoLev y), P u v z)(∀uSNoS_ (SNoLev x), ∀wSNoS_ (SNoLev z), P u y w)(∀vSNoS_ (SNoLev y), ∀wSNoS_ (SNoLev z), P x v w)(∀uSNoS_ (SNoLev x), ∀vSNoS_ (SNoLev y), ∀wSNoS_ (SNoLev z), P u v w)P x y z)∀x y z, SNo xSNo ySNo zP x y z
Axiom. (SNo_1) We take the following as an axiom:
SNo 1
Axiom. (SNo_2) We take the following as an axiom:
SNo 2
Axiom. (SNo_omega) We take the following as an axiom:
SNo omega
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. (SNoLev_0_eq_0) We take the following as an axiom:
∀x, SNo xSNoLev x = 0x = 0
Axiom. (restr_SNo_) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, SNo_ alpha (x SNoElts_ alpha)
Axiom. (restr_SNo) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, SNo (x SNoElts_ alpha)
Axiom. (restr_SNoLev) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, SNoLev (x SNoElts_ alpha) = alpha
Axiom. (restr_SNoEq) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, SNoEq_ alpha (x SNoElts_ alpha) x
Axiom. (restr_SNo_SNoCut) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, ∀p : prop, (SNoCutP {wSNoL x|SNoLev w alpha} {zSNoR x|SNoLev z alpha}x SNoElts_ alpha = SNoCut {wSNoL x|SNoLev w alpha} {zSNoR x|SNoLev z alpha}p)p
Primitive. The name pack_e is a term of type setsetset.
Axiom. (pack_e_0_eq) We take the following as an axiom:
∀S X, ∀c : set, S = pack_e X cX = S 0
Axiom. (pack_e_0_eq2) We take the following as an axiom:
∀X, ∀c : set, X = pack_e X c 0
Axiom. (pack_e_1_eq) We take the following as an axiom:
∀S X, ∀c : set, S = pack_e X cc = S 1
Axiom. (pack_e_1_eq2) We take the following as an axiom:
∀X, ∀c : set, c = pack_e X c 1
Axiom. (pack_e_inj) We take the following as an axiom:
∀X X', ∀c c', pack_e X c = pack_e X' c'X = X' c = c'
Definition. We define struct_e to be λS ⇒ ∀q : setprop, (∀X : set, ∀c : set, c Xq (pack_e X c))q S of type setprop.
Axiom. (pack_struct_e_I) We take the following as an axiom:
∀X, ∀c : set, c Xstruct_e (pack_e X c)
Axiom. (pack_struct_e_E1) We take the following as an axiom:
∀X, ∀c : set, struct_e (pack_e X c)c X
Axiom. (struct_e_eta) We take the following as an axiom:
∀S, struct_e SS = pack_e (S 0) (S 1)
Primitive. The name unpack_e_i is a term of type set(setsetset)set.
Axiom. (unpack_e_i_eq) We take the following as an axiom:
∀Phi : setsetset, ∀X, ∀c : set, unpack_e_i (pack_e X c) Phi = Phi X c
Primitive. The name unpack_e_o is a term of type set(setsetprop)prop.
Axiom. (unpack_e_o_eq) We take the following as an axiom:
∀Phi : setsetprop, ∀X, ∀c : set, unpack_e_o (pack_e X c) Phi = Phi X c
Primitive. The name pack_u is a term of type set(setset)set.
Axiom. (pack_u_0_eq) We take the following as an axiom:
∀S X, ∀F : setset, S = pack_u X FX = S 0
Axiom. (pack_u_0_eq2) We take the following as an axiom:
∀X, ∀F : setset, X = pack_u X F 0
Axiom. (pack_u_1_eq) We take the following as an axiom:
∀S X, ∀F : setset, S = pack_u X F∀xX, F x = decode_u (S 1) x
Axiom. (pack_u_1_eq2) We take the following as an axiom:
∀X, ∀F : setset, ∀xX, F x = decode_u (pack_u X F 1) x
Axiom. (pack_u_inj) We take the following as an axiom:
∀X X', ∀F F' : setset, pack_u X F = pack_u X' F'X = X' ∀xX, F x = F' x
Axiom. (pack_u_ext) We take the following as an axiom:
∀X, ∀F F' : setset, (∀xX, F x = F' x)pack_u X F = pack_u X F'
Definition. We define struct_u to be λS ⇒ ∀q : setprop, (∀X, ∀F : setset, (∀xX, F x X)q (pack_u X F))q S of type setprop.
Axiom. (pack_struct_u_I) We take the following as an axiom:
∀X, ∀F : setset, (∀xX, F x X)struct_u (pack_u X F)
Axiom. (pack_struct_u_E1) We take the following as an axiom:
∀X, ∀F : setset, struct_u (pack_u X F)∀xX, F x X
Axiom. (struct_u_eta) We take the following as an axiom:
∀S, struct_u SS = pack_u (S 0) (decode_u (S 1))
Primitive. The name unpack_u_i is a term of type set(set(setset)set)set.
Axiom. (unpack_u_i_eq) We take the following as an axiom:
∀Phi : set(setset)set, ∀X, ∀F : setset, (∀F' : setset, (∀xX, F x = F' x)Phi X F' = Phi X F)unpack_u_i (pack_u X F) Phi = Phi X F
Primitive. The name unpack_u_o is a term of type set(set(setset)prop)prop.
Axiom. (unpack_u_o_eq) We take the following as an axiom:
∀Phi : set(setset)prop, ∀X, ∀F : setset, (∀F' : setset, (∀xX, F x = F' x)Phi X F' = Phi X F)unpack_u_o (pack_u X F) Phi = Phi X F
Primitive. The name pack_b is a term of type set(setsetset)set.
Axiom. (pack_b_0_eq) We take the following as an axiom:
∀S X, ∀F : setsetset, S = pack_b X FX = S 0
Axiom. (pack_b_0_eq2) We take the following as an axiom:
∀X, ∀F : setsetset, X = pack_b X F 0
Axiom. (pack_b_1_eq) We take the following as an axiom:
∀S X, ∀F : setsetset, S = pack_b X F∀x yX, F x y = decode_b (S 1) x y
Axiom. (pack_b_1_eq2) We take the following as an axiom:
∀X, ∀F : setsetset, ∀x yX, F x y = decode_b (pack_b X F 1) x y
Axiom. (pack_b_inj) We take the following as an axiom:
∀X X', ∀F F' : setsetset, pack_b X F = pack_b X' F'X = X' ∀x yX, F x y = F' x y
Axiom. (pack_b_ext) We take the following as an axiom:
∀X, ∀F F' : setsetset, (∀x yX, F x y = F' x y)pack_b X F = pack_b X F'
Definition. We define struct_b to be λS ⇒ ∀q : setprop, (∀X : set, ∀F : setsetset, (∀x yX, F x y X)q (pack_b X F))q S of type setprop.
Axiom. (pack_struct_b_I) We take the following as an axiom:
∀X, ∀F : setsetset, (∀x yX, F x y X)struct_b (pack_b X F)
Axiom. (pack_struct_b_E1) We take the following as an axiom:
∀X, ∀F : setsetset, struct_b (pack_b X F)∀x yX, F x y X
Axiom. (struct_b_eta) We take the following as an axiom:
∀S, struct_b SS = pack_b (S 0) (decode_b (S 1))
Primitive. The name unpack_b_i is a term of type set(set(setsetset)set)set.
Axiom. (unpack_b_i_eq) We take the following as an axiom:
∀Phi : set(setsetset)set, ∀X, ∀F : setsetset, (∀F' : setsetset, (∀x yX, F x y = F' x y)Phi X F' = Phi X F)unpack_b_i (pack_b X F) Phi = Phi X F
Primitive. The name unpack_b_o is a term of type set(set(setsetset)prop)prop.
Axiom. (unpack_b_o_eq) We take the following as an axiom:
∀Phi : set(setsetset)prop, ∀X, ∀F : setsetset, (∀F' : setsetset, (∀x yX, F x y = F' x y)Phi X F' = Phi X F)unpack_b_o (pack_b X F) Phi = Phi X F
Primitive. The name pack_p is a term of type set(setprop)set.
Axiom. (pack_p_0_eq) We take the following as an axiom:
∀S X, ∀P : setprop, S = pack_p X PX = S 0
Axiom. (pack_p_0_eq2) We take the following as an axiom:
∀X, ∀P : setprop, X = pack_p X P 0
Axiom. (pack_p_1_eq) We take the following as an axiom:
∀S X, ∀P : setprop, S = pack_p X P∀xX, P x = decode_p (S 1) x
Axiom. (pack_p_1_eq2) We take the following as an axiom:
∀X, ∀P : setprop, ∀xX, P x = decode_p (pack_p X P 1) x
Axiom. (pack_p_inj) We take the following as an axiom:
∀X X', ∀P P' : setprop, pack_p X P = pack_p X' P'X = X' ∀xX, P x = P' x
Axiom. (pack_p_ext) We take the following as an axiom:
∀X, ∀P P' : setprop, (∀xX, P x P' x)pack_p X P = pack_p X P'
Definition. We define struct_p to be λS ⇒ ∀q : setprop, (∀X : set, ∀P : setprop, q (pack_p X P))q S of type setprop.
Axiom. (pack_struct_p_I) We take the following as an axiom:
∀X, ∀P : setprop, struct_p (pack_p X P)
Axiom. (struct_p_eta) We take the following as an axiom:
∀S, struct_p SS = pack_p (S 0) (decode_p (S 1))
Primitive. The name unpack_p_i is a term of type set(set(setprop)set)set.
Axiom. (unpack_p_i_eq) We take the following as an axiom:
∀Phi : set(setprop)set, ∀X, ∀P : setprop, (∀P' : setprop, (∀xX, P x P' x)Phi X P' = Phi X P)unpack_p_i (pack_p X P) Phi = Phi X P
Primitive. The name unpack_p_o is a term of type set(set(setprop)prop)prop.
Axiom. (unpack_p_o_eq) We take the following as an axiom:
∀Phi : set(setprop)prop, ∀X, ∀P : setprop, (∀P' : setprop, (∀xX, P x P' x)Phi X P' = Phi X P)unpack_p_o (pack_p X P) Phi = Phi X P
Primitive. The name pack_r is a term of type set(setsetprop)set.
Axiom. (pack_r_0_eq) We take the following as an axiom:
∀S X, ∀R : setsetprop, S = pack_r X RX = S 0
Axiom. (pack_r_0_eq2) We take the following as an axiom:
∀X, ∀R : setsetprop, X = pack_r X R 0
Axiom. (pack_r_1_eq) We take the following as an axiom:
∀S X, ∀R : setsetprop, S = pack_r X R∀x yX, R x y = decode_r (S 1) x y
Axiom. (pack_r_1_eq2) We take the following as an axiom:
∀X, ∀R : setsetprop, ∀x yX, R x y = decode_r (pack_r X R 1) x y
Axiom. (pack_r_inj) We take the following as an axiom:
∀X X', ∀R R' : setsetprop, pack_r X R = pack_r X' R'X = X' ∀x yX, R x y = R' x y
Axiom. (pack_r_ext) We take the following as an axiom:
∀X, ∀R R' : setsetprop, (∀x yX, R x y R' x y)pack_r X R = pack_r X R'
Definition. We define struct_r to be λS ⇒ ∀q : setprop, (∀X : set, ∀R : setsetprop, q (pack_r X R))q S of type setprop.
Axiom. (pack_struct_r_I) We take the following as an axiom:
∀X, ∀R : setsetprop, struct_r (pack_r X R)
Axiom. (struct_r_eta) We take the following as an axiom:
∀S, struct_r SS = pack_r (S 0) (decode_r (S 1))
Primitive. The name unpack_r_i is a term of type set(set(setsetprop)set)set.
Axiom. (unpack_r_i_eq) We take the following as an axiom:
∀Phi : set(setsetprop)set, ∀X, ∀R : setsetprop, (∀R' : setsetprop, (∀x yX, R x y R' x y)Phi X R' = Phi X R)unpack_r_i (pack_r X R) Phi = Phi X R
Primitive. The name unpack_r_o is a term of type set(set(setsetprop)prop)prop.
Axiom. (unpack_r_o_eq) We take the following as an axiom:
∀Phi : set(setsetprop)prop, ∀X, ∀R : setsetprop, (∀R' : setsetprop, (∀x yX, R x y R' x y)Phi X R' = Phi X R)unpack_r_o (pack_r X R) Phi = Phi X R
Primitive. The name pack_c is a term of type set((setprop)prop)set.
Axiom. (pack_c_0_eq) We take the following as an axiom:
∀S X, ∀C : (setprop)prop, S = pack_c X CX = S 0
Axiom. (pack_c_0_eq2) We take the following as an axiom:
∀X, ∀C : (setprop)prop, X = pack_c X C 0
Axiom. (pack_c_1_eq) We take the following as an axiom:
∀S X, ∀C : (setprop)prop, S = pack_c X C∀U : setprop, (∀x, U xx X)C U = decode_c (S 1) U
Axiom. (pack_c_1_eq2) We take the following as an axiom:
∀X, ∀C : (setprop)prop, ∀U : setprop, (∀x, U xx X)C U = decode_c (pack_c X C 1) U
Axiom. (pack_c_inj) We take the following as an axiom:
∀X X', ∀C C' : (setprop)prop, pack_c X C = pack_c X' C'X = X' ∀U : setprop, (∀x, U xx X)C U = C' U
Axiom. (pack_c_ext) We take the following as an axiom:
∀X, ∀C C' : (setprop)prop, (∀U : setprop, (∀x, U xx X)(C U C' U))pack_c X C = pack_c X C'
Definition. We define struct_c to be λS ⇒ ∀q : setprop, (∀X : set, ∀C : (setprop)prop, q (pack_c X C))q S of type setprop.
Axiom. (pack_struct_c_I) We take the following as an axiom:
∀X, ∀C : (setprop)prop, struct_c (pack_c X C)
Axiom. (struct_c_eta) We take the following as an axiom:
∀S, struct_c SS = pack_c (S 0) (decode_c (S 1))
Primitive. The name unpack_c_i is a term of type set(set((setprop)prop)set)set.
Axiom. (unpack_c_i_eq) We take the following as an axiom:
∀Phi : set((setprop)prop)set, ∀X, ∀C : (setprop)prop, (∀C' : (setprop)prop, (∀U : setprop, (∀x, U xx X)(C U C' U))Phi X C' = Phi X C)unpack_c_i (pack_c X C) Phi = Phi X C
Primitive. The name unpack_c_o is a term of type set(set((setprop)prop)prop)prop.
Axiom. (unpack_c_o_eq) We take the following as an axiom:
∀Phi : set((setprop)prop)prop, ∀X, ∀C : (setprop)prop, (∀C' : (setprop)prop, (∀U : setprop, (∀x, U xx X)(C U C' U))Phi X C' = Phi X C)unpack_c_o (pack_c X C) Phi = Phi X C
Primitive. The name canonical_elt is a term of type (setsetprop)setset.
Axiom. (canonical_elt_rel) We take the following as an axiom:
∀R : setsetprop, ∀x : set, R x xR x (canonical_elt R x)
Axiom. (canonical_elt_eq) We take the following as an axiom:
∀R : setsetprop, per R∀x y : set, R x ycanonical_elt R x = canonical_elt R y
Axiom. (canonical_elt_idem) We take the following as an axiom:
∀R : setsetprop, per R∀x : set, R x xcanonical_elt R x = canonical_elt R (canonical_elt R x)
Primitive. The name quotient is a term of type (setsetprop)setprop.
Axiom. (quotient_prop1) We take the following as an axiom:
∀R : setsetprop, ∀x : set, quotient R xR x x
Axiom. (quotient_prop2) We take the following as an axiom:
∀R : setsetprop, per R∀x y : set, quotient R xquotient R yR x yx = y
Primitive. The name canonical_elt_def is a term of type (setsetprop)(setset)setset.
Axiom. (canonical_elt_def_rel) We take the following as an axiom:
∀R : setsetprop, ∀d : setset, ∀x : set, R x xR x (canonical_elt_def R d x)
Axiom. (canonical_elt_def_eq) We take the following as an axiom:
∀R : setsetprop, per R∀d : setset, (∀x y : set, R x yd x = d y)∀x y : set, R x ycanonical_elt_def R d x = canonical_elt_def R d y
Axiom. (canonical_elt_def_idem) We take the following as an axiom:
∀R : setsetprop, per R∀d : setset, (∀x y : set, R x yd x = d y)∀x : set, R x xcanonical_elt_def R d x = canonical_elt_def R d (canonical_elt_def R d x)
Primitive. The name quotient_def is a term of type (setsetprop)(setset)setprop.
Axiom. (quotient_def_prop0) We take the following as an axiom:
∀R : setsetprop, per R∀d : setset, ∀x : set, R x (d x)x = d xquotient_def R d x
Axiom. (quotient_def_prop1) We take the following as an axiom:
∀R : setsetprop, ∀d : setset, ∀x : set, quotient_def R d xR x x
Axiom. (quotient_def_prop2) We take the following as an axiom:
∀R : setsetprop, per R∀d : setset, (∀x y : set, R x yd x = d y)∀x y : set, quotient_def R d xquotient_def R d yR x yx = y
Beginning of Section explicit_Nats
Variable N : set
Variable base : set
Variable S : setset
Primitive. The name explicit_Nats is a term of type prop.
Axiom. (explicit_Nats_I) We take the following as an axiom:
(base N)(∀mN, S m N)(∀mN, S m base)(∀m nN, S m = S nm = n)(∀p : setprop, p base(∀m, p mp (S m))(∀mN, p m))explicit_Nats
Axiom. (explicit_Nats_E) We take the following as an axiom:
∀q : prop, (explicit_Nats(base N)(∀mN, S m N)(∀mN, S m base)(∀m nN, S m = S nm = n)(∀p : setprop, p base(∀m, p mp (S m))(∀mN, p m))q)explicit_Natsq
Axiom. (explicit_Nats_ind) We take the following as an axiom:
explicit_Nats∀p : setprop, p base(∀mN, p mp (S m))∀mN, p m
Primitive. The name explicit_Nats_primrec is a term of type set(setsetset)setset.
Axiom. (explicit_Nats_primrec_base) We take the following as an axiom:
∀a, ∀f : setsetset, explicit_Natsexplicit_Nats_primrec a f base = a
Axiom. (explicit_Nats_primrec_S) We take the following as an axiom:
∀a, ∀f : setsetset, explicit_Nats∀nN, explicit_Nats_primrec a f (S n) = f n (explicit_Nats_primrec a f n)
Axiom. (explicit_Nats_primrec_P) We take the following as an axiom:
explicit_Nats∀P : setprop, ∀a, P a∀f : setsetset, (∀nN, ∀b, P bP (f n b))∀nN, P (explicit_Nats_primrec a f n)
End of Section explicit_Nats
Axiom. (explicit_Nats_omega) We take the following as an axiom:
explicit_Nats omega 0 ordsucc
Beginning of Section explicit_Nats_zero
Variable N : set
Variable zero : set
Variable S : setset
Primitive. The name explicit_Nats_zero_plus 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 explicit_Nats_zero_plus.
Primitive. The name explicit_Nats_zero_mult is a term of type setsetset.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term explicit_Nats_zero_mult.
Hypothesis HN : explicit_Nats N zero S
Axiom. (explicit_Nats_zero_plus_N) We take the following as an axiom:
∀n mN, n + m N
Axiom. (explicit_Nats_zero_plus_0L) We take the following as an axiom:
∀mN, zero + m = m
Axiom. (explicit_Nats_zero_plus_SL) We take the following as an axiom:
∀n mN, S n + m = S (n + m)
Axiom. (explicit_Nats_zero_mult_N) We take the following as an axiom:
∀n mN, n * m N
Axiom. (explicit_Nats_zero_mult_0L) We take the following as an axiom:
∀mN, zero * m = zero
Axiom. (explicit_Nats_zero_mult_SL) We take the following as an axiom:
∀n mN, S n * m = m + n * m
End of Section explicit_Nats_zero
Beginning of Section explicit_Nats_one
Variable N : set
Variable one : set
Variable S : setset
Primitive. The name explicit_Nats_one_plus 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 explicit_Nats_one_plus.
Primitive. The name explicit_Nats_one_mult is a term of type setsetset.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term explicit_Nats_one_mult.
Primitive. The name explicit_Nats_one_exp is a term of type setsetset.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term explicit_Nats_one_exp.
Hypothesis HN : explicit_Nats N one S
Axiom. (explicit_Nats_one_plus_N) We take the following as an axiom:
∀n mN, n + m N
Axiom. (explicit_Nats_one_plus_1L) We take the following as an axiom:
∀mN, one + m = S m
Axiom. (explicit_Nats_one_plus_SL) We take the following as an axiom:
∀n mN, S n + m = S (n + m)
Axiom. (explicit_Nats_one_mult_N) We take the following as an axiom:
∀n mN, n * m N
Axiom. (explicit_Nats_one_mult_1L) We take the following as an axiom:
∀mN, one * m = m
Axiom. (explicit_Nats_one_mult_SL) We take the following as an axiom:
∀n mN, S n * m = m + n * m
Axiom. (explicit_Nats_one_exp_N) We take the following as an axiom:
∀n mN, n ^ m N
Axiom. (explicit_Nats_one_exp_1L) We take the following as an axiom:
∀nN, n ^ one = n
Axiom. (explicit_Nats_one_exp_SL) We take the following as an axiom:
∀n mN, n ^ (S m) = n * n ^ m
Definition. We define explicit_Nats_one_lt to be λm n ⇒ m N n N ∃kN, m + k = n of type setsetprop.
Definition. We define explicit_Nats_one_le to be λm n ⇒ m N n N (m = n ∃kN, m + k = n) of type setsetprop.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term explicit_Nats_one_lt.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term explicit_Nats_one_le.
End of Section explicit_Nats_one
Beginning of Section explicit_Nats_transfer
Variable N : set
Variable base : set
Variable S : setset
Variable N' : set
Variable base' : set
Variable S' : setset
Variable f : setset
Axiom. (explicit_Nats_transfer) We take the following as an axiom:
explicit_Nats N base Sbij N N' ff base = base'(∀nN, f (S n) = S' (f n))explicit_Nats N' base' S'
End of Section explicit_Nats_transfer
Beginning of Section AssocComm
Variable R : set
Variable plus : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Axiom. (AssocComm_identities) We take the following as an axiom:
(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)∀p : prop, ((∀x y zR, x + y + z = y + x + z)(∀x y zR, x + y + z = z + x + y)(∀x y z wR, (x + y) + (z + w) = (x + z) + (y + w))(∀x y z wR, x + y + z + w = w + x + y + z)(∀x y z wR, x + y + z + w = z + w + x + y)p)p
End of Section AssocComm
Beginning of Section Group1
Variable G : set
Beginning of Section Group1Explicit
Variable op : setsetset
Definition. We define explicit_Group to be (∀a bG, a * b G) (∀a b cG, a * (b * c) = (a * b) * c) ∃eG, (∀aG, e * a = a a * e = a) (∀aG, ∃bG, a * b = e b * a = e) of type prop.
Axiom. (explicit_Group_identity_unique) We take the following as an axiom:
∀e e'G, (∀aG, e * a = a)(∀aG, a * e' = a)e = e'
Hypothesis HG : explicit_Group
Definition. We define explicit_Group_identity to be Eps_i (λe ⇒ e G ((∀aG, e * a = a a * e = a) ∀aG, ∃bG, a * b = e b * a = e)) of type set.
Definition. We define explicit_Group_inverse to be λa ⇒ Eps_i (λb ⇒ b G (a * b = e b * a = e)) of type setset.
Axiom. (explicit_Group_identity_prop) We take the following as an axiom:
e G ((∀aG, e * a = a a * e = a) ∀aG, ∃bG, a * b = e b * a = e)
Axiom. (explicit_Group_identity_in) We take the following as an axiom:
e G
Axiom. (explicit_Group_identity_lid) We take the following as an axiom:
∀aG, e * a = a
Axiom. (explicit_Group_identity_rid) We take the following as an axiom:
∀aG, a * e = a
Axiom. (explicit_Group_identity_invex) We take the following as an axiom:
∀aG, ∃bG, a * b = e b * a = e
Axiom. (explicit_Group_inverse_prop) We take the following as an axiom:
∀aG, a - G (a * a - = e a - * a = e)
Axiom. (explicit_Group_inverse_in) We take the following as an axiom:
∀aG, a - G
Axiom. (explicit_Group_inverse_rinv) We take the following as an axiom:
∀aG, a * a - = e
Axiom. (explicit_Group_inverse_linv) We take the following as an axiom:
∀aG, a - * a = e
Axiom. (explicit_Group_lcancel) We take the following as an axiom:
∀a b cG, a * b = a * cb = c
Axiom. (explicit_Group_rcancel) We take the following as an axiom:
∀a b cG, a * c = b * ca = b
Axiom. (explicit_Group_rinv_rev) We take the following as an axiom:
∀a bG, a * b = eb = a -
Axiom. (explicit_Group_inv_com) We take the following as an axiom:
∀a bG, a * b = eb * a = e
Axiom. (explicit_Group_inv_rev2) We take the following as an axiom:
∀a bG, (a * b) * (a * b) = e(b * a) * (b * a) = e
Definition. We define explicit_abelian to be ∀a bG, a * b = b * a of type prop.
End of Section Group1Explicit
Beginning of Section Group1Explicit2
Variable op : setsetset
Beginning of Section Group1Explicit2RepIndep
Variable op' : setsetset
Axiom. (explicit_Group_repindep_imp) We take the following as an axiom:
Axiom. (explicit_Group_identity_repindep) We take the following as an axiom:
explicit_Group ope = e'
Let inv ≝ explicit_Group_inverse op
Let inv' ≝ explicit_Group_inverse op'
Axiom. (explicit_Group_inverse_repindep) We take the following as an axiom:
explicit_Group op∀aG, inv a = inv' a
Axiom. (explicit_abelian_repindep_imp) We take the following as an axiom:
End of Section Group1Explicit2RepIndep
End of Section Group1Explicit2
Beginning of Section Group1Explicit3RepIndep
Variable op : setsetset
Variable op' : setsetset
Axiom. (explicit_Group_repindep) We take the following as an axiom:
Axiom. (explicit_abelian_repindep) We take the following as an axiom:
End of Section Group1Explicit3RepIndep
End of Section Group1
Definition. We define Group to be λG ⇒ struct_b G unpack_b_o G explicit_Group of type setprop.
Definition. We define abelian_Group to be λG ⇒ Group G unpack_b_o G explicit_abelian of type setprop.
Axiom. (Group_unpack_eq) We take the following as an axiom:
∀G, ∀op : setsetset, unpack_b_o (pack_b G op) explicit_Group = explicit_Group G op
Axiom. (GroupI) We take the following as an axiom:
∀G, ∀op : setsetset, explicit_Group G opGroup (pack_b G op)
Axiom. (GroupE) We take the following as an axiom:
∀G, ∀op : setsetset, Group (pack_b G op)explicit_Group G op
Axiom. (abelian_Group_unpack_eq) We take the following as an axiom:
∀G, ∀op : setsetset, unpack_b_o (pack_b G op) explicit_abelian = explicit_abelian G op
Axiom. (abelian_Group_E) We take the following as an axiom:
∀G, ∀op : setsetset, abelian_Group (pack_b G op)Group (pack_b G op) explicit_abelian G op
Beginning of Section Group2
Variable G : set
Variable op : setsetset
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term op.
Notation. We use - as a postfix operator with priority 340 corresponding to applying term explicit_Group_inverse G op.
Variable H : set
Definition. We define explicit_subgroup to be Group (pack_b H op) H G of type prop.
Definition. We define explicit_normal to be ∀xG, {x * a * x -|aH} H of type prop.
Hypothesis HG : Group (pack_b G op)
Let e ≝ explicit_Group_identity G op
Axiom. (explicit_subgroup_test) We take the following as an axiom:
H Ge H(∀aH, a - H)(∀a bH, a * b H)explicit_subgroup
Hypothesis HSG : explicit_subgroup
Let e' ≝ explicit_Group_identity H op
Axiom. (explicit_subgroup_identity_eq) We take the following as an axiom:
e = e'
Axiom. (explicit_subgroup_inv_eq) We take the following as an axiom:
Axiom. (explicit_abelian_normal) We take the following as an axiom:
End of Section Group2
Beginning of Section Group3
Variable H G : set
Variable op op' : setsetset
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term op.
Notation. We use - as a postfix operator with priority 340 corresponding to applying term explicit_Group_inverse G op.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term op'.
Notation. We use :-: as a postfix operator with priority 340 corresponding to applying term explicit_Group_inverse G op'.
Hypothesis HG : explicit_Group G op
Hypothesis HHG : H G
Hypothesis Hopop' : ∀a bG, a * b = a b
Axiom. (explicit_normal_repindep_imp) We take the following as an axiom:
explicit_normal G op Hexplicit_normal G op' H
End of Section Group3
Definition. We define subgroup to be λH G ⇒ struct_b G struct_b H unpack_b_o G (λG' op ⇒ unpack_b_o H (λH' _ ⇒ H = pack_b H' op Group (pack_b H' op) H' G')) of type setsetprop.
Notation. We use as an infix operator with priority 400 and no associativity corresponding to applying term subgroup.
Definition. We define subgroup_index to be λH G ⇒ unpack_b_i G (λG' op ⇒ {nomega|∃fG'ordsucc n, ∀i jordsucc n, i j∀a bH 0, op (f i) a op (f j) b}) of type setsetset.
Definition. We define normal_subgroup to be λH G ⇒ H G unpack_b_o G (λG' op ⇒ unpack_b_o H (λH' _ ⇒ explicit_normal G' op H')) of type setsetprop.
Axiom. (pack_b_subgroup_E) We take the following as an axiom:
∀H G : set, ∀opH op : setsetset, pack_b H opH pack_b G oppack_b H opH = pack_b H op explicit_subgroup G op H
Axiom. (subgroup_E) We take the following as an axiom:
∀H G, H G∀q : setsetprop, (∀H G, ∀op : setsetset, (∀a bG, op a b G)Group (pack_b H op)H Gq (pack_b H op) (pack_b G op))q H G
Axiom. (abelian_group_normal_subgroup) We take the following as an axiom:
∀G, abelian_Group G∀H, H Gnormal_subgroup H G
Axiom. (subgroup_transitive) We take the following as an axiom:
∀K H G, K HH GK G
Beginning of Section Group4
Variable A : set
Let G ≝ {fAA|bij A A (λx ⇒ f x)}
Let op ≝ λf g : setλx ∈ Ag (f x)
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term op.
Let id ≝ λx ∈ Ax
Axiom. (explicit_Group_symgroup) We take the following as an axiom:
Axiom. (explicit_Group_symgroup_id_eq) We take the following as an axiom:
Axiom. (explicit_Group_symgroup_inv_eq) We take the following as an axiom:
∀fG, explicit_Group_inverse G op f = (λx ∈ Ainv A (λx ⇒ f x) x)
Variable B : set
Let H ≝ {fAA|bij A A (λx ⇒ f x) ∀xB, f x = x}
Axiom. (explicit_subgroup_symgroup_fixing) We take the following as an axiom:
B Aexplicit_subgroup G op H
End of Section Group4
Definition. We define symgroup to be λA ⇒ pack_b {fAA|bij A A (λx ⇒ f x)} (λf g ⇒ λx ∈ Ag (f x)) of type setset.
Definition. We define symgroup_fixing to be λA B ⇒ pack_b {fAA|bij A A (λx ⇒ f x) ∀xB, f x = x} (λf g ⇒ λx ∈ Ag (f x)) of type setsetset.
Axiom. (Group_symgroup) We take the following as an axiom:
∀A, Group (symgroup A)
Axiom. (Group_symgroup_fixing) We take the following as an axiom:
∀A B, B AGroup (symgroup_fixing A B)
Axiom. (subgroup_symgroup_fixing) We take the following as an axiom:
∀A B, B Asymgroup_fixing A B symgroup A
Axiom. (subgroup_symgroup_fixing2) We take the following as an axiom:
∀A B C, C BB Asymgroup_fixing A B symgroup_fixing A C
Axiom. (nonnormal_subgroup) We take the following as an axiom:
∃H G, Group G H G ¬ normal_subgroup H G
Definition. We define normal_subgroup_equiv to be λG N a b ⇒ unpack_b_o G (λG op ⇒ a G b G op a (explicit_Group_inverse G op b) N 0) of type setsetsetsetprop.
Definition. We define quotient_Group to be λG N ⇒ unpack_b_i G (λG' op ⇒ pack_b {aG'|quotient (normal_subgroup_equiv G N) a} (λa b ⇒ canonical_elt (normal_subgroup_equiv G N) (op a b))) of type setsetset.
Definition. We define trivial_Group_p to be λG ⇒ Group G ∀x yG 0, x = y of type setprop.
Definition. We define solvable_Group_p to be λG ⇒ ∃nomega, ∃Gseq, (∀iordsucc n, Group (Gseq i)) (∀in, normal_subgroup (Gseq (ordsucc i)) (Gseq i)) (∀in, abelian_Group (quotient_Group (Gseq i) (Gseq (ordsucc i)))) G = Gseq 0 trivial_Group_p (Gseq n) of type setprop.
Definition. We define Group_carrier to be λGs ⇒ Gs 0 of type setset.
Definition. We define Group_op to be λGs ⇒ decode_b (Gs 1) of type setsetsetset.
Beginning of Section Group2
Variable Gs : set
Variable Gs' : set
Let G : setGroup_carrier Gs
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term Group_op Gs.
Let G' : setGroup_carrier Gs'
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term Group_op Gs'.
Definition. We define Group_Hom to be λg ⇒ Group Gs Group Gs' g G'G ∀a bG, g (a * b) = g a g b of type setprop.
Definition. We define Group_Iso to be λg ⇒ Group_Hom g bij G G' (λx ⇒ g x) of type setprop.
Definition. We define Group_Isomorphic to be ∃g, Group_Iso g of type prop.
End of Section Group2
Beginning of Section explicit_Rng
Variable R : set
Variable zero : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Primitive. The name explicit_Rng is a term of type prop.
Axiom. (explicit_Rng_I) We take the following as an axiom:
(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)zero R(∀xR, zero + x = x)(∀xR, ∃yR, x + y = zero)(∀x yR, x * y R)(∀x y zR, x * (y * z) = (x * y) * z)(∀x y zR, x * (y + z) = x * y + x * z)(∀x y zR, (x + y) * z = x * z + y * z)explicit_Rng
Axiom. (explicit_Rng_E) We take the following as an axiom:
∀q : prop, (explicit_Rng(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)(zero R)(∀xR, zero + x = x)(∀xR, ∃yR, x + y = zero)(∀x yR, x * y R)(∀x y zR, x * (y * z) = (x * y) * z)(∀x y zR, x * (y + z) = x * y + x * z)(∀x y zR, (x + y) * z = x * z + y * z)q)explicit_Rngq
Primitive. The name explicit_Rng_minus is a term of type setset.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term explicit_Rng_minus.
Axiom. (explicit_Rng_minus_prop) We take the following as an axiom:
explicit_Rng∀xR, - x R x + - x = zero
Axiom. (explicit_Rng_minus_clos) We take the following as an axiom:
explicit_Rng∀xR, - x R
Axiom. (explicit_Rng_minus_R) We take the following as an axiom:
explicit_Rng∀xR, x + - x = zero
Axiom. (explicit_Rng_minus_L) We take the following as an axiom:
explicit_Rng∀xR, - x + x = zero
Axiom. (explicit_Rng_plus_cancelL) We take the following as an axiom:
explicit_Rng∀x y zR, x + y = x + zy = z
Axiom. (explicit_Rng_plus_cancelR) We take the following as an axiom:
explicit_Rng∀x y zR, x + z = y + zx = y
Axiom. (explicit_Rng_minus_invol) We take the following as an axiom:
explicit_Rng∀xR, - - x = x
End of Section explicit_Rng
Beginning of Section explicit_Ring
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Primitive. The name explicit_Ring is a term of type prop.
Axiom. (explicit_Ring_I) We take the following as an axiom:
(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)zero R(∀xR, zero + x = x)(∀xR, ∃yR, x + y = zero)(∀x yR, x * y R)(∀x y zR, x * (y * z) = (x * y) * z)(one R)(one zero)(∀xR, one * x = x)(∀xR, x * one = x)(∀x y zR, x * (y + z) = x * y + x * z)(∀x y zR, (x + y) * z = x * z + y * z)explicit_Ring
Axiom. (explicit_Ring_E) We take the following as an axiom:
∀q : prop, (explicit_Ring(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)(zero R)(∀xR, zero + x = x)(∀xR, ∃yR, x + y = zero)(∀x yR, x * y R)(∀x y zR, x * (y * z) = (x * y) * z)(one R)(one zero)(∀xR, one * x = x)(∀xR, x * one = x)(∀x y zR, x * (y + z) = x * y + x * z)(∀x y zR, (x + y) * z = x * z + y * z)q)explicit_Ringq
Axiom. (explicit_Ring_Rng) We take the following as an axiom:
explicit_Ringexplicit_Rng R zero plus mult
Notation. We use - as a prefix operator with priority 358 corresponding to applying term explicit_Rng_minus R zero plus mult.
Axiom. (explicit_Ring_minus_clos) We take the following as an axiom:
explicit_Ring∀xR, - x R
Axiom. (explicit_Ring_minus_R) We take the following as an axiom:
explicit_Ring∀xR, x + - x = zero
Axiom. (explicit_Ring_minus_L) We take the following as an axiom:
explicit_Ring∀xR, - x + x = zero
Axiom. (explicit_Ring_plus_cancelL) We take the following as an axiom:
explicit_Ring∀x y zR, x + y = x + zy = z
Axiom. (explicit_Ring_plus_cancelR) We take the following as an axiom:
explicit_Ring∀x y zR, x + z = y + zx = y
Axiom. (explicit_Ring_minus_invol) We take the following as an axiom:
explicit_Ring∀xR, - - x = x
Axiom. (explicit_Ring_minus_one_In) We take the following as an axiom:
explicit_Ring- one R
Axiom. (explicit_Ring_zero_multR) We take the following as an axiom:
explicit_Ring∀xR, x * zero = zero
Axiom. (explicit_Ring_zero_multL) We take the following as an axiom:
explicit_Ring∀xR, zero * x = zero
Axiom. (explicit_Ring_minus_mult) We take the following as an axiom:
explicit_Ring∀xR, - x = (- one) * x
Axiom. (explicit_Ring_mult_minus) We take the following as an axiom:
explicit_Ring∀xR, - x = x * (- one)
Axiom. (explicit_Ring_minus_one_square) We take the following as an axiom:
explicit_Ring(- one) * (- one) = one
Axiom. (explicit_Ring_minus_square) We take the following as an axiom:
explicit_Ring∀xR, (- x) * (- x) = x * x
Definition. We define explicit_Ring_exp_nat to be λx n ⇒ nat_primrec one (λ_ r ⇒ x * r) n of type setsetset.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term explicit_Ring_exp_nat.
Definition. We define explicit_Ring_eval_poly to be λn cs x ⇒ nat_primrec zero (λm r ⇒ cs m * x ^ m + r) n of type setsetsetset.
End of Section explicit_Ring
Beginning of Section explicit_Ring_RepIndep2
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Variable plus' mult' : setsetset
Notation. We use + as an infix operator with priority 355 and which associates to the right corresponding to applying term plus'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mult'.
Hypothesis Hpp' : ∀a bR, a + b = a + b
Hypothesis Hmm' : ∀a bR, a * b = a b
Axiom. (explicit_Ring_repindep) We take the following as an axiom:
explicit_Ring R zero one plus mult explicit_Ring R zero one plus' mult'
End of Section explicit_Ring_RepIndep2
Beginning of Section explicit_CRing
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Primitive. The name explicit_CRing is a term of type prop.
Axiom. (explicit_CRing_I) We take the following as an axiom:
(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)zero R(∀xR, zero + x = x)(∀xR, ∃yR, x + y = zero)(∀x yR, x * y R)(∀x y zR, x * (y * z) = (x * y) * z)(∀x yR, x * y = y * x)(one R)(one zero)(∀xR, one * x = x)(∀x y zR, x * (y + z) = x * y + x * z)explicit_CRing
Axiom. (explicit_CRing_E) We take the following as an axiom:
∀q : prop, (explicit_CRing(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)(zero R)(∀xR, zero + x = x)(∀xR, ∃yR, x + y = zero)(∀x yR, x * y R)(∀x y zR, x * (y * z) = (x * y) * z)(∀x yR, x * y = y * x)(one R)(one zero)(∀xR, one * x = x)(∀x y zR, x * (y + z) = x * y + x * z)q)explicit_CRingq
Axiom. (explicit_CRing_Ring) We take the following as an axiom:
explicit_CRingexplicit_Ring R zero one plus mult
Axiom. (explicit_CRing_Rng) We take the following as an axiom:
explicit_CRingexplicit_Rng R zero plus mult
Notation. We use - as a prefix operator with priority 358 corresponding to applying term explicit_Rng_minus R zero plus mult.
Axiom. (explicit_CRing_minus_clos) We take the following as an axiom:
explicit_CRing∀xR, - x R
Axiom. (explicit_CRing_minus_R) We take the following as an axiom:
explicit_CRing∀xR, x + - x = zero
Axiom. (explicit_CRing_minus_L) We take the following as an axiom:
explicit_CRing∀xR, - x + x = zero
Axiom. (explicit_CRing_plus_cancelL) We take the following as an axiom:
explicit_CRing∀x y zR, x + y = x + zy = z
Axiom. (explicit_CRing_plus_cancelR) We take the following as an axiom:
explicit_CRing∀x y zR, x + z = y + zx = y
Axiom. (explicit_CRing_minus_invol) We take the following as an axiom:
explicit_CRing∀xR, - - x = x
Axiom. (explicit_CRing_minus_one_In) We take the following as an axiom:
explicit_CRing- one R
Axiom. (explicit_CRing_zero_multR) We take the following as an axiom:
explicit_CRing∀xR, x * zero = zero
Axiom. (explicit_CRing_zero_multL) We take the following as an axiom:
explicit_CRing∀xR, zero * x = zero
Axiom. (explicit_CRing_minus_mult) We take the following as an axiom:
explicit_CRing∀xR, - x = (- one) * x
Axiom. (explicit_CRing_mult_minus) We take the following as an axiom:
explicit_CRing∀xR, - x = x * (- one)
Axiom. (explicit_CRing_minus_one_square) We take the following as an axiom:
explicit_CRing(- one) * (- one) = one
Axiom. (explicit_CRing_minus_square) We take the following as an axiom:
explicit_CRing∀xR, (- x) * (- x) = x * x
End of Section explicit_CRing
Beginning of Section explicit_CRing_RepIndep2
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Variable plus' mult' : setsetset
Notation. We use + as an infix operator with priority 355 and which associates to the right corresponding to applying term plus'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mult'.
Hypothesis Hpp' : ∀a bR, a + b = a + b
Hypothesis Hmm' : ∀a bR, a * b = a b
Axiom. (explicit_CRing_repindep) We take the following as an axiom:
explicit_CRing R zero one plus mult explicit_CRing R zero one plus' mult'
End of Section explicit_CRing_RepIndep2
Primitive. The name pack_b_b_e is a term of type set(setsetset)(setsetset)setset.
Definition. We define struct_b_b_e to be λS ⇒ ∀q : setprop, (∀X : set, ∀f : setsetset, (∀x yX, f x y X)∀g : setsetset, (∀x yX, g x y X)∀c : set, c Xq (pack_b_b_e X f g c))q S of type setprop.
Primitive. The name unpack_b_b_e_i is a term of type set(set(setsetset)(setsetset)setset)set.
Primitive. The name unpack_b_b_e_o is a term of type set(set(setsetset)(setsetset)setprop)prop.
Axiom. (unpack_b_b_e_o_eq) We take the following as an axiom:
∀Phi : set(setsetset)(setsetset)setprop, ∀X, ∀f : setsetset, ∀g : setsetset, ∀c : set, (∀f' : setsetset, (∀x yX, f x y = f' x y)∀g' : setsetset, (∀x yX, g x y = g' x y)Phi X f' g' c = Phi X f g c)unpack_b_b_e_o (pack_b_b_e X f g c) Phi = Phi X f g c
Axiom. (pack_b_b_e_0_eq2) We take the following as an axiom:
∀X, ∀F G : setsetset, ∀c, X = pack_b_b_e X F G c 0
Definition. We define Rng to be λR ⇒ struct_b_b_e R unpack_b_b_e_o R (λR plus mult zero ⇒ explicit_Rng R zero plus mult) of type setprop.
Definition. We define Rng_minus to be λR x ⇒ unpack_b_b_e_i R (λR plus mult zero ⇒ explicit_Rng_minus R zero plus mult x) of type setsetset.
Primitive. The name pack_b_b_e_e is a term of type set(setsetset)(setsetset)setsetset.
Definition. We define struct_b_b_e_e to be λS ⇒ ∀q : setprop, (∀X : set, ∀f : setsetset, (∀x yX, f x y X)∀g : setsetset, (∀x yX, g x y X)∀c : set, c X∀d : set, d Xq (pack_b_b_e_e X f g c d))q S of type setprop.
Primitive. The name unpack_b_b_e_e_i is a term of type set(set(setsetset)(setsetset)setsetset)set.
Primitive. The name unpack_b_b_e_e_o is a term of type set(set(setsetset)(setsetset)setsetprop)prop.
Axiom. (unpack_b_b_e_e_o_eq) We take the following as an axiom:
∀Phi : set(setsetset)(setsetset)setsetprop, ∀X, ∀f : setsetset, ∀g : setsetset, ∀c : set, ∀d : set, (∀f' : setsetset, (∀x yX, f x y = f' x y)∀g' : setsetset, (∀x yX, g x y = g' x y)Phi X f' g' c d = Phi X f g c d)unpack_b_b_e_e_o (pack_b_b_e_e X f g c d) Phi = Phi X f g c d
Axiom. (pack_b_b_e_e_0_eq2) We take the following as an axiom:
∀X, ∀F G : setsetset, ∀c d, X = pack_b_b_e_e X F G c d 0
Definition. We define Ring to be λR ⇒ struct_b_b_e_e R unpack_b_b_e_e_o R (λR plus mult zero one ⇒ explicit_Ring R zero one plus mult) of type setprop.
Axiom. (Ring_unpack_eq) We take the following as an axiom:
∀R, ∀plus mult : setsetset, ∀zero one, unpack_b_b_e_e_o (pack_b_b_e_e R plus mult zero one) (λR plus mult zero one ⇒ explicit_Ring R zero one plus mult) = explicit_Ring R zero one plus mult
Definition. We define CRing to be λR ⇒ struct_b_b_e_e R unpack_b_b_e_e_o R (λR plus mult zero one ⇒ explicit_CRing R zero one plus mult) of type setprop.
Axiom. (CRing_unpack_eq) We take the following as an axiom:
∀R, ∀plus mult : setsetset, ∀zero one, unpack_b_b_e_e_o (pack_b_b_e_e R plus mult zero one) (λR plus mult zero one ⇒ explicit_CRing R zero one plus mult) = explicit_CRing R zero one plus mult
Definition. We define Rng_of_Ring to be λR ⇒ unpack_b_b_e_e_i R (λR plus mult zero one ⇒ pack_b_b_e R plus mult zero) of type setset.
Axiom. (CRing_is_Ring) We take the following as an axiom:
∀R, CRing RRing R
Beginning of Section explicit_Reals
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Primitive. The name explicit_Field is a term of type prop.
Axiom. (explicit_Field_I) We take the following as an axiom:
(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)zero R(∀xR, zero + x = x)(∀xR, ∃yR, x + y = zero)(∀x yR, x * y R)(∀x y zR, x * (y * z) = (x * y) * z)(∀x yR, x * y = y * x)(one R)(one zero)(∀xR, one * x = x)(∀xR, x zero∃yR, x * y = one)(∀x y zR, x * (y + z) = x * y + x * z)explicit_Field
Axiom. (explicit_Field_E) We take the following as an axiom:
∀q : prop, (explicit_Field(∀x yR, x + y R)(∀x y zR, x + (y + z) = (x + y) + z)(∀x yR, x + y = y + x)(zero R)(∀xR, zero + x = x)(∀xR, ∃yR, x + y = zero)(∀x yR, x * y R)(∀x y zR, x * (y * z) = (x * y) * z)(∀x yR, x * y = y * x)(one R)(one zero)(∀xR, one * x = x)(∀xR, x zero∃yR, x * y = one)(∀x y zR, x * (y + z) = x * y + x * z)q)explicit_Fieldq
Primitive. The name explicit_Field_minus is a term of type setset.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term explicit_Field_minus.
Axiom. (explicit_Field_minus_prop) We take the following as an axiom:
explicit_Field∀xR, - x R x + - x = zero
Axiom. (explicit_Field_minus_clos) We take the following as an axiom:
explicit_Field∀xR, - x R
Axiom. (explicit_Field_minus_R) We take the following as an axiom:
explicit_Field∀xR, x + - x = zero
Axiom. (explicit_Field_minus_L) We take the following as an axiom:
explicit_Field∀xR, - x + x = zero
Axiom. (explicit_Field_plus_cancelL) We take the following as an axiom:
explicit_Field∀x y zR, x + y = x + zy = z
Axiom. (explicit_Field_plus_cancelR) We take the following as an axiom:
explicit_Field∀x y zR, x + z = y + zx = y
Axiom. (explicit_Field_minus_invol) We take the following as an axiom:
explicit_Field∀xR, - - x = x
Axiom. (explicit_Field_minus_one_In) We take the following as an axiom:
explicit_Field- one R
Axiom. (explicit_Field_zero_multR) We take the following as an axiom:
explicit_Field∀xR, x * zero = zero
Axiom. (explicit_Field_zero_multL) We take the following as an axiom:
explicit_Field∀xR, zero * x = zero
Axiom. (explicit_Field_minus_mult) We take the following as an axiom:
explicit_Field∀xR, - x = (- one) * x
Axiom. (explicit_Field_minus_one_square) We take the following as an axiom:
explicit_Field(- one) * (- one) = one
Axiom. (explicit_Field_minus_square) We take the following as an axiom:
explicit_Field∀xR, (- x) * (- x) = x * x
Axiom. (explicit_Field_minus_zero) We take the following as an axiom:
explicit_Field- zero = zero
Axiom. (explicit_Field_dist_R) We take the following as an axiom:
explicit_Field∀x y zR, (x + y) * z = x * z + y * z
Axiom. (explicit_Field_minus_plus_dist) We take the following as an axiom:
explicit_Field∀x yR, - (x + y) = - x + - y
Axiom. (explicit_Field_minus_mult_L) We take the following as an axiom:
explicit_Field∀x yR, (- x) * y = - (x * y)
Axiom. (explicit_Field_minus_mult_R) We take the following as an axiom:
explicit_Field∀x yR, x * (- y) = - (x * y)
Axiom. (explicit_Field_square_zero_inv) We take the following as an axiom:
explicit_Field∀xR, x * x = zerox = zero
Axiom. (explicit_Field_mult_zero_inv) We take the following as an axiom:
explicit_Field∀x yR, x * y = zerox = zero y = zero
Variable leq : setsetprop
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term leq.
Primitive. The name explicit_OrderedField is a term of type prop.
Axiom. (explicit_OrderedField_I) We take the following as an axiom:
explicit_Field(∀x y zR, x yy zx z)(∀x yR, x y y x x = y)(∀x yR, x y y x)(∀x y zR, x yx + z y + z)(∀x yR, zero xzero yzero x * y)explicit_OrderedField
Axiom. (explicit_OrderedField_E) We take the following as an axiom:
∀q : prop, (explicit_OrderedFieldexplicit_Field(∀x y zR, x yy zx z)(∀x yR, x y y x x = y)(∀x yR, x y y x)(∀x y zR, x yx + z y + z)(∀x yR, zero xzero yzero x * y)q)explicit_OrderedFieldq
Axiom. (explicit_OrderedField_minus_leq) We take the following as an axiom:
explicit_OrderedField∀x yR, x y- y - x
Axiom. (explicit_OrderedField_square_nonneg) We take the following as an axiom:
explicit_OrderedField∀xR, zero x * x
Axiom. (explicit_OrderedField_sum_squares_nonneg) We take the following as an axiom:
explicit_OrderedField∀x yR, zero x * x + y * y
Axiom. (explicit_OrderedField_sum_nonneg_zero_inv) We take the following as an axiom:
explicit_OrderedField∀x yR, zero xzero yx + y = zerox = zero y = zero
Axiom. (explicit_OrderedField_sum_squares_zero_inv) We take the following as an axiom:
explicit_OrderedField∀x yR, x * x + y * y = zerox = zero y = zero
Axiom. (explicit_OrderedField_leq_refl) We take the following as an axiom:
Axiom. (explicit_OrderedField_leq_antisym) We take the following as an axiom:
explicit_OrderedField∀x yR, x yy xx = y
Axiom. (explicit_OrderedField_leq_tra) We take the following as an axiom:
explicit_OrderedField∀x y zR, x yy zx z
Axiom. (explicit_OrderedField_leq_zero_one) We take the following as an axiom:
Definition. We define lt to be λx y ⇒ x y x y of type setsetprop.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term lt.
Primitive. The name natOfOrderedField_p is a term of type setprop.
Let N ≝ {nR|natOfOrderedField_p n}
Let Npos ≝ {nN|n zero}
Axiom. (explicit_Nats_natOfOrderedField) We take the following as an axiom:
explicit_OrderedFieldexplicit_Nats N zero (λm ⇒ m + one)
Axiom. (explicit_PosNats_natOfOrderedField) We take the following as an axiom:
explicit_OrderedFieldexplicit_Nats Npos one (λm ⇒ m + one)
Let Z ≝ {nR|- n Npos n = zero n Npos}
Definition. We define explicit_OrderedField_rationalp to be λx ⇒ ∃nZ, ∃mNpos, m * x = n of type setprop.
Let Q ≝ {xR|explicit_OrderedField_rationalp x}
Axiom. (explicit_OrderedField_Npos_props) We take the following as an axiom:
explicit_OrderedField∀p : prop, (Npos Rexplicit_Nats Npos one (λm ⇒ m + one)one Npos(∀mNpos, m + one one)(∀mNpos, ∀q : setprop, q one(∀nNpos, q (n + one))q m)(∀n mNpos, explicit_Nats_one_plus Npos one (λm ⇒ m + one) n m = n + m)(∀n mNpos, explicit_Nats_one_mult Npos one (λm ⇒ m + one) n m = n * m)(∀n mNpos, n + m Npos)(∀n mNpos, n * m Npos)p)p
Axiom. (explicit_OrderedField_Z_props) We take the following as an axiom:
explicit_OrderedField∀p : prop, ((∀nNpos, - n Z)zero ZNpos ZZ R(∀nZ, ∀q : prop, (- n Nposq)(n = zeroq)(n Nposq)q)one Z- one Z(∀mZ, - m Z)(∀n mZ, n + m Z)(∀n mZ, n * m Z)p)p
Axiom. (explicit_OrderedField_Q_props) We take the following as an axiom:
explicit_OrderedField∀p : prop, (Q R(∀xQ, ∀q : prop, (x R∀nZ, ∀mNpos, m * x = nq)q)(∀xR, ∀nZ, ∀mNpos, m * x = nx Q)p)p
Primitive. The name explicit_Reals is a term of type prop.
Axiom. (explicit_Reals_I) We take the following as an axiom:
explicit_OrderedField(∀x yR, zero < xzero y∃nN, y n * x)(∀a bRN, (∀nN, a n b n a n a (n + one) b (n + one) b n)∃xR, ∀nN, a n x x b n)explicit_Reals
Axiom. (explicit_Reals_E) We take the following as an axiom:
∀q : prop, (explicit_Realsexplicit_OrderedField(∀x yR, zero < xzero y∃nN, y n * x)(∀a bRN, (∀nN, a n b n a n a (n + one) b (n + one) b n)∃xR, ∀nN, a n x x b n)q)explicit_Realsq
Axiom. (explicit_Reals_characteristic_0) We take the following as an axiom:
explicit_Reals∀nomega, nat_primrec one (λ_ r ⇒ plus one r) n zero
End of Section explicit_Reals
Definition. We define CRing_carrier to be λRs ⇒ Rs 0 of type setset.
Definition. We define CRing_plus to be λRs ⇒ decode_b (Rs 1) of type setsetsetset.
Definition. We define CRing_mult to be λRs ⇒ decode_b (Rs 2) of type setsetsetset.
Definition. We define CRing_zero to be λRs ⇒ Rs 3 of type setset.
Definition. We define CRing_one to be λRs ⇒ Rs 4 of type setset.
Beginning of Section CRing
Variable Rs : set
Hypothesis HRs : CRing Rs
Let R : setCRing_carrier Rs
Let zero : setCRing_zero Rs
Let one : setCRing_one Rs
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term CRing_plus Rs.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term CRing_mult Rs.
Axiom. (CRing_eta) We take the following as an axiom:
Rs = pack_b_b_e_e R (CRing_plus Rs) (CRing_mult Rs) zero one
Axiom. (CRing_explicit_CRing) We take the following as an axiom:
explicit_CRing R zero one (CRing_plus Rs) (CRing_mult Rs)
Axiom. (CRing_zero_In) We take the following as an axiom:
zero R
Axiom. (CRing_one_In) We take the following as an axiom:
one R
Axiom. (CRing_plus_clos) We take the following as an axiom:
∀x yR, x + y R
Axiom. (CRing_mult_clos) We take the following as an axiom:
∀x yR, x * y R
Axiom. (CRing_plus_assoc) We take the following as an axiom:
∀x y zR, x + (y + z) = (x + y) + z
Axiom. (CRing_plus_com) We take the following as an axiom:
∀x yR, x + y = y + x
Axiom. (CRing_zero_L) We take the following as an axiom:
∀xR, zero + x = x
Axiom. (CRing_plus_inv) We take the following as an axiom:
∀xR, ∃yR, x + y = zero
Axiom. (CRing_mult_assoc) We take the following as an axiom:
∀x y zR, x * (y * z) = (x * y) * z
Axiom. (CRing_mult_com) We take the following as an axiom:
∀x yR, x * y = y * x
Axiom. (CRing_one_neq_zero) We take the following as an axiom:
one zero
Axiom. (CRing_one_L) We take the following as an axiom:
∀xR, one * x = x
Axiom. (CRing_distr_L) We take the following as an axiom:
∀x y zR, x * (y + z) = x * y + x * z
Definition. We define CRing_omega_exp to be λx ⇒ nat_primrec one (λk r ⇒ x * r) of type setsetset.
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term CRing_omega_exp.
Axiom. (CRing_omega_exp_0) We take the following as an axiom:
∀x, x ^ 0 = one
Axiom. (CRing_omega_exp_S) We take the following as an axiom:
∀x, ∀nomega, x ^ (ordsucc n) = x * x ^ n
Axiom. (CRing_omega_exp_1) We take the following as an axiom:
∀xR, x ^ 1 = x
Axiom. (CRing_omega_exp_clos) We take the following as an axiom:
∀xR, ∀nomega, x ^ n R
Definition. We define CRing_eval_poly to be λn cs x ⇒ nat_primrec zero (λm r ⇒ cs m * x ^ m + r) n of type setsetsetset.
Axiom. (CRing_eval_poly_clos) We take the following as an axiom:
∀nomega, ∀csRn, ∀xR, CRing_eval_poly n cs x R
End of Section CRing
Beginning of Section explicit_Reals
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term explicit_Field_minus R zero one plus mult.
Variable leq : setsetprop
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term leq.
Let N ≝ {nR|natOfOrderedField_p R zero one plus mult leq n}
Let Npos ≝ {nN|n zero}
Let Z ≝ {nR|- n Npos n = zero n Npos}
Let Q ≝ {xR|explicit_OrderedField_rationalp R zero one plus mult leq x}
Axiom. (explicit_OrderedField_explicit_Field_Q) We take the following as an axiom:
explicit_OrderedField R zero one plus mult leqexplicit_Field Q zero one plus mult
Axiom. (explicit_OrderedField_sub) We take the following as an axiom:
explicit_OrderedField R zero one plus mult leq∀R'R, zero R'one R'(∀x yR', x + y R')(∀xR', - x R')(∀x yR', x * y R')(∀xR', x zero∃yR', x * y = one)explicit_OrderedField R' zero one plus mult leq
Axiom. (explicit_Reals_sub) We take the following as an axiom:
explicit_OrderedField R zero one plus mult leq∀R'R, zero R'one R'(∀x yR', x + y R')(∀xR', - x R')(∀x yR', x * y R')(∀xR', x zero∃yR', x * y = one)explicit_OrderedField R' zero one plus mult leq
Beginning of Section explicit_Reals_Q_min_props
Variable R' : set
Let N' ≝ {nR'|natOfOrderedField_p R' zero one plus mult leq n}
Let Npos' ≝ {nN'|n zero}
Let Z' ≝ {nR'|explicit_Field_minus R' zero one plus mult n Npos' n = zero n Npos'}
Let Q' ≝ {xR'|explicit_OrderedField_rationalp R' zero one plus mult leq x}
Axiom. (explicit_Reals_Q_min_props) We take the following as an axiom:
explicit_OrderedField R zero one plus mult leqR' Rexplicit_Field R' zero one plus mult∀p : prop, ((∀xR', explicit_Field_minus R' zero one plus mult x = - x)(∀xR', - x R')N = N'Npos = Npos'Z = Z'Q = Q'p)p
End of Section explicit_Reals_Q_min_props
Axiom. (explicit_Reals_Q_min) We take the following as an axiom:
explicit_OrderedField R zero one plus mult leq∀R'R, explicit_Field R' zero one plus multQ R'
End of Section explicit_Reals
Beginning of Section explicit_Field_transfer
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Variable R' : set
Variable zero' one' : set
Variable plus' mult' : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mult'.
Variable f : setset
Axiom. (explicit_Field_transfer) We take the following as an axiom:
explicit_Field R zero one plus multbij R R' ff zero = zero'f one = one'(∀x yR, f (x + y) = f x + f y)(∀x yR, f (x * y) = f x f y)explicit_Field R' zero' one' plus' mult'
End of Section explicit_Field_transfer
Beginning of Section explicit_Field_RepIndep2
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Variable plus' mult' : setsetset
Notation. We use + as an infix operator with priority 355 and which associates to the right corresponding to applying term plus'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mult'.
Hypothesis Hpp' : ∀a bR, a + b = a + b
Hypothesis Hmm' : ∀a bR, a * b = a b
Axiom. (explicit_Field_repindep) We take the following as an axiom:
explicit_Field R zero one plus mult explicit_Field R zero one plus' mult'
End of Section explicit_Field_RepIndep2
Definition. We define Field to be λF ⇒ struct_b_b_e_e F unpack_b_b_e_e_o F (λQ plus mult zero one ⇒ explicit_Field Q zero one plus mult) of type setprop.
Axiom. (Field_unpack_eq) We take the following as an axiom:
∀R, ∀plus mult : setsetset, ∀zero one, unpack_b_b_e_e_o (pack_b_b_e_e R plus mult zero one) (λR plus mult zero one ⇒ explicit_Field R zero one plus mult) = explicit_Field R zero one plus mult
Axiom. (Field_is_CRing) We take the following as an axiom:
∀F, Field FCRing F
Beginning of Section explicit_OrderedField_transfer
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Variable leq : setsetprop
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term leq.
Variable R' : set
Variable zero' one' : set
Variable plus' mult' : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mult'.
Variable leq' : setsetprop
Variable f : setset
Axiom. (explicit_OrderedField_transfer) We take the following as an axiom:
explicit_OrderedField R zero one plus mult leqbij R R' ff zero = zero'f one = one'(∀x yR, f (x + y) = f x + f y)(∀x yR, f (x * y) = f x f y)(∀x yR, x y leq' (f x) (f y))explicit_OrderedField R' zero' one' plus' mult' leq'
End of Section explicit_OrderedField_transfer
Definition. We define Field_carrier to be λFs ⇒ Fs 0 of type setset.
Definition. We define Field_plus to be λFs ⇒ decode_b (Fs 1) of type setsetsetset.
Definition. We define Field_mult to be λFs ⇒ decode_b (Fs 2) of type setsetsetset.
Definition. We define Field_zero to be λFs ⇒ Fs 3 of type setset.
Definition. We define Field_one to be λFs ⇒ Fs 4 of type setset.
Primitive. The name Field_minus is a term of type setsetset.
Beginning of Section Field
Variable Fs : set
Hypothesis HFs : Field Fs
Let F : setField_carrier Fs
Let zero : setField_zero Fs
Let one : setField_one Fs
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term Field_plus Fs.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term Field_mult Fs.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term Field_minus Fs.
Axiom. (Field_eta) We take the following as an axiom:
Fs = pack_b_b_e_e F (Field_plus Fs) (Field_mult Fs) zero one
Axiom. (Field_explicit_Field) We take the following as an axiom:
explicit_Field F zero one (Field_plus Fs) (Field_mult Fs)
Axiom. (Field_zero_In) We take the following as an axiom:
zero F
Axiom. (Field_one_In) We take the following as an axiom:
one F
Axiom. (Field_plus_clos) We take the following as an axiom:
∀x yF, x + y F
Axiom. (Field_mult_clos) We take the following as an axiom:
∀x yF, x * y F
Axiom. (Field_plus_assoc) We take the following as an axiom:
∀x y zF, x + (y + z) = (x + y) + z
Axiom. (Field_plus_com) We take the following as an axiom:
∀x yF, x + y = y + x
Axiom. (Field_zero_L) We take the following as an axiom:
∀xF, zero + x = x
Axiom. (Field_plus_inv) We take the following as an axiom:
∀xF, ∃yF, x + y = zero
Axiom. (Field_mult_assoc) We take the following as an axiom:
∀x y zF, x * (y * z) = (x * y) * z
Axiom. (Field_mult_com) We take the following as an axiom:
∀x yF, x * y = y * x
Axiom. (Field_one_neq_zero) We take the following as an axiom:
one zero
Axiom. (Field_one_L) We take the following as an axiom:
∀xF, one * x = x
Axiom. (Field_mult_inv_L) We take the following as an axiom:
∀xF, x zero∃yF, x * y = one
Axiom. (Field_distr_L) We take the following as an axiom:
∀x y zF, x * (y + z) = x * y + x * z
Primitive. The name Field_div is a term of type setsetset.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term Field_div.
Axiom. (Field_div_prop) We take the following as an axiom:
∀xF, ∀yF {zero}, x :/: y F x = y * (x :/: y)
Axiom. (Field_div_clos) We take the following as an axiom:
∀xF, ∀yF {zero}, x :/: y F
Axiom. (Field_mult_div) We take the following as an axiom:
∀xF, ∀yF {zero}, x = y * (x :/: y)
Axiom. (Field_div_undef1) We take the following as an axiom:
∀x y, x Fx :/: y = 0
Axiom. (Field_div_undef2) We take the following as an axiom:
∀x y, y Fx :/: y = 0
Axiom. (Field_div_undef3) We take the following as an axiom:
∀x, x :/: zero = 0
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term CRing_omega_exp Fs.
Axiom. (Field_omega_exp_0) We take the following as an axiom:
∀x, x ^ 0 = one
Axiom. (Field_omega_exp_S) We take the following as an axiom:
∀x, ∀nomega, x ^ (ordsucc n) = x * x ^ n
Axiom. (Field_omega_exp_1) We take the following as an axiom:
∀xF, x ^ 1 = x
Axiom. (Field_omega_exp_clos) We take the following as an axiom:
∀xF, ∀nomega, x ^ n F
Axiom. (Field_eval_poly_clos) We take the following as an axiom:
∀nomega, ∀csFn, ∀xF, CRing_eval_poly Fs n cs x F
Axiom. (Field_plus_cancelL) We take the following as an axiom:
∀x y zF, x + y = x + zy = z
Axiom. (Field_plus_cancelR) We take the following as an axiom:
∀x y zF, x + z = y + zx = y
Axiom. (Field_minus_eq) We take the following as an axiom:
∀xF, - x = explicit_Field_minus F zero one (Field_plus Fs) (Field_mult Fs) x
Axiom. (Field_minus_undef) We take the following as an axiom:
∀x, x F- x = 0
Axiom. (Field_minus_clos) We take the following as an axiom:
∀xF, - x F
Axiom. (Field_minus_R) We take the following as an axiom:
∀xF, x + - x = zero
Axiom. (Field_minus_L) We take the following as an axiom:
∀xF, - x + x = zero
Axiom. (Field_minus_invol) We take the following as an axiom:
∀xF, - - x = x
Axiom. (Field_minus_one_In) We take the following as an axiom:
- one F
Axiom. (Field_zero_multR) We take the following as an axiom:
∀xF, x * zero = zero
Axiom. (Field_zero_multL) We take the following as an axiom:
∀xF, zero * x = zero
Axiom. (Field_minus_mult) We take the following as an axiom:
∀xF, - x = (- one) * x
Axiom. (Field_minus_one_square) We take the following as an axiom:
(- one) * (- one) = one
Axiom. (Field_minus_square) We take the following as an axiom:
∀xF, (- x) * (- x) = x * x
Axiom. (Field_minus_zero) We take the following as an axiom:
- zero = zero
Axiom. (Field_dist_R) We take the following as an axiom:
∀x y zF, (x + y) * z = x * z + y * z
Axiom. (Field_minus_plus_dist) We take the following as an axiom:
∀x yF, - (x + y) = - x + - y
Axiom. (Field_minus_mult_L) We take the following as an axiom:
∀x yF, (- x) * y = - (x * y)
Axiom. (Field_minus_mult_R) We take the following as an axiom:
∀x yF, x * (- y) = - (x * y)
Axiom. (Field_square_zero_inv) We take the following as an axiom:
∀xF, x * x = zerox = zero
Axiom. (Field_mult_zero_inv) We take the following as an axiom:
∀x yF, x * y = zerox = zero y = zero
End of Section Field
Beginning of Section Field2
Variable Fs : set
Variable Fs' : set
Let F : setField_carrier Fs
Let zero : setField_zero Fs
Let one : setField_one Fs
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term Field_plus Fs.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term Field_mult Fs.
Let F' : setField_carrier Fs'
Let zero' : setField_zero Fs'
Let one' : setField_one Fs'
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term Field_plus Fs'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term Field_mult Fs'.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term Field_minus Fs.
Notation. We use :-: as a prefix operator with priority 358 corresponding to applying term Field_minus Fs'.
Primitive. The name subfield is a term of type prop.
Axiom. (subfield_I) We take the following as an axiom:
Field FsField Fs'F F'zero = zero'one = one'(∀a bF, a + b = a + b)(∀a bF, a * b = a b)subfield
Axiom. (subfield_E) We take the following as an axiom:
subfield∀p : prop, (Field FsField Fs'F F'zero = zero'one = one'(∀a bF, a + b = a + b)(∀a bF, a * b = a b)p)p
Primitive. The name Field_Hom is a term of type setprop.
Axiom. (Field_Hom_I) We take the following as an axiom:
∀g, Field FsField Fs'g F'Fg zero = zero'g one = one'(∀a bF, g (a + b) = g a + g b)(∀a bF, g (a * b) = g a g b)Field_Hom g
Axiom. (Field_Hom_E) We take the following as an axiom:
∀g, Field_Hom g∀p : prop, (Field FsField Fs'g F'Fg zero = zero'g one = one'(∀a bF, g (a + b) = g a + g b)(∀a bF, g (a * b) = g a g b)(∀aF, g (- a) = :-: g a)(∀aF, g a = zero'a = zero)(∀a bF, g a = g ba = b)(∀aF, ∀nomega, g (CRing_omega_exp Fs a n) = CRing_omega_exp Fs' (g a) n)p)p
Axiom. (Field_Hom_inj) We take the following as an axiom:
∀g, Field_Hom g∀a bF, g a = g ba = b
End of Section Field2
Axiom. (subfield_refl) We take the following as an axiom:
∀Fs, Field Fssubfield Fs Fs
Axiom. (subfield_tra) We take the following as an axiom:
∀Fs Fs' Fs'', subfield Fs Fs'subfield Fs' Fs''subfield Fs Fs''
Primitive. The name Field_extension_by_1 is a term of type setsetsetprop.
Axiom. (Field_extension_by_1_I) We take the following as an axiom:
∀Fs Fs' a, subfield Fs Fs'a Field_carrier Fs' Field_carrier Fs(∀Fs'', subfield Fs Fs''a Field_carrier Fs''subfield Fs' Fs'')Field_extension_by_1 Fs Fs' a
Axiom. (Field_extension_by_1_E) We take the following as an axiom:
∀Fs Fs' a, Field_extension_by_1 Fs Fs' a∀p : prop, (subfield Fs Fs'a Field_carrier Fs' Field_carrier Fs(∀Fs'', subfield Fs Fs''a Field_carrier Fs''subfield Fs' Fs'')p)p
Primitive. The name radical_field_extension is a term of type setsetprop.
Axiom. (radical_field_extension_I) We take the following as an axiom:
∀Fs Fs', ∀romega, ∀Fseq, Fseq 0 = FsFseq r = Fs'(∀iordsucc r, Field (Fseq i))(∀ir, ∃aField_carrier (Fseq (ordsucc i)), ∃nomega, CRing_omega_exp (Fseq (ordsucc i)) a n Field_carrier (Fseq i) Field_extension_by_1 (Fseq i) (Fseq (ordsucc i)) a)radical_field_extension Fs Fs'
Axiom. (radical_field_extension_E) We take the following as an axiom:
∀Fs Fs', radical_field_extension Fs Fs'∀p : prop, (Field FsField Fs'subfield Fs Fs'∀romega, ∀Fseq, Fseq 0 = FsFseq r = Fs'(∀iordsucc r, Field (Fseq i))(∀iordsucc r, ∀jordsucc i, subfield (Fseq j) (Fseq i))(∀ir, ∃aField_carrier (Fseq (ordsucc i)), ∃nomega, CRing_omega_exp (Fseq (ordsucc i)) a n Field_carrier (Fseq i) Field_extension_by_1 (Fseq i) (Fseq (ordsucc i)) a)p)p
Primitive. The name Field_automorphism_fixing is a term of type setsetsetprop.
Axiom. (Field_automorphism_fixing_I) We take the following as an axiom:
∀K F f, subfield F KField_Hom K K f(∀yK 0, ∃xK 0, f x = y)(∀xF 0, f x = x)Field_automorphism_fixing K F f
Axiom. (Field_automorphism_fixing_E) We take the following as an axiom:
∀K F f, Field_automorphism_fixing K F f∀p : prop, (subfield F KField_Hom K K f(∀yK 0, ∃xK 0, f x = y)(∀xF 0, f x = x)p)p
Definition. We define lam_comp to be λA f g ⇒ λx ∈ Af (g x) of type setsetsetset.
Definition. We define lam_id to be λA ⇒ λx ∈ Ax of type setset.
Axiom. (lam_comp_exp_In) We take the following as an axiom:
∀A B C, ∀fBA, ∀gCB, lam_comp A g f CA
Axiom. (lam_id_exp_In) We take the following as an axiom:
∀A, lam_id A AA
Axiom. (lam_comp_assoc) We take the following as an axiom:
∀A B, ∀fBA, ∀g h, lam_comp A h (lam_comp A g f) = lam_comp A (lam_comp B h g) f
Axiom. (lam_comp_id_L) We take the following as an axiom:
∀A B, ∀fBA, lam_comp A (lam_id B) f = f
Axiom. (lam_comp_id_R) We take the following as an axiom:
∀A B, ∀fBA, lam_comp A f (lam_id A) = f
Axiom. (Field_Hom_id) We take the following as an axiom:
∀F, Field FField_Hom F F (lam_id (F 0))
Axiom. (Field_Hom_comp) We take the following as an axiom:
∀F F' F'' g h, Field_Hom F F' gField_Hom F' F'' hField_Hom F F'' (lam_comp (F 0) h g)
Definition. We define Galois_Group to be λK F ⇒ pack_b {fK 0K 0|Field_automorphism_fixing K F f} (lam_comp (K 0)) of type setsetset.
Axiom. (Galois_Group_0) We take the following as an axiom:
∀K F, Galois_Group K F 0 = {fK 0K 0|Field_automorphism_fixing K F f}
Axiom. (Galois_Group_Group) We take the following as an axiom:
∀F K, subfield F KGroup (Galois_Group K F)
Beginning of Section explicit_Reals_transfer
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Variable leq : setsetprop
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term leq.
Variable R' : set
Variable zero' one' : set
Variable plus' mult' : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mult'.
Variable leq' : setsetprop
Variable f : setset
Axiom. (explicit_Reals_transfer) We take the following as an axiom:
explicit_Reals R zero one plus mult leqbij R R' ff zero = zero'f one = one'(∀x yR, f (x + y) = f x + f y)(∀x yR, f (x * y) = f x f y)(∀x yR, x y leq' (f x) (f y))explicit_Reals R' zero' one' plus' mult' leq'
End of Section explicit_Reals_transfer
Beginning of Section explicit_Complex
Variable C : set
Variable Re Im : setset
Variable zero one i : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Let R ≝ {zC|Re z = z}
Primitive. The name explicit_Complex is a term of type prop.
Axiom. (explicit_Complex_I) We take the following as an axiom:
explicit_Field C zero one plus mult(∃leq : setsetprop, explicit_Reals R zero one plus mult leq)(∀zC, Im z R)(i C)(∀zC, Re z C)(∀zC, Im z C)(∀zC, z = Re z + i * Im z)(∀z wC, Re z = Re wIm z = Im wz = w)(i * i + one = zero)explicit_Complex
End of Section explicit_Complex
Beginning of Section RealsToComplex
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term explicit_Field_minus R zero one plus mult.
Variable leq : setsetprop
Variable pa : setsetset
Let C : setReplSep2 R (λ_ ⇒ R) (λx y ⇒ True) pa
Let Re : setsetλz ⇒ Eps_i (λx ⇒ x R ∃yR, z = pa x y)
Let Im : setsetλz ⇒ Eps_i (λy ⇒ y R z = pa (Re z) y)
Let Re' : setsetλz ⇒ pa (Re z) zero
Let Im' : setsetλz ⇒ pa (Im z) zero
Let R' ≝ {zC|Re' z = z}
Let zero' : setpa zero zero
Let one' : setpa one zero
Let i' : setpa zero one
Let plus' : setsetsetλz w ⇒ pa (Re z + Re w) (Im z + Im w)
Let mult' : setsetsetλz w ⇒ pa (Re z * Re w + - (Im z * Im w)) (Re z * Im w + Im z * Re w)
Axiom. (explicit_RealsToComplex) We take the following as an axiom:
explicit_Reals R zero one plus mult leq(∀x1 y1 x2 y2R, pa x1 y1 = pa x2 y2x1 = x2 y1 = y2)explicit_Complex C Re' Im' zero' one' i' plus' mult'
Axiom. (explicit_RealsToComplex_exact_Subq) We take the following as an axiom:
explicit_Reals R zero one plus mult leq(∀x1 y1 x2 y2R, pa x1 y1 = pa x2 y2x1 = x2 y1 = y2)(∀xR, pa x zero = x)explicit_Complex C Re' Im' zero' one' i' plus' mult' R C (∀xR, Re x = x) zero' = zero one' = one (∀x yR, plus' x y = x + y) (∀x yR, mult' x y = x * y)
End of Section RealsToComplex
Beginning of Section SurrealArithmetic
Primitive. The name minus_SNo is a term of type setset.
Notation. We use - as a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Axiom. (minus_SNo_eq) We take the following as an axiom:
∀x, SNo x- x = SNoCut {- z|zSNoR x} {- w|wSNoL x}
Axiom. (minus_SNo_prop1) We take the following as an axiom:
∀x, SNo xSNo (- x) (∀uSNoL x, - x < - u) (∀uSNoR x, - u < - x) SNoCutP {- z|zSNoR x} {- w|wSNoL x}
Axiom. (SNo_minus_SNo) We take the following as an axiom:
∀x, SNo xSNo (- x)
Axiom. (minus_SNo_Lt_contra) We take the following as an axiom:
∀x y, SNo xSNo yx < y- y < - x
Axiom. (minus_SNo_Le_contra) We take the following as an axiom:
∀x y, SNo xSNo yx y- y - x
Axiom. (minus_SNo_SNoCutP) We take the following as an axiom:
∀x, SNo xSNoCutP {- z|zSNoR x} {- w|wSNoL x}
Axiom. (minus_SNo_SNoCutP_gen) We take the following as an axiom:
∀L R, SNoCutP L RSNoCutP {- z|zR} {- w|wL}
Axiom. (minus_SNo_Lev_lem1) We take the following as an axiom:
∀alpha, ordinal alpha∀xSNoS_ alpha, SNoLev (- x) SNoLev x
Axiom. (minus_SNo_Lev_lem2) We take the following as an axiom:
∀x, SNo xSNoLev (- x) SNoLev x
Axiom. (minus_SNo_invol) We take the following as an axiom:
∀x, SNo x- - x = x
Axiom. (minus_SNo_Lev) We take the following as an axiom:
∀x, SNo xSNoLev (- x) = SNoLev x
Axiom. (minus_SNo_SNo_) We take the following as an axiom:
∀alpha, ordinal alpha∀x, SNo_ alpha xSNo_ alpha (- x)
Axiom. (minus_SNo_SNoS_) We take the following as an axiom:
∀alpha, ordinal alpha∀x, x SNoS_ alpha- x SNoS_ alpha
Axiom. (minus_SNoCut_eq_lem) We take the following as an axiom:
∀v, SNo v∀L R, SNoCutP L Rv = SNoCut L R- v = SNoCut {- z|zR} {- w|wL}
Axiom. (minus_SNoCut_eq) We take the following as an axiom:
∀L R, SNoCutP L R- SNoCut L R = SNoCut {- z|zR} {- w|wL}
Axiom. (minus_SNo_Lt_contra1) We take the following as an axiom:
∀x y, SNo xSNo y- x < y- y < x
Axiom. (minus_SNo_Lt_contra2) We take the following as an axiom:
∀x y, SNo xSNo yx < - yy < - x
Axiom. (minus_SNo_Lt_contra3) We take the following as an axiom:
∀x y, SNo xSNo y- x < - yy < x
Axiom. (minus_SNo_0) We take the following as an axiom:
- 0 = 0
Axiom. (SNo_momega) We take the following as an axiom:
Axiom. (mordinal_SNo) We take the following as an axiom:
∀alpha, ordinal alphaSNo (- alpha)
Axiom. (mordinal_SNoLev) We take the following as an axiom:
∀alpha, ordinal alphaSNoLev (- alpha) = alpha
Axiom. (mordinal_SNoLev_min) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo zSNoLev z alpha- alpha < z
Axiom. (mordinal_SNoLev_min_2) We take the following as an axiom:
∀alpha, ordinal alpha∀z, SNo zSNoLev z ordsucc alpha- alpha z
Axiom. (minus_SNo_SNoS_omega) We take the following as an axiom:
Primitive. The name add_SNo is a term of type setsetset.
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term add_SNo.
Axiom. (add_SNo_eq) We take the following as an axiom:
∀x, SNo x∀y, SNo yx + y = SNoCut ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Axiom. (add_SNo_prop1) We take the following as an axiom:
∀x y, SNo xSNo ySNo (x + y) (∀uSNoL x, u + y < x + y) (∀uSNoR x, x + y < u + y) (∀uSNoL y, x + u < x + y) (∀uSNoR y, x + y < x + u) SNoCutP ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Axiom. (SNo_add_SNo) We take the following as an axiom:
∀x y, SNo xSNo ySNo (x + y)
Axiom. (SNo_add_SNo_3) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zSNo (x + y + z)
Axiom. (SNo_add_SNo_4) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wSNo (x + y + z + w)
Axiom. (add_SNo_Lt1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < zx + y < z + y
Axiom. (add_SNo_Le1) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx zx + y z + y
Axiom. (add_SNo_Lt2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zy < zx + y < x + z
Axiom. (add_SNo_Le2) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zy zx + y x + z
Axiom. (add_SNo_Lt3a) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx < zy wx + y < z + w
Axiom. (add_SNo_Lt3b) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx zy < wx + y < z + w
Axiom. (add_SNo_Lt3) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx < zy < wx + y < z + w
Axiom. (add_SNo_Le3) We take the following as an axiom:
∀x y z w, SNo xSNo ySNo zSNo wx zy wx + y z + w
Axiom. (add_SNo_SNoCutP) We take the following as an axiom:
∀x y, SNo xSNo ySNoCutP ({w + y|wSNoL x} {x + w|wSNoL y}) ({z + y|zSNoR x} {x + z|zSNoR y})
Axiom. (add_SNo_SNoCutP_gen) We take the following as an axiom:
∀Lx Rx Ly Ry, SNoCutP Lx RxSNoCutP Ly RySNoCutP ({w + SNoCut Ly Ry|wLx} {SNoCut Lx Rx + w|wLy}) ({z + SNoCut Ly Ry|zRx} {SNoCut Lx Rx + z|zRy})
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. (SNo_add_SNo_3c) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zSNo (x + y + - z)
Axiom. (add_SNo_minus_SNo_rinv) We take the following as an axiom:
∀x, SNo xx + - x = 0
Axiom. (add_SNo_ordinal_SNoCutP) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaSNoCutP ({x + beta|xSNoS_ alpha} {alpha + x|xSNoS_ beta}) Empty
Axiom. (add_SNo_ordinal_eq) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaalpha + beta = SNoCut ({x + beta|xSNoS_ alpha} {alpha + x|xSNoS_ beta}) Empty
Axiom. (add_SNo_ordinal_ordinal) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaordinal (alpha + beta)
Axiom. (add_SNo_ordinal_SL) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaordsucc alpha + beta = ordsucc (alpha + beta)
Axiom. (add_SNo_ordinal_SR) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal betaalpha + ordsucc beta = ordsucc (alpha + beta)
Axiom. (add_SNo_ordinal_InL) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal beta∀gammaalpha, gamma + beta alpha + beta
Axiom. (add_SNo_ordinal_InR) We take the following as an axiom:
∀alpha, ordinal alpha∀beta, ordinal beta∀gammabeta, alpha + gamma alpha + beta
Axiom. (add_nat_add_SNo) We take the following as an axiom:
∀n momega, add_nat n m = n + m
Axiom. (add_SNo_In_omega) We take the following as an axiom:
∀n momega, n + m omega
Axiom. (add_SNo_SNoL_interpolate) We take the following as an axiom:
∀x y, SNo xSNo y∀uSNoL (x + y), (∃vSNoL x, u v + y) (∃vSNoL y, u x + v)
Axiom. (add_SNo_SNoR_interpolate) We take the following as an axiom:
∀x y, SNo xSNo y∀uSNoR (x + y), (∃vSNoR x, v + y u) (∃vSNoR y, x + v u)
Axiom. (add_SNo_assoc) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + (y + z) = (x + y) + z
Axiom. (add_SNo_cancel_L) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + y = x + zy = z
Axiom. (add_SNo_cancel_R) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx + y = z + yx = z
Axiom. (minus_add_SNo_distr) We take the following as an axiom:
∀x y, SNo xSNo y- (x + y) = (- x) + (- y)
Axiom. (minus_add_SNo_distr_3) We take the following as an axiom:
∀x y z, SNo xSNo ySNo z- (x + y + z) = - x + - y + - z
Axiom. (add_SNo_Lev_bd) We take the following as an axiom:
∀x y, SNo xSNo ySNoLev (x + y) SNoLev x + SNoLev y
Axiom. (add_SNo_SNoS_omega) We take the following as an axiom:
Axiom. (add_SNo_minus_R2) We take the following as an axiom:
∀x y, SNo xSNo y(x + y) + - y = x
Axiom. (add_SNo_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_4_inner_flat) We take the following as an axiom:
∀x y z w, SNo ySNo zSNo wx + y + z + w = x + z + y + w
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_prop1) We take the following as an axiom:
∀x y, SNo xSNo y- x + x + y = y
Axiom. (add_SNo_minus_SNo_prop2) We take the following as an axiom:
∀x y, SNo xSNo yx + - x + y = y
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_Lt1b) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx < z + yx + - y < z
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_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_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_omega_eps_Lt) We take the following as an axiom:
∀x ySNoS_ omega, x < y∃nomega, x + eps_ n < y
Primitive. The name mul_SNo is a term of type setsetset.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mul_SNo.
Axiom. (mul_SNo_eq) We take the following as an axiom:
∀x, SNo x∀y, SNo yx * y = SNoCut ({(w 0) * y + x * (w 1) + - (w 0) * (w 1)|wSNoL x SNoL y} {(z 0) * y + x * (z 1) + - (z 0) * (z 1)|zSNoR x SNoR y}) ({(w 0) * y + x * (w 1) + - (w 0) * (w 1)|wSNoL x SNoR y} {(z 0) * y + x * (z 1) + - (z 0) * (z 1)|zSNoR x SNoL y})
Axiom. (mul_SNo_eq_2) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (∀L R, (∀u, u L(∀q : prop, (∀w0SNoL x, ∀w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(∀z0SNoR x, ∀z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q))(∀w0SNoL x, ∀w1SNoL y, w0 * y + x * w1 + - w0 * w1 L)(∀z0SNoR x, ∀z1SNoR y, z0 * y + x * z1 + - z0 * z1 L)(∀u, u R(∀q : prop, (∀w0SNoL x, ∀z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(∀z0SNoR x, ∀w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q))(∀w0SNoL x, ∀z1SNoR y, w0 * y + x * z1 + - w0 * z1 R)(∀z0SNoR x, ∀w1SNoL y, z0 * y + x * w1 + - z0 * w1 R)x * y = SNoCut L Rp)p
Axiom. (mul_SNo_prop_1) We take the following as an axiom:
∀x, SNo x∀y, SNo y∀p : prop, (SNo (x * y)(∀uSNoL x, ∀vSNoL y, u * y + x * v < x * y + u * v)(∀uSNoR x, ∀vSNoR y, u * y + x * v < x * y + u * v)(∀uSNoL x, ∀vSNoR y, x * y + u * v < u * y + x * v)(∀uSNoR x, ∀vSNoL y, x * y + u * v < u * y + x * v)p)p
Axiom. (SNo_mul_SNo) We take the following as an axiom:
∀x y, SNo xSNo ySNo (x * y)
Axiom. (mul_SNo_eq_3) We take the following as an axiom:
∀x y, SNo xSNo y∀p : prop, (∀L R, SNoCutP L R(∀u, u L(∀q : prop, (∀w0SNoL x, ∀w1SNoL y, u = w0 * y + x * w1 + - w0 * w1q)(∀z0SNoR x, ∀z1SNoR y, u = z0 * y + x * z1 + - z0 * z1q)q))(∀w0SNoL x, ∀w1SNoL y, w0 * y + x * w1 + - w0 * w1 L)(∀z0SNoR x, ∀z1SNoR y, z0 * y + x * z1 + - z0 * z1 L)(∀u, u R(∀q : prop, (∀w0SNoL x, ∀z1SNoR y, u = w0 * y + x * z1 + - w0 * z1q)(∀z0SNoR x, ∀w1SNoL y, u = z0 * y + x * w1 + - z0 * w1q)q))(∀w0SNoL x, ∀z1SNoR y, w0 * y + x * z1 + - w0 * z1 R)(∀z0SNoR x, ∀w1SNoL y, z0 * y + x * w1 + - z0 * w1 R)x * y = SNoCut L Rp)p
Axiom. (mul_SNo_Lt) We take the following as an axiom:
∀x y u v, SNo xSNo ySNo uSNo vu < xv < yu * y + x * v < x * y + u * v
Axiom. (mul_SNo_Le) We take the following as an axiom:
∀x y u v, SNo xSNo ySNo uSNo vu xv yu * y + x * v x * y + u * v
Axiom. (mul_SNo_SNoL_interpolate) We take the following as an axiom:
∀x y, SNo xSNo y∀uSNoL (x * y), (∃vSNoL x, ∃wSNoL y, u + v * w v * y + x * w) (∃vSNoR x, ∃wSNoR y, u + v * w v * y + x * w)
Axiom. (mul_SNo_SNoL_interpolate_impred) We take the following as an axiom:
∀x y, SNo xSNo y∀uSNoL (x * y), ∀p : prop, (∀vSNoL x, ∀wSNoL y, u + v * w v * y + x * wp)(∀vSNoR x, ∀wSNoR y, u + v * w v * y + x * wp)p
Axiom. (mul_SNo_SNoR_interpolate) We take the following as an axiom:
∀x y, SNo xSNo y∀uSNoR (x * y), (∃vSNoL x, ∃wSNoR y, v * y + x * w u + v * w) (∃vSNoR x, ∃wSNoL y, v * y + x * w u + v * w)
Axiom. (mul_SNo_SNoR_interpolate_impred) We take the following as an axiom:
∀x y, SNo xSNo y∀uSNoR (x * y), ∀p : prop, (∀vSNoL x, ∀wSNoR y, v * y + x * w u + v * wp)(∀vSNoR x, ∀wSNoL y, v * y + x * w u + v * wp)p
Axiom. (mul_SNo_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_distr) We take the following as an axiom:
∀x y, SNo xSNo y(- x) * 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
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 momega, mul_nat n m = n * m
Axiom. (mul_SNo_In_omega) We take the following as an axiom:
∀n momega, n * m omega
Definition. We define diadic_open to be λX ⇒ X SNoS_ omega ∀xX, ∃nomega, ∀ySNoS_ omega, x + - eps_ n < yy < x + eps_ ny X of type setprop.
Axiom. (diadic_open_I) We take the following as an axiom:
∀XSNoS_ omega, (∀xX, ∃nomega, ∀ySNoS_ omega, x + - eps_ n < yy < x + eps_ ny X)diadic_open X
Definition. We define SNoL_omega to be λx ⇒ {ySNoS_ omega|y < x} of type setset.
Definition. We define SNoR_omega to be λx ⇒ {ySNoS_ omega|x < y} of type setset.
Axiom. (diadic_open_SNoL_omega_I) We take the following as an axiom:
∀z, SNo z(∀xSNoL_omega z, ∃nomega, x + eps_ n < z)diadic_open (SNoL_omega z)
Axiom. (diadic_open_SNoR_omega_I) We take the following as an axiom:
∀z, SNo z(∀xSNoR_omega z, ∃nomega, z < x + - eps_ n)diadic_open (SNoR_omega z)
Definition. We define real to be {xSNoS_ (ordsucc omega)|SNoL_omega x 0 SNoR_omega x 0 diadic_open (SNoL_omega x) diadic_open (SNoR_omega x)} of type set.
Axiom. (real_I) We take the following as an axiom:
Axiom. (real_E) We take the following as an axiom:
∀xreal, ∀p : prop, (x SNoS_ (ordsucc omega)SNoL_omega x 0SNoR_omega x 0diadic_open (SNoL_omega x)diadic_open (SNoR_omega x)p)p
Axiom. (Subq_real_SNoS_ordsucc_omega) We take the following as an axiom:
Axiom. (Subq_SNoS_omega_real) We take the following as an axiom:
Axiom. (SNoCutP_SNoL_SNoR_omega) We take the following as an axiom:
∀x, SNo xSNoCutP (SNoL_omega x) (SNoR_omega x)
Axiom. (SNoS_ordsucc_omega_SNoL_SNoR_omega) We take the following as an axiom:
Axiom. (real_SNoL_SNoR_omega) We take the following as an axiom:
Axiom. (real_ex_diad_Lt) We take the following as an axiom:
∀xreal, ∃wSNoS_ omega, w < x
Axiom. (real_ex_diad_Gt) We take the following as an axiom:
∀xreal, ∃zSNoS_ omega, x < z
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. (mul_SNo_nonzero) We take the following as an axiom:
∀x y, SNo xSNo yx 0y 0x * y 0
Axiom. (minus_SNo_restr_SNo) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, (- x) SNoElts_ alpha = - (x SNoElts_ alpha)
Axiom. (minus_SNo_exactly1of2) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, exactly1of2 (alpha x) (alpha - x)
Axiom. (minus_SNo_In) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, alpha xalpha - x
Axiom. (minus_SNo_nIn) We take the following as an axiom:
∀x, SNo x∀alphaSNoLev x, alpha xalpha - x
Axiom. (real_minus_SNo) We take the following as an axiom:
Definition. We define div_SNo to be λx y ⇒ if y = 0 then 0 else Eps_i (λz ⇒ SNo z z * y = x) of type setsetset.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_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.
End of Section SurrealArithmetic
Definition. We define CSNo to be λz ⇒ ∃x, SNo x ∃y, SNo y z = SNo_pair x y of type setprop.
Axiom. (CSNo_I) We take the following as an axiom:
∀x y, SNo xSNo yCSNo (SNo_pair x y)
Axiom. (CSNo_E) We take the following as an axiom:
∀z, CSNo z∀p : setprop, (∀x y, SNo xSNo yz = SNo_pair x yp (SNo_pair x y))p z
Axiom. (SNo_CSNo) We take the following as an axiom:
∀x, SNo xCSNo x
Beginning of Section Complex
Definition. We define Complex_i to be SNo_pair 0 1 of type set.
Let i ≝ Complex_i
Axiom. (SNo_Complex_i) We take the following as an axiom:
Definition. We define CSNo_Re to be λz ⇒ Eps_i (λx ⇒ SNo x ∃y, SNo y z = SNo_pair x y) of type setset.
Definition. We define CSNo_Im to be λz ⇒ Eps_i (λy ⇒ SNo y z = SNo_pair (CSNo_Re z) y) of type setset.
Let Re : setsetCSNo_Re
Let Im : setsetCSNo_Im
Let pa : setsetsetSNo_pair
Axiom. (CSNo_Re1) We take the following as an axiom:
∀z, CSNo zSNo (Re z) ∃y, SNo y z = pa (Re z) y
Axiom. (CSNo_Re2) We take the following as an axiom:
∀x y, SNo xSNo yRe (pa x y) = x
Axiom. (CSNo_Im1) We take the following as an axiom:
∀z, CSNo zSNo (Im z) z = pa (Re z) (Im z)
Axiom. (CSNo_Im2) We take the following as an axiom:
∀x y, SNo xSNo yIm (pa x y) = y
Axiom. (CSNo_ReR) We take the following as an axiom:
∀z, CSNo zSNo (Re z)
Axiom. (CSNo_ImR) We take the following as an axiom:
∀z, CSNo zSNo (Im z)
Axiom. (CSNo_ReIm) We take the following as an axiom:
∀z, CSNo zz = pa (Re z) (Im z)
Axiom. (CSNo_ReIm_split) We take the following as an axiom:
∀z w, CSNo zCSNo wRe z = Re wIm z = Im wz = w
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 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.
Definition. We define div_CSNo to be λx y ⇒ if y = 0 then 0 else Eps_i (λz ⇒ CSNo z mul_CSNo z y = x) of type setsetset.
Axiom. (CSNo_minus_CSNo) We take the following as an axiom:
∀z, CSNo zCSNo (minus_CSNo z)
Axiom. (SNo_Re) We take the following as an axiom:
∀x, SNo xRe x = x
Axiom. (SNo_Im) We take the following as an axiom:
∀x, SNo xIm x = 0
Axiom. (Re_0) We take the following as an axiom:
Re 0 = 0
Axiom. (Im_0) We take the following as an axiom:
Im 0 = 0
Axiom. (Re_1) We take the following as an axiom:
Re 1 = 1
Axiom. (Im_1) We take the following as an axiom:
Im 1 = 0
Axiom. (Re_i) We take the following as an axiom:
Re i = 0
Axiom. (Im_i) We take the following as an axiom:
Im i = 1
Axiom. (add_SNo_add_CSNo) We take the following as an axiom:
∀x y, SNo xSNo yx + y = add_CSNo x y
Axiom. (CSNo_add_CSNo) We take the following as an axiom:
∀z w, CSNo zCSNo wCSNo (add_CSNo z w)
Axiom. (add_CSNo_0L) We take the following as an axiom:
∀z, CSNo zadd_CSNo 0 z = z
Axiom. (add_CSNo_0R) We take the following as an axiom:
∀z, CSNo zadd_CSNo z 0 = z
Axiom. (add_CSNo_minus_CSNo_linv) We take the following as an axiom:
∀z, CSNo zadd_CSNo (minus_CSNo z) z = 0
Axiom. (add_CSNo_minus_CSNo_rinv) We take the following as an axiom:
∀z, CSNo zadd_CSNo z (minus_CSNo z) = 0
Axiom. (minus_SNo_minus_CSNo) We take the following as an axiom:
∀x, SNo x- x = minus_CSNo x
End of Section Complex
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 353 and no associativity corresponding to applying term div_CSNo.
Definition. We define int to be omega {- n|nomega} of type set.
Definition. We define rational to be ReplSep2 int (λ_ ⇒ omega) (λnum den ⇒ den 0) (λnum den ⇒ num :/: den) of type set.
Definition. We define Sum to be λm n f ⇒ nat_primrec 0 (λk r ⇒ if k m then 0 else f k + r) (ordsucc n) of type setset(setset)set.
Definition. We define Prod to be λm n f ⇒ nat_primrec 1 (λk r ⇒ if k m then 1 else f k * r) (ordsucc n) of type setset(setset)set.
End of Section Complex
Beginning of Section Int
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 a prefix operator with priority 358 corresponding to applying term minus_SNo.
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term div_SNo.
Axiom. (int_SNo_cases) We take the following as an axiom:
∀p : setprop, (∀nomega, p n)(∀nomega, p (- n))∀xint, p x
Axiom. (Subq_omega_int) We take the following as an axiom:
Axiom. (int_minus_SNo_omega) We take the following as an axiom:
Axiom. (int_minus_SNo) We take the following as an axiom:
∀xint, - x int
Axiom. (int_add_SNo_lem) We take the following as an axiom:
∀nomega, ∀m, nat_p m- n + m int
Axiom. (int_add_SNo) We take the following as an axiom:
∀x yint, x + y int
Axiom. (int_mul_SNo) We take the following as an axiom:
∀x yint, x * y int
Definition. We define divides_int to be λm n ⇒ m int n int ∃kint, m * k = n of type setsetprop.
Definition. We define equiv_int_mod to be λm k n ⇒ m int k int n omega 1 divides_int (m + - k) n of type setsetsetprop.
Definition. We define coprime_int to be λa b ⇒ a int b int ∀xomega 1, divides_int x adivides_int x bx = 1 of type setsetprop.
End of Section Int
Primitive. The name pack_b_b_r_e_e is a term of type set(setsetset)(setsetset)(setsetprop)setsetset.
Axiom. (pack_b_b_r_e_e_0_eq) We take the following as an axiom:
∀S X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, S = pack_b_b_r_e_e X f g R c dX = S 0
Axiom. (pack_b_b_r_e_e_0_eq2) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, X = pack_b_b_r_e_e X f g R c d 0
Axiom. (pack_b_b_r_e_e_1_eq) We take the following as an axiom:
∀S X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, S = pack_b_b_r_e_e X f g R c d∀x yX, f x y = decode_b (S 1) x y
Axiom. (pack_b_b_r_e_e_1_eq2) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, ∀x yX, f x y = decode_b (pack_b_b_r_e_e X f g R c d 1) x y
Axiom. (pack_b_b_r_e_e_2_eq) We take the following as an axiom:
∀S X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, S = pack_b_b_r_e_e X f g R c d∀x yX, g x y = decode_b (S 2) x y
Axiom. (pack_b_b_r_e_e_2_eq2) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, ∀x yX, g x y = decode_b (pack_b_b_r_e_e X f g R c d 2) x y
Axiom. (pack_b_b_r_e_e_3_eq) We take the following as an axiom:
∀S X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, S = pack_b_b_r_e_e X f g R c d∀x yX, R x y = decode_r (S 3) x y
Axiom. (pack_b_b_r_e_e_3_eq2) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, ∀x yX, R x y = decode_r (pack_b_b_r_e_e X f g R c d 3) x y
Axiom. (pack_b_b_r_e_e_4_eq) We take the following as an axiom:
∀S X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, S = pack_b_b_r_e_e X f g R c dc = S 4
Axiom. (pack_b_b_r_e_e_4_eq2) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, c = pack_b_b_r_e_e X f g R c d 4
Axiom. (pack_b_b_r_e_e_5_eq) We take the following as an axiom:
∀S X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, S = pack_b_b_r_e_e X f g R c dd = S 5
Axiom. (pack_b_b_r_e_e_5_eq2) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, d = pack_b_b_r_e_e X f g R c d 5
Axiom. (pack_b_b_r_e_e_inj) We take the following as an axiom:
∀X X', ∀f f' : setsetset, ∀g g' : setsetset, ∀R R' : setsetprop, ∀c c' : set, ∀d d' : set, pack_b_b_r_e_e X f g R c d = pack_b_b_r_e_e X' f' g' R' c' d'X = X' (∀x yX, f x y = f' x y) (∀x yX, g x y = g' x y) (∀x yX, R x y = R' x y) c = c' d = d'
Axiom. (pack_b_b_r_e_e_ext) We take the following as an axiom:
∀X, ∀f f' : setsetset, ∀g g' : setsetset, ∀R R' : setsetprop, ∀c, ∀d, (∀x yX, f x y = f' x y)(∀x yX, g x y = g' x y)(∀x yX, R x y R' x y)pack_b_b_r_e_e X f g R c d = pack_b_b_r_e_e X f' g' R' c d
Definition. We define struct_b_b_r_e_e to be λS ⇒ ∀q : setprop, (∀X : set, ∀f : setsetset, (∀x yX, f x y X)∀g : setsetset, (∀x yX, g x y X)∀R : setsetprop, ∀c : set, c X∀d : set, d Xq (pack_b_b_r_e_e X f g R c d))q S of type setprop.
Axiom. (pack_struct_b_b_r_e_e_I) We take the following as an axiom:
∀X, ∀f : setsetset, (∀x yX, f x y X)∀g : setsetset, (∀x yX, g x y X)∀R : setsetprop, ∀c : set, c X∀d : set, d Xstruct_b_b_r_e_e (pack_b_b_r_e_e X f g R c d)
Axiom. (pack_struct_b_b_r_e_e_E1) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, struct_b_b_r_e_e (pack_b_b_r_e_e X f g R c d)∀x yX, f x y X
Axiom. (pack_struct_b_b_r_e_e_E2) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, struct_b_b_r_e_e (pack_b_b_r_e_e X f g R c d)∀x yX, g x y X
Axiom. (pack_struct_b_b_r_e_e_E4) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, struct_b_b_r_e_e (pack_b_b_r_e_e X f g R c d)c X
Axiom. (pack_struct_b_b_r_e_e_E5) We take the following as an axiom:
∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, struct_b_b_r_e_e (pack_b_b_r_e_e X f g R c d)d X
Axiom. (struct_b_b_r_e_e_eta) We take the following as an axiom:
∀S, struct_b_b_r_e_e SS = pack_b_b_r_e_e (S 0) (decode_b (S 1)) (decode_b (S 2)) (decode_r (S 3)) (S 4) (S 5)
Primitive. The name unpack_b_b_r_e_e_i is a term of type set(set(setsetset)(setsetset)(setsetprop)setsetset)set.
Axiom. (unpack_b_b_r_e_e_i_eq) We take the following as an axiom:
∀Phi : set(setsetset)(setsetset)(setsetprop)setsetset, ∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, (∀f' : setsetset, (∀x yX, f x y = f' x y)∀g' : setsetset, (∀x yX, g x y = g' x y)∀R' : setsetprop, (∀x yX, R x y R' x y)Phi X f' g' R' c d = Phi X f g R c d)unpack_b_b_r_e_e_i (pack_b_b_r_e_e X f g R c d) Phi = Phi X f g R c d
Primitive. The name unpack_b_b_r_e_e_o is a term of type set(set(setsetset)(setsetset)(setsetprop)setsetprop)prop.
Axiom. (unpack_b_b_r_e_e_o_eq) We take the following as an axiom:
∀Phi : set(setsetset)(setsetset)(setsetprop)setsetprop, ∀X, ∀f : setsetset, ∀g : setsetset, ∀R : setsetprop, ∀c : set, ∀d : set, (∀f' : setsetset, (∀x yX, f x y = f' x y)∀g' : setsetset, (∀x yX, g x y = g' x y)∀R' : setsetprop, (∀x yX, R x y R' x y)Phi X f' g' R' c d = Phi X f g R c d)unpack_b_b_r_e_e_o (pack_b_b_r_e_e X f g R c d) Phi = Phi X f g R c d
Primitive. The name OrderedFieldStruct is a term of type setprop.
Beginning of Section explicit_OrderedField_RepIndep2
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Variable leq : setsetprop
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Variable plus' mult' : setsetset
Variable leq' : setsetprop
Notation. We use + as an infix operator with priority 355 and which associates to the right corresponding to applying term plus'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mult'.
Hypothesis Hpp' : ∀a bR, a + b = a + b
Hypothesis Hmm' : ∀a bR, a * b = a b
Hypothesis Hll' : ∀a bR, leq a b leq' a b
Axiom. (explicit_OrderedField_repindep) We take the following as an axiom:
explicit_OrderedField R zero one plus mult leq explicit_OrderedField R zero one plus' mult' leq'
End of Section explicit_OrderedField_RepIndep2
Axiom. (OrderedFieldStruct_unpack_eq) We take the following as an axiom:
∀R, ∀plus mult : setsetset, ∀leq : setsetprop, ∀zero one, unpack_b_b_r_e_e_o (pack_b_b_r_e_e R plus mult leq zero one) (λR plus mult leq zero one ⇒ explicit_OrderedField R zero one plus mult leq) = explicit_OrderedField R zero one plus mult leq
Definition. We define RealsStruct to be λR ⇒ struct_b_b_r_e_e R unpack_b_b_r_e_e_o R (λR plus mult leq zero one ⇒ explicit_Reals R zero one plus mult leq) of type setprop.
Beginning of Section explicit_Reals_RepIndep2
Variable R : set
Variable zero one : set
Variable plus mult : setsetset
Variable leq : setsetprop
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term plus.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term mult.
Variable plus' mult' : setsetset
Variable leq' : setsetprop
Notation. We use + as an infix operator with priority 355 and which associates to the right corresponding to applying term plus'.
Notation. We use as an infix operator with priority 355 and which associates to the right corresponding to applying term mult'.
Hypothesis Hpp' : ∀a bR, a + b = a + b
Hypothesis Hmm' : ∀a bR, a * b = a b
Hypothesis Hll' : ∀a bR, leq a b leq' a b
Axiom. (explicit_Reals_repindep) We take the following as an axiom:
explicit_Reals R zero one plus mult leq explicit_Reals R zero one plus' mult' leq'
End of Section explicit_Reals_RepIndep2
Axiom. (RealsStruct_unpack_eq) We take the following as an axiom:
∀R, ∀plus mult : setsetset, ∀leq : setsetprop, ∀zero one, unpack_b_b_r_e_e_o (pack_b_b_r_e_e R plus mult leq zero one) (λR plus mult leq zero one ⇒ explicit_Reals R zero one plus mult leq) = explicit_Reals R zero one plus mult leq
Definition. We define RealsStruct_carrier to be λRs ⇒ Rs 0 of type setset.
Definition. We define RealsStruct_plus to be λRs ⇒ decode_b (Rs 1) of type setsetsetset.
Definition. We define RealsStruct_mult to be λRs ⇒ decode_b (Rs 2) of type setsetsetset.
Definition. We define RealsStruct_leq to be λRs ⇒ decode_r (Rs 3) of type setsetsetprop.
Definition. We define RealsStruct_zero to be λRs ⇒ Rs 4 of type setset.
Definition. We define RealsStruct_one to be λRs ⇒ Rs 5 of type setset.
Primitive. The name Field_of_RealsStruct is a term of type setset.
Axiom. (Field_of_RealsStruct_0) We take the following as an axiom:
∀Rs, Field_of_RealsStruct Rs 0 = RealsStruct_carrier Rs
Axiom. (Field_of_RealsStruct_1) We take the following as an axiom:
∀Rs, ∀x yRealsStruct_carrier Rs, Field_of_RealsStruct Rs 1 x y = RealsStruct_plus Rs x y
Axiom. (Field_of_RealsStruct_2) We take the following as an axiom:
∀Rs, ∀x yRealsStruct_carrier Rs, Field_of_RealsStruct Rs 2 x y = RealsStruct_mult Rs x y
Axiom. (Field_of_RealsStruct_3) We take the following as an axiom:
∀Rs, Field_of_RealsStruct Rs 3 = RealsStruct_zero Rs
Axiom. (Field_of_RealsStruct_4) We take the following as an axiom:
∀Rs, Field_of_RealsStruct Rs 4 = RealsStruct_one Rs
Beginning of Section RealsStruct
Variable Rs : set
Hypothesis HRs : RealsStruct Rs
Let R : setRealsStruct_carrier Rs
Let zero : setRealsStruct_zero Rs
Let one : setRealsStruct_one Rs
Notation. We use + as an infix operator with priority 360 and which associates to the right corresponding to applying term RealsStruct_plus Rs.
Notation. We use * as an infix operator with priority 355 and which associates to the right corresponding to applying term RealsStruct_mult Rs.
Notation. We use as an infix operator with priority 490 and no associativity corresponding to applying term RealsStruct_leq Rs.
Axiom. (RealsStruct_eta) We take the following as an axiom:
Axiom. (RealsStruct_explicit_Reals) We take the following as an axiom:
Axiom. (Field_of_RealsStruct_is_CRing) We take the following as an axiom:
Definition. We define RealsStruct_lt to be λx y ⇒ x y x y of type setsetprop.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term RealsStruct_lt.
Axiom. (explicit_Field_of_RealsStruct) We take the following as an axiom:
Axiom. (explicit_OrderedField_of_RealsStruct) We take the following as an axiom:
Axiom. (RealsStruct_OrderedField) We take the following as an axiom:
Axiom. (Field_of_RealsStruct_1f) We take the following as an axiom:
(λx y : setField_of_RealsStruct Rs 1 x y) = RealsStruct_plus Rs
Axiom. (Field_of_RealsStruct_2f) We take the following as an axiom:
(λx y : setField_of_RealsStruct Rs 2 x y) = RealsStruct_mult Rs
Axiom. (explicit_Field_of_RealsStruct_2) We take the following as an axiom:
Axiom. (Field_Field_of_RealsStruct) We take the following as an axiom:
Axiom. (RealsStruct_zero_In) We take the following as an axiom:
zero R
Axiom. (RealsStruct_one_In) We take the following as an axiom:
one R
Axiom. (RealsStruct_plus_clos) We take the following as an axiom:
∀x yR, x + y R
Axiom. (RealsStruct_mult_clos) We take the following as an axiom:
∀x yR, x * y R
Axiom. (RealsStruct_plus_assoc) We take the following as an axiom:
∀x y zR, x + (y + z) = (x + y) + z
Axiom. (RealsStruct_plus_com) We take the following as an axiom:
∀x yR, x + y = y + x
Axiom. (RealsStruct_zero_L) We take the following as an axiom:
∀xR, zero + x = x
Axiom. (RealsStruct_mult_assoc) We take the following as an axiom:
∀x y zR, x * (y * z) = (x * y) * z
Axiom. (RealsStruct_mult_com) We take the following as an axiom:
∀x yR, x * y = y * x
Axiom. (RealsStruct_one_neq_zero) We take the following as an axiom:
one zero
Axiom. (RealsStruct_one_L) We take the following as an axiom:
∀xR, one * x = x
Axiom. (RealsStruct_distr_L) We take the following as an axiom:
∀x y zR, x * (y + z) = x * y + x * z
Axiom. (RealsStruct_leq_refl) We take the following as an axiom:
∀xR, x x
Axiom. (RealsStruct_leq_tra) We take the following as an axiom:
∀x y zR, x yy zx z
Axiom. (RealsStruct_leq_antisym) We take the following as an axiom:
∀x yR, x yy xx = y
Axiom. (RealsStruct_leq_linear) We take the following as an axiom:
∀x yR, x y y x
Axiom. (RealsStruct_leq_plus) We take the following as an axiom:
∀x y zR, x yx + z y + z
Axiom. (RealsStruct_lt_leq) We take the following as an axiom:
∀x yR, x < yx y
Axiom. (RealsStruct_lt_irref) We take the following as an axiom:
∀xR, ¬ (x < x)
Axiom. (RealsStruct_lt_leq_asym) We take the following as an axiom:
∀x yR, x < y¬ (y x)
Axiom. (RealsStruct_leq_lt_asym) We take the following as an axiom:
∀x yR, x y¬ (y < x)
Axiom. (RealsStruct_lt_asym) We take the following as an axiom:
∀x yR, x < y¬ (y < x)
Axiom. (RealsStruct_lt_leq_tra) We take the following as an axiom:
∀x y zR, x < yy zx < z
Axiom. (RealsStruct_leq_lt_tra) We take the following as an axiom:
∀x y zR, x yy < zx < z
Axiom. (RealsStruct_lt_tra) We take the following as an axiom:
∀x y zR, x < yy < zx < z
Axiom. (RealsStruct_lt_trich_impred) We take the following as an axiom:
∀x yR, ∀p : prop, (x < yp)(x = yp)(y < xp)p
Axiom. (RealsStruct_lt_trich) We take the following as an axiom:
∀x yR, x < y x = y y < x
Axiom. (RealsStruct_leq_lt_linear) We take the following as an axiom:
∀x yR, x y y < x
Notation. We use - as a prefix operator with priority 358 corresponding to applying term Field_minus (Field_of_RealsStruct Rs).
Axiom. (RealsStruct_minus_eq) We take the following as an axiom:
Axiom. (RealsStruct_minus_clos) We take the following as an axiom:
∀xR, - x R
Axiom. (RealsStruct_minus_R) We take the following as an axiom:
∀xR, x + - x = zero
Axiom. (RealsStruct_minus_L) We take the following as an axiom:
∀xR, - x + x = zero
Axiom. (RealsStruct_plus_cancelL) We take the following as an axiom:
∀x y zR, x + y = x + zy = z
Axiom. (RealsStruct_minus_eq2) We take the following as an axiom:
Axiom. (RealsStruct_plus_cancelR) We take the following as an axiom:
∀x y zR, x + z = y + zx = y
Axiom. (RealsStruct_minus_invol) We take the following as an axiom:
∀xR, - - x = x
Axiom. (RealsStruct_minus_one_In) We take the following as an axiom:
- one R
Axiom. (RealsStruct_zero_multR) We take the following as an axiom:
∀xR, x * zero = zero
Axiom. (RealsStruct_zero_multL) We take the following as an axiom:
∀xR, zero * x = zero
Axiom. (RealsStruct_minus_mult) We take the following as an axiom:
∀xR, - x = (- one) * x
Axiom. (RealsStruct_minus_one_square) We take the following as an axiom:
(- one) * (- one) = one
Axiom. (RealsStruct_minus_square) We take the following as an axiom:
∀xR, (- x) * (- x) = x * x
Axiom. (RealsStruct_minus_zero) We take the following as an axiom:
- zero = zero
Axiom. (RealsStruct_dist_R) We take the following as an axiom:
∀x y zR, (x + y) * z = x * z + y * z
Axiom. (RealsStruct_minus_plus_dist) We take the following as an axiom:
∀x yR, - (x + y) = - x + - y
Axiom. (RealsStruct_minus_mult_L) We take the following as an axiom:
∀x yR, (- x) * y = - (x * y)
Axiom. (RealsStruct_minus_mult_R) We take the following as an axiom:
∀x yR, x * (- y) = - (x * y)
Axiom. (RealsStruct_mult_zero_inv) We take the following as an axiom:
∀x yR, x * y = zerox = zero y = zero
Axiom. (RealsStruct_square_zero_inv) We take the following as an axiom:
∀xR, x * x = zerox = zero
Axiom. (RealsStruct_minus_leq) We take the following as an axiom:
∀x yR, x y- y - x
Axiom. (RealsStruct_square_nonneg) We take the following as an axiom:
∀xR, zero x * x
Axiom. (RealsStruct_sum_squares_nonneg) We take the following as an axiom:
∀x yR, zero x * x + y * y
Axiom. (RealsStruct_sum_nonneg_zero_inv) We take the following as an axiom:
∀x yR, zero xzero yx + y = zerox = zero y = zero
Axiom. (RealsStruct_sum_squares_zero_inv) We take the following as an axiom:
∀x yR, x * x + y * y = zerox = zero y = zero
Axiom. (RealsStruct_leq_zero_one) We take the following as an axiom:
zero one
Primitive. The name RealsStruct_N is a term of type set.
Let N ≝ RealsStruct_N
Axiom. (RealsStruct_Arch) We take the following as an axiom:
∀x yR, zero < xzero y∃nN, y n * x
Axiom. (RealsStruct_Compl) We take the following as an axiom:
∀a bRN, (∀nN, a n b n a n a (n + one) b (n + one) b n)∃xR, ∀nN, a n x x b n
Axiom. (RealsStruct_natOfOrderedField) We take the following as an axiom:
explicit_Nats N zero (λm ⇒ m + one)
Definition. We define RealsStruct_Npos to be {nN|n zero}.
Let Npos ≝ RealsStruct_Npos
Axiom. (RealsStruct_PosNats_natOfOrderedField) We take the following as an axiom:
explicit_Nats Npos one (λm ⇒ m + one)
Primitive. The name RealsStruct_Z is a term of type set.
Let Z ≝ RealsStruct_Z
Primitive. The name RealsStruct_Q is a term of type set.
Let Q ≝ RealsStruct_Q
Axiom. (RealsStruct_Npos_props) We take the following as an axiom:
∀p : prop, (Npos Rexplicit_Nats Npos one (λm ⇒ m + one)one Npos(∀mNpos, m + one one)(∀mNpos, ∀q : setprop, q one(∀nNpos, q (n + one))q m)(∀n mNpos, explicit_Nats_one_plus Npos one (λm ⇒ m + one) n m = n + m)(∀n mNpos, explicit_Nats_one_mult Npos one (λm ⇒ m + one) n m = n * m)(∀n mNpos, n + m Npos)(∀n mNpos, n * m Npos)p)p
Axiom. (RealsStruct_Npos_R) We take the following as an axiom:
Npos R
Axiom. (RealsStruct_one_Npos) We take the following as an axiom:
one Npos
Axiom. (RealsStruct_Z_props) We take the following as an axiom:
∀p : prop, ((∀nNpos, - n Z)zero ZNpos ZZ R(∀nZ, ∀q : prop, (- n Nposq)(n = zeroq)(n Nposq)q)one Z- one Z(∀mZ, - m Z)(∀n mZ, n + m Z)(∀n mZ, n * m Z)p)p
Axiom. (RealsStruct_neg_Z) We take the following as an axiom:
∀nNpos, - n Z
Axiom. (RealsStruct_zero_Z) We take the following as an axiom:
zero Z
Axiom. (RealsStruct_Npos_Z) We take the following as an axiom:
Npos Z
Axiom. (RealsStruct_Z_R) We take the following as an axiom:
Z R
Axiom. (RealsStruct_Q_props) We take the following as an axiom:
∀p : prop, (Q R(∀xQ, ∀q : prop, (x R∀nZ, ∀mNpos, m * x = nq)q)(∀xR, ∀nZ, ∀mNpos, m * x = nx Q)p)p
Axiom. (RealsStruct_Q_R) We take the following as an axiom:
Q R
Axiom. (RealsStruct_Z_Q) We take the following as an axiom:
Z Q
Notation. We use :/: as an infix operator with priority 353 and no associativity corresponding to applying term Field_div (Field_of_RealsStruct Rs).
Axiom. (RealsStruct_div_clos) We take the following as an axiom:
∀xR, ∀yR {zero}, x :/: y R
Axiom. (RealsStruct_mult_div) We take the following as an axiom:
∀xR, ∀yR {zero}, x = y * (x :/: y)
Axiom. (RealsStruct_div_undef1) We take the following as an axiom:
∀x y, x Rx :/: y = 0
Axiom. (RealsStruct_div_undef2) We take the following as an axiom:
∀x y, y Rx :/: y = 0
Axiom. (RealsStruct_div_undef3) We take the following as an axiom:
∀x, x :/: zero = 0
Notation. We use ^ as an infix operator with priority 342 and which associates to the right corresponding to applying term CRing_omega_exp (Field_of_RealsStruct Rs).
Axiom. (RealsStruct_omega_exp_0) We take the following as an axiom:
∀x, x ^ 0 = one
Axiom. (RealsStruct_omega_exp_S) We take the following as an axiom:
∀x, ∀nomega, x ^ (ordsucc n) = x * x ^ n
Axiom. (RealsStruct_omega_exp_1) We take the following as an axiom:
∀xR, x ^ 1 = x
Axiom. (RealsStruct_omega_exp_clos) We take the following as an axiom:
∀xR, ∀nomega, x ^ n R
Primitive. The name RealsStruct_abs is a term of type setset.
Axiom. (RealsStruct_abs_clos) We take the following as an axiom:
Axiom. (RealsStruct_abs_nonneg_case) We take the following as an axiom:
∀xR, zero xRealsStruct_abs x = x
Axiom. (RealsStruct_abs_neg_case) We take the following as an axiom:
∀xR, x < zeroRealsStruct_abs x = - x
Axiom. (RealsStruct_abs_nonneg) We take the following as an axiom:
Axiom. (RealsStruct_abs_zero_inv) We take the following as an axiom:
∀xR, RealsStruct_abs x = zerox = zero
Axiom. (RealsStruct_dist_zero_eq) We take the following as an axiom:
∀x yR, RealsStruct_abs (x + - y) = zerox = y
Definition. We define RealsStruct_divides to be λm n ⇒ ∃kNpos, m * k = n of type setsetprop.
Definition. We define RealsStruct_Primes to be {nN|one < n ∀mNpos, RealsStruct_divides m nm = one m = n}.
Definition. We define RealsStruct_coprime to be λm n ⇒ ∀kNpos, RealsStruct_divides k mRealsStruct_divides k nk = one of type setsetprop.
Let Qs ≝ pack_b_b_e_e Q (RealsStruct_plus Rs) (RealsStruct_mult Rs) zero one
Axiom. (Field_RealsStruct_Q) We take the following as an axiom:
Definition. We define RealsStruct_omega_embedding to be nat_primrec zero (λ_ r ⇒ r + one) of type setset.
Let emb : setsetRealsStruct_omega_embedding
Axiom. (RealsStruct_omega_embedding_N) We take the following as an axiom:
∀nomega, emb n N
End of Section RealsStruct
Beginning of Section MetaCat
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Definition. We define idT to be ∀X : set, Obj XHom X X (id X) of type prop.
Definition. We define compT to be ∀X Y Z : set, ∀f g : set, Obj XObj YObj ZHom X Y fHom Y Z gHom X Z (comp X Y Z g f) of type prop.
Definition. We define idL to be ∀X Y : set, ∀f : set, Obj XObj YHom X Y fcomp X X Y f (id X) = f of type prop.
Definition. We define idR to be ∀X Y : set, ∀f : set, Obj XObj YHom X Y fcomp X Y Y (id Y) f = f of type prop.
Definition. We define compAssoc to be ∀X Y Z W : set, ∀f g h : set, Obj XObj YObj ZObj WHom X Y fHom Y Z gHom Z W hcomp X Y W (comp Y Z W h g) f = comp X Z W h (comp X Y Z g f) of type prop.
Primitive. The name MetaCat is a term of type prop.
Axiom. (MetaCat_I) We take the following as an axiom:
idTcompT(∀X Y : set, ∀f : set, Obj XObj YHom X Y fcomp X X Y f (id X) = f)(∀X Y : set, ∀f : set, Obj XObj YHom X Y fcomp X Y Y (id Y) f = f)(∀X Y Z W : set, ∀f g h : set, Obj XObj YObj ZObj WHom X Y fHom Y Z gHom Z W hcomp X Y W (comp Y Z W h g) f = comp X Z W h (comp X Y Z g f))MetaCat
Axiom. (MetaCat_E) We take the following as an axiom:
MetaCat∀p : prop, (idTcompT(∀X Y : set, ∀f : set, Obj XObj YHom X Y fcomp X X Y f (id X) = f)(∀X Y : set, ∀f : set, Obj XObj YHom X Y fcomp X Y Y (id Y) f = f)(∀X Y Z W : set, ∀f g h : set, Obj XObj YObj ZObj WHom X Y fHom Y Z gHom Z W hcomp X Y W (comp Y Z W h g) f = comp X Z W h (comp X Y Z g f))p)p
End of Section MetaCat
Beginning of Section MetaCatOp
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Axiom. (MetaCatOp) We take the following as an axiom:
MetaCat Obj Hom id compMetaCat Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f)
End of Section MetaCatOp
Beginning of Section LimsCoLims
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Definition. We define monic to be λX Y f ⇒ Obj X Obj Y Hom X Y f ∀Z : set, Obj Z∀g h : set, Hom Z X gHom Z X hcomp Z X Y f g = comp Z X Y f hg = h of type setsetsetprop.
Definition. We define terminal_p to be λY h ⇒ Obj Y ∀X : set, Obj XHom X Y (h X) ∀h' : set, Hom X Y h'h' = h X of type set(setset)prop.
Definition. We define initial_p to be λY h ⇒ Obj Y ∀X : set, Obj XHom Y X (h X) ∀h' : set, Hom Y X h'h' = h X of type set(setset)prop.
Definition. We define product_p to be λX Y Z pi0 pi1 pair ⇒ Obj X Obj Y Obj Z Hom Z X pi0 Hom Z Y pi1 ∀W : set, Obj W∀h k : set, Hom W X hHom W Y kHom W Z (pair W h k) comp W Z X pi0 (pair W h k) = h comp W Z Y pi1 (pair W h k) = k ∀u : set, Hom W Z ucomp W Z X pi0 u = hcomp W Z Y pi1 u = ku = pair W h k of type setsetsetsetset(setsetsetset)prop.
Definition. We define product_constr_p to be λprod pi0 pi1 pair ⇒ ∀X Y : set, Obj XObj Yproduct_p X Y (prod X Y) (pi0 X Y) (pi1 X Y) (pair X Y) of type (setsetset)(setsetset)(setsetset)(setsetsetsetsetset)prop.
Definition. We define coproduct_p to be λX Y Z i0 i1 comb ⇒ Obj X Obj Y Obj Z Hom X Z i0 Hom Y Z i1 ∀W : set, Obj W∀h k : set, Hom X W hHom Y W kHom Z W (comb W h k) comp X Z W (comb W h k) i0 = h comp Y Z W (comb W h k) i1 = k ∀hk : set, Hom Z W hkcomp X Z W hk i0 = hcomp Y Z W hk i1 = khk = comb W h k of type setsetsetsetset(setsetsetset)prop.
Definition. We define coproduct_constr_p to be λcoprod i0 i1 copair ⇒ ∀X Y : set, Obj XObj Ycoproduct_p X Y (coprod X Y) (i0 X Y) (i1 X Y) (copair X Y) of type (setsetset)(setsetset)(setsetset)(setsetsetsetsetset)prop.
Definition. We define equalizer_p to be λX Y f g Q q fac ⇒ Obj X Obj Y Hom X Y f Hom X Y g Obj Q Hom Q X q comp Q X Y f q = comp Q X Y g q ∀W : set, Obj W∀h : set, Hom W X hcomp W X Y f h = comp W X Y g hHom W Q (fac W h) comp W Q X q (fac W h) = h ∀u : set, Hom W Q ucomp W Q X q u = hu = fac W h of type setsetsetsetsetset(setsetset)prop.
Definition. We define equalizer_constr_p to be λquot canonmap fac ⇒ ∀X Y : set, Obj XObj Y∀f g : set, Hom X Y fHom X Y gequalizer_p X Y f g (quot X Y f g) (canonmap X Y f g) (fac X Y f g) of type (setsetsetsetset)(setsetsetsetset)(setsetsetsetsetsetset)prop.
Definition. We define coequalizer_p to be λX Y f g Q q fac ⇒ Obj X Obj Y Hom X Y f Hom X Y g Obj Q Hom Y Q q comp X Y Q q f = comp X Y Q q g ∀W : set, Obj W∀h : set, Hom Y W hcomp X Y W h f = comp X Y W h gHom Q W (fac W h) comp Y Q W (fac W h) q = h ∀u : set, Hom Q W ucomp Y Q W u q = hu = fac W h of type setsetsetsetsetset(setsetset)prop.
Definition. We define coequalizer_constr_p to be λquot canonmap fac ⇒ ∀X Y : set, Obj XObj Y∀f g : set, Hom X Y fHom X Y gcoequalizer_p X Y f g (quot X Y f g) (canonmap X Y f g) (fac X Y f g) of type (setsetsetsetset)(setsetsetsetset)(setsetsetsetsetsetset)prop.
Definition. We define pullback_p to be λX Y Z f g P pi0 pi1 pair ⇒ Obj X Obj Y Obj Z Hom X Z f Hom Y Z g Obj P Hom P X pi0 Hom P Y pi1 comp P X Z f pi0 = comp P Y Z g pi1 ∀W : set, Obj W∀h : set, Hom W X h∀k : set, Hom W Y kcomp W X Z f h = comp W Y Z g kHom W P (pair W h k) comp W P X pi0 (pair W h k) = h comp W P Y pi1 (pair W h k) = k ∀u : set, Hom W P ucomp W P X pi0 u = hcomp W P Y pi1 u = ku = pair W h k of type setsetsetsetsetsetsetset(setsetsetset)prop.
Definition. We define pullback_constr_p to be λpb pi0 pi1 pair ⇒ ∀X Y Z : set, Obj XObj YObj Z∀f g : set, Hom X Z fHom Y Z gpullback_p X Y Z f g (pb X Y Z f g) (pi0 X Y Z f g) (pi1 X Y Z f g) (pair X Y Z f g) of type (setsetsetsetsetset)(setsetsetsetsetset)(setsetsetsetsetset)(setsetsetsetsetsetsetsetset)prop.
Definition. We define pushout_p to be λX Y Z f g P i0 i1 copair ⇒ Obj X Obj Y Obj Z Hom Z X f Hom Z Y g Obj P Hom X P i0 Hom Y P i1 comp Z X P i0 f = comp Z Y P i1 g ∀W : set, Obj W∀h : set, Hom X W h∀k : set, Hom Y W kcomp Z X W h f = comp Z Y W k gHom P W (copair W h k) comp X P W (copair W h k) i0 = h comp Y P W (copair W h k) i1 = k ∀u : set, Hom P W ucomp X P W u i0 = hcomp Y P W u i1 = ku = copair W h k of type setsetsetsetsetsetsetset(setsetsetset)prop.
Definition. We define pushout_constr_p to be λpo i0 i1 copair ⇒ ∀X Y Z : set, Obj XObj YObj Z∀f g : set, Hom Z X fHom Z Y gpushout_p X Y Z f g (po X Y Z f g) (i0 X Y Z f g) (i1 X Y Z f g) (copair X Y Z f g) of type (setsetsetsetsetset)(setsetsetsetsetset)(setsetsetsetsetset)(setsetsetsetsetsetsetsetset)prop.
Definition. We define exponent_p to be λprod pi0 pi1 pair X Y Z a lm ⇒ Obj X Obj Y Obj Z Hom (prod Z X) Y a ∀W : set, Obj W∀f : set, Hom (prod W X) Y fHom W Z (lm W f) comp (prod W X) (prod Z X) Y a (pair Z X (prod W X) (comp (prod W X) W Z (lm W f) (pi0 W X)) (pi1 W X)) = f ∀g : set, Hom W Z gcomp (prod W X) (prod Z X) Y a (pair Z X (prod W X) (comp (prod W X) W Z g (pi0 W X)) (pi1 W X)) = fg = lm W f of type (setsetset)(setsetset)(setsetset)(setsetsetsetsetset)setsetsetset(setsetset)prop.
Definition. We define product_exponent_constr_p to be λprod pi0 pi1 pair exp a lm ⇒ product_constr_p prod pi0 pi1 pair ∀X Y : set, Obj XObj Yexponent_p prod pi0 pi1 pair X Y (exp X Y) (a X Y) (lm X Y) of type (setsetset)(setsetset)(setsetset)(setsetsetsetsetset)(setsetset)(setsetset)(setsetsetsetset)prop.
Definition. We define subobject_classifier_p to be λone uniqa Omega tru ch constr_p ⇒ terminal_p one uniqa Obj Omega Hom one Omega tru ∀X Y : set, ∀m : set, monic X Y mHom Y Omega (ch X Y m) pullback_p one Y Omega tru (ch X Y m) X (uniqa X) m (constr_p X Y m) of type set(setset)setset(setsetsetset)(setsetsetsetsetsetset)prop.
Definition. We define nno_p to be λone uniqa N zer suc rec ⇒ terminal_p one uniqa Obj N Hom one N zer Hom N N suc ∀X : set, ∀x : set, ∀f : set, Obj XHom one X xHom X X fHom N X (rec X x f) comp one N X (rec X x f) zer = x comp N N X (rec X x f) suc = comp N X X f (rec X x f) ∀u : set, Hom N X ucomp one N X u zer = xcomp N N X u suc = comp N X X f uu = rec X x f of type set(setset)setsetset(setsetsetset)prop.
End of Section LimsCoLims
Beginning of Section LimsCoLims2
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Axiom. (product_coproduct_Op) We take the following as an axiom:
∀X Y Z : set, ∀pi0 pi1 : set, ∀pair : setsetsetset, product_p Obj Hom id comp X Y Z pi0 pi1 paircoproduct_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) X Y Z pi0 pi1 pair
Axiom. (product_coproduct_constr_Op) We take the following as an axiom:
∀prod : setsetset, ∀pi0 pi1 : setsetset, ∀pair : setsetsetsetsetset, product_constr_p Obj Hom id comp prod pi0 pi1 paircoproduct_constr_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) prod pi0 pi1 pair
Axiom. (coproduct_product_Op) We take the following as an axiom:
∀X Y Z : set, ∀i0 i1 : set, ∀copair : setsetsetset, coproduct_p Obj Hom id comp X Y Z i0 i1 copairproduct_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) X Y Z i0 i1 copair
Axiom. (coproduct_product_constr_Op) We take the following as an axiom:
∀coprod : setsetset, ∀i0 i1 : setsetset, ∀copair : setsetsetsetsetset, coproduct_constr_p Obj Hom id comp coprod i0 i1 copairproduct_constr_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) coprod i0 i1 copair
Axiom. (equalizer_coequalizer_Op) We take the following as an axiom:
∀X Y : set, ∀f g : set, ∀Q : set, ∀q : set, ∀fac : setsetset, equalizer_p Obj Hom id comp X Y f g Q q faccoequalizer_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) Y X f g Q q fac
Axiom. (equalizer_coequalizer_constr_Op) We take the following as an axiom:
∀quot : setsetsetsetset, ∀canonmap : setsetsetsetset, ∀fac : setsetsetsetsetsetset, equalizer_constr_p Obj Hom id comp quot canonmap faccoequalizer_constr_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) (λX Y f g ⇒ quot Y X f g) (λX Y f g ⇒ canonmap Y X f g) (λX Y f g ⇒ fac Y X f g)
Axiom. (coequalizer_equalizer_Op) We take the following as an axiom:
∀X Y : set, ∀f g : set, ∀Q : set, ∀q : set, ∀fac : setsetset, coequalizer_p Obj Hom id comp X Y f g Q q facequalizer_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) Y X f g Q q fac
Axiom. (coequalizer_equalizer_constr_Op) We take the following as an axiom:
∀quot : setsetsetsetset, ∀canonmap : setsetsetsetset, ∀fac : setsetsetsetsetsetset, coequalizer_constr_p Obj Hom id comp quot canonmap facequalizer_constr_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) (λX Y f g ⇒ quot Y X f g) (λX Y f g ⇒ canonmap Y X f g) (λX Y f g ⇒ fac Y X f g)
Axiom. (pullback_pushout_Op) We take the following as an axiom:
∀X Y Z : set, ∀f g : set, ∀P : set, ∀pi0 pi1 : set, ∀pair : setsetsetset, pullback_p Obj Hom id comp X Y Z f g P pi0 pi1 pairpushout_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) X Y Z f g P pi0 pi1 pair
Axiom. (pullback_pushout_constr_Op) We take the following as an axiom:
∀pb : setsetsetsetsetset, ∀pi0 pi1 : setsetsetsetsetset, ∀pair : setsetsetsetsetsetsetsetset, pullback_constr_p Obj Hom id comp pb pi0 pi1 pairpushout_constr_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) pb pi0 pi1 pair
Axiom. (pushout_pullback_Op) We take the following as an axiom:
∀X Y Z : set, ∀f g : set, ∀P : set, ∀i0 i1 : set, ∀copair : setsetsetset, pushout_p Obj Hom id comp X Y Z f g P i0 i1 copairpullback_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) X Y Z f g P i0 i1 copair
Axiom. (pushout_pullback_constr_Op) We take the following as an axiom:
∀po : setsetsetsetsetset, ∀i0 i1 : setsetsetsetsetset, ∀copair : setsetsetsetsetsetsetsetset, pushout_constr_p Obj Hom id comp po i0 i1 copairpullback_constr_p Obj (λX Y ⇒ Hom Y X) id (λX Y Z f g ⇒ comp Z Y X g f) po i0 i1 copair
Axiom. (product_equalizer_pullback_constr) We take the following as an axiom:
MetaCat Obj Hom id comp∀quot : setsetsetsetset, ∀canonmap : setsetsetsetset, ∀fac : setsetsetsetsetsetset, equalizer_constr_p Obj Hom id comp quot canonmap fac∀prod : setsetset, ∀pi0 : setsetset, ∀pi1 : setsetset, ∀pair : setsetsetsetsetset, product_constr_p Obj Hom id comp prod pi0 pi1 pairpullback_constr_p Obj Hom id comp (λX Y Z f g ⇒ quot (prod X Y) Z (comp (prod X Y) X Z f (pi0 X Y)) (comp (prod X Y) Y Z g (pi1 X Y))) (λX Y Z f g ⇒ comp (quot (prod X Y) Z (comp (prod X Y) X Z f (pi0 X Y)) (comp (prod X Y) Y Z g (pi1 X Y))) (prod X Y) X (pi0 X Y) (canonmap (prod X Y) Z (comp (prod X Y) X Z f (pi0 X Y)) (comp (prod X Y) Y Z g (pi1 X Y)))) (λX Y Z f g ⇒ comp (quot (prod X Y) Z (comp (prod X Y) X Z f (pi0 X Y)) (comp (prod X Y) Y Z g (pi1 X Y))) (prod X Y) Y (pi1 X Y) (canonmap (prod X Y) Z (comp (prod X Y) X Z f (pi0 X Y)) (comp (prod X Y) Y Z g (pi1 X Y)))) (λX Y Z f g W h k ⇒ fac (prod X Y) Z (comp (prod X Y) X Z f (pi0 X Y)) (comp (prod X Y) Y Z g (pi1 X Y)) W (pair X Y W h k))
Axiom. (product_equalizer_pullback_constr_ex) We take the following as an axiom:
MetaCat Obj Hom id comp(∃quot : setsetsetsetset, ∃canonmap : setsetsetsetset, ∃fac : setsetsetsetsetsetset, equalizer_constr_p Obj Hom id comp quot canonmap fac)(∃prod : setsetset, ∃pi0 : setsetset, ∃pi1 : setsetset, ∃pair : setsetsetsetsetset, product_constr_p Obj Hom id comp prod pi0 pi1 pair)∃pb : setsetsetsetsetset, ∃pi0 : setsetsetsetsetset, ∃pi1 : setsetsetsetsetset, ∃pair : setsetsetsetsetsetsetsetset, pullback_constr_p Obj Hom id comp pb pi0 pi1 pair
End of Section LimsCoLims2
Beginning of Section LimsCoLims3
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Axiom. (coproduct_coequalizer_pushout_constr_ex) We take the following as an axiom:
MetaCat Obj Hom id comp(∃quot : setsetsetsetset, ∃canonmap : setsetsetsetset, ∃fac : setsetsetsetsetsetset, coequalizer_constr_p Obj Hom id comp quot canonmap fac)(∃coprod : setsetset, ∃i0 : setsetset, ∃i1 : setsetset, ∃copair : setsetsetsetsetset, coproduct_constr_p Obj Hom id comp coprod i0 i1 copair)∃po : setsetsetsetsetset, ∃i0 : setsetsetsetsetset, ∃i1 : setsetsetsetsetset, ∃copair : setsetsetsetsetsetsetsetset, pushout_constr_p Obj Hom id comp po i0 i1 copair
End of Section LimsCoLims3
Definition. We define SetHom to be λX Y f ⇒ f YX of type setsetsetprop.
Beginning of Section MetaFunctor
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Variable Obj' : setprop
Variable Hom' : setsetsetprop
Variable id' : setset
Variable comp' : setsetsetsetsetset
Variable F0 : setset
Variable F1 : setsetsetset
Primitive. The name MetaFunctor is a term of type prop.
Axiom. (MetaFunctorI) We take the following as an axiom:
(∀X, Obj XObj' (F0 X))(∀X Y f, Obj XObj YHom X Y fHom' (F0 X) (F0 Y) (F1 X Y f))(∀X, Obj XF1 X X (id X) = id' (F0 X))(∀X Y Z f g, Obj XObj YObj ZHom X Y fHom Y Z gF1 X Z (comp X Y Z g f) = comp' (F0 X) (F0 Y) (F0 Z) (F1 Y Z g) (F1 X Y f))MetaFunctor
Axiom. (MetaFunctorE) We take the following as an axiom:
MetaFunctor∀p : prop, ((∀X, Obj XObj' (F0 X))(∀X Y f, Obj XObj YHom X Y fHom' (F0 X) (F0 Y) (F1 X Y f))(∀X, Obj XF1 X X (id X) = id' (F0 X))(∀X Y Z f g, Obj XObj YObj ZHom X Y fHom Y Z gF1 X Z (comp X Y Z g f) = comp' (F0 X) (F0 Y) (F0 Z) (F1 Y Z g) (F1 X Y f))p)p
Primitive. The name MetaFunctor_strict is a term of type prop.
Axiom. (MetaFunctor_strict_I) We take the following as an axiom:
MetaCat Obj Hom id compMetaCat Obj' Hom' id' comp'MetaFunctorMetaFunctor_strict
Axiom. (MetaFunctor_strict_E) We take the following as an axiom:
MetaFunctor_strict∀p : prop, (MetaCat Obj Hom id compMetaCat Obj' Hom' id' comp'MetaFunctorp)p
End of Section MetaFunctor
Beginning of Section IdFunctor
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Axiom. (MetaCat_IdFunctor) We take the following as an axiom:
MetaFunctor Obj Hom id comp Obj Hom id comp (λX ⇒ X) (λX Y f ⇒ f)
Axiom. (MetaCat_IdFunctor_strict) We take the following as an axiom:
MetaCat Obj Hom id compMetaFunctor_strict Obj Hom id comp Obj Hom id comp (λX ⇒ X) (λX Y f ⇒ f)
End of Section IdFunctor
Beginning of Section CompFunctors
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Variable Obj' : setprop
Variable Hom' : setsetsetprop
Variable id' : setset
Variable comp' : setsetsetsetsetset
Variable Obj'' : setprop
Variable Hom'' : setsetsetprop
Variable id'' : setset
Variable comp'' : setsetsetsetsetset
Variable F0 : setset
Variable F1 : setsetsetset
Variable G0 : setset
Variable G1 : setsetsetset
Axiom. (MetaCat_CompFunctors) We take the following as an axiom:
MetaFunctor Obj Hom id comp Obj' Hom' id' comp' F0 F1MetaFunctor Obj' Hom' id' comp' Obj'' Hom'' id'' comp'' G0 G1MetaFunctor Obj Hom id comp Obj'' Hom'' id'' comp'' (λX ⇒ G0 (F0 X)) (λX Y f ⇒ G1 (F0 X) (F0 Y) (F1 X Y f))
Axiom. (MetaCat_CompFunctors_strict) We take the following as an axiom:
MetaFunctor_strict Obj Hom id comp Obj' Hom' id' comp' F0 F1MetaFunctor_strict Obj' Hom' id' comp' Obj'' Hom'' id'' comp'' G0 G1MetaFunctor_strict Obj Hom id comp Obj'' Hom'' id'' comp'' (λX ⇒ G0 (F0 X)) (λX Y f ⇒ G1 (F0 X) (F0 Y) (F1 X Y f))
End of Section CompFunctors
Beginning of Section MetaNatTrans
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Variable Obj' : setprop
Variable Hom' : setsetsetprop
Variable id' : setset
Variable comp' : setsetsetsetsetset
Variable F0 : setset
Variable F1 : setsetsetset
Variable G0 : setset
Variable G1 : setsetsetset
Variable eta : setset
Primitive. The name MetaNatTrans is a term of type prop.
Axiom. (MetaNatTransI) We take the following as an axiom:
(∀X, Obj XHom' (F0 X) (G0 X) (eta X))(∀X Y f, Obj XObj YHom X Y fcomp' (F0 X) (G0 X) (G0 Y) (G1 X Y f) (eta X) = comp' (F0 X) (F0 Y) (G0 Y) (eta Y) (F1 X Y f))MetaNatTrans
Axiom. (MetaNatTransE) We take the following as an axiom:
MetaNatTrans∀p : prop, ((∀X, Obj XHom' (F0 X) (G0 X) (eta X))(∀X Y f, Obj XObj YHom X Y fcomp' (F0 X) (G0 X) (G0 Y) (G1 X Y f) (eta X) = comp' (F0 X) (F0 Y) (G0 Y) (eta Y) (F1 X Y f))p)p
Primitive. The name MetaNatTrans_strict is a term of type prop.
Axiom. (MetaNatTrans_strict_I) We take the following as an axiom:
MetaCat Obj Hom id compMetaCat Obj' Hom' id' comp'MetaFunctor Obj Hom id comp Obj' Hom' id' comp' F0 F1MetaFunctor Obj Hom id comp Obj' Hom' id' comp' G0 G1MetaNatTransMetaNatTrans_strict
Axiom. (MetaNatTrans_strict_E) We take the following as an axiom:
MetaNatTrans_strict∀p : prop, (MetaCat Obj Hom id compMetaCat Obj' Hom' id' comp'MetaFunctor Obj Hom id comp Obj' Hom' id' comp' F0 F1MetaFunctor Obj Hom id comp Obj' Hom' id' comp' G0 G1MetaNatTransp)p
End of Section MetaNatTrans
Beginning of Section CompFunctorNatTrans
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Variable Obj' : setprop
Variable Hom' : setsetsetprop
Variable id' : setset
Variable comp' : setsetsetsetsetset
Variable Obj'' : setprop
Variable Hom'' : setsetsetprop
Variable id'' : setset
Variable comp'' : setsetsetsetsetset
Variable F0 : setset
Variable F1 : setsetsetset
Variable G0 : setset
Variable G1 : setsetsetset
Variable H0 : setset
Variable H1 : setsetsetset
Variable eta : setset
Axiom. (MetaCat_CompFunctorNatTrans) We take the following as an axiom:
MetaFunctor Obj Hom id comp Obj' Hom' id' comp' F0 F1MetaFunctor Obj Hom id comp Obj' Hom' id' comp' G0 G1MetaNatTrans Obj Hom id comp Obj' Hom' id' comp' F0 F1 G0 G1 etaMetaFunctor Obj' Hom' id' comp' Obj'' Hom'' id'' comp'' H0 H1MetaNatTrans Obj Hom id comp Obj'' Hom'' id'' comp'' (λX ⇒ H0 (F0 X)) (λX Y f ⇒ H1 (F0 X) (F0 Y) (F1 X Y f)) (λX ⇒ H0 (G0 X)) (λX Y f ⇒ H1 (G0 X) (G0 Y) (G1 X Y f)) (λX ⇒ H1 (F0 X) (G0 X) (eta X))
End of Section CompFunctorNatTrans
Beginning of Section CompNatTransFunctor
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Variable Obj' : setprop
Variable Hom' : setsetsetprop
Variable id' : setset
Variable comp' : setsetsetsetsetset
Variable Obj'' : setprop
Variable Hom'' : setsetsetprop
Variable id'' : setset
Variable comp'' : setsetsetsetsetset
Variable F0 : setset
Variable F1 : setsetsetset
Variable G0 : setset
Variable G1 : setsetsetset
Variable H0 : setset
Variable H1 : setsetsetset
Variable eta : setset
Axiom. (MetaCat_CompNatTransFunctor) We take the following as an axiom:
MetaNatTrans Obj' Hom' id' comp' Obj'' Hom'' id'' comp'' F0 F1 G0 G1 etaMetaFunctor Obj Hom id comp Obj' Hom' id' comp' H0 H1MetaNatTrans Obj Hom id comp Obj'' Hom'' id'' comp'' (λX ⇒ F0 (H0 X)) (λX Y f ⇒ F1 (H0 X) (H0 Y) (H1 X Y f)) (λX ⇒ G0 (H0 X)) (λX Y f ⇒ G1 (H0 X) (H0 Y) (H1 X Y f)) (λX ⇒ eta (H0 X))
End of Section CompNatTransFunctor
Beginning of Section MetaMonad
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Variable T0 : setset
Variable T1 : setsetsetset
Variable eta : setset
Variable mu : setset
Primitive. The name MetaMonad is a term of type prop.
Primitive. The name MetaMonad_strict is a term of type prop.
Axiom. (MetaMonadI) We take the following as an axiom:
(∀X, Obj Xcomp (T0 (T0 (T0 X))) (T0 (T0 X)) (T0 X) (mu X) (T1 (T0 (T0 X)) (T0 X) (mu X)) = comp (T0 (T0 (T0 X))) (T0 (T0 X)) (T0 X) (mu X) (mu (T0 X)))(∀X, Obj Xcomp (T0 X) (T0 (T0 X)) (T0 X) (mu X) (eta (T0 X)) = id (T0 X))(∀X, Obj Xcomp (T0 X) (T0 (T0 X)) (T0 X) (mu X) (T1 X (T0 X) (eta X)) = id (T0 X))MetaMonad
Axiom. (MetaMonadE) We take the following as an axiom:
MetaMonad(∀p : prop, ((∀X, Obj Xcomp (T0 (T0 (T0 X))) (T0 (T0 X)) (T0 X) (mu X) (T1 (T0 (T0 X)) (T0 X) (mu X)) = comp (T0 (T0 (T0 X))) (T0 (T0 X)) (T0 X) (mu X) (mu (T0 X)))(∀X, Obj Xcomp (T0 X) (T0 (T0 X)) (T0 X) (mu X) (eta (T0 X)) = id (T0 X))(∀X, Obj Xcomp (T0 X) (T0 (T0 X)) (T0 X) (mu X) (T1 X (T0 X) (eta X)) = id (T0 X))p)p)
Axiom. (MetaMonad_strict_I) We take the following as an axiom:
MetaNatTrans_strict Obj Hom id comp Obj Hom id comp (λX ⇒ X) (λX Y f ⇒ f) T0 T1 etaMetaNatTrans_strict Obj Hom id comp Obj Hom id comp (λX ⇒ T0 (T0 X)) (λX Y f ⇒ T1 (T0 X) (T0 Y) (T1 X Y f)) T0 T1 muMetaMonadMetaMonad_strict
Axiom. (MetaMonad_strict_E) We take the following as an axiom:
MetaMonad_strict∀p : prop, (MetaNatTrans_strict Obj Hom id comp Obj Hom id comp (λX ⇒ X) (λX Y f ⇒ f) T0 T1 etaMetaNatTrans_strict Obj Hom id comp Obj Hom id comp (λX ⇒ T0 (T0 X)) (λX Y f ⇒ T1 (T0 X) (T0 Y) (T1 X Y f)) T0 T1 muMetaMonadp)p
End of Section MetaMonad
Beginning of Section MetaAdjunction
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
Variable Obj' : setprop
Variable Hom' : setsetsetprop
Variable id' : setset
Variable comp' : setsetsetsetsetset
Variable F0 : setset
Variable F1 : setsetsetset
Variable G0 : setset
Variable G1 : setsetsetset
Variable eta : setset
Variable eps : setset
Primitive. The name MetaAdjunction is a term of type prop.
Primitive. The name MetaAdjunction_strict is a term of type prop.
Axiom. (MetaAdjunctionI) We take the following as an axiom:
(∀X, Obj Xcomp' (F0 X) (F0 (G0 (F0 X))) (F0 X) (eps (F0 X)) (F1 X (G0 (F0 X)) (eta X)) = id' (F0 X))(∀Y, Obj' Ycomp (G0 Y) (G0 (F0 (G0 Y))) (G0 Y) (G1 (F0 (G0 Y)) Y (eps Y)) (eta (G0 Y)) = id (G0 Y))MetaAdjunction
Axiom. (MetaAdjunctionE) We take the following as an axiom:
MetaAdjunction∀p : prop, ((∀X, Obj Xcomp' (F0 X) (F0 (G0 (F0 X))) (F0 X) (eps (F0 X)) (F1 X (G0 (F0 X)) (eta X)) = id' (F0 X))(∀Y, Obj' Ycomp (G0 Y) (G0 (F0 (G0 Y))) (G0 Y) (G1 (F0 (G0 Y)) Y (eps Y)) (eta (G0 Y)) = id (G0 Y))p)p
Axiom. (MetaAdjunction_strict_I) We take the following as an axiom:
MetaFunctor_strict Obj Hom id comp Obj' Hom' id' comp' F0 F1MetaFunctor Obj' Hom' id' comp' Obj Hom id comp G0 G1MetaNatTrans Obj Hom id comp Obj Hom id comp (λX ⇒ X) (λX Y f ⇒ f) (λX ⇒ G0 (F0 X)) (λX Y f ⇒ G1 (F0 X) (F0 Y) (F1 X Y f)) etaMetaNatTrans Obj' Hom' id' comp' Obj' Hom' id' comp' (λY ⇒ F0 (G0 Y)) (λX Y g ⇒ F1 (G0 X) (G0 Y) (G1 X Y g)) (λY ⇒ Y) (λX Y g ⇒ g) epsMetaAdjunctionMetaAdjunction_strict
Axiom. (MetaAdjunction_strict_E) We take the following as an axiom:
MetaAdjunction_strict∀p : prop, (MetaFunctor_strict Obj Hom id comp Obj' Hom' id' comp' F0 F1MetaFunctor Obj' Hom' id' comp' Obj Hom id comp G0 G1MetaNatTrans Obj Hom id comp Obj Hom id comp (λX ⇒ X) (λX Y f ⇒ f) (λX ⇒ G0 (F0 X)) (λX Y f ⇒ G1 (F0 X) (F0 Y) (F1 X Y f)) etaMetaNatTrans Obj' Hom' id' comp' Obj' Hom' id' comp' (λY ⇒ F0 (G0 Y)) (λX Y g ⇒ F1 (G0 X) (G0 Y) (G1 X Y g)) (λY ⇒ Y) (λX Y g ⇒ g) epsMetaAdjunctionp)p
Axiom. (MetaAdjunctionMonad) We take the following as an axiom:
MetaFunctor Obj Hom id comp Obj' Hom' id' comp' F0 F1MetaFunctor Obj' Hom' id' comp' Obj Hom id comp G0 G1MetaNatTrans Obj Hom id comp Obj Hom id comp (λX ⇒ X) (λX Y f ⇒ f) (λX ⇒ G0 (F0 X)) (λX Y f ⇒ G1 (F0 X) (F0 Y) (F1 X Y f)) etaMetaNatTrans Obj' Hom' id' comp' Obj' Hom' id' comp' (λY ⇒ F0 (G0 Y)) (λX Y g ⇒ F1 (G0 X) (G0 Y) (G1 X Y g)) (λY ⇒ Y) (λX Y g ⇒ g) epsMetaAdjunctionMetaMonad Obj Hom id comp (λX ⇒ G0 (F0 X)) (λX Y f ⇒ G1 (F0 X) (F0 Y) (F1 X Y f)) eta (λX ⇒ G1 (F0 (G0 (F0 X))) (F0 X) (eps (F0 X)))
Axiom. (MetaAdjunctionMonad_strict) We take the following as an axiom:
MetaAdjunction_strictMetaMonad_strict Obj Hom id comp (λX ⇒ G0 (F0 X)) (λX Y f ⇒ G1 (F0 X) (F0 Y) (F1 X Y f)) eta (λX ⇒ G1 (F0 (G0 (F0 X))) (F0 X) (eps (F0 X)))
End of Section MetaAdjunction
Beginning of Section MetaCatConcrete
Variable Obj : setprop
Variable U : setset
Variable Hom : setsetsetprop
Axiom. (MetaCatConcrete) We take the following as an axiom:
(∀X Y f, Obj XObj YHom X Y ff U YU X)(∀X, Obj XHom X X (lam_id (U X)))(∀X Y Z f g, Obj XObj YObj ZHom X Y fHom Y Z gHom X Z (lam_comp (U X) g f))MetaCat Obj Hom (λX ⇒ lam_id (U X)) (λX Y Z g f ⇒ lam_comp (U X) g f)
Axiom. (MetaCatConcreteForgetful) We take the following as an axiom:
(∀X Y f, Obj XObj YHom X Y ff U YU X)MetaFunctor Obj Hom (λX ⇒ lam_id (U X)) (λX Y Z f g ⇒ (lam_comp (U X) f g)) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) U (λX Y f ⇒ f)
End of Section MetaCatConcrete
Axiom. (MetaCatSet) We take the following as an axiom:
MetaCat (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z g f ⇒ lam_comp X g f)
Axiom. (MetaCatHFSet) We take the following as an axiom:
MetaCat (λX ⇒ X UnivOf Empty) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g))
Axiom. (MetaCatSmallSet) We take the following as an axiom:
MetaCat (λX ⇒ X UnivOf (UnivOf Empty)) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g))
Axiom. (MetaCatConcreteForgetful_strict) We take the following as an axiom:
∀Obj : setprop, ∀U : setset, ∀Hom : setsetsetprop, (∀X Y f, Obj XObj YHom X Y ff U YU X)(∀X, Obj XHom X X (lam_id (U X)))(∀X Y Z f g, Obj XObj YObj ZHom X Y fHom Y Z gHom X Z (lam_comp (U X) g f))MetaFunctor_strict Obj Hom (λX ⇒ lam_id (U X)) (λX Y Z f g ⇒ (lam_comp (U X) f g)) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) U (λX Y f ⇒ f)
Axiom. (MetaCatSet_initial_gen) We take the following as an axiom:
∀Obj : setprop, Obj 0∃Y : set, ∃uniqa : setset, initial_p Obj SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) Y uniqa
Axiom. (MetaCatSet_initial) We take the following as an axiom:
∃Y : set, ∃uniqa : setset, initial_p (λ_ ⇒ True) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) Y uniqa
Axiom. (MetaCatSet_terminal_gen) We take the following as an axiom:
∀Obj : setprop, Obj 1∃Y : set, ∃uniqa : setset, terminal_p Obj SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) Y uniqa
Axiom. (MetaCatSet_terminal) We take the following as an axiom:
∃Y : set, ∃uniqa : setset, terminal_p (λ_ ⇒ True) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) Y uniqa
Axiom. (MetaCatSet_coproduct_gen) We take the following as an axiom:
∀Obj : setprop, (∀X, Obj X∀Y, Obj YObj (setsum X Y))∃coprod : setsetset, ∃i0 i1 : setsetset, ∃copair : setsetsetsetsetset, coproduct_constr_p Obj SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) coprod i0 i1 copair
Axiom. (MetaCatSet_coproduct) We take the following as an axiom:
∃coprod : setsetset, ∃i0 i1 : setsetset, ∃copair : setsetsetsetsetset, coproduct_constr_p (λ_ ⇒ True) SetHom (λX ⇒ λx ∈ Xx) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) coprod i0 i1 copair
Axiom. (MetaCatSet_product_gen) We take the following as an axiom:
∀Obj : setprop, (∀X, Obj X∀Y, Obj YObj (setprod X Y))∃prod : setsetset, ∃pi0 pi1 : setsetset, ∃pair : setsetsetsetsetset, product_constr_p Obj SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) prod pi0 pi1 pair
Axiom. (MetaCatSet_product) We take the following as an axiom:
∃prod : setsetset, ∃pi0 pi1 : setsetset, ∃pair : setsetsetsetsetset, product_constr_p (λ_ ⇒ True) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) prod pi0 pi1 pair
Axiom. (UnivOf_Subq_closed) We take the following as an axiom:
∀N, ∀XUnivOf N, ∀QX, Q UnivOf N
Definition. We define famunion_closed to be λU : set∀XU, ∀F : setset, (∀xX, F x U)famunion X F U of type setprop.
Axiom. (Union_Repl_famunion_closed) We take the following as an axiom:
∀U : set, Union_closed URepl_closed Ufamunion_closed U
Axiom. (ZF_closed_0) We take the following as an axiom:
∀U X, TransSet UZF_closed UX U0 U
Axiom. (ZF_Inj1_closed) We take the following as an axiom:
∀U, TransSet UZF_closed U∀XU, Inj1 X U
Axiom. (ZF_Inj0_closed) We take the following as an axiom:
∀U, TransSet UZF_closed U∀XU, Inj0 X U
Axiom. (ZF_setsum_closed) We take the following as an axiom:
∀U, TransSet UZF_closed U∀X YU, (X + Y) U
Axiom. (ZF_Sigma_closed) We take the following as an axiom:
∀U, TransSet UZF_closed U∀XU, ∀Y : setset, (∀xX, Y x U)(xX, Y x) U
Axiom. (ZF_setprod_closed) We take the following as an axiom:
∀U, TransSet UZF_closed U∀X YU, (X Y) U
Axiom. (ZF_Pi_closed) We take the following as an axiom:
∀U, TransSet UZF_closed U∀XU, ∀Y : setset, (∀xX, Y x U)(xX, Y x) U
Axiom. (ZF_setexp_closed) We take the following as an axiom:
∀U, TransSet UZF_closed U∀X YU, (YX) U
Axiom. (MetaCatHFSet_initial) We take the following as an axiom:
∃Y : set, ∃uniqa : setset, initial_p (λX ⇒ X UnivOf Empty) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) Y uniqa
Axiom. (MetaCatSmallSet_initial) We take the following as an axiom:
∃Y : set, ∃uniqa : setset, initial_p (λX ⇒ X UnivOf (UnivOf Empty)) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) Y uniqa
Axiom. (MetaCatHFSet_terminal) We take the following as an axiom:
∃Y : set, ∃uniqa : setset, terminal_p (λX ⇒ X UnivOf Empty) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) Y uniqa
Axiom. (MetaCatSmallSet_terminal) We take the following as an axiom:
∃Y : set, ∃uniqa : setset, terminal_p (λX ⇒ X UnivOf (UnivOf Empty)) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) Y uniqa
Axiom. (MetaCatHFSet_coproduct) We take the following as an axiom:
∃coprod : setsetset, ∃i0 i1 : setsetset, ∃copair : setsetsetsetsetset, coproduct_constr_p (λX ⇒ X UnivOf Empty) SetHom (λX ⇒ λx ∈ Xx) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) coprod i0 i1 copair
Axiom. (MetaCatSmallSet_coproduct) We take the following as an axiom:
∃coprod : setsetset, ∃i0 i1 : setsetset, ∃copair : setsetsetsetsetset, coproduct_constr_p (λX ⇒ X UnivOf (UnivOf Empty)) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) coprod i0 i1 copair
Axiom. (MetaCatHFSet_product) We take the following as an axiom:
∃prod : setsetset, ∃pi0 pi1 : setsetset, ∃pair : setsetsetsetsetset, product_constr_p (λX ⇒ X UnivOf Empty) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) prod pi0 pi1 pair
Axiom. (MetaCatSmallSet_product) We take the following as an axiom:
∃prod : setsetset, ∃pi0 pi1 : setsetset, ∃pair : setsetsetsetsetset, product_constr_p (λX ⇒ X UnivOf (UnivOf Empty)) SetHom (λX ⇒ (λx ∈ Xx)) (λX Y Z f g ⇒ (λx ∈ Xf (g x))) prod pi0 pi1 pair
Primitive. The name Hom_struct_e is a term of type setsetsetprop.
Primitive. The name Hom_struct_u is a term of type setsetsetprop.
Primitive. The name Hom_struct_b is a term of type setsetsetprop.
Primitive. The name Hom_struct_p is a term of type setsetsetprop.
Primitive. The name Hom_struct_r is a term of type setsetsetprop.
Primitive. The name Hom_struct_c is a term of type setsetsetprop.
Primitive. The name Hom_struct_b_b_e is a term of type setsetsetprop.
Primitive. The name Hom_struct_b_b_e_e is a term of type setsetsetprop.
Primitive. The name Hom_struct_b_b_r_e_e is a term of type setsetsetprop.
Axiom. (Hom_struct_e_pack) We take the following as an axiom:
∀X Y eX eY f, (Hom_struct_e (pack_e X eX) (pack_e Y eY) f) = (f YX f eX = eY)
Axiom. (Hom_struct_u_pack) We take the following as an axiom:
∀X Y, ∀opX opY : setset, ∀f, (Hom_struct_u (pack_u X opX) (pack_u Y opY) f) = (f YX (∀xX, f (opX x) = opY (f x)))
Axiom. (Hom_struct_b_pack) We take the following as an axiom:
∀X Y, ∀opX opY : setsetset, ∀f, (Hom_struct_b (pack_b X opX) (pack_b Y opY) f) = (f YX (∀x yX, f (opX x y) = opY (f x) (f y)))
Axiom. (Hom_struct_p_pack) We take the following as an axiom:
∀X Y, ∀pX pY : setprop, ∀f, (Hom_struct_p (pack_p X pX) (pack_p Y pY) f) = (f YX (∀xX, pX xpY (f x)))
Axiom. (Hom_struct_r_pack) We take the following as an axiom:
∀X Y, ∀rX rY : setsetprop, ∀f, (Hom_struct_r (pack_r X rX) (pack_r Y rY) f) = (f YX (∀x yX, rX x yrY (f x) (f y)))
Axiom. (Hom_struct_c_pack) We take the following as an axiom:
∀X Y, ∀CX CY : (setprop)prop, ∀f, (Hom_struct_c (pack_c X CX) (pack_c Y CY) f) = (f YX (∀U : setprop, (∀y, U yy Y)CY UCX (λx ⇒ x X U (f x))))
Axiom. (Hom_struct_b_b_e_pack) We take the following as an axiom:
∀X Y, ∀opX op2X opY op2Y : setsetset, ∀eX eY f, (Hom_struct_b_b_e (pack_b_b_e X opX op2X eX) (pack_b_b_e Y opY op2Y eY) f) = (f YX (∀x yX, f (opX x y) = opY (f x) (f y)) (∀x yX, f (op2X x y) = op2Y (f x) (f y)) f eX = eY)
Axiom. (Hom_struct_b_b_e_e_pack) We take the following as an axiom:
∀X Y, ∀opX op2X opY op2Y : setsetset, ∀eX e2X eY e2Y f, (Hom_struct_b_b_e_e (pack_b_b_e_e X opX op2X eX e2X) (pack_b_b_e_e Y opY op2Y eY e2Y) f) = (f YX (∀x yX, f (opX x y) = opY (f x) (f y)) (∀x yX, f (op2X x y) = op2Y (f x) (f y)) f eX = eY f e2X = e2Y)
Axiom. (Hom_struct_b_b_r_e_e_pack) We take the following as an axiom:
∀X Y, ∀opX op2X opY op2Y : setsetset, ∀rX rY : setsetprop, ∀eX e2X eY e2Y f, (Hom_struct_b_b_r_e_e (pack_b_b_r_e_e X opX op2X rX eX e2X) (pack_b_b_r_e_e Y opY op2Y rY eY e2Y) f) = (f YX (∀x yX, f (opX x y) = opY (f x) (f y)) (∀x yX, f (op2X x y) = op2Y (f x) (f y)) (∀x yX, rX x yrY (f x) (f y)) f eX = eY f e2X = e2Y)
Beginning of Section MetaCatStruct
Variable Obj : setprop
Axiom. (MetaCat_struct_e_gen) We take the following as an axiom:
(∀X, Obj Xstruct_e X)MetaCat Obj Hom_struct_e (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_e_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_e X)MetaFunctor Obj Hom_struct_e (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Axiom. (MetaCat_struct_p_gen) We take the following as an axiom:
(∀X, Obj Xstruct_p X)MetaCat Obj Hom_struct_p (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_p_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_p X)MetaFunctor Obj Hom_struct_p (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Axiom. (MetaCat_struct_r_gen) We take the following as an axiom:
(∀X, Obj Xstruct_r X)MetaCat Obj Hom_struct_r (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_r_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_r X)MetaFunctor Obj Hom_struct_r (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Axiom. (MetaCat_struct_u_gen) We take the following as an axiom:
(∀X, Obj Xstruct_u X)MetaCat Obj Hom_struct_u (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_u_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_u X)MetaFunctor Obj Hom_struct_u (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Axiom. (MetaCat_struct_b_gen) We take the following as an axiom:
(∀X, Obj Xstruct_b X)MetaCat Obj Hom_struct_b (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_b_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_b X)MetaFunctor Obj Hom_struct_b (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Axiom. (MetaCat_struct_c_gen) We take the following as an axiom:
(∀X, Obj Xstruct_c X)MetaCat Obj Hom_struct_c (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_c_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_c X)MetaFunctor Obj Hom_struct_c (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Axiom. (MetaCat_struct_b_b_e_gen) We take the following as an axiom:
(∀X, Obj Xstruct_b_b_e X)MetaCat Obj Hom_struct_b_b_e (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_b_b_e_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_b_b_e X)MetaFunctor Obj Hom_struct_b_b_e (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Axiom. (MetaCat_struct_b_b_e_e_gen) We take the following as an axiom:
(∀X, Obj Xstruct_b_b_e_e X)MetaCat Obj Hom_struct_b_b_e_e (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_b_b_e_e_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_b_b_e_e X)MetaFunctor Obj Hom_struct_b_b_e_e (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Axiom. (MetaCat_struct_b_b_r_e_e_gen) We take the following as an axiom:
(∀X, Obj Xstruct_b_b_r_e_e X)MetaCat Obj Hom_struct_b_b_r_e_e (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f)
Axiom. (MetaCat_struct_b_b_r_e_e_Forgetful_gen) We take the following as an axiom:
(∀X, Obj Xstruct_b_b_r_e_e X)MetaFunctor Obj Hom_struct_b_b_r_e_e (λX ⇒ lam_id (X 0)) (λX Y Z g f ⇒ lam_comp (X 0) g f) (λ_ ⇒ True) SetHom (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
End of Section MetaCatStruct
Definition. We define struct_id to be λX ⇒ lam_id (X 0) of type setset.
Definition. We define struct_comp to be λX Y Z f g ⇒ lam_comp (X 0) f g of type setsetsetsetsetset.