{R : Type u} →
  {motive : AddCommGroupWithOne R → Sort u_1} →
    (t : AddCommGroupWithOne R) →
      ([toAddCommGroup : AddCommGroup R] →
          [toIntCast : IntCast R] →
            [toNatCast : NatCast R] →
              [toOne : One R] →
                (natCast_zero : ↑0 = 0) →
                  (natCast_succ : ∀ (n : ℕ), ↑(n + 1) = ↑n + 1) →
                    (intCast_ofNat : ∀ (n : ℕ), IntCast.intCast ↑n = ↑n) →
                      (intCast_negSucc : ∀ (n : ℕ), IntCast.intCast (Int.negSucc n) = -↑(n + 1)) →
                        motive
                          { toAddCommGroup := toAddCommGroup, toIntCast := toIntCast, toNatCast := toNatCast,
                            toOne := toOne, natCast_zero := natCast_zero, natCast_succ := natCast_succ,
                            intCast_ofNat := intCast_ofNat, intCast_negSucc := intCast_negSucc }) →
        motive t