(** 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_0_uniq : unique (fun x => op_is_inv x 0) 0.