Require Export TopologicalSpaces.
Require Export Nets.
Require Export FilterLimits.
Require Export Continuity.
Set Asymmetric Patterns.
Definition compact (X:TopologicalSpace) :=
forall C:Family (point_set X),
(forall U:Ensemble (point_set X), In C U -> open U) ->
FamilyUnion C = Full_set ->
exists C':Family (point_set X),
Finite _ C' /\ Included C' C /\
FamilyUnion C' = Full_set.

Lemma compactness_on_indexed_covers:
forall (X:TopologicalSpace) (A:Type) (C:IndexedFamily A (point_set X)),
compact X ->
(forall a:A, open (C a)) -> IndexedUnion C = Full_set ->
exists A':Ensemble A, Finite _ A' /\
IndexedUnion (fun a':{a':A | In A' a'} => C (proj1_sig a')) = Full_set.