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.
simpl in |- *; auto with algebra.
unfold eq_part in |- *; auto with algebra.
intros A B H' x; try assumption.
elim (H' x).
simpl in |- *; unfold not in |- *.
intuition.
Qed.
Hint Resolve compl_comp: algebra.
simpl in |- *; auto with algebra.
unfold eq_part in |- *; auto with algebra.
simpl in |- *; unfold not in |- *.
intros A B H' x; try assumption.
elim (H' x).
apply NNPP.
tauto.
Qed.

Lemma compl_compl : forall A : part_set E, Equal (compl (compl A)) A.