Fixpoint int_of_one_bits' (l: list Int.int) : int :=
match l with
| nil => zero
| a :: b => add (shl' one a) (int_of_one_bits' b)
end.

(* Specifications: *)
Theorem one_bits'_decomp:
forall x, x = int_of_one_bits' (one_bits' x).
Lemma is_power2'_rng:
forall n logn,
is_power2' n = Some logn ->
0 <= Int.unsigned logn < zwordsize.
Theorem is_power2'_range:
forall n logn,
is_power2' n = Some logn -> Int.ltu logn iwordsize' = true.
Lemma is_power2'_correct:
forall n logn,
is_power2' n = Some logn ->
unsigned n = two_p (Int.unsigned logn).
Theorem mul_pow2':
forall x n logn,
is_power2' n = Some logn ->
mul x n = shl' x logn.
Theorem divu_pow2':
forall x n logn,
is_power2' n = Some logn ->
divu x n = shru' x logn.
Theorem one_bits'_decomp:
forall x, x = int_of_one_bits' (one_bits' x).
Lemma is_power2'_rng:
forall n logn,
is_power2' n = Some logn ->
0 <= Int.unsigned logn < zwordsize.
Theorem is_power2'_range:
forall n logn,
is_power2' n = Some logn -> Int.ltu logn iwordsize' = true.
Lemma is_power2'_correct:
forall n logn,
is_power2' n = Some logn ->
unsigned n = two_p (Int.unsigned logn).
Theorem mul_pow2':
forall x n logn,
is_power2' n = Some logn ->
mul x n = shl' x logn.
Theorem divu_pow2':
forall x n logn,
is_power2' n = Some logn ->
divu x n = shru' x logn.