Hint Extern 3 (_ <= Int.signed (Int.sign_ext _ _) <= _) =>
(apply sign_ext_range2; [computable | reflexivity | reflexivity]).
Hint Extern 3 (_ <= Int.unsigned (Int.zero_ext _ _) <= _) =>
(apply zero_ext_range2; [computable | reflexivity | reflexivity]).
Hint Rewrite sign_ext_inrange using assumption : norm.
Hint Rewrite zero_ext_inrange using assumption : norm.
Definition repable_signed (z: Z) :=
Int.min_signed <= z <= Int.max_signed.
Definition repable_signed_dec (z: Z) : {repable_signed z}+{~repable_signed z}.

(* Specifications: *)
Lemma repable_signed_mult1:
forall i j, j<>0 ->  (i <= Int.max_signed \/ j <> -1) ->
repable_signed (i*j) -> repable_signed i.
Lemma force_signed_int_e:
forall i, force_signed_int (Vint i) = Int.signed i.
Lemma map_Vubyte_injective: forall l m, map Vubyte l = map Vubyte m -> l=m.
Lemma Vbyte_injective a b (H: Vbyte a = Vbyte b): a=b.
Lemma Znth_map_Vbyte: forall (i : Z) (l : list byte),
0 <= i < Zlength l -> Znth i (map Vbyte l)  = Vbyte (Znth i l).