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.

(* Specifications: *)
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.
Lemma compact_finite_nonempty_closed_intersection: forall X:TopologicalSpace, compact X -> forall F:Family (point_set X), (forall G:Ensemble (point_set X), In F G -> closed G) -> (forall F':Family (point_set X), Finite _ F' -> Included F' F -> Inhabited (FamilyIntersection F')) -> Inhabited (FamilyIntersection F).
Lemma finite_nonempty_closed_intersection_impl_compact: forall X:TopologicalSpace, (forall F:Family (point_set X), (forall G:Ensemble (point_set X), In F G -> closed G) -> (forall F':Family (point_set X), Finite _ F' -> Included F' F -> Inhabited (FamilyIntersection F')) -> Inhabited (FamilyIntersection F)) -> compact X.
Lemma compact_impl_filter_cluster_point: forall X:TopologicalSpace, compact X -> forall F:Filter (point_set X), exists x0:point_set X, filter_cluster_point F x0.
Lemma filter_cluster_point_impl_compact: forall X:TopologicalSpace, (forall F:Filter (point_set X), exists x0:point_set X, filter_cluster_point F x0) -> compact X.
Lemma ultrafilter_limit_impl_compact: forall X:TopologicalSpace, (forall U:Filter (point_set X), ultrafilter U -> exists x0:point_set X, filter_limit U x0) -> compact X.
Lemma compact_impl_net_cluster_point: forall X:TopologicalSpace, compact X -> forall (I:DirectedSet) (x:Net I X), inhabited (DS_set I) -> exists x0:point_set X, net_cluster_point x x0.
Lemma net_cluster_point_impl_compact: forall X:TopologicalSpace, (forall (I:DirectedSet) (x:Net I X), inhabited (DS_set I) -> exists x0:point_set X, net_cluster_point x x0) -> compact X.
Lemma compact_closed: forall (X:TopologicalSpace) (S:Ensemble (point_set X)), Hausdorff X -> compact (SubspaceTopology S) -> closed S.
Lemma closed_compact: forall (X:TopologicalSpace) (S:Ensemble (point_set X)), compact X -> closed S -> compact (SubspaceTopology S).
Lemma compact_image: forall {X Y:TopologicalSpace} (f:point_set X->point_set Y), compact X -> continuous f -> surjective f -> compact Y.
Lemma compact_Hausdorff_impl_normal_sep: forall X:TopologicalSpace, compact X -> Hausdorff X -> normal_sep X.