(*TODO: Move to ev_semantics*)
    Definition in_free_list (b : block) ofs xs :=
      exists x, List.In x xs /\
           let '(b', lo, hi) := x in
           b = b' /\
           (lo <= ofs < hi)%Z.

Lemma elim_perm_invalid_block: forall m T m' b ofs ofs' bytes (Hintv: Intv.In ofs' (ofs, (ofs + Z.of_nat (length bytes))%Z)) (Helim: ev_elim m T m') (Hinvalid: ~ Mem.valid_block m b), (** or it wasn't and the operation denoted by the event implies the permission*) (List.In (event_semantics.Write b ofs bytes) T -> (permission_at m' b ofs' Cur = Some Freeable \/ permission_at m' b ofs' Cur = None) /\ Mem.valid_block m' b) /\ (forall n, List.In (event_semantics.Read b ofs n bytes) T -> (permission_at m' b ofs' Cur = Some Freeable \/ permission_at m' b ofs' Cur = None) /\ Mem.valid_block m' b).