Documentation

Mathlib.CategoryTheory.Limits.MonoCoprod

Categories where inclusions into coproducts are monomorphisms #

If C is a category, the class MonoCoprod C expresses that left inclusions A ⟶ A ⨿ B are monomorphisms when HasCoproduct A B is satisfied. If it is so, it is shown that right inclusions are also monomorphisms.

More generally, we deduce that when suitable coproducts exists, then if X : I → C and ι : J → I is an injective map, then the canonical morphism ∐ (X ∘ ι) ⟶ ∐ X is a monomorphism. It also follows that for any i : I, Sigma.ι X i : X i ⟶ ∐ X is a monomorphism.

TODO: define distributive categories, and show that they satisfy MonoCoprod, see https://ncatlab.org/toddtrimble/published/distributivity+implies+monicity+of+coproduct+inclusions

This condition expresses that inclusion morphisms into coproducts are monomorphisms.

  • binaryCofan_inl ⦃A B : C (c : BinaryCofan A B) : IsColimit cMono c.inl

    the left inclusion of a colimit binary cofan is mono

Instances
    theorem CategoryTheory.Limits.MonoCoprod.mono_inl_iff {C : Type u_1} [Category.{u_2, u_1} C] {A B : C} {c₁ c₂ : BinaryCofan A B} (hc₁ : IsColimit c₁) (hc₂ : IsColimit c₂) :
    Mono c₁.inl Mono c₂.inl
    theorem CategoryTheory.Limits.MonoCoprod.mk' {C : Type u_1} [Category.{u_2, u_1} C] (h : ∀ (A B : C), ∃ (c : BinaryCofan A B) (x : IsColimit c), Mono c.inl) :
    def CategoryTheory.Limits.MonoCoprod.binaryCofanSum {C : Type u_1} [Category.{u_4, u_1} C] {I₁ : Type u_2} {I₂ : Type u_3} {X : I₁ I₂C} (c : Cofan X) (c₁ : Cofan (X Sum.inl)) (c₂ : Cofan (X Sum.inr)) (hc₁ : IsColimit c₁) (hc₂ : IsColimit c₂) :
    BinaryCofan c₁.pt c₂.pt

    Given a family of objects X : I₁ ⊕ I₂ → C, a cofan of X, and two colimit cofans of X ∘ Sum.inl and X ∘ Sum.inr, this is a cofan for c₁.pt and c₂.pt whose point is c.pt.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def CategoryTheory.Limits.MonoCoprod.isColimitBinaryCofanSum {C : Type u_1} [Category.{u_4, u_1} C] {I₁ : Type u_2} {I₂ : Type u_3} {X : I₁ I₂C} (c : Cofan X) (c₁ : Cofan (X Sum.inl)) (c₂ : Cofan (X Sum.inr)) (hc : IsColimit c) (hc₁ : IsColimit c₁) (hc₂ : IsColimit c₂) :
      IsColimit (binaryCofanSum c c₁ c₂ hc₁ hc₂)

      The binary cofan binaryCofanSum c c₁ c₂ hc₁ hc₂ is colimit.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem CategoryTheory.Limits.MonoCoprod.mono_binaryCofanSum_inl {C : Type u_1} [Category.{u_4, u_1} C] {I₁ : Type u_2} {I₂ : Type u_3} {X : I₁ I₂C} (c : Cofan X) (c₁ : Cofan (X Sum.inl)) (c₂ : Cofan (X Sum.inr)) (hc : IsColimit c) (hc₁ : IsColimit c₁) (hc₂ : IsColimit c₂) [MonoCoprod C] :
        Mono (binaryCofanSum c c₁ c₂ hc₁ hc₂).inl
        theorem CategoryTheory.Limits.MonoCoprod.mono_binaryCofanSum_inr {C : Type u_1} [Category.{u_4, u_1} C] {I₁ : Type u_2} {I₂ : Type u_3} {X : I₁ I₂C} (c : Cofan X) (c₁ : Cofan (X Sum.inl)) (c₂ : Cofan (X Sum.inr)) (hc : IsColimit c) (hc₁ : IsColimit c₁) (hc₂ : IsColimit c₂) [MonoCoprod C] :
        Mono (binaryCofanSum c c₁ c₂ hc₁ hc₂).inr
        theorem CategoryTheory.Limits.MonoCoprod.mono_binaryCofanSum_inl' {C : Type u_1} [Category.{u_4, u_1} C] {I₁ : Type u_2} {I₂ : Type u_3} {X : I₁ I₂C} (c : Cofan X) (c₁ : Cofan (X Sum.inl)) (c₂ : Cofan (X Sum.inr)) (hc : IsColimit c) (hc₁ : IsColimit c₁) (hc₂ : IsColimit c₂) [MonoCoprod C] (inl : c₁.pt c.pt) (hinl : ∀ (i₁ : I₁), CategoryStruct.comp (c₁.inj i₁) inl = c.inj (Sum.inl i₁)) :
        Mono inl
        theorem CategoryTheory.Limits.MonoCoprod.mono_binaryCofanSum_inr' {C : Type u_1} [Category.{u_4, u_1} C] {I₁ : Type u_2} {I₂ : Type u_3} {X : I₁ I₂C} (c : Cofan X) (c₁ : Cofan (X Sum.inl)) (c₂ : Cofan (X Sum.inr)) (hc : IsColimit c) (hc₁ : IsColimit c₁) (hc₂ : IsColimit c₂) [MonoCoprod C] (inr : c₂.pt c.pt) (hinr : ∀ (i₂ : I₂), CategoryStruct.comp (c₂.inj i₂) inr = c.inj (Sum.inr i₂)) :
        Mono inr
        theorem CategoryTheory.Limits.MonoCoprod.mono_of_injective_aux {C : Type u_1} [Category.{u_4, u_1} C] [MonoCoprod C] {I : Type u_2} {J : Type u_3} (X : IC) (ι : JI) (hι : Function.Injective ι) (c : Cofan X) (c₁ : Cofan (X ι)) (hc : IsColimit c) (hc₁ : IsColimit c₁) (c₂ : Cofan fun (k : (Set.range ι)) => X k) (hc₂ : IsColimit c₂) :
        Mono (Cofan.IsColimit.desc hc₁ fun (i : J) => c.inj (ι i))
        theorem CategoryTheory.Limits.MonoCoprod.mono_of_injective {C : Type u_1} [Category.{u_4, u_1} C] [MonoCoprod C] {I : Type u_2} {J : Type u_3} (X : IC) (ι : JI) (hι : Function.Injective ι) (c : Cofan X) (c₁ : Cofan (X ι)) (hc : IsColimit c) (hc₁ : IsColimit c₁) [HasCoproduct fun (k : (Set.range ι)) => X k] :
        Mono (Cofan.IsColimit.desc hc₁ fun (i : J) => c.inj (ι i))
        theorem CategoryTheory.Limits.MonoCoprod.mono_of_injective' {C : Type u_1} [Category.{u_4, u_1} C] [MonoCoprod C] {I : Type u_2} {J : Type u_3} (X : IC) (ι : JI) (hι : Function.Injective ι) [HasCoproduct (X ι)] [HasCoproduct X] [HasCoproduct fun (k : (Set.range ι)) => X k] :
        Mono (Sigma.desc fun (j : J) => Sigma.ι X (ι j))
        theorem CategoryTheory.Limits.MonoCoprod.mono_map'_of_injective {C : Type u_1} [Category.{u_4, u_1} C] [MonoCoprod C] {I : Type u_2} {J : Type u_3} (X : IC) (ι : JI) (hι : Function.Injective ι) [HasCoproduct (X ι)] [HasCoproduct X] [HasCoproduct fun (k : (Set.range ι)) => X k] :
        Mono (Sigma.map' ι fun (j : J) => CategoryStruct.id ((X ι) j))
        theorem CategoryTheory.Limits.MonoCoprod.mono_inj {C : Type u_1} [Category.{u_3, u_1} C] [MonoCoprod C] {I : Type u_2} (X : IC) (c : Cofan X) (h : IsColimit c) (i : I) [HasCoproduct fun (k : (Set.range fun (x : Unit) => i)) => X k] :
        Mono (c.inj i)
        instance CategoryTheory.Limits.MonoCoprod.mono_ι {C : Type u_1} [Category.{u_3, u_1} C] [MonoCoprod C] {I : Type u_2} (X : IC) [HasCoproduct X] (i : I) [HasCoproduct fun (k : (Set.range fun (x : Unit) => i)) => X k] :