let local_scope m vars scope p =
match scope with
| Mcfg.SC_Function_frame -> (* nothing to do *) p
| Mcfg.SC_Block_in | Mcfg.SC_Function_in ->
let vars = filter_scope p vars in
notexists_vars m vars
(fresh_vars m vars
(alloc_vars m vars p))
| Mcfg.SC_Block_out | Mcfg.SC_Function_out ->
let vars = filter_scope p vars in
free_vars m vars
(fresh_vars m vars p)
| Mcfg.SC_Global ->
if L.has_context_vars [m.x_alloc] p
then F.p_implies (F.p_app1 "global" m.alloc) p
else p