From Coq Require Export Ensembles.
From ZornsLemma Require Export Families.
From ZornsLemma Require Export FiniteTypes.
From ZornsLemma Require Export IndexedFamilies.
From ZornsLemma Require Export CountableTypes.
From ZornsLemma Require Export Powerset_facts.
Inductive finite_intersections {X:Type} (S:Family X) : Family X :=
| intro_full: In (finite_intersections S) Full_set
| intro_S: forall U:Ensemble X, In S U -> In (finite_intersections S) U
| intro_intersection: forall U V:Ensemble X,
In (finite_intersections S) U -> In (finite_intersections S) V ->
In (finite_intersections S) (Intersection U V).

Lemma finite_indexed_intersection_is_finite_intersection:
forall {X:Type} (S:Family X) (J:Type) (V:J->Ensemble X),
FiniteT J -> (forall j:J, In S (V j)) ->
In (finite_intersections S) (IndexedIntersection V).