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 alloc_Gfun_inflate: forall n rho i f fs gv vl gev m0 m G0 G, Genv.alloc_global gev m0 (i, Gfun f) = Some m -> (forall phi : rmap, hackfun (inflate_initial_mem m0 (initial_core gev (G0 ++ (i, fs) :: G) n)) phi -> (globvars2pred gv vl rho) phi) -> Genv.find_symbol gev i = Some (nextblock m0) -> ~ In i (map fst vl) -> forall phi : rmap, hackfun (inflate_initial_mem m (initial_core gev (G0 ++ (i, fs) :: G) n)) phi -> (globvars2pred gv vl rho) phi.