Proof using.
intros f J P K Q JK PQ. cofix cf.
intros (x, s) un. case (weak_until_Cons un); clear un.
- intro Pxs; constructor 1. apply PQ. assumption.
- intros (Jxs, un). rewrite map_Cons. constructor 2.
* rewrite <- map_Cons. auto.
* simpl. auto.
Qed.

(* Specifications: *)
Lemma weak_until_map_conv :
forall (f: A->B) (J P: infseq A->Prop) (K Q: infseq B->Prop),
(forall s, K (map f s) -> J s) ->
(forall s, Q (map f s) -> P s) ->
forall (s: infseq A),
weak_until K Q (map f s) -> weak_until J P s.