Theorem: CategoryTheory.TwoSquare.GuitartExact.whiskerVertical
File: Mathlib/CategoryTheory/GuitartExact/VerticalComposition.lean

Proof steps:
state_before: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
⊢ (w.whiskerVertical α.hom β.inv).GuitartExact
state_after: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
⊢ ∀ (X₂ : D₁), ((w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂).Initial
tactic: rw [guitartExact_iff_initial]
state_before: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
⊢ ∀ (X₂ : D₁), ((w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂).Initial
state_after: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
X₂ : D₁
⊢ ((w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂).Initial
tactic: intro X₂
state_before: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
X₂ : D₁
⊢ ((w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂).Initial
state_after: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
X₂ : D₁
e : (w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂ ≅
  w.structuredArrowDownwards X₂ ⋙ (StructuredArrow.mapIso (β.app X₂)).functor :=
  NatIso.ofComponents (fun f => StructuredArrow.isoMk (α.symm.app f.right) ⋯) ⋯
⊢ ((w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂).Initial
tactic: let e : structuredArrowDownwards (w.whiskerVertical α.hom β.inv) X₂ ≅
      w.structuredArrowDownwards X₂ ⋙ (StructuredArrow.mapIso (β.app X₂) ).functor :=
    NatIso.ofComponents (fun f => StructuredArrow.isoMk (α.symm.app f.right) (by
      dsimp
      simp only [NatTrans.naturality_assoc, assoc, NatIso.cancel_natIso_inv_left, ← B.map_comp,
        Iso.hom_inv_id_app, B.map_id, comp_id]))
state_before: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
X₂ : D₁
e : (w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂ ≅
  w.structuredArrowDownwards X₂ ⋙ (StructuredArrow.mapIso (β.app X₂)).functor :=
  NatIso.ofComponents (fun f => StructuredArrow.isoMk (α.symm.app f.right) ⋯) ⋯
⊢ ((w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂).Initial
state_after: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
X₂ : D₁
e : (w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂ ≅
  w.structuredArrowDownwards X₂ ⋙ (StructuredArrow.mapIso (β.app X₂)).functor :=
  NatIso.ofComponents (fun f => StructuredArrow.isoMk (α.symm.app f.right) ⋯) ⋯
⊢ (w.structuredArrowDownwards X₂ ⋙ (StructuredArrow.mapIso (β.app X₂)).functor).Initial
tactic: rw [Functor.initial_natIso_iff e]
state_before: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
D₁ : Type u_4
D₂ : Type u_5
D₃ : Type u_6
inst✝⁶ : Category.{u_7, u_1} C₁
inst✝⁵ : Category.{u_9, u_2} C₂
inst✝⁴ : Category.{?u.3150, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3162, u_6} D₃
T : C₁ ⥤ D₁
L : C₁ ⥤ C₂
R : D₁ ⥤ D₂
B : C₂ ⥤ D₂
w : TwoSquare T L R B
L' : C₁ ⥤ C₂
R' : D₁ ⥤ D₂
inst✝ : w.GuitartExact
α : L ≅ L'
β : R ≅ R'
X₂ : D₁
e : (w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂ ≅
  w.structuredArrowDownwards X₂ ⋙ (StructuredArrow.mapIso (β.app X₂)).functor :=
  NatIso.ofComponents (fun f => StructuredArrow.isoMk (α.symm.app f.right) ⋯) ⋯
⊢ (w.structuredArrowDownwards X₂ ⋙ (StructuredArrow.mapIso (β.app X₂)).functor).Initial
state_after: no goals
tactic: infer_instance