(** Theorems on arithmetic operations. *)

Theorem shrx_shr:
forall x y z,
shrx x y = Some z ->
exists p, exists q,
x = Vint p /\ y = Vint q /\
z = shr (if Int.lt p Int.zero then add x (Vint (Int.sub (Int.shl Int.one q) Int.one)) else x) (Vint q).