intros.
induction  f as [| a0 f Hrecf].
simpl in |- *.
elim (Xeq_dec a b).
intros.
cut False.
intro.
elim H0.
unfold not in H; apply H.
auto.
auto.
simpl in |- *.
elim a0.
intros.
elim (Xeq_dec a a1).
elim (XYeq_dec (b, y) (a1, b0)).
intros.
cut False.
intro F.
elim F.
unfold not in H.
apply H.
rewrite a3.
injection a2.
auto.
simpl in |- *.
elim (Xeq_dec a a1).
auto.
intros.
cut False.
intro F.
elim F.
auto.
elim (XYeq_dec (b, y) (a1, b0)).
simpl in |- *.
elim (Xeq_dec a a1).
intros.
cut False.
intro F.
elim F.
auto.
auto.
simpl in |- *.
elim (Xeq_dec a a1).
intros.
cut False.
intro F.
elim F.
auto.
intros.
auto.
Qed.

(* Specifications: *)
Lemma AddEq1 :
forall (x : X) (y : Y) (f : set (X * Y)),
~ set_In x (DOM f) -> value y = PARTFUNC (set_add XYeq_dec (x, y) f) x.