Remark eval_same_expr:
forall a1 a2 le v1 v2,
same_expr_pure a1 a2 = true ->
eval_expr ge sp e m le a1 v1 ->
eval_expr ge sp e m le a2 v2 ->
a1 = a2 /\ v1 = v2.
Remark int_add_sub_eq:
forall x y z, Int.add x y = z -> Int.sub z x = y.

Theorem eval_shl: binary_constructor_sound shl Val.shl.