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

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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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: 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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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: 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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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: infer_instance
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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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: dsimp
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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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₁
f : StructuredArrow X₂ T
⊢ (((w.whiskerVertical α.hom β.inv).structuredArrowDownwards X₂).obj f).hom ≫ B.map (α.symm.app f.right).hom =
    ((w.structuredArrowDownwards X₂ ⋙ (StructuredArrow.mapIso (β.app X₂)).functor).obj f).hom
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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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₁
f : StructuredArrow X₂ T
⊢ (R'.map f.hom ≫ β.inv.app (T.obj f.right) ≫ w.app f.right ≫ B.map (α.hom.app f.right)) ≫ B.map (α.inv.app f.right) =
    β.inv.app X₂ ≫ R.map f.hom ≫ w.app f.right

tactic: 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.3122, u_3} C₃
inst✝³ : Category.{u_8, u_4} D₁
inst✝² : Category.{u_10, u_5} D₂
inst✝¹ : Category.{?u.3134, 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₁
f : StructuredArrow X₂ T
⊢ (R'.map f.hom ≫ β.inv.app (T.obj f.right) ≫ w.app f.right ≫ B.map (α.hom.app f.right)) ≫ B.map (α.inv.app f.right) =
    β.inv.app X₂ ≫ R.map f.hom ≫ w.app f.right
state_after: no goals