Definition prog_var_block (rho: environ) (il: list ident) (b: block) : Prop :=
  Exists (fun id => match ge_of rho id with Some b' => b'=b | _ => False end) il.

Lemma init_datalist_hack: forall b sh rho dl phi0 z, (init_data_list2pred dl sh (Vptr b z) rho) phi0 -> forall phi, hackfun phi0 phi -> readable_share sh -> (init_data_list2pred dl sh (Vptr b z) rho) phi.