intros.
unfold generates in H.
apply NNPP; intro.
red in H; apply H.
intro.
simpl in |- *; split; auto; intros _.
apply NNPP; intro.
red in H0; apply H0.
exists x.
simpl in |- *; auto.
Qed.
(** - Once we know that some subset of $V$ has an element, we must be able to get it if we want to prove theorem 1.11 - hence this axiom. It is a kind of choice principle, hence the name I gave it. I know AC+EM+impredicativity = inconsistency, but type isn't impredicative so we should be OK *)
Axiom
AC' :
forall S : part_set V,
(exists v : V, in_part v S) -> sigT (fun v : V => in_part v S).

Lemma ACcomplement :
forall S : part_set V,
(exists v : V, ~ in_part v S) -> sigT (fun v : V => ~ in_part v S).