(** 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).