Require Export TopologicalSpaces.
Require Export Subbases.
From ZornsLemma Require Export InverseImage.
Require Export Continuity.
Require Export Nets.
Section WeakTopology.
Variable X:Type.
Variable A:Type.
Variable Y:A->TopologicalSpace.
Variable f:forall a:A, X->point_set (Y a).
Inductive weak_topology_subbasis : Family X :=
| intro_fa_inv_image: forall (a:A) (V:Ensemble (point_set (Y a))),
open V -> In weak_topology_subbasis (inverse_image (f a) V).
Definition WeakTopology : TopologicalSpace :=
Build_TopologicalSpace_from_subbasis X weak_topology_subbasis.

(* Specifications: *)
Lemma weak_topology_makes_continuous_funcs:
forall a:A, continuous (f a) (X:=WeakTopology).
Lemma weak_topology_is_weakest: forall (T':Family X)
(H1:_) (H2:_) (H3:_),
(forall a:A, continuous (f a)
(X := Build_TopologicalSpace X T' H1 H2 H3)) ->
forall U:Ensemble X, @open WeakTopology U -> T' U.