Proof Monoid.op_inv_0_uniq op_monoid.
(** Represents strongly-specified negation. *)
Definition op_neg_strong
:  forall x : E, { y | op_is_inv x y }
:= fun x => Monoid.op_neg_strong op_monoid x (op_inv_ex x).
(** Represents negation. *)
Definition op_neg
:  E -> E
:= fun x => Monoid.op_neg op_monoid x (op_inv_ex x).
Notation "{-}" := (op_neg) : group_scope.
Notation "- x" := (op_neg x) : group_scope.

(** Asserts that the negation returns the inverse of its argument *)
Theorem op_neg_def
:  forall x : E, op_is_inv x (- x).