Section IndexedFamilies.
Variable A T:Type.
Definition IndexedFamily := A -> Ensemble T.
Variable F:IndexedFamily.
Inductive IndexedUnion : Ensemble T :=
| indexed_union_intro: forall (a:A) (x:T),
In (F a) x -> In IndexedUnion x.
Inductive IndexedIntersection : Ensemble T :=
| indexed_intersection_intro: forall (x:T),
(forall a:A, In (F a) x) -> In IndexedIntersection x.
End IndexedFamilies.

Lemma Complement_IndexedIntersection {A T : Type} {F : IndexedFamily A T} :
Ensembles.Complement (IndexedIntersection F) =
IndexedUnion (fun a:A => Ensembles.Complement (F a)).