Definition. We define iff to be λA B : prop ⇒ (A → B)∧(B → A) of type prop → prop → prop.
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 : A → A → prop, Qxy → Qyx 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.
Beginning of Section Ex
Variable A : SType
Definition. We define ex to be λQ : A → prop ⇒ ∀P : prop, (∀x : A, Qx → P) → P of type (A → prop) → 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.
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.
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.
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, C0X → D0(F0X)) → (∀X Y f, C0X → C0Y → C1XYf → D1(F0X)(F0Y)(F1XYf)) → (∀X, C0X → F1XX(idCX)=idD(F0X)) → (∀X Y Z f g, C0X → C0Y → C0Z → C1XYf → C1YZg → F1XZ(compCXYZgf)=compD(F0X)(F0Y)(F0Z)(F1YZg)(F1XYf)) → MetaFunctorC0C1idCcompCD0D1idDcompDF0F1
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.
∀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, MetaCatC0C1idCcompC → MetaCatD0D1idDcompD → MetaFunctorC0C1idCcompCD0D1idDcompDF0F1 → MetaFunctor_strictC0C1idCcompCD0D1idDcompDF0F1
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.
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, C0X → D1(F0X)(G0X)(etaX)) → (∀X Y f, C0X → C0Y → C1XYf → compD(F0X)(G0X)(G0Y)(G1XYf)(etaX)=compD(F0X)(F0Y)(G0Y)(etaY)(F1XYf)) → MetaNatTransC0C1idCcompCD0D1idDcompDF0F1G0G1eta
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.
∀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, C0X → compD(F0X)(F0(G0(F0X)))(F0X)(eps(F0X))(F1X(G0(F0X))(etaX))=idD(F0X)) → (∀Y, D0Y → compC(G0Y)(G0(F0(G0Y)))(G0Y)(G1(F0(G0Y))Y(epsY))(eta(G0Y))=idC(G0Y)) → MetaAdjunctionC0C1idCcompCD0D1idDcompDF0F1G0G1etaeps
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.
∀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_strictC0C1idCcompCD0D1idDcompDF0F1 → MetaFunctorD0D1idDcompDC0C1idCcompCG0G1 → MetaNatTransC0C1idCcompCC0C1idCcompC(λX : set ⇒ X)(λX Y f : set ⇒ f)(λX : set ⇒ G0(F0X))(λX Y f : set ⇒ G1(F0X)(F0Y)(F1XYf))eta → MetaNatTransD0D1idDcompDD0D1idDcompD(λA : set ⇒ F0(G0A))(λA B h : set ⇒ F1(G0A)(G0B)(G1ABh))(λA : set ⇒ A)(λA B h : set ⇒ h)eps → MetaAdjunctionC0C1idCcompCD0D1idDcompDF0F1G0G1etaeps → MetaAdjunction_strictC0C1idCcompCD0D1idDcompDF0F1G0G1etaeps