End ListDenoteSeparate.
(* interpretation of clausesets *)
Section SetDenote.
Definition setd {T} (f : M.elt -> T) (g : T -> T -> T) (b : T) (s : M.t) :=
listd f g b (M.elements s).
End SetDenote.
(* general lemmas about clausesets *)
Section SetLems.
Variables (s : M.t) (x y : clause).

Lemma setd_add_In : x = y \/ M.In y s -> M.In y (M.add x s).
Proof with auto.