Proof using.
intros f P Q PQ. cofix cf.
intros (x, s) a. case (always_Cons a); intros a1 a2. constructor.
- apply PQ. assumption.
- rewrite map_Cons; simpl. apply cf; assumption.
Qed.

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