L1
Definition. We define True to be ∀p : prop, p → p of type prop.
L1
Definition. We define False to be ∀p : prop, p of type prop.
L2
Axiom. (FalseE) We take the following as an axiom:
False → ∀p : prop, p
L4
Definition. We define not to be λA : prop ⇒ A → False of type prop → prop.
Notation. We use ¬ as a prefix operator with priority 700 corresponding to applying term not.
L9
Definition. We define and to be λA B : prop ⇒ ∀p : prop, (A → B → p) → p of type prop → prop → prop.
Notation. We use ∧ as an infix operator with priority 780 and which associates to the left corresponding to applying term and.
L14
Axiom. (andI) We take the following as an axiom:
∀A B : prop, A → B → A ∧ B
L16
Definition. We define or to be λA B : prop ⇒ ∀p : prop, (A → p) → (B → p) → p of type prop → prop → prop.
Notation. We use ∨ as an infix operator with priority 785 and which associates to the left corresponding to applying term or.
Beginning of Section Eq
L23
Variable A : SType
L24
Definition. We define eq to be λx y : A ⇒ ∀Q : A → A → prop, Q x y → Q y x of type A → A → prop.
L25
Definition. We define neq to be λx y : A ⇒ ¬ eq x y of type A → A → prop.
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 Ex
L33
Variable A : SType
L34
Definition. We define ex to be λQ : A → prop ⇒ ∀P : prop, (∀x : A, Q x → P) → P of type (A → prop) → prop.
End of Section Ex
L36
Axiom. (prop_ext_2) We take the following as an axiom:
∀p q : prop, (p → q) → (q → p) → p = q
Primitive. The name In is a term of type set → set → prop.
Notation. We use ∈ as an infix operator with priority 500 and no associativity corresponding to applying term In. Furthermore, we may write ∀ x ∈ A, B to mean ∀ x : set, x ∈ A → B.
L40
Definition. We define Subq to be λA B ⇒ ∀x ∈ A, x ∈ B of type set → set → prop.
Notation. We use ⊆ as an infix operator with priority 500 and no associativity corresponding to applying term Subq. Furthermore, we may write ∀ x ⊆ A, B to mean ∀ x : set, x ⊆ A → B.
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.
L45
Definition. We define nIn to be λx X ⇒ ¬ In x X of type set → set → prop.
Notation. We use ∉ as an infix operator with priority 502 and no associativity corresponding to applying term nIn.
Primitive. The name Empty is a term of type set.
L53
Axiom. (EmptyE) We take the following as an axiom:
∀x : set, x ∉ Empty
Primitive. The name Sing is a term of type set → set.
Notation. {x} is notation for Sing x.
L59
Axiom. (SingE) We take the following as an axiom:
∀x y : set, y ∈ {x} → y = x
Primitive. The name ordsucc is a term of type set → set.
Notation. Natural numbers 0,1,2,... are notation for the terms formed using Empty as 0 and forming successors with ordsucc.
L66
Axiom. (neq_ordsucc_0) We take the following as an axiom:
∀a : set, ordsucc a ≠ 0
L68
Axiom. (eq_1_Sing0) We take the following as an axiom:
Primitive. The name nat_p is a term of type set → prop.
L72
Axiom. (nat_0) We take the following as an axiom:
L74
Axiom. (nat_1) We take the following as an axiom:
L75
Axiom. (nat_inv) We take the following as an axiom:
∀n, nat_p n → n = 0 ∨ ∃x, nat_p x ∧ n = ordsucc x
Primitive. The name omega is a term of type set.
L79
Axiom. (omega_nat_p) We take the following as an axiom:
L81
Axiom. (nat_p_omega) We take the following as an axiom:
∀n : set, nat_p n → n ∈ omega
L82
Axiom. (omega_ordsucc) We take the following as an axiom:
Primitive. The name nat_primrec is a term of type set → (set → set → set) → set → set.
Primitive. The name If_i is a term of type prop → set → set → set.
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.
L91
Axiom. (If_i_0) We take the following as an axiom:
∀p : prop, ∀x y : set, ¬ p → (if p then x else y) = y
L94
Axiom. (If_i_1) We take the following as an axiom:
∀p : prop, ∀x y : set, p → (if p then x else y) = x
Primitive. The name lam is a term of type set → (set → set) → set.
L100
Definition. We define setprod to be λX Y : set ⇒ lam X (λ_ ⇒ Y) of type set → set → set.
Notation. We use ⨯ as an infix operator with priority 440 and which associates to the left corresponding to applying term setprod.
Primitive. The name ap is a term of type set → set → set.
Notation. When x is a set, a term x y is notation for ap x y.
Notation. λ x ∈ A ⇒ B is notation for the set lam A (λ x : 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.
L111
Axiom. (beta) We take the following as an axiom:
∀X : set, ∀F : set → set, ∀x : set, x ∈ X → (λx ∈ X ⇒ F x) x = F x
L113
Definition. We define lam_id to be λX ⇒ lam X (λx ⇒ x) of type set → set.
L115
Definition. We define lam_comp to be λX g f ⇒ lam X (λx : set ⇒ g (f x)) of type set → set → set → set.
L118
Definition. We define struct_id to be λX ⇒ lam_id (X 0) of type set → set.
L120
Definition. We define struct_comp to be λX Y Z f g ⇒ lam_comp (X 0) f g of type set → set → set → set → set → set.
L122
Axiom. (lam_ext) We take the following as an axiom:
∀X, ∀F G : set → set, (∀x ∈ X, F x = G x) → (λx ∈ X ⇒ F x) = (λx ∈ X ⇒ G x)
Primitive. The name Pi is a term of type set → (set → set) → set.
Notation. We use ∏ x...y [possibly with ascriptions] , B as a binder notation corresponding to a term constructed using Pi.
L130
Axiom. (lam_Pi) We take the following as an axiom:
∀X : set, ∀Y : set → set, ∀F : set → set, (∀x ∈ X, F x ∈ Y x) → (λx ∈ X ⇒ F x) ∈ (∏x ∈ X, Y x)
L133
Axiom. (ap_Pi) We take the following as an axiom:
∀X : set, ∀Y : set → set, ∀f : set, ∀x : set, f ∈ (∏x ∈ X, Y x) → x ∈ X → f x ∈ Y x
L134
Definition. We define setexp to be λY X : set ⇒ ∏x ∈ X, Y of type set → set → set.
Notation. We use :^: as an infix operator with priority 430 and which associates to the left corresponding to applying term setexp.
L139
Definition. We define HomSet to be λX Y f ⇒ f ∈ YX of type set → set → set → prop.
L141
Definition. We define bij to be λX Y f ⇒ (∀u ∈ X, f u ∈ Y) ∧ (∀u v ∈ X, f u = f v → u = v) ∧ (∀w ∈ Y, ∃u ∈ X, f u = w) of type set → set → (set → set) → prop.
L149
Axiom. (bijI) We take the following as an axiom:
∀X Y, ∀f : set → set, (∀u ∈ X, f u ∈ Y) → (∀u v ∈ X, f u = f v → u = v) → (∀w ∈ Y, ∃u ∈ X, f u = w) → bij X Y f
L155
Axiom. (bijE) We take the following as an axiom:
∀X Y, ∀f : set → set, bij X Y f → ∀p : prop, ((∀u ∈ X, f u ∈ Y) → (∀u v ∈ X, f u = f v → u = v) → (∀w ∈ Y, ∃u ∈ X, f u = w) → p) → p
Primitive. The name inv is a term of type set → (set → set) → set → set.
L167
Axiom. (surj_rinv) We take the following as an axiom:
∀X Y, ∀f : set → set, (∀w ∈ Y, ∃u ∈ X, f u = w) → ∀y ∈ Y, inv X f y ∈ X ∧ f (inv X f y) = y
L169
Axiom. (inj_linv) We take the following as an axiom:
∀X, ∀f : set → set, (∀u v ∈ X, f u = f v → u = v) → ∀x ∈ X, inv X f (f x) = x
L171
Axiom. (bij_inv) We take the following as an axiom:
∀X Y, ∀f : set → set, bij X Y f → bij Y X (inv X f)
L173
Axiom. (ap0_lam) We take the following as an axiom:
∀X : set, ∀Y : set → set, ∀z : set, z ∈ (λx ∈ X ⇒ Y x) → (z 0) ∈ X
L175
Axiom. (ap1_lam) We take the following as an axiom:
∀X : set, ∀Y : set → set, ∀z : set, z ∈ (λx ∈ X ⇒ Y x) → (z 1) ∈ (Y (z 0))
L177
Axiom. (tuple_2_inj) We take the following as an axiom:
∀x y w z : set, (x,y) = (w,z) → x = w ∧ y = z
L179
Axiom. (tuple_2_setprod) We take the following as an axiom:
∀X : set, ∀Y : set, ∀x ∈ X, ∀y ∈ Y, (x,y) ∈ X ⨯ Y
L180
Axiom. (tuple_lam_eta) We take the following as an axiom:
∀X : set, ∀Y : set → set, ∀z ∈ (λx ∈ X ⇒ Y x), (z 0,z 1) = z
Beginning of Section Tuples
L183
Variable x0 x1 : set
L185
Axiom. (tuple_2_0_eq) We take the following as an axiom:
(x0,x1) 0 = x0
L186
Axiom. (tuple_2_1_eq) We take the following as an axiom:
(x0,x1) 1 = x1
End of Section Tuples
Primitive. The name ordinal is a term of type set → prop.
L193
Axiom. (ordinal_Empty) We take the following as an axiom:
L195
Axiom. (nat_p_ordinal) We take the following as an axiom:
∀n : set, nat_p n → ordinal n
L196
Axiom. (ordinal_ordsucc) We take the following as an axiom:
∀alpha : set, ordinal alpha → ordinal (ordsucc alpha)
Primitive. The name SNo is a term of type set → prop.
Primitive. The name SNoLt is a term of type set → set → prop.
Primitive. The name SNoLe is a term of type set → set → prop.
Primitive. The name minus_SNo is a term of type set → set.
Primitive. The name add_SNo is a term of type set → set → set.
Notation. We use < as an infix operator with priority 490 and no associativity corresponding to applying term SNoLt.
Notation. We use <= as an infix operator with priority 490 and no associativity corresponding to applying term SNoLe.
Notation. We use - as 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.
L214
Axiom. (SNoLt_irref) We take the following as an axiom:
∀x, ¬ (x < x)
L216
Axiom. (SNoLt_tra) We take the following as an axiom:
∀x y z, SNo x → SNo y → SNo z → x < y → y < z → x < z
L217
Axiom. (SNoLeE) We take the following as an axiom:
∀x y, SNo x → SNo y → x <= y → x < y ∨ x = y
L219
Axiom. (SNo_0) We take the following as an axiom:
L221
Axiom. (SNo_1) We take the following as an axiom:
L222
Axiom. (SNoLt_0_1) We take the following as an axiom:
0 < 1
L224
Axiom. (SNo_minus_SNo) We take the following as an axiom:
∀x, SNo x → SNo (- x)
L226
Axiom. (SNo_add_SNo) We take the following as an axiom:
∀x y, SNo x → SNo y → SNo (x + y)
L227
Axiom. (minus_SNo_0) We take the following as an axiom:
- 0 = 0
L229
Axiom. (minus_SNo_invol) We take the following as an axiom:
∀x, SNo x → - - x = x
L230
Axiom. (add_SNo_0R) We take the following as an axiom:
∀x, SNo x → x + 0 = x
L231
Axiom. (add_SNo_com) We take the following as an axiom:
∀x y, SNo x → SNo y → x + y = y + x
L232
Axiom. (add_SNo_Lt2) We take the following as an axiom:
∀x y z, SNo x → SNo y → SNo z → y < z → x + y < x + z
L233
Axiom. (add_SNo_Lt2_cancel) We take the following as an axiom:
∀x y z, SNo x → SNo y → SNo z → x + y < x + z → y < z
L234
Axiom. (add_SNo_cancel_L) We take the following as an axiom:
∀x y z, SNo x → SNo y → SNo z → x + y = x + z → y = z
L236
Axiom. (add_SNo_cancel_R) We take the following as an axiom:
∀x y z, SNo x → SNo y → SNo z → x + y = z + y → x = z
L238
Axiom. (add_SNo_minus_SNo_rinv) We take the following as an axiom:
∀x, SNo x → x + - x = 0
L240
Axiom. (minus_add_SNo_distr) We take the following as an axiom:
∀x y, SNo x → SNo y → - (x + y) = (- x) + (- y)
L241
Axiom. (add_SNo_minus_SNo_prop2) We take the following as an axiom:
∀x y, SNo x → SNo y → x + - x + y = y
L243
Axiom. (add_SNo_minus_R2') We take the following as an axiom:
∀x y, SNo x → SNo y → (x + - y) + y = x
L245
Axiom. (minus_SNo_Lt_contra) We take the following as an axiom:
∀x y, SNo x → SNo y → x < y → - y < - x
L247
Axiom. (minus_SNo_Lt_contra3) We take the following as an axiom:
∀x y, SNo x → SNo y → - x < - y → y < x
L248
Axiom. (ordinal_SNo) We take the following as an axiom:
∀alpha, ordinal alpha → SNo alpha
L250
Axiom. (ordinal_SNoLt_In) We take the following as an axiom:
∀alpha beta, ordinal alpha → ordinal beta → alpha < beta → alpha ∈ beta
L251
Axiom. (ordinal_ordsucc_SNo_eq) We take the following as an axiom:
∀alpha, ordinal alpha → ordsucc alpha = 1 + alpha
Primitive. The name int is a term of type set.
L256
Axiom. (nat_p_int) We take the following as an axiom:
∀n, nat_p n → n ∈ int
L258
Axiom. (int_SNo) We take the following as an axiom:
∀x ∈ int, SNo x
L259
Axiom. (Subq_omega_int) We take the following as an axiom:
L260
Axiom. (int_minus_SNo) We take the following as an axiom:
∀x ∈ int, - x ∈ int
L261
Axiom. (int_add_SNo) We take the following as an axiom:
∀x y ∈ int, x + y ∈ int
Primitive. The name pack_u is a term of type set → (set → set) → set.
Primitive. The name unpack_u_i is a term of type set → (set → (set → set) → set) → set.
L268
Axiom. (unpack_u_i_eq) We take the following as an axiom:
∀Phi : set → (set → set) → set, ∀X, ∀F : set → set, (∀F' : set → set, (∀x ∈ X, 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 → (set → set) → prop) → prop.
L277
Axiom. (unpack_u_o_eq) We take the following as an axiom:
∀Phi : set → (set → set) → prop, ∀X, ∀F : set → set, (∀F' : set → set, (∀x ∈ X, F x = F' x) → Phi X F' = Phi X F) → unpack_u_o (pack_u X F) Phi = Phi X F
L283
Axiom. (pack_u_0_eq2) We take the following as an axiom:
∀X, ∀F : set → set, X = pack_u X F 0
L285
Definition. We define struct_u to be λS ⇒ ∀q : set → prop, (∀X, ∀F : set → set, (∀x ∈ X, F x ∈ X) → q (pack_u X F)) → q S of type set → prop.
L287
Axiom. (pack_struct_u_I) We take the following as an axiom:
∀X, ∀F : set → set, (∀x ∈ X, F x ∈ X) → struct_u (pack_u X F)
Primitive. The name Hom_struct_u is a term of type set → set → set → prop.
L292
Axiom. (Hom_struct_u_pack) We take the following as an axiom:
∀X Y, ∀opX opY : set → set, ∀f, (Hom_struct_u (pack_u X opX) (pack_u Y opY) f) = (f ∈ YX ∧ (∀x ∈ X, f (opX x) = opY (f x)))
L298
Definition. We define struct_u_bij to be λX ⇒ struct_u X ∧ unpack_u_o X (λX' h ⇒ bij X' X' (λx ⇒ h x)) of type set → prop.
Primitive. The name MetaCat is a term of type (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → prop.
L304
Axiom. (MetaCatSet) We take the following as an axiom:
MetaCat (λ_ ⇒ True) HomSet (λX ⇒ lam_id X) (λX Y Z g f ⇒ lam_comp X g f)
L306
Axiom. (MetaCat_struct_u_bij) We take the following as an axiom:
Primitive. The name MetaFunctor is a term of type (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → set) → (set → set → set → set) → prop.
L310
Axiom. (MetaFunctor_I) We take the following as an axiom:
∀C0 : set → prop, ∀C1 : set → set → set → prop, ∀idC : set → set, ∀compC : set → set → set → set → set → set, ∀D0 : set → prop, ∀D1 : set → set → set → prop, ∀idD : set → set, ∀compD : set → set → set → set → set → set, ∀F0 : set → set, ∀F1 : set → set → set → set, (∀X, C0 X → D0 (F0 X)) → (∀X Y f, C0 X → C0 Y → C1 X Y f → D1 (F0 X) (F0 Y) (F1 X Y f)) → (∀X, C0 X → F1 X X (idC X) = idD (F0 X)) → (∀X Y Z f g, C0 X → C0 Y → C0 Z → C1 X Y f → C1 Y Z g → F1 X Z (compC X Y Z g f) = compD (F0 X) (F0 Y) (F0 Z) (F1 Y Z g) (F1 X Y f)) → MetaFunctor C0 C1 idC compC D0 D1 idD compD F0 F1
L323
Axiom. (MetaCat_struct_u_bij_Forgetful) We take the following as an axiom:
MetaFunctor struct_u_bij Hom_struct_u struct_id struct_comp (λ_ ⇒ True) HomSet (λX ⇒ lam_id X) (λX Y Z f g ⇒ (lam_comp X f g)) (λX ⇒ X 0) (λX Y f ⇒ f)
Primitive. The name MetaFunctor_strict is a term of type (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → set) → (set → set → set → set) → prop.
L332
Axiom. (MetaFunctor_strict_I) We take the following as an axiom:
∀C0 : set → prop, ∀C1 : set → set → set → prop, ∀idC : set → set, ∀compC : set → set → set → set → set → set, ∀D0 : set → prop, ∀D1 : set → set → set → prop, ∀idD : set → set, ∀compD : set → set → set → set → set → set, ∀F0 : set → set, ∀F1 : set → set → set → set, MetaCat C0 C1 idC compC → MetaCat D0 D1 idD compD → MetaFunctor C0 C1 idC compC D0 D1 idD compD F0 F1 → MetaFunctor_strict C0 C1 idC compC D0 D1 idD compD F0 F1
Primitive. The name MetaNatTrans is a term of type (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → set) → (set → set → set → set) → (set → set) → (set → set → set → set) → (set → set) → prop.
L346
Axiom. (MetaNatTrans_I) We take the following as an axiom:
∀C0 : set → prop, ∀C1 : set → set → set → prop, ∀idC : set → set, ∀compC : set → set → set → set → set → set, ∀D0 : set → prop, ∀D1 : set → set → set → prop, ∀idD : set → set, ∀compD : set → set → set → set → set → set, ∀F0 : set → set, ∀F1 : set → set → set → set, ∀G0 : set → set, ∀G1 : set → set → set → set, ∀eta : set → set, (∀X, C0 X → D1 (F0 X) (G0 X) (eta X)) → (∀X Y f, C0 X → C0 Y → C1 X Y f → compD (F0 X) (G0 X) (G0 Y) (G1 X Y f) (eta X) = compD (F0 X) (F0 Y) (G0 Y) (eta Y) (F1 X Y f)) → MetaNatTrans C0 C1 idC compC D0 D1 idD compD F0 F1 G0 G1 eta
Primitive. The name MetaAdjunction is a term of type (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → set) → (set → set → set → set) → (set → set) → (set → set → set → set) → (set → set) → (set → set) → prop.
L362
Axiom. (MetaAdjunction_I) We take the following as an axiom:
∀C0 : set → prop, ∀C1 : set → set → set → prop, ∀idC : set → set, ∀compC : set → set → set → set → set → set, ∀D0 : set → prop, ∀D1 : set → set → set → prop, ∀idD : set → set, ∀compD : set → set → set → set → set → set, ∀F0 : set → set, ∀F1 : set → set → set → set, ∀G0 : set → set, ∀G1 : set → set → set → set, ∀eta eps : set → set, (∀X, C0 X → compD (F0 X) (F0 (G0 (F0 X))) (F0 X) (eps (F0 X)) (F1 X (G0 (F0 X)) (eta X)) = idD (F0 X)) → (∀Y, D0 Y → compC (G0 Y) (G0 (F0 (G0 Y))) (G0 Y) (G1 (F0 (G0 Y)) Y (eps Y)) (eta (G0 Y)) = idC (G0 Y)) → MetaAdjunction C0 C1 idC compC D0 D1 idD compD F0 F1 G0 G1 eta eps
Primitive. The name MetaAdjunction_strict is a term of type (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → prop) → (set → set → set → prop) → (set → set) → (set → set → set → set → set → set) → (set → set) → (set → set → set → set) → (set → set) → (set → set → set → set) → (set → set) → (set → set) → prop.
L377
Axiom. (MetaAdjunction_strict_I) We take the following as an axiom:
∀C0 : set → prop, ∀C1 : set → set → set → prop, ∀idC : set → set, ∀compC : set → set → set → set → set → set, ∀D0 : set → prop, ∀D1 : set → set → set → prop, ∀idD : set → set, ∀compD : set → set → set → set → set → set, ∀F0 : set → set, ∀F1 : set → set → set → set, ∀G0 : set → set, ∀G1 : set → set → set → set, ∀eta eps : set → set, MetaFunctor_strict C0 C1 idC compC D0 D1 idD compD F0 F1 → MetaFunctor D0 D1 idD compD C0 C1 idC compC G0 G1 → MetaNatTrans C0 C1 idC compC C0 C1 idC compC (λX : set ⇒ X) (λX Y f : set ⇒ f) (λX : set ⇒ G0 (F0 X)) (λX Y f : set ⇒ G1 (F0 X) (F0 Y) (F1 X Y f)) eta → MetaNatTrans D0 D1 idD compD D0 D1 idD compD (λA : set ⇒ F0 (G0 A)) (λA B h : set ⇒ F1 (G0 A) (G0 B) (G1 A B h)) (λA : set ⇒ A) (λA B h : set ⇒ h) eps → MetaAdjunction C0 C1 idC compC D0 D1 idD compD F0 F1 G0 G1 eta eps → MetaAdjunction_strict C0 C1 idC compC D0 D1 idD compD F0 F1 G0 G1 eta eps
L392
Definition. We define omega_iterate to be λn h x ⇒ nat_primrec x (λ_ r ⇒ h r) n of type set → (set → set) → set → set.
L395
Axiom. (omega_iterate_0) We take the following as an axiom:
∀h : set → set, ∀x, omega_iterate 0 h x = x
L397
Axiom. (omega_iterate_S_out) We take the following as an axiom:
∀n ∈ omega, ∀h : set → set, ∀x, omega_iterate (ordsucc n) h x = h (omega_iterate n h x)
L399
Axiom. (omega_iterate_In) We take the following as an axiom:
∀X, ∀x ∈ X, ∀h : set → set, (∀x ∈ X, h x ∈ X) → ∀n, nat_p n → omega_iterate n h x ∈ X
L403
Axiom. (omega_iterate_ext) We take the following as an axiom:
∀X, ∀x ∈ X, ∀h h' : set → set, (∀x ∈ X, h x ∈ X) → (∀x ∈ X, h x = h' x) → ∀n, nat_p n → omega_iterate n h x = omega_iterate n h' x
L407
Axiom. (omega_iterate_comm) We take the following as an axiom:
∀X, ∀x ∈ X, ∀h k : set → set, (∀x ∈ X, h x ∈ X) → ∀f : set → set, (∀x ∈ X, f (h x) = k (f x)) → ∀n, nat_p n → f (omega_iterate n h x) = omega_iterate n k (f x)
L412
Axiom. (omega_iterate_pair_count1) We take the following as an axiom:
∀x, ∀n, nat_p n → omega_iterate n (λu ⇒ (ordsucc (u 0),u 1)) (0,x) = (n,x)
L415
Axiom. (omega_iterate_pair_countback1) We take the following as an axiom:
∀x, ∀n, nat_p n → omega_iterate n (λu ⇒ (u 0 + - 1,u 1)) (0,x) = (- n,x)
L418
Definition. We define MetaCat_struct_u_forgetfree_eta to be λX ⇒ λx ∈ X ⇒ (0,x) of type set → set.
L421
Axiom. (int_neg_or_nonneg) We take the following as an axiom:
∀x ∈ int, ∀p : prop, (x < 0 → - x ∈ omega → p) → (0 <= x → ¬ (x < 0) → x ∈ omega → p) → p
L427
Definition. We define MetaCat_struct_u_bij_free0 to be λX ⇒ pack_u (int ⨯ X) (λu ⇒ (u 0 + 1,u 1)) of type set → set.
L430
Definition. We define MetaCat_struct_u_bij_free1 to be λX Y h ⇒ λu ∈ int ⨯ X ⇒ (u 0,h (u 1)) of type set → set → set → set.
L433
Definition. We define MetaCat_struct_u_bij_forgetfree_eps to be λA ⇒ unpack_u_i A (λX h ⇒ λu ∈ int ⨯ X ⇒ if u 0 < 0 then omega_iterate (- (u 0)) (inv X h) (u 1) else omega_iterate (u 0) h (u 1)) of type set → set.
L436
Proof:
Proof not loaded.
L1312
Proposition. (MetaCat_struct_u_bij_left_adjoint_forgetful)
∃F0 : set → set, ∃F1 : set → set → set → set, ∃eta eps : set → set, MetaAdjunction_strict (λ_ ⇒ True) HomSet (λX ⇒ (lam_id X)) (λX Y Z f g ⇒ (lam_comp X f g)) struct_u_bij Hom_struct_u struct_id struct_comp F0 F1 (λX ⇒ X 0) (λX Y f ⇒ f) eta eps
Proof:
Proof not loaded.