Definition zip f1 f2 : option (finMap K V) := 
  match f1, f2 with 
    FinMap s1 pf1, FinMap s2 pf2 => 
      match zip' s1 s2 as z return zip' s1 s2 = z -> _ with 
        Some s => fun pf => Some (FinMap (zip_sorted' pf1 pf))
      | None => fun pf => None
     end (erefl _) 
  end.

(* Specifications: *)
Lemma zip_unit_sorted' s : sorted ord (map key s) -> sorted ord (map key (zip_unit' s)).