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.