Proof using.
intros J P.
cofix c.
intros s.
case (classic (J s)).
- intros Js un.
destruct s as [x s].
apply R0; trivial.
case (classic (P (Cons x s))); trivial.
intros Ps.
contradict un.
apply U0.
apply Ps.
- intros Js un.
destruct s as [x s].
apply R_tl.
* case (classic (P (Cons x s))); trivial.
intros Ps.
contradict un.
apply U0.
apply Ps.
* simpl.
apply c.
intros unn.
contradict un.
apply U_next; trivial.
Qed.

(* Specifications: *)
Lemma not_release_until :
forall (J P : infseq T -> Prop) (s : infseq T),
~ release (~_ J) (~_ P) s -> until J P s.