Set Primitive Projections.
CoInductive Stream : Type := Cons { tl : Stream }.
Fixpoint Str_nth_tl (n:nat) (s:Stream) : Stream :=
match n with
| O => s
| S m => Str_nth_tl m (tl s)
end.
CoInductive EqSt (s1 s2: Stream) : Prop := eqst {
eqst_tl : EqSt (tl s1) (tl s2);
}.
CoFixpoint map (s:Stream) : Stream := Cons (map (tl s)).

Lemma Str_nth_tl_map : forall n s, EqSt (Str_nth_tl n (map s)) (map (Str_nth_tl n s)).