Theorem: CategoryTheory.Limits.MultispanIndex.multicoforkEquivSigmaCofork_inverse
File: Mathlib/CategoryTheory/Limits/Shapes/Multiequalizer.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Multicofork I
⊢ ∀ (j : WalkingMultispan I.fstFrom I.sndFrom),
    ((𝟭 (Multicofork I)).obj K).ι.app j ≫ (Iso.refl ((𝟭 (Multicofork I)).obj K).pt).hom =
      ((I.toSigmaCoforkFunctor ⋙ I.ofSigmaCoforkFunctor).obj K).ι.app j
state_after: no goals
tactic: rintro (_ | _) <;> simp
state_before: C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
⊢ ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).π ≫
      (Iso.refl ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).pt).hom =
    ((𝟭 (Cofork I.fstSigmaMap I.sndSigmaMap)).obj K).π
state_after: case w
C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
⊢ ∀ (j : Discrete I.R),
    colimit.ι (Discrete.functor I.right) j ≫
        ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).π ≫
          (Iso.refl ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).pt).hom =
      colimit.ι (Discrete.functor I.right) j ≫ ((𝟭 (Cofork I.fstSigmaMap I.sndSigmaMap)).obj K).π
tactic: apply Limits.colimit.hom_ext
state_before: case w
C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
⊢ ∀ (j : Discrete I.R),
    colimit.ι (Discrete.functor I.right) j ≫
        ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).π ≫
          (Iso.refl ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).pt).hom =
      colimit.ι (Discrete.functor I.right) j ≫ ((𝟭 (Cofork I.fstSigmaMap I.sndSigmaMap)).obj K).π
state_after: case w.mk
C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
j : I.R
⊢ colimit.ι (Discrete.functor I.right) { as := j } ≫
      ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).π ≫
        (Iso.refl ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).pt).hom =
    colimit.ι (Discrete.functor I.right) { as := j } ≫ ((𝟭 (Cofork I.fstSigmaMap I.sndSigmaMap)).obj K).π
tactic: rintro ⟨j⟩
state_before: case w.mk
C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
j : I.R
⊢ colimit.ι (Discrete.functor I.right) { as := j } ≫
      ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).π ≫
        (Iso.refl ((I.ofSigmaCoforkFunctor ⋙ I.toSigmaCoforkFunctor).obj K).pt).hom =
    colimit.ι (Discrete.functor I.right) { as := j } ≫ ((𝟭 (Cofork I.fstSigmaMap I.sndSigmaMap)).obj K).π
state_after: case w.mk
C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
j : I.R
⊢ colimit.ι (Discrete.functor I.right) { as := j } ≫ Sigma.desc (Multicofork.ofSigmaCofork I K).π ≫ 𝟙 K.pt =
    colimit.ι (Discrete.functor I.right) { as := j } ≫ K.π
tactic: dsimp
state_before: case w.mk
C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
j : I.R
⊢ colimit.ι (Discrete.functor I.right) { as := j } ≫ Sigma.desc (Multicofork.ofSigmaCofork I K).π ≫ 𝟙 K.pt =
    colimit.ι (Discrete.functor I.right) { as := j } ≫ K.π
state_after: case w.mk
C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
j : I.R
⊢ (Multicofork.ofSigmaCofork I K).π j = colimit.ι (Discrete.functor I.right) { as := j } ≫ K.π
tactic: simp only [Category.comp_id, colimit.ι_desc, Cofan.mk_ι_app]
state_before: case w.mk
C : Type u
inst✝² : Category.{v, u} C
I : MultispanIndex C
inst✝¹ : HasCoproduct I.left
inst✝ : HasCoproduct I.right
K : Cofork I.fstSigmaMap I.sndSigmaMap
j : I.R
⊢ (Multicofork.ofSigmaCofork I K).π j = colimit.ι (Discrete.functor I.right) { as := j } ≫ K.π
state_after: no goals
tactic: rfl