diff --git a/CODINGSTYLE.md b/CODINGSTYLE.md
index b02c0b2eb0..6e0d1a3f12 100644
--- a/CODINGSTYLE.md
+++ b/CODINGSTYLE.md
@@ -284,7 +284,7 @@ the `agda-unimath` library:
need to sort them by hand.
- The library doesn't use
- [variables](https://agda.readthedocs.io/en/v2.6.3/language/generalization-of-declared-variables.html)
+ [variables](https://agda.readthedocs.io/en/latest/language/generalization-of-declared-variables.html)
at the moment. All variables are declared either as parameters of an anonymous
module or in the type specification of a construction.
diff --git a/MIXFIX-OPERATORS.md b/MIXFIX-OPERATORS.md
index e2bc34c8a3..0eb4646cc4 100644
--- a/MIXFIX-OPERATORS.md
+++ b/MIXFIX-OPERATORS.md
@@ -2,7 +2,7 @@
This document outlines our choices of conventions for setting precedence levels
and associativity of
-[mixfix operators in Agda](https://agda.readthedocs.io/en/v2.6.3.20230805/language/mixfix-operators.html),
+[mixfix operators in Agda](https://agda.readthedocs.io/en/latest/language/mixfix-operators.html),
and provides guidelines for this.
## Mixfix operators in Agda
@@ -16,7 +16,7 @@ and mixfix operators in Agda is to make the code more readable by using commonly
accepted notation for widely used operators.
Mixfix operators can each be assigned a
-[precedence level](https://agda.readthedocs.io/en/v2.6.3.20230805/language/mixfix-operators.html#precedence).
+[precedence level](https://agda.readthedocs.io/en/latest/language/mixfix-operators.html#precedence).
This can in principle be any signed fractional value, although we prefer them to
be non-negative integral values. The higher this value is, the higher precedence
the operator has, meaning it is evaluated before operators with lower
@@ -32,7 +32,7 @@ is parsed as `x +ℕ (y *ℕ z)`.
In addition to a precedence level, every mixfix operator can be defined to be
either left or right
-[associative](https://agda.readthedocs.io/en/v2.6.3.20230805/language/mixfix-operators.html#associativity).
+[associative](https://agda.readthedocs.io/en/latest/language/mixfix-operators.html#associativity).
It can be beneficial to define associativity of operators, to avoid excessively
parenthesized expressions. The parenthization should, however, never be omitted
when this can make the code more ambiguous or harder to read.
diff --git a/src/category-theory.lagda.md b/src/category-theory.lagda.md
index d53f0377e8..c93bad90f1 100644
--- a/src/category-theory.lagda.md
+++ b/src/category-theory.lagda.md
@@ -13,6 +13,7 @@
```agda
module category-theory where
+open import category-theory.adjunctions-large-categories public
open import category-theory.adjunctions-large-precategories public
open import category-theory.anafunctors-categories public
open import category-theory.anafunctors-precategories public
@@ -48,6 +49,7 @@ open import category-theory.function-precategories public
open import category-theory.functors-categories public
open import category-theory.functors-from-small-to-large-categories public
open import category-theory.functors-from-small-to-large-precategories public
+open import category-theory.functors-large-categories public
open import category-theory.functors-large-precategories public
open import category-theory.functors-precategories public
open import category-theory.groupoids public
@@ -78,6 +80,7 @@ open import category-theory.natural-isomorphisms-maps-precategories public
open import category-theory.natural-numbers-object-precategories public
open import category-theory.natural-transformations-functors-categories public
open import category-theory.natural-transformations-functors-from-small-to-large-precategories public
+open import category-theory.natural-transformations-functors-large-categories public
open import category-theory.natural-transformations-functors-large-precategories public
open import category-theory.natural-transformations-functors-precategories public
open import category-theory.natural-transformations-maps-categories public
diff --git a/src/category-theory/adjunctions-large-categories.lagda.md b/src/category-theory/adjunctions-large-categories.lagda.md
new file mode 100644
index 0000000000..227d94a5f6
--- /dev/null
+++ b/src/category-theory/adjunctions-large-categories.lagda.md
@@ -0,0 +1,505 @@
+# Adjunctions between large categories
+
+```agda
+module category-theory.adjunctions-large-categories where
+```
+
+Imports
+
+```agda
+open import category-theory.adjunctions-large-precategories
+open import category-theory.functors-large-categories
+open import category-theory.large-categories
+open import category-theory.natural-transformations-functors-large-categories
+
+open import foundation.commuting-squares-of-maps
+open import foundation.equivalences
+open import foundation.identity-types
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+Let `C` and `D` be two [large categories](category-theory.large-categories.md).
+Two [functors](category-theory.functors-large-categories.md) `F : C → D` and
+`G : D → C` constitute an **adjoint pair** if
+
+- for each pair of objects `X` in `C` and `Y` in `D`, there is an
+ [equivalence](foundation-core.equivalences.md)
+ `ϕ X Y : hom X (G Y) ≃ hom (F X) Y` such that
+- for every pair of morhpisms `f : X₂ → X₁` and `g : Y₁ → Y₂` the following
+ square commutes:
+
+```text
+ ϕ X₁ Y₁
+ hom X₁ (G Y₁) --------> hom (F X₁) Y₁
+ | |
+ G g ∘ _ ∘ f | | g ∘ _ ∘ F f
+ | |
+ v v
+ hom X₂ (G Y₂) --------> hom (F X₂) Y₂
+ ϕ X₂ Y₂
+```
+
+In this case we say that `F` is **left adjoint** to `G` and `G` is **right
+adjoint** to `F` and write this as `F ⊣ G`.
+
+## Definition
+
+### The predicate of being an adjoint pair of functors
+
+```agda
+module _
+ {αC αD γF γG : Level → Level}
+ {βC βD : Level → Level → Level}
+ (C : Large-Category αC βC)
+ (D : Large-Category αD βD)
+ (F : functor-Large-Category γF C D)
+ (G : functor-Large-Category γG D C)
+ where
+
+ family-of-equivalences-adjoint-pair-Large-Category : UUω
+ family-of-equivalences-adjoint-pair-Large-Category =
+ family-of-equivalences-adjoint-pair-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ naturality-family-of-equivalences-adjoint-pair-Large-Category :
+ family-of-equivalences-adjoint-pair-Large-Category → UUω
+ naturality-family-of-equivalences-adjoint-pair-Large-Category =
+ naturality-family-of-equivalences-adjoint-pair-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ is-adjoint-pair-Large-Category : UUω
+ is-adjoint-pair-Large-Category =
+ is-adjoint-pair-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ equiv-is-adjoint-pair-Large-Category :
+ is-adjoint-pair-Large-Category →
+ family-of-equivalences-adjoint-pair-Large-Category
+ equiv-is-adjoint-pair-Large-Category =
+ equiv-is-adjoint-pair-Large-Precategory
+
+ naturality-equiv-is-adjoint-pair-Large-Category :
+ (H : is-adjoint-pair-Large-Category) →
+ naturality-family-of-equivalences-adjoint-pair-Large-Category
+ ( equiv-is-adjoint-pair-Large-Precategory H)
+ naturality-equiv-is-adjoint-pair-Large-Category =
+ naturality-equiv-is-adjoint-pair-Large-Precategory
+
+ map-equiv-is-adjoint-pair-Large-Category :
+ (H : is-adjoint-pair-Large-Category) {l1 l2 : Level}
+ (X : obj-Large-Category C l1) (Y : obj-Large-Category D l2) →
+ hom-Large-Category C X (obj-functor-Large-Category D C G Y) →
+ hom-Large-Category D (obj-functor-Large-Category C D F X) Y
+ map-equiv-is-adjoint-pair-Large-Category =
+ map-equiv-is-adjoint-pair-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ inv-equiv-is-adjoint-pair-Large-Category :
+ (H : is-adjoint-pair-Large-Category) {l1 l2 : Level}
+ (X : obj-Large-Category C l1) (Y : obj-Large-Category D l2) →
+ hom-Large-Category D (obj-functor-Large-Category C D F X) Y ≃
+ hom-Large-Category C X (obj-functor-Large-Category D C G Y)
+ inv-equiv-is-adjoint-pair-Large-Category =
+ inv-equiv-is-adjoint-pair-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ map-inv-equiv-is-adjoint-pair-Large-Category :
+ (H : is-adjoint-pair-Large-Category) {l1 l2 : Level}
+ (X : obj-Large-Category C l1) (Y : obj-Large-Category D l2) →
+ hom-Large-Category D (obj-functor-Large-Category C D F X) Y →
+ hom-Large-Category C X (obj-functor-Large-Category D C G Y)
+ map-inv-equiv-is-adjoint-pair-Large-Category =
+ map-inv-equiv-is-adjoint-pair-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ naturality-inv-equiv-is-adjoint-pair-Large-Category :
+ ( H : is-adjoint-pair-Large-Category)
+ { l1 l2 l3 l4 : Level}
+ { X1 : obj-Large-Category C l1}
+ { X2 : obj-Large-Category C l2}
+ { Y1 : obj-Large-Category D l3}
+ { Y2 : obj-Large-Category D l4}
+ ( f : hom-Large-Category C X2 X1)
+ ( g : hom-Large-Category D Y1 Y2) →
+ coherence-square-maps
+ ( map-inv-equiv-is-adjoint-pair-Large-Category H X1 Y1)
+ ( λ h →
+ comp-hom-Large-Category D
+ ( comp-hom-Large-Category D g h)
+ ( hom-functor-Large-Category C D F f))
+ ( λ h →
+ comp-hom-Large-Category C
+ ( comp-hom-Large-Category C (hom-functor-Large-Category D C G g) h)
+ ( f))
+ ( map-inv-equiv-is-adjoint-pair-Large-Category H X2 Y2)
+ naturality-inv-equiv-is-adjoint-pair-Large-Category =
+ naturality-inv-equiv-is-adjoint-pair-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+```
+
+### The predicate of being a left adjoint
+
+```agda
+module _
+ {αC αD γF γG : Level → Level}
+ {βC βD : Level → Level → Level}
+ {C : Large-Category αC βC}
+ {D : Large-Category αD βD}
+ (G : functor-Large-Category γG D C)
+ (F : functor-Large-Category γF C D)
+ where
+
+ is-left-adjoint-functor-Large-Category : UUω
+ is-left-adjoint-functor-Large-Category =
+ is-adjoint-pair-Large-Category C D F G
+```
+
+### The predicate of being a right adjoint
+
+```agda
+module _
+ {αC αD γF γG : Level → Level}
+ {βC βD : Level → Level → Level}
+ {C : Large-Category αC βC}
+ {D : Large-Category αD βD}
+ (F : functor-Large-Category γF C D)
+ (G : functor-Large-Category γG D C)
+ where
+
+ is-right-adjoint-functor-Large-Category : UUω
+ is-right-adjoint-functor-Large-Category =
+ is-adjoint-pair-Large-Category C D F G
+```
+
+### Adjunctions of large precategories
+
+```agda
+module _
+ {αC αD : Level → Level}
+ {βC βD : Level → Level → Level}
+ (γ δ : Level → Level)
+ (C : Large-Category αC βC)
+ (D : Large-Category αD βD)
+ where
+
+ Adjunction-Large-Category : UUω
+ Adjunction-Large-Category =
+ Adjunction-Large-Precategory γ δ
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+
+module _
+ {αC αD : Level → Level}
+ {βC βD : Level → Level → Level}
+ {γ δ : Level → Level}
+ (C : Large-Category αC βC)
+ (D : Large-Category αD βD)
+ (F : Adjunction-Large-Category γ δ C D)
+ where
+
+ left-adjoint-Adjunction-Large-Category :
+ functor-Large-Category γ C D
+ left-adjoint-Adjunction-Large-Category =
+ left-adjoint-Adjunction-Large-Precategory F
+
+ right-adjoint-Adjunction-Large-Category :
+ functor-Large-Category δ D C
+ right-adjoint-Adjunction-Large-Category =
+ right-adjoint-Adjunction-Large-Precategory F
+
+ is-adjoint-pair-Adjunction-Large-Category :
+ is-adjoint-pair-Large-Category C D
+ ( left-adjoint-Adjunction-Large-Category)
+ ( right-adjoint-Adjunction-Large-Category)
+ is-adjoint-pair-Adjunction-Large-Category =
+ is-adjoint-pair-Adjunction-Large-Precategory F
+
+ obj-left-adjoint-Adjunction-Large-Category :
+ {l : Level} → obj-Large-Category C l → obj-Large-Category D (γ l)
+ obj-left-adjoint-Adjunction-Large-Category =
+ obj-left-adjoint-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ hom-left-adjoint-Adjunction-Large-Category :
+ {l1 l2 : Level}
+ {X : obj-Large-Category C l1}
+ {Y : obj-Large-Category C l2} →
+ hom-Large-Category C X Y →
+ hom-Large-Category D
+ ( obj-left-adjoint-Adjunction-Large-Category X)
+ ( obj-left-adjoint-Adjunction-Large-Category Y)
+ hom-left-adjoint-Adjunction-Large-Category =
+ hom-left-adjoint-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ preserves-id-left-adjoint-Adjunction-Large-Category :
+ {l1 : Level}
+ (X : obj-Large-Category C l1) →
+ hom-left-adjoint-Adjunction-Large-Category
+ ( id-hom-Large-Category C {X = X}) =
+ id-hom-Large-Category D
+ preserves-id-left-adjoint-Adjunction-Large-Category =
+ preserves-id-left-adjoint-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ obj-right-adjoint-Adjunction-Large-Category :
+ {l1 : Level} → obj-Large-Category D l1 → obj-Large-Category C (δ l1)
+ obj-right-adjoint-Adjunction-Large-Category =
+ obj-right-adjoint-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ hom-right-adjoint-Adjunction-Large-Category :
+ {l1 l2 : Level}
+ {X : obj-Large-Category D l1}
+ {Y : obj-Large-Category D l2} →
+ hom-Large-Category D X Y →
+ hom-Large-Category C
+ ( obj-right-adjoint-Adjunction-Large-Category X)
+ ( obj-right-adjoint-Adjunction-Large-Category Y)
+ hom-right-adjoint-Adjunction-Large-Category =
+ hom-right-adjoint-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ preserves-id-right-adjoint-Adjunction-Large-Category :
+ {l : Level}
+ (Y : obj-Large-Category D l) →
+ hom-right-adjoint-Adjunction-Large-Category
+ ( id-hom-Large-Category D {X = Y}) =
+ id-hom-Large-Category C
+ preserves-id-right-adjoint-Adjunction-Large-Category =
+ preserves-id-right-adjoint-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ equiv-is-adjoint-pair-Adjunction-Large-Category :
+ family-of-equivalences-adjoint-pair-Large-Category C D
+ ( left-adjoint-Adjunction-Large-Category)
+ ( right-adjoint-Adjunction-Large-Category)
+ equiv-is-adjoint-pair-Adjunction-Large-Category =
+ equiv-is-adjoint-pair-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ map-equiv-is-adjoint-pair-Adjunction-Large-Category :
+ {l1 l2 : Level}
+ (X : obj-Large-Category C l1)
+ (Y : obj-Large-Category D l2) →
+ hom-Large-Category C
+ ( X)
+ ( obj-right-adjoint-Adjunction-Large-Category Y) →
+ hom-Large-Category D
+ ( obj-left-adjoint-Adjunction-Large-Category X)
+ ( Y)
+ map-equiv-is-adjoint-pair-Adjunction-Large-Category =
+ map-equiv-is-adjoint-pair-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ naturality-equiv-is-adjoint-pair-Adjunction-Large-Category :
+ naturality-family-of-equivalences-adjoint-pair-Large-Category C D
+ ( left-adjoint-Adjunction-Large-Category)
+ ( right-adjoint-Adjunction-Large-Category)
+ ( equiv-is-adjoint-pair-Adjunction-Large-Category)
+ naturality-equiv-is-adjoint-pair-Adjunction-Large-Category =
+ naturality-equiv-is-adjoint-pair-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ inv-equiv-is-adjoint-pair-Adjunction-Large-Category :
+ {l1 l2 : Level}
+ (X : obj-Large-Category C l1)
+ (Y : obj-Large-Category D l2) →
+ hom-Large-Category D
+ ( obj-left-adjoint-Adjunction-Large-Category X)
+ ( Y) ≃
+ hom-Large-Category C
+ ( X)
+ ( obj-right-adjoint-Adjunction-Large-Category Y)
+ inv-equiv-is-adjoint-pair-Adjunction-Large-Category =
+ inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ map-inv-equiv-is-adjoint-pair-Adjunction-Large-Category :
+ {l1 l2 : Level}
+ (X : obj-Large-Category C l1)
+ (Y : obj-Large-Category D l2) →
+ hom-Large-Category D
+ ( obj-left-adjoint-Adjunction-Large-Category X)
+ ( Y) →
+ hom-Large-Category C
+ ( X)
+ ( obj-right-adjoint-Adjunction-Large-Category Y)
+ map-inv-equiv-is-adjoint-pair-Adjunction-Large-Category =
+ map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ naturality-inv-equiv-is-adjoint-pair-Adjunction-Large-Category :
+ {l1 l2 l3 l4 : Level}
+ {X1 : obj-Large-Category C l1}
+ {X2 : obj-Large-Category C l2}
+ {Y1 : obj-Large-Category D l3}
+ {Y2 : obj-Large-Category D l4}
+ (f : hom-Large-Category C X2 X1)
+ (g : hom-Large-Category D Y1 Y2) →
+ coherence-square-maps
+ ( map-inv-equiv-is-adjoint-pair-Adjunction-Large-Category X1 Y1)
+ ( λ h →
+ comp-hom-Large-Category D
+ ( comp-hom-Large-Category D g h)
+ ( hom-left-adjoint-Adjunction-Large-Category f))
+ ( λ h →
+ comp-hom-Large-Category C
+ ( comp-hom-Large-Category C
+ ( hom-right-adjoint-Adjunction-Large-Category g)
+ ( h))
+ ( f))
+ ( map-inv-equiv-is-adjoint-pair-Adjunction-Large-Category X2 Y2)
+ naturality-inv-equiv-is-adjoint-pair-Adjunction-Large-Category =
+ naturality-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+```
+
+### The unit of an adjunction
+
+Given an adjoint pair `F ⊣ G`, we construct a natural transformation
+`η : id → G ∘ F` called the **unit** of the adjunction.
+
+```agda
+module _
+ {αC αD : Level → Level} {βC βD : Level → Level → Level} {γ δ : Level → Level}
+ (C : Large-Category αC βC) (D : Large-Category αD βD)
+ (F : Adjunction-Large-Category γ δ C D)
+ where
+
+ hom-unit-Adjunction-Large-Category :
+ family-of-morphisms-functor-Large-Category C C
+ ( id-functor-Large-Category C)
+ ( comp-functor-Large-Category C D C
+ ( right-adjoint-Adjunction-Large-Category C D F)
+ ( left-adjoint-Adjunction-Large-Category C D F))
+ hom-unit-Adjunction-Large-Category =
+ hom-unit-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ naturality-unit-Adjunction-Large-Category :
+ naturality-family-of-morphisms-functor-Large-Category C C
+ ( id-functor-Large-Category C)
+ ( comp-functor-Large-Category C D C
+ ( right-adjoint-Adjunction-Large-Category C D F)
+ ( left-adjoint-Adjunction-Large-Category C D F))
+ ( hom-unit-Adjunction-Large-Category)
+ naturality-unit-Adjunction-Large-Category =
+ naturality-unit-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ unit-Adjunction-Large-Category :
+ natural-transformation-Large-Category C C
+ ( id-functor-Large-Category C)
+ ( comp-functor-Large-Category C D C
+ ( right-adjoint-Adjunction-Large-Category C D F)
+ ( left-adjoint-Adjunction-Large-Category C D F))
+ unit-Adjunction-Large-Category =
+ unit-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+```
+
+### The counit of an adjunction
+
+Given an adjoint pair `F ⊣ G`, we construct a natural transformation
+`ε : F ∘ G → id` called the **counit** of the adjunction.
+
+```agda
+module _
+ {αC αD : Level → Level} {βC βD : Level → Level → Level} {γ δ : Level → Level}
+ (C : Large-Category αC βC) (D : Large-Category αD βD)
+ (F : Adjunction-Large-Category γ δ C D)
+ where
+
+ hom-counit-Adjunction-Large-Category :
+ family-of-morphisms-functor-Large-Category D D
+ ( comp-functor-Large-Category D C D
+ ( left-adjoint-Adjunction-Large-Category C D F)
+ ( right-adjoint-Adjunction-Large-Category C D F))
+ ( id-functor-Large-Category D)
+ hom-counit-Adjunction-Large-Category =
+ hom-counit-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ naturality-counit-Adjunction-Large-Category :
+ naturality-family-of-morphisms-functor-Large-Category D D
+ ( comp-functor-Large-Category D C D
+ ( left-adjoint-Adjunction-Large-Category C D F)
+ ( right-adjoint-Adjunction-Large-Category C D F))
+ ( id-functor-Large-Category D)
+ ( hom-counit-Adjunction-Large-Category)
+ naturality-counit-Adjunction-Large-Category =
+ naturality-counit-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ counit-Adjunction-Large-Category :
+ natural-transformation-Large-Category D D
+ ( comp-functor-Large-Category D C D
+ ( left-adjoint-Adjunction-Large-Category C D F)
+ ( right-adjoint-Adjunction-Large-Category C D F))
+ ( id-functor-Large-Category D)
+ counit-Adjunction-Large-Category =
+ counit-Adjunction-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+```
diff --git a/src/category-theory/adjunctions-large-precategories.lagda.md b/src/category-theory/adjunctions-large-precategories.lagda.md
index b2e769fb1d..0429b48e51 100644
--- a/src/category-theory/adjunctions-large-precategories.lagda.md
+++ b/src/category-theory/adjunctions-large-precategories.lagda.md
@@ -34,13 +34,13 @@ Let `C` and `D` be two
square commutes:
```text
- ϕ X₁ Y₁
- hom X₁ (G Y₁) --------> hom (F X₁) Y₁
- | |
-G g ∘ _ ∘ f | | g ∘ _ ∘ F f
- | |
- v v
- hom X₂ (G Y₂) --------> hom (F X₂) Y₂
+ ϕ X₁ Y₁
+ hom X₁ (G Y₁) --------> hom (F X₁) Y₁
+ | |
+ G g ∘ _ ∘ f | | g ∘ _ ∘ F f
+ | |
+ v v
+ hom X₂ (G Y₂) --------> hom (F X₂) Y₂
ϕ X₂ Y₂
```
@@ -49,65 +49,71 @@ adjoint** to `F` and write this as `F ⊣ G`.
## Definition
+### The predicate of being an adjoint pair of functors
+
```agda
module _
{αC αD γF γG : Level → Level}
{βC βD : Level → Level → Level}
- {C : Large-Precategory αC βC}
- {D : Large-Precategory αD βD}
- (F : functor-Large-Precategory C D γF)
- (G : functor-Large-Precategory D C γG)
+ (C : Large-Precategory αC βC)
+ (D : Large-Precategory αD βD)
+ (F : functor-Large-Precategory γF C D)
+ (G : functor-Large-Precategory γG D C)
where
+ family-of-equivalences-adjoint-pair-Large-Precategory : UUω
+ family-of-equivalences-adjoint-pair-Large-Precategory =
+ {l1 l2 : Level} (X : obj-Large-Precategory C l1)
+ (Y : obj-Large-Precategory D l2) →
+ hom-Large-Precategory C X (obj-functor-Large-Precategory G Y) ≃
+ hom-Large-Precategory D (obj-functor-Large-Precategory F X) Y
+
+ naturality-family-of-equivalences-adjoint-pair-Large-Precategory :
+ family-of-equivalences-adjoint-pair-Large-Precategory → UUω
+ naturality-family-of-equivalences-adjoint-pair-Large-Precategory e =
+ { l1 l2 l3 l4 : Level}
+ { X1 : obj-Large-Precategory C l1}
+ { X2 : obj-Large-Precategory C l2}
+ { Y1 : obj-Large-Precategory D l3}
+ { Y2 : obj-Large-Precategory D l4}
+ ( f : hom-Large-Precategory C X2 X1)
+ ( g : hom-Large-Precategory D Y1 Y2) →
+ coherence-square-maps
+ ( map-equiv (e X1 Y1))
+ ( λ h →
+ comp-hom-Large-Precategory C
+ ( comp-hom-Large-Precategory C
+ ( hom-functor-Large-Precategory G g)
+ ( h))
+ ( f))
+ ( λ h →
+ comp-hom-Large-Precategory D
+ ( comp-hom-Large-Precategory D g h)
+ ( hom-functor-Large-Precategory F f))
+ ( map-equiv (e X2 Y2))
+
record is-adjoint-pair-Large-Precategory : UUω
where
field
equiv-is-adjoint-pair-Large-Precategory :
- {l1 l2 : Level} (X : obj-Large-Precategory C l1)
- (Y : obj-Large-Precategory D l2) →
- ( hom-Large-Precategory C
- ( X)
- ( obj-functor-Large-Precategory G Y)) ≃
- ( hom-Large-Precategory D
- ( obj-functor-Large-Precategory F X)
- ( Y))
+ family-of-equivalences-adjoint-pair-Large-Precategory
naturality-equiv-is-adjoint-pair-Large-Precategory :
- { l1 l2 l3 l4 : Level}
- { X1 : obj-Large-Precategory C l1}
- { X2 : obj-Large-Precategory C l2}
- { Y1 : obj-Large-Precategory D l3}
- { Y2 : obj-Large-Precategory D l4}
- ( f : hom-Large-Precategory C X2 X1)
- ( g : hom-Large-Precategory D Y1 Y2) →
- coherence-square-maps
- ( map-equiv (equiv-is-adjoint-pair-Large-Precategory X1 Y1))
- ( λ h →
- comp-hom-Large-Precategory C
- ( comp-hom-Large-Precategory C
- ( hom-functor-Large-Precategory G g)
- ( h))
- ( f))
- ( λ h →
- comp-hom-Large-Precategory D
- ( comp-hom-Large-Precategory D g h)
- ( hom-functor-Large-Precategory F f))
- ( map-equiv (equiv-is-adjoint-pair-Large-Precategory X2 Y2))
+ naturality-family-of-equivalences-adjoint-pair-Large-Precategory
+ equiv-is-adjoint-pair-Large-Precategory
open is-adjoint-pair-Large-Precategory public
map-equiv-is-adjoint-pair-Large-Precategory :
(H : is-adjoint-pair-Large-Precategory) {l1 l2 : Level}
(X : obj-Large-Precategory C l1) (Y : obj-Large-Precategory D l2) →
- ( hom-Large-Precategory C X (obj-functor-Large-Precategory G Y)) →
- ( hom-Large-Precategory D (obj-functor-Large-Precategory F X) Y)
+ hom-Large-Precategory C X (obj-functor-Large-Precategory G Y) →
+ hom-Large-Precategory D (obj-functor-Large-Precategory F X) Y
map-equiv-is-adjoint-pair-Large-Precategory H X Y =
map-equiv (equiv-is-adjoint-pair-Large-Precategory H X Y)
inv-equiv-is-adjoint-pair-Large-Precategory :
- (H : is-adjoint-pair-Large-Precategory)
- {l1 l2 : Level}
- (X : obj-Large-Precategory C l1)
- (Y : obj-Large-Precategory D l2) →
+ (H : is-adjoint-pair-Large-Precategory) {l1 l2 : Level}
+ (X : obj-Large-Precategory C l1) (Y : obj-Large-Precategory D l2) →
hom-Large-Precategory D (obj-functor-Large-Precategory F X) Y ≃
hom-Large-Precategory C X (obj-functor-Large-Precategory G Y)
inv-equiv-is-adjoint-pair-Large-Precategory H X Y =
@@ -115,8 +121,7 @@ module _
map-inv-equiv-is-adjoint-pair-Large-Precategory :
(H : is-adjoint-pair-Large-Precategory) {l1 l2 : Level}
- (X : obj-Large-Precategory C l1)
- (Y : obj-Large-Precategory D l2) →
+ (X : obj-Large-Precategory C l1) (Y : obj-Large-Precategory D l2) →
hom-Large-Precategory D (obj-functor-Large-Precategory F X) Y →
hom-Large-Precategory C X (obj-functor-Large-Precategory G Y)
map-inv-equiv-is-adjoint-pair-Large-Precategory H X Y =
@@ -158,160 +163,161 @@ module _
( hom-functor-Large-Precategory F f))
( equiv-is-adjoint-pair-Large-Precategory H X2 Y2)
( naturality-equiv-is-adjoint-pair-Large-Precategory H f g)
+```
+
+### The predicate of being a left adjoint
+```agda
module _
{αC αD γF γG : Level → Level}
{βC βD : Level → Level → Level}
- {C : Large-Precategory αC βC}
- {D : Large-Precategory αD βD}
- (G : functor-Large-Precategory D C γG)
- (F : functor-Large-Precategory C D γF)
+ (C : Large-Precategory αC βC)
+ (D : Large-Precategory αD βD)
+ (G : functor-Large-Precategory γG D C)
+ (F : functor-Large-Precategory γF C D)
where
is-left-adjoint-functor-Large-Precategory : UUω
is-left-adjoint-functor-Large-Precategory =
- is-adjoint-pair-Large-Precategory F G
+ is-adjoint-pair-Large-Precategory C D F G
+```
+
+### The predicate of being a right adjoint
+```agda
module _
{αC αD γF γG : Level → Level}
{βC βD : Level → Level → Level}
- {C : Large-Precategory αC βC}
- {D : Large-Precategory αD βD}
- (F : functor-Large-Precategory C D γF)
- (G : functor-Large-Precategory D C γG)
+ (C : Large-Precategory αC βC)
+ (D : Large-Precategory αD βD)
+ (F : functor-Large-Precategory γF C D)
+ (G : functor-Large-Precategory γG D C)
where
is-right-adjoint-functor-Large-Precategory : UUω
is-right-adjoint-functor-Large-Precategory =
- is-adjoint-pair-Large-Precategory F G
+ is-adjoint-pair-Large-Precategory C D F G
+```
+
+### Adjunctions of large precategories
+```agda
module _
{αC αD : Level → Level}
{βC βD : Level → Level → Level}
+ (γ δ : Level → Level)
(C : Large-Precategory αC βC)
(D : Large-Precategory αD βD)
where
record Adjunction-Large-Precategory : UUω where
field
- level-left-adjoint-Adjunction-Large-Precategory :
- Level → Level
left-adjoint-Adjunction-Large-Precategory :
- functor-Large-Precategory C D
- level-left-adjoint-Adjunction-Large-Precategory
- level-right-adjoint-Adjunction-Large-Precategory :
- Level → Level
+ functor-Large-Precategory γ C D
right-adjoint-Adjunction-Large-Precategory :
- functor-Large-Precategory D C
- level-right-adjoint-Adjunction-Large-Precategory
+ functor-Large-Precategory δ D C
is-adjoint-pair-Adjunction-Large-Precategory :
- is-adjoint-pair-Large-Precategory
+ is-adjoint-pair-Large-Precategory C D
left-adjoint-Adjunction-Large-Precategory
right-adjoint-Adjunction-Large-Precategory
open Adjunction-Large-Precategory public
+module _
+ {αC αD : Level → Level}
+ {βC βD : Level → Level → Level}
+ {γ δ : Level → Level}
+ (C : Large-Precategory αC βC)
+ (D : Large-Precategory αD βD)
+ (FG : Adjunction-Large-Precategory γ δ C D)
+ where
+
obj-left-adjoint-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory) {l : Level} →
- obj-Large-Precategory C l →
- obj-Large-Precategory D
- ( level-left-adjoint-Adjunction-Large-Precategory FG l)
- obj-left-adjoint-Adjunction-Large-Precategory FG =
+ {l : Level} → obj-Large-Precategory C l → obj-Large-Precategory D (γ l)
+ obj-left-adjoint-Adjunction-Large-Precategory =
obj-functor-Large-Precategory
( left-adjoint-Adjunction-Large-Precategory FG)
hom-left-adjoint-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l1 l2 : Level}
{X : obj-Large-Precategory C l1}
{Y : obj-Large-Precategory C l2} →
hom-Large-Precategory C X Y →
hom-Large-Precategory D
- ( obj-left-adjoint-Adjunction-Large-Precategory FG X)
- ( obj-left-adjoint-Adjunction-Large-Precategory FG Y)
- hom-left-adjoint-Adjunction-Large-Precategory FG =
+ ( obj-left-adjoint-Adjunction-Large-Precategory X)
+ ( obj-left-adjoint-Adjunction-Large-Precategory Y)
+ hom-left-adjoint-Adjunction-Large-Precategory =
hom-functor-Large-Precategory
( left-adjoint-Adjunction-Large-Precategory FG)
preserves-id-left-adjoint-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
- {l1 : Level}
- (X : obj-Large-Precategory C l1) →
- hom-left-adjoint-Adjunction-Large-Precategory FG
+ {l1 : Level} (X : obj-Large-Precategory C l1) →
+ hom-left-adjoint-Adjunction-Large-Precategory
( id-hom-Large-Precategory C {X = X}) =
id-hom-Large-Precategory D
- preserves-id-left-adjoint-Adjunction-Large-Precategory FG X =
+ preserves-id-left-adjoint-Adjunction-Large-Precategory X =
preserves-id-functor-Large-Precategory
( left-adjoint-Adjunction-Large-Precategory FG)
obj-right-adjoint-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
- {l1 : Level} →
- obj-Large-Precategory D l1 →
- obj-Large-Precategory C
- ( level-right-adjoint-Adjunction-Large-Precategory FG l1)
- obj-right-adjoint-Adjunction-Large-Precategory FG =
+ {l1 : Level} → obj-Large-Precategory D l1 → obj-Large-Precategory C (δ l1)
+ obj-right-adjoint-Adjunction-Large-Precategory =
obj-functor-Large-Precategory
( right-adjoint-Adjunction-Large-Precategory FG)
hom-right-adjoint-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l1 l2 : Level}
{X : obj-Large-Precategory D l1}
{Y : obj-Large-Precategory D l2} →
hom-Large-Precategory D X Y →
hom-Large-Precategory C
- ( obj-right-adjoint-Adjunction-Large-Precategory FG X)
- ( obj-right-adjoint-Adjunction-Large-Precategory FG Y)
- hom-right-adjoint-Adjunction-Large-Precategory FG =
+ ( obj-right-adjoint-Adjunction-Large-Precategory X)
+ ( obj-right-adjoint-Adjunction-Large-Precategory Y)
+ hom-right-adjoint-Adjunction-Large-Precategory =
hom-functor-Large-Precategory
( right-adjoint-Adjunction-Large-Precategory FG)
preserves-id-right-adjoint-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l : Level}
(Y : obj-Large-Precategory D l) →
- hom-right-adjoint-Adjunction-Large-Precategory FG
+ hom-right-adjoint-Adjunction-Large-Precategory
( id-hom-Large-Precategory D {X = Y}) =
id-hom-Large-Precategory C
- preserves-id-right-adjoint-Adjunction-Large-Precategory FG Y =
+ preserves-id-right-adjoint-Adjunction-Large-Precategory Y =
preserves-id-functor-Large-Precategory
( right-adjoint-Adjunction-Large-Precategory FG)
equiv-is-adjoint-pair-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l1 l2 : Level}
(X : obj-Large-Precategory C l1)
(Y : obj-Large-Precategory D l2) →
hom-Large-Precategory C
( X)
- ( obj-right-adjoint-Adjunction-Large-Precategory FG Y) ≃
+ ( obj-right-adjoint-Adjunction-Large-Precategory Y) ≃
hom-Large-Precategory D
- ( obj-left-adjoint-Adjunction-Large-Precategory FG X)
+ ( obj-left-adjoint-Adjunction-Large-Precategory X)
( Y)
- equiv-is-adjoint-pair-Adjunction-Large-Precategory FG =
+ equiv-is-adjoint-pair-Adjunction-Large-Precategory =
equiv-is-adjoint-pair-Large-Precategory
( is-adjoint-pair-Adjunction-Large-Precategory FG)
map-equiv-is-adjoint-pair-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l1 l2 : Level}
(X : obj-Large-Precategory C l1)
(Y : obj-Large-Precategory D l2) →
hom-Large-Precategory C
( X)
- ( obj-right-adjoint-Adjunction-Large-Precategory FG Y) →
+ ( obj-right-adjoint-Adjunction-Large-Precategory Y) →
hom-Large-Precategory D
- ( obj-left-adjoint-Adjunction-Large-Precategory FG X)
+ ( obj-left-adjoint-Adjunction-Large-Precategory X)
( Y)
- map-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG =
- map-equiv-is-adjoint-pair-Large-Precategory
+ map-equiv-is-adjoint-pair-Adjunction-Large-Precategory =
+ map-equiv-is-adjoint-pair-Large-Precategory C D
( left-adjoint-Adjunction-Large-Precategory FG)
( right-adjoint-Adjunction-Large-Precategory FG)
( is-adjoint-pair-Adjunction-Large-Precategory FG)
naturality-equiv-is-adjoint-pair-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l1 l2 l3 l4 : Level}
{X1 : obj-Large-Precategory C l1}
{X2 : obj-Large-Precategory C l2}
@@ -320,52 +326,49 @@ module _
(f : hom-Large-Precategory C X2 X1)
(g : hom-Large-Precategory D Y1 Y2) →
coherence-square-maps
- ( map-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG X1 Y1)
+ ( map-equiv-is-adjoint-pair-Adjunction-Large-Precategory X1 Y1)
( λ h →
comp-hom-Large-Precategory C
( comp-hom-Large-Precategory C
- ( hom-right-adjoint-Adjunction-Large-Precategory FG g)
+ ( hom-right-adjoint-Adjunction-Large-Precategory g)
( h))
( f))
( λ h →
comp-hom-Large-Precategory D
( comp-hom-Large-Precategory D g h)
- ( hom-left-adjoint-Adjunction-Large-Precategory FG f))
- ( map-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG X2 Y2)
- naturality-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG =
+ ( hom-left-adjoint-Adjunction-Large-Precategory f))
+ ( map-equiv-is-adjoint-pair-Adjunction-Large-Precategory X2 Y2)
+ naturality-equiv-is-adjoint-pair-Adjunction-Large-Precategory =
naturality-equiv-is-adjoint-pair-Large-Precategory
( is-adjoint-pair-Adjunction-Large-Precategory FG)
inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l1 l2 : Level}
(X : obj-Large-Precategory C l1)
(Y : obj-Large-Precategory D l2) →
hom-Large-Precategory D
- ( obj-left-adjoint-Adjunction-Large-Precategory FG X)
+ ( obj-left-adjoint-Adjunction-Large-Precategory X)
( Y) ≃
hom-Large-Precategory C
( X)
- ( obj-right-adjoint-Adjunction-Large-Precategory FG Y)
- inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG X Y =
- inv-equiv (equiv-is-adjoint-pair-Adjunction-Large-Precategory FG X Y)
+ ( obj-right-adjoint-Adjunction-Large-Precategory Y)
+ inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory X Y =
+ inv-equiv (equiv-is-adjoint-pair-Adjunction-Large-Precategory X Y)
map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l1 l2 : Level}
(X : obj-Large-Precategory C l1)
(Y : obj-Large-Precategory D l2) →
hom-Large-Precategory D
- ( obj-left-adjoint-Adjunction-Large-Precategory FG X)
+ ( obj-left-adjoint-Adjunction-Large-Precategory X)
( Y) →
hom-Large-Precategory C
( X)
- ( obj-right-adjoint-Adjunction-Large-Precategory FG Y)
- map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG X Y =
- map-inv-equiv (equiv-is-adjoint-pair-Adjunction-Large-Precategory FG X Y)
+ ( obj-right-adjoint-Adjunction-Large-Precategory Y)
+ map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory X Y =
+ map-inv-equiv (equiv-is-adjoint-pair-Adjunction-Large-Precategory X Y)
naturality-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory)
{l1 l2 l3 l4 : Level}
{X1 : obj-Large-Precategory C l1}
{X2 : obj-Large-Precategory C l2}
@@ -374,62 +377,74 @@ module _
(f : hom-Large-Precategory C X2 X1)
(g : hom-Large-Precategory D Y1 Y2) →
coherence-square-maps
- ( map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG X1 Y1)
+ ( map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory X1 Y1)
( λ h →
comp-hom-Large-Precategory D
( comp-hom-Large-Precategory D g h)
- ( hom-left-adjoint-Adjunction-Large-Precategory FG f))
+ ( hom-left-adjoint-Adjunction-Large-Precategory f))
( λ h →
comp-hom-Large-Precategory C
( comp-hom-Large-Precategory C
- ( hom-right-adjoint-Adjunction-Large-Precategory FG g)
+ ( hom-right-adjoint-Adjunction-Large-Precategory g)
( h))
( f))
- ( map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG X2 Y2)
- naturality-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory FG =
- naturality-inv-equiv-is-adjoint-pair-Large-Precategory
+ ( map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory X2 Y2)
+ naturality-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory =
+ naturality-inv-equiv-is-adjoint-pair-Large-Precategory C D
( left-adjoint-Adjunction-Large-Precategory FG)
( right-adjoint-Adjunction-Large-Precategory FG)
( is-adjoint-pair-Adjunction-Large-Precategory FG)
```
-## Properties
-
-### Unit of adjunction
+### The unit of an adjunction
-Given an adjoint pair `F ⊣ G`, we can construct a natural transformation
-`η : id → G ∘ F` called the unit of the adjunction.
+Given an adjoint pair `F ⊣ G`, we construct a natural transformation
+`η : id → G ∘ F` called the **unit** of the adjunction.
```agda
module _
- {αC αD : Level → Level} {βC βD : Level → Level → Level}
+ {αC αD : Level → Level} {βC βD : Level → Level → Level} {γ δ : Level → Level}
(C : Large-Precategory αC βC) (D : Large-Precategory αD βD)
+ (FG : Adjunction-Large-Precategory γ δ C D)
where
- unit-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory C D) →
- natural-transformation-Large-Precategory
- ( id-functor-Large-Precategory)
- ( comp-functor-Large-Precategory
+ hom-unit-Adjunction-Large-Precategory :
+ family-of-morphisms-functor-Large-Precategory C C
+ ( id-functor-Large-Precategory C)
+ ( comp-functor-Large-Precategory C D C
( right-adjoint-Adjunction-Large-Precategory FG)
( left-adjoint-Adjunction-Large-Precategory FG))
- hom-family-natural-transformation-Large-Precategory
- ( unit-Adjunction-Large-Precategory FG)
- ( X) =
+ hom-unit-Adjunction-Large-Precategory X =
map-inv-equiv-is-adjoint-pair-Adjunction-Large-Precategory C D FG X
( obj-left-adjoint-Adjunction-Large-Precategory C D FG X)
( id-hom-Large-Precategory D)
- coherence-square-natural-transformation-Large-Precategory
- ( unit-Adjunction-Large-Precategory FG) {X = X} {Y} f =
+
+ naturality-unit-Adjunction-Large-Precategory :
+ naturality-family-of-morphisms-functor-Large-Precategory C C
+ ( id-functor-Large-Precategory C)
+ ( comp-functor-Large-Precategory C D C
+ ( right-adjoint-Adjunction-Large-Precategory FG)
+ ( left-adjoint-Adjunction-Large-Precategory FG))
+ ( hom-unit-Adjunction-Large-Precategory)
+ naturality-unit-Adjunction-Large-Precategory {X = X} {Y} f =
inv
( ( inv
( left-unit-law-comp-hom-Large-Precategory C
- ( comp-hom-Large-Precategory C (η Y) f))) ∙
+ ( comp-hom-Large-Precategory C
+ ( hom-unit-Adjunction-Large-Precategory
+ ( Y))
+ ( f)))) ∙
( ap
( comp-hom-Large-Precategory' C
- ( comp-hom-Large-Precategory C (η Y) f))
+ ( comp-hom-Large-Precategory C
+ ( hom-unit-Adjunction-Large-Precategory
+ ( Y))
+ ( f)))
( inv
- ( preserves-id-right-adjoint-Adjunction-Large-Precategory C D FG
+ ( preserves-id-right-adjoint-Adjunction-Large-Precategory
+ ( C)
+ ( D)
+ ( FG)
( obj-left-adjoint-Adjunction-Large-Precategory C D FG Y)))) ∙
( inv
( associative-comp-hom-Large-Precategory C
@@ -457,10 +472,10 @@ module _
( id-hom-Large-Precategory D)
( hom-left-adjoint-Adjunction-Large-Precategory C D FG f))) ∙
( left-unit-law-comp-hom-Large-Precategory D
- ( hom-left-adjoint-Adjunction-Large-Precategory C D FG f)) ∙
+ ( hom-left-adjoint-Adjunction-Large-Precategory C D FG f)) ∙
( inv
- ( right-unit-law-comp-hom-Large-Precategory D
- ( hom-left-adjoint-Adjunction-Large-Precategory C D FG f))) ∙
+ ( right-unit-law-comp-hom-Large-Precategory D
+ ( hom-left-adjoint-Adjunction-Large-Precategory C D FG f))) ∙
( inv
( right-unit-law-comp-hom-Large-Precategory D
( comp-hom-Large-Precategory D
@@ -483,44 +498,61 @@ module _
( comp-hom-Large-Precategory C
( hom-right-adjoint-Adjunction-Large-Precategory C D FG
( hom-left-adjoint-Adjunction-Large-Precategory C D FG f))
- ( η X)))))
- where
- η :
- {l : Level} (X : obj-Large-Precategory C l) →
- hom-Large-Precategory C X
- ( obj-right-adjoint-Adjunction-Large-Precategory C D FG
- ( obj-left-adjoint-Adjunction-Large-Precategory C D FG X))
- η =
- hom-family-natural-transformation-Large-Precategory
- ( unit-Adjunction-Large-Precategory FG)
+ ( hom-unit-Adjunction-Large-Precategory
+ ( X))))))
+
+ unit-Adjunction-Large-Precategory :
+ natural-transformation-Large-Precategory C C
+ ( id-functor-Large-Precategory C)
+ ( comp-functor-Large-Precategory C D C
+ ( right-adjoint-Adjunction-Large-Precategory FG)
+ ( left-adjoint-Adjunction-Large-Precategory FG))
+ hom-natural-transformation-Large-Precategory
+ unit-Adjunction-Large-Precategory =
+ hom-unit-Adjunction-Large-Precategory
+ naturality-natural-transformation-Large-Precategory
+ unit-Adjunction-Large-Precategory =
+ naturality-unit-Adjunction-Large-Precategory
```
-### Counit of adjunction
+### The counit of an adjunction
-Given an adjoint pair `F ⊣ G`, we can construct a natural transformation
-`ε : F ∘ G → id` called the counit of the adjunction.
+Given an adjoint pair `F ⊣ G`, we construct a natural transformation
+`ε : F ∘ G → id` called the **counit** of the adjunction.
```agda
- counit-Adjunction-Large-Precategory :
- (FG : Adjunction-Large-Precategory C D) →
- natural-transformation-Large-Precategory
- ( comp-functor-Large-Precategory
+module _
+ {αC αD : Level → Level} {βC βD : Level → Level → Level} {γ δ : Level → Level}
+ (C : Large-Precategory αC βC) (D : Large-Precategory αD βD)
+ (FG : Adjunction-Large-Precategory γ δ C D)
+ where
+
+ hom-counit-Adjunction-Large-Precategory :
+ family-of-morphisms-functor-Large-Precategory D D
+ ( comp-functor-Large-Precategory D C D
( left-adjoint-Adjunction-Large-Precategory FG)
( right-adjoint-Adjunction-Large-Precategory FG))
- ( id-functor-Large-Precategory)
- hom-family-natural-transformation-Large-Precategory
- ( counit-Adjunction-Large-Precategory FG) Y =
+ ( id-functor-Large-Precategory D)
+ hom-counit-Adjunction-Large-Precategory Y =
map-equiv-is-adjoint-pair-Adjunction-Large-Precategory C D FG
( obj-right-adjoint-Adjunction-Large-Precategory C D FG Y)
( Y)
( id-hom-Large-Precategory C)
- coherence-square-natural-transformation-Large-Precategory
- (counit-Adjunction-Large-Precategory FG) {X = X} {Y = Y} f =
+
+ naturality-counit-Adjunction-Large-Precategory :
+ naturality-family-of-morphisms-functor-Large-Precategory D D
+ ( comp-functor-Large-Precategory D C D
+ ( left-adjoint-Adjunction-Large-Precategory FG)
+ ( right-adjoint-Adjunction-Large-Precategory FG))
+ ( id-functor-Large-Precategory D)
+ ( hom-counit-Adjunction-Large-Precategory)
+ naturality-counit-Adjunction-Large-Precategory {X = X} {Y = Y} f =
inv
( ( inv
( left-unit-law-comp-hom-Large-Precategory D
( comp-hom-Large-Precategory D
- ( ε Y)
+ ( hom-counit-Adjunction-Large-Precategory
+ ( Y))
( hom-left-adjoint-Adjunction-Large-Precategory C D FG
( hom-right-adjoint-Adjunction-Large-Precategory C D FG f))))) ∙
( inv
@@ -548,7 +580,7 @@ Given an adjoint pair `F ⊣ G`, we can construct a natural transformation
( hom-right-adjoint-Adjunction-Large-Precategory C D FG
( id-hom-Large-Precategory D))) ∙
( preserves-id-right-adjoint-Adjunction-Large-Precategory
- C D FG Y))) ∙
+ C D FG Y))) ∙
( left-unit-law-comp-hom-Large-Precategory C
( hom-right-adjoint-Adjunction-Large-Precategory C D FG f)) ∙
( ( inv
@@ -560,25 +592,35 @@ Given an adjoint pair `F ⊣ G`, we can construct a natural transformation
( hom-right-adjoint-Adjunction-Large-Precategory C D FG f)
( id-hom-Large-Precategory C)))))) ∙
( naturality-equiv-is-adjoint-pair-Adjunction-Large-Precategory C D FG
- ( id-hom-Large-Precategory C)
+ ( id-hom-Large-Precategory C)
( f)
( id-hom-Large-Precategory C)) ∙
( ap
( comp-hom-Large-Precategory
( D)
- ( comp-hom-Large-Precategory D f (ε X)))
- ( preserves-id-left-adjoint-Adjunction-Large-Precategory C D FG
+ ( comp-hom-Large-Precategory D f
+ ( hom-counit-Adjunction-Large-Precategory
+ ( X))))
+ ( preserves-id-left-adjoint-Adjunction-Large-Precategory
+ ( C)
+ ( D)
+ ( FG)
( obj-right-adjoint-Adjunction-Large-Precategory C D FG X))) ∙
( right-unit-law-comp-hom-Large-Precategory D
- ( comp-hom-Large-Precategory D f (ε X)))))
- where
- ε :
- {l : Level} (Y : obj-Large-Precategory D l) →
- hom-Large-Precategory D
- ( obj-left-adjoint-Adjunction-Large-Precategory C D FG
- ( obj-right-adjoint-Adjunction-Large-Precategory C D FG Y))
- ( Y)
- ε =
- hom-family-natural-transformation-Large-Precategory
- ( counit-Adjunction-Large-Precategory FG)
+ ( comp-hom-Large-Precategory D f
+ ( hom-counit-Adjunction-Large-Precategory
+ ( X))))))
+
+ counit-Adjunction-Large-Precategory :
+ natural-transformation-Large-Precategory D D
+ ( comp-functor-Large-Precategory D C D
+ ( left-adjoint-Adjunction-Large-Precategory FG)
+ ( right-adjoint-Adjunction-Large-Precategory FG))
+ ( id-functor-Large-Precategory D)
+ hom-natural-transformation-Large-Precategory
+ counit-Adjunction-Large-Precategory =
+ hom-counit-Adjunction-Large-Precategory
+ naturality-natural-transformation-Large-Precategory
+ counit-Adjunction-Large-Precategory =
+ naturality-counit-Adjunction-Large-Precategory
```
diff --git a/src/category-theory/equivalences-of-large-precategories.lagda.md b/src/category-theory/equivalences-of-large-precategories.lagda.md
index 49d202d59b..c6dd8e5fb5 100644
--- a/src/category-theory/equivalences-of-large-precategories.lagda.md
+++ b/src/category-theory/equivalences-of-large-precategories.lagda.md
@@ -18,10 +18,14 @@ open import foundation.universe-levels
## Idea
-The large precategories `C` and `D` are equivalent if there are functors
-`F : C → D` and `G : D → C` such that
-
-- `G ∘ F` is naturally isomorphic to the identity functor on `C`,
+Two [large precategories](category-theory.large-precategories.md) `C` and `D`
+are said to be **equivalent** if there are
+[functors](category-theory.functors-large-precategories.md) `F : C → D` and
+`G : D → C` such that
+
+- `G ∘ F` is
+ [naturally isomorphic](category-theory.natural-isomorphisms-functors-large-precategories.md)
+ to the identity functor on `C`,
- `F ∘ G` is naturally isomorphic to the identity functor on `D`.
## Definition
@@ -33,24 +37,24 @@ module _
where
record
- equivalence-Large-Precategory (γ-there γ-back : Level → Level) : UUω where
+ equivalence-Large-Precategory (γ γ' : Level → Level) : UUω where
constructor
make-equivalence-Large-Precategory
field
functor-equivalence-Large-Precategory :
- functor-Large-Precategory C D γ-there
+ functor-Large-Precategory γ C D
functor-inv-equivalence-Large-Precategory :
- functor-Large-Precategory D C γ-back
+ functor-Large-Precategory γ' D C
is-section-functor-inv-equivalence-Large-Precategory :
natural-isomorphism-Large-Precategory
- ( comp-functor-Large-Precategory
+ ( comp-functor-Large-Precategory D C D
functor-equivalence-Large-Precategory
functor-inv-equivalence-Large-Precategory)
- ( id-functor-Large-Precategory)
+ ( id-functor-Large-Precategory D)
is-retraction-functor-inv-equivalence-Large-Precategory :
natural-isomorphism-Large-Precategory
- ( comp-functor-Large-Precategory
+ ( comp-functor-Large-Precategory C D C
functor-inv-equivalence-Large-Precategory
functor-equivalence-Large-Precategory)
- ( id-functor-Large-Precategory)
+ ( id-functor-Large-Precategory C)
```
diff --git a/src/category-theory/functors-large-categories.lagda.md b/src/category-theory/functors-large-categories.lagda.md
new file mode 100644
index 0000000000..eda64ca996
--- /dev/null
+++ b/src/category-theory/functors-large-categories.lagda.md
@@ -0,0 +1,122 @@
+# Functors between large categories
+
+```agda
+module category-theory.functors-large-categories where
+```
+
+Imports
+
+```agda
+open import category-theory.functors-large-precategories
+open import category-theory.large-categories
+
+open import foundation.action-on-identifications-functions
+open import foundation.function-types
+open import foundation.identity-types
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+A **functor** from a [large category](category-theory.large-categories.md) `C`
+to a large category `D` is just a
+[functor](category-theory.functors-large-precategories.md) between the
+underlying [large precategories](category-theory.large-precategories.md) of `C`
+and `D`. In other words, functors of large categories consist of:
+
+- a map `F₀ : C → D` on objects,
+- a map `F₁ : hom x y → hom (F₀ x) (F₀ y)` on morphisms, such that the following
+ identities hold:
+- `F id_x = id_(F x)`,
+- `F (g ∘ f) = F g ∘ F f`.
+
+## Definition
+
+```agda
+module _
+ {αC αD : Level → Level} {βC βD : Level → Level → Level} (γ : Level → Level)
+ (C : Large-Category αC βC) (D : Large-Category αD βD)
+ where
+
+ functor-Large-Category : UUω
+ functor-Large-Category =
+ functor-Large-Precategory γ
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+
+module _
+ {αC αD : Level → Level} {βC βD : Level → Level → Level} {γ : Level → Level}
+ (C : Large-Category αC βC) (D : Large-Category αD βD)
+ (F : functor-Large-Category γ C D)
+ where
+
+ obj-functor-Large-Category :
+ {l1 : Level} → obj-Large-Category C l1 → obj-Large-Category D (γ l1)
+ obj-functor-Large-Category =
+ obj-functor-Large-Precategory F
+
+ hom-functor-Large-Category :
+ {l1 l2 : Level}
+ {X : obj-Large-Category C l1} {Y : obj-Large-Category C l2} →
+ hom-Large-Category C X Y →
+ hom-Large-Category D
+ ( obj-functor-Large-Category X)
+ ( obj-functor-Large-Category Y)
+ hom-functor-Large-Category =
+ hom-functor-Large-Precategory F
+
+ preserves-id-functor-Large-Category :
+ {l1 : Level} {X : obj-Large-Category C l1} →
+ hom-functor-Large-Category (id-hom-Large-Category C {X = X}) =
+ id-hom-Large-Category D
+ preserves-id-functor-Large-Category =
+ preserves-id-functor-Large-Precategory F
+
+ preserves-comp-functor-Large-Category :
+ {l1 l2 l3 : Level}
+ {X : obj-Large-Category C l1} {Y : obj-Large-Category C l2}
+ {Z : obj-Large-Category C l3}
+ (g : hom-Large-Category C Y Z) (f : hom-Large-Category C X Y) →
+ hom-functor-Large-Category (comp-hom-Large-Category C g f) =
+ comp-hom-Large-Category D
+ ( hom-functor-Large-Category g)
+ ( hom-functor-Large-Category f)
+ preserves-comp-functor-Large-Category =
+ preserves-comp-functor-Large-Precategory F
+```
+
+### The identity functor
+
+There is an identity functor on any large category.
+
+```agda
+id-functor-Large-Category :
+ {αC : Level → Level} {βC : Level → Level → Level} →
+ (C : Large-Category αC βC) →
+ functor-Large-Category id C C
+id-functor-Large-Category C =
+ id-functor-Large-Precategory (large-precategory-Large-Category C)
+```
+
+### Composition of functors
+
+Any two compatible functors can be composed to a new functor.
+
+```agda
+comp-functor-Large-Category :
+ {αC αD αE γG γF : Level → Level}
+ {βC βD βE : Level → Level → Level} →
+ (C : Large-Category αC βC)
+ (D : Large-Category αD βD)
+ (E : Large-Category αE βE) →
+ functor-Large-Category γG D E →
+ functor-Large-Category γF C D →
+ functor-Large-Category (λ l → γG (γF l)) C E
+comp-functor-Large-Category C D E =
+ comp-functor-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( large-precategory-Large-Category E)
+```
diff --git a/src/category-theory/functors-large-precategories.lagda.md b/src/category-theory/functors-large-precategories.lagda.md
index 8684f83fc0..ced47bee15 100644
--- a/src/category-theory/functors-large-precategories.lagda.md
+++ b/src/category-theory/functors-large-precategories.lagda.md
@@ -32,11 +32,11 @@ A **functor** from a [large precategory](category-theory.large-precategories.md)
```agda
module _
- {αC αD : Level → Level} {βC βD : Level → Level → Level}
+ {αC αD : Level → Level} {βC βD : Level → Level → Level} (γ : Level → Level)
(C : Large-Precategory αC βC) (D : Large-Precategory αD βD)
where
- record functor-Large-Precategory (γ : Level → Level) : UUω
+ record functor-Large-Precategory : UUω
where
constructor make-functor
field
@@ -72,52 +72,97 @@ module _
open functor-Large-Precategory public
```
-## Examples
-
### The identity functor
-There is an identity functor on any large precategory.
-
```agda
id-functor-Large-Precategory :
{αC : Level → Level} {βC : Level → Level → Level} →
- {C : Large-Precategory αC βC} →
- functor-Large-Precategory C C (λ l → l)
-obj-functor-Large-Precategory id-functor-Large-Precategory = id
-hom-functor-Large-Precategory id-functor-Large-Precategory = id
-preserves-comp-functor-Large-Precategory id-functor-Large-Precategory g f = refl
-preserves-id-functor-Large-Precategory id-functor-Large-Precategory = refl
+ (C : Large-Precategory αC βC) →
+ functor-Large-Precategory id C C
+obj-functor-Large-Precategory
+ ( id-functor-Large-Precategory C) =
+ id
+hom-functor-Large-Precategory
+ ( id-functor-Large-Precategory C) =
+ id
+preserves-comp-functor-Large-Precategory
+ ( id-functor-Large-Precategory C) g f =
+ refl
+preserves-id-functor-Large-Precategory
+ ( id-functor-Large-Precategory C) =
+ refl
```
### Composition of functors
-Any two compatible functors can be composed to a new functor.
-
```agda
-comp-functor-Large-Precategory :
+module _
{αC αD αE γG γF : Level → Level}
- {βC βD βE : Level → Level → Level} →
- {C : Large-Precategory αC βC}
- {D : Large-Precategory αD βD}
- {E : Large-Precategory αE βE} →
- functor-Large-Precategory D E γG →
- functor-Large-Precategory C D γF →
- functor-Large-Precategory C E (γG ∘ γF)
-obj-functor-Large-Precategory (comp-functor-Large-Precategory G F) =
- obj-functor-Large-Precategory G ∘ obj-functor-Large-Precategory F
-hom-functor-Large-Precategory (comp-functor-Large-Precategory G F) =
- hom-functor-Large-Precategory G ∘ hom-functor-Large-Precategory F
-preserves-comp-functor-Large-Precategory
- ( comp-functor-Large-Precategory G F) g f =
- ( ap
- ( hom-functor-Large-Precategory G)
- ( preserves-comp-functor-Large-Precategory F g f)) ∙
- ( preserves-comp-functor-Large-Precategory G
- ( hom-functor-Large-Precategory F g)
- ( hom-functor-Large-Precategory F f))
-preserves-id-functor-Large-Precategory (comp-functor-Large-Precategory G F) =
- ( ap
- ( hom-functor-Large-Precategory G)
- ( preserves-id-functor-Large-Precategory F)) ∙
- ( preserves-id-functor-Large-Precategory G)
+ {βC βD βE : Level → Level → Level}
+ (C : Large-Precategory αC βC)
+ (D : Large-Precategory αD βD)
+ (E : Large-Precategory αE βE)
+ (G : functor-Large-Precategory γG D E)
+ (F : functor-Large-Precategory γF C D)
+ where
+
+ obj-comp-functor-Large-Precategory :
+ {l1 : Level} →
+ obj-Large-Precategory C l1 → obj-Large-Precategory E (γG (γF l1))
+ obj-comp-functor-Large-Precategory =
+ obj-functor-Large-Precategory G ∘ obj-functor-Large-Precategory F
+
+ hom-comp-functor-Large-Precategory :
+ {l1 l2 : Level}
+ {X : obj-Large-Precategory C l1} {Y : obj-Large-Precategory C l2} →
+ hom-Large-Precategory C X Y →
+ hom-Large-Precategory E
+ ( obj-comp-functor-Large-Precategory X)
+ ( obj-comp-functor-Large-Precategory Y)
+ hom-comp-functor-Large-Precategory =
+ hom-functor-Large-Precategory G ∘ hom-functor-Large-Precategory F
+
+ preserves-comp-comp-functor-Large-Precategory :
+ {l1 l2 l3 : Level}
+ {X : obj-Large-Precategory C l1}
+ {Y : obj-Large-Precategory C l2}
+ {Z : obj-Large-Precategory C l3}
+ (g : hom-Large-Precategory C Y Z) (f : hom-Large-Precategory C X Y) →
+ hom-comp-functor-Large-Precategory
+ ( comp-hom-Large-Precategory C g f) =
+ comp-hom-Large-Precategory E
+ ( hom-comp-functor-Large-Precategory g)
+ ( hom-comp-functor-Large-Precategory f)
+ preserves-comp-comp-functor-Large-Precategory g f =
+ ( ap
+ ( hom-functor-Large-Precategory G)
+ ( preserves-comp-functor-Large-Precategory F g f)) ∙
+ ( preserves-comp-functor-Large-Precategory G
+ ( hom-functor-Large-Precategory F g)
+ ( hom-functor-Large-Precategory F f))
+
+ preserves-id-comp-functor-Large-Precategory :
+ {l1 : Level} {X : obj-Large-Precategory C l1} →
+ hom-comp-functor-Large-Precategory (id-hom-Large-Precategory C {X = X}) =
+ id-hom-Large-Precategory E
+ preserves-id-comp-functor-Large-Precategory =
+ ( ap
+ ( hom-functor-Large-Precategory G)
+ ( preserves-id-functor-Large-Precategory F)) ∙
+ ( preserves-id-functor-Large-Precategory G)
+
+ comp-functor-Large-Precategory :
+ functor-Large-Precategory (γG ∘ γF) C E
+ obj-functor-Large-Precategory
+ comp-functor-Large-Precategory =
+ obj-comp-functor-Large-Precategory
+ hom-functor-Large-Precategory
+ comp-functor-Large-Precategory =
+ hom-comp-functor-Large-Precategory
+ preserves-comp-functor-Large-Precategory
+ comp-functor-Large-Precategory =
+ preserves-comp-comp-functor-Large-Precategory
+ preserves-id-functor-Large-Precategory
+ comp-functor-Large-Precategory =
+ preserves-id-comp-functor-Large-Precategory
```
diff --git a/src/category-theory/homotopies-natural-transformations-large-precategories.lagda.md b/src/category-theory/homotopies-natural-transformations-large-precategories.lagda.md
index 5432c73da3..1359d2abd4 100644
--- a/src/category-theory/homotopies-natural-transformations-large-precategories.lagda.md
+++ b/src/category-theory/homotopies-natural-transformations-large-precategories.lagda.md
@@ -36,17 +36,17 @@ the type of homotopies of natural transformations.
```agda
module _
{αC αD γF γG : Level → Level} {βC βD : Level → Level → Level}
- {C : Large-Precategory αC βC} {D : Large-Precategory αD βD}
- {F : functor-Large-Precategory C D γF}
- {G : functor-Large-Precategory C D γG}
+ (C : Large-Precategory αC βC) (D : Large-Precategory αD βD)
+ {F : functor-Large-Precategory γF C D}
+ {G : functor-Large-Precategory γG C D}
where
htpy-natural-transformation-Large-Precategory :
- (α β : natural-transformation-Large-Precategory F G) → UUω
- htpy-natural-transformation-Large-Precategory α β =
+ (σ τ : natural-transformation-Large-Precategory C D F G) → UUω
+ htpy-natural-transformation-Large-Precategory σ τ =
{ l : Level} (X : obj-Large-Precategory C l) →
- ( hom-family-natural-transformation-Large-Precategory α X) =
- ( hom-family-natural-transformation-Large-Precategory β X)
+ ( hom-natural-transformation-Large-Precategory σ X) =
+ ( hom-natural-transformation-Large-Precategory τ X)
```
### The reflexivity homotopy
@@ -54,14 +54,14 @@ module _
```agda
module _
{αC αD γF γG : Level → Level} {βC βD : Level → Level → Level}
- {C : Large-Precategory αC βC} {D : Large-Precategory αD βD}
- {F : functor-Large-Precategory C D γF}
- {G : functor-Large-Precategory C D γG}
+ (C : Large-Precategory αC βC) (D : Large-Precategory αD βD)
+ {F : functor-Large-Precategory γF C D}
+ {G : functor-Large-Precategory γG C D}
where
refl-htpy-natural-transformation-Large-Precategory :
- (α : natural-transformation-Large-Precategory F G) →
- htpy-natural-transformation-Large-Precategory α α
+ (α : natural-transformation-Large-Precategory C D F G) →
+ htpy-natural-transformation-Large-Precategory C D α α
refl-htpy-natural-transformation-Large-Precategory α = refl-htpy
```
@@ -71,28 +71,35 @@ A homotopy from `α` to `β` can be concatenated with a homotopy from `β` to `
to form a homotopy from `α` to `γ`. The concatenation is associative.
```agda
+module _
+ {αC αD γF γG : Level → Level} {βC βD : Level → Level → Level}
+ (C : Large-Precategory αC βC) (D : Large-Precategory αD βD)
+ {F : functor-Large-Precategory γF C D}
+ {G : functor-Large-Precategory γG C D}
+ where
+
concat-htpy-natural-transformation-Large-Precategory :
- (α β γ : natural-transformation-Large-Precategory F G) →
- htpy-natural-transformation-Large-Precategory α β →
- htpy-natural-transformation-Large-Precategory β γ →
- htpy-natural-transformation-Large-Precategory α γ
- concat-htpy-natural-transformation-Large-Precategory α β γ H K = H ∙h K
+ (σ τ υ : natural-transformation-Large-Precategory C D F G) →
+ htpy-natural-transformation-Large-Precategory C D σ τ →
+ htpy-natural-transformation-Large-Precategory C D τ υ →
+ htpy-natural-transformation-Large-Precategory C D σ υ
+ concat-htpy-natural-transformation-Large-Precategory σ τ υ H K = H ∙h K
associative-concat-htpy-natural-transformation-Large-Precategory :
- (α β γ δ : natural-transformation-Large-Precategory F G)
- (H : htpy-natural-transformation-Large-Precategory α β)
- (K : htpy-natural-transformation-Large-Precategory β γ)
- (L : htpy-natural-transformation-Large-Precategory γ δ) →
+ (σ τ υ ϕ : natural-transformation-Large-Precategory C D F G)
+ (H : htpy-natural-transformation-Large-Precategory C D σ τ)
+ (K : htpy-natural-transformation-Large-Precategory C D τ υ)
+ (L : htpy-natural-transformation-Large-Precategory C D υ ϕ) →
{l : Level} (X : obj-Large-Precategory C l) →
- ( concat-htpy-natural-transformation-Large-Precategory α γ δ
- ( concat-htpy-natural-transformation-Large-Precategory α β γ H K)
+ ( concat-htpy-natural-transformation-Large-Precategory σ υ ϕ
+ ( concat-htpy-natural-transformation-Large-Precategory σ τ υ H K)
( L)
( X)) =
- ( concat-htpy-natural-transformation-Large-Precategory α β δ
+ ( concat-htpy-natural-transformation-Large-Precategory σ τ ϕ
( H)
- ( concat-htpy-natural-transformation-Large-Precategory β γ δ K L)
+ ( concat-htpy-natural-transformation-Large-Precategory τ υ ϕ K L)
( X))
associative-concat-htpy-natural-transformation-Large-Precategory
- α β γ δ H K L =
+ σ τ υ ϕ H K L =
assoc-htpy H K L
```
diff --git a/src/category-theory/natural-isomorphisms-functors-large-precategories.lagda.md b/src/category-theory/natural-isomorphisms-functors-large-precategories.lagda.md
index c0e4563f67..edaf9fc991 100644
--- a/src/category-theory/natural-isomorphisms-functors-large-precategories.lagda.md
+++ b/src/category-theory/natural-isomorphisms-functors-large-precategories.lagda.md
@@ -7,6 +7,7 @@ module category-theory.natural-isomorphisms-functors-large-precategories where
Imports
```agda
+open import category-theory.commuting-squares-of-morphisms-in-large-precategories
open import category-theory.functors-large-precategories
open import category-theory.isomorphisms-in-large-precategories
open import category-theory.large-precategories
@@ -35,8 +36,8 @@ module _
{βC βD : Level → Level → Level}
{C : Large-Precategory αC βC}
{D : Large-Precategory αD βD}
- (F : functor-Large-Precategory C D γF)
- (G : functor-Large-Precategory C D γG)
+ (F : functor-Large-Precategory γF C D)
+ (G : functor-Large-Precategory γG C D)
where
iso-family-functor-Large-Precategory : UUω
@@ -51,31 +52,31 @@ module _
where
constructor make-natural-isomorphism
field
- components-natural-isomorphism-Large-Precategory :
+ iso-natural-isomorphism-Large-Precategory :
iso-family-functor-Large-Precategory
- coherence-square-natural-isomorphism-Large-Precategory :
+ naturality-natural-isomorphism-Large-Precategory :
{ l1 l2 : Level}
{ X : obj-Large-Precategory C l1}
{ Y : obj-Large-Precategory C l2}
( f : hom-Large-Precategory C X Y) →
- coherence-square-Large-Precategory D
- ( hom-iso-Large-Precategory D
- ( components-natural-isomorphism-Large-Precategory X))
+ coherence-square-hom-Large-Precategory D
( hom-functor-Large-Precategory F f)
- ( hom-functor-Large-Precategory G f)
( hom-iso-Large-Precategory D
- ( components-natural-isomorphism-Large-Precategory Y))
+ ( iso-natural-isomorphism-Large-Precategory X))
+ ( hom-iso-Large-Precategory D
+ ( iso-natural-isomorphism-Large-Precategory Y))
+ ( hom-functor-Large-Precategory G f)
open natural-isomorphism-Large-Precategory public
natural-transformation-natural-isomorphism-Large-Precategory :
natural-isomorphism-Large-Precategory →
- natural-transformation-Large-Precategory F G
- hom-family-natural-transformation-Large-Precategory
+ natural-transformation-Large-Precategory C D F G
+ hom-natural-transformation-Large-Precategory
( natural-transformation-natural-isomorphism-Large-Precategory γ) X =
hom-iso-Large-Precategory D
- ( components-natural-isomorphism-Large-Precategory γ X)
- coherence-square-natural-transformation-Large-Precategory
- (natural-transformation-natural-isomorphism-Large-Precategory γ) =
- coherence-square-natural-isomorphism-Large-Precategory γ
+ ( iso-natural-isomorphism-Large-Precategory γ X)
+ naturality-natural-transformation-Large-Precategory
+ ( natural-transformation-natural-isomorphism-Large-Precategory γ) =
+ naturality-natural-isomorphism-Large-Precategory γ
```
diff --git a/src/category-theory/natural-transformations-functors-large-categories.lagda.md b/src/category-theory/natural-transformations-functors-large-categories.lagda.md
new file mode 100644
index 0000000000..6c83b81689
--- /dev/null
+++ b/src/category-theory/natural-transformations-functors-large-categories.lagda.md
@@ -0,0 +1,175 @@
+# Natural transformations between functors between large categories
+
+```agda
+module category-theory.natural-transformations-functors-large-categories where
+```
+
+Imports
+
+```agda
+open import category-theory.functors-large-categories
+open import category-theory.large-categories
+open import category-theory.natural-transformations-functors-large-precategories
+
+open import foundation.action-on-identifications-functions
+open import foundation.identity-types
+open import foundation.universe-levels
+```
+
+
+
+## Idea
+
+Given [large categories](category-theory.large-categories.md) `C` and `D`, a
+**natural transformation** from a
+[functor](category-theory.functors-large-categories.md) `F : C → D` to
+`G : C → D` consists of :
+
+- a family of morphisms `γ : (x : C) → hom (F x) (G x)` such that the following
+ **naturality condition** holds:
+- `(G f) ∘ (γ x) = (γ y) ∘ (F f)`, for all `f : hom x y`.
+
+## Definition
+
+```agda
+module _
+ {αC αD γF γG : Level → Level}
+ {βC βD : Level → Level → Level}
+ (C : Large-Category αC βC)
+ (D : Large-Category αD βD)
+ (F : functor-Large-Category γF C D)
+ (G : functor-Large-Category γG C D)
+ where
+
+ family-of-morphisms-functor-Large-Category : UUω
+ family-of-morphisms-functor-Large-Category =
+ family-of-morphisms-functor-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ naturality-family-of-morphisms-functor-Large-Category :
+ family-of-morphisms-functor-Large-Category → UUω
+ naturality-family-of-morphisms-functor-Large-Category =
+ naturality-family-of-morphisms-functor-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ natural-transformation-Large-Category : UUω
+ natural-transformation-Large-Category =
+ natural-transformation-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+
+ hom-natural-transformation-Large-Category :
+ natural-transformation-Large-Category →
+ family-of-morphisms-functor-Large-Category
+ hom-natural-transformation-Large-Category =
+ hom-natural-transformation-Large-Precategory
+
+ naturality-natural-transformation-Large-Category :
+ (τ : natural-transformation-Large-Category) →
+ naturality-family-of-morphisms-functor-Large-Category
+ (hom-natural-transformation-Large-Category τ)
+ naturality-natural-transformation-Large-Category =
+ naturality-natural-transformation-Large-Precategory
+```
+
+## Properties
+
+### The identity natural transformation
+
+Every functor comes equipped with an identity natural transformation.
+
+```agda
+module _
+ { αC αD γF : Level → Level}
+ { βC βD : Level → Level → Level}
+ ( C : Large-Category αC βC)
+ ( D : Large-Category αD βD)
+ ( F : functor-Large-Category γF C D)
+ where
+
+ hom-id-natural-transformation-Large-Category :
+ family-of-morphisms-functor-Large-Category C D F F
+ hom-id-natural-transformation-Large-Category =
+ hom-id-natural-transformation-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ naturality-id-natural-transformation-Large-Category :
+ naturality-family-of-morphisms-functor-Large-Category C D F F
+ hom-id-natural-transformation-Large-Category
+ naturality-id-natural-transformation-Large-Category =
+ naturality-id-natural-transformation-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+
+ id-natural-transformation-Large-Category :
+ natural-transformation-Large-Category C D F F
+ id-natural-transformation-Large-Category =
+ id-natural-transformation-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+```
+
+### Composition of natural transformations
+
+```agda
+module _
+ {αC αD γF γG γH : Level → Level}
+ {βC βD : Level → Level → Level}
+ (C : Large-Category αC βC)
+ (D : Large-Category αD βD)
+ (F : functor-Large-Category γF C D)
+ (G : functor-Large-Category γG C D)
+ (H : functor-Large-Category γH C D)
+ (τ : natural-transformation-Large-Category C D G H)
+ (σ : natural-transformation-Large-Category C D F G)
+ where
+
+ hom-comp-natural-transformation-Large-Category :
+ family-of-morphisms-functor-Large-Category C D F H
+ hom-comp-natural-transformation-Large-Category =
+ hom-comp-natural-transformation-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+ ( H)
+ ( τ)
+ ( σ)
+
+ naturality-comp-natural-transformation-Large-Category :
+ naturality-family-of-morphisms-functor-Large-Category C D F H
+ hom-comp-natural-transformation-Large-Category
+ naturality-comp-natural-transformation-Large-Category =
+ naturality-comp-natural-transformation-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+ ( H)
+ ( τ)
+ ( σ)
+
+ comp-natural-transformation-Large-Category :
+ natural-transformation-Large-Category C D F H
+ comp-natural-transformation-Large-Category =
+ comp-natural-transformation-Large-Precategory
+ ( large-precategory-Large-Category C)
+ ( large-precategory-Large-Category D)
+ ( F)
+ ( G)
+ ( H)
+ ( τ)
+ ( σ)
+```
diff --git a/src/category-theory/natural-transformations-functors-large-precategories.lagda.md b/src/category-theory/natural-transformations-functors-large-precategories.lagda.md
index 422d77fda3..40e89cd14c 100644
--- a/src/category-theory/natural-transformations-functors-large-precategories.lagda.md
+++ b/src/category-theory/natural-transformations-functors-large-precategories.lagda.md
@@ -7,6 +7,7 @@ module category-theory.natural-transformations-functors-large-precategories wher
Imports
```agda
+open import category-theory.commuting-squares-of-morphisms-in-large-precategories
open import category-theory.functors-large-precategories
open import category-theory.large-precategories
@@ -31,55 +32,43 @@ a **natural transformation** from a
## Definition
```agda
-coherence-square-Large-Precategory :
- {αC : Level → Level}
- {βC : Level → Level → Level}
- (C : Large-Precategory αC βC)
- {l1 l2 l3 l4 : Level}
- {A : obj-Large-Precategory C l1}
- {B : obj-Large-Precategory C l2}
- {X : obj-Large-Precategory C l3}
- {Y : obj-Large-Precategory C l4}
- (top : hom-Large-Precategory C A B)
- (left : hom-Large-Precategory C A X)
- (right : hom-Large-Precategory C B Y)
- (bottom : hom-Large-Precategory C X Y) →
- UU (βC l1 l4)
-coherence-square-Large-Precategory C top left right bottom =
- comp-hom-Large-Precategory C right top =
- comp-hom-Large-Precategory C bottom left
-
module _
{αC αD γF γG : Level → Level}
{βC βD : Level → Level → Level}
- {C : Large-Precategory αC βC}
- {D : Large-Precategory αD βD}
- (F : functor-Large-Precategory C D γF)
- (G : functor-Large-Precategory C D γG)
+ (C : Large-Precategory αC βC)
+ (D : Large-Precategory αD βD)
+ (F : functor-Large-Precategory γF C D)
+ (G : functor-Large-Precategory γG C D)
where
- hom-family-functor-Large-Precategory : UUω
- hom-family-functor-Large-Precategory =
+ family-of-morphisms-functor-Large-Precategory : UUω
+ family-of-morphisms-functor-Large-Precategory =
{l : Level} (X : obj-Large-Precategory C l) →
hom-Large-Precategory D
( obj-functor-Large-Precategory F X)
( obj-functor-Large-Precategory G X)
+ naturality-family-of-morphisms-functor-Large-Precategory :
+ family-of-morphisms-functor-Large-Precategory → UUω
+ naturality-family-of-morphisms-functor-Large-Precategory τ =
+ {l1 l2 : Level} {X : obj-Large-Precategory C l1}
+ {Y : obj-Large-Precategory C l2}
+ (f : hom-Large-Precategory C X Y) →
+ coherence-square-hom-Large-Precategory D
+ ( hom-functor-Large-Precategory F f)
+ ( τ X)
+ ( τ Y)
+ ( hom-functor-Large-Precategory G f)
+
record natural-transformation-Large-Precategory : UUω
where
constructor make-natural-transformation
field
- hom-family-natural-transformation-Large-Precategory :
- hom-family-functor-Large-Precategory
- coherence-square-natural-transformation-Large-Precategory :
- {l1 l2 : Level} {X : obj-Large-Precategory C l1}
- {Y : obj-Large-Precategory C l2}
- (f : hom-Large-Precategory C X Y) →
- coherence-square-Large-Precategory D
- ( hom-family-natural-transformation-Large-Precategory X)
- ( hom-functor-Large-Precategory F f)
- ( hom-functor-Large-Precategory G f)
- ( hom-family-natural-transformation-Large-Precategory Y)
+ hom-natural-transformation-Large-Precategory :
+ family-of-morphisms-functor-Large-Precategory
+ naturality-natural-transformation-Large-Precategory :
+ naturality-family-of-morphisms-functor-Large-Precategory
+ hom-natural-transformation-Large-Precategory
open natural-transformation-Large-Precategory public
```
@@ -94,23 +83,34 @@ Every functor comes equipped with an identity natural transformation.
module _
{ αC αD γF : Level → Level}
{ βC βD : Level → Level → Level}
- { C : Large-Precategory αC βC}
- { D : Large-Precategory αD βD}
+ ( C : Large-Precategory αC βC)
+ ( D : Large-Precategory αD βD)
+ ( F : functor-Large-Precategory γF C D)
where
+ hom-id-natural-transformation-Large-Precategory :
+ family-of-morphisms-functor-Large-Precategory C D F F
+ hom-id-natural-transformation-Large-Precategory X =
+ id-hom-Large-Precategory D
+
+ naturality-id-natural-transformation-Large-Precategory :
+ naturality-family-of-morphisms-functor-Large-Precategory C D F F
+ hom-id-natural-transformation-Large-Precategory
+ naturality-id-natural-transformation-Large-Precategory f =
+ ( right-unit-law-comp-hom-Large-Precategory D
+ ( hom-functor-Large-Precategory F f)) ∙
+ ( inv
+ ( left-unit-law-comp-hom-Large-Precategory D
+ ( hom-functor-Large-Precategory F f)))
+
id-natural-transformation-Large-Precategory :
- ( F : functor-Large-Precategory C D γF) →
- natural-transformation-Large-Precategory F F
- hom-family-natural-transformation-Large-Precategory
- ( id-natural-transformation-Large-Precategory F) X =
- id-hom-Large-Precategory D
- coherence-square-natural-transformation-Large-Precategory
- ( id-natural-transformation-Large-Precategory F) f =
- ( right-unit-law-comp-hom-Large-Precategory D
- ( hom-functor-Large-Precategory F f)) ∙
- ( inv
- ( left-unit-law-comp-hom-Large-Precategory D
- ( hom-functor-Large-Precategory F f)))
+ natural-transformation-Large-Precategory C D F F
+ hom-natural-transformation-Large-Precategory
+ id-natural-transformation-Large-Precategory =
+ hom-id-natural-transformation-Large-Precategory
+ naturality-natural-transformation-Large-Precategory
+ id-natural-transformation-Large-Precategory =
+ naturality-id-natural-transformation-Large-Precategory
```
### Composition of natural transformations
@@ -119,46 +119,57 @@ module _
module _
{αC αD γF γG γH : Level → Level}
{βC βD : Level → Level → Level}
- {C : Large-Precategory αC βC}
- {D : Large-Precategory αD βD}
- (F : functor-Large-Precategory C D γF)
- (G : functor-Large-Precategory C D γG)
- (H : functor-Large-Precategory C D γH)
+ (C : Large-Precategory αC βC)
+ (D : Large-Precategory αD βD)
+ (F : functor-Large-Precategory γF C D)
+ (G : functor-Large-Precategory γG C D)
+ (H : functor-Large-Precategory γH C D)
+ (τ : natural-transformation-Large-Precategory C D G H)
+ (σ : natural-transformation-Large-Precategory C D F G)
where
- comp-natural-transformation-Large-Precategory :
- natural-transformation-Large-Precategory G H →
- natural-transformation-Large-Precategory F G →
- natural-transformation-Large-Precategory F H
- hom-family-natural-transformation-Large-Precategory
- ( comp-natural-transformation-Large-Precategory b a) X =
- comp-hom-Large-Precategory D
- ( hom-family-natural-transformation-Large-Precategory b X)
- ( hom-family-natural-transformation-Large-Precategory a X)
- coherence-square-natural-transformation-Large-Precategory
- ( comp-natural-transformation-Large-Precategory b a) {X = X} {Y} f =
- ( inv
+ hom-comp-natural-transformation-Large-Precategory :
+ family-of-morphisms-functor-Large-Precategory C D F H
+ hom-comp-natural-transformation-Large-Precategory X =
+ comp-hom-Large-Precategory D
+ ( hom-natural-transformation-Large-Precategory τ X)
+ ( hom-natural-transformation-Large-Precategory σ X)
+
+ naturality-comp-natural-transformation-Large-Precategory :
+ naturality-family-of-morphisms-functor-Large-Precategory C D F H
+ hom-comp-natural-transformation-Large-Precategory
+ naturality-comp-natural-transformation-Large-Precategory {X = X} {Y} f =
+ inv
( associative-comp-hom-Large-Precategory D
( hom-functor-Large-Precategory H f)
- ( hom-family-natural-transformation-Large-Precategory b X)
- ( hom-family-natural-transformation-Large-Precategory a X))) ∙
+ ( hom-natural-transformation-Large-Precategory τ X)
+ ( hom-natural-transformation-Large-Precategory σ X)) ∙
( ap
( comp-hom-Large-Precategory' D
- ( hom-family-natural-transformation-Large-Precategory a X))
- ( coherence-square-natural-transformation-Large-Precategory b f)) ∙
+ ( hom-natural-transformation-Large-Precategory σ X))
+ ( naturality-natural-transformation-Large-Precategory τ f)) ∙
( associative-comp-hom-Large-Precategory D
- ( hom-family-natural-transformation-Large-Precategory b Y)
+ ( hom-natural-transformation-Large-Precategory τ Y)
( hom-functor-Large-Precategory G f)
- ( hom-family-natural-transformation-Large-Precategory a X)) ∙
+ ( hom-natural-transformation-Large-Precategory σ X)) ∙
( ap
( comp-hom-Large-Precategory D
- ( hom-family-natural-transformation-Large-Precategory b Y))
- ( coherence-square-natural-transformation-Large-Precategory a f)) ∙
+ ( hom-natural-transformation-Large-Precategory τ Y))
+ ( naturality-natural-transformation-Large-Precategory σ f)) ∙
( inv
- ( associative-comp-hom-Large-Precategory D
- ( hom-family-natural-transformation-Large-Precategory b Y)
- ( hom-family-natural-transformation-Large-Precategory a Y)
+ (associative-comp-hom-Large-Precategory D
+ ( hom-natural-transformation-Large-Precategory τ Y)
+ ( hom-natural-transformation-Large-Precategory σ Y)
( hom-functor-Large-Precategory F f)))
+
+ comp-natural-transformation-Large-Precategory :
+ natural-transformation-Large-Precategory C D F H
+ hom-natural-transformation-Large-Precategory
+ comp-natural-transformation-Large-Precategory =
+ hom-comp-natural-transformation-Large-Precategory
+ naturality-natural-transformation-Large-Precategory
+ comp-natural-transformation-Large-Precategory =
+ naturality-comp-natural-transformation-Large-Precategory
```
## See also
diff --git a/src/category-theory/representable-functors-large-precategories.lagda.md b/src/category-theory/representable-functors-large-precategories.lagda.md
index 582cf13b69..338e1aa28e 100644
--- a/src/category-theory/representable-functors-large-precategories.lagda.md
+++ b/src/category-theory/representable-functors-large-precategories.lagda.md
@@ -13,7 +13,10 @@ open import category-theory.natural-transformations-functors-large-precategories
open import foundation.category-of-sets
open import foundation.function-extensionality
+open import foundation.function-types
open import foundation.homotopies
+open import foundation.identity-types
+open import foundation.sets
open import foundation.universe-levels
```
@@ -38,20 +41,60 @@ associativity and the left unit law for the precategory `C`.
## Definition
```agda
-representable-functor-Large-Precategory :
+module _
{α : Level → Level} {β : Level → Level → Level}
- (C : Large-Precategory α β) {l : Level} (c : obj-Large-Precategory C l) →
- functor-Large-Precategory C (Set-Large-Precategory) (β l)
-obj-functor-Large-Precategory (representable-functor-Large-Precategory C c) =
- hom-set-Large-Precategory C c
-hom-functor-Large-Precategory (representable-functor-Large-Precategory C c) g =
- postcomp-hom-Large-Precategory C c g
-preserves-comp-functor-Large-Precategory
- ( representable-functor-Large-Precategory C c) h g =
- eq-htpy (associative-comp-hom-Large-Precategory C h g)
-preserves-id-functor-Large-Precategory
- ( representable-functor-Large-Precategory C c) =
- eq-htpy (left-unit-law-comp-hom-Large-Precategory C)
+ (C : Large-Precategory α β) {l1 : Level} (c : obj-Large-Precategory C l1)
+ where
+
+ obj-representable-functor-Large-Precategory :
+ {l2 : Level} (x : obj-Large-Precategory C l2) → Set (β l1 l2)
+ obj-representable-functor-Large-Precategory =
+ hom-set-Large-Precategory C c
+
+ hom-representable-functor-Large-Precategory :
+ {l2 l3 : Level}
+ {X : obj-Large-Precategory C l2} {Y : obj-Large-Precategory C l3} →
+ hom-Large-Precategory C X Y →
+ type-hom-Set
+ ( obj-representable-functor-Large-Precategory X)
+ ( obj-representable-functor-Large-Precategory Y)
+ hom-representable-functor-Large-Precategory =
+ postcomp-hom-Large-Precategory C c
+
+ preserves-comp-representable-functor-Large-Precategory :
+ {l2 l3 l4 : Level}
+ {X : obj-Large-Precategory C l2}
+ {Y : obj-Large-Precategory C l3}
+ {Z : obj-Large-Precategory C l4}
+ (g : hom-Large-Precategory C Y Z)
+ (f : hom-Large-Precategory C X Y) →
+ hom-representable-functor-Large-Precategory
+ ( comp-hom-Large-Precategory C g f) =
+ hom-representable-functor-Large-Precategory g ∘
+ hom-representable-functor-Large-Precategory f
+ preserves-comp-representable-functor-Large-Precategory g f =
+ eq-htpy (associative-comp-hom-Large-Precategory C g f)
+
+ preserves-id-representable-functor-Large-Precategory :
+ {l2 : Level} {X : obj-Large-Precategory C l2} →
+ hom-representable-functor-Large-Precategory
+ ( id-hom-Large-Precategory C {X = X}) =
+ id
+ preserves-id-representable-functor-Large-Precategory =
+ eq-htpy (left-unit-law-comp-hom-Large-Precategory C)
+
+ representable-functor-Large-Precategory :
+ functor-Large-Precategory (β l1) C (Set-Large-Precategory)
+ obj-functor-Large-Precategory representable-functor-Large-Precategory =
+ obj-representable-functor-Large-Precategory
+ hom-functor-Large-Precategory representable-functor-Large-Precategory =
+ hom-representable-functor-Large-Precategory
+ preserves-comp-functor-Large-Precategory
+ representable-functor-Large-Precategory =
+ preserves-comp-representable-functor-Large-Precategory
+ preserves-id-functor-Large-Precategory
+ representable-functor-Large-Precategory =
+ preserves-id-representable-functor-Large-Precategory
```
## Natural transformations between representable functors
@@ -62,18 +105,37 @@ from the functor represented by `c` to the functor represented by `b`. Its
components `hom c x → hom b x` are defined by precomposition with `f`.
```agda
-representable-natural-transformation-Large-Precategory :
+module _
{α : Level → Level} {β : Level → Level → Level} (C : Large-Precategory α β)
{l1 l2 : Level}
(b : obj-Large-Precategory C l1) (c : obj-Large-Precategory C l2)
- (f : hom-Large-Precategory C b c) →
- natural-transformation-Large-Precategory
- ( representable-functor-Large-Precategory C c)
- ( representable-functor-Large-Precategory C b)
-hom-family-natural-transformation-Large-Precategory
- ( representable-natural-transformation-Large-Precategory C b c f) =
- precomp-hom-Large-Precategory C f
-coherence-square-natural-transformation-Large-Precategory
- ( representable-natural-transformation-Large-Precategory C b c f) h =
- eq-htpy (inv-htpy (λ g → associative-comp-hom-Large-Precategory C h g f))
+ (f : hom-Large-Precategory C b c)
+ where
+
+ hom-representable-natural-transformation-Large-Precategory :
+ family-of-morphisms-functor-Large-Precategory C Set-Large-Precategory
+ ( representable-functor-Large-Precategory C c)
+ ( representable-functor-Large-Precategory C b)
+ hom-representable-natural-transformation-Large-Precategory =
+ precomp-hom-Large-Precategory C f
+
+ naturality-representable-natural-transformation-Large-Precategory :
+ naturality-family-of-morphisms-functor-Large-Precategory C
+ ( Set-Large-Precategory)
+ ( representable-functor-Large-Precategory C c)
+ ( representable-functor-Large-Precategory C b)
+ ( hom-representable-natural-transformation-Large-Precategory)
+ naturality-representable-natural-transformation-Large-Precategory h =
+ inv (eq-htpy (λ g → associative-comp-hom-Large-Precategory C h g f))
+
+ representable-natural-transformation-Large-Precategory :
+ natural-transformation-Large-Precategory C Set-Large-Precategory
+ ( representable-functor-Large-Precategory C c)
+ ( representable-functor-Large-Precategory C b)
+ hom-natural-transformation-Large-Precategory
+ representable-natural-transformation-Large-Precategory =
+ hom-representable-natural-transformation-Large-Precategory
+ naturality-natural-transformation-Large-Precategory
+ representable-natural-transformation-Large-Precategory =
+ naturality-representable-natural-transformation-Large-Precategory
```
diff --git a/src/commutative-algebra/groups-of-units-commutative-rings.lagda.md b/src/commutative-algebra/groups-of-units-commutative-rings.lagda.md
index 7e5920c717..78637d596c 100644
--- a/src/commutative-algebra/groups-of-units-commutative-rings.lagda.md
+++ b/src/commutative-algebra/groups-of-units-commutative-rings.lagda.md
@@ -21,11 +21,11 @@ open import foundation.subtypes
open import foundation.universe-levels
open import group-theory.abelian-groups
+open import group-theory.category-of-abelian-groups
open import group-theory.groups
open import group-theory.homomorphisms-groups
open import group-theory.homomorphisms-monoids
open import group-theory.monoids
-open import group-theory.precategory-of-abelian-groups
open import group-theory.semigroups
open import group-theory.submonoids
@@ -307,10 +307,9 @@ module _
```agda
group-of-units-commutative-ring-functor-Large-Precategory :
- functor-Large-Precategory
+ functor-Large-Precategory id
( Commutative-Ring-Large-Precategory)
( Ab-Large-Precategory)
- ( id)
obj-functor-Large-Precategory
group-of-units-commutative-ring-functor-Large-Precategory =
abelian-group-of-units-Commutative-Ring
diff --git a/src/foundation/embeddings.lagda.md b/src/foundation/embeddings.lagda.md
index 8d29fe181e..d452d631f4 100644
--- a/src/foundation/embeddings.lagda.md
+++ b/src/foundation/embeddings.lagda.md
@@ -14,6 +14,7 @@ open import foundation.commuting-squares-of-maps
open import foundation.cones-over-cospans
open import foundation.dependent-pair-types
open import foundation.equivalences
+open import foundation.fibers-of-maps
open import foundation.functoriality-cartesian-product-types
open import foundation.fundamental-theorem-of-identity-types
open import foundation.identity-types
@@ -21,6 +22,7 @@ open import foundation.truncated-maps
open import foundation.universe-levels
open import foundation-core.cartesian-product-types
+open import foundation-core.contractible-types
open import foundation-core.function-types
open import foundation-core.functoriality-dependent-pair-types
open import foundation-core.homotopies
@@ -351,3 +353,39 @@ module _
( is-equiv-map-inv-is-equiv L)
( M)
```
+
+### A map is an embedding if and only if it has contractible fibers at values
+
+```agda
+module _
+ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B)
+ where
+
+ is-emb-is-contr-fibers-values' :
+ ((a : A) → is-contr (fiber' f (f a))) → is-emb f
+ is-emb-is-contr-fibers-values' c a =
+ fundamental-theorem-id (c a) (λ x → ap f {a} {x})
+
+ is-emb-is-contr-fibers-values :
+ ((a : A) → is-contr (fiber f (f a))) → is-emb f
+ is-emb-is-contr-fibers-values c =
+ is-emb-is-contr-fibers-values'
+ ( λ a →
+ is-contr-equiv'
+ ( fiber f (f a))
+ ( equiv-fiber f (f a))
+ ( c a))
+
+ is-contr-fibers-values-is-emb' :
+ is-emb f → ((a : A) → is-contr (fiber' f (f a)))
+ is-contr-fibers-values-is-emb' e a =
+ fundamental-theorem-id' (λ x → ap f {a} {x}) (e a)
+
+ is-contr-fibers-values-is-emb :
+ is-emb f → ((a : A) → is-contr (fiber f (f a)))
+ is-contr-fibers-values-is-emb e a =
+ is-contr-equiv
+ ( fiber' f (f a))
+ ( equiv-fiber f (f a))
+ ( is-contr-fibers-values-is-emb' e a)
+```
diff --git a/src/foundation/epimorphisms.lagda.md b/src/foundation/epimorphisms.lagda.md
index 701132c370..9db0964a3c 100644
--- a/src/foundation/epimorphisms.lagda.md
+++ b/src/foundation/epimorphisms.lagda.md
@@ -7,10 +7,26 @@ module foundation.epimorphisms where
Imports
```agda
+open import foundation.dependent-pair-types
+open import foundation.function-extensionality
+open import foundation.propositional-maps
+open import foundation.sections
open import foundation.universe-levels
+open import foundation-core.commuting-squares-of-maps
open import foundation-core.embeddings
+open import foundation-core.equivalences
+open import foundation-core.fibers-of-maps
open import foundation-core.function-types
+open import foundation-core.functoriality-dependent-pair-types
+open import foundation-core.homotopies
+open import foundation-core.identity-types
+open import foundation-core.propositions
+
+open import synthetic-homotopy-theory.cocones-under-spans
+open import synthetic-homotopy-theory.codiagonals-of-maps
+open import synthetic-homotopy-theory.pushouts
+open import synthetic-homotopy-theory.universal-property-pushouts
```
@@ -28,13 +44,100 @@ is an [embedding](foundation-core.embeddings.md) for every type `X`.
## Definitions
+### Epimorphisms with respect to a specified universe
+
```agda
module _
- {l1 l2 : Level} (l : Level) {A : UU l1} {B : UU l2}
+ {l1 l2 : Level} {A : UU l1} {B : UU l2}
where
+ is-epimorphism-Level : (l : Level) → (A → B) → UU (l1 ⊔ l2 ⊔ lsuc l)
+ is-epimorphism-Level l f = (X : UU l) → is-emb (precomp f X)
+```
+
+### Epimorphisms
+
+```agda
is-epimorphism : (A → B) → UUω
- is-epimorphism f = {l : Level} (X : UU l) → is-emb (precomp f X)
+ is-epimorphism f = {l : Level} → is-epimorphism-Level l f
+```
+
+## Properties
+
+### The codiagonal of an epimorphism is an equivalence
+
+If the map `f : A → B` is epi, then the commutative square
+
+```text
+ f
+ A → B
+ f ↓ ↓ id
+ B → B
+ id
+```
+
+is a pushout square.
+
+```agda
+module _
+ {l1 l2 l3 : Level} {A : UU l1} {B : UU l2} (f : A → B) (X : UU l3)
+ where
+
+ equiv-fibers-precomp-cocone :
+ Σ (B → X) (λ g → fiber (precomp f X) (g ∘ f)) ≃ cocone f f X
+ equiv-fibers-precomp-cocone =
+ equiv-tot ( λ g →
+ ( equiv-tot (λ h → equiv-funext) ∘e
+ ( equiv-fiber (precomp f X) (g ∘ f))))
+
+ diagonal-into-fibers-precomp :
+ (B → X) → Σ (B → X) (λ g → fiber (precomp f X) (g ∘ f))
+ diagonal-into-fibers-precomp = map-section-family (λ g → g , refl)
+
+ is-equiv-diagonal-into-fibers-precomp-is-epimorphism :
+ is-epimorphism f → is-equiv diagonal-into-fibers-precomp
+ is-equiv-diagonal-into-fibers-precomp-is-epimorphism e =
+ is-equiv-map-section-family
+ ( λ g → (g , refl))
+ ( λ g →
+ is-proof-irrelevant-is-prop
+ ( is-prop-map-is-emb (e X) (g ∘ f))
+ ( g , refl))
+
+module _
+ {l1 l2 : Level} {A : UU l1} {B : UU l2} (f : A → B)
+ where
+
+ universal-property-pushout-is-epimorphism :
+ is-epimorphism f →
+ {l : Level} → universal-property-pushout l f f (cocone-codiagonal-map f)
+ universal-property-pushout-is-epimorphism e X =
+ is-equiv-comp
+ ( map-equiv (equiv-fibers-precomp-cocone f X))
+ ( diagonal-into-fibers-precomp f X)
+ ( is-equiv-diagonal-into-fibers-precomp-is-epimorphism f X e)
+ ( is-equiv-map-equiv (equiv-fibers-precomp-cocone f X))
+```
+
+If the map `f : A → B` is epi, then its codiagonal is an equivalence.
+
+```agda
+ is-equiv-codiagonal-map-is-epimorphism :
+ is-epimorphism f → is-equiv (codiagonal-map f)
+ is-equiv-codiagonal-map-is-epimorphism e =
+ is-equiv-up-pushout-up-pushout f f
+ ( cocone-pushout f f)
+ ( cocone-codiagonal-map f)
+ ( codiagonal-map f)
+ ( compute-inl-codiagonal-map f ,
+ compute-inr-codiagonal-map f ,
+ compute-glue-codiagonal-map f)
+ ( up-pushout f f)
+ ( universal-property-pushout-is-epimorphism e)
+
+ is-pushout-is-epimorphism :
+ is-epimorphism f → is-pushout f f (cocone-codiagonal-map f)
+ is-pushout-is-epimorphism = is-equiv-codiagonal-map-is-epimorphism
```
## See also
diff --git a/src/group-theory.lagda.md b/src/group-theory.lagda.md
index f4931ecfea..917c06bbea 100644
--- a/src/group-theory.lagda.md
+++ b/src/group-theory.lagda.md
@@ -13,6 +13,7 @@ open import group-theory.cartesian-products-concrete-groups public
open import group-theory.cartesian-products-groups public
open import group-theory.cartesian-products-monoids public
open import group-theory.cartesian-products-semigroups public
+open import group-theory.category-of-abelian-groups public
open import group-theory.category-of-concrete-groups public
open import group-theory.category-of-groups public
open import group-theory.category-of-semigroups public
@@ -130,7 +131,6 @@ open import group-theory.perfect-subgroups public
open import group-theory.powers-of-elements-commutative-monoids public
open import group-theory.powers-of-elements-groups public
open import group-theory.powers-of-elements-monoids public
-open import group-theory.precategory-of-abelian-groups public
open import group-theory.precategory-of-commutative-monoids public
open import group-theory.precategory-of-concrete-groups public
open import group-theory.precategory-of-group-actions public
diff --git a/src/group-theory/category-of-abelian-groups.lagda.md b/src/group-theory/category-of-abelian-groups.lagda.md
new file mode 100644
index 0000000000..34a9f54fbd
--- /dev/null
+++ b/src/group-theory/category-of-abelian-groups.lagda.md
@@ -0,0 +1,52 @@
+# The category of abelian groups
+
+```agda
+module group-theory.category-of-abelian-groups where
+```
+
+Imports
+
+```agda
+open import category-theory.categories
+open import category-theory.full-large-subcategories
+open import category-theory.large-categories
+open import category-theory.large-precategories
+open import category-theory.precategories
+
+open import foundation.universe-levels
+
+open import group-theory.abelian-groups
+open import group-theory.category-of-groups
+```
+
+
+
+## Idea
+
+The **category of abelian groups** is the
+[full large subcategory](category-theory.full-large-subcategories.md) of the
+[category of groups](group-theory.category-of-groups.md) consisting of
+[groups](group-theory.groups.md) of which the group operation is
+[commutative](group-theory.abelian-groups.md).
+
+## Definitions
+
+### The category of abelian groups
+
+```agda
+Ab-Large-Category : Large-Category lsuc _⊔_
+Ab-Large-Category =
+ large-category-Full-Large-Subcategory
+ ( Group-Large-Category)
+ ( is-abelian-group-Prop)
+
+Ab-Large-Precategory : Large-Precategory lsuc _⊔_
+Ab-Large-Precategory =
+ large-precategory-Large-Category Ab-Large-Category
+
+Ab-Category : (l : Level) → Category (lsuc l) l
+Ab-Category = category-Large-Category Ab-Large-Category
+
+Ab-Precategory : (l : Level) → Precategory (lsuc l) l
+Ab-Precategory = precategory-Large-Category Ab-Large-Category
+```
diff --git a/src/group-theory/cores-monoids.lagda.md b/src/group-theory/cores-monoids.lagda.md
index aaa7e1a7d3..7a6109893d 100644
--- a/src/group-theory/cores-monoids.lagda.md
+++ b/src/group-theory/cores-monoids.lagda.md
@@ -226,7 +226,7 @@ module _
```agda
core-monoid-functor-Large-Precategory :
- functor-Large-Precategory Monoid-Large-Precategory Group-Large-Precategory id
+ functor-Large-Precategory id Monoid-Large-Precategory Group-Large-Precategory
obj-functor-Large-Precategory
core-monoid-functor-Large-Precategory =
core-Monoid
diff --git a/src/group-theory/precategory-of-abelian-groups.lagda.md b/src/group-theory/precategory-of-abelian-groups.lagda.md
deleted file mode 100644
index 60d38dbcce..0000000000
--- a/src/group-theory/precategory-of-abelian-groups.lagda.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# The precategory of abelian groups
-
-```agda
-module group-theory.precategory-of-abelian-groups where
-```
-
-Imports
-
-```agda
-open import category-theory.large-precategories
-open import category-theory.precategories
-
-open import foundation.universe-levels
-
-open import group-theory.abelian-groups
-open import group-theory.homomorphisms-abelian-groups
-```
-
-
-
-## Idea
-
-The **precategory of abelian groups** consists of abelian groups and group
-homomorphisms.
-
-## Definition
-
-### The large precategory of abelian groups
-
-```agda
-Ab-Large-Precategory : Large-Precategory lsuc (_⊔_)
-Large-Precategory.obj-Large-Precategory
- Ab-Large-Precategory =
- Ab
-Large-Precategory.hom-set-Large-Precategory
- Ab-Large-Precategory =
- hom-set-Ab
-Large-Precategory.comp-hom-Large-Precategory
- Ab-Large-Precategory {X = A} {B} {C} =
- comp-hom-Ab A B C
-Large-Precategory.id-hom-Large-Precategory
- Ab-Large-Precategory {X = A} =
- id-hom-Ab A
-Large-Precategory.associative-comp-hom-Large-Precategory
- Ab-Large-Precategory {X = A} {B} {C} {D} =
- associative-comp-hom-Ab A B C D
-Large-Precategory.left-unit-law-comp-hom-Large-Precategory
- Ab-Large-Precategory {X = A} {B} =
- left-unit-law-comp-hom-Ab A B
-Large-Precategory.right-unit-law-comp-hom-Large-Precategory
- Ab-Large-Precategory {X = A} {B} =
- right-unit-law-comp-hom-Ab A B
-```
-
-### The small categories of abelian groups
-
-```agda
-Ab-Precategory : (l : Level) → Precategory (lsuc l) l
-Ab-Precategory = precategory-Large-Precategory Ab-Large-Precategory
-```
diff --git a/src/group-theory/substitution-functor-group-actions.lagda.md b/src/group-theory/substitution-functor-group-actions.lagda.md
index 94ff4fc9dd..7b573d77db 100644
--- a/src/group-theory/substitution-functor-group-actions.lagda.md
+++ b/src/group-theory/substitution-functor-group-actions.lagda.md
@@ -15,6 +15,7 @@ open import foundation.dependent-pair-types
open import foundation.equivalence-classes
open import foundation.equivalence-relations
open import foundation.existential-quantification
+open import foundation.function-types
open import foundation.identity-types
open import foundation.propositional-truncations
open import foundation.sets
@@ -85,10 +86,9 @@ module _
preserves-comp-subst-Abstract-Group-Action X Y Z g f = refl
subst-Abstract-Group-Action :
- functor-Large-Precategory
+ functor-Large-Precategory id
( Abstract-Group-Action-Large-Precategory H)
( Abstract-Group-Action-Large-Precategory G)
- ( λ l → l)
obj-functor-Large-Precategory subst-Abstract-Group-Action =
obj-subst-Abstract-Group-Action
hom-functor-Large-Precategory subst-Abstract-Group-Action {X = X} {Y} =
@@ -96,7 +96,8 @@ module _
preserves-comp-functor-Large-Precategory subst-Abstract-Group-Action
{l1} {l2} {l3} {X} {Y} {Z} =
preserves-comp-subst-Abstract-Group-Action X Y Z
- preserves-id-functor-Large-Precategory subst-Abstract-Group-Action {l1} {X} =
+ preserves-id-functor-Large-Precategory
+ subst-Abstract-Group-Action {l1} {X} =
preserves-id-subst-Abstract-Group-Action X
```
diff --git a/src/ring-theory/groups-of-units-rings.lagda.md b/src/ring-theory/groups-of-units-rings.lagda.md
index 2c1bfce80b..80f85ac6eb 100644
--- a/src/ring-theory/groups-of-units-rings.lagda.md
+++ b/src/ring-theory/groups-of-units-rings.lagda.md
@@ -247,7 +247,10 @@ module _
```agda
group-of-units-ring-functor-Large-Precategory :
- functor-Large-Precategory Ring-Large-Precategory Group-Large-Precategory id
+ functor-Large-Precategory
+ ( λ l → l)
+ ( Ring-Large-Precategory)
+ ( Group-Large-Precategory)
obj-functor-Large-Precategory
group-of-units-ring-functor-Large-Precategory =
group-of-units-Ring
diff --git a/src/synthetic-homotopy-theory.lagda.md b/src/synthetic-homotopy-theory.lagda.md
index 03be0502f7..0905d11402 100644
--- a/src/synthetic-homotopy-theory.lagda.md
+++ b/src/synthetic-homotopy-theory.lagda.md
@@ -53,10 +53,12 @@ open import synthetic-homotopy-theory.join-powers-of-types public
open import synthetic-homotopy-theory.joins-of-types public
open import synthetic-homotopy-theory.loop-spaces public
open import synthetic-homotopy-theory.maps-of-prespectra public
+open import synthetic-homotopy-theory.mere-spheres public
open import synthetic-homotopy-theory.morphisms-descent-data-circle public
open import synthetic-homotopy-theory.multiplication-circle public
open import synthetic-homotopy-theory.plus-principle public
open import synthetic-homotopy-theory.powers-of-loops public
+open import synthetic-homotopy-theory.premanifolds public
open import synthetic-homotopy-theory.prespectra public
open import synthetic-homotopy-theory.pullback-property-pushouts public
open import synthetic-homotopy-theory.pushouts public
@@ -70,6 +72,7 @@ open import synthetic-homotopy-theory.suspension-prespectra public
open import synthetic-homotopy-theory.suspension-structures public
open import synthetic-homotopy-theory.suspensions-of-pointed-types public
open import synthetic-homotopy-theory.suspensions-of-types public
+open import synthetic-homotopy-theory.tangent-spheres public
open import synthetic-homotopy-theory.triple-loop-spaces public
open import synthetic-homotopy-theory.universal-cover-circle public
open import synthetic-homotopy-theory.universal-property-circle public
diff --git a/src/synthetic-homotopy-theory/mere-spheres.lagda.md b/src/synthetic-homotopy-theory/mere-spheres.lagda.md
new file mode 100644
index 0000000000..70a895594b
--- /dev/null
+++ b/src/synthetic-homotopy-theory/mere-spheres.lagda.md
@@ -0,0 +1,62 @@
+# Mere spheres
+
+```agda
+module synthetic-homotopy-theory.mere-spheres where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.natural-numbers
+
+open import foundation.dependent-pair-types
+open import foundation.mere-equivalences
+open import foundation.propositions
+open import foundation.universe-levels
+
+open import synthetic-homotopy-theory.spheres
+```
+
+
+
+## Idea
+
+A **mere `n`-sphere** is a type `X` that is
+[merely equivalent](foundation.mere-equivalences.md) to the
+[`n`-sphere](synthetic-homotopy-theory.spheres.md).
+
+## Definitions
+
+### The predicate of being a mere `n`-sphere
+
+```agda
+module _
+ {l : Level} (n : ℕ) (X : UU l)
+ where
+
+ is-mere-sphere-Prop : Prop l
+ is-mere-sphere-Prop = mere-equiv-Prop (sphere n) X
+
+ is-mere-sphere : UU l
+ is-mere-sphere = type-Prop is-mere-sphere-Prop
+
+ is-prop-is-mere-sphere : is-prop is-mere-sphere
+ is-prop-is-mere-sphere = is-prop-type-Prop is-mere-sphere-Prop
+```
+
+### Mere spheres
+
+```agda
+mere-sphere : (l : Level) (n : ℕ) → UU (lsuc l)
+mere-sphere l n = Σ (UU l) (is-mere-sphere n)
+
+module _
+ {l : Level} (n : ℕ) (X : mere-sphere l n)
+ where
+
+ type-mere-sphere : UU l
+ type-mere-sphere = pr1 X
+
+ mere-equiv-mere-sphere : mere-equiv (sphere n) type-mere-sphere
+ mere-equiv-mere-sphere = pr2 X
+```
diff --git a/src/synthetic-homotopy-theory/premanifolds.lagda.md b/src/synthetic-homotopy-theory/premanifolds.lagda.md
new file mode 100644
index 0000000000..99d31810ac
--- /dev/null
+++ b/src/synthetic-homotopy-theory/premanifolds.lagda.md
@@ -0,0 +1,104 @@
+# Premanifolds
+
+```agda
+module synthetic-homotopy-theory.premanifolds where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.natural-numbers
+
+open import foundation.commuting-squares-of-maps
+open import foundation.dependent-pair-types
+open import foundation.mere-equivalences
+open import foundation.unit-type
+open import foundation.universe-levels
+
+open import synthetic-homotopy-theory.cocones-under-spans
+open import synthetic-homotopy-theory.mere-spheres
+open import synthetic-homotopy-theory.pushouts
+open import synthetic-homotopy-theory.spheres
+open import synthetic-homotopy-theory.tangent-spheres
+```
+
+
+
+## Idea
+
+An **`n`-dimensional premanifold** is a type `M` such that every element `x : M`
+comes equipped with a
+[tangent `n`-sphere](synthetic-homotopy-theory.tangent-spheres.md).
+
+## Definitions
+
+### Premanifolds
+
+```agda
+Premanifold : (l : Level) (n : ℕ) → UU (lsuc l)
+Premanifold l n = Σ (UU l) (λ M → (x : M) → has-tangent-sphere n x)
+
+module _
+ {l : Level} (n : ℕ) (M : Premanifold l n)
+ where
+
+ type-Premanifold : UU l
+ type-Premanifold = pr1 M
+
+ tangent-sphere-Premanifold : (x : type-Premanifold) → mere-sphere lzero n
+ tangent-sphere-Premanifold x =
+ tangent-sphere-has-tangent-sphere n (pr2 M x)
+
+ type-tangent-sphere-Premanifold : (x : type-Premanifold) → UU lzero
+ type-tangent-sphere-Premanifold x =
+ type-tangent-sphere-has-tangent-sphere n (pr2 M x)
+
+ mere-equiv-tangent-sphere-Premanifold :
+ (x : type-Premanifold) →
+ mere-equiv (sphere n) (type-tangent-sphere-Premanifold x)
+ mere-equiv-tangent-sphere-Premanifold x =
+ mere-equiv-tangent-sphere-has-tangent-sphere n (pr2 M x)
+
+ complement-Premanifold : (x : type-Premanifold) → UU l
+ complement-Premanifold x =
+ complement-has-tangent-sphere n (pr2 M x)
+
+ inclusion-tangent-sphere-Premanifold :
+ (x : type-Premanifold) →
+ type-tangent-sphere-Premanifold x → complement-Premanifold x
+ inclusion-tangent-sphere-Premanifold x =
+ inclusion-tangent-sphere-has-tangent-sphere n (pr2 M x)
+
+ inclusion-complement-Premanifold :
+ (x : type-Premanifold) → complement-Premanifold x → type-Premanifold
+ inclusion-complement-Premanifold x =
+ inclusion-complement-has-tangent-sphere n (pr2 M x)
+
+ coherence-square-Premanifold :
+ (x : type-Premanifold) →
+ coherence-square-maps
+ ( inclusion-tangent-sphere-Premanifold x)
+ ( terminal-map)
+ ( inclusion-complement-Premanifold x)
+ ( point x)
+ coherence-square-Premanifold x =
+ coherence-square-has-tangent-sphere n (pr2 M x)
+
+ cocone-Premanifold :
+ (x : type-Premanifold) →
+ cocone
+ ( terminal-map)
+ ( inclusion-tangent-sphere-Premanifold x)
+ ( type-Premanifold)
+ cocone-Premanifold x =
+ cocone-has-tangent-sphere n (pr2 M x)
+
+ is-pushout-Premanifold :
+ (x : type-Premanifold) →
+ is-pushout
+ ( terminal-map)
+ ( inclusion-tangent-sphere-Premanifold x)
+ ( cocone-Premanifold x)
+ is-pushout-Premanifold x =
+ is-pushout-has-tangent-sphere n (pr2 M x)
+```
diff --git a/src/synthetic-homotopy-theory/tangent-spheres.lagda.md b/src/synthetic-homotopy-theory/tangent-spheres.lagda.md
new file mode 100644
index 0000000000..94a327f9d6
--- /dev/null
+++ b/src/synthetic-homotopy-theory/tangent-spheres.lagda.md
@@ -0,0 +1,126 @@
+# Tangent spheres
+
+```agda
+module synthetic-homotopy-theory.tangent-spheres where
+```
+
+Imports
+
+```agda
+open import elementary-number-theory.natural-numbers
+
+open import foundation.commuting-squares-of-maps
+open import foundation.dependent-pair-types
+open import foundation.mere-equivalences
+open import foundation.unit-type
+open import foundation.universe-levels
+
+open import synthetic-homotopy-theory.cocones-under-spans
+open import synthetic-homotopy-theory.mere-spheres
+open import synthetic-homotopy-theory.pushouts
+open import synthetic-homotopy-theory.spheres
+```
+
+
+
+## Idea
+
+Consider a type `X` and a point `x : X`. We say that `x` **has a tangent
+`n`-sphere** if we can construct the following data:
+
+- A [mere sphere](synthetic-homotopy-theory.mere-spheres.md) `T`, which we also
+ refer to as the **tangent sphere** of `x`.
+- A type `C`, which we call the **complement** of `x`.
+- A map `j : T → C` including the tangent sphere into the complement.
+- A map `i : C → X` including the complement into the type `X`.
+- A [homotopy](foundation-core.homotopies.md) witnessing that the square
+ ```text
+ j
+ T -----> C
+ | |
+ | | i
+ V V
+ 1 -----> X
+ x
+ ```
+ [commutes](foundation.commuting-squares-of-maps.md), and is a
+ [pushout](synthetic-homotopy-theory.pushouts.md).
+
+In other words, a tangent `n`-sphere at a point `x` consistst of a mere sphere
+and a complement such that the space `X` can be reconstructed by attaching the
+point to the complement via the inclusion of the tangent sphere into the
+complement.
+
+## Definitions
+
+### The predicate of having a tangent sphere
+
+```agda
+module _
+ {l : Level} (n : ℕ) {X : UU l} (x : X)
+ where
+
+ has-tangent-sphere : UU (lsuc l)
+ has-tangent-sphere =
+ Σ ( mere-sphere lzero n)
+ ( λ T →
+ Σ ( UU l)
+ ( λ C →
+ Σ ( type-mere-sphere n T → C)
+ ( λ j →
+ Σ ( C → X)
+ ( λ i →
+ Σ ( coherence-square-maps j terminal-map i (point x))
+ ( λ H →
+ is-pushout terminal-map j (point x , i , H))))))
+
+module _
+ {l : Level} (n : ℕ) {X : UU l} {x : X} (T : has-tangent-sphere n x)
+ where
+
+ tangent-sphere-has-tangent-sphere : mere-sphere lzero n
+ tangent-sphere-has-tangent-sphere = pr1 T
+
+ type-tangent-sphere-has-tangent-sphere : UU lzero
+ type-tangent-sphere-has-tangent-sphere =
+ type-mere-sphere n tangent-sphere-has-tangent-sphere
+
+ mere-equiv-tangent-sphere-has-tangent-sphere :
+ mere-equiv (sphere n) type-tangent-sphere-has-tangent-sphere
+ mere-equiv-tangent-sphere-has-tangent-sphere =
+ mere-equiv-mere-sphere n tangent-sphere-has-tangent-sphere
+
+ complement-has-tangent-sphere : UU l
+ complement-has-tangent-sphere = pr1 (pr2 T)
+
+ inclusion-tangent-sphere-has-tangent-sphere :
+ type-tangent-sphere-has-tangent-sphere → complement-has-tangent-sphere
+ inclusion-tangent-sphere-has-tangent-sphere = pr1 (pr2 (pr2 T))
+
+ inclusion-complement-has-tangent-sphere :
+ complement-has-tangent-sphere → X
+ inclusion-complement-has-tangent-sphere = pr1 (pr2 (pr2 (pr2 T)))
+
+ coherence-square-has-tangent-sphere :
+ coherence-square-maps
+ ( inclusion-tangent-sphere-has-tangent-sphere)
+ ( terminal-map)
+ ( inclusion-complement-has-tangent-sphere)
+ ( point x)
+ coherence-square-has-tangent-sphere =
+ pr1 (pr2 (pr2 (pr2 (pr2 T))))
+
+ cocone-has-tangent-sphere :
+ cocone terminal-map inclusion-tangent-sphere-has-tangent-sphere X
+ pr1 cocone-has-tangent-sphere = point x
+ pr1 (pr2 cocone-has-tangent-sphere) = inclusion-complement-has-tangent-sphere
+ pr2 (pr2 cocone-has-tangent-sphere) = coherence-square-has-tangent-sphere
+
+ is-pushout-has-tangent-sphere :
+ is-pushout
+ ( terminal-map)
+ ( inclusion-tangent-sphere-has-tangent-sphere)
+ ( cocone-has-tangent-sphere)
+ is-pushout-has-tangent-sphere =
+ pr2 (pr2 (pr2 (pr2 (pr2 T))))
+```
diff --git a/tables/categories.md b/tables/categories.md
index cf232bee88..67bddd649d 100644
--- a/tables/categories.md
+++ b/tables/categories.md
@@ -1,5 +1,6 @@
| Category | File |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
+| Abelian groups | [`group-theory.category-of-abelian-groups`](group-theory.category-of-abelian-groups.md) |
| Commutative Rings | [`commutative-algebra.category-of-commutative-rings`](commutative-algebra.category-of-commutative-rings.md) |
| Connected set bundles over 𝕊¹ | [`synthetic-homotopy-theory.category-of-connected-set-bundles-circle`](synthetic-homotopy-theory.category-of-connected-set-bundles-circle.md) |
| Families of sets | [`foundation.category-of-families-of-sets`](foundation.category-of-families-of-sets.md) |
diff --git a/tables/precategories.md b/tables/precategories.md
index de35225da8..7d3f0c91f9 100644
--- a/tables/precategories.md
+++ b/tables/precategories.md
@@ -1,6 +1,6 @@
| Precategory | File |
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------- |
-| Abelian groups | [`group-theory.precategory-of-abelian-groups`](group-theory.precategory-of-abelian-groups.md) |
+| Abelian groups | [`group-theory.category-of-abelian-groups`](group-theory.category-of-abelian-groups.md) |
| Commutative monoids | [`group-theory.precategory-of-commutative-monoids`](group-theory.precategory-of-commutative-monoids.md) |
| Commutative rings | [`commutative-algebra.precategory-of-commutative-rings`](commutative-algebra.precategory-of-commutative-rings.md) |
| Commutative semirings | [`commutative-algebra.precategory-of-commutative-semirings`](commutative-algebra.precategory-of-commutative-semirings.md) |