Section filter_to_net.
Variable X:TopologicalSpace.
Variable F:Filter (point_set X).
Record filter_to_net_DS_set : Type := {
ftn_S : Ensemble (point_set X);
ftn_x : point_set X;
ftn_S_in_F : In (filter_family F) ftn_S;
ftn_x_in_S : In ftn_S ftn_x
}.
Definition filter_to_net_DS : DirectedSet.
refine (Build_DirectedSet filter_to_net_DS_set
(fun x1 x2:filter_to_net_DS_set =>
Included (ftn_S x2) (ftn_S x1)) _ _).
{ constructor; red; intros; auto with sets. }
intros.
destruct i.
destruct j.
assert (In (filter_family F) (Intersection ftn_S0 ftn_S1)).
{ apply filter_intersection; trivial. }
assert (Inhabited (Intersection ftn_S0 ftn_S1)).
{ apply NNPP; red; intro.
pose proof (not_inhabited_empty _ H0).
rewrite H1 in H.
contradiction (filter_empty _ F).
}
destruct H0 as [ftn_x'].
exists (Build_filter_to_net_DS_set
(Intersection ftn_S0 ftn_S1) ftn_x' H H0).
simpl.
split; auto with sets.
Defined.
Definition filter_to_net : Net filter_to_net_DS X :=
ftn_x.

Lemma filter_to_net_cluster_point_impl_filter_cluster_point:
forall x0:point_set X,
net_cluster_point filter_to_net x0 -> filter_cluster_point F x0.