Skip to content

Commit a3bf496

Browse files
committed
wip
1 parent 53169a5 commit a3bf496

File tree

4 files changed

+133
-2
lines changed

4 files changed

+133
-2
lines changed

src/Cat/Diagram/Duals.lagda.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<!--
22
```agda
3+
{-# OPTIONS --allow-unsolved-metas #-}
34
open import Cat.Diagram.Colimit.Cocone
45
open import Cat.Diagram.Colimit.Base
56
open import Cat.Diagram.Coequaliser
@@ -13,6 +14,7 @@ open import Cat.Diagram.Initial
1314
open import Cat.Diagram.Product
1415
open import Cat.Diagram.Pushout
1516
open import Cat.Prelude
17+
open import Cat.Base
1618
```
1719
-->
1820

@@ -22,8 +24,12 @@ module Cat.Diagram.Duals where
2224

2325
<!--
2426
```agda
27+
private
28+
variable
29+
o' ℓ' : Level
2530
module _ {o ℓ} {C : Precategory o ℓ} where
26-
private module C = Precategory C
31+
private
32+
module C = Precategory C
2733
```
2834
-->
2935

@@ -234,4 +240,15 @@ We could work around this, but it's easier to just do the proofs by hand.
234240
mc .universal eta p = lim.universal eta p
235241
mc .factors eta p = lim.factors eta p
236242
mc .unique eta p other q = lim.unique eta p other q
243+
is-cocontinuous→co-is-continuous
244+
: is-cocontinuous o' ℓ' F → is-continuous o' ℓ' F^op
245+
is-cocontinuous→co-is-continuous = ?
246+
247+
module _ {o ℓ} {C : Precategory o ℓ} where
248+
co-is-cocomplete→is-cocomplete : is-complete o' ℓ' (C ^op) → is-cocomplete o' ℓ' C
249+
co-is-cocomplete→is-cocomplete co-complete F = Co-limit→Colimit $ co-complete $ Functor.op F
250+
251+
is-cocomplete→co-is-complete : is-cocomplete o' ℓ' (C ^op) → is-complete o' ℓ' C
252+
is-cocomplete→co-is-complete cocomplete F = Colimit→Co-limit $ cocomplete $ Functor.op F
253+
237254
```

src/Cat/Instances/Presheaf/Colimits.lagda.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<!--
22
```agda
3-
open import Cat.Diagram.Coequaliser
3+
open import Cat.Diagram.Colimit.Base
44
open import Cat.Diagram.Coproduct
5+
open import Cat.Diagram.Coequaliser
6+
open import Cat.Instances.Functor.Limits
7+
open import Cat.Instances.Sets.Complete
8+
open import Cat.Instances.Sets.Cocomplete
59
open import Cat.Instances.Functor
610
open import Cat.Prelude
711
@@ -108,3 +112,9 @@ PSh-coequaliser {X = X} {Y = Y} f g = coequ where
108112
coequ .has-is-coeq .factors = trivial!
109113
coequ .has-is-coeq .unique {F = F} p = reext! p
110114
```
115+
<!--
116+
```agda
117+
Psh-cocomplete : is-cocomplete κ κ (PSh κ C)
118+
Psh-cocomplete = Functor-cat-is-cocomplete $ Sets-is-cocomplete {ι = κ} {κ} {κ}
119+
```
120+
-->

src/Cat/Instances/Presheaf/Limits.lagda.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
<!--
22
```agda
3+
open import Cat.Instances.Sets.Complete
34
open import Cat.Diagram.Pullback.Properties
45
open import Cat.Diagram.Limit.Finite
6+
open import Cat.Diagram.Limit.Base
57
open import Cat.Functor.Adjoint.Hom
68
open import Cat.Instances.Functor
79
open import Cat.Diagram.Pullback
810
open import Cat.Diagram.Terminal
11+
open import Cat.Instances.Functor.Limits
912
open import Cat.Functor.Morphism
1013
open import Cat.Diagram.Product
1114
open import Cat.Functor.Adjoint
@@ -212,3 +215,9 @@ is-monic→is-embedding-at {Y = Y} {m} mono {i} =
212215
monic→is-embedding (hlevel 2) λ {C} g h →
213216
right-adjoint→is-monic _ (clo⊣ev i) mono {C} g h
214217
```
218+
<!--
219+
```agda
220+
Psh-complete : is-complete κ κ (PSh κ C)
221+
Psh-complete = Functor-cat-is-complete $ Sets-is-complete {ι = κ} {κ} {κ}
222+
```
223+
-->

src/Cat/Total.lagda.md

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
<!--
2+
```agda
3+
open import Cat.Prelude
4+
open import Cat.Functor.Base
5+
open import Cat.Functor.Compose
6+
open import Cat.Functor.Naturality
7+
open import Cat.Instances.Functor
8+
open import Cat.Functor.Adjoint
9+
open import Cat.Diagram.Limit.Base
10+
open import Cat.Diagram.Colimit.Base
11+
open import Cat.Diagram.Duals
12+
open import Cat.Functor.Adjoint.AFT
13+
open import Cat.Functor.Adjoint.Continuous
14+
open import Cat.Functor.Adjoint.Reflective
15+
```
16+
-->
17+
18+
```agda
19+
module Cat.Total {o ℓ} (C : Precategory o ℓ) where
20+
open import Cat.Functor.Hom C
21+
open import Cat.Instances.Presheaf.Colimits
22+
```
23+
<!--
24+
```agda
25+
private
26+
open module C = Precategory C
27+
variable
28+
o' ℓ' : Level
29+
```
30+
-->
31+
32+
# Total precategories {defines="total-precategory"}
33+
34+
A precategory is **total** if its yoneda embedding has a left adjoint.
35+
36+
```agda
37+
record is-total : Type (o ⊔ lsuc ℓ) where
38+
field
39+
{れ} : Functor Cat[ C ^op , Sets ℓ ] C
40+
has-よ-adj : れ ⊣ よ
41+
```
42+
<!--
43+
```agda
44+
module _ (C-total : is-total) where
45+
open module C-total = is-total C-total
46+
```
47+
-->
48+
49+
## Cocompleteness
50+
51+
All total categories are [[cocomplete]].
52+
53+
```agda
54+
total→cocomplete : is-cocomplete ℓ ℓ C
55+
total→cocomplete F = natural-iso→colimit ni $ left-adjoint-colimit has-よ-adj $ Psh-cocomplete ℓ C (よ F∘ F)
56+
where ni : れ F∘ よ F∘ F ≅ⁿ F
57+
ni = ni-assoc ∙ni
58+
(is-reflective→counit-iso has-よ-adj よ-is-fully-faithful ◂ni F) ∙ni
59+
path→iso F∘-idl
60+
```
61+
62+
## The adjoint functor property
63+
64+
Total precategories satisfy a particularly nice [[adjoint functor theorem]]. In
65+
particular, every [[continuous functor]] $F$ has a [[left adjoint]].
66+
67+
68+
69+
```agda
70+
cocontinuous→right-adjoint : ∀ {D : Precategory ℓ ℓ}
71+
(F : Functor C D) → is-cocontinuous ℓ ℓ F → Σ[ G ∈ Functor D C ] F ⊣ G
72+
cocontinuous→right-adjoint {D = D} F F-is-cocont = G , opposite-adjunction Gᵒᵖ⊣Fᵒᵖ
73+
where module F = Functor F
74+
module D = Precategory D
75+
open import Cat.Functor.Hom D using () renaming (Hom-into to Hom-intoᴰ; よ to よᴰ )
76+
77+
my-silly-presheaf : D.Ob → ⌞ PSh ℓ C ⌟
78+
my-silly-presheaf y = Hom-intoᴰ y F∘ F.op
79+
80+
my-silly-functor : Functor D C
81+
my-silly-functor = れ F∘ precompose F.op F∘ よᴰ
82+
module my-silly-functor = Functor my-silly-functor
83+
84+
op-adj : Σ[ G ∈ Functor (D ^op) (C ^op) ] G ⊣ F.op
85+
op-adj = solution-set→left-adjoint F.op (is-cocomplete→co-is-complete total→cocomplete) (is-cocontinuous→co-is-continuous F-is-cocont) λ y →
86+
record { index = Lift _ ⊤
87+
; has-is-set = hlevel 2
88+
; dom = λ _ → my-silly-functor.₀ y
89+
; map = λ _ → {! !}
90+
; factor = λ h → do
91+
pure $ {! !} , {! !} , {! !}
92+
}
93+
G = Functor.op $ op-adj .fst
94+
Gᵒᵖ⊣Fᵒᵖ = op-adj .snd
95+
```

0 commit comments

Comments
 (0)