apply Zmult_le_compat. auto with a. auto with a. cut (v < 2 ^ p). omega. auto with a. omega. auto with a.
auto with a. cut (u < 2 ^ w). omega. auto with a. rewrite Zmult_minus_distr_r. rewrite <- Zpower_exp.
omega. auto with a. apply Zle_ge. auto with a. apply Zle_ge. auto with a. Qed.

(* Specifications: *)
Lemma le_x_xmax : x <= 2 ^ (p + w) - 1.
cut (x < 2 ^ (p + w)). omega. exact lt_x_xmax. Qed.