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

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