Section product_topology2.
(* we provide a version of the product topology on X and Y whose underlying set is point_set X * point_set Y, for more convenience as compared with the general definition *)
Variable X Y:TopologicalSpace.
Inductive twoT := | twoT_1 | twoT_2.
Let prod2_fun (i:twoT) := match i with
| twoT_1 => X | twoT_2 => Y end.
Let prod2 := ProductTopology prod2_fun.
Let prod2_conv1 (p:point_set prod2) : point_set X * point_set Y :=
(p twoT_1, p twoT_2).
Let prod2_conv2 (p : point_set X * point_set Y) : point_set prod2 :=
let (x,y):=p in fun i:twoT => match i with
| twoT_1 => x | twoT_2 => y
end.

(* Specifications: *)
Lemma prod2_comp1: forall p:point_set prod2,
prod2_conv2 (prod2_conv1 p) = p.
Lemma prod2_comp2: forall p:point_set X * point_set Y,
prod2_conv1 (prod2_conv2 p) = p.