(* Lemma Zmax_of_nat: forall n, Z_of_nat (nat_of_Z n) = Z.max n 0. *)

Lemma init_data_list_lem:
forall (ge: genv) m0 (v: globvar type) m1 b m2 m3 m4  phi0 rho,
alloc m0 0 (init_data_list_size (gvar_init v)) = (m1,b) ->
store_zeros m1 b 0 (init_data_list_size (gvar_init v)) = Some m2 ->
Genv.store_init_data_list ge m2 b 0 (gvar_init v) = Some m3 ->
drop_perm m3 b 0 (init_data_list_size (gvar_init v))
(Genv.perm_globvar v) = Some m4 ->
forall
(Hg: noghost phi0) (SANITY: init_data_list_size (gvar_init v) < Ptrofs.modulus)
(VOL:  gvar_volatile v = false)
(AL: initializers_aligned 0 (gvar_init v) = true)
(RHO: ge_of rho = filter_genv ge),
init_data_list2pred (gvar_init v) (readonly2share (gvar_readonly v)) (Vptr b Ptrofs.zero)
rho (beyond_block b (inflate_initial_mem m4 phi0)).