File: Mathlib/CategoryTheory/Limits/MonoCoprod.lean

full_name: CategoryTheory.Limits.MonoCoprod
code: /-- This condition expresses that inclusion morphisms into coproducts are monomorphisms. -/
class MonoCoprod : Prop where
  /-- the left inclusion of a colimit binary cofan is mono -/
  binaryCofan_inl : ∀ ⦃A B : C⦄ (c : BinaryCofan A B) (_ : IsColimit c), Mono c.inl
goal: Prop

full_name: CategoryTheory.Limits.MonoCoprod.binaryCofan_inl
code: /-- This condition expresses that inclusion morphisms into coproducts are monomorphisms. -/
class MonoCoprod : Prop where
  /-- the left inclusion of a colimit binary cofan is mono -/
  binaryCofan_inl : ∀ ⦃A B : C⦄ (c : BinaryCofan A B) (_ : IsColimit c), Mono c.inl
goal: CategoryTheory.Limits.IsColimit c → CategoryTheory.Mono c.inl

full_name: CategoryTheory.Limits.monoCoprodOfHasZeroMorphisms
code: instance (priority := 100) monoCoprodOfHasZeroMorphisms [HasZeroMorphisms C] : MonoCoprod C 
goal: CategoryTheory.Limits.MonoCoprod C

full_name: CategoryTheory.Limits.MonoCoprod.binaryCofan_inr
code: theorem binaryCofan_inr {A B : C} [MonoCoprod C] (c : BinaryCofan A B) (hc : IsColimit c) :
    Mono c.inr 
goal: CategoryTheory.Mono c.inr

full_name: CategoryTheory.Limits.MonoCoprod.instMonoInl
code: instance {A B : C} [MonoCoprod C] [HasBinaryCoproduct A B] : Mono (coprod.inl : A ⟶ A ⨿ B) 
goal: CategoryTheory.Mono CategoryTheory.Limits.coprod.inl

full_name: CategoryTheory.Limits.MonoCoprod.instMonoInr
code: instance {A B : C} [MonoCoprod C] [HasBinaryCoproduct A B] : Mono (coprod.inr : B ⟶ A ⨿ B) 
goal: CategoryTheory.Mono CategoryTheory.Limits.coprod.inr

full_name: CategoryTheory.Limits.MonoCoprod.mono_inl_iff
code: theorem mono_inl_iff {A B : C} {c₁ c₂ : BinaryCofan A B} (hc₁ : IsColimit c₁) (hc₂ : IsColimit c₂) :
    Mono c₁.inl ↔ Mono c₂.inl 
goal: CategoryTheory.Mono c₁.inl ↔ CategoryTheory.Mono c₂.inl

full_name: CategoryTheory.Limits.MonoCoprod.mk'
code: theorem mk' (h : ∀ A B : C, ∃ (c : BinaryCofan A B) (_ : IsColimit c), Mono c.inl) : MonoCoprod C 
goal: CategoryTheory.Limits.MonoCoprod C

full_name: CategoryTheory.Limits.MonoCoprod.monoCoprodType
code: instance monoCoprodType : MonoCoprod (Type u) 
goal: CategoryTheory.Limits.MonoCoprod (Type u)

full_name: CategoryTheory.Limits.MonoCoprod.binaryCofanSum
code: /-- 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`. -/
@[simp]
def binaryCofanSum : BinaryCofan c₁.pt c₂.pt 
goal: CategoryTheory.Limits.BinaryCofan c₁.pt c₂.pt

full_name: CategoryTheory.Limits.MonoCoprod.isColimitBinaryCofanSum
code: /-- The binary cofan `binaryCofanSum c c₁ c₂ hc₁ hc₂` is colimit. -/
def isColimitBinaryCofanSum : IsColimit (binaryCofanSum c c₁ c₂ hc₁ hc₂) 
goal: CategoryTheory.Limits.IsColimit (CategoryTheory.Limits.MonoCoprod.binaryCofanSum c c₁ c₂ hc₁ hc₂)

full_name: CategoryTheory.Limits.MonoCoprod.mono_binaryCofanSum_inl
code: lemma mono_binaryCofanSum_inl [MonoCoprod C] :
    Mono (binaryCofanSum c c₁ c₂ hc₁ hc₂).inl 
goal: CategoryTheory.Mono (CategoryTheory.Limits.MonoCoprod.binaryCofanSum c c₁ c₂ hc₁ hc₂).inl

full_name: CategoryTheory.Limits.MonoCoprod.mono_binaryCofanSum_inr
code: lemma mono_binaryCofanSum_inr [MonoCoprod C] :
    Mono (binaryCofanSum c c₁ c₂ hc₁ hc₂).inr 
goal: CategoryTheory.Mono (CategoryTheory.Limits.MonoCoprod.binaryCofanSum c c₁ c₂ hc₁ hc₂).inr

full_name: CategoryTheory.Limits.MonoCoprod.mono_binaryCofanSum_inl'
code: lemma mono_binaryCofanSum_inl' [MonoCoprod C] (inl : c₁.pt ⟶ c.pt)
    (hinl : ∀ (i₁ : I₁), c₁.inj i₁ ≫ inl = c.inj (Sum.inl i₁)) :
    Mono inl 
goal: CategoryTheory.Mono inl

full_name: CategoryTheory.Limits.MonoCoprod.mono_binaryCofanSum_inr'
code: lemma mono_binaryCofanSum_inr' [MonoCoprod C] (inr : c₂.pt ⟶ c.pt)
    (hinr : ∀ (i₂ : I₂), c₂.inj i₂ ≫ inr = c.inj (Sum.inr i₂)) :
    Mono inr 
goal: CategoryTheory.Mono inr

full_name: CategoryTheory.Limits.MonoCoprod.mono_of_injective_aux
code: lemma mono_of_injective_aux (hι : Function.Injective ι) (c : Cofan X) (c₁ : Cofan (X ∘ ι))
    (hc : IsColimit c) (hc₁ : IsColimit c₁)
    (c₂ : Cofan (fun (k : ((Set.range ι)ᶜ : Set I)) => X k.1))
    (hc₂ : IsColimit c₂) : Mono (Cofan.IsColimit.desc hc₁ (fun i => c.inj (ι i))) 
goal: CategoryTheory.Mono (CategoryTheory.Limits.Cofan.IsColimit.desc hc₁ fun i => c.inj (ι i))

full_name: CategoryTheory.Limits.MonoCoprod.mono_of_injective
code: lemma mono_of_injective [HasCoproduct (fun (k : ((Set.range ι)ᶜ : Set I)) => X k.1)] :
    Mono (Cofan.IsColimit.desc hc₁ (fun i => c.inj (ι i))) 
goal: CategoryTheory.Mono (CategoryTheory.Limits.Cofan.IsColimit.desc hc₁ fun i => c.inj (ι i))

full_name: CategoryTheory.Limits.MonoCoprod.mono_of_injective'
code: lemma mono_of_injective' [HasCoproduct (X ∘ ι)] [HasCoproduct X]
    [HasCoproduct (fun (k : ((Set.range ι)ᶜ : Set I)) => X k.1)] :
    Mono (Sigma.desc (f := X ∘ ι) (fun j => Sigma.ι X (ι j))) 
goal: CategoryTheory.Mono (CategoryTheory.Limits.Sigma.desc fun j => CategoryTheory.Limits.Sigma.ι X (ι j))

full_name: CategoryTheory.Limits.MonoCoprod.mono_map'_of_injective
code: lemma mono_map'_of_injective [HasCoproduct (X ∘ ι)] [HasCoproduct X]
    [HasCoproduct (fun (k : ((Set.range ι)ᶜ : Set I)) => X k.1)] :
    Mono (Sigma.map' ι (fun j => 𝟙 ((X ∘ ι) j))) 
goal: CategoryTheory.Mono (CategoryTheory.Limits.Sigma.map' ι fun j => 𝟙 ((X ∘ ι) j))

full_name: CategoryTheory.Limits.MonoCoprod.mono_inj
code: lemma mono_inj (c : Cofan X) (h : IsColimit c) (i : I)
    [HasCoproduct (fun (k : ((Set.range (fun _ : Unit ↦ i))ᶜ : Set I)) => X k.1)] :
    Mono (Cofan.inj c i) 
goal: CategoryTheory.Mono (c.inj i)

full_name: CategoryTheory.Limits.MonoCoprod.mono_ι
code: instance mono_ι [HasCoproduct X] (i : I)
    [HasCoproduct (fun (k : ((Set.range (fun _ : Unit ↦ i))ᶜ : Set I)) => X k.1)] :
    Mono (Sigma.ι X i) 
goal: CategoryTheory.Mono (CategoryTheory.Limits.Sigma.ι X i)

full_name: CategoryTheory.Limits.MonoCoprod.monoCoprod_of_preservesCoprod_of_reflectsMono
code: theorem monoCoprod_of_preservesCoprod_of_reflectsMono [MonoCoprod D]
    [PreservesColimitsOfShape (Discrete WalkingPair) F]
    [ReflectsMonomorphisms F] : MonoCoprod C 
goal: CategoryTheory.Limits.MonoCoprod C

full_name: CategoryTheory.Limits.MonoCoprod.instOfPreservesColimitsOfShapeDiscreteWalkingPairOfReflectsMonomorphismsForget
code: instance [ConcreteCategory C] [PreservesColimitsOfShape (Discrete WalkingPair) (forget C)]
    [ReflectsMonomorphisms (forget C)] : MonoCoprod C 
goal: CategoryTheory.Limits.MonoCoprod C