(** Yet another alternative definition of [forever]. *)
CoInductive forever_plus : state -> traceinf -> Prop :=
| forever_plus_intro: forall s1 t s2 T1 T2,
plus s1 t s2 ->
forever_plus s2 T2 ->
T1 = t *** T2 ->
forever_plus s1 T1.

(* Specifications: *)
Lemma forever_plus_inv:
forall s T,
forever_plus s T ->
exists s', exists t, exists T',
step s t s' /\ forever_plus s' T' /\ T = t *** T'.
Lemma forever_plus_forever:
forall s T, forever_plus s T -> forever s T.