Proof
fun x y H (H0 : y = 0)
=> distinct_0_1
(proj1 H
|| a # x = 1 @a by <- H0
|| a = 1     @a by <- prod_0_l x).
(** Represents -1 and proves that it exists. *)
Definition E_n1_strong
:  { x : E | sum_is_inv 1 x }
:= constructive_definite_description (sum_is_inv 1) (sum_inv_uniq_ex 1).
(** Represents -1. *)
Definition E_n1 : E := proj1_sig E_n1_strong.
(** Defines a symbolic representation for -1  Note: here we represent the inverse of 1 rather than the negation of 1. Letter we prove that the negation equals the inverse.  Note: brackets are needed to ensure Coq parses the symbol as a single token instead of a prefixed function call. *)
Notation "{-1}" := E_n1 : ring_scope.

(* Specifications: *)
(** Asserts that -1 is the additive inverse of 1. *)
Theorem E_n1_def
:  sum_is_inv 1 {-1}.