intros A x; try assumption.
simpl in |- *.
unfold not in |- *.
apply NNPP; intuition.
Qed.
End Complement1.
Hint Resolve compl_included compl_not_in compl_compl compl_comp compl_in:
algebra.
Section Images1.
Variable E F : Setoid.
Variable f : MAP E F.
Definition image : part_set E -> part_set F.
intros A.
apply
(Build_Predicate
(Pred_fun:=fun y : F => exists x : E, in_part x A /\ Equal y (f x))).
red in |- *.
intros y y' H' H'0; try assumption.
elim H'; intros x E0; elim E0; intros H'1 H'2; try exact H'1; clear E0 H'.
exists x; split; [ try assumption | idtac ].
apply Trans with y; auto with algebra.
Defined.

(* Specifications: *)
Lemma image_in :
forall (A : part_set E) (y : F),
in_part y (image A) -> exists x : E, in_part x A /\ Equal y (f x).