Theorem: HomologicalComplex.dgoToHomologicalComplex_obj_X
File: Mathlib/Algebra/Homology/DifferentialObject.lean

Proof steps:
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i j : β
h : i + b = j
⊢ i + 1 • b = j
state_after: no goals
tactic: simp [h]
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i j : β
w : ¬(ComplexShape.up' b).Rel i j
⊢ (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) i j = 0
state_after: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i j : β
w : ¬i + b = j
⊢ (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) i j = 0
tactic: dsimp at w
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i j : β
w : ¬i + b = j
⊢ (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) i j = 0
state_after: no goals
tactic: convert dif_neg w
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i j k : β
hij : (ComplexShape.up' b).Rel i j
hjk : (ComplexShape.up' b).Rel j k
⊢ (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) i j ≫
      (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) j k =
    0
state_after: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i j k : β
hij : i + b = j
hjk : j + b = k
⊢ (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) i j ≫
      (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) j k =
    0
tactic: dsimp at hij hjk
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i j k : β
hij : i + b = j
hjk : j + b = k
⊢ (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) i j ≫
      (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) j k =
    0
state_after: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i : β
⊢ (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) i (i + b) ≫
      (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) (i + b) (i + b + b) =
    0
tactic: substs hij hjk
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X : DifferentialObject ℤ (GradedObjectWithShift b V)
i : β
⊢ (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) i (i + b) ≫
      (fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) (i + b) (i + b + b) =
    0
state_after: no goals
tactic: simp
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i j : β
h : (ComplexShape.up' b).Rel i j
⊢ f.f i ≫
      ((fun X =>
              { X := fun i => X.obj i, d := fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0, shape := ⋯,
                d_comp_d' := ⋯ })
            Y).d
        i j =
    ((fun X =>
              { X := fun i => X.obj i, d := fun i j => if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0, shape := ⋯,
                d_comp_d' := ⋯ })
            X).d
        i j ≫
      f.f j
state_after: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i j : β
h : i + b = j
⊢ (f.f i ≫ if h : i + b = j then Y.d i ≫ Y.objEqToHom ⋯ else 0) =
    (if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) ≫ f.f j
tactic: dsimp at h ⊢
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i j : β
h : i + b = j
⊢ (f.f i ≫ if h : i + b = j then Y.d i ≫ Y.objEqToHom ⋯ else 0) =
    (if h : i + b = j then X.d i ≫ X.objEqToHom ⋯ else 0) ≫ f.f j
state_after: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i : β
⊢ (f.f i ≫ if h : i + b = i + b then Y.d i ≫ Y.objEqToHom ⋯ else 0) =
    (if h : i + b = i + b then X.d i ≫ X.objEqToHom ⋯ else 0) ≫ f.f (i + b)
tactic: subst h
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i : β
⊢ (f.f i ≫ if h : i + b = i + b then Y.d i ≫ Y.objEqToHom ⋯ else 0) =
    (if h : i + b = i + b then X.d i ≫ X.objEqToHom ⋯ else 0) ≫ f.f (i + b)
state_after: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i : β
⊢ f.f i ≫ Y.d i ≫ Y.objEqToHom ⋯ = X.d i ≫ f.f (i + 1 • b) ≫ Y.objEqToHom ⋯
tactic: simp only [dite_true, Category.assoc, eqToHom_f']
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i : β
⊢ f.f i ≫ Y.d i ≫ Y.objEqToHom ⋯ = X.d i ≫ f.f (i + 1 • b) ≫ Y.objEqToHom ⋯
state_after: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i : β
this : f.f i ≫ Y.d i = X.d i ≫ f.f ((fun b_1 => b_1 + { as := 1 }.as • b) i)
⊢ f.f i ≫ Y.d i ≫ Y.objEqToHom ⋯ = X.d i ≫ f.f (i + 1 • b) ≫ Y.objEqToHom ⋯
tactic: have : f.f i ≫ Y.d i = X.d i ≫ f.f _ := (congr_fun f.comm i).symm
state_before: β : Type u_1
inst✝² : AddCommGroup β
b : β
V : Type u_2
inst✝¹ : Category.{?u.7275, u_2} V
inst✝ : HasZeroMorphisms V
X Y : DifferentialObject ℤ (GradedObjectWithShift b V)
f : X ⟶ Y
i : β
this : f.f i ≫ Y.d i = X.d i ≫ f.f ((fun b_1 => b_1 + { as := 1 }.as • b) i)
⊢ f.f i ≫ Y.d i ≫ Y.objEqToHom ⋯ = X.d i ≫ f.f (i + 1 • b) ≫ Y.objEqToHom ⋯
state_after: no goals
tactic: rw [reassoc_of% this]