{C : Type u_1} →
  {D : Type u_2} →
    [inst : CategoryTheory.Category.{v_1, u_1} C] →
      [inst_1 : CategoryTheory.Category.{v_2, u_2} D] →
        {F : CategoryTheory.Functor C D} →
          {A : Type u_6} →
            [inst_2 : AddMonoid A] →
              [inst_3 : CategoryTheory.HasShift C A] →
                [inst_4 : CategoryTheory.HasShift D A] →
                  {motive : F.CommShift A → Sort u} →
                    (t : F.CommShift A) →
                      ((commShiftIso :
                            (a : A) →
                              (CategoryTheory.shiftFunctor C a).comp F ≅ F.comp (CategoryTheory.shiftFunctor D a)) →
                          (commShiftIso_zero : commShiftIso 0 = CategoryTheory.Functor.CommShift.isoZero F A) →
                            (commShiftIso_add :
                                ∀ (a b : A),
                                  commShiftIso (a + b) =
                                    CategoryTheory.Functor.CommShift.isoAdd (commShiftIso a) (commShiftIso b)) →
                              motive
                                { commShiftIso := commShiftIso, commShiftIso_zero := commShiftIso_zero,
                                  commShiftIso_add := commShiftIso_add }) →
                        motive t