(** Determinism for infinite transition sequences. *)

(* Specifications: *)
Lemma star_final_not_forever_silent:
forall s t s', Star L s t s' ->
Nostep L s' ->
Forever_silent L s -> False.
Lemma star2_final_not_forever_silent:
forall s t1 s1 t2 s2,
Star L s t1 s1 -> Nostep L s1 ->
Star L s t2 s2 -> Forever_silent L s2 ->
False.
Lemma star_final_not_forever_reactive:
forall s t s', Star L s t s' ->
forall T, Nostep L s' -> Forever_reactive L s T -> False.
Lemma star_forever_silent_inv:
forall s t s', Star L s t s' ->
Forever_silent L s ->
t = E0 /\ Forever_silent L s'.
Lemma forever_silent_reactive_exclusive:
forall s T,
Forever_silent L s -> Forever_reactive L s T -> False.
Lemma forever_reactive_inv2:
forall s t1 s1, Star L s t1 s1 ->
forall t2 s2 T1 T2,
Star L s t2 s2 ->
t1 <> E0 -> t2 <> E0 ->
Forever_reactive L s1 T1 ->
Forever_reactive L s2 T2 ->
exists s', exists t, exists T1', exists T2',
t <> E0 /\
Forever_reactive L s' T1' /\
Forever_reactive L s' T2' /\
t1 *** T1 = t *** T1' /\
t2 *** T2 = t *** T2'.
Lemma forever_reactive_determ':
forall s T1 T2,
Forever_reactive L s T1 ->
Forever_reactive L s T2 ->
traceinf_sim' T1 T2.
Lemma forever_reactive_determ:
forall s T1 T2,
Forever_reactive L s T1 ->
Forever_reactive L s T2 ->
traceinf_sim T1 T2.
Lemma star_forever_reactive_inv:
forall s t s', Star L s t s' ->
forall T, Forever_reactive L s T ->
exists T', Forever_reactive L s' T' /\ T = t *** T'.
Lemma forever_silent_reactive_exclusive2:
forall s t s' T,
Star L s t s' -> Forever_silent L s' ->
Forever_reactive L s T ->
False.
Lemma star_final_not_forever_silent:
forall s t s', Star L s t s' ->
Nostep L s' ->
Forever_silent L s -> False.
Lemma star2_final_not_forever_silent:
forall s t1 s1 t2 s2,
Star L s t1 s1 -> Nostep L s1 ->
Star L s t2 s2 -> Forever_silent L s2 ->
False.
Lemma star_final_not_forever_reactive:
forall s t s', Star L s t s' ->
forall T, Nostep L s' -> Forever_reactive L s T -> False.
Lemma star_forever_silent_inv:
forall s t s', Star L s t s' ->
Forever_silent L s ->
t = E0 /\ Forever_silent L s'.
Lemma forever_silent_reactive_exclusive:
forall s T,
Forever_silent L s -> Forever_reactive L s T -> False.
Lemma forever_reactive_inv2:
forall s t1 s1, Star L s t1 s1 ->
forall t2 s2 T1 T2,
Star L s t2 s2 ->
t1 <> E0 -> t2 <> E0 ->
Forever_reactive L s1 T1 ->
Forever_reactive L s2 T2 ->
exists s', exists t, exists T1', exists T2',
t <> E0 /\
Forever_reactive L s' T1' /\
Forever_reactive L s' T2' /\
t1 *** T1 = t *** T1' /\
t2 *** T2 = t *** T2'.
Lemma forever_reactive_determ':
forall s T1 T2,
Forever_reactive L s T1 ->
Forever_reactive L s T2 ->
traceinf_sim' T1 T2.
Lemma forever_reactive_determ:
forall s T1 T2,
Forever_reactive L s T1 ->
Forever_reactive L s T2 ->
traceinf_sim T1 T2.
Lemma star_forever_reactive_inv:
forall s t s', Star L s t s' ->
forall T, Forever_reactive L s T ->
exists T', Forever_reactive L s' T' /\ T = t *** T'.
Lemma forever_silent_reactive_exclusive2:
forall s t s' T,
Star L s t s' -> Forever_silent L s' ->
Forever_reactive L s T ->
False.