{V : Type u} →
  [inst : CategoryTheory.Category.{v, u} V] →
    [inst_1 : CategoryTheory.Limits.HasZeroMorphisms V] →
      {α : Type u_2} →
        [inst_2 : AddRightCancelSemigroup α] →
          [inst_3 : One α] →
            [inst_4 : DecidableEq α] →
              (X : α → V) →
                (d_X : (n : α) → X n ⟶ X (n + 1)) →
                  (sq_X : ∀ (n : α), CategoryTheory.CategoryStruct.comp (d_X n) (d_X (n + 1)) = 0) →
                    (Y : α → V) →
                      (d_Y : (n : α) → Y n ⟶ Y (n + 1)) →
                        (sq_Y : ∀ (n : α), CategoryTheory.CategoryStruct.comp (d_Y n) (d_Y (n + 1)) = 0) →
                          (f : (i : α) → X i ⟶ Y i) →
                            (∀ (i : α),
                                CategoryTheory.CategoryStruct.comp (f i) (d_Y i) =
                                  CategoryTheory.CategoryStruct.comp (d_X i) (f (i + 1))) →
                              (CochainComplex.of X d_X sq_X ⟶ CochainComplex.of Y d_Y sq_Y)