intros. pattern (map f (Cons x s)). rewrite <- recons. simpl. reflexivity.
Qed.
End sec_map.
Arguments map [A B] _ _.
Arguments map_Cons [A B] _ _ _.
(* --------------------------------------------------------------------------- *)
(* Zipping two infseqs: useful for map theory *)
Section sec_zip.
Variable A B: Type.
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.

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