diff --git a/src/category-theory.lagda.md b/src/category-theory.lagda.md
index f42fcba793..b382e46390 100644
--- a/src/category-theory.lagda.md
+++ b/src/category-theory.lagda.md
@@ -112,6 +112,7 @@ open import category-theory.pregroupoids public
open import category-theory.presheaf-categories public
open import category-theory.products-in-precategories public
open import category-theory.products-of-precategories public
+open import category-theory.pullbacks-in-large-precategories public
open import category-theory.pullbacks-in-precategories public
open import category-theory.representable-functors-categories public
open import category-theory.representable-functors-large-precategories public
@@ -119,6 +120,7 @@ open import category-theory.representable-functors-precategories public
open import category-theory.representing-arrow-category public
open import category-theory.sieves-in-categories public
open import category-theory.slice-precategories public
+open import category-theory.subobject-classifier-in-large-precategories public
open import category-theory.subprecategories public
open import category-theory.terminal-objects-precategories public
open import category-theory.yoneda-lemma-categories public
diff --git a/src/category-theory/monomorphisms-in-large-precategories.lagda.md b/src/category-theory/monomorphisms-in-large-precategories.lagda.md
index e43fe859d6..ad4e1ae3c1 100644
--- a/src/category-theory/monomorphisms-in-large-precategories.lagda.md
+++ b/src/category-theory/monomorphisms-in-large-precategories.lagda.md
@@ -11,6 +11,7 @@ open import category-theory.isomorphisms-in-large-precategories
open import category-theory.large-precategories
open import foundation.action-on-identifications-functions
+open import foundation.dependent-pair-types
open import foundation.embeddings
open import foundation.equivalences
open import foundation.identity-types
@@ -51,6 +52,31 @@ module _
is-prop-type-Prop is-mono-prop-Large-Precategory
```
+## The type of monomorphisms in a large precategory
+
+```agda
+module _
+ {α : Level → Level} {β : Level → Level → Level}
+ (C : Large-Precategory α β) {l1 l2 : Level} (l3 : Level)
+ (X : obj-Large-Precategory C l1) (Y : obj-Large-Precategory C l2)
+ where
+
+ mono-Large-Precategory : UU (α l3 ⊔ β l3 l1 ⊔ β l3 l2 ⊔ β l1 l2)
+ mono-Large-Precategory =
+ Σ
+ ( hom-Large-Precategory C X Y)
+ ( is-mono-Large-Precategory C l3 X Y)
+
+ hom-mono-Large-Precategory :
+ (f : mono-Large-Precategory) → hom-Large-Precategory C X Y
+ hom-mono-Large-Precategory f = pr1 f
+
+ is-mono-mono-Large-Precategory :
+ (f : mono-Large-Precategory) →
+ is-mono-Large-Precategory C l3 X Y (hom-mono-Large-Precategory f)
+ is-mono-mono-Large-Precategory f = pr2 f
+```
+
## Properties
### Isomorphisms are monomorphisms
@@ -70,34 +96,34 @@ module _
( λ P →
( inv
( left-unit-law-comp-hom-Large-Precategory C g)) ∙
- ( ( ap
+ ( ap
( λ h' → comp-hom-Large-Precategory C h' g)
( inv (is-retraction-hom-inv-iso-Large-Precategory C f))) ∙
- ( ( associative-comp-hom-Large-Precategory C
+ ( associative-comp-hom-Large-Precategory C
+ ( hom-inv-iso-Large-Precategory C f)
+ ( hom-iso-Large-Precategory C f)
+ ( g)) ∙
+ ( ap
+ ( comp-hom-Large-Precategory C
+ ( hom-inv-iso-Large-Precategory C f))
+ ( P)) ∙
+ ( inv
+ ( associative-comp-hom-Large-Precategory C
( hom-inv-iso-Large-Precategory C f)
( hom-iso-Large-Precategory C f)
- ( g)) ∙
- ( ( ap
- ( comp-hom-Large-Precategory C
- ( hom-inv-iso-Large-Precategory C f))
- ( P)) ∙
- ( ( inv
- ( associative-comp-hom-Large-Precategory C
- ( hom-inv-iso-Large-Precategory C f)
- ( hom-iso-Large-Precategory C f)
- ( h))) ∙
- ( ( ap
- ( λ h' → comp-hom-Large-Precategory C h' h)
- ( is-retraction-hom-inv-iso-Large-Precategory C f)) ∙
- ( left-unit-law-comp-hom-Large-Precategory C h)))))))
+ ( h))) ∙
+ ( ap
+ ( λ h' → comp-hom-Large-Precategory C h' h)
+ ( is-retraction-hom-inv-iso-Large-Precategory C f)) ∙
+ ( left-unit-law-comp-hom-Large-Precategory C h))
( λ p →
- eq-is-prop
+ ( eq-is-prop
( is-set-hom-Large-Precategory C Z Y
( comp-hom-Large-Precategory C
( hom-iso-Large-Precategory C f)
( g))
( comp-hom-Large-Precategory C
( hom-iso-Large-Precategory C f)
- ( h))))
+ ( h)))))
( λ p → eq-is-prop (is-set-hom-Large-Precategory C Z X g h))
```
diff --git a/src/category-theory/pullbacks-in-large-precategories.lagda.md b/src/category-theory/pullbacks-in-large-precategories.lagda.md
new file mode 100644
index 0000000000..16500013ba
--- /dev/null
+++ b/src/category-theory/pullbacks-in-large-precategories.lagda.md
@@ -0,0 +1,186 @@
+# Pullbacks in large precategories
+
+```agda
+module category-theory.pullbacks-in-large-precategories where
+```
+
+Imports
+
+```agda
+open import category-theory.large-precategories
+
+open import foundation.action-on-identifications-functions
+open import foundation.cartesian-product-types
+open import foundation.contractible-types
+open import foundation.dependent-pair-types
+open import foundation.identity-types
+open import foundation.propositions
+open import foundation.unique-existence
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+A pullback of two morphisms `f : hom y x` and `g : hom z x` in a category `C`
+consists of:
+
+- an object `w`
+- morphisms `p : hom w y` and `q : hom w z` such that
+- `f ∘ p = g ∘ q` together with the universal property that for every object
+ `w'` and pair of morphisms `p' : hom w' y` and `q' : hom w' z` such that
+ `f ∘ p' = g ∘ q'` there exists a unique morphism `h : hom w' w` such that
+- `p ∘ h = p'`
+- `q ∘ h = q'`.
+
+We say that `C` has all pullbacks if there is a choice of a pullback for each
+object `x` and pair of morphisms into `x` in `C`.
+
+## Definition
+
+```agda
+module _
+ {α : Level → Level} {β : Level → Level → Level}
+ (C : Large-Precategory α β) {l1 l2 l3 l4 : Level}
+ where
+
+ is-pullback-Large-Precategory :
+ (x : obj-Large-Precategory C l1)
+ (y : obj-Large-Precategory C l2)
+ (z : obj-Large-Precategory C l3)
+ (f : hom-Large-Precategory C y x)
+ (g : hom-Large-Precategory C z x) →
+ (w : obj-Large-Precategory C l4)
+ (p : hom-Large-Precategory C w y) →
+ (q : hom-Large-Precategory C w z) →
+ comp-hom-Large-Precategory C f p = comp-hom-Large-Precategory C g q →
+ UU (α l1 ⊔ β l1 l1 ⊔ β l1 l2 ⊔ β l1 l3 ⊔ β l1 l4)
+ is-pullback-Large-Precategory x y z f g w p q _ =
+ (w' : obj-Large-Precategory C l1) →
+ (p' : hom-Large-Precategory C w' y) →
+ (q' : hom-Large-Precategory C w' z) →
+ comp-hom-Large-Precategory C f p' = comp-hom-Large-Precategory C g q' →
+ ∃!
+ ( hom-Large-Precategory C w' w)
+ ( λ h →
+ ( comp-hom-Large-Precategory C p h = p') ×
+ ( comp-hom-Large-Precategory C q h = q'))
+
+ pullback-Large-Precategory :
+ (x : obj-Large-Precategory C l1) →
+ (y : obj-Large-Precategory C l2) →
+ (z : obj-Large-Precategory C l3) →
+ hom-Large-Precategory C y x →
+ hom-Large-Precategory C z x →
+ UU (α l1 ⊔ α l4 ⊔ β l1 l1 ⊔ β l1 l2 ⊔ β l1 l3 ⊔
+ β l1 l4 ⊔ β l4 l1 ⊔ β l4 l2 ⊔ β l4 l3)
+ pullback-Large-Precategory x y z f g =
+ Σ (obj-Large-Precategory C l4) λ w →
+ Σ (hom-Large-Precategory C w y) λ p →
+ Σ (hom-Large-Precategory C w z) λ q →
+ Σ (comp-hom-Large-Precategory C f p
+ = comp-hom-Large-Precategory C g q) λ α →
+ is-pullback-Large-Precategory x y z f g w p q α
+
+ has-all-pullbacks-Large-Precategory :
+ UU (α l1 ⊔ α l2 ⊔ α l3 ⊔ α l4 ⊔ β l1 l1 ⊔ β l1 l2 ⊔ β l1 l3 ⊔
+ β l1 l4 ⊔ β l2 l1 ⊔ β l3 l1 ⊔ β l4 l1 ⊔ β l4 l2 ⊔ β l4 l3)
+ has-all-pullbacks-Large-Precategory =
+ (x : obj-Large-Precategory C l1) →
+ (y : obj-Large-Precategory C l2) →
+ (z : obj-Large-Precategory C l3) →
+ (f : hom-Large-Precategory C y x) →
+ (g : hom-Large-Precategory C z x) →
+ pullback-Large-Precategory x y z f g
+
+module _
+ {α : Level → Level} {β : Level → Level → Level}
+ (C : Large-Precategory α β) {l1 l2 : Level}
+ (t : has-all-pullbacks-Large-Precategory C)
+ (x y z : obj-Large-Precategory C l1)
+ (f : hom-Large-Precategory C y x)
+ (g : hom-Large-Precategory C z x)
+ where
+
+ object-pullback-Large-Precategory : obj-Large-Precategory C l2
+ object-pullback-Large-Precategory = pr1 (t x y z f g)
+
+ pr1-pullback-Large-Precategory :
+ hom-Large-Precategory C object-pullback-Large-Precategory y
+ pr1-pullback-Large-Precategory = pr1 (pr2 (t x y z f g))
+
+ pr2-pullback-Large-Precategory :
+ hom-Large-Precategory C object-pullback-Large-Precategory z
+ pr2-pullback-Large-Precategory = pr1 (pr2 (pr2 (t x y z f g)))
+
+ pullback-square-Large-Precategory-comm :
+ comp-hom-Large-Precategory C f pr1-pullback-Large-Precategory =
+ comp-hom-Large-Precategory C g pr2-pullback-Large-Precategory
+ pullback-square-Large-Precategory-comm = pr1 (pr2 (pr2 (pr2 (t x y z f g))))
+
+ module _
+ (w' : obj-Large-Precategory C l1)
+ (p' : hom-Large-Precategory C w' y)
+ (q' : hom-Large-Precategory C w' z)
+ (ε : comp-hom-Large-Precategory C f p'
+ = comp-hom-Large-Precategory C g q')
+ where
+
+ morphism-into-pullback-Large-Precategory :
+ hom-Large-Precategory C w' object-pullback-Large-Precategory
+ morphism-into-pullback-Large-Precategory =
+ pr1 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε))
+
+ morphism-into-pullback-comm-pr1-Large-Precategory :
+ comp-hom-Large-Precategory C
+ pr1-pullback-Large-Precategory
+ morphism-into-pullback-Large-Precategory =
+ p'
+ morphism-into-pullback-comm-pr1-Large-Precategory =
+ pr1 (pr2 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε)))
+
+ morphism-into-pullback-comm-pr2-Large-Precategory :
+ comp-hom-Large-Precategory C
+ pr2-pullback-Large-Precategory
+ morphism-into-pullback-Large-Precategory =
+ q'
+ morphism-into-pullback-comm-pr2-Large-Precategory =
+ pr2 (pr2 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε)))
+
+ is-unique-morphism-into-pullback-Large-Precategory :
+ (h' : hom-Large-Precategory C w' object-pullback-Large-Precategory) →
+ comp-hom-Large-Precategory C pr1-pullback-Large-Precategory h' = p' →
+ comp-hom-Large-Precategory C pr2-pullback-Large-Precategory h' = q' →
+ morphism-into-pullback-Large-Precategory = h'
+ is-unique-morphism-into-pullback-Large-Precategory h' η θ =
+ ap
+ ( pr1)
+ ( pr2 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε) (h' , η , θ))
+
+module _
+ {α : Level → Level} {β : Level → Level → Level}
+ {l1 l2 l3 l4 : Level} (C : Large-Precategory α β)
+ (x : obj-Large-Precategory C l1)
+ (y : obj-Large-Precategory C l2)
+ (z : obj-Large-Precategory C l3)
+ (f : hom-Large-Precategory C y x)
+ (g : hom-Large-Precategory C z x)
+ (w : obj-Large-Precategory C l4)
+ (p : hom-Large-Precategory C w y)
+ (q : hom-Large-Precategory C w z)
+ (ε : comp-hom-Large-Precategory C f p = comp-hom-Large-Precategory C g q)
+ where
+
+ is-prop-is-pullback-Large-Precategory :
+ is-prop (is-pullback-Large-Precategory C x y z f g w p q ε)
+ is-prop-is-pullback-Large-Precategory =
+ is-prop-Π³ (λ w' p' q' → is-prop-function-type is-property-is-contr)
+
+ is-pullback-prop-Large-Precategory :
+ Prop (α l1 ⊔ β l1 l1 ⊔ β l1 l2 ⊔ β l1 l3 ⊔ β l1 l4)
+ pr1 is-pullback-prop-Large-Precategory =
+ is-pullback-Large-Precategory C x y z f g w p q ε
+ pr2 is-pullback-prop-Large-Precategory =
+ is-prop-is-pullback-Large-Precategory
+```
diff --git a/src/category-theory/pullbacks-in-precategories.lagda.md b/src/category-theory/pullbacks-in-precategories.lagda.md
index 6a5d2efeb8..e529c81d9a 100644
--- a/src/category-theory/pullbacks-in-precategories.lagda.md
+++ b/src/category-theory/pullbacks-in-precategories.lagda.md
@@ -27,12 +27,12 @@ A pullback of two morphisms `f : hom y x` and `g : hom z x` in a category `C`
consists of:
- an object `w`
-- morphisms `p₁ : hom w y` and `p₂ : hom w z` such that
-- `f ∘ p₁ = g ∘ p₂` together with the universal property that for every object
- `w'` and pair of morphisms `p₁' : hom w' y` and `p₂' : hom w' z` such that
- `f ∘ p₁' = g ∘ p₂'` there exists a unique morphism `h : hom w' w` such that
-- `p₁ ∘ h = p₁'`
-- `p₂ ∘ h = p₂'`.
+- morphisms `p : hom w y` and `q : hom w z` such that
+- `f ∘ p = g ∘ q` together with the universal property that for every object
+ `w'` and pair of morphisms `p' : hom w' y` and `q' : hom w' z` such that
+ `f ∘ p' = g ∘ q'` there exists a unique morphism `h : hom w' w` such that
+- `p ∘ h = p'`
+- `q ∘ h = q'`.
We say that `C` has all pullbacks if there is a choice of a pullback for each
object `x` and pair of morphisms into `x` in `C`.
@@ -49,20 +49,20 @@ module _
(f : hom-Precategory C y x) →
(g : hom-Precategory C z x) →
(w : obj-Precategory C) →
- (p₁ : hom-Precategory C w y) →
- (p₂ : hom-Precategory C w z) →
- comp-hom-Precategory C f p₁ = comp-hom-Precategory C g p₂ →
+ (p : hom-Precategory C w y) →
+ (q : hom-Precategory C w z) →
+ comp-hom-Precategory C f p = comp-hom-Precategory C g q →
UU (l1 ⊔ l2)
- is-pullback-Precategory x y z f g w p₁ p₂ _ =
+ is-pullback-Precategory x y z f g w p q _ =
(w' : obj-Precategory C) →
- (p₁' : hom-Precategory C w' y) →
- (p₂' : hom-Precategory C w' z) →
- comp-hom-Precategory C f p₁' = comp-hom-Precategory C g p₂' →
+ (p' : hom-Precategory C w' y) →
+ (q' : hom-Precategory C w' z) →
+ comp-hom-Precategory C f p' = comp-hom-Precategory C g q' →
∃!
( hom-Precategory C w' w)
( λ h →
- ( comp-hom-Precategory C p₁ h = p₁') ×
- ( comp-hom-Precategory C p₂ h = p₂'))
+ ( comp-hom-Precategory C p h = p') ×
+ ( comp-hom-Precategory C q h = q'))
pullback-Precategory :
(x y z : obj-Precategory C) →
@@ -71,13 +71,13 @@ module _
UU (l1 ⊔ l2)
pullback-Precategory x y z f g =
Σ (obj-Precategory C) λ w →
- Σ (hom-Precategory C w y) λ p₁ →
- Σ (hom-Precategory C w z) λ p₂ →
- Σ (comp-hom-Precategory C f p₁ = comp-hom-Precategory C g p₂) λ α →
- is-pullback-Precategory x y z f g w p₁ p₂ α
+ Σ (hom-Precategory C w y) λ p →
+ Σ (hom-Precategory C w z) λ q →
+ Σ (comp-hom-Precategory C f p = comp-hom-Precategory C g q) λ α →
+ is-pullback-Precategory x y z f g w p q α
- has-all-pullback-Precategory : UU (l1 ⊔ l2)
- has-all-pullback-Precategory =
+ has-all-pullbacks-Precategory : UU (l1 ⊔ l2)
+ has-all-pullbacks-Precategory =
(x y z : obj-Precategory C) →
(f : hom-Precategory C y x) →
(g : hom-Precategory C z x) →
@@ -85,7 +85,7 @@ module _
module _
{l1 l2 : Level} (C : Precategory l1 l2)
- (t : has-all-pullback-Precategory C)
+ (t : has-all-pullbacks-Precategory C)
(x y z : obj-Precategory C)
(f : hom-Precategory C y x)
(g : hom-Precategory C z x)
@@ -109,41 +109,41 @@ module _
module _
(w' : obj-Precategory C)
- (p₁' : hom-Precategory C w' y)
- (p₂' : hom-Precategory C w' z)
- (α : comp-hom-Precategory C f p₁' = comp-hom-Precategory C g p₂')
+ (p' : hom-Precategory C w' y)
+ (q' : hom-Precategory C w' z)
+ (ε : comp-hom-Precategory C f p' = comp-hom-Precategory C g q')
where
morphism-into-pullback-Precategory :
hom-Precategory C w' object-pullback-Precategory
morphism-into-pullback-Precategory =
- pr1 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p₁' p₂' α))
+ pr1 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε))
- morphism-into-pullback-comm-pr1 :
+ morphism-into-pullback-comm-pr1-Precategory :
comp-hom-Precategory C
pr1-pullback-Precategory
morphism-into-pullback-Precategory =
- p₁'
- morphism-into-pullback-comm-pr1 =
- pr1 (pr2 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p₁' p₂' α)))
+ p'
+ morphism-into-pullback-comm-pr1-Precategory =
+ pr1 (pr2 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε)))
- morphism-into-pullback-comm-pr2 :
+ morphism-into-pullback-comm-pr2-Precategory :
comp-hom-Precategory C
pr2-pullback-Precategory
morphism-into-pullback-Precategory =
- p₂'
- morphism-into-pullback-comm-pr2 =
- pr2 (pr2 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p₁' p₂' α)))
+ q'
+ morphism-into-pullback-comm-pr2-Precategory =
+ pr2 (pr2 (pr1 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε)))
is-unique-morphism-into-pullback-Precategory :
(h' : hom-Precategory C w' object-pullback-Precategory) →
- comp-hom-Precategory C pr1-pullback-Precategory h' = p₁' →
- comp-hom-Precategory C pr2-pullback-Precategory h' = p₂' →
+ comp-hom-Precategory C pr1-pullback-Precategory h' = p' →
+ comp-hom-Precategory C pr2-pullback-Precategory h' = q' →
morphism-into-pullback-Precategory = h'
- is-unique-morphism-into-pullback-Precategory h' α₁ α₂ =
+ is-unique-morphism-into-pullback-Precategory h' η θ =
ap
( pr1)
- ( pr2 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p₁' p₂' α) (h' , α₁ , α₂))
+ ( pr2 (pr2 (pr2 (pr2 (pr2 (t x y z f g)))) w' p' q' ε) (h' , η , θ))
module _
{l1 l2 : Level} (C : Precategory l1 l2)
@@ -151,19 +151,19 @@ module _
(f : hom-Precategory C y x)
(g : hom-Precategory C z x)
(w : obj-Precategory C)
- (p₁ : hom-Precategory C w y)
- (p₂ : hom-Precategory C w z)
- (α : comp-hom-Precategory C f p₁ = comp-hom-Precategory C g p₂)
+ (p : hom-Precategory C w y)
+ (q : hom-Precategory C w z)
+ (ε : comp-hom-Precategory C f p = comp-hom-Precategory C g q)
where
is-prop-is-pullback-Precategory :
- is-prop (is-pullback-Precategory C x y z f g w p₁ p₂ α)
+ is-prop (is-pullback-Precategory C x y z f g w p q ε)
is-prop-is-pullback-Precategory =
- is-prop-Π³ (λ w' p₁' p₂' → is-prop-function-type is-property-is-contr)
+ is-prop-Π³ (λ w' p' q' → is-prop-function-type is-property-is-contr)
is-pullback-prop-Precategory : Prop (l1 ⊔ l2)
pr1 is-pullback-prop-Precategory =
- is-pullback-Precategory C x y z f g w p₁ p₂ α
+ is-pullback-Precategory C x y z f g w p q ε
pr2 is-pullback-prop-Precategory =
is-prop-is-pullback-Precategory
```
diff --git a/src/category-theory/subobject-classifier-in-large-precategories.lagda.md b/src/category-theory/subobject-classifier-in-large-precategories.lagda.md
new file mode 100644
index 0000000000..a9fa34245e
--- /dev/null
+++ b/src/category-theory/subobject-classifier-in-large-precategories.lagda.md
@@ -0,0 +1,29 @@
+# The subobject classifier in large precategories
+
+```agda
+module category-theory.subobject-classifier-in-large-precategories where
+```
+
+Imports
+
+```agda
+open import category-theory.large-precategories
+open import category-theory.monomorphisms-in-large-precategories
+
+open import foundation.equivalence-relations
+open import foundation.equivalences
+open import foundation.universe-levels
+```
+
+
+
+## Definition
+
+```agda
+module _
+ {α : Level → Level} {β : Level → Level → Level}
+ (C : Large-Precategory α β) {l1 l2 : Level} (l3 : Level)
+ (S : obj-Large-Precategory C l1) (X : obj-Large-Precategory C l2)
+ (m : mono-Large-Precategory C l3 S X)
+ where
+```