Module ClauseUniverseFinite : CLAUSE_UNIVERSE_FINITE.
Implicit Arguments Finite.
Implicit Arguments Union.
Implicit Arguments Intersection.
Implicit Arguments Im.
Implicit Arguments In.
Implicit Arguments Add.
Implicit Arguments Subtract.
Implicit Arguments Singleton.
Implicit Arguments injective.
Implicit Arguments Included.
Implicit Arguments Power_set.
Ltac inv H := inversion H; clear H; subst.
Definition pures_bound2 n pi2 :=
pures_bound n (fst pi2) /\ pures_bound n (snd pi2).
Definition list2set {U} (l: list U) : Ensemble U :=
fun x => List.In x l.
Program Definition ff U (F: Ensemble U) (l : sig (@NoDup (sig F))) : sig (@NoDup U) :=
(map (@proj1_sig _ _) (proj1_sig l)).
Next Obligation.
induction H. constructor.
simpl.
constructor.
contradict H.
clear - H.
induction l; simpl in H. contradiction.
destruct H; simpl; [left | right].
destruct a; destruct x; simpl. apply exist_ext; auto.
apply IHl. auto.
auto.
Qed.

Lemma NoDup_finite:
forall U (F: Ensemble U), Finite F -> Finite (fun l: sig (@NoDup _) => Forall F (proj1_sig l)).