simple induction f.
simpl in |- *; auto.
simpl in |- *.
intros until l; elim (set_In_dec Xeq_dec (fst a) (DOM l));
elim (XYeq_dec (x, y) a).
tauto.
tauto.
intros; cut (l = set_remove XYeq_dec (x, y) l).
intro H2; rewrite <- H2; replace x with (fst a); auto.
rewrite <- a0; auto.
rewrite a0; auto.
simpl in |- *.
elim a.
simpl in |- *.
intros.
elim H1; intro.
absurd ((a0, b) = (x, y)); auto.
elim (Xeq_dec x a0); intro.
rewrite <- a1 in b1.
intro; apply b1; replace x with (fst (x, y)); auto.
cut (~ set_In x (DOM (set_remove XYeq_dec (x, y) l))).
auto.
auto.
Qed.

(* Specifications: *)
Lemma DOMFuncRel4 :
forall (x : X) (f : set (X * Y)),
match PARTFUNC f x with
| Some a => set_In (x, a) f
| None => ~ set_In x (DOM f)
end.