(** Shifts and rotates *)
Definition shlimm (x: nval) (n: int) :=
match x with
| Nothing => Nothing
| I m => I (Int.shru m n)
| All => I (Int.shru Int.mone n)
end.

Lemma shlimm_sound:
forall v w x n,
vagree v w (shlimm x n) ->
vagree (Val.shl v (Vint n)) (Val.shl w (Vint n)) x.