CoFixpoint build_traceinf' (s1: state L) (t1: trace) (ST: Star L s0 t1 s1) : traceinf' :=
  match reacts' ST with
  | existT s2 (exist t2 (conj A B)) =>
      Econsinf' t2
                (build_traceinf' (star_trans ST A (eq_refl _)))
                B
  end.

Lemma diverges_forever_silent: forall s0, (forall s1 t1, Star L s0 t1 s1 -> exists s2, Step L s1 E0 s2) -> Forever_silent L s0.