Definition thread_step_plus U c m c' m' :=
    exists n, thread_stepN (S n) U c m c' m'.Definition thread_step_star U c m c' m' :=
    exists n, thread_stepN n U c m c' m'.

(* Specifications: *)
Lemma thread_step_plus_star : forall U c1 c2 m1 m2, thread_step_plus U c1 m1 c2 m2 -> thread_step_star U c1 m1 c2 m2.
Lemma thread_step_plus_trans : forall U c1 c2 c3 m1 m2 m3, thread_step_plus U c1 m1 c2 m2 -> thread_step_plus U c2 m2 c3 m3 -> thread_step_plus U c1 m1 c3 m3.
Lemma thread_step_star_plus_trans : forall U c1 c2 c3 m1 m2 m3, thread_step_star U c1 m1 c2 m2 -> thread_step_plus U c2 m2 c3 m3 -> thread_step_plus U c1 m1 c3 m3.
Lemma thread_step_plus_star_trans: forall U c1 c2 c3 m1 m2 m3, thread_step_plus U c1 m1 c2 m2 -> thread_step_star U c2 m2 c3 m3 -> thread_step_plus U c1 m1 c3 m3.
Lemma thread_step_star_trans: forall U c1 c2 c3 m1 m2 m3, thread_step_star U c1 m1 c2 m2 -> thread_step_star U c2 m2 c3 m3 -> thread_step_star U c1 m1 c3 m3.
Lemma thread_step_plus_one: forall U c m c' m', thread_step Sem ge U c m c' m' -> thread_step_plus U c m c' m'.
Lemma thread_step_plus_two: forall U c m c' m' c'' m'', thread_step Sem ge U c m c' m' -> thread_step Sem ge U c' m' c'' m'' -> thread_step_plus U c m c'' m''.
Lemma thread_step_star_zero: forall U c m, thread_step_star U c m c m.
Lemma thread_step_star_one: forall U c m c' m', thread_step Sem ge U c m c' m' -> thread_step_star U c m c' m'.
Lemma thread_step_plus_split: forall U c m c' m', thread_step_plus U c m c' m' -> exists c'', exists m'', thread_step Sem ge U c m c'' m'' /\ thread_step_star U c'' m'' c' m'.