(** Multiply all elements except first occurance of x *)
Definition zmultDrop (x : Z) (l : Zlist) := zproduct (zdrop x l).

(* Specifications: *)
Lemma zmultdrop_cons_eq :
forall (q : Z) (l : Zlist), zmultDrop q (Cons Z q l) = zproduct l.
Lemma zmultdrop_cons_neq :
forall (p q : Z) (l : Zlist),
p <> q -> zmultDrop p (Cons Z q l) = (q * zmultDrop p l)%Z.
Lemma zmultdrop_mult :
forall (qlist : Zlist) (q : Z),
inlist Z q qlist -> (q * zmultDrop q qlist)%Z = zproduct qlist.
Lemma multdropzmultdrop :
forall (q : nat) (qlist : natlist),
Z_of_nat (multDrop q qlist) =
zmultDrop (Z_of_nat q) (map nat Z Z_of_nat qlist).