(** The proof that transitions preserve semantics (up to the values of temporary registers) follows. *)

(* Specifications: *)
Lemma transition_preserves_semantics:
forall st st' e,
transition st st' -> state_wf st ->
env_equiv (statemove st' e) (statemove st e).
Lemma transitions_preserve_semantics:
forall st st' e,
transitions st st' -> state_wf st ->
env_equiv (statemove st' e) (statemove st e).
Lemma state_wf_start:
forall mu,
move_no_temp mu ->
is_mill mu ->
state_wf (State mu nil nil).
Lemma transition_preserves_semantics:
forall st st' e,
transition st st' -> state_wf st ->
env_equiv (statemove st' e) (statemove st e).
Lemma transitions_preserve_semantics:
forall st st' e,
transitions st st' -> state_wf st ->
env_equiv (statemove st' e) (statemove st e).
Lemma state_wf_start:
forall mu,
move_no_temp mu ->
is_mill mu ->
state_wf (State mu nil nil).