(** Represents the monoid formed by op over E. *)
Definition op_monoid := Group.op_monoid op_group.(**
  Accepts one argument, x, and asserts that
  x has a left inverse.
*)
Definition has_inv_l := Group.has_inv_l op_group.(**
  Accepts one argument, x, and asserts that
  x has a right inverse.
*)
Definition has_inv_r := Group.has_inv_r op_group.(**
  Accepts one argument, x, and asserts that
  x has an inverse.
*)
Definition has_inv := Group.has_inv op_group.

Theorem op_inv_l_r_eq : forall x y : E, op_is_inv_l x y -> forall z : E, op_is_inv_r x z -> y = z.