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 free_list_juicy_mem_i: forall jm bl m' F, free_list (m_dry jm) bl = Some m' -> app_pred (freeable_blocks bl * F) (m_phi jm) -> exists jm', free_list_juicy_mem jm bl jm' /\ m_dry jm' = m' /\ level jm = level jm'.