Module ListDict (E: ELEM).
Definition T := list E.T.
Definition elt := E.T.
Definition empty := nil elt.
Definition add (e : elt) (s : T) := cons elt e s.
Fixpoint find (e : elt) (s : T) {struct s} : bool :=
match s with
| nil _ => false
| cons _ e' s' => ifte (E.eq_dec e e') true (find e s')
end.
Definition find_empty_false (e : elt) := refl_equal false.

Lemma find_add_true : forall (s : T) (e : E.T), find e (add e s) = true.