Proof using.
intros f Q extQ s sB al ev. genclear al; genclear s.
induction ev as [(b, sB) QbsB | b sB ev induc_hyp].
- intros (a, sA) al.
constructor 1. apply extQ with (Cons b sB); try assumption.
apply exteq_zip_map. apply al.
- intros (a, sA). repeat rewrite map_Cons. repeat rewrite zip_Cons.
intro al. case (always_Cons al); simpl. clear al; intros e al.
constructor 2. apply induc_hyp. exact al.
Qed.

(* Specifications: *)
Lemma eventually_map_conv_ext :
forall (f: A->B) (P: infseq A->Prop) (Q: infseq B->Prop) (J : infseq A -> Prop),
extensional P -> extensional Q -> extensional J ->
(forall x s, J (Cons x s) -> J s) ->
(forall s, J s -> Q (map f s) -> eventually P s) ->
forall s, J s -> eventually Q (map f s) -> eventually P s.