Proof using.
intros s P J ev. induction ev as [s Ps | x s evPs induc_hyp].
- intro un. constructor 1. split; assumption.
- intro unxs. case (weak_until_Cons _ _ _ _ unxs).
* intro Pxs. constructor 1; split; assumption.
* intros (_, uns). constructor 2. apply induc_hyp. exact uns.
Qed.

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