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_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_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'.