Proof using.
intros x s J P un.
change (P (Cons x s) \/ (J (Cons x s) /\ weak_until J P (tl (Cons x s)))).
destruct un; intuition.
Qed.

(* Specifications: *)
Lemma weak_until_always :
forall (J J' P : infseq T -> Prop) s,
weak_until J P s ->
always J' s ->
weak_until (J' /\_ J) P s.