Section EXPRESSIONS.
Variable cunit: Cminor.program.
Variable hf: helper_functions.
Hypothesis LINK: linkorder cunit prog.
Hypothesis HF: helper_functions_declared cunit hf.

Lemma sel_builtin_correct:
forall optid ef al sp e1 m1 vl t v m2 e1' m1' f k,
Cminor.eval_exprlist ge sp e1 m1 al vl ->
external_call ef ge vl m1 t v m2 ->
env_lessdef e1 e1' -> Mem.extends m1 m1' ->
exists e2' m2',
step tge (State f (sel_builtin optid ef al) k sp e1' m1')
t (State f Sskip k sp e2' m2')
/\ env_lessdef (set_optvar optid v e1) e2'
/\ Mem.extends m2 m2'.