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