simple induction x.
auto.
intros.
cut ({a = a0} + {a <> a0}).
intro Eq_dec; elim Eq_dec.
intro Eq; rewrite Eq; left; auto with datatypes.
elim H.
auto with datatypes.
unfold not in |- *; intros; right; intro.
elim H0; auto.
auto.
Qed.

(* Specifications: *)
Lemma set_mem_ind :
forall (B : Set) (P : B -> Prop) (y z : B) (a : A) (x : set),
(set_In a x -> P y) -> P z -> P (if set_mem a x then y else z).
Lemma set_mem_correct1 :
forall (a : A) (x : set), set_mem a x = true -> set_In a x.
Lemma set_mem_correct2 :
forall (a : A) (x : set), set_In a x -> set_mem a x = true.
Lemma set_mem_complete1 :
forall (a : A) (x : set), set_mem a x = false -> ~ set_In a x.
Lemma set_mem_complete2 :
forall (a : A) (x : set), ~ set_In a x -> set_mem a x = false.
Lemma set_add_intro1 :
forall (a b : A) (x : set), set_In a x -> set_In a (set_add b x).
Lemma set_add_intro2 :
forall (a b : A) (x : set), a = b -> set_In a (set_add b x).