(** * Derived properties of memory operations *)

(* Specifications: *)
Lemma load_freelist:
forall fbl chunk m b ofs m',
(forall b' lo hi, In (b', lo, hi) fbl -> b' <> b) ->
Mem.free_list m fbl = Some m' ->
Mem.load chunk m' b ofs = Mem.load chunk m b ofs.
Lemma perm_freelist:
forall fbl m m' b ofs k p,
Mem.free_list m fbl = Some m' ->
Mem.perm m' b ofs k p ->
Mem.perm m b ofs k p.
Lemma nextblock_freelist:
forall fbl m m',
Mem.free_list m fbl = Some m' ->
Mem.nextblock m' = Mem.nextblock m.
Lemma free_list_freeable:
forall l m m',
Mem.free_list m l = Some m' ->
forall b lo hi,
In (b, lo, hi) l -> Mem.range_perm m b lo hi Cur Freeable.
Lemma nextblock_storev:
forall chunk m addr v m',
Mem.storev chunk m addr v = Some m' -> Mem.nextblock m' = Mem.nextblock m.
Lemma load_freelist:
forall fbl chunk m b ofs m',
(forall b' lo hi, In (b', lo, hi) fbl -> b' <> b) ->
Mem.free_list m fbl = Some m' ->
Mem.load chunk m' b ofs = Mem.load chunk m b ofs.
Lemma perm_freelist:
forall fbl m m' b ofs k p,
Mem.free_list m fbl = Some m' ->
Mem.perm m' b ofs k p ->
Mem.perm m b ofs k p.
Lemma nextblock_freelist:
forall fbl m m',
Mem.free_list m fbl = Some m' ->
Mem.nextblock m' = Mem.nextblock m.
Lemma free_list_freeable:
forall l m m',
Mem.free_list m l = Some m' ->
forall b lo hi,
In (b, lo, hi) l -> Mem.range_perm m b lo hi Cur Freeable.
Lemma nextblock_storev:
forall chunk m addr v m',
Mem.storev chunk m addr v = Some m' -> Mem.nextblock m' = Mem.nextblock m.