intros.
induction  f as [| a0 f Hrecf].
simpl in |- *.
elim (Xeq_dec a b).
intros.
cut False.
intro F; elim F.
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 (XYeq_dec (b, z) (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)).
auto.
intros.
simpl in |- *.
elim (XYeq_dec (b, z) (a1, b0)).
simpl in |- *.
elim (Xeq_dec a a1).
intros.
cut False.
intro F; elim F.
auto.
intros.
apply RemEq.
auto.
auto.
simpl in |- *.
elim (Xeq_dec a a1).
intros.
cut False.
intro F; elim F.
auto.
auto.
Qed.

(* Specifications: *)
Lemma NotInDOMIsUndef :
forall (o : X) (f : set (X * Y)), ~ set_In o (DOM f) -> PARTFUNC f o = None.