Theorem: CategoryTheory.Limits.Cofan.isColimit_iff_isIso_sigmaDesc
File: Mathlib/CategoryTheory/Limits/Shapes/Products.lean

tactic: refine ⟨fun h ↦ ⟨isColimitOfIsIsoSigmaDesc c⟩, fun ⟨hc⟩ ↦ ?_⟩
state_before: β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
⊢ IsIso (Sigma.desc c.inj) ↔ Nonempty (IsColimit c)
state_after: β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
⊢ IsIso (Sigma.desc c.inj)

tactic: have : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c) := by
  simp; infer_instance
state_before: β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
⊢ IsIso (Sigma.desc c.inj)
state_after: β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
this : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
⊢ IsIso (Sigma.desc c.inj)

tactic: convert this
state_before: β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
this : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
⊢ IsIso (Sigma.desc c.inj)
state_after: case h.e'_5.h
β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
this : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
e_3✝ : ∐ f = (mk (∐ f) (Sigma.ι f)).pt
⊢ Sigma.desc c.inj = ((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c

tactic: ext
state_before: case h.e'_5.h
β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
this : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
e_3✝ : ∐ f = (mk (∐ f) (Sigma.ι f)).pt
⊢ Sigma.desc c.inj = ((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c
state_after: case h.e'_5.h.h
β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
this : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
e_3✝ : ∐ f = (mk (∐ f) (Sigma.ι f)).pt
b✝ : β
⊢ Sigma.ι f b✝ ≫ Sigma.desc c.inj =
    Sigma.ι f b✝ ≫ ((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c

tactic: simp only [colimit.ι_desc, mk_pt, mk_ι_app, IsColimit.coconePointUniqueUpToIso,
  coproductIsCoproduct, colimit.cocone_x, Functor.mapIso_hom, IsColimit.uniqueUpToIso_hom,
  Cocones.forget_map, IsColimit.descCoconeMorphism_hom, IsColimit.ofIsoColimit_desc,
  Cocones.ext_inv_hom, Iso.refl_inv, colimit.isColimit_desc, Category.id_comp,
  IsColimit.desc_self, Category.comp_id]
state_before: case h.e'_5.h.h
β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
this : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
e_3✝ : ∐ f = (mk (∐ f) (Sigma.ι f)).pt
b✝ : β
⊢ Sigma.ι f b✝ ≫ Sigma.desc c.inj =
    Sigma.ι f b✝ ≫ ((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c
state_after: case h.e'_5.h.h
β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
this : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
e_3✝ : ∐ f = (mk (∐ f) (Sigma.ι f)).pt
b✝ : β
⊢ c.inj b✝ = c.ι.app { as := b✝ }

tactic: rfl
state_before: case h.e'_5.h.h
β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
this : IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
e_3✝ : ∐ f = (mk (∐ f) (Sigma.ι f)).pt
b✝ : β
⊢ c.inj b✝ = c.ι.app { as := b✝ }
state_after: no goals

tactic: simp
state_before: β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
⊢ IsIso (((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom ≫ hc.desc c)
state_after: β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
⊢ IsIso ((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom

tactic: infer_instance
state_before: β : Type w
α : Type w₂
γ : Type w₃
C : Type u
inst✝¹ : Category.{v, u} C
f : β → C
inst✝ : HasCoproduct f
c : Cofan f
x✝ : Nonempty (IsColimit c)
hc : IsColimit c
⊢ IsIso ((coproductIsCoproduct f).coconePointUniqueUpToIso hc).hom
state_after: no goals