Module Wordsize_8.
Definition wordsize := 8%nat.
Remark wordsize_not_zero: wordsize <> 0%nat.
Remark int_ltu_2_inv:
forall y z,
Int.ltu y iwordsize' = true ->
Int.ltu z iwordsize' = true ->
Int.unsigned (Int.add y z) <= Int.unsigned iwordsize' ->
let y' := repr (Int.unsigned y) in
let z' := repr (Int.unsigned z) in
Int.unsigned y = unsigned y'
/\ Int.unsigned z = unsigned z'
/\ ltu y' iwordsize = true
/\ ltu z' iwordsize = true
/\ Int.unsigned (Int.add y z) = unsigned (add y' z')
/\ add y' z' = repr (Int.unsigned (Int.add y z)).

Lemma shr'_sign_ext:
forall n m x, 0 < n -> n + Int.unsigned m < zwordsize ->
shr' (sign_ext (n + Int.unsigned m) x) m = sign_ext n (shr' x m).