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
: Hom P Y
top : is-pullback C p₁ f top g
has-is-pb open is-pullback has-is-pb public
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)
= Iso→is-hlevel 1 eqv λ (_ , x) (_ , y) →
is-monic→is-pullback-along-is-prop h-monic (h-monic _ _ (sym (x .square) ∙ y .square)) Σ-prop-path!
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
.top = p .top ∘ q .top
paste-is-pullback-along p q r .has-is-pb =
paste-is-pullback-along p q r (rotate-pullback (pasting-left→outer-is-pullback
subst-is-pullback refl r refl refl (rotate-pullback (p .has-is-pb))
(rotate-pullback (q .has-is-pb))
( extendl (sym (p .is-pullback-along.square))
(sym (q .is-pullback-along.square))))) ∙ pushr