module Cat.Morphism.Strong.Mono {o β„“} (C : Precategory o β„“) where

Strong monomorphismsπŸ”—

A strong monomorphism is a monomorphism that is right orthogonal to every epimorphism. Note that strong monomorphisms are the formal dual of strong epimorphisms. Explicitly, is a strong mono if every commutative square of the form

has a contractible space of lifts

is-strong-mono : βˆ€ {c d} β†’ Hom c d β†’ Type _
is-strong-mono f = is-monic f Γ— (βˆ€ {a b} (e : a β†  b) β†’ mβŠ₯m C (e .mor) f)

As it turns out, the contractibility requirement is redundant, as every lift of a mono is unique.

lifts→is-strong-mono
  : βˆ€ {c d} {f : Hom c d}
  β†’ is-monic f
  β†’ (βˆ€ {a b} (e : a β†  b) {u v} β†’ v ∘ e .mor ≑ f ∘ u
    β†’ Lifting C (e .mor) f u v)
  β†’ is-strong-mono f
lifts→is-strong-mono monic lift-it =
  monic , Ξ» e β†’
  right-monic-lift→orthogonal C (e .mor) monic (lift-it e)

This condition seems somewhat arbitrary, so let’s take a second to do some exposition. First, note that in every mono is strong. The key insight here is that epis are surjections, and monos are embeddings. In particular, suppose that is some surjection and is some embedding, and are a pair of arbitrary maps; our job is to build a function Now, is a surjection, so we know that each fibre is merely inhabited. However, is an embedding, so its fibres are propositions: therefore, we can eliminate from the truncation of to via This suggests that we ought to think of strong monomorphisms as a categorical generalization of maps with propositional fibres.

With that bit of intuition out of the way, we can proceed to prove some basic facts. Let’s start by showing that every isomorphism is a strong mono.

invertible→strong-mono
  : βˆ€ {a b} {f : Hom a b} β†’ is-invertible f β†’ is-strong-mono f

The argument here is quite straightforward: every iso is monic, and isos are right orthogonal to every map.

invertible→strong-mono f-inv =
  invertible→monic f-inv , λ e →
  invertible→right-orthogonal C (e .mor) f-inv

Next, let’s show that strong monos compose. This is completely dual to the proof that strong epis compose, so we direct the reader there for exposition.

strong-mono-∘
  : βˆ€ {a b c} (f : Hom b c) (g : Hom a b)
  β†’ is-strong-mono f
  β†’ is-strong-mono g
  β†’ is-strong-mono (f ∘ g)
strong-mono-∘ f g (f-mono , f-str) (g-mono , g-str) =
  liftsβ†’is-strong-mono (monic-∘ f-mono g-mono) Ξ» e β†’ ∘r-lifts-against C
    (orthogonal→lifts-against C (f-str e))
    (orthogonal→lifts-against C (g-str e))

Like their non-strong counterparts, strong monomorphisms satisfy a left cancellation property. This is dual to the proof that strong epis cancel, so we omit the details.

strong-mono-cancell
  : βˆ€ {a b c} (f : Hom b c) (g : Hom a b)
  β†’ is-strong-mono (f ∘ g)
  β†’ is-strong-mono g
strong-mono-cancell f g (fg-mono , fg-str) =
  lifts→is-strong-mono g-mono g-str
  where
    g-mono : is-monic g
    g-mono = monic-cancell fg-mono

    g-str : βˆ€ {a b} (e : a β†  b) {u v} β†’ v ∘ e .mor ≑ g ∘ u β†’ _
    g-str e {u} {v} ve=gu =
      let (w , we=u , fgw=fv) = fg-str e (extendr ve=gu) .centre
      in w , we=u , e .epic (g ∘ w) v (pullr we=u βˆ™ sym ve=gu)

If a morphism is both strong monic and epic, then it is orthogonal to itself, and thus invertible.

strong-mono+epi→invertible
  : βˆ€ {a b} {f : Hom a b} β†’ is-strong-mono f β†’ is-epic f β†’ is-invertible f
strong-mono+epi→invertible {f = f} (_ , strong) epi =
  self-orthogonal→invertible C f (strong (make-epi f epi))