(** Multiply all elements in list with a *)

Definition mapmult (a : Z) (l : Zlist) := map Z Z (fun x : Z => (a * x)%Z) l.

(* Specifications: *)
Lemma mapmult_image : forall (a : Z) (l : Zlist) (x : Z), inlist Z x l -> inlist Z (a * x)%Z (mapmult a l).
Lemma mapmult_orig : forall (a : Z) (l : Zlist) (y : Z), inlist Z y (mapmult a l) -> exists x : Z, inlist Z x l /\ y = (a * x)%Z.
Lemma abs_inj_list : forall l : natlist, map _ _ Zabs_nat (map _ _ Z_of_nat l) = l.
Lemma inj_abs_pos_list : forall l : Zlist, allPos l -> map _ _ Z_of_nat (map _ _ Zabs_nat l) = l.
Lemma inlist_inj_abs_pos_list : forall (q : nat) (l : Zlist), allPos l -> inlist nat q (map Z nat Zabs_nat l) -> inlist Z (Z_of_nat q) l.