apply Zlog_sup_seq. omega. intro H. right. symmetry. trivial. assumption. Qed.

(* Specifications: *)
Lemma lt_0_p : 0 < p \/ M = 1.
elim le_1_p; intro H; omega. Qed.
Lemma le_0_pm1 : 0 <= p - 1 \/ M = 1.
elim lt_0_p; intro H; omega. Qed.
Lemma lt_0_p : 0 < p \/ M = 1.
elim le_1_p; intro H; omega. Qed.
Lemma le_0_pm1 : 0 <= p - 1 \/ M = 1.
elim lt_0_p; intro H; omega. Qed.
Lemma lt_2pm1_M : 2 ^ (p - 1) < M \/ M = 1.
elim (Zle_lt_or_eq 1 M). intro H. rewrite p_M. generalize le_1_M. case M. intro. absurd (2 <= 0); omega.