@@ -154,8 +154,8 @@ such that $f_{i} \circ \langle v , h_{i} \rangle = h_{i}$.
154154<!--
155155```agda
156156private 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]] ,
188188then 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$
190190arise from pulling back a family of subsets $A_ {i} \subset Y_ {i}$ along
191191maps $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
239239than pullbacks, as the space of maps into the shared domain of the family
240240is unique for any $v : \cE{B}(X, A)$ and $X' \liesover X$. In the displayed
241241category 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
258307If $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
450498Every 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
613718Jointly 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
742847spaces 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