Proof
fun x
=> ex_ind
(fun y (H : op_is_inv x y)
=> ex_intro
(fun y => op_is_inv x y /\ forall z, op_is_inv x z -> y = z)
y
(conj H (fun z H0 => eq_sym (op_inv_uniq x y z H H0))))
(op_inv_ex x).

(* Specifications: *)
(** Proves that the identity element is its own left inverse. *)
Theorem op_inv_0_l
:  op_is_inv_l 0 0.