{R : Type u_2} →
  [inst : Semiring R] →
    (toFun : R → Rᵐᵒᵖ) →
      (invFun : Rᵐᵒᵖ → R) →
        autoParam (Function.LeftInverse invFun toFun) Equiv.left_inv._autoParam →
          autoParam (Function.RightInverse invFun toFun) Equiv.right_inv._autoParam →
            (∀ (x y : R), toFun (x * y) = toFun x * toFun y) →
              (∀ (x y : R), toFun (x + y) = toFun x + toFun y) →
                (∀ (x : R), MulOpposite.unop (toFun (MulOpposite.unop (toFun x))) = x) → RingInvo R