(** Compilation function for parallel moves. *)
Function parmove_aux (st: state) {measure measure st} : moves :=
if final_state st
then match st with State _ _ tau => tau end
else parmove_aux (parmove_step st).

(* Specifications: *)
Lemma parmove_aux_transitions:
forall st,
dtransitions st (State nil nil (parmove_aux st)).
Lemma parmove_aux_transitions:
forall st,
dtransitions st (State nil nil (parmove_aux st)).