Section Lemmas.
Variable R : INTEGRAL_DOMAIN.
exact (idomain_prf R).
Qed.
intros x y H'; try assumption.
generalize (INTEGRAL_DOMAIN_prop_rev (x:=x) (y:=y)).
apply NNPP; tauto.
Qed.
unfold not in |- *.
intros x y H' H'0; try assumption.
absurd (Equal (ring_mult x y) (monoid_unit R)); auto with algebra.
apply Trans with (ring_mult (monoid_unit R) y); auto with algebra.
Qed.
unfold not in |- *.
intros x y H' H'0; try assumption.
absurd (Equal (ring_mult x y) (monoid_unit R)); auto with algebra.
apply Trans with (ring_mult x (monoid_unit R)); auto with algebra.
Qed.
intros x y H' H'0; try assumption.
intuition.
elim (INTEGRAL_DOMAIN_prop (x:=x) (y:=y)); auto with algebra.
intros H'1; try assumption.
absurd (Equal y (monoid_unit R)); auto with algebra.
Qed.

Lemma INTEGRAL_DOMAIN_mult_n0_l :
forall x y : R,
Equal (ring_mult x y) (monoid_unit R) ->
~ Equal x (monoid_unit R) -> Equal y (monoid_unit R).