Section STOREBYTES.
Variable m1: mem.
Variable b: block.
Variable ofs: Z.
Variable bytes: list memval.
Variable m2: mem.
Hypothesis STORE: storebytes m1 b ofs bytes = Some m2.

(* Specifications: *)
Lemma storebytes_access: mem_access m2 = mem_access m1.
Lemma storebytes_mem_contents:
mem_contents m2 = PMap.set b (setN bytes ofs m1.(mem_contents)#b) m1.(mem_contents).
Theorem perm_storebytes_1:
forall b' ofs' k p, perm m1 b' ofs' k p -> perm m2 b' ofs' k p.
Theorem perm_storebytes_2:
forall b' ofs' k p, perm m2 b' ofs' k p -> perm m1 b' ofs' k p.
Lemma storebytes_access: mem_access m2 = mem_access m1.
Lemma storebytes_mem_contents:
mem_contents m2 = PMap.set b (setN bytes ofs m1.(mem_contents)#b) m1.(mem_contents).
Theorem perm_storebytes_1:
forall b' ofs' k p, perm m1 b' ofs' k p -> perm m2 b' ofs' k p.
Theorem perm_storebytes_2:
forall b' ofs' k p, perm m2 b' ofs' k p -> perm m1 b' ofs' k p.