(** Size of integers, in bits. *)
Definition Zsize (x: Z) : Z :=
match x with
| Zpos p => Zpos (Pos.size p)
| _ => 0
end.
Definition size (x: int) : Z := Zsize (unsigned x).
Remark Zsize_pos: forall x, 0 <= Zsize x.
Remark Zsize_pos': forall x, 0 < x -> 0 < Zsize x.

Theorem bits_size_4:
forall x n,
0 <= n ->
testbit x (Z.pred n) = true ->
(forall i, n <= i < zwordsize -> testbit x i = false) ->
size x = n.