Fixpoint lookup {K V} `{DecEq K} (k : K)
(m : Map K V) : option V :=
match m with
| [] => None
| (k',v) :: m' =>
match dec_eq k k' with
| left _ => Some v
| right _ => lookup k m'
end
end.

(* Specifications: *)
Lemma lookup_insert {K V} `{DecEq K} (k : K) (v : V)
(m : Map K V) : well_formed m -> lookup k (insert k v m) = Some v.
Lemma lookup_insert {K V} `{DecEq K} (k : K) (v : V)
(m : Map K V) : well_formed m -> lookup k (insert k v m) = Some v.