Proof using.
intros P eP s1 s2 e ev1. genclear e; genclear s2.
induction ev1 as [s1 ev1 | x1 s1 ev1 induc_hyp].
- intros s2 e. constructor 1. apply eP with s1; assumption.
- intros (x2, s2) e. constructor 2. apply induc_hyp.
case (exteq_inversion e). trivial.
Qed.

Lemma extensional_inf_often :
forall (P: infseq T -> Prop),
extensional P -> extensional (inf_often P).