Module: Mathlib.CategoryTheory.Limits.Shapes.Pullback.Categorical.Basic

Goal state before:
pp: case h₁
A : Type u₁
B : Type u₂
C : Type u₃
inst✝⁵ : Category.{v₁, u₁} A
inst✝⁴ : Category.{v₂, u₂} B
inst✝³ : Category.{v₃, u₃} C
F : A ⥤ B
G : C ⥤ B
X : Type u₄
Y : Type u₅
Z : Type u₆
inst✝² : Category.{v₄, u₄} X
inst✝¹ : Category.{v₅, u₅} Y
inst✝ : Category.{v₆, u₆} Z
X✝ Y✝ Z✝ : X ⥤ Y
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
x✝¹ : CatCommSqOver F G Y
x✝ : X
⊢ ({ app := fun x ↦ { fst := whiskerRight (f✝ ≫ g✝) x.fst, snd := whiskerRight (f✝ ≫ g✝) x.snd, w := ⋯ },
                naturality := ⋯ }.app
            x✝¹).fst.app
      x✝ =
    (({ app := fun x ↦ { fst := whiskerRight f✝ x.fst, snd := whiskerRight f✝ x.snd, w := ⋯ }, naturality := ⋯ } ≫
                { app := fun x ↦ { fst := whiskerRight g✝ x.fst, snd := whiskerRight g✝ x.snd, w := ⋯ },
                  naturality := ⋯ }).app
            x✝¹).fst.app
      x✝

pp: case h₂
A : Type u₁
B : Type u₂
C : Type u₃
inst✝⁵ : Category.{v₁, u₁} A
inst✝⁴ : Category.{v₂, u₂} B
inst✝³ : Category.{v₃, u₃} C
F : A ⥤ B
G : C ⥤ B
X : Type u₄
Y : Type u₅
Z : Type u₆
inst✝² : Category.{v₄, u₄} X
inst✝¹ : Category.{v₅, u₅} Y
inst✝ : Category.{v₆, u₆} Z
X✝ Y✝ Z✝ : X ⥤ Y
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
x✝¹ : CatCommSqOver F G Y
x✝ : X
⊢ ({ app := fun x ↦ { fst := whiskerRight (f✝ ≫ g✝) x.fst, snd := whiskerRight (f✝ ≫ g✝) x.snd, w := ⋯ },
                naturality := ⋯ }.app
            x✝¹).snd.app
      x✝ =
    (({ app := fun x ↦ { fst := whiskerRight f✝ x.fst, snd := whiskerRight f✝ x.snd, w := ⋯ }, naturality := ⋯ } ≫
                { app := fun x ↦ { fst := whiskerRight g✝ x.fst, snd := whiskerRight g✝ x.snd, w := ⋯ },
                  naturality := ⋯ }).app
            x✝¹).snd.app
      x✝

Tactic:
<;>

Goal state after:
case h₁
A : Type u₁
B : Type u₂
C : Type u₃
inst✝⁵ : Category.{v₁, u₁} A
inst✝⁴ : Category.{v₂, u₂} B
inst✝³ : Category.{v₃, u₃} C
F : A ⥤ B
G : C ⥤ B
X : Type u₄
Y : Type u₅
Z : Type u₆
inst✝² : Category.{v₄, u₄} X
inst✝¹ : Category.{v₅, u₅} Y
inst✝ : Category.{v₆, u₆} Z
X✝ Y✝ Z✝ : X ⥤ Y
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
x✝¹ : CatCommSqOver F G Y
x✝ : X
⊢ ({ app := fun x ↦ { fst := whiskerRight (f✝ ≫ g✝) x.fst, snd := whiskerRight (f✝ ≫ g✝) x.snd, w := ⋯ },
                naturality := ⋯ }.app
            x✝¹).fst.app
      x✝ =
    (({ app := fun x ↦ { fst := whiskerRight f✝ x.fst, snd := whiskerRight f✝ x.snd, w := ⋯ }, naturality := ⋯ } ≫
                { app := fun x ↦ { fst := whiskerRight g✝ x.fst, snd := whiskerRight g✝ x.snd, w := ⋯ },
                  naturality := ⋯ }).app
            x✝¹).fst.app
      x✝

case h₂
A : Type u₁
B : Type u₂
C : Type u₃
inst✝⁵ : Category.{v₁, u₁} A
inst✝⁴ : Category.{v₂, u₂} B
inst✝³ : Category.{v₃, u₃} C
F : A ⥤ B
G : C ⥤ B
X : Type u₄
Y : Type u₅
Z : Type u₆
inst✝² : Category.{v₄, u₄} X
inst✝¹ : Category.{v₅, u₅} Y
inst✝ : Category.{v₆, u₆} Z
X✝ Y✝ Z✝ : X ⥤ Y
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
x✝¹ : CatCommSqOver F G Y
x✝ : X
⊢ ({ app := fun x ↦ { fst := whiskerRight (f✝ ≫ g✝) x.fst, snd := whiskerRight (f✝ ≫ g✝) x.snd, w := ⋯ },
                naturality := ⋯ }.app
            x✝¹).snd.app
      x✝ =
    (({ app := fun x ↦ { fst := whiskerRight f✝ x.fst, snd := whiskerRight f✝ x.snd, w := ⋯ }, naturality := ⋯ } ≫
                { app := fun x ↦ { fst := whiskerRight g✝ x.fst, snd := whiskerRight g✝ x.snd, w := ⋯ },
                  naturality := ⋯ }).app
            x✝¹).snd.app
      x✝