Fixpoint zip (s : seq S) (t : seq T) {struct t} :=
  match s, t with
  | x :: s', y :: t' => (x, y) :: zip s' t'
  | _, _ => [::]
  end.Definition unzip1 := map (@fst S T).Definition unzip2 := map (@snd S T).

Lemma zip_rcons s1 s2 z1 z2 : size s1 = size s2 -> zip (rcons s1 z1) (rcons s2 z2) = rcons (zip s1 s2) (z1, z2).