Section Build_from_closed_sets.
Variable X:Type.
Variable closedP : Ensemble X -> Prop.
Hypothesis closedP_empty: closedP Empty_set.
Hypothesis closedP_union2: forall F G:Ensemble X,
closedP F -> closedP G -> closedP (Union F G).
Hypothesis closedP_family_intersection: forall F:Family X,
(forall G:Ensemble X, In F G -> closedP G) ->
closedP (FamilyIntersection F).
Definition Build_TopologicalSpace_from_closed_sets : TopologicalSpace.
refine (Build_TopologicalSpace X
(fun U:Ensemble X => closedP (Ensembles.Complement U)) _ _ _).
- intros.
rewrite Complement_FamilyUnion.
apply closedP_family_intersection.
destruct 1.
rewrite <- Complement_Complement.
apply H; trivial.
- intros.
rewrite Complement_Intersection.
apply closedP_union2; trivial.
- apply eq_ind with (1 := closedP_empty).
rewrite Complement_Full_set.
reflexivity.
Defined.

Lemma Build_TopologicalSpace_from_closed_sets_closed:
forall (F:Ensemble (point_set Build_TopologicalSpace_from_closed_sets)),
closed F <-> closedP F.