Require Export TopologicalSpaces NeighborhoodBases.
From ZornsLemma Require Export CountableTypes.
From Coq Require ProofIrrelevance ClassicalChoice.
Global Set Asymmetric Patterns.
Definition first_countable (X:TopologicalSpace) : Prop :=
forall x:point_set X, exists NBx:Family (point_set X),
neighborhood_basis NBx x /\ Countable NBx.
Require Export Nets.
Inductive separable (X:TopologicalSpace) : Prop :=
| intro_dense_ctbl: forall S:Ensemble (point_set X),
Countable S -> dense S -> separable X.
Definition Lindelof (X:TopologicalSpace) : Prop :=
forall cover:Family (point_set X),
(forall U:Ensemble (point_set X),
In cover U -> open U) ->
FamilyUnion cover = Full_set ->
exists subcover:Family (point_set X), Included subcover cover /\
Countable subcover /\ FamilyUnion subcover = Full_set.
Inductive second_countable (X:TopologicalSpace) : Prop :=
| intro_ctbl_basis: forall B:Family (point_set X),
open_basis B -> Countable B -> second_countable X.

Lemma second_countable_impl_separable:
forall X:TopologicalSpace, second_countable X -> separable X.