集合論によって厳密に定義される関数と写像、数列
定義 1
空集合じゃない二つの集合 $X$、$Y$ が与えられたとする。
- 二項関係 $f \subset (X,Y)$ が次を満たすとき、関数と呼び、$f : X \to Y$ と表す。 $$ (x ,y_{1}) \in f \land (x,y_{2}) \in f \implies y_{1} = y_{2} $$
- 関数 $f : X \to Y$ において、$\text{Dom} (f) = X$ を$f$ の定義域domainといい、$Y$ を$f$ の共変域codomainという。定義域の部分集合 $A \subset X$ が与えられたとき、$f(A):= \left\{ f(x) \in Y \ | \ x \in A \right\}$ を$f$ に対する$A$ の像imageという。特に $f$ に対する定義域 $X$ の像 $\operatorname{Im} f := f(X)$ を$f$ の値域rangeという。
- 定義域が自然数の集合 $\mathbb{N}$ の関数を数列sequenceという。
- 定義域 $A$ と共変域 $B$ を持つすべての関数 $\lambda : A \to B$ の集合を $B^{A}$ と表す。
説明
- 教科書レベルでは、‘全ての元 $x_{1}, x_{2} \in X$ に対して、$x_{1} = x_{2} \implies f(x_{1}) = f(x_{2})$ を満たす $f(x_{1})$ と $f(x_{2})$ が $Y$ に存在するなら、対応 $f : X \to Y$ を$X$ から $Y$ への関数とする’ と言われがちだ。しかし、この ‘対応’ あるいは ‘写像’ は、表現がやや曖昧だった。大学レベル以上の数学では、集合論を用いて、関数に関連する概念を厳格に定義する。入力があれば出力がただ一つだけ出る、という説明は、コンピュータ科学の関数にもっと適した説明だ。
- なぜ値域を別に定義するのか疑問に思うかもしれない。例えば、$f(x) = x^2$ を考えると、明らかに関数の値は $\left[ 0,\infty \right)$ に属していて、$f : \mathbb{R} \to \mathbb{R}$ のように無駄に大きくする必要はないと見える。もともと値域は共変域の部分集合であり、実際には使われない値をなぜ別にするのか理解しにくいことだ。これは、あまりにも簡単な例だけを考えることからくる誤解で、すべての関数が定義時から値域を簡単に予測できるわけではない。関数を定義するときに保証できるのは、$x \in X$ に対して $f(x) \in Y$ が存在することだけで、それが何かはわからない。もし $$ f(x) = \sin \ln \sqrt{x} + \int_{1}^{3^x} {{1} \over {7t+t^2}} dt $$ のような複雑な関数があれば、定義時からその値域を知ることは不可能であり、必要もない。値域を知ることが重要なのは、合成関数を定義するときくらいだ。
- 数列が単に数を並べたものだという説明よりも、もっとシンプルで一般的な定義ができたことを確認できる。共変域が「数」であることに限らず、関数であれ、いかにも珍しい集合であれ、全てをカバーできるようになった。このような抽象化は、ただちに数列の概念をきれいに表現できるだけでなく、無限を扱う数学のさまざまな分野で柔軟に使用できる。
- 関数の集合という概念自体が新しいかもしれないが、抽象数学では、関数空間のような集合を日常的に言及する。$B^{A}$ のような記法をなぜ使うのかは、基数を思い出せば理解しやすい。例えば、$B$ が共変域であり、$A$ が定義域であるすべての関数を考えると、 $$ e \mapsto 1 \text{ or } 2 \text{ or } 3 \\ \pi \mapsto 1 \text{ or } 2 \text{ or } 3 $$ 全ての組み合わせは $9 = 3^2 = |B|^{|A|}$ になる。
李興天 訳, You-Feng Lin. (2011). 集合論(Set Theory: An Intuitive Approach): p157~159. ↩︎