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

(* Specifications: *)
Lemma weak_until_monotonic :
forall (P Q J K: infseq T -> Prop),
(forall s, P s -> Q s) -> (forall s, J s -> K s) ->
forall s, weak_until J P s -> weak_until K Q s.