(* Now lemmas for interaction of zip with the other primitives *)

(* Specifications: *)
Lemma zip_supp' s1 s2 s : zip' s1 s2 = Some s -> map key s = map key s1.
Lemma zip_supp f1 f2 f :
zip f1 f2 = Some f -> supp f =i supp f1.
Lemma zip_filter' s1 s2 s x :
zip' s1 s2 = Some s ->
zip' (filter (predCk V x) s1) (filter (predCk V x) s2) =
Some (filter (predCk V x) s).
Lemma zip_rem f1 f2 f x :
zip f1 f2 = Some f -> zip (rem x f1) (rem x f2) = Some (rem x f).
Lemma zip_fnd f1 f2 f x (v : V) :
zip f1 f2 = Some f -> fnd x f = Some v ->
exists v1, exists v2,
[/\ zip_f v1 v2 = Some v, fnd x f1 = Some v1 & fnd x f2 = Some v2].