intros n H H0.
cut (P M p (fst (foldlz f' (zero_in_Z_, zero_in_Z_) n)) (snd (foldlz f' (zero_in_Z_, zero_in_Z_) n)) (x / 2 ^ w) (x_ 0)).
intro H1. rewrite r'''0_eq with (d_Sir_Si := foldlz f' (zero_in_Z_, zero_in_Z_) n) (l_in_Z_ := x_ 0) (h := x / 2 ^ w). simpl.
replace (x / 1) with ((x * 1 + 0) / 1).
rewrite Zdiv_mult_plus. rewrite Zmult_comm. rewrite <- Z_div_mod_eq. trivial. apply Zlt_gt. exact lt02w. omega. omega. omega.
apply f_equal2 with (f := Zdiv); ring. trivial. fold M. omega. trivial. trivial. assumption. assumption.
apply P_all; assumption. Qed.
End repeat.

(* Specifications: *)
Lemma cex : forall M : Mset, in_Z_ (2 ^ w) (2 ^ Zlog_sup M).
intro M. unfold in_Z_. split. cut (0 < 2 ^ Zlog_sup M). omega. apply lt_0_Zpow. apply Zle_trans with (Zlog_sup 1).