(** The values of the erased memory may be more defined and its
       permissions are top.*)
  (** In retrospect setting the permissions to top was a bad
  choice. It should have been that the permissions of the erased
  memory are above the permissions of the other memory. This would
  make it more reusable and it wouldn't need a second definition for
  free. *)

  Local Notation "a # b" := (PMap.get b a) (at level 1).

Lemma setN_erasure : forall (vl1 vl2 : seq.seq memval), memval_erasure_list vl1 vl2 -> forall (p : Z) (c1 c2 : ZMap.t memval), (forall q : Z, memval_erasure (ZMap.get q c1) (ZMap.get q c2)) -> forall q : Z, memval_erasure (ZMap.get q (Mem.setN vl1 p c1)) (ZMap.get q (Mem.setN vl2 p c2)).