Module TrivialDict (Key: KEY) (Val: DATA) : DICT with Definition key := Key.A
with Definition data := Val.data.
Definition key := Key.A.
Definition data := Val.data.
Definition dict := key -> option data.
Definition empty (k : key) := None (A:=data).
Definition find (k : key) (d : dict) := d k.
Definition add (k : key) (v : data) (d : dict) : dict :=
fun k' : key =>
match Key.eqdec k' k with
| left _ => Some v
| right _ => d k'
end.

Theorem success :
forall (d : dict) (k : key) (v : data), find k (add k v d) = Some v.