proposition: Theorem canonical_Dmult : forall (a : Term A n) (nZa : ~ zeroP (A:=A) A0 eqA (n:=n) a) (p q : list (Term A n)), canonical A0 eqA ltM p -> canonical A0 eqA ltM q -> canonical A0 eqA ltM (Dmult a nZa p q).
proof: Proof. Proof using os minusA invA cs A1. intros a nZa p; elim p; simpl in |- *; auto. intros a0 l H' q H'0 H'1. cut (canonical A0 eqA ltM l); [ idtac | apply canonical_imp_canonical with (a := a0); auto ]. cut (~ zeroP (A:=A) A0 eqA (n:=n) a0); auto. apply canonical_nzeroP with (ltM := ltM) (p := l); auto. Qed.