Module ESD2 := FSetDecide.Decide(EqSet2).
Remark val_lessdef_normalize:
forall v v' ty,
Val.has_type v ty -> Val.lessdef v v' ->
Val.lessdef v (Val.load_result (chunk_of_type ty) v').

Lemma add_equations_builtin_eval:
forall ef env args args' e1 e2 m1 m1' rs ls (ge: RTL.genv) sp vargs t vres m2,
wt_regset env rs ->
match ef with
| EF_debug _ _ _ => add_equations_debug_args env args args' e1
| _              => add_equations_builtin_args env args args' e1
end = Some e2 ->
Mem.extends m1 m1' ->
satisf rs ls e2 ->
eval_builtin_args ge (fun r => rs # r) sp m1 args vargs ->
external_call ef ge vargs m1 t vres m2 ->
satisf rs ls e1 /\
exists vargs' vres' m2',
eval_builtin_args ge ls sp m1' args' vargs'
/\ external_call ef ge vargs' m1' t vres' m2'
/\ Val.lessdef vres vres'
/\ Mem.extends m2 m2'.