∀ {M₁ : Type u_2} {M₂ : Type u_1} [inst : Mul M₂] [inst_1 : One M₂] [inst_2 : Pow M₂ ℕ] [inst_3 : Inv M₂]
  [inst_4 : Div M₂] [inst_5 : Pow M₂ ℤ] [inst_6 : Group M₁] (f : M₁ → M₂) (hf : Function.Surjective f) (one : f 1 = 1)
  (mul : ∀ (x y : M₁), f (x * y) = f x * f y) (inv : ∀ (x : M₁), f x⁻¹ = (f x)⁻¹)
  (div : ∀ (x y : M₁), f (x / y) = f x / f y) (npow : ∀ (x : M₁) (n : ℕ), f (x ^ n) = f x ^ n)
  (zpow : ∀ (x : M₁) (n : ℤ), f (x ^ n) = f x ^ n) (x : M₁), (f x)⁻¹ * f x = 1