Definition product_space_point_set : Type :=
  forall a:A, point_set (X a).Definition product_space_proj (a:A) : product_space_point_set ->
                                      point_set (X a) :=
  fun (x:product_space_point_set) => x a.Definition ProductTopology : TopologicalSpace :=
  WeakTopology product_space_proj.

Theorem TychonoffProductTheorem: (forall a:A, compact (X a)) -> compact ProductTopology.