mathlib-initiative/mathlib-tactics huggingface dataset:
Module: Mathlib.CategoryTheory.Shift.ShiftSequence

Goal state before:
pp: C : Type u_1
D : Type u_2
A : Type u_3
inst✝⁷ : Category.{v_1, u_1} C
inst✝⁶ : Category.{v_2, u_2} D
inst✝⁵ : Category.{v_3, u_3} A
F : C ⥤ A
π : C ⥤ D
H : D ⥤ A
e : π ⋙ H ≅ F
M : Type u_4
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
inst✝² : HasShift D M
G : Type u_5
inst✝¹ : AddGroup G
inst✝ : HasShift C G
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
X : C
⊢ (((shiftFunctor C (m + n)).associator (shiftFunctor C a) F).symm ≪≫
            isoWhiskerRight (shiftFunctorAdd' C (m + n) a a'' ⋯).symm F).hom.app
      X =
    (isoWhiskerRight (shiftFunctorAdd C m n) (shiftFunctor C a ⋙ F) ≪≫
            (shiftFunctor C m).associator (shiftFunctor C n) (shiftFunctor C a ⋙ F) ≪≫
              (shiftFunctor C m).isoWhiskerLeft
                  (((shiftFunctor C n).associator (shiftFunctor C a) F).symm ≪≫
                    isoWhiskerRight (shiftFunctorAdd' C n a a' ha').symm F) ≪≫
                ((shiftFunctor C m).associator (shiftFunctor C a') F).symm ≪≫
                  isoWhiskerRight (shiftFunctorAdd' C m a' a'' ha'').symm F).hom.app
      X

Tactic:
dsimp

Goal state after:
C : Type u_1
D : Type u_2
A : Type u_3
inst✝⁷ : Category.{v_1, u_1} C
inst✝⁶ : Category.{v_2, u_2} D
inst✝⁵ : Category.{v_3, u_3} A
F : C ⥤ A
π : C ⥤ D
H : D ⥤ A
e : π ⋙ H ≅ F
M : Type u_4
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
inst✝² : HasShift D M
G : Type u_5
inst✝¹ : AddGroup G
inst✝ : HasShift C G
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
X : C
⊢ 𝟙 (F.obj ((shiftFunctor C a).obj ((shiftFunctor C (m + n)).obj X))) ≫
      F.map ((shiftFunctorAdd' C (m + n) a a'' ⋯).inv.app X) =
    F.map ((shiftFunctor C a).map ((shiftFunctorAdd C m n).hom.app X)) ≫
      𝟙 (F.obj ((shiftFunctor C a).obj ((shiftFunctor C n).obj ((shiftFunctor C m).obj X)))) ≫
        (𝟙 (F.obj ((shiftFunctor C a).obj ((shiftFunctor C n).obj ((shiftFunctor C m).obj X)))) ≫
            F.map ((shiftFunctorAdd' C n a a' ha').inv.app ((shiftFunctor C m).obj X))) ≫
          𝟙 (F.obj ((shiftFunctor C a').obj ((shiftFunctor C m).obj X))) ≫
            F.map ((shiftFunctorAdd' C m a' a'' ha'').inv.app X)
Module: Mathlib.Algebra.Homology.HomologySequence

Goal state before:
pp: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
⊢ Epi (S.map (eval C c i)).g

Tactic:
dsimp

Goal state after:
C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
⊢ Epi (S.g.f i)
Module: Mathlib.Algebra.Homology.HomologySequence

Goal state before:
pp: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Epi (S.map (eval C c i)).g
hj : IsColimit (CokernelCofork.ofπ (S.map (eval C c i)).g ⋯)
A : C
k : S.X₂.opcycles i ⟶ A
hk : opcyclesMap S.f i ≫ k = 0
⊢ (S.map (eval C c i)).f ≫ S.X₂.pOpcycles i ≫ k = 0

Tactic:
dsimp

Goal state after:
C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Epi S.g
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Epi (S.map (eval C c i)).g
hj : IsColimit (CokernelCofork.ofπ (S.map (eval C c i)).g ⋯)
A : C
k : S.X₂.opcycles i ⟶ A
hk : opcyclesMap S.f i ≫ k = 0
⊢ S.f.f i ≫ S.X₂.pOpcycles i ≫ k = 0
Module: Mathlib.Algebra.Homology.HomologySequence

Goal state before:
pp: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
⊢ Mono (S.map (eval C c i)).f

Tactic:
dsimp

Goal state after:
C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
⊢ Mono (S.f.f i)
Module: Mathlib.CategoryTheory.Shift.ShiftSequence

Goal state before:
pp: C : Type u_1
D : Type u_2
A : Type u_3
inst✝⁹ : Category.{v_1, u_1} C
inst✝⁸ : Category.{v_2, u_2} D
inst✝⁷ : Category.{v_3, u_3} A
F : C ⥤ A
π : C ⥤ D
H : D ⥤ A
e : π ⋙ H ≅ F
M : Type u_4
inst✝⁶ : AddMonoid M
inst✝⁵ : HasShift C M
inst✝⁴ : HasShift D M
G : Type u_5
inst✝³ : AddGroup G
inst✝² : HasShift C G
inst✝¹ : π.CommShift M
inst✝ : H.ShiftSequence M
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
K : C
⊢ (((shiftFunctor C (m + n)).associator π (H.shift a)).symm ≪≫
            isoWhiskerRight (commShiftIso π (m + n)) (H.shift a) ≪≫
              π.associator (shiftFunctor D (m + n)) (H.shift a) ≪≫
                π.isoWhiskerLeft (H.shiftIso (m + n) a a'' ⋯)).hom.app
      K =
    (isoWhiskerRight (shiftFunctorAdd C m n) (π ⋙ H.shift a) ≪≫
            (shiftFunctor C m).associator (shiftFunctor C n) (π ⋙ H.shift a) ≪≫
              (shiftFunctor C m).isoWhiskerLeft
                  (((shiftFunctor C n).associator π (H.shift a)).symm ≪≫
                    isoWhiskerRight (commShiftIso π n) (H.shift a) ≪≫
                      π.associator (shiftFunctor D n) (H.shift a) ≪≫ π.isoWhiskerLeft (H.shiftIso n a a' ha')) ≪≫
                ((shiftFunctor C m).associator π (H.shift a')).symm ≪≫
                  isoWhiskerRight (commShiftIso π m) (H.shift a') ≪≫
                    π.associator (shiftFunctor D m) (H.shift a') ≪≫ π.isoWhiskerLeft (H.shiftIso m a' a'' ha'')).hom.app
      K

Tactic:
dsimp

Goal state after:
C : Type u_1
D : Type u_2
A : Type u_3
inst✝⁹ : Category.{v_1, u_1} C
inst✝⁸ : Category.{v_2, u_2} D
inst✝⁷ : Category.{v_3, u_3} A
F : C ⥤ A
π : C ⥤ D
H : D ⥤ A
e : π ⋙ H ≅ F
M : Type u_4
inst✝⁶ : AddMonoid M
inst✝⁵ : HasShift C M
inst✝⁴ : HasShift D M
G : Type u_5
inst✝³ : AddGroup G
inst✝² : HasShift C G
inst✝¹ : π.CommShift M
inst✝ : H.ShiftSequence M
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
K : C
⊢ 𝟙 ((H.shift a).obj (π.obj ((shiftFunctor C (m + n)).obj K))) ≫
      (H.shift a).map ((commShiftIso π (m + n)).hom.app K) ≫
        𝟙 ((H.shift a).obj ((shiftFunctor D (m + n)).obj (π.obj K))) ≫ (H.shiftIso (m + n) a a'' ⋯).hom.app (π.obj K) =
    (H.shift a).map (π.map ((shiftFunctorAdd C m n).hom.app K)) ≫
      𝟙 ((H.shift a).obj (π.obj ((shiftFunctor C n).obj ((shiftFunctor C m).obj K)))) ≫
        (𝟙 ((H.shift a).obj (π.obj ((shiftFunctor C n).obj ((shiftFunctor C m).obj K)))) ≫
            (H.shift a).map ((commShiftIso π n).hom.app ((shiftFunctor C m).obj K)) ≫
              𝟙 ((H.shift a).obj ((shiftFunctor D n).obj (π.obj ((shiftFunctor C m).obj K)))) ≫
                (H.shiftIso n a a' ha').hom.app (π.obj ((shiftFunctor C m).obj K))) ≫
          𝟙 ((H.shift a').obj (π.obj ((shiftFunctor C m).obj K))) ≫
            (H.shift a').map ((commShiftIso π m).hom.app K) ≫
              𝟙 ((H.shift a').obj ((shiftFunctor D m).obj (π.obj K))) ≫ (H.shiftIso m a' a'' ha'').hom.app (π.obj K)
Module: Mathlib.Algebra.Homology.HomologySequence

Goal state before:
pp: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Mono (S.map (eval C c i)).f
hi : IsLimit (KernelFork.ofι (S.map (eval C c i)).f ⋯)
A : C
k : A ⟶ S.X₂.cycles i
hk : k ≫ cyclesMap S.g i = 0
⊢ (k ≫ S.X₂.iCycles i) ≫ (S.map (eval C c i)).g = 0

Tactic:
dsimp

Goal state after:
C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{v_1, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Mono (S.map (eval C c i)).f
hi : IsLimit (KernelFork.ofι (S.map (eval C c i)).f ⋯)
A : C
k : A ⟶ S.X₂.cycles i
hk : k ≫ cyclesMap S.g i = 0
⊢ (k ≫ S.X₂.iCycles i) ≫ S.g.f i = 0
Module: Mathlib.CategoryTheory.Category.Quiv

Goal state before:
pp: V₁ : Type u₁
V₂ : Type u₂
V₃ : Type u₃
inst✝² : Quiver V₁
inst✝¹ : Quiver V₂
inst✝ : Quiver V₃
F : V₁ ⥤q V₂
G : V₂ ⥤q V₃
X✝ Y✝ : Paths V₁
f : X✝ ⟶ Y✝
⊢ (freeMap (F ⋙q G)).map f ≫ (Iso.refl ((freeMap (F ⋙q G)).obj Y✝)).hom =
    (Iso.refl ((freeMap (F ⋙q G)).obj X✝)).hom ≫ (freeMap F ⋙ freeMap G).map f

Tactic:
dsimp

Goal state after:
V₁ : Type u₁
V₂ : Type u₂
V₃ : Type u₃
inst✝² : Quiver V₁
inst✝¹ : Quiver V₂
inst✝ : Quiver V₃
F : V₁ ⥤q V₂
G : V₂ ⥤q V₃
X✝ Y✝ : Paths V₁
f : X✝ ⟶ Y✝
⊢ (F ⋙q G).mapPath f ≫ 𝟙 (G.obj (F.obj Y✝)) = 𝟙 (G.obj (F.obj X✝)) ≫ G.mapPath (F.mapPath f)
Module: Mathlib.Algebra.Homology.HomologySequence

Goal state before:
pp: C : Type u_1
ι : Type u_2
inst✝¹ : Category.{v_1, u_1} C
inst✝ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS✝ : S.ShortExact
i✝ j✝ : ι
hij✝ : c.Rel i✝ j✝
hS : S.ShortExact
i j : ι
hij : c.Rel i j
this : Epi S.g
⊢ Epi ((opcyclesFunctor C c i).mapShortComplex.obj S).g

Tactic:
dsimp

Goal state after:
C : Type u_1
ι : Type u_2
inst✝¹ : Category.{v_1, u_1} C
inst✝ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS✝ : S.ShortExact
i✝ j✝ : ι
hij✝ : c.Rel i✝ j✝
hS : S.ShortExact
i j : ι
hij : c.Rel i j
this : Epi S.g
⊢ Epi (opcyclesMap S.g i)
Module: Mathlib.Algebra.Homology.HomologySequence

Goal state before:
pp: C : Type u_1
ι : Type u_2
inst✝¹ : Category.{v_1, u_1} C
inst✝ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS✝ : S.ShortExact
i✝ j✝ : ι
hij✝ : c.Rel i✝ j✝
hS : S.ShortExact
i j : ι
hij : c.Rel i j
this : Mono S.f
⊢ Mono ((cyclesFunctor C c j).mapShortComplex.obj S).f

Tactic:
dsimp

Goal state after:
C : Type u_1
ι : Type u_2
inst✝¹ : Category.{v_1, u_1} C
inst✝ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS✝ : S.ShortExact
i✝ j✝ : ι
hij✝ : c.Rel i✝ j✝
hS : S.ShortExact
i j : ι
hij : c.Rel i j
this : Mono S.f
⊢ Mono (cyclesMap S.f j)
Module: Mathlib.CategoryTheory.Category.Quiv

Goal state before:
pp: V : Type u
C : Type u₁
inst✝¹ : Quiver V
inst✝ : Category.{v₁, u₁} C
F : Paths V ⥤ C
⊢ (fun G ↦ Cat.freeMap G ⋙ pathComposition C) ((fun F ↦ Paths.of V ⋙q F.toPrefunctor) F) = F

Tactic:
dsimp

Goal state after:
V : Type u
C : Type u₁
inst✝¹ : Quiver V
inst✝ : Category.{v₁, u₁} C
F : Paths V ⥤ C
⊢ Cat.freeMap (Paths.of V ⋙q F.toPrefunctor) ⋙ pathComposition C = F
Module: Mathlib.CategoryTheory.Category.Quiv

Goal state before:
pp: V : Type u
C : Type u₁
inst✝¹ : Quiver V
inst✝ : Category.{v₁, u₁} C
F : Paths V ⥤ C
⊢ Cat.freeMap (Paths.of V) ⋙ pathComposition (Paths V) ⋙ F = F

Tactic:
← Functor.assoc,

Goal state after:
V : Type u
C : Type u₁
inst✝¹ : Quiver V
inst✝ : Category.{v₁, u₁} C
F : Paths V ⥤ C
⊢ (Cat.freeMap (Paths.of V) ⋙ pathComposition (Paths V)) ⋙ F = F
Module: Mathlib.CategoryTheory.Category.Quiv

Goal state before:
pp: V : Type u
C : Type u₁
inst✝¹ : Quiver V
inst✝ : Category.{v₁, u₁} C
G : V ⥤q C
⊢ (fun F ↦ Paths.of V ⋙q F.toPrefunctor) ((fun G ↦ Cat.freeMap G ⋙ pathComposition C) G) = G

Tactic:
dsimp

Goal state after:
V : Type u
C : Type u₁
inst✝¹ : Quiver V
inst✝ : Category.{v₁, u₁} C
G : V ⥤q C
⊢ Paths.of V ⋙q (Cat.freeMap G ⋙ pathComposition C).toPrefunctor = G
Module: Mathlib.CategoryTheory.Localization.Construction

Goal state before:
pp: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
X Y : C
w : X ⟶ Y
hw : W w
⊢ (Paths.of (LocQuiver W)).obj { obj := Y } ⟶ (Paths.of (LocQuiver W)).obj { obj := X }

Tactic:
dsimp

Goal state after:
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
X Y : C
w : X ⟶ Y
hw : W w
⊢ { obj := Y } ⟶ { obj := X }
Module: Mathlib.CategoryTheory.Triangulated.Triangulated

Goal state before:
pp: case refine_5
C : Type u_1
inst✝⁶ : Category.{v_1, u_1} C
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
inst✝ : IsTriangulated C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ (shiftFunctor C 1).obj Z₁₂
h₁₂ : Triangle.mk v₁₂ u₁₂ w₁₂ ∈ distinguishedTriangles
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ (shiftFunctor C 1).obj Z₂₃
h₂₃ : Triangle.mk v₂₃ u₂₃ w₂₃ ∈ distinguishedTriangles
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ (shiftFunctor C 1).obj Z₁₃
h₁₃ : Triangle.mk v₁₃ u₁₃ w₁₃ ∈ distinguishedTriangles
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ := (shiftShiftNeg Z₁₂ 1).inv ≫ (shiftFunctor C (-1)).map o.m₁ ≫ (shiftShiftNeg Z₁₃ 1).hom
m₃ : Z₁₃ ⟶ Z₂₃ := (shiftShiftNeg Z₁₃ 1).inv ≫ (shiftFunctor C (-1)).map o.m₃ ≫ (shiftShiftNeg Z₂₃ 1).hom
eq₁ : w₁₂ ≫ o.m₁ = u₂₃ ≫ w₁₃
eq₂ : o.m₁ ≫ (shiftFunctor C 1).map v₁₃ = (shiftFunctor C 1).map v₁₂
eq₃ : w₁₃ ≫ o.m₃ = w₂₃
eq₄ : (shiftFunctor C 1).map v₁₃ ≫ (shiftFunctor C 1).map u₁₂ = o.m₃ ≫ (shiftFunctor C 1).map v₂₃
⊢ (Triangle.mk m₁ m₃ (v₂₃ ≫ w₁₂)).mor₃ ≫ (shiftFunctor C 1).map (shiftShiftNeg Z₁₂ 1).symm.hom =
    (shiftShiftNeg Z₂₃ 1).symm.hom ≫
      ((shiftFunctor (Triangle C) (-1)).obj
          (Triangle.mk o.m₁ o.m₃
            ((-(shiftFunctor C 1).map (Triangle.mk v₂₃ u₂₃ w₂₃).mor₁) ≫
              (shiftFunctor C 1).map (Triangle.mk v₁₂ u₁₂ w₁₂).mor₃))).mor₃

Tactic:
dsimp

Goal state after:
case refine_5
C : Type u_1
inst✝⁶ : Category.{v_1, u_1} C
inst✝⁵ : Preadditive C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
inst✝ : IsTriangulated C
X₁ X₂ X₃ Z₁₂ Z₂₃ Z₁₃ : C
u₁₂ : X₁ ⟶ X₂
u₂₃ : X₂ ⟶ X₃
u₁₃ : X₁ ⟶ X₃
comm : u₁₂ ≫ u₂₃ = u₁₃
v₁₂ : Z₁₂ ⟶ X₁
w₁₂ : X₂ ⟶ (shiftFunctor C 1).obj Z₁₂
h₁₂ : Triangle.mk v₁₂ u₁₂ w₁₂ ∈ distinguishedTriangles
v₂₃ : Z₂₃ ⟶ X₂
w₂₃ : X₃ ⟶ (shiftFunctor C 1).obj Z₂₃
h₂₃ : Triangle.mk v₂₃ u₂₃ w₂₃ ∈ distinguishedTriangles
v₁₃ : Z₁₃ ⟶ X₁
w₁₃ : X₃ ⟶ (shiftFunctor C 1).obj Z₁₃
h₁₃ : Triangle.mk v₁₃ u₁₃ w₁₃ ∈ distinguishedTriangles
o : Octahedron comm ⋯ ⋯ ⋯ := someOctahedron comm ⋯ ⋯ ⋯
m₁ : Z₁₂ ⟶ Z₁₃ := (shiftShiftNeg Z₁₂ 1).inv ≫ (shiftFunctor C (-1)).map o.m₁ ≫ (shiftShiftNeg Z₁₃ 1).hom
m₃ : Z₁₃ ⟶ Z₂₃ := (shiftShiftNeg Z₁₃ 1).inv ≫ (shiftFunctor C (-1)).map o.m₃ ≫ (shiftShiftNeg Z₂₃ 1).hom
eq₁ : w₁₂ ≫ o.m₁ = u₂₃ ≫ w₁₃
eq₂ : o.m₁ ≫ (shiftFunctor C 1).map v₁₃ = (shiftFunctor C 1).map v₁₂
eq₃ : w₁₃ ≫ o.m₃ = w₂₃
eq₄ : (shiftFunctor C 1).map v₁₃ ≫ (shiftFunctor C 1).map u₁₂ = o.m₃ ≫ (shiftFunctor C 1).map v₂₃
⊢ (v₂₃ ≫ w₁₂) ≫ (shiftFunctor C 1).map ((shiftFunctorCompIsoId C 1 (-1) ⋯).inv.app Z₁₂) =
    (shiftFunctorCompIsoId C 1 (-1) ⋯).inv.app Z₂₃ ≫
      ((-1).negOnePow •
        (shiftFunctor C (-1)).map ((-(shiftFunctor C 1).map v₂₃) ≫ (shiftFunctor C 1).map w₁₂) ≫
          (shiftFunctorComm C 1 (-1)).hom.app ((shiftFunctor C 1).obj Z₁₂))
Module: Mathlib.CategoryTheory.Localization.Predicate

Goal state before:
pp: C : Type u_1
D : Type u_2
inst✝³ : Category.{v_1, u_1} C
inst✝² : Category.{v_2, u_2} D
L : C ⥤ D
W : MorphismProperty C
E : Type u_3
inst✝¹ : Category.{v_3, u_3} E
inst✝ : L.IsLocalization W
X✝ Y✝ : D ⥤ E
τ : X✝ ⟶ Y✝
x✝ : C
⊢ τ.app (L.obj (W.Q.obj x✝).as.obj) ≫
      𝟙 (((Construction.WhiskeringLeftEquivalence.functor W E).obj (Construction.lift L ⋯ ⋙ Y✝)).obj.obj x✝) =
    𝟙 (((Construction.WhiskeringLeftEquivalence.functor W E).obj (Construction.lift L ⋯ ⋙ X✝)).obj.obj x✝) ≫
      ((whiskeringLeftFunctor L W E).map τ).hom.app x✝

Tactic:
dsimp

Goal state after:
C : Type u_1
D : Type u_2
inst✝³ : Category.{v_1, u_1} C
inst✝² : Category.{v_2, u_2} D
L : C ⥤ D
W : MorphismProperty C
E : Type u_3
inst✝¹ : Category.{v_3, u_3} E
inst✝ : L.IsLocalization W
X✝ Y✝ : D ⥤ E
τ : X✝ ⟶ Y✝
x✝ : C
⊢ τ.app (L.obj (W.Q.obj x✝).as.obj) ≫ 𝟙 (Y✝.obj (L.obj (W.Q.obj x✝).as.obj)) =
    𝟙 (X✝.obj (L.obj (W.Q.obj x✝).as.obj)) ≫ ((whiskeringLeftFunctor L W E).map τ).hom.app x✝
Module: Mathlib.CategoryTheory.CatCommSq

Goal state before:
pp: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
inst✝³ : Category.{v_1, u_1} C₁
inst✝² : Category.{v_2, u_2} C₂
inst✝¹ : Category.{v_3, u_3} C₃
inst✝ : Category.{v_4, u_4} C₄
T : C₁ ≌ C₂
L : C₁ ⥤ C₃
R : C₂ ⥤ C₄
B : C₃ ≌ C₄
h : CatCommSq T.functor L R B.functor
X : C₁
⊢ (B.symm.unitIso.hom.app (R.obj (T.symm.inverse.obj X)) ≫
        B.symm.inverse.map
            (B.inverse.map (R.map (T.counitIso.inv.app (T.symm.inverse.obj X))) ≫
              B.inverse.map ((iso T.functor L R B.functor).hom.app (T.inverse.obj (T.symm.inverse.obj X))) ≫
                B.unitIso.inv.app (L.obj (T.inverse.obj (T.symm.inverse.obj X)))) ≫
          B.symm.inverse.map (L.map (T.symm.counitIso.hom.app X))) ≫
      (L ⋙ B.functor).map (T.unitIso.hom.app X) =
    (T.functor ⋙ R).map (T.unitIso.hom.app X) ≫ (iso T.functor L R B.functor).hom.app ((T.functor ⋙ T.inverse).obj X)

Tactic:
dsimp

Goal state after:
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
inst✝³ : Category.{v_1, u_1} C₁
inst✝² : Category.{v_2, u_2} C₂
inst✝¹ : Category.{v_3, u_3} C₃
inst✝ : Category.{v_4, u_4} C₄
T : C₁ ≌ C₂
L : C₁ ⥤ C₃
R : C₂ ⥤ C₄
B : C₃ ≌ C₄
h : CatCommSq T.functor L R B.functor
X : C₁
⊢ (B.counitIso.inv.app (R.obj (T.functor.obj X)) ≫
        B.functor.map
            (B.inverse.map (R.map (T.counitIso.inv.app (T.functor.obj X))) ≫
              B.inverse.map ((iso T.functor L R B.functor).hom.app (T.inverse.obj (T.functor.obj X))) ≫
                B.unitIso.inv.app (L.obj (T.inverse.obj (T.functor.obj X)))) ≫
          B.functor.map (L.map (T.unitIso.inv.app X))) ≫
      B.functor.map (L.map (T.unitIso.hom.app X)) =
    R.map (T.functor.map (T.unitIso.hom.app X)) ≫
      (iso T.functor L R B.functor).hom.app (T.inverse.obj (T.functor.obj X))
Module: Mathlib.CategoryTheory.Localization.Construction

Goal state before:
pp: C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
F₁ F₂ : W.Localization ⥤ D
τ : W.Q ⋙ F₁ ⟶ W.Q ⋙ F₂
X Y : C
f : X ⟶ Y
⊢ MorphismProperty.naturalityProperty (NatTransExtension.app τ) (W.Q.map f)

Tactic:
dsimp

Goal state after:
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
F₁ F₂ : W.Localization ⥤ D
τ : W.Q ⋙ F₁ ⟶ W.Q ⋙ F₂
X Y : C
f : X ⟶ Y
⊢ F₁.map (W.Q.map f) ≫ NatTransExtension.app τ (W.Q.obj Y) = NatTransExtension.app τ (W.Q.obj X) ≫ F₂.map (W.Q.map f)
Module: Mathlib.CategoryTheory.CatCommSq

Goal state before:
pp: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
inst✝³ : Category.{v_1, u_1} C₁
inst✝² : Category.{v_2, u_2} C₂
inst✝¹ : Category.{v_3, u_3} C₃
inst✝ : Category.{v_4, u_4} C₄
T : C₁ ⥤ C₂
L : C₁ ≌ C₃
R : C₂ ≌ C₄
B : C₃ ⥤ C₄
h : CatCommSq T L.functor R.functor B
X : C₁
⊢ R.symm.inverse.map (T.map (L.symm.counitIso.inv.app X)) ≫
      R.symm.inverse.map ((iso B L.symm.functor R.symm.functor T).inv.app (L.symm.inverse.obj X)) ≫
        R.symm.unitIso.inv.app (B.obj (L.symm.inverse.obj X)) =
    (iso T L.symm.inverse R.symm.inverse B).hom.app X

Tactic:
dsimp

Goal state after:
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
inst✝³ : Category.{v_1, u_1} C₁
inst✝² : Category.{v_2, u_2} C₂
inst✝¹ : Category.{v_3, u_3} C₃
inst✝ : Category.{v_4, u_4} C₄
T : C₁ ⥤ C₂
L : C₁ ≌ C₃
R : C₂ ≌ C₄
B : C₃ ⥤ C₄
h : CatCommSq T L.functor R.functor B
X : C₁
⊢ R.functor.map (T.map (L.unitIso.hom.app X)) ≫
      R.functor.map ((iso B L.inverse R.inverse T).inv.app (L.functor.obj X)) ≫
        R.counitIso.hom.app (B.obj (L.functor.obj X)) =
    (iso T L.functor R.functor B).hom.app X
Module: Mathlib.CategoryTheory.CatCommSq

Goal state before:
pp: C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
inst✝³ : Category.{v_1, u_1} C₁
inst✝² : Category.{v_2, u_2} C₂
inst✝¹ : Category.{v_3, u_3} C₃
inst✝ : Category.{v_4, u_4} C₄
T : C₁ ⥤ C₂
L : C₁ ≌ C₃
R : C₂ ≌ C₄
B : C₃ ⥤ C₄
h : CatCommSq T L.functor R.functor B
X : C₁
⊢ ((T ⋙ R.functor).map (L.unitIso.hom.app X) ≫
        R.functor.map
            (R.unitIso.hom.app (T.obj (L.inverse.obj (L.functor.obj X))) ≫
              R.inverse.map ((iso T L.functor R.functor B).hom.app (L.inverse.obj (L.functor.obj X))) ≫
                R.inverse.map (B.map (L.counitIso.hom.app (L.functor.obj X)))) ≫
          R.counitIso.hom.app (B.obj (L.functor.obj X))) ≫
      B.map (L.functor.map (L.unitIso.hom.app X)) =
    (iso T L.functor R.functor B).hom.app X ≫ B.map (L.functor.map (L.unitIso.hom.app X))

Tactic:
dsimp

Goal state after:
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
C₄ : Type u_4
inst✝³ : Category.{v_1, u_1} C₁
inst✝² : Category.{v_2, u_2} C₂
inst✝¹ : Category.{v_3, u_3} C₃
inst✝ : Category.{v_4, u_4} C₄
T : C₁ ⥤ C₂
L : C₁ ≌ C₃
R : C₂ ≌ C₄
B : C₃ ⥤ C₄
h : CatCommSq T L.functor R.functor B
X : C₁
⊢ (R.functor.map (T.map (L.unitIso.hom.app X)) ≫
        R.functor.map
            (R.unitIso.hom.app (T.obj (L.inverse.obj (L.functor.obj X))) ≫
              R.inverse.map ((iso T L.functor R.functor B).hom.app (L.inverse.obj (L.functor.obj X))) ≫
                R.inverse.map (B.map (L.counitIso.hom.app (L.functor.obj X)))) ≫
          R.counitIso.hom.app (B.obj (L.functor.obj X))) ≫
      B.map (L.functor.map (L.unitIso.hom.app X)) =
    (iso T L.functor R.functor B).hom.app X ≫ B.map (L.functor.map (L.unitIso.hom.app X))
Module: Mathlib.CategoryTheory.Localization.Opposite

Goal state before:
pp: C : Type u_1
D : Type u_2
inst✝³ : Category.{v_1, u_1} C
inst✝² : Category.{v_2, u_2} D
L✝ : C ⥤ D
W✝ : MorphismProperty C
inst✝¹ : L✝.IsLocalization W✝
L : Cᵒᵖ ⥤ Dᵒᵖ
W : MorphismProperty Cᵒᵖ
inst✝ : L.IsLocalization W
this✝ : CatCommSq (opOpEquivalence C).functor L.op L.unop (opOpEquivalence D).functor
x✝² x✝¹ : C
x✝ : x✝² ⟶ x✝¹
hf : W.unop x✝
this : IsIso (L.map x✝.op)
⊢ IsIso (L.unop.map x✝)

Tactic:
dsimp

Goal state after:
C : Type u_1
D : Type u_2
inst✝³ : Category.{v_1, u_1} C
inst✝² : Category.{v_2, u_2} D
L✝ : C ⥤ D
W✝ : MorphismProperty C
inst✝¹ : L✝.IsLocalization W✝
L : Cᵒᵖ ⥤ Dᵒᵖ
W : MorphismProperty Cᵒᵖ
inst✝ : L.IsLocalization W
this✝ : CatCommSq (opOpEquivalence C).functor L.op L.unop (opOpEquivalence D).functor
x✝² x✝¹ : C
x✝ : x✝² ⟶ x✝¹
hf : W.unop x✝
this : IsIso (L.map x✝.op)
⊢ IsIso (L.map x✝.op).unop
Module: Mathlib.CategoryTheory.Localization.Construction

Goal state before:
pp: case refine_2
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
G₁ : C ⥤ D
hG₁ : W.IsInvertedBy G₁
G₂ : C ⥤ D
hG₂ : W.IsInvertedBy G₂
f : { obj := G₁, property := hG₁ } ⟶ { obj := G₂, property := hG₂ }
x✝ : C
⊢ ((inverse W D ⋙ functor W D).map f).hom.app x✝ =
    (eqToHom ⋯ ≫ (𝟭 (W.FunctorsInverting D)).map f ≫ eqToHom ⋯).hom.app x✝

Tactic:
dsimp

Goal state after:
case refine_2
C : Type uC
inst✝¹ : Category.{uC', uC} C
W : MorphismProperty C
D : Type uD
inst✝ : Category.{uD', uD} D
G : C ⥤ D
hG : W.IsInvertedBy G
G₁ : C ⥤ D
hG₁ : W.IsInvertedBy G₁
G₂ : C ⥤ D
hG₂ : W.IsInvertedBy G₂
f : { obj := G₁, property := hG₁ } ⟶ { obj := G₂, property := hG₂ }
x✝ : C
⊢ NatTransExtension.app (eqToHom ⋯ ≫ f.hom ≫ eqToHom ⋯) (W.Q.obj x✝) =
    (eqToHom ⋯).hom.app x✝ ≫ f.hom.app x✝ ≫ (eqToHom ⋯).hom.app x✝