{G₀ : Type u} →
  (mul : G₀ → G₀ → G₀) →
    (∀ (a b c : G₀), a * b * c = a * (b * c)) →
      (one : G₀) →
        (∀ (a : G₀), 1 * a = a) →
          (∀ (a : G₀), a * 1 = a) →
            (npow : ℕ → G₀ → G₀) →
              (∀ (x : G₀), npow 0 x = 1) →
                (∀ (n : ℕ) (x : G₀), npow (n + 1) x = npow n x * x) → (G₀ → G₀) → G₀ → G₀ → G₀