Proof using.
intros P eP. cofix cf.
intros (x1, s1) (x2, s2) e al1. case (always_Cons al1); intros Px1s1 als1. constructor.
- eapply eP; eassumption.
- simpl. apply cf with s1; try assumption. case (exteq_inversion e); trivial.
Qed.

(* Specifications: *)
Lemma extensional_weak_until :
forall (P Q: infseq T -> Prop),
extensional P -> extensional Q -> extensional (weak_until P Q).