(** 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.