Theorem: HomologicalComplex.Hom.isoOfComponents_hom_f
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

Proof steps:
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
i j : ι
hij : c.Rel i j
⊢ (f i).inv ≫ C₁.d i j = (f i).inv ≫ (C₁.d i j ≫ (f j).hom) ≫ (f j).inv
state_after: no goals
tactic: simp
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
i j : ι
hij : c.Rel i j
⊢ (f i).inv ≫ (C₁.d i j ≫ (f j).hom) ≫ (f j).inv = (f i).inv ≫ ((f i).hom ≫ C₂.d i j) ≫ (f j).inv
state_after: no goals
tactic: rw [hf i j hij]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
i j : ι
hij : c.Rel i j
⊢ (f i).inv ≫ ((f i).hom ≫ C₂.d i j) ≫ (f j).inv = C₂.d i j ≫ (f j).inv
state_after: no goals
tactic: simp
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
⊢ { f := fun i => (f i).hom, comm' := hf } ≫ { f := fun i => (f i).inv, comm' := ⋯ } = 𝟙 C₁
state_after: case h
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
i : ι
⊢ ({ f := fun i => (f i).hom, comm' := hf } ≫ { f := fun i => (f i).inv, comm' := ⋯ }).f i = (𝟙 C₁).f i
tactic: ext i
state_before: case h
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
i : ι
⊢ ({ f := fun i => (f i).hom, comm' := hf } ≫ { f := fun i => (f i).inv, comm' := ⋯ }).f i = (𝟙 C₁).f i
state_after: no goals
tactic: exact (f i).hom_inv_id
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
⊢ { f := fun i => (f i).inv, comm' := ⋯ } ≫ { f := fun i => (f i).hom, comm' := hf } = 𝟙 C₂
state_after: case h
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
i : ι
⊢ ({ f := fun i => (f i).inv, comm' := ⋯ } ≫ { f := fun i => (f i).hom, comm' := hf }).f i = (𝟙 C₂).f i
tactic: ext i
state_before: case h
ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C C₁ C₂ C₃ : HomologicalComplex V c
f : (i : ι) → C₁.X i ≅ C₂.X i
hf : autoParam (∀ (i j : ι), c.Rel i j → (f i).hom ≫ C₂.d i j = C₁.d i j ≫ (f j).hom) _auto✝
i : ι
⊢ ({ f := fun i => (f i).inv, comm' := ⋯ } ≫ { f := fun i => (f i).hom, comm' := hf }).f i = (𝟙 C₂).f i
state_after: no goals
tactic: exact (f i).inv_hom_id