Local Open Scope pred.
(* Scall *)
Fixpoint alloc_juicy_variables (ge: genv) (rho: env) (jm: juicy_mem) (vl: list (ident*type)) : env * juicy_mem :=
match vl with
| nil => (rho,jm)
| (id,ty)::vars => match JuicyMemOps.juicy_mem_alloc jm 0 (@sizeof ge ty) with
(m1,b1) => alloc_juicy_variables ge (PTree.set id (b1,ty) rho) m1 vars
end
end.

Lemma alloc_juicy_variables_e:
forall ge rho jm vl rho' jm',
alloc_juicy_variables ge rho jm vl = (rho', jm') ->
Clight.alloc_variables ge rho (m_dry jm) vl rho' (m_dry jm')
/\ level jm = level jm'
/\ core (m_phi jm) = core (m_phi jm').