(** ** Semantic preservation for the translation of expressions *)
(*LENB: translation of sp. Contrary to selection phase, the use of eval_operation (and the existing lemmas about eval_operation_inject) here suggests we should require sp=Vptr b Int.zero and sp' = Vptr b' Int.zero instead of sp=Vptr b i and sp' = Vptr b' i for some arbitrary i. Let's see whether this works...*)
Definition sp_preserved (j:meminj) (sp sp':val) :=
exists b b', sp = Vptr b Int.zero /\ sp' = Vptr b' Int.zero /\
j b = Some(b',0).

Lemma shift_stack_addressing_zero: forall addr,
shift_stack_addressing (Int.repr 0) addr = addr.