CoFixpoint zip (sA: infseq A) (sB: infseq B) : infseq (A*B) := 
  match sA, sB with
    | Cons a sA0, Cons b sB0 => Cons (a, b) (zip sA0 sB0)
  end.

Lemma zip_Cons: forall (a:A) (b:B) sA sB, zip (Cons a sA) (Cons b sB) = Cons (a, b) (zip sA sB).