apply Zlt_gt. apply lt_0_Zpow. auto with a. cut (p <= w). omega. auto with a. apply Zle_ge. auto with a. ring. Qed.

(* Specifications: *)
(* <KE EP TOGETHER - r'_i_eq *)
Lemma r'_i_eq : _Z r'_i = (h mod M * 2 ^ w + l) / 2 ^ p * 2 ^ p mod M + (h mod M * 2 ^ w + l mod 2 ^ p mod M) mod 2 ^ p \/
_Z r'_i = (h mod M * 2 ^ w + l) / 2 ^ p * 2 ^ p mod M + M + (h mod M * 2 ^ w + l mod 2 ^ p mod M) mod 2 ^ p.
Lemma r'0_eq_7 :
_Z r'0 = (h mod M * 2 ^ w + l) / 2 ^ p * 2 ^ p mod M + (h mod M * 2 ^ w + l) mod 2 ^ p mod M \/
_Z r'0 = ((h mod M + M) * 2 ^ w + l) / 2 ^ p * 2 ^ p mod M + ((h mod M + M) * 2 ^ w + l) mod 2 ^ p mod M.