Section Complement1.
Variable E : Setoid.
unfold not in |- *.
intros E0 A x y H' H'0 H'1; try assumption.
apply H'.
apply in_part_comp_l with y; auto with algebra.
Qed.
unfold not in |- *.
intros E0 A B x H' H'0 H'1; try assumption.
apply H'.
apply in_part_comp_r with B; auto with algebra.
Qed.
Definition compl : part_set E -> part_set E.
intros A.
apply (Build_Predicate (Pred_fun:=fun x : E => ~ in_part x A)).
red in |- *.
intros x y H' H'0; try assumption.
apply not_in_comp_l with x; auto with algebra.
Defined.
simpl in |- *; auto with algebra.
Qed.
Hint Resolve compl_in: algebra.
simpl in |- *; auto with algebra.
Qed.

Lemma compl_comp :
forall A B : part_set E, Equal A B -> Equal (compl A) (compl B).