Proof using.
intros J P s wun.
case (classic (until (J /\_ ~_ P) (~_ J /\_ ~_ P) s)); trivial.
intros un.
contradict wun.
revert s un.
cofix c.
intros s.
case (classic (P s)).
- intros Ps un.
apply W0.
assumption.
- intros Ps.
case (classic (J s)); destruct s as [x s].
* intros Js un.
apply W_tl; trivial.
simpl.
apply c.
intros unn.
contradict un.
apply U_next; trivial.
split; trivial.
* intros Js un.
contradict un.
apply U0.
split; trivial.
Qed.

(* Specifications: *)
Lemma not_eventually_not_always :
forall (P : infseq T -> Prop) (s : infseq T),
~ eventually (~_ P) s -> always P s.