∀ {M₁ : Type u_2} {M₂ : Type u_1} [inst : Add M₁] [inst_1 : Zero M₁] [inst_2 : SMul ℕ M₁] [inst_3 : Neg M₁]
  [inst_4 : Sub M₁] [inst_5 : SMul ℤ M₁] [inst_6 : AddGroup M₂] (f : M₁ → M₂) (hf : Function.Injective f)
  (zero : f 0 = 0) (add : ∀ (x y : M₁), f (x + y) = f x + f y) (neg : ∀ (x : M₁), f (-x) = -f x)
  (sub : ∀ (x y : M₁), f (x - y) = f x - f y) (nsmul : ∀ (x : M₁) (n : ℕ), f (n • x) = n • f x)
  (zsmul : ∀ (x : M₁) (n : ℤ), f (n • x) = n • f x) (x : M₁), f (-x + x) = f 0