(* add/hasmem ******************************)

(* Specifications: *)
Lemma assoc_add_hasmem_invar :
forall (l l' : assoc) (k k' : K) (v v' : V),
l' = assoc_add l k' v' ->
k' <> k -> assoc_hasmem l k v -> assoc_hasmem l' k v.
Lemma assoc_add_hasmem_invar_contrap :
forall (l l' : assoc) (k k' : K) (v v' : V),
l' = assoc_add l k' v' ->
k' <> k -> assoc_hasmem l' k v -> assoc_hasmem l k v.
Lemma assoc_add_not_hasmem_invar :
forall (l l' : assoc) (k k' : K) (v v' : V),
l' = assoc_add l k' v' ->
k' <> k -> ~ assoc_hasmem l k v -> ~ assoc_hasmem l' k v.
Lemma assoc_add_not_hasmem_invar_contrap :
forall (l l' : assoc) (k k' : K) (v v' : V),
l' = assoc_add l k' v' ->
k' <> k -> ~ assoc_hasmem l' k v -> ~ assoc_hasmem l k v.