Unwanted re-programming on same address of memory

In reply to kansagaratushar:

constraint no_erase { (cmd == write) -> foreach (add[i]) !(add[i] inside {list});}
  function void post_randomize();
    case(cmd)
    write: foreach (add[i]) list[add[i]] = add[i]; // add address to list
    erase: foreach (add[i]) list.delete(add[i]);
    endcase
endfunction