Definition. We define True to be ∀p : prop, pp of type prop.
Definition. We define False to be ∀p : prop, p of type prop.
Axiom. (FalseE) We take the following as an axiom:
False∀p : prop, p
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.
Axiom. (andI) We take the following as an axiom:
∀A B : prop, ABA B
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 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
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.
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.
Primitive. The name ordsucc is a term of type setset.
Notation. Natural numbers 0,1,2,... are notation for the terms formed using Empty as 0 and forming successors with ordsucc.
Axiom. (neq_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
Primitive. The name nat_p is a term of type setprop.
Axiom. (nat_2) We take the following as an axiom:
nat_p 2
Axiom. (nat_p_trans) We take the following as an axiom:
∀n, nat_p n∀mn, nat_p m
Axiom. (cases_2) We take the following as an axiom:
∀i2, ∀p : setprop, p 0p 1p i
Primitive. The name omega is a term of type set.
Axiom. (nat_p_omega) We take the following as an axiom:
∀n : set, nat_p nn omega
Primitive. The name lam is a term of type set(setset)set.
Definition. We define setprod to be λX Y : setlam X (λ_ ⇒ Y) of type setsetset.
Notation. We use as an infix operator with priority 440 and which associates to the left corresponding to applying term setprod.
Primitive. The name ap is a term 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 lam Ax : set ⇒ B).
Axiom. (beta) We take the following as an axiom:
∀X : set, ∀F : setset, ∀x : set, x X(λxXF x) x = F x
Definition. We define lam_id to be λX ⇒ lam X (λx ⇒ x) of type setset.
Definition. We define lam_comp to be λX g f ⇒ lam X (λx : setg (f x)) of type setsetsetset.
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.
Primitive. The name Pi is a term 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. (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)
Definition. We define setexp to be λY X : setxX, Y of type setsetset.
Notation. We use :^: as an infix operator with priority 430 and which associates to the left corresponding to applying term setexp.
Definition. We define HomSet to be λX Y f ⇒ f YX of type setsetsetprop.
Primitive. The name SNo is a term of type setprop.
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. (omega_SNo) We take the following as an axiom:
∀nomega, SNo n
Axiom. (SNo_0) We take the following as an axiom:
SNo 0
Axiom. (SNo_1) We take the following as an axiom:
SNo 1
Axiom. (mul_SNo_zeroL) We take the following as an axiom:
∀x, SNo x0 * x = 0
Axiom. (mul_SNo_oneL) We take the following as an axiom:
∀x, SNo x1 * x = x
Axiom. (mul_SNo_oneR) We take the following as an axiom:
∀x, SNo xx * 1 = x
Axiom. (mul_SNo_assoc) We take the following as an axiom:
∀x y z, SNo xSNo ySNo zx * (y * z) = (x * y) * z
Beginning of Section Initial
Variable Obj : setprop
Variable Hom : setsetsetprop
Variable id : setset
Variable comp : setsetsetsetsetset
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.
End of Section Initial
Primitive. The name pack_b is a term of type set(setsetset)set.
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)
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 Hom_struct_b is a term of type setsetsetprop.
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)))
Definition. We define struct_b_monoid to be λX ⇒ struct_b X unpack_b_o X (λX' op ⇒ (∀x y zX', op (op x y) z = op x (op y z)) (∃eX', ∀xX', op x e = x op e x = x)) of type setprop.
Primitive. The name MetaCat is a term of type (setprop)(setsetsetprop)(setset)(setsetsetsetsetset)prop.
Axiom. (MetaCatSet_initial) We take the following as an axiom:
∃Y : set, ∃uniqa : setset, initial_p (λ_ ⇒ True) HomSet (λX ⇒ (λxXx)) (λX Y Z f g ⇒ (λxXf (g x))) Y uniqa
Primitive. The name MetaAdjunction_strict is a term of type (setprop)(setsetsetprop)(setset)(setsetsetsetsetset)(setprop)(setsetsetprop)(setset)(setsetsetsetsetset)(setset)(setsetsetset)(setset)(setsetsetset)(setset)(setset)prop.
Axiom. (LeftAdjointsPreserveInitial) We take the following as an axiom:
∀Obj : setprop, ∀x1 : setsetsetprop, ∀Id : setset, ∀Comp : setsetsetsetsetset, ∀Obj' : setprop, ∀Hom' : setsetsetprop, ∀Id' : setset, ∀Comp' : setsetsetsetsetset, ∀F0 : setset, ∀F1 : setsetsetset, ∀G0 : setset, ∀G1 : setsetsetset, ∀eta eps : setset, MetaAdjunction_strict Obj x1 Id Comp Obj' Hom' Id' Comp' F0 F1 G0 G1 eta eps∀Init, ∀uniq : setset, initial_p Obj x1 Id Comp Init uniq∃uniq' : setset, initial_p Obj' Hom' Id' Comp' (F0 Init) uniq'
Axiom. (struct_b_monoid_Phi) We take the following as an axiom:
∀X, ∀F : setsetset, (∀x yX, F x y X)∀F' : setsetset, (∀x yX, F x y = F' x y)((∀x y zX, F' (F' x y) z = F' x (F' y z)) (∃eX, ∀xX, F' x e = x F' e x = x)) = ((∀x y zX, F (F x y) z = F x (F y z)) (∃eX, ∀xX, F x e = x F e x = x))
Proposition. (MetaCat_struct_b_monoid_initial_neg)
¬ ∃Y : set, ∃uniqa : setset, initial_p struct_b_monoid Hom_struct_b struct_id struct_comp Y uniqa
Proof:
Proof not loaded.
Proposition. (MetaCat_struct_b_monoid_left_adjoint_forgetful_neg)
¬ ∃F0 : setset, ∃F1 : setsetsetset, ∃eta eps : setset, MetaAdjunction_strict (λ_ ⇒ True) HomSet (λX ⇒ (lam_id X)) (λX Y Z f g ⇒ (lam_comp X f g)) struct_b_monoid Hom_struct_b struct_id struct_comp F0 F1 (λX ⇒ X 0) (λX Y f ⇒ f) eta eps
Proof:
Proof not loaded.