intros q0 H0. elim (Zlog_sup_correct2 (Zpos q0)). omega. omega. intros q0 H0. absurd (1 <= Zneg q0).
apply Zlt_not_le. unfold Zlt. trivial. assumption. omega. assumption. Qed.
Local Hint Resolve lt_2pm1_M : a.

(* Specifications: *)
Lemma div_M_1 : 2 ^ p / M = 1.
elim (Zle_lt_or_eq 1 M). intro H. replace (2 ^ p) with (1 * M + (2 ^ p - M)). apply Zdiv_mult_plus. omega.