{G₀ : Type u_2} →
  [toCommMonoidWithZero : CommMonoidWithZero G₀] →
    [toInv : Inv G₀] →
      [toDiv : Div G₀] →
        autoParam (∀ (a b : G₀), a / b = a * b⁻¹) DivInvMonoid.div_eq_mul_inv._autoParam →
          (zpow : ℤ → G₀ → G₀) →
            autoParam (∀ (a : G₀), zpow 0 a = 1) DivInvMonoid.zpow_zero'._autoParam →
              autoParam (∀ (n : ℕ) (a : G₀), zpow (↑n.succ) a = zpow (↑n) a * a) DivInvMonoid.zpow_succ'._autoParam →
                autoParam (∀ (n : ℕ) (a : G₀), zpow (Int.negSucc n) a = (zpow (↑n.succ) a)⁻¹)
                    DivInvMonoid.zpow_neg'._autoParam →
                  [toNontrivial : Nontrivial G₀] → 0⁻¹ = 0 → (∀ (a : G₀), a ≠ 0 → a * a⁻¹ = 1) → CommGroupWithZero G₀