intros a b c d H'; generalize b d; elim H'.
intros a0 b0 nZa0 nZb0 H'2 b1 d0 H'3 H'4; auto.
cut (~ zeroP (A:=A) A0 eqA (n:=n) d0); [ intros nZd0 | auto ].
apply divTerm_def with (nZb := nZd0); auto.
red in |- *; intros nz1; absurd (zeroP (A:=A) A0 eqA (n:=n) a0); auto.
apply zeroP_comp_eqTerm with (1 := cs) (a := b1); auto.
apply (eqTerm_sym _ _ _ _ _ _ _ _ _ cs n); auto.
apply (eqTerm_trans _ _ _ _ _ _ _ _ _ cs n) with (y := a0); auto.
apply (eqTerm_sym _ _ _ _ _ _ _ _ _ cs n); auto.
apply
(eqTerm_trans _ _ _ _ _ _ _ _ _ cs n)
with (y := multTerm (A:=A) multA (n:=n) (divTerm a0 nZb0) b0);
auto.
red in |- *; intros nz1; absurd (zeroP (A:=A) A0 eqA (n:=n) b0); auto.
apply zeroP_comp_eqTerm with (1 := cs) (a := d0); auto.
apply (eqTerm_sym _ _ _ _ _ _ _ _ _ cs n); auto.
Qed.

(* Specifications: *)
Theorem divP_multTerm_l :
forall a b c : Term A n,
~ zeroP (A:=A) A0 eqA (n:=n) a ->
~ zeroP (A:=A) A0 eqA (n:=n) b ->
eqTerm (A:=A) eqA (n:=n) (multTerm (A:=A) multA (n:=n) a b) c -> divP c a.