Proof
fun x
=> let H
:  (x # 0) + (x # 0) = 0 + (x # 0)
:= eq_refl (x # 0)
|| x # a = x # 0         @a by sum_id_r 0
|| a = x # 0             @a by <- prod_sum_distrib_l x 0 0
|| (x # 0) + (x # 0) = a @a by sum_id_l (x # 0)
in sum_cancel_r (x # 0) 0 (x # 0) H.

(* Specifications: *)
(** Proves that 0 does not have a left multiplicative inverse. *)
Theorem prod_0_inv_l
:  ~ prod_has_inv_l 0.