(* KEEP TOGETHER> *)
omega. rewrite ltw_false. rewrite Z_from_minusw. fold M. rewrite H.
replace (x mod M + M - M) with (x mod M). apply modred. apply Zmod_le_0_z. omega. apply Zlt_trans with M.
apply Zmod_lt_z_m. omega. auto with a. ring. fold M. rewrite H. cut (0 <= x mod M). omega.
apply Zmod_le_0_z. omega. Qed.
End parm_sec.
Definition in_Mset (M : Z) := 1 <= M <= 2 ^ (w - 1).
Definition Mset := sig in_Mset.
Coercion Z_from_Mset (M : Mset) := proj1_sig (P := in_Mset) M.

(* Specifications: *)
Lemma Mset_l : forall M : Mset, 1 <= M.
intro M. unfold Z_from_Mset. case M. unfold in_Mset. simpl. tauto. Qed.
Lemma Mset_r : forall M : Mset, M <= 2 ^ (w - 1).
intro M. unfold Z_from_Mset. case M. unfold in_Mset. simpl. tauto. Qed.
Lemma logsuplew : forall (M : Mset), Zlog_sup M <= w.
intro M. replace w with (Zlog_sup (2 ^ w)). apply Zlog_sup_seq. apply Zlt_le_weak. case M. unfold in_Mset.