Proof using.
cofix cf.
intros (x1, s1) (x2, s2) (x3, s3) e12 e23.
case (exteq_inversion _ _ _ _ e12); clear e12; intros e12 ex12.
case (exteq_inversion _ _ _ _ e23); clear e23; intros e23 ex23.
rewrite e12; rewrite e23. constructor. apply cf with s2; assumption.
Qed.
End sec_exteq.
Arguments exteq [T] _ _.
Arguments exteq_inversion [T x1 s1 x2 s2] _.
Arguments exteq_refl [T] _.
Arguments exteq_sym [T] _ _ _.
Arguments exteq_trans [T] _ _ _ _ _.
(* --------------------------------------------------------------------------- *)
(* Extensional equality and temporal logic *)
Section sec_exteq_congruence.
Variable T: Type.
(* All useful predicates are extensional in the following sense *)
Definition extensional (P: infseq T -> Prop) :=
forall s1 s2, exteq s1 s2 -> P s1 -> P s2.

(* Specifications: *)
Lemma extensional_True_tl :
extensional True_tl.