読者です 読者をやめる 読者になる 読者になる

bitterharvest’s diary

A Bitter Harvestは小説の題名。作者は豪州のPeter Yeldham。苦闘の末に勝ちえた偏見からの解放は命との引換になったという悲しい物語

写像対象-指数対象

7.6 指数対象

写像対象には別の表現法がある。また、こちらの方がよく知られてもいる。それは指数対象と呼ばれる。

対象\(A\)から対象\(B\)への射の集まり\(A \Rightarrow B\)を写像対象と呼んだ。同じように射の集まりなのだが、ドメイン\(A\)を肩に、コドメイン\(B\)をその下に、即ち、\(B^A\)と記述したものを、指数対象という。写像対象と指数対象は記述の仕方が異なるだけで、意味するところは同じである。しかし、指数対象の形で記述すると、何となく馴染みやすい。これは、指数という概念を中学生の時に学ぶので、熟知しているためだ。都合のよいことに、指数対象は指数と概念を共有している。その例を示そう。

ドメイン\(A\)を変えたときに、その指数対象には射がいくつ存在するかを考えてみよう。\(B^A\)は\(A\)から\(B\)への射の集まり(集合)を表している。\(A\)を定めたとき、あるいは\(B\)を定めたとき、その射の集合がどれだけの要素からなりなっているかを考えることにしよう。その時、\(A\)と\(B\)はそれぞれその要素数を表していると考えて解釈する。

まず、ドメイン\(A\)が始対象の時を考えてみよう。Haskellでは始対象は\(Void\)と記述される。これは、ただ一つの関数\(absurd\)という関数を有していた。\(absurd :: Void -> b\)である。Haskellで確認してみる。

Prelude> import Data.Void
Prelude Data.Void> :t absurd
absurd :: Void -> a

始対象は要素を持たないので、その要素数を0である。従って、指数関数が有する射の数は\(B^0\)となる。また、射の数は1個であったので、\(B^0=1\)となる。これは、指数の定義と同じである。

ドメイン\(A\)が要素を一つだけ持つ場合を考えてみよう。これは、Haskellではユニット(Unit)と呼ばれ、\(()\)と記述される。\(()\)からコドメイン\(B\)への射は下図のようになる。
f:id:bitterharvest:20170505083030p:plain
これらの射は定数関数と呼べれるが、その数は\(B\)の要素の数となる。\(A\)の要素は一つなので1とする。そこで、指数関数が有する射の数は\(B^1\)となる。また、射の数は\(B\)個であったので、\(B^1=B\)となる。これも、指数の概念と同じである。

ドメイン\(A\)が要素を二つだけ持つ場合を考えてみよう。これは、ブール値\(\{True, False \}\)となる。このため、指数関数が有する射の数は\(B^2\)となる。射の数は\(B \times B\)個なので、\(B^2=B \times B\)となる。これも、指数の概念と同じである。
一般に、ドメイン\(A\)が要素を\(n\)個持つときは、\(B^n=\prod_{i=1}^{n}B=B \times B \times...B\)となる。

それでは、コドメインの方を変えてみよう。コドメイン空集合の時は、射を定義することができないので、\(0^A=0\)となる。やはり、指数の概念と同じである。

ドメインが一つの要素の時、即ち、終対象、Haskellではユニットの時は、下図のように、関数は一つである。
f:id:bitterharvest:20170505084656p:plain
これから、\(1^A=1\)となる。やはり、指数の概念と同じである。

この章では、数学的な厳密さを追わずに、要素数が同じということで説明したが、次の章ではもう少し数学的な概念を用いて同値であるということを明確にする。