Section product_topology.
Variable A:Type.
Variable X:forall a:A, TopologicalSpace.
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.
End product_topology.
Arguments ProductTopology {A}.
Arguments product_space_proj {A} {X}.

Lemma product_map_continuous: forall {A:Type}
(X:TopologicalSpace) (Y:A->TopologicalSpace)
(f:forall a:A, point_set X -> point_set (Y a)) (x:point_set X),
(forall a:A, continuous_at (f a) x) ->
continuous_at (fun x:point_set X => (fun a:A => f a x)) x
(Y:=ProductTopology Y).