Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Facts about Adjoints #439

Merged
merged 28 commits into from
Dec 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
770c7a3
def: more reasoning combinators
TOTBWF Nov 1, 2024
a385838
def: split monos/epis, misc. facts about morphisms
TOTBWF Nov 1, 2024
d8a3597
def: lemmas about precomposition with an eso functor
TOTBWF Nov 1, 2024
6db5807
chore: use Cat.Natural.Reasoning in adjoint
TOTBWF Nov 1, 2024
4efbac2
chore: anchors for Cat.Functor.Morphism, minor gardening
TOTBWF Nov 1, 2024
113b208
def: misc conversions between invertible maps
TOTBWF Nov 2, 2024
dfa313c
def: prove a collection of misc. facts about adjoints
TOTBWF Nov 2, 2024
a0830f4
refactor: streamline proofs in Cat.Functor.Adjoint.Reflective
TOTBWF Nov 2, 2024
9abdbcf
fix: fix typo
TOTBWF Nov 2, 2024
e8138bc
chore: constructors for monos/epis
TOTBWF Nov 2, 2024
9b51220
def: lensy reasoning combinators
TOTBWF Nov 2, 2024
744a8c0
def: orthogonality results, naming pass
TOTBWF Nov 2, 2024
58d9c50
refactor: move StrongEpi to Strong.Epi
TOTBWF Nov 3, 2024
dd9c8da
def: cast monos/isos
TOTBWF Nov 3, 2024
bdbc88d
def: conservative adjoint functors
TOTBWF Nov 3, 2024
a282834
def: strong monos
TOTBWF Nov 3, 2024
87c56a1
def: epireflective categories
TOTBWF Nov 3, 2024
83ebfaa
prose: update borceux
TOTBWF Nov 3, 2024
42b85f6
chore: prose fixes
TOTBWF Nov 3, 2024
ac4c54a
chore: sort imports
TOTBWF Nov 3, 2024
c367908
fix: change link type in Mono.Strong
TOTBWF Nov 3, 2024
a8db2b1
chore: remove duplicate proof from Rezk.Universal
TOTBWF Nov 11, 2024
80f3c36
fix: actually use new lemma in Rezk.Universal
TOTBWF Nov 11, 2024
101b2ee
chore: update reference to eso→pre-faithful in Hott.lagda.md
TOTBWF Nov 11, 2024
e7d84cb
def: aux notions to clean up Orthogonal
plt-amy Nov 25, 2024
2ff2582
prose: improve phrasing, list formatting
TOTBWF Nov 25, 2024
6d5c33b
chore: rename eso→precompose-faithful
TOTBWF Nov 25, 2024
9e00183
chore: rename 'cast-is' functions to 'subst-is'
TOTBWF Nov 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 33 additions & 12 deletions src/Borceux.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ open import Algebra.Group.Free hiding (_◆_)
open import Algebra.Group.Ab

open import Cat.Diagram.Coequaliser.RegularEpi
open import Cat.Functor.Adjoint.Epireflective
open import Cat.Functor.Adjoint.Representable
open import Cat.Instances.Elements.Covariant renaming (∫ to ∫cov)
open import Cat.Instances.StrictCat.Cohesive hiding (Disc)
Expand Down Expand Up @@ -58,14 +59,14 @@ open import Cat.Functor.Subcategory
open import Cat.Instances.Delooping
open import Cat.Instances.StrictCat
open import Cat.Morphism.Orthogonal
open import Cat.Morphism.Strong.Epi
open import Cat.Bi.Instances.Spans
open import Cat.Diagram.Idempotent
open import Cat.Diagram.Limit.Base
open import Cat.Diagram.Limit.Cone
open import Cat.Functor.Hom.Yoneda
open import Cat.Functor.Properties
open import Cat.Instances.Discrete
open import Cat.Morphism.StrongEpi
open import Cat.Diagram.Equaliser
open import Cat.Diagram.Separator
open import Cat.Instances.Functor
Expand Down Expand Up @@ -382,7 +383,7 @@ _ = has-section+monic→invertible

## 2 Limits

## 2.1 Products
### 2.1 Products

<!--
```agda
Expand All @@ -405,7 +406,7 @@ _ = is-indexed-product-assoc
* Proposition 2.1.5: `Indexed-product-unique`{.Agda}
* Proposition 2.1.6: `is-indexed-product-assoc`{.Agda}

## 2.2 Coproducts
### 2.2 Coproducts

<!--
```agda
Expand All @@ -419,7 +420,7 @@ _ = is-indexed-coproduct-assoc
* Proposition 2.2.2: `is-indexed-coproduct→iso`{.Agda}
* Proposition 2.2.3: `is-indexed-coproduct-assoc`{.Agda}

## 2.3 Initial and terminal objects
### 2.3 Initial and terminal objects

<!--
```agda
Expand All @@ -438,7 +439,7 @@ _ = Zero-group-is-zero
* a. `Sets-initial`{.Agda}, `Sets-terminal`{.Agda}
* b. 🚧 `Zero-group-is-zero`{.Agda}

## 2.4 Equalizers, coequalizers
### 2.4 Equalizers, coequalizers

<!--
```agda
Expand All @@ -456,7 +457,7 @@ _ = equaliser+epi→invertible
* Proposition 2.4.4: `id-is-equaliser`{.Agda}
* Proposition 2.4.5: `equaliser+epi→invertible`{.Agda}

## 2.5 Pullbacks, pushouts
### 2.5 Pullbacks, pushouts

<!--
```agda
Expand Down Expand Up @@ -709,6 +710,26 @@ _ = is-reflective

### 3.6 Epireflective subcategories

<!--
```agda
_ = is-epireflective
_ = epireflective+strong-mono→unit-invertible
_ = factor+strong-mono-unit-invertible→epireflective
_ = is-strong-epireflective
_ = strong-epireflective+mono→unit-invertible
_ = factor+mono-unit-invertible→strong-epireflective
```
-->

* Definition 3.6.1: `is-epireflective`{.Agda}
* Proposition 3.6.2:
* (1 ⇒ 2): `epireflective+strong-mono→unit-invertible`{.Agda}
* (2 ⇒ 1): `factor+strong-mono-unit-invertible→epireflective`{.Agda}
* Definition 3.6.2: `is-strong-epireflective`{.Agda}
* Proposition 3.6.4:
* (1 ⇒ 2): `strong-epireflective+mono→unit-invertible`{.Agda}
* (2 ⇒ 1): `factor+mono-unit-invertible→strong-epireflective`{.Agda}

### 3.7 Kan extensions

<!--
Expand Down Expand Up @@ -765,9 +786,9 @@ _ = Karoubi-is-completion
```agda
_ = is-regular-epi
_ = is-strong-epi
_ = strong-epi-compose
_ = strong-epi-cancell
_ = strong-epi+mono→is-invertible
_ = strong-epi-
_ = strong-epi-cancelr
_ = strong-epi+mono→invertible
_ = is-regular-epi→is-strong-epi
_ = is-strong-epi→is-extremal-epi
_ = equaliser-lifts→is-strong-epi
Expand All @@ -778,9 +799,9 @@ _ = is-extremal-epi→is-strong-epi
* Definition 4.3.1: `is-regular-epi`{.Agda}
* Definition 4.3.5: `is-strong-epi`{.Agda}
* Proposition 4.3.6:
* 1. `strong-epi-compose`{.Agda}
* 2. `strong-epi-cancel-l`{.Agda}
* 3. `strong-epi-mono→is-invertible`{.Agda}
* 1. `strong-epi-`{.Agda}
* 2. `strong-epi-cancelr`{.Agda}
* 3. `strong-epi-mono→invertible`{.Agda}
* 4. `is-regular-epi→is-strong-epi`{.Agda}
* 5. `is-strong-epi→is-extremal-epi`{.Agda}
* Proposition 4.3.7:
Expand Down
4 changes: 2 additions & 2 deletions src/Cat/Bi/Instances/Relations.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
{-# OPTIONS --lossy-unification #-}
open import Cat.Diagram.Pullback.Properties
open import Cat.Morphism.Factorisation
open import Cat.Morphism.StrongEpi
open import Cat.Morphism.Strong.Epi
open import Cat.Instances.Functor
open import Cat.Instances.Product
open import Cat.Diagram.Pullback
Expand Down Expand Up @@ -168,7 +168,7 @@ point of view informed by parametricity, one might argue that this is
not only the correct move, but the _only possible_ way of turning a map
into a subobject.]

[strong epimorphism]: Cat.Morphism.StrongEpi.html
[strong epimorphism]: Cat.Morphism.Strong.Epi.html

```agda
it : Hom (inter .apex) (a ⊗₀ c)
Expand Down
4 changes: 2 additions & 2 deletions src/Cat/Diagram/Projective/Strong.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,8 @@ open import Data.Set.Surjection
open import Data.Dec

import Cat.Diagram.Separator.Strong
import Cat.Morphism.Strong.Epi
import Cat.Diagram.Projective
import Cat.Morphism.StrongEpi
import Cat.Reasoning
```
-->
Expand All @@ -31,7 +31,7 @@ module Cat.Diagram.Projective.Strong
<!--
```agda
open Cat.Diagram.Projective C
open Cat.Morphism.StrongEpi C
open Cat.Morphism.Strong.Epi C
open Cat.Reasoning C
```
-->
Expand Down
4 changes: 2 additions & 2 deletions src/Cat/Diagram/Separator.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ open import Cat.Prelude

open import Data.Dec.Base

import Cat.Morphism.StrongEpi
import Cat.Morphism.Strong.Epi
import Cat.Reasoning
```
-->
Expand All @@ -38,7 +38,7 @@ module Cat.Diagram.Separator {o ℓ} (C : Precategory o ℓ) where

<!--
```agda
open Cat.Morphism.StrongEpi C
open Cat.Morphism.Strong.Epi C
open Cat.Reasoning C
open _=>_
```
Expand Down
4 changes: 2 additions & 2 deletions src/Cat/Diagram/Separator/Regular.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ open import Cat.Diagram.Coequaliser
open import Cat.Prelude

import Cat.Diagram.Separator.Strong
import Cat.Morphism.StrongEpi
import Cat.Morphism.Strong.Epi
import Cat.Diagram.Separator
import Cat.Reasoning
```
Expand All @@ -26,7 +26,7 @@ module Cat.Diagram.Separator.Regular

<!--
```agda
open Cat.Morphism.StrongEpi C
open Cat.Morphism.Strong.Epi C
open Cat.Diagram.Separator.Strong C coprods
open Cat.Diagram.Separator C
open Cat.Reasoning C
Expand Down
16 changes: 8 additions & 8 deletions src/Cat/Diagram/Separator/Strong.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ open import Cat.Functor.Joint
open import Cat.Functor.Hom
open import Cat.Prelude

import Cat.Morphism.StrongEpi
import Cat.Morphism.Strong.Epi
import Cat.Diagram.Separator
import Cat.Reasoning
```
Expand All @@ -29,7 +29,7 @@ module Cat.Diagram.Separator.Strong

<!--
```agda
open Cat.Morphism.StrongEpi C
open Cat.Morphism.Strong.Epi C
open Cat.Diagram.Separator C
open Cat.Reasoning C
open Copowers coprods
Expand Down Expand Up @@ -192,9 +192,9 @@ by showing that it is both a strong epi and a monomorphism.

```agda
strong-separator→conservative {s = s} strong {A = a} {B = b} {f = f} f∘-inv =
strong-epi+mono→is-invertible
f-mono
strong-epi+mono→invertible
f-strong-epi
f-mono
where
module f∘- = Equiv (f ∘_ , is-invertible→is-equiv f∘-inv)
```
Expand Down Expand Up @@ -238,7 +238,7 @@ immediately see that $f$ is a strong epi.
```agda
f-strong-epi : is-strong-epi f
f-strong-epi =
strong-epi-cancell f f* $
strong-epi-cancelr f f* $
subst is-strong-epi (sym f*-factors) strong
```

Expand Down Expand Up @@ -302,9 +302,9 @@ so we omit the details.
</summary>
```agda
strong-separating-family→jointly-conservative Idx sᵢ strong {x = a} {y = b} {f = f} f∘ᵢ-inv =
strong-epi+mono→is-invertible
f-mono
strong-epi+mono→invertible
f-strong-epi
f-mono
where
module f∘- {i : ∣ Idx ∣} = Equiv (_ , is-invertible→is-equiv (f∘ᵢ-inv i))

Expand All @@ -325,7 +325,7 @@ strong-separating-family→jointly-conservative Idx sᵢ strong {x = a} {y = b}

f-strong-epi : is-strong-epi f
f-strong-epi =
strong-epi-cancell f f* $
strong-epi-cancelr f f* $
subst is-strong-epi (sym f*-factors) strong

jointly-conservative→extremal-separating-family Idx sᵢ lex f∘-conservative m f p =
Expand Down
7 changes: 4 additions & 3 deletions src/Cat/Functor/Adjoint.lagda.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ open import Cat.Functor.Base
open import Cat.Prelude

import Cat.Functor.Reasoning as Func
import Cat.Natural.Reasoning
import Cat.Reasoning
```
-->
Expand Down Expand Up @@ -78,8 +79,8 @@ record _⊣_ (L : Functor C D) (R : Functor D C) : Type (adj-level C D) where
unit : Id => (R F∘ L)
counit : (L F∘ R) => Id

module unit = _=>_ unit
module counit = _=>_ counit renaming (η to ε)
module unit = Cat.Natural.Reasoning unit
module counit = Cat.Natural.Reasoning counit renaming (η to ε)

open unit using (η) public
open counit using (ε) public
Expand Down Expand Up @@ -165,7 +166,7 @@ module _
```
-->

## Adjuncts {defines=adjuncts}
## Adjuncts {defines="adjunct left-adjunct right-adjunct"}

Another view on adjunctions, one which is productive when thinking about
adjoint *endo*functors $L \dashv R$, is the concept of _adjuncts_. Any
Expand Down
Loading
Loading