(**
  Accepts two group elements, x and y, and
  asserts that y is x's inverse.
*)
Definition op_is_inv := Monoid.op_is_inv op_monoid.(**
  Accepts one argument, x, and asserts that
  x has a left inverse.
*)
Definition has_inv_l := Monoid.has_inv_l op_monoid.(**
  Accepts one argument, x, and asserts that
  x has a right inverse.
*)
Definition has_inv_r := Monoid.has_inv_r op_monoid.(**
  Accepts one argument, x, and asserts that
  x has an inverse.
*)
Definition has_inv := Monoid.has_inv op_monoid.

Theorem op_inv_uniq_ex : forall x : E, exists! y : E, op_is_inv x y.