(** * Existence of behaviors *)
(** We now show that any program admits at least one behavior. The proof requires classical logic: the axiom of excluded middle and an axiom of description. *)
(** The most difficult part of the proof is to show the existence of an infinite trace in the case of reactive divergence. *)
Section TRACEINF_REACTS.
Variable s0: state L.
Hypothesis reacts:
forall s1 t1, Star L s0 t1 s1 ->
exists s2, exists t2, Star L s1 t2 s2 /\ t2 <> E0.

(* Specifications: *)
Lemma reacts':
forall s1 t1, Star L s0 t1 s1 ->
{ s2 : state L & { t2 : trace | Star L s1 t2 s2 /\ t2 <> E0 } }.
Lemma reacts':
forall s1 t1, Star L s0 t1 s1 ->
{ s2 : state L & { t2 : trace | Star L s1 t2 s2 /\ t2 <> E0 } }.