Require Export TopologicalSpaces Neighborhoods OpenBases.
From ZornsLemma Require Export IndexedFamilies EnsemblesSpec.
Record neighborhood_basis {X:TopologicalSpace}
(NB:Family (point_set X)) (x:point_set X) : Prop := {
neighborhood_basis_elements: forall N:Ensemble (point_set X),
In NB N -> neighborhood N x;
neighborhood_basis_cond: forall N:Ensemble (point_set X),
neighborhood N x -> exists N':Ensemble (point_set X),
In NB N' /\ Included N' N
}.
Record open_neighborhood_basis {X:TopologicalSpace}
(NB:Family (point_set X)) (x:point_set X) : Prop := {
open_neighborhood_basis_elements: forall U:Ensemble (point_set X),
In NB U -> open_neighborhood U x;
open_neighborhood_basis_cond: forall U:Ensemble (point_set X),
open_neighborhood U x -> exists V:Ensemble (point_set X),
In NB V /\ Included V U
}.

Lemma open_basis_to_open_neighborhood_basis:
forall {X:TopologicalSpace} (B:Family (point_set X)) (x:point_set X),
open_basis B -> open_neighborhood_basis
[ U:Ensemble (point_set X) | In B U /\ In U x ]
x.