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_shr: binary_constructor_sound shr Val.shr.