module Cat.Diagram.Pullback.Along where
Pullbacks along an indeterminate morphism🔗
This module defines the auxiliary notion of a map being the pullback of a map along a map by summing over the possible maps fitting in the diagram below.
While this is a rather artificial notion, it comes up a lot in the context of elementary topos theory, especially in the case where is the generic subobject
record is-pullback-along {P X Y Z} (p₁ : Hom P X) (f : Hom X Z) (g : Hom Y Z) : Type (o ⊔ ℓ) where no-eta-equality field top : Hom P Y has-is-pb : is-pullback C p₁ f top g open is-pullback has-is-pb public
open is-pullback-along open is-pullback open Pullback module _ {o ℓ} {C : Precategory o ℓ} where open Subobjs C open Cat C private unquoteDecl eqv = declare-record-iso eqv (quote is-pullback-along) variable U V W X Y Z : Ob f g h k m n l nm : Hom X Y abstract
Despite the name is-pullback-along
, nothing
about the definition guarantees that this type is a proposition after fixing the three maps
and
However, we choose to name this auxiliary notion as though it were
always a proposition, since it will most commonly be used when
is a monomorphism, and, under this assumption, it
is propositional:
is-monic→is-pullback-along-is-prop : ∀ {P X Y Z} {f : Hom P X} {g : Hom X Z} {h : Hom Y Z} → is-monic h → is-prop (is-pullback-along C f g h) is-monic→is-pullback-along-is-prop h-monic = Iso→is-hlevel 1 eqv λ (_ , x) (_ , y) → Σ-prop-path! (h-monic _ _ (sym (x .square) ∙ y .square))
Of course, the notion of being a pullback along a map is closed under composition: if is the pullback of along and is the pullback of along as in the diagram below, then is also the pullback of along
paste-is-pullback-along : is-pullback-along C k n l → is-pullback-along C h m k → n ∘ m ≡ nm → is-pullback-along C h nm l paste-is-pullback-along p q r .top = p .top ∘ q .top paste-is-pullback-along p q r .has-is-pb = subst-is-pullback refl r refl refl (rotate-pullback (pasting-left→outer-is-pullback (rotate-pullback (p .has-is-pb)) (rotate-pullback (q .has-is-pb)) ( extendl (sym (p .is-pullback-along.square)) ∙ pushr (sym (q .is-pullback-along.square)))))