Theorem: HomotopyEquiv.toQuasiIso'
File: Mathlib/Algebra/Homology/QuasiIso.lean

tactic: refine ⟨⟨(homology'Functor W c i).map e.inv, ?_⟩⟩
state_before: ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ IsIso ((homology'Functor W c i).map e.hom)
state_after: ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ (homology'Functor W c i).map e.hom ≫ (homology'Functor W c i).map e.inv = 𝟙 ((homology'Functor W c i).obj C) ∧
    (homology'Functor W c i).map e.inv ≫ (homology'Functor W c i).map e.hom = 𝟙 ((homology'Functor W c i).obj D)

tactic: simp only [← Functor.map_comp, ← (homology'Functor W c i).map_id]
state_before: ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ (homology'Functor W c i).map e.hom ≫ (homology'Functor W c i).map e.inv = 𝟙 ((homology'Functor W c i).obj C) ∧
    (homology'Functor W c i).map e.inv ≫ (homology'Functor W c i).map e.hom = 𝟙 ((homology'Functor W c i).obj D)
state_after: ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ (homology'Functor W c i).map (e.hom ≫ e.inv) = (homology'Functor W c i).map (𝟙 C) ∧
    (homology'Functor W c i).map (e.inv ≫ e.hom) = (homology'Functor W c i).map (𝟙 D)

tactic: constructor <;> apply homology'_map_eq_of_homotopy
state_before: ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ (homology'Functor W c i).map (e.hom ≫ e.inv) = (homology'Functor W c i).map (𝟙 C) ∧
    (homology'Functor W c i).map (e.inv ≫ e.hom) = (homology'Functor W c i).map (𝟙 D)
state_after: case left.h
ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ Homotopy (e.hom ≫ e.inv) (𝟙 C)

case right.h
ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ Homotopy (e.inv ≫ e.hom) (𝟙 D)

tactic: exacts [e.homotopyHomInvId, e.homotopyInvHomId]
state_before: case left.h
ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ Homotopy (e.hom ≫ e.inv) (𝟙 C)

case right.h
ι : Type u_1
V : Type u
inst✝¹³ : Category.{v, u} V
inst✝¹² : HasZeroMorphisms V
inst✝¹¹ : HasZeroObject V
inst✝¹⁰ : HasEqualizers V
inst✝⁹ : HasImages V
inst✝⁸ : HasImageMaps V
inst✝⁷ : HasCokernels V
c : ComplexShape ι
C✝ D✝ E : HomologicalComplex V c
W : Type u_2
inst✝⁶ : Category.{u_3, u_2} W
inst✝⁵ : Preadditive W
inst✝⁴ : HasCokernels W
inst✝³ : HasImages W
inst✝² : HasEqualizers W
inst✝¹ : HasZeroObject W
inst✝ : HasImageMaps W
C D : HomologicalComplex W c
e : HomotopyEquiv C D
i : ι
⊢ Homotopy (e.inv ≫ e.hom) (𝟙 D)
state_after: no goals