elim M1_r'a; intro H. tauto. right. unfold q'_i. rewrite Z_from_plusw. rewrite q_i_eq. rewrite H.
rewrite Zplus_comm. rewrite <- Zdiv_times_plus. rewrite <- Zmult_plus_distr_r. rewrite large_M'_eq. trivial. auto with a. Qed.

(* Specifications: *)
Lemma q'_i_eq_pre : _Z q'_i = (x' / 2 ^ p * (2 ^ (p + w) / M) / 2 ^ w) mod 2 ^ w.
elim q'_i_eq_pre_ch; intro H. unfold q'_i. rewrite Z_from_plusw. rewrite q_i_eq. rewrite M1_h'_i_eq. rewrite p_M. rewrite H.