∀ {R : Type u_2} {S : Type u_1} (f : R → S) (hf : Function.Surjective f) [inst : Add S] [inst_1 : Zero S]
  [inst_2 : One S] [inst_3 : SMul ℕ S] [inst_4 : NatCast S] [inst_5 : IntCast S] [inst_6 : AddGroupWithOne R]
  (zero : f 0 = 0) (one : f 1 = 1) (add : ∀ (x y : R), f (x + y) = f x + f y)
  (nsmul : ∀ (n : ℕ) (x : R), f (n • x) = n • f x) (natCast : ∀ (n : ℕ), f ↑n = ↑n),
  (∀ (n : ℤ), f ↑n = ↑n) → ∀ (n : ℕ), ↑↑n = ↑n