Definition FreelistEffect m (L: list (Values.block * Z * Z)) (b:Values.block) (ofs:Z): bool :=
List.fold_right (fun X E b z => match X with (bb,lo,hi) =>
E b z || FreeEffect m lo hi bb b z
end)
EmptyEffect L b ofs.

(* Specifications: *)
Lemma FreelistEffect_Dfalse: forall m bb lo hi L b ofs
(F:FreelistEffect m ((bb, lo, hi) :: L) b ofs = false),
FreelistEffect m L b ofs = false /\
FreeEffect m lo hi bb b ofs = false.
Lemma FreelistEffect_Dtrue: forall m bb lo hi L b ofs
(F:FreelistEffect m ((bb, lo, hi) :: L) b ofs = true),
FreelistEffect m L b ofs = true \/
FreeEffect m lo hi bb b ofs = true.
Lemma FreelistEffect_same: forall m bb lo hi mm L
(F:Mem.free m bb lo hi = Some mm)
b (VB: Mem.valid_block mm b) ofs,
FreelistEffect mm L b ofs = false <-> FreelistEffect m L b ofs = false.
Lemma FreelistEffect_freelist: forall L m m' (FL: Mem.free_list m L = Some m'),
Mem.unchanged_on (fun b ofs => FreelistEffect m L b ofs = false) m m'.