-
Notifications
You must be signed in to change notification settings - Fork 71
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
Duskin's Monadicity Theorem #76
base: main
Are you sure you want to change the base?
Changes from 1 commit
bf86b57
9f8475d
72ca5a3
b01a536
4b774fb
8b8e735
b010e02
bad2d4c
df55454
3508d94
1a79e3d
4f00251
782abd7
1633a24
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,7 @@ open import Cat.Diagram.Initial | |
open import Cat.Prelude | ||
|
||
import Cat.Functor.Reasoning as Func | ||
import Cat.Morphism | ||
import Cat.Reasoning | ||
|
||
module Cat.Diagram.Colimit.Base where | ||
``` | ||
|
@@ -64,8 +64,8 @@ We this pair of category and functor a _diagram_ in $C$. | |
```agda | ||
module _ {J : Precategory o ℓ} {C : Precategory o′ ℓ′} (F : Functor J C) where | ||
private | ||
import Cat.Reasoning J as J | ||
import Cat.Reasoning C as C | ||
module J = Cat.Reasoning J | ||
module C = Cat.Reasoning C | ||
module F = Functor F | ||
|
||
record Cocone : Type (o ⊔ ℓ ⊔ o′ ⊔ ℓ′) where | ||
|
@@ -200,6 +200,9 @@ cocones over that diagram. | |
|
||
Colimit-apex : Colimit → C.Ob | ||
Colimit-apex x = coapex (Initial.bot x) | ||
|
||
Colimit-universal : (L : Colimit) → (K : Cocone) → C.Hom (Colimit-apex L) (coapex K) | ||
Colimit-universal L K = hom (Initial.¡ L {K}) | ||
``` | ||
|
||
|
||
|
@@ -247,6 +250,67 @@ say that it _preserves_ colimits. | |
Preserves-colimit K = is-colimit Dia K → is-colimit (F F∘ Dia) (F-map-cocone K) | ||
``` | ||
|
||
## Reflection of colimits | ||
|
||
We say a functor __reflects__ colimits if the existence of a colimiting | ||
cocone "downstairs" implies that we must have a limiting cocone "upstairs". | ||
|
||
More concretely, if the image of a cocone $F \circ K$ in $\ca{D}$ | ||
is a colimiting cocone, then $K$ must have already been a | ||
colimiting cocone in $\ca{C}$ | ||
|
||
```agda | ||
Reflects-colimit : Cocone Dia → Type _ | ||
Reflects-colimit K = is-colimit (F F∘ Dia) (F-map-cocone K) → is-colimit Dia K | ||
``` | ||
|
||
# Uniqueness | ||
|
||
<!-- | ||
```agda | ||
module _ {o₁ h₁ o₂ h₂ : _} {J : Precategory o₁ h₁} {C : Precategory o₂ h₂} | ||
(F : Functor J C) | ||
where | ||
private | ||
module J = Precategory J | ||
module C = Cat.Reasoning C | ||
module F = Functor F | ||
module Cocones = Cat.Reasoning (Cocones F) | ||
``` | ||
--> | ||
|
||
If the universal map $L \to K$ between coapexes of some colimit is | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. either "coapices" or "nadirs" (if you want to change the field name), but definitely not coapexes There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We should change the wording in There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. You are correct. That's a bit embarrassing |
||
invertible, that means that $K$ is also a colimiting cocone. | ||
|
||
```agda | ||
coapex-iso→is-colimit | ||
: (K : Cocone F) | ||
(L : Colimit F) | ||
→ C.is-invertible (Colimit-universal F L K) | ||
→ is-colimit F K | ||
coapex-iso→is-colimit K L invert K′ = colimits where | ||
module K = Cocone K | ||
module K′ = Cocone K′ | ||
module L = Cocone (Initial.bot L) | ||
module universal K = Cocone-hom (Initial.¡ L {K}) | ||
open C.is-invertible invert | ||
|
||
colimits : is-contr (Cocones.Hom K K′) | ||
colimits .centre .Cocone-hom.hom = universal.hom K′ C.∘ inv | ||
colimits .centre .Cocone-hom.commutes _ = | ||
(universal.hom K′ C.∘ inv) C.∘ K.ψ _ ≡˘⟨ ap ((universal.hom K′ C.∘ inv) C.∘_) (universal.commutes K _) ⟩ | ||
(universal.hom K′ C.∘ inv) C.∘ (universal.hom K C.∘ L.ψ _) ≡⟨ C.cancel-inner invr ⟩ | ||
universal.hom K′ C.∘ L.ψ _ ≡⟨ universal.commutes K′ _ ⟩ | ||
K′.ψ _ ∎ | ||
colimits .paths f = | ||
let module f = Cocone-hom f in | ||
Cocone-hom-path F $ C.invertible→epic invert _ _ $ | ||
(universal.hom K′ C.∘ inv) C.∘ universal.hom K ≡⟨ C.cancelr invr ⟩ | ||
universal.hom K′ ≡⟨ ap Cocone-hom.hom (Initial.¡-unique L (f Cocones.∘ Initial.¡ L)) ⟩ | ||
f.hom C.∘ universal.hom K ∎ | ||
``` | ||
|
||
|
||
## Cocompleteness | ||
|
||
A category is **cocomplete** if admits for limits of arbitrary shape. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should finish fleshing this section out to line up with the proofs for limits. However, I just need this one result for right now, so I'll circle back around at the end of this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍