お題 連続関数の列挙

http://www.sampou.org/cgi-bin/haskell.cgi?Everyday%3a2004-12-20&l=jp

おまけの方の解答がよくわからなかったので自分でやってみる。

問題

(A, X), (B, Y): 位相空間, f: A -> B, g: Y -> X とする。このとき


"∀a∈A, ∀y∈Y. f(a) ∈ y ⇔ a ∈ g(y)"
⇔ "fは連続関数であってg = f^(-1)|_Yである"

証明

<= 明らか
=> f^(-1)(y) = {a | f(a) ∈ y} = {a | a ∈ g(y)} = g(y) ∈ X

本題

(a, y) ∈ A × Y ⇒ (f(a), g(y)) ∈ (S|_y × R|_a) ∪ ((S|_y)^c × (R|_a)^c)
R|_a = {x | (a, x) ∈ R}
S|_y = {b | (b, y) ∈ S}
によってf, gを定めればよいのではないか。