Skip to content

Commit 5777528

Browse files
committed
def: more results, minor fixes
1 parent 9c5ada0 commit 5777528

File tree

1 file changed

+122
-17
lines changed

1 file changed

+122
-17
lines changed

src/Cat/Displayed/Cartesian/Joint.lagda.md

Lines changed: 122 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -154,8 +154,8 @@ such that $f_{i} \circ \langle v , h_{i} \rangle = h_{i}$.
154154
<!--
155155
```agda
156156
private variable
157-
ℓi ℓj : Level
158-
Ix : Type ℓi
157+
ℓi ℓi' ℓj : Level
158+
Ix Ix' : Type ℓi
159159
Jx : Ix → Type ℓj
160160
a b c : Ob
161161
bᵢ cᵢ : Ix → Ob
@@ -186,7 +186,7 @@ by studying prototypical examples of jointly cartesian families:
186186

187187
- If we view the category of topological spaces as a [[displayed category]],
188188
then the jointly cartesian maps are precisely the initial topologies.
189-
- Jointly cartesian maps in the [[subobject fibration]] of $\Sets$ are
189+
- Jointly cartesian maps in the [[subobject fibration]] of $\Sets$
190190
arise from pulling back a family of subsets $A_{i} \subset Y_{i}$ along
191191
maps $u_{i} : X \to Y_{i}$, and then taking their intersection.
192192

@@ -235,24 +235,73 @@ const-jointly-cartesian→cartesian {Ix = Ix} {u = u} {f = f} ∥ix∥ f-joint-c
235235
f-cart ix .unique other p = f.unique other (λ _ → p)
236236
```
237237

238-
Jointly cartesian families over empty types act more like discrete objects
238+
Jointly cartesian families over empty types act more like codiscrete objects
239239
than pullbacks, as the space of maps into the shared domain of the family
240240
is unique for any $v : \cE{B}(X, A)$ and $X' \liesover X$. In the displayed
241241
category of topological spaces, such maps are precisely the discrete spaces.
242242

243243
```agda
244-
empty-jointly-cartesian→discrete
244+
empty-jointly-cartesian→codiscrete
245245
: ∀ {uᵢ : (ix : Ix) → Hom a (bᵢ ix)} {fᵢ : (ix : Ix) → Hom[ uᵢ ix ] a' (bᵢ' ix)}
246246
→ ¬ Ix
247247
→ is-jointly-cartesian uᵢ fᵢ
248248
→ ∀ {x} (v : Hom x a) → (x' : Ob[ x ]) → is-contr (Hom[ v ] x' a')
249-
empty-jointly-cartesian→discrete ¬ix fᵢ-cart v x' =
249+
empty-jointly-cartesian→codiscrete ¬ix fᵢ-cart v x' =
250250
contr (fᵢ.universal v λ ix → absurd (¬ix ix)) λ other →
251251
sym (fᵢ.unique other λ ix → absurd (¬ix ix))
252252
where
253253
module fᵢ = is-jointly-cartesian fᵢ-cart
254254
```
255255

256+
In the other direction, let $f : \cE_{u}(A', B')$ be some map.
257+
If the constant family $\lambda b.\; f : 2 \to \cE_{u}(A', B')$
258+
is jointly cartesian as a family over the booleans,
259+
then the type of morphisms $\cE_{u \circ v}(X', A')$ is a [[proposition]]
260+
for every $v : \cB(X, A)$ and $X' \liesover X$.
261+
262+
```agda
263+
const-pair-joint-cartesian→thin
264+
: ∀ {u : Hom a b} {f : Hom[ u ] a' b'}
265+
→ is-jointly-cartesian {Ix = Bool} (λ _ → u) (λ _ → f)
266+
→ ∀ {x} (v : Hom x a) → (x' : Ob[ x ]) → is-prop (Hom[ u ∘ v ] x' b')
267+
```
268+
269+
Let $g, h : \cE_{u \circ v}(X', A')$ be a pair of parallel maps in $\cE$.
270+
We can view the the pair $(g, h)$ as a `Bool`{.Agda} indexed family of
271+
maps over $u \circ v$, so by the universal property of jointly cartesian
272+
families, there must be a universal map $\alpha$ such that $g = f \circ \alpha$
273+
and $h = f \circ \alpha$; thus $f = g$.
274+
275+
276+
```agda
277+
const-pair-joint-cartesian→thin {b' = b'} {u = u} {f = f} f-cart v x' g h =
278+
cast[] $
279+
g ≡[]˘⟨ commutes v gh true ⟩
280+
f ∘' universal v gh ≡[]⟨ commutes v gh false ⟩
281+
h ∎
282+
where
283+
open is-jointly-cartesian f-cart
284+
285+
gh : Bool → Hom[ u ∘ v ] x' b'
286+
gh true = g
287+
gh false = h
288+
```
289+
290+
As a corollary, if $(id_{A'}, id_{A'})$ is a jointly cartesian family, then
291+
every hom set $\cE_{u}(X',A')$ is a proposition.
292+
293+
```agda
294+
id-pair-joint-cartesian→thin
295+
: is-jointly-cartesian {Ix = Bool} (λ _ → id {a}) (λ _ → id' {a} {a'})
296+
→ ∀ {x} (u : Hom x a) → (x' : Ob[ x ]) → is-prop (Hom[ u ] x' a')
297+
id-pair-joint-cartesian→thin id²-cart u x' f g =
298+
cast[] $
299+
f ≡[]⟨ wrap (sym (idl u)) ⟩
300+
hom[] f ≡[]⟨ const-pair-joint-cartesian→thin id²-cart u x' (hom[ idl u ]⁻ f) (hom[ idl u ]⁻ g) ⟩
301+
hom[] g ≡[]⟨ unwrap (sym (idl u)) ⟩
302+
g ∎
303+
```
304+
256305
## Closure properties of jointly cartesian families
257306

258307
If $g_{i} : X' \to_{v_i} Y_{i}'$ is an $I$-indexed jointly cartesian family, and
@@ -444,7 +493,6 @@ jointly-cartesian-vertical-retraction-stable
444493
```
445494
</details>
446495

447-
448496
## Cancellation properties of jointly cartesian families
449497

450498
Every jointly cartesian family is a [[jointly weak monic family]];
@@ -608,6 +656,63 @@ jointly-cartesian-cartesian-cancell fᵢ-cart fᵢ∘g-cart =
608656
```
609657
</details>
610658

659+
## Extending jointly cartesian families
660+
661+
This section characterises when we can extend an $I'$-indexed jointly
662+
cartesian family $f_{i}$ to a $I$-indexed cartesian family along a map
663+
$e : I' \to I$. Though seemingly innocent, being able to extend every family
664+
$f_{i} : \cE_{u_i}(A', B_{i}')$ is equivalent to the displayed category
665+
being thin!
666+
667+
For the forward direction, let $f_{i} : \cE{u_i}(A', B_{i}')$ be a
668+
family such that the restriction of $f_{i}$ along a map $e : I' \to I$
669+
thin. We can then easily extend the family $f_{i}$ along an arbitrary map
670+
by ignoring every single equality, as all hom sets involved are thin.
671+
672+
```agda
673+
thin→jointly-cartesian-extend
674+
: ∀ {u : (i : Ix) → Hom a (bᵢ i)} {fᵢ : (i : Ix) → Hom[ uᵢ i ] a' (bᵢ' i)}
675+
→ (∀ {x} (v : Hom x a) → (x' : Ob[ x ]) → ∀ (i : Ix) → is-prop (Hom[ uᵢ i ∘ v ] x' (bᵢ' i)))
676+
→ (e : Ix' → Ix)
677+
→ is-jointly-cartesian (λ i' → uᵢ (e i')) (λ i' → fᵢ (e i'))
678+
→ is-jointly-cartesian (λ i → uᵢ i) (λ i → fᵢ i)
679+
thin→jointly-cartesian-extend {uᵢ = uᵢ} {fᵢ = fᵢ} uᵢ∘v-thin e fₑᵢ-cart = fᵢ-cart where
680+
module fₑᵢ = is-jointly-cartesian fₑᵢ-cart
681+
open is-jointly-cartesian
682+
683+
fᵢ-cart : is-jointly-cartesian (λ i' → uᵢ i') (λ i' → fᵢ i')
684+
fᵢ-cart .universal v hᵢ =
685+
fₑᵢ.universal v (λ i' → hᵢ (e i'))
686+
fᵢ-cart .commutes {x} {x'} v hᵢ i =
687+
uᵢ∘v-thin v x' i (fᵢ i ∘' fₑᵢ.universal v (λ i' → hᵢ (e i'))) (hᵢ i)
688+
fᵢ-cart .unique {x} {x'} {v} {hᵢ} other p =
689+
fₑᵢ.unique other λ i' → uᵢ∘v-thin v x' (e i') (fᵢ (e i') ∘' other) (hᵢ (e i'))
690+
```
691+
692+
For the reverse direction, suppose we could extend arbitrary families.
693+
In particular, this means that we can extend singleton families to constant
694+
families, which lets us transfer a proof that a morphism is cartesian to
695+
a proof that a constant family is jointly cartesian.
696+
697+
In particular, this means that the pair $(\id, \id)$ is jointly cartesian,
698+
which means that the hom set is thin!
699+
700+
```agda
701+
jointly-cartesian-extend→thin
702+
: ∀ (extend
703+
: ∀ {Ix' Ix : Type} {bᵢ : Ix → Ob} {bᵢ' : (i : Ix) → Ob[ bᵢ i ]}
704+
→ {uᵢ : (i : Ix) → Hom a (bᵢ i)} {fᵢ : (i : Ix) → Hom[ uᵢ i ] a' (bᵢ' i)}
705+
→ (e : Ix' → Ix)
706+
→ is-jointly-cartesian (λ i' → uᵢ (e i')) (λ i' → fᵢ (e i'))
707+
→ is-jointly-cartesian (λ i → uᵢ i) (λ i → fᵢ i))
708+
→ ∀ {x} (v : Hom x a) → (x' : Ob[ x ]) → is-prop (Hom[ v ] x' a')
709+
jointly-cartesian-extend→thin extend v x' =
710+
id-pair-joint-cartesian→thin
711+
(extend (λ _ → true)
712+
(cartesian→jointly-cartesian ⊤-is-contr cartesian-id))
713+
v x'
714+
```
715+
611716
## Universal properties
612717

613718
Jointly cartesian families have an alternative presentation of their
@@ -738,24 +843,24 @@ cartesian fibrations, but is a bit verbose.
738843
```
739844
</details>
740845

741-
Every jointly cartesian fibration has objects that act like discrete
846+
Every jointly cartesian fibration has objects that act like codiscrete
742847
spaces arising from lifts of empty families.
743848

744849
```agda
745850
opaque
746-
Disc* : ∀ (x : Ob) → Ob[ x ]
747-
Disc* x = ∏* (Lift _ ⊥) {yᵢ = λ ()} (λ ()) (λ ())
851+
Codisc* : ∀ (x : Ob) → Ob[ x ]
852+
Codisc* x = ∏* (Lift _ ⊥) {yᵢ = λ ()} (λ ()) (λ ())
748853
749-
disc*
854+
codisc*
750855
: ∀ {x y : Ob}
751856
→ (u : Hom x y) (x' : Ob[ x ])
752-
→ Hom[ u ] x' (Disc* y)
753-
disc* u x' = π*.universal u (λ ())
857+
→ Hom[ u ] x' (Codisc* y)
858+
codisc* u x' = π*.universal u (λ ())
754859
755-
disc*-unique
860+
codisc*-unique
756861
: ∀ {x y : Ob}
757862
→ {u : Hom x y} {x' : Ob[ x ]}
758-
→ (other : Hom[ u ] x' (Disc* y))
759-
→ other ≡ disc* u x'
760-
disc*-unique other = π*.unique other (λ ())
863+
→ (other : Hom[ u ] x' (Codisc* y))
864+
→ other ≡ codisc* u x'
865+
codisc*-unique other = π*.unique other (λ ())
761866
```

0 commit comments

Comments
 (0)