module Cat.Diagram.Pushout.Properties where
Epimorphisms🔗
is an epimorphism iff. the square below is a pushout
module _ {a b} {f : Hom a b} where is-epic→is-pushout : is-epic f → is-pushout C f id f id is-epic→is-pushout epi .square = refl is-epic→is-pushout epi .universal {i₁' = i₁'} p = i₁' is-epic→is-pushout epi .universal∘i₁ = idr _ is-epic→is-pushout epi .universal∘i₂ {p = p} = idr _ ∙ epi _ _ p is-epic→is-pushout epi .unique p q = intror refl ∙ p is-pushout→is-epic : is-pushout C f id f id → is-epic f is-pushout→is-epic po g h p = sym (po .universal∘i₁ {p = p}) ∙ po .universal∘i₂
Pushout additionally preserve epimorphisms, as shown below:
is-epic→pushout-is-epic : ∀ {x y z} {f : Hom x y} {g : Hom x z} {p} {i₁ : Hom y p} {i₂ : Hom z p} → is-epic f → is-pushout C f i₁ g i₂ → is-epic i₂ is-epic→pushout-is-epic {f = f} {g} {i₁ = i₁} {i₂} epi po h j p = eq where module po = is-pushout po q : (h ∘ i₁) ∘ f ≡ (j ∘ i₁) ∘ f q = (h ∘ i₁) ∘ f ≡⟨ extendr po.square ⟩≡ (h ∘ i₂) ∘ g ≡⟨ ap (_∘ g) p ⟩≡ (j ∘ i₂) ∘ g ≡˘⟨ extendr po.square ⟩≡˘ (j ∘ i₁) ∘ f ∎ r : h ∘ i₁ ≡ j ∘ i₁ r = epi _ _ q eq : h ≡ j eq = po.unique₂ {p = extendr po.square} r p refl refl
Identity is pushout🔗
If then the identity is a pushout.
module _ {x y} {f : Hom x y} {p} {i₁ : Hom y p} {i₂ : Hom y p} (po : is-pushout C f i₁ f i₂) (eq : i₁ ≡ i₂) where private module po = is-pushout po injections-eq→id-is-pushout : is-pushout C f id f id injections-eq→id-is-pushout .square = refl injections-eq→id-is-pushout .universal p = po .universal p ∘ i₁ injections-eq→id-is-pushout .universal∘i₁ = idr _ ∙ po .universal∘i₁ injections-eq→id-is-pushout .universal∘i₂ = idr _ ∙ ap (_ ∘_) eq ∙ po .universal∘i₂ injections-eq→id-is-pushout .unique {a} {f'} {g'} {p = sq} {c} p₁ p₂ = c ≡⟨ insertr i⁻¹∘i₁≡id ⟩≡ (c ∘ i⁻¹) ∘ i₁ ≡⟨ po .unique {colim' = c ∘ i⁻¹} (pullr i⁻¹∘i₁≡id ∙ p₁) (pullr i⁻¹∘i₂≡id ∙ p₂) ⟩∘⟨refl ⟩≡ po.universal sq ∘ i₁ ∎ where i⁻¹ : Hom p y i⁻¹ = universal po $ idl f ∙ sym (idl f) i⁻¹∘i₁≡id : i⁻¹ ∘ i₁ ≡ id i⁻¹∘i₁≡id = po.universal∘i₁ i⁻¹∘i₂≡id : i⁻¹ ∘ i₂ ≡ id i⁻¹∘i₂≡id = ap (i⁻¹ ∘_) (sym eq) ∙ i⁻¹∘i₁≡id injections-eq→is-epic : is-epic f injections-eq→is-epic = is-pushout→is-epic injections-eq→id-is-pushout