Section alistFacts.
(* Generic facts about alists. To eventually move to ExtLib. *)
Arguments alist_find {_ _ _ _}.
Definition alist_In {K R RD V} k m v := @alist_find K R RD V k m = Some v.
Arguments alist_add {_ _ _ _}.
Arguments alist_find {_ _ _ _}.
Arguments alist_remove {_ _ _ _}.
Context {K V: Type}.
Context {RR : @RelDec K (@eq K)}.
Context {RRC : @RelDec_Correct K (@eq K) RR}.

(* Removing a key does not alter other keys *)
Lemma In_In_remove_ineq:
forall (m : alist K V) (k : K) (v : V) (k' : K),
k <> k' ->
alist_In k m v ->
alist_In k (alist_remove k' m) v.