Definition freeable_blocks: list (block * BinInt.Z * BinInt.Z) -> mpred :=
  fold_right (fun (bb: block*BinInt.Z * BinInt.Z) a => 
                        match bb with (b,lo,hi) => 
                                          sepcon (VALspec_range (hi-lo) Share.top (b,lo)) a
                        end)
                    emp.

Lemma alloc_juicy_variables_lem2: forall jm f (ge: genv) ve te jm' (F: pred rmap) (HGG: genv_cenv ge = cenv_cs) (COMPLETE: Forall (fun it => complete_type cenv_cs (snd it) = true) (fn_vars f)) (Hsize: Forall (fun var => @sizeof ge (snd var) <= Ptrofs.max_unsigned) (fn_vars f)), list_norepet (map fst (fn_vars f)) -> alloc_juicy_variables ge empty_env jm (fn_vars f) = (ve, jm') -> app_pred F (m_phi jm) -> app_pred (F * stackframe_of f (construct_rho (filter_genv ge) ve te)) (m_phi jm').