(** 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_uniq : forall x y z : E, op_is_inv_l x y -> op_is_inv_l x z -> z = y.