(**************************************************)
(* assoc_del properties                           *)
(**************************************************)

(* Specifications: *)
Lemma assoc_del_correct_1 :
forall (l : assoc) (k : K), assoc_find (assoc_delete l k) k = none V.
Lemma assoc_del_correct_2 :
forall (l : assoc) (k : K) (v : V), ~ assoc_hasmem (assoc_delete l k) k v.
Lemma assoc_del_correct_3 :
forall (l : assoc) (k : K), ~ assoc_mem (assoc_delete l k) k.
Lemma assoc_semfind_del :
forall (l : assoc) (k : K),
assoc_almost_eqm k (assoc_find l) (assoc_find (assoc_delete l k)).
Lemma assoc_del_decrease_1 :
forall (l : assoc) (k k' : K),
assoc_find l k = none V -> assoc_find (assoc_delete l k') k = none V.
Lemma assoc_del_decrease_2 :
forall (l : assoc) (k k' : K) (v : V),
assoc_find (assoc_delete l k') k = some V v -> assoc_find l k = some V v.
Lemma assoc_del_decrease_3 :
forall (l : assoc) (k k' : K) (v v' : V),
assoc_find l k = some V v ->
assoc_find (assoc_delete l k') k = some V v' -> v = v'.
Lemma assoc_del_correct_4 :
forall (l : assoc) (k k' : K) (v : V),
~ assoc_hasmem l k v -> ~ assoc_hasmem (assoc_delete l k') k v.
Lemma assoc_del_correct_5 :
forall (l : assoc) (k k' : K),
~ assoc_mem l k -> ~ assoc_mem (assoc_delete l k') k.