simpl. omega. apply Zlog_sup_seq. apply Mset_l. apply Zlt_pow_lt. apply Zlog_sup_correct1. case M. unfold in_Mset. simpl.
intros. omega. apply Zle_lt_trans with (Zlog_sup (2 ^ (w - 1))). apply Zlog_sup_seq. case M. unfold in_Mset. simpl. intros.
omega. rewrite Zlog_sup_pow. omega. cut (0 < w). omega. exact lt_0_w. Qed.

(* Specifications: *)
Lemma M''ex : forall M : Mset, in_Z_ (2 ^ w) (2 ^ (w - Zlog_sup M - 1 / M) * M mod 2 ^ w).
intro M. apply xlex. Qed.
Lemma M'mod : forall M : Mset,
2 ^ (Zlog_sup M + w) / M - 2 ^ w =
(2 ^ (Zlog_sup M + w) / M) mod 2 ^ w.
Lemma M''ex : forall M : Mset, in_Z_ (2 ^ w) (2 ^ (w - Zlog_sup M - 1 / M) * M mod 2 ^ w).
intro M. apply xlex. Qed.
Lemma M'mod : forall M : Mset,
2 ^ (Zlog_sup M + w) / M - 2 ^ w =
(2 ^ (Zlog_sup M + w) / M) mod 2 ^ w.