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 juicy_mem_alloc_block: forall jm n jm2 b F, juicy_mem_alloc jm 0 n = (jm2, b) -> app_pred F (m_phi jm) -> 0 <= n < Ptrofs.modulus -> app_pred (F * memory_block Share.top n (Vptr b Ptrofs.zero)) (m_phi jm2).