続・発言の数理モデル

$`\newcommand{\mrm}[1]{\mathrm{#1}}
\newcommand{\hyp}{\text{-} }
\newcommand{\id}{\mathrm{id}}
\newcommand{\In}{\text{ in } }
\newcommand{\ie}{\text{i.e. }\: }
\require{color} % 緑色
\newcommand{\Keyword}[1]{ \textcolor{green}{\text{#1}} }%
\newcommand{\For}{\Keyword{For } }%
%\newcommand{\When}{\Keyword{When } }%
\newcommand{\Define}{\Keyword{Define } }%
\newcommand{\Subject}{\Keyword{Subject } }%
\newcommand{\Profile}{ \Keyword{Profile } }%
\newcommand{\Notation}{ \Keyword{Notation } }%
%
\newcommand{\H}{\mathrm{H}}
\newcommand{\N}{\mathrm{N}}
\newcommand{\A}{\mathrm{A}}
`$

形式的定義

恒真述語(1 を値とする定数値関数)

$`\For X \in |{\bf Set}|\\
\Subject \mrm{True}_X : X \to {\bf B} \In {\bf Set}\\
\quad \ie \mrm{True}_X \in \mrm{Map}(X, {\bf B})\\
\Define \mrm{True}_X := \lambda\, x\in X. 1\\
\Profile \mrm{True} \in \prod_{X\in |{\bf Set}|} \mrm{Map}(X, {\bf B})
`$


肯定的判断「成立する」

$`\For X \in |{\bf Set}|\\
\Subject \H_X: \mrm{Map}(X, {\bf B}) \to {\bf B} \In {\bf Set}\\
\quad \ie \H_X \in \mrm{Map}( \mrm{Map}(X, {\bf B}), {\bf B} )\\
\Define \H_X := \lambda\, f\in \mrm{Map}(X, {\bf B}).\, f = \mrm{True}_X\\
\Profile \H \in \prod_{X\in |{\bf Set}|} \mrm{Map}(\mrm{Map}(X, {\bf B}), {\bf B})\\
\Notation \mrm{Holds}_X f := (\H_X(f) \; \in {\bf B}) \\
\Notation f \text{ は }X\text{ 上で成立する。} := (\H_X(f) \; \in {\bf B}) \\
`$


否定的判断「成立しない」

$`\For X \in |{\bf Set}|\\
\Subject \N_X: \mrm{Map}(X, {\bf B}) \to {\bf B} \In {\bf Set}\\
\quad \ie \N_X \in \mrm{Map}( \mrm{Map}(X, {\bf B}), {\bf B} )\\
\Define \N_X := \lambda\, f\in \mrm{Map}(X, {\bf B}).\, f \ne \mrm{True}_X\\
\Profile \N \in \prod_{X\in |{\bf Set}|} \mrm{Map}(\mrm{Map}(X, {\bf B}), {\bf B})\\
\Notation \mrm{NotHold}_X f := (\N_X(f) \; \in {\bf B})\\
\Notation f \text{ は }X\text{ 上で成立しない。} := (\N_X(f) \; \in {\bf B}) \\
`$


全称限量子の定式化

$`\For X \in |{\bf Set}|\\
\Subject \A_X: \mrm{Map}(X, {\bf B}) \to \mrm{Map}({\bf 1}, {\bf B}) \In {\bf Set}\\
\quad \ie \A_X \in \mrm{Map}( \mrm{Map}(X, {\bf B}), \mrm{Map}({\bf 1}, {\bf B} ) )\\
\Define \A_X := \text{割愛 or 口頭}\\
\Profile \A \in \prod_{X\in |{\bf Set}|}
\mrm{Map}( \mrm{Map}(X, {\bf B}), \mrm{Map}({\bf 1}, {\bf B} ) )
`$

定理

$`\require{AMScd}
\For X \in |{\bf Set}|\\
\quad \begin{CD}
\mrm{Map}(X, {\bf B}) @>{\A_X}>> \mrm{Map}({\bf 1}, {\bf B})\\
@V{\H_X}VV @VV{\H_{\bf 1}}V \\
{\bf B} @= {\bf B}
\end{CD}\\
\quad \text{commutative in }{\bf Set}
`$

$`\For X \in |{\bf Set}|\\
\quad \begin{CD}
\mrm{Map}(X, {\bf B}) @>{\A_X}>> \mrm{Map}({\bf 1}, {\bf B})\\
@V{\N_X}VV @VV{\N_{\bf 1}}V \\
{\bf B} @= {\bf B}
\end{CD}\\
\quad \text{commutative in }{\bf Set}
`$

$`\For X \in |{\bf Set}|\\
\quad \begin{CD}
\mrm{Map}(X, {\bf B}) @= \mrm{Map}(X, {\bf B})\\
@V{\N_X}VV @VV{\H_X}V \\
{\bf B} @>{\mrm{flip}}>> {\bf B}
\end{CD}\\
\quad \text{commutative in }{\bf Set}
`$

問題

$`\mathscr{F}`$ を、集合 $`X`$ 上で意味をもつ論理式だとする。上付きチルダ $`^\sim`$ は、ポインティング関数を表すとして、以下の3つは同じ意味であることを証明せよ。

  1. $`\mrm{Holds}_X\, \mathscr{F}`$
  2. $`\mrm{Holds}_{\bf 1} (\mrm{Holds}_X\, \mathscr{F})^\sim`$
  3. $`\mrm{NotHold}_{\bf 1} (\mrm{NotHold}_X\, \mathscr{F})^\sim`$

$`x`$ と $`x^\sim`$ を同一視して、下付きの $`_{\bf 1}`$ は省略するなら:

  1. $`\mrm{Holds}_X\, \mathscr{F}`$
  2. $`\mrm{Holds}\; \mrm{Holds}_X\, \mathscr{F}`$
  3. $`\mrm{NotHold}\; \mrm{NotHold}_X\, \mathscr{F}`$

発言の数理モデル

次の2つのタイプの発言を考える。

  1. ~ は成立するぞ。
  2. ~ は成立しないぞ。

「~」の部分は、等式・不等式などの命題。構文をキチンと約束すれば「~」の部分は論理式だとしてよい。$`\newcommand{\mrm}[1]{\mathrm{#1}}`$

発言の定式化〈数理モデリング〉として、次の3つの構成素を持つ構造を考える。

  1. 変数宣言(データベースなら、カラム名付きテーブルスキーマ)
  2. 論理式(変数宣言で宣言されてない変数は含まない)
  3. 判断(肯定または否定)

この構造を、三つ組 $`(D, \varphi, J)`$ で表す。混乱を避けるため、必要なら論理式を山形括弧で囲む。$`J \in \{\mrm{Holds}, \mrm{NotHold} \}`$ とする。

例 1

三つ組 $`(D, \varphi, J)`$ を次のように定義する。

  • $`D := (x:{\bf R}, y:{\bf R})`$
  • $`\varphi := \langle (x + y )^2 = x^2 + y^2 \rangle`$
  • $`J := \mrm{NotHold}`$

つまり、三つ組 $`(D, \varphi, J)`$ は、

$`\quad ( (x:{\bf R}, y:{\bf R}), \langle (x + y )^2 = x^2 + y^2 \rangle, \mrm{NotHold})`$

現実世界の実際の発言に翻訳すれば:

  $`x`$ を実数、$`y`$ を実数とするとき、
  $`(x + y )^2 = x^2 + y^2`$
  は成立しないぞ。

例 1 の解釈

解釈の手順:

  1. 変数宣言から直積集合 $`{\bf R}\times {\bf R}`$ を作る。
  2. 論理式から、次の関数 $`p`$ を作る。
    $`\quad p := \lambda\, (x, y)\in {\bf R}\times {\bf R}.(\, (x + y )^2 = x^2 + y^2 \,)`$
  3. (メタレベルの)不等式(むしろ非等式) $`p \ne \mrm{True}_{{\bf R}\times {\bf R}}`$ を設定する。

論理の用語では、集合 $`{\bf R}\times {\bf R}`$ を論域、関数 $`p`$ を述語と呼ぶ。$`\mrm{True}_{{\bf R}\times {\bf R}}`$ は、論域 $`{\bf R}\times {\bf R}`$ 上の定数値関数である。三番目のメタレベルの不等式とは、単に関数を比較しているだけで、なんら特殊なことではない。

もとの発言のなかに、命題(等式)と判断(成立しないぞ)が含まれるが、その発言の解釈・判断は、もう一段メタレベルが上がる(「メタレベル」という言葉にビビらないこと!)。態度としては:

  1. 情報・知識の受け手として $`p \ne \mrm{True}_{{\bf R}\times {\bf R}}`$ を信じる。
  2. 情報・知識の検証者として $`p \ne \mrm{True}_{{\bf R}\times {\bf R}}`$ を無条件には信じないで吟味する。
例 2

三つ組 $`(D, \varphi, J)`$ を次のように定義する。

  • $`D := (x:{\bf B}, y:{\bf B})`$
  • $`\varphi := \langle (x + y )^2 = x^2 + y^2 \rangle`$
  • $`J := \mrm{NotHold}`$

つまり、三つ組 $`(D, \varphi, J)`$ は、

$`\quad ( (x:{\bf B}, y:{\bf B}), \langle (x + y )^2 = x^2 + y^2 \rangle, \mrm{NotHold})`$

現実世界の実際の発言に翻訳すれば:

  $`x`$ をブール値、$`y`$ をブール値とするとき、
  $`(x + y )^2 = x^2 + y^2`$
  は成立しないぞ。

例 2 の解釈

解釈の手順:

  1. 変数宣言から直積集合 $`{\bf B}\times {\bf B}`$ を作る。
  2. 論理式から、次の関数 $`p`$ を作る。
    $`\quad p := \lambda\, (x, y)\in {\bf B}\times {\bf B}.(\, (x + y )^2 = x^2 + y^2 \,)`$
  3. (メタレベルの)不等式(むしろ非等式) $`p \ne \mrm{True}_{{\bf B}\times {\bf B}}`$ を設定する。

以下同様。

何を学ぶか

このような方法で発言と解釈の分析ができる。それだけでなく、自分が発言するとき、あるいは自分が発言を受け取る側のとき、このような数理的構造が背後にあることを意識すると、正確な発言や正確な解釈に役立つだろう。

呼び名・書き方の違いは無視する!

全称限量子が関数と思えないのはなぜか?


「限量子が関数なわけない」という思い込みもあるだろうが、独特な呼び名と書き方が大きな原因だろう。呼び名・書き方は習慣・伝統だから変えられない。が、個人・集団内で、一時的に変えるのは自由だ


フルスペルではないが、長めの略称を使う。$`\newcommand{\mrm}[1]{\mathrm{#1}}`$

日本語 英語 略称
連続写像 continuous map ContMap
連続的微分可能写像 continuously differentiable map ContDiffMap
微分作用素 differential operator DiffOp
全称限量子 universal quantifier UnivQuant


$`X`$ を数直線の一部(つまり、$`X \subseteq {\bf R}`$)として、

  • $`X`$ 上で定義された連続写像全体の集合を $`\mathrm{ContMap}(X,{\bf R})`$ とする。
  • $`X`$ 上で定義された連続的微分可能写像の集合を $`\mathrm{ContDiffMap}(X,{\bf R})`$ とする。

微分作用素は次のプロファイルの関数となる。

$`\quad \mrm{DiffOp} : \mrm{ContDiffMap}(X, {\bf R}) \to \mrm{ContMap}(X, {\bf R})\\
\quad \mrm{ContDiffMap}(X, {\bf R})\ni f \mapsto \mrm{DiffOp}(f)\in \mrm{ContMap}(X, {\bf R})
`$

略称が長くてうざいから、普通は次のように書く。

$`\quad D : C^1(X) \to C^0(X)\\
\quad C^1(X) \ni f \mapsto D(f) \in C^0(X)
`$

微分作用素も、集合 $`X`$ ごとに別々なことを明示したいなら:

$`\quad D_X : C^1(X) \to C^0(X)\\
\quad C^1(X) \ni f \mapsto D_X(f) \in C^0(X)
`$

とある二次関数に微分作用素を適用する(関数に引数を渡す)と:

$`\quad D_X( \lambda\, x\in X.(x^2 + 1) ) \in C^0(X)`$

伝統的な書き方では:

$`\quad \frac{d}{dx}(x^2 + 1) \in C^0(X)`$


$`X`$ を任意の集合として、

  • $`X`$ 上で定義されたブール値関数全体の集合を $`\mathrm{Map}(X,{\bf B})`$ とする。
  • 単元集合 $`{\bf 1}`$ 上で定義されたブール値関数の集合を $`\mathrm{Map}({\bf 1},{\bf B})`$ とする。

全称限量子は次のプロファイルの関数となる。

$`\quad \mrm{UnivQuant} : \mrm{Map}(X, {\bf B}) \to \mrm{Map}({\bf 1}, {\bf B})\\
\quad \mrm{Map}(X, {\bf B})\ni f \mapsto \mrm{UnivQuant}(f) \in \mrm{Map}({\bf 1}, {\bf B})
`$

全称限量子も、集合 $`X`$ ごとに別々なことを明示したいなら:

$`\quad \mrm{UnivQuant}_X : \mrm{Map}(X, {\bf B}) \to \mrm{Map}({\bf 1}, {\bf B})\\
\quad \mrm{Map}(X, {\bf B})\ni f \mapsto \mrm{UnivQuant}_X(f) \in \mrm{Map}({\bf 1}, {\bf B})
`$

とある不等式ブール値関数に全称限量子を適用する(関数に引数を渡す)と:

$`\quad \mrm{UnivQuant}_{\bf R}( \lambda\, x\in {\bf R}.( x^2 \gt 0) ) \in \mrm{Map}({\bf 1}, {\bf B})`$

伝統的な書き方では:

$`\quad \forall x\in {\bf R}.(x^2 \gt 0) \in \mrm{Map}({\bf 1}, {\bf B})`$

$`\mrm{Map}({\bf 1}, {\bf B}) \cong {\bf B}`$ なので、次のように解釈してもよい。

$`\quad \forall x\in {\bf R}.(x^2 \gt 0) \in {\bf B}`$

ブール値関数の基礎事項

ブール値関数の基礎事項をまとめる。$`\newcommand{\mrm}[1]{\mathrm{#1}}
\newcommand{\hyp}{\text{-} }
\newcommand{\id}{\mathrm{id}}
\newcommand{\In}{\text{ in } }
\require{color} % 緑色
\newcommand{\Keyword}[1]{ \textcolor{green}{\text{#1}} }%
\newcommand{\For}{\Keyword{For } }%
%\newcommand{\When}{\Keyword{When } }%
\newcommand{\Define}{\Keyword{Define } }%
\newcommand{\Subject}{\Keyword{Subject } }%
\newcommand{\Profile}{ \Keyword{Profile } }%
`$

一部の内容は以下と重複している。

上記記事では用語「述語」を使っている。この記事では「述語」を使わない。

内容:

いつものやり方

  1. プロファイリングする。
  2. 実例にあたる。実例をいじる。実例を手で触りながら進む。
  3. 絵を描いてみる。→ 絵の描き方 2: 基本の描画法
  4. 文脈を読み取り、(忖度しながら)用語や記号を解釈する。
  5. 主観位置と視界を強く意識する。
  6. 空集合、単元集合を無視しない、バカにしない。

固有名の約束

空集合、単元集合、二元集合の固有名を次のように約束する。

  • $`{\bf 0} := \{\}`$
  • $`{\bf 1} := \{0\}`$ (唯一の要素は $`0`$
  • $`{\bf B} := \{0, 1\}`$

事例として三元集合もよく使うので、これも固有名を約束する。

  • $`{\bf A} := \{1, 2, 3\}`$

フリップ付き半環としての二元集合

二元集合 $`{\bf B}`$ には 1 + 1 = 1 な足し算と普通の掛け算を入れて半環と考える。記号の乱用で次のように書く。

$`\quad {\bf B} = ({\bf B}, +, 0, \cdot, 1)`$

掛け算の演算記号 '$`\cdot`$' はしばしば省略される。$`{\bf B}`$ 上の関数 $`\mrm{flip}`$ を次のように定義する。

$`\Subject \mrm{flip}: {\bf B} \to {\bf B} \In {\bf Set}\\
\Define \mrm{flip} :=
\lambda\, x\in {\bf B}.(
\text{if } x= 0 \text{ then } 1 \text{ else } 0
)`$

なお、$`\text{if then else}`$ の代わりに次の書き方(関数値の列挙)も使う。

$`\quad\lambda\, x\in {\bf B}.(
0 \mapsto 1, 1 \mapsto 0
)`$

関数 $`\mrm{flip}`$ をフリップと呼ぶ。フリップも含めた半環を記号の乱用で次のように書く。

$`\quad {\bf B} = ({\bf B}, +, 0, \cdot, 1, \mrm{flip})`$

記号の乱用とは、ボールド体固有名 $`{\bf B}`$ が次の意味でオーバーロードされること。

1. 単なる二元集合
2. 足し算と掛け算を備えた半環
3. 足し算と掛け算とフリップを備えたフリップ付き半環〈semiring with flip〉

集合・関数の一般論から

バカみたいに簡単な集合・関数が、とんでもなく重要な役割りを演じる。重要な関数の名付け・書き方は習慣・伝統に従ったのでまったく統一性はない。一部ローカル記法もあり。

ポインティング関数〈pointing〉

次の同型がある。

$`\For X \in |{\bf Set}|\\
\quad X \cong \mrm{Map}({\bf 1}, X) \In {\bf Set}
`$

この同型を与える関数(左辺から右辺)をポインティング関数ポインティング写像〉と呼ぶ。

$`\For X \in |{\bf Set}|\\
\Subject \mrm{pointingMap}_X : X \to \mrm{Map}({\bf 1}, X) \In {\bf Set}\\
\For a\in X\\
\Define \mrm{pointingMap}_X(a) := (\, \lambda\, u\in {\bf 1}. a \,) \; \in \mrm{Map}({\bf 1}, X)
`$

$`X`$ も引数と考えた場合の $`\mrm{pointingMap}`$ のプロファイルは

$`\Profile \mrm{pointingMap} \in \prod_{X\in |{\bf Set}|} \mrm{Map}(\,X,\; \mrm{Map}({\bf 1}, X) \,)`$

$`\mrm{pointingMap}_X(a)`$ を $`a^\sim`$ と略記する。$`X`$ が何であっても次が成立する。

$`\quad \mrm{pointingMap}_X(a)(0) = a^\sim(0) = a \In X`$

評価関数〈evaluation〉

評価関数(俗称 エバル)は次のように定義する。

$`\For A, B \in |{\bf Set}|\\
\Subject \mrm{ev}_{A, B} : \mrm{Map}(A, B)\times A \to B \In {\bf Set}\\
\For f \in \mrm{Map}(A, B), a \in A\\
\Define \mrm{ev}_{A, B}(f, a) := f(a) \; \in B
`$

$`A, B`$ も引数と考えた場合の $`\mrm{ev}`$ のプロファイルは

$`\Profile \mrm{ev} \in \prod_{(A, B)\in |{\bf Set}|^2}\mrm{Map}(\, \mrm{Map}(A, B) \times A, \, B \,)`$

$`\mrm{ev}_{A, B}`$ の下付き $`A, B`$ はしばしば省略される。

等値関数〈equality〉

等値関数(イコール)は次のように定義する。

$`\For X \in |{\bf Set}|\\
\Subject \mrm{eq}_{X} : X\times X \to {\bf B} \In {\bf Set}\\
\For x, y \in X\\
\Define \mrm{eq}_{X}(x, y) := (x = y) \; \in {\bf B}
`$

イコール記号「$`=`$」は、素朴集合論により定義されているとして、それ以上詮索しない。

$`X`$ も引数と考えた場合の $`\mrm{eq}`$ のプロファイルは

$`\Profile \mrm{eq} \in \prod_{X \in |{\bf Set}|}\mrm{Map}(\, X \times X, \, {\bf B} \,)`$

$`\mrm{eq}_X`$ の下付き $`X`$ はしばしば省略される。イコール記号「$`=`$」と関数記号「$`\mrm{eq}`$」は完全に同義である。次は完全に同じで、書き方の流儀が違うだけで区別しない。

  1. $`x = y`$
  2. $`(=)(x , y)`$
  3. $`\mrm{eq}(x, y)`$
指示関数〈indicator〉

Wikipedia項目「指示関数」 より画像コピー:

注目点はギリシャ文字カイが使われていること。カイを使うのはかなり古くからの習慣。だが、全体集合が暗黙化されるのがちと困る。ここでは、全体集合を(必要なら)上付きで書く: $`\chi_A = \chi^X_A`$ 。

$`X`$ も引数と考えた場合の指示関数 $`\chi`$ のプロファイルは

$`\Profile \chi \in \prod_{X \in |{\bf Set}|}\mrm{Map}(\, \mrm{Pow}(X), \, \mrm{Map}(X, {\bf B}) \,)`$

指示関数でも、省略の程度や書き方の流儀の違いはあるだろう。次は区別しない。引数渡し構文は完全に恣意的(根拠なく偶然で決まる)。

  1. $`\chi_A, \, \chi_A(x)`$
  2. $`\chi_A^X, \, \chi_A^X(x)`$
  3. $`\chi^X(A), \, \chi^X(A)(x)`$
バン関数〈bang〉

ビックリマーク「!」を読み上げるとき「バン〈bang〉」とも読む。「#!」なら「ハッシュ・バン」、特殊な用途があるのでシバン〈シェバン〉と発音する。

$`!_X`$ は「バン・ローワーエックス」「バン・エックス」と読む。

バン関数は次のように定義する。

$`\For X \in |{\bf Set}|\\
\Subject \mrm{bang}_{X} : X \to {\bf 1} \In {\bf Set}\\
\Define \mrm{bang}_{X} := (\lambda\ x\in X.0) \; \in \mrm{Map}(X, {\bf 1})
`$

バン関数は終射〈terminal {morphism | map}〉とも呼ぶ(別名、同義語)。もちろん $`!_X`$ と略記する

$`X`$ も引数と考えた場合のバン関数のプロファイルは

$`\Profile \mrm{bang} \in \prod_{X \in |{\bf Set}|}\mrm{Map}(\, X, \, {\bf 1} \,)`$

定数値関数〈constant〉

ドイツ語では konstant 、Kを使うのは伝統。定数値関数は次のように定義する。

$`\For A, B \in |{\bf Set}|\\
\For b \in B\\
\Subject \mrm{K}_{A, B}^b : A \to B \In {\bf Set}\\
\Define \mrm{K}_{A, B}^b := (\lambda\, x\in A. b) \; \in \mrm{Map}(A, B)
`$

$`A, B`$ も引数と考えた場合の定数値関数 $`\mrm{K}`$ のプロファイルは

$`\Profile \mrm{K} \in \prod_{(A, B) \in |{\bf Set}|^2} \mrm{Map}(\,B, \, \mrm{Map}(A, B) \,)`$

逆像関数と像関数

$`f:A \to B \In {\bf Set}`$ に対して $`f^{-1}`$ は幾つかの意味でオーバーロードされる。そのなかの3つの用法(他の用法もある)。

  1. 逆関数: $`f^{-1} : B \to A \In {\bf Set}`$
  2. 要素の逆像関数: $`f^{-1} : B \to \mrm{Pow}(A) \In {\bf Set}`$
  3. 部分集合の逆像関数: $`f^{-1} : \mrm{Pow}(B) \to \mrm{Pow}(A) \In {\bf Set}`$

ここでは、$`f^{-1}`$ を要素の逆像関数として使う。

部分集合の像関数順像関数〉も使うが、同じ名前 $`f`$ をオーバーロードする。

  • 像関数〈順像関数〉: $`f: \mrm{Pow}(A) \to \mrm{Pow}(B) \In {\bf Set}`$

単元集合上のブール値関数

次が成立する。

  1. $`\mrm{Map}({\bf 1}, {\bf B}) \cong \mrm{Pow}( {\bf 1}) \In {\bf Set}`$ (関数-部分集合)
    • $`(0\mapsto 0) \longleftrightarrow \{\} = {\bf 0}`$
    • $`(0\mapsto 1) \longleftrightarrow \{0\} = {\bf 1}`$
  2. $`\mrm{Map}({\bf 1}, {\bf B}) \cong {\bf B} \In {\bf Set}`$ (関数-値)
    • $`(0\mapsto 0) \longleftrightarrow 0`$
    • $`(0\mapsto 1) \longleftrightarrow 1`$

一番目の関数-部分集合・同型(関数から部分集合)を与える関数は

$`\Subject \mrm{InvImg1} : \mrm{Map}({\bf 1}, {\bf B}) \to \mrm{Pow}({\bf 1}) \In {\bf Set}\\
\For f \in \mrm{Map}({\bf 1}, {\bf B})\\
\Define \mrm{InvImg1}(f) := f^{-1}(1) \; \in \mrm{Pow}({\bf 1})
`$

$`\mrm{InvImg1}`$ は inverse image of 1 から。$`(\hyp^{-1})(1)`$ と完全に同義だが、あえて名前を付けた。

一番目の関数-部分集合・同型(部分集合から関数)を与える関数は、

$`\Subject \mrm{SubsetToPointing} : \mrm{Pow}({\bf 1}) \to \mrm{Map}({\bf 1}, {\bf B}) \In {\bf Set}\\
\For A \in \mrm{Pow}({\bf 1})\\
\Define \mrm{SubsetToPointing}(A) := \chi^{\bf 1}_A \; \in \mrm{Map}({\bf 1}, {\bf B})
`$

$`\mrm{SubsetToPointing}`$ は $`\chi^{\bf 1}_\hyp`$ と完全に同義だが、あえて名前を付けた。指示関数〈indicator function〉とブール値ポインティング関数が同じになる($`\mrm{Map}({\bf 1}, {\bf B})`$ の要素)のは単元集合特有。

ニ番目の関数-値・同型(関数から値)を与える関数は

$`\Subject \mrm{ev0} : \mrm{Map}({\bf 1}, {\bf B}) \to {\bf B} \In {\bf Set}\\
\For f \in \mrm{Map}({\bf 1}, {\bf B})\\
\Define \mrm{ev0}(f) := \mrm{ev}(f, 0) \; \in {\bf B}
`$

$`\mrm{ev0}`$ は evaluation at 0 から。$`\mrm{ev}(\hyp, 0)`$ と完全に同義だが、あえて名前を付けた。

ニ番目の関数-値・同型(値から関数)を与える関数は

$`\Subject \mrm{ValToPointing} : {\bf B} \to \mrm{Map}({\bf 1}, {\bf B}) \In {\bf Set}\\
\For x \in {\bf B}\\
\Define \mrm{valToPointing}(x) := \mrm{pointingMap}_{\bf B}(x) \; \in \mrm{Map}({\bf 1}, {\bf B})
`$

$`\mrm{ValToPointing}`$ は $`\mrm{pointingMap}_{\bf B}(\hyp)`$ と完全に同義だが、あえて名前を付けた。

図式としてまとめると

$`\quad \xymatrix@R+4pc@C+2pc{
{}
&{\mrm{Map}({\bf 1}, {\bf B})} \ar@/_1.5pc/[dl]_-{\mrm{InvImg1}}
\ar@/^1.5pc/[dr]^-{\mrm{ev0}}
&{}
\\
{\mrm{Pow}({\bf 1})} \ar@/_1.5pc/[ur]|{\mrm{SubsetToPointing}}
& {}
& {\bf B} \ar@/^1.5pc/[ul]|{\mrm{ValToPointing}} \ar@{.>}[ll]^{\mrm{bold}}
}\\
\quad \text{commutative } \In {\bf Set}
`$

点線の関数 $`\mrm{bold}`$ は定義してないが、次の関数。

$`\Subject \mrm{bold} : {\bf B} \to \mrm{Pow}({\bf 1}) \In {\bf Set}\\
\Define \mrm{bold} := \lambda\, x\in {\bf B}.(0 \mapsto {\bf 0}, 1\mapsto {\bf 1})
`$

見た目上、普通のフォントをボールドフォント〈太字〉に変えているだけなので、関数名を 'bold' にした。$`\mrm{bold}`$ の逆関数(逆像関数ではない!)$`\mrm{unbold}`$ も容易に定義できる。

$`\Profile \mrm{unbold} : \mrm{Pow}({\bf 1}) \to {\bf B} \In {\bf Set}`$

関数のペアが互いに逆で、同型を与えることは次のように書ける。

  1. $`\mrm{InvImg1};\mrm{SubsetToPointing} = \id_{\mrm{Map}({\bf 1}, {\bf B})} \In {\bf Set}`$
  2. $`\mrm{SubsetToPointing}; \mrm{InvImg1}; = \id_{\mrm{Pow}({\bf 1})} \In {\bf Set}`$
  3. $`\mrm{ev0} ; \mrm{ValToPointing} = \id_{ \mrm{Map}({\bf 1}, {\bf B})} \In {\bf Set}`$
  4. $`\mrm{ValToPointing}; \mrm{ev0} = \id_{{\bf 1} } \In {\bf Set}`$
  5. $`\mrm{bold}; \mrm{unbold} = \id_{\bf B}`$
  6. $`\mrm{unbold}; \mrm{bold} = \id_{\mrm{Pow}({\bf B})}`$

一般の集合上のブール値関数

単元集合とは限らない集合 $`X`$ では次は成立しない(正確に言えば「常に成立することを保証できない」)。

  1. $`\mrm{Mpa}(X, {\bf B}) \cong \mrm{Pow}({\bf 1}) \In {\bf Set}`$
  2. $`\mrm{Mpa}(X, {\bf B}) \cong {\bf B} \In {\bf Set}`$

上の2つが成立しないことを、まとめて次のような日本語で表現する。

  • 一般に、$`X`$ 上のブール値関数は2つだけとは限らない。2つ以上のブール値関数があるかも知れない

例 1: $`{\bf A} = \{1, 2, 3\}`$ 上のブール値関数は $`2^3 = 8`$ 個ある。
例 2: 空集合 $`\{\}`$ 上のブール値関数は1個だけある。
例 3: 二元集合 $`{\bf B}`$ 上のブール値関数は4個ある。
例 4: 四元集合 $`{\bf B}\times {\bf B}`$ 上のブール値関数は16個ある。幾つかを行列として書いてみると: $`\begin{bmatrix} 0 & 0 \\ 0 & 0\end{bmatrix},
\begin{bmatrix} 0 & 1 \\ 0 & 0\end{bmatrix},
\begin{bmatrix} 1 & 0 \\ 0 & 1\end{bmatrix},
\begin{bmatrix} 1 & 1 \\ 1 & 1\end{bmatrix}
`$
例 5: $`\mrm{Map}({\bf A}, {\bf B})`$ 上のブール値関数は $`2^8 = 2^4 \times 2^4 = 256`$ 個ある。8ビット = 1バイト のデジタルデータとしてエンコードできる。関数ごとに256色の一色を担当色に割り当てることができる。→ 8ビットカラーメンバーカラー担当カラー

注意: 例 5 の $`\mrm{Map}(\mrm{Map}({\bf A}, {\bf B}), {\bf B})`$ の要素(256個ある)は、ブール値関数を引数にもらってブール値を返すので、メタ・ブール値関数とも呼ぶ。「メタ」は「高階」と同義で、それ以上でもそれ以下でもない(単なる形容詞)。$`\mrm{Map}(\mrm{Map}({\bf 1}, {\bf B}), {\bf B})`$ の要素も定義上メタ・ブール値関数である($`{\bf 1}`$ をのけ者扱いしない!)。$`\mrm{Map}(\mrm{Map}({\bf 0}, {\bf B}), {\bf B})`$ の要素も定義上メタ・ブール値関数である($`{\bf 0}`$ をのけ者扱いしない!)。

単元集合では事情が特殊だった。

  • 単元集合上では、ブール値関数はちょうど2つだけである。その2つはブール値と同一視できる

一般の集合 $`X`$ でも次は成立する。

  • $`\mrm{Mpa}(X, {\bf B}) \cong \mrm{Pow}({X})`$ (一般の関数-部分集合)

次のように図示できる。

$`\quad \xymatrix@R+4pc@C+2pc{
{}
&{\mrm{Map}(X, {\bf B})} \ar@/_1.5pc/[dl]_-{\mrm{InvImg1}_X}
\ar[dr]^{\mrm{ev}_{X, {\bf B}}(\hyp, a)}
&{}
\\
{\mrm{Pow}(X)} \ar@/_1.5pc/[ur]|{\mrm{SubsetToIndicator}_X}
& {}
& {\bf B}
}\\
\quad \text{commutative } \In {\bf Set}
`$

関数 $`\mrm{InvImg1}_X, \mrm{SubsetToIndicator}_X, \mrm{ev}_{X, {\bf B}}(\hyp, a)`$ の定義は単元集合の場合と変わらない。定義は省略する。具体例を挙げる。

集合 $`{\bf A}`$ 上のブール値関数は、次の形で書ける。

$`\quad \lambda\, x\in {\bf A}.(
1 \mapsto 0, 2 \mapsto 1, 3 \mapsto 1
)`$

これを次の形に略記する(ここだけ一時的)。

$`\quad \mrm{fun}(0, 1, 1) : {\bf A} \to {\bf B} \In {\bf Set}`$

$`\mrm{InvImg1}_{\bf A}`$ の値を全部列挙する。

  1. $`\mrm{InvImg1}(\mrm{fun}(0, 0, 0)) = \{\}`$
  2. $`\mrm{InvImg1}(\mrm{fun}(1, 0, 0)) = \{1\}`$
  3. $`\mrm{InvImg1}(\mrm{fun}(0, 1, 0)) = \{2\}`$
  4. $`\mrm{InvImg1}(\mrm{fun}(0, 0, 1)) = \{3\}`$
  5. $`\mrm{InvImg1}(\mrm{fun}(1, 1, 0)) = \{1, 2\}`$
  6. $`\mrm{InvImg1}(\mrm{fun}(1, 0, 1)) = \{1, 3\}`$
  7. $`\mrm{InvImg1}(\mrm{fun}(0, 1, 1)) = \{2, 3\}`$
  8. $`\mrm{InvImg1}(\mrm{fun}(1, 1, 1)) = \{1, 2, 3\}`$

$`\mrm{SubsetToIncicatro}_{\bf A}`$ の値を全部列挙する。

  1. $`\mrm{SubsetToIncicatro}(\{\}) = \mrm{fun}(0, 0, 0)`$
  2. $`\mrm{SubsetToIncicatro}(\{1\}) = \mrm{fun}(1, 0, 0)`$
  3. $`\mrm{SubsetToIncicatro}(\{2\}) = \mrm{fun}(0, 1, 0)`$
  4. $`\mrm{SubsetToIncicatro}(\{3\}) = \mrm{fun}(0, 0, 1)`$
  5. $`\mrm{SubsetToIncicatro}(\{1, 2\}) = \mrm{fun}(1, 1, 0)`$
  6. $`\mrm{SubsetToIncicatro}(\{1, 3\}) = \mrm{fun}(1, 0, 1)`$
  7. $`\mrm{SubsetToIncicatro}(\{2, 3\}) = \mrm{fun}(0, 1, 1)`$
  8. $`\mrm{SubsetToIncicatro}(\{1, 2, 3\}) = \mrm{fun}(1, 1, 1)`$

要するに:

  1. $`\mrm{fun}(0, 0, 0) \longleftrightarrow \{\}`$
  2. $`\mrm{fun}(1, 0, 0) \longleftrightarrow \{1\}`$
  3. $`\mrm{fun}(0, 1, 0) \longleftrightarrow \{2\}`$
  4. $`\mrm{fun}(0, 0, 1) \longleftrightarrow \{3\}`$
  5. $`\mrm{fun}(1, 1, 0) \longleftrightarrow \{1, 2\}`$
  6. $`\mrm{fun}(1, 0, 1) \longleftrightarrow \{1, 3\}`$
  7. $`\mrm{fun}(0, 1, 1) \longleftrightarrow \{2, 3\}`$
  8. $`\mrm{fun}(1, 1, 1) \longleftrightarrow \{1, 2, 3\}`$

これで、次の同型を具体的に確認した。

$`\quad \mrm{Map}({\bf A}, {\bf B}) \cong \mrm{Pow}({\bf A}) \In {\bf Set}`$

ゼロ、ワン、ワンの選択

$`\For X\in |{\bf Set}|\\
\Subject \mrm{Zero}_X : X \to {\bf B} \In {\bf Set}\\
\Define \mrm{Zero}_X := (\lambda\, x\in X.0) \; \in \mrm{Map}(X, {\bf B})
`$

$`\For X\in |{\bf Set}|\\
\Subject \mrm{One}_X : X \to {\bf B} \In {\bf Set}\\
\Define \mrm{One}_X := (\lambda\, x\in X.1) \; \in \mrm{Map}(X, {\bf B})
`$

$`\mrm{Zero}_X, \mrm{One}_X`$ の下付き $`X`$ は省略することがある。$`\mrm{Zero}_X, \mrm{One}_X`$ は定数値関数/指示関数だから、次が成立する。

$`\quad \mrm{Zero}_X = \mrm{K}_{X, {\bf B}}^0 \; : X \to {\bf B} \In {\bf Set}\\
\quad \mrm{One}_X = \mrm{K}_{X, {\bf B}}^1 \; : X \to {\bf B} \In {\bf Set}\\
\quad \mrm{Zero}_X = \chi^X_{\bf 0} \; : X \to {\bf B} \In {\bf Set} \\
\quad \mrm{One}_X = \chi^X_X \; : X \to {\bf B} \In {\bf Set}
`$

$`X = {\bf 1}`$ と置いても、もちろんよい。

$`\Profile \mrm{Zero}_{\bf 1} : {\bf 1} \to {\bf B} \In {\bf Set} \\
\Profile \mrm{One}_{\bf 1} : {\bf 1} \to {\bf B} \In {\bf Set}
`$

次が成立する。

$`\quad \mrm{Zero}_{\bf 1} = 0^\sim \; : {\bf 1} \to {\bf B} \In {\bf Set} \\
\quad \mrm{One}_{\bf 1} = 1^\sim \; : {\bf 1} \to {\bf B} \In {\bf Set} \\
\quad \mrm{Zero}_{\bf 1} = \mrm{K}_{{\bf 1}, {\bf B}}^0 \; : {\bf 1} \to {\bf B} \In {\bf Set}\\
\quad \mrm{One}_{\bf 1} = \mrm{K}_{{\bf 1}, {\bf B}}^1 \; : {\bf 1} \to {\bf B} \In {\bf Set}\\
\quad \mrm{Zero}_{\bf 1} = \chi^{\bf 1}_{\bf 0} \; : {\bf 1} \to {\bf B} \In {\bf Set} \\
\quad \mrm{One}_{\bf 1} = \chi^{\bf 1}_{\bf 1} \; : {\bf 1} \to {\bf B} \In {\bf Set}
`$

$`\mrm{Map}(X, {\bf B})`$ 上のブール値関数 $`\mrm{PickOne}_X`$ を定義する。

$`\For X\in |{\bf Set}|\\
\Subject \mrm{PickOne}_X : \mrm{Map}(X, {\bf B}) \to {\bf B} \In {\bf Set}\\
\Define \mrm{PickOne}_X := \\
\quad (\, \lambda\, f\in \mrm{Map}(X, {\bf B}). (
\text{if } f = \mrm{One}_X \text{ then } 1 \text{ else } 0 )
\,) \\
\quad \in \mrm{Map}(\mrm{Map}(X, {\bf B}), {\bf B})
`$

比喩的に言うと、$`\mrm{PickOne}`$ は、関数 $`\mrm{One}`$ だけを拾い出して〈pick up して〉、その他の関数をすべて“捨ててしまう”。「捨ててしまう」の意味は、値を $`0`$ とすること。

注意: $`\mrm{PicOne}`$ は $`\mrm{Map}(\mrm{Map}({\bf A}, {\bf B}), {\bf B})`$ の要素だから、“全員で256人のグループの特定のメンバー”(比喩)である。担当色は何かな?(ジョーク)

$`\mrm{PickOne}_{\bf A}`$ の値を全部列挙する。

  1. $`\mrm{PickOne}(\mrm{fun}(0, 0, 0)) = 0`$
  2. $`\mrm{PickOne}(\mrm{fun}(1, 0, 0)) = 0`$
  3. $`\mrm{PickOne}(\mrm{fun}(0, 1, 0)) = 0`$
  4. $`\mrm{PickOne}(\mrm{fun}(0, 0, 1)) = 0`$
  5. $`\mrm{PickOne}(\mrm{fun}(1, 1, 0)) = 0`$
  6. $`\mrm{PickOne}(\mrm{fun}(1, 0, 1)) = 0`$
  7. $`\mrm{PickOne}(\mrm{fun}(0, 1, 1)) = 0`$
  8. $`\mrm{PickOne}(\mrm{fun}(1, 1, 1)) = 1`$

$`\mrm{PickOne'}_X`$ は $`\mrm{PickOne}_X`$ とほぼ同じだが、次の図式を可換にする関数。

$`\quad \xymatrix@R+1pc@C+2pc{
{\mrm{Map}(X, {\bf B})} \ar[r]^{\mrm{PickOne'}_X}
\ar[dr]_{\mrm{PickOne}_X}
& {\mrm{Map}({\bf 1}, {\bf B})}
\\
{}
& {\bf B} \ar[u]_{\mrm{ValToPointing}}
}\\
\quad \text{commutative }\In {\bf Set}
`$

$`\mrm{PickOne'}_{\bf A}`$ の値を全部列挙する。$`\mrm{fun}(0)`$ は関数 $`(0\mapsto 0)`$ のこと。

  1. $`\mrm{PickOne'}(\mrm{fun}(0, 0, 0)) = \mrm{fun}(0)`$
  2. $`\mrm{PickOne'}(\mrm{fun}(1, 0, 0)) = \mrm{fun}(0)`$
  3. $`\mrm{PickOne'}(\mrm{fun}(0, 1, 0)) = \mrm{fun}(0)`$
  4. $`\mrm{PickOne'}(\mrm{fun}(0, 0, 1)) = \mrm{fun}(0)`$
  5. $`\mrm{PickOne'}(\mrm{fun}(1, 1, 0)) = \mrm{fun}(0)`$
  6. $`\mrm{PickOne'}(\mrm{fun}(1, 0, 1)) = \mrm{fun}(0)`$
  7. $`\mrm{PickOne'}(\mrm{fun}(0, 1, 1)) = \mrm{fun}(0)`$
  8. $`\mrm{PickOne'}(\mrm{fun}(1, 1, 1)) = \mrm{fun}(1)`$

問題 1

関数集合 $`\mrm{Map}({\bf A}, {\bf B})`$ には、8つの関数が含まれる。

$`\quad f, g \in \mrm{Map}({\bf A}, {\bf B})`$

という前提は、「$`f, g`$ が8つの関数のどれかである」という条件を述べている。$`f, g`$ は自由に組み合わせてよいので、ペア $`(f, g)`$ は $`8\times 8 = 64`$ 個ある。その64個全体に対して、次の3つの主張は同じことを主張しているか? よくわからないなら $`f, g`$ の具体例で確認してみよ。なんなら、全数確認(64個を確認)すれば確実。

  1. $`f = g`$
  2. $`\mrm{PickOne}(f) = \mrm{PickOne}(g)`$
  3. $`\mrm{PickOne'}(f) = \mrm{PickOne'}(g)`$

一般に、任意の集合 $`X`$ に対して、$`f, g\in \mrm{Map}(X, {\bf B})`$ として、次の3つの主張は同じことを主張しているか?

  1. $`f = g`$
  2. $`\mrm{PickOne}_X(f) = \mrm{PickOne}_X(g)`$
  3. $`\mrm{PickOne'}_X(f) = \mrm{PickOne'}_X(g)`$

問題 2

関数 $`\mrm{ExcludeZero}_X`$ を次のように定義する。

$`\For X\in |{\bf Set}|\\
\Subject \mrm{ExcludeZero}_X : \mrm{Map}(X, {\bf B}) \to {\bf B} \In {\bf Set}\\
\For f \in \mrm{Map}(X, {\bf B})\\
\Define \mrm{ExcludeZero}_X(f) := \mrm{flip}(\mrm{PickOne}_X( f ; \mrm{flip} ) )
`$

$`\mrm{ExcludeZero}_{\bf A}`$ の値を全部列挙してみよ。

比喩的に言うと、$`\mrm{ExcludeZero}`$ は、関数 $`\mrm{Zero}`$ だけを“除外”して〈exclude して〉、その他の関数をすべて“拾い上げる”。「除外」の意味は、値を $`0`$ とすること。

注意: $`\mrm{ExcludeZero}`$ は $`\mrm{Map}(\mrm{Map}({\bf A}, {\bf B}), {\bf B})`$ の要素だから、“全員で256人のグループの特定のメンバー”(比喩)である。担当色は何かな?(ジョーク)

一般に、任意の集合 $`X`$ に対して、$`f, g\in \mrm{Map}(X, {\bf B})`$ として、次の2つの主張は同じことを主張しているか?

  1. $`f = g`$
  2. $`\mrm{ExcludeZero}_X(f) = \mrm{ExcludeZero}_X(g)`$

問題 3

一般に、関数 $`F: S \to T \In {\bf Set}`$ があるとき、$`s, s' \in S`$ として、次の2つの主張は同じことを主張しているか?

  1. $`s = s' \In S`$
  2. $`F(s) = F(s') \In T`$

具体例として、$`S = {\bf R}, T = {\bf Z}`$ と置いて、関数 $`F: {\bf R} \to {\bf Z}`$ は実数の整数部分 $`\mrm{floor}`$ (床関数と天井関数 参照)だとして、次の2つの主張は同じことを主張しているか?

  1. $`s = s' \In {\bf R}`$
  2. $`\mrm{floor}(s) = \mrm{floor}(s') \In {\bf Z}`$


総括的に言えば:

  • 「関数値が等しくなること」と「入力した引数値が等しいこと」を同じことだと思っているなら、それは誤解・誤認である。間違った認識なので修正しなくてはならない。
  • 関数の学習の第一歩は、「引数値が等しい」、「関数値が等しい」、「関数が等しい」を区別して、その相互関係を理解することである。

論理の方言

どんな分野でも固有の歴史と文化があるから、分野固有の用語を変えることは(ほぼ)出来ない。が、翻訳することはできる。以下、ブール値とは、「true としての 1 または false としての 0」のこと。

論理の方言 普通の言い方
述語〈predicate〉 ブール値の関数
論理式〈{logical}? formula〉 ブール値の関数を定義するための式
述語/論理式の論域〈domain of discourse〉 ブール値の関数の域
個体〈individual {entity}?〉 ブール値の関数の域の要素
項〈term〉 ブール値とは限らない一般的集合(例:実数の集合)の要素を表す式
n項関係記号〈n-ary relation symbol〉 n変数のブール値関数の関数記号〈関数名〉
n項述語記号〈n-ary predicate symbol〉 n変数のブール値関数の関数記号〈関数名〉
恒真述語/恒真式〈tautology | {valid | tautological} formula〉 値が常に 1 の定数値関数
述語/論理式が同値〈equivalent〉 関数が等しい
述語/論理式が成立〈hold〉する 関数が、値 1 の定数値関数と等しい
述語/論理式の外延〈extension〉 関数の、値 1 に対する逆像集合

きつい方言で困惑したり変な連想をしてしまう人は、右側の「普通の言い方」に翻訳してから解釈する。言い方が独特なだけで内容は普通のこと。集合と関数の計算の範囲内で考えること。

「命題」という言葉はテクニカルタームというより国語辞書的に使っているが、次の意味で解釈・運用する。

  • 主語を特定したときに、真偽が判定可能な文
  • 主語を特定しないときには、真か偽のどちらかとは断言できない。
  • 真偽判定は、超越的な全能者(ようするに神様)を想定する。人間やコンピューターが判定できなくてもかまわない。
論理の非テクニカルターム 普通の言い方
主語 ブール値関数への引数
主語・述語が揃った文 引数を渡したブール値関数
主語・述語が揃った文の真偽値 引数を渡したブール値関数の関数値

「非テクニカルターム」とは正式なテクニカルタームとは言いにくい、半分国語辞書的な言い方のこと。半分国語辞書的だから余計に誤解やマズい連想を誘発するかも知れない。

悪習も他分野と同様。論理だから悪習がない、なんてことはない

  1. ラムダ記号〈関数抽象〉はしばしば(ほとんどかも)省略されるので、論理式(記号的表現)と述語(関数)の区別は曖昧。この悪習は中学校以来; $`2x + 1`$ が単に一次式(記号的表現)か一次関数かは曖昧。
  2. 述語/論理式の論域を明示しない。文脈や空気から推測させる。これも中学校以来の悪習。だが、読む側は明確に論域を把握しなければいけない。これは「プロファイリングしろよ」の一例に過ぎない。プロファイリングの習慣が付いていれば、論域を確定するはず。
  3. 命題のレベル(提示されただけ)と判断のレベル(ファクトチェック付きの主張)が曖昧。判断を示す記号はあるが、ちゃんと使う習慣はない。(が、専門家が書いたものを読むと、やっぱりちゃんとしてるわ。)
  4. 「真偽値」の意味が曖昧。真偽値はブール値と解釈されることが多いので、僕は「外延」を使うことにした。論域を $`X`$ として、述語/論理式の外延は $`\mathrm{Pow}(X)`$ の要素。

ほんとに基本的な同型

ほんとに基本的なんだけど、納得も利用もなかなかに難しいようだ。が、ほんとに基本的なんだから納得してくれ。ほんとに基本的な同型による対応は、場合により同一視に使われる。$`\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\In}{\text{ in }}
\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\u}[1]{\underline{#1}}
\newcommand{\o}[1]{\overline{#1}}
\newcommand{\hyp}{\text{-} }
`$

内容:

同型

約束:

  1. 大文字は集合
  2. $`{\bf B}`$ は二値真偽値の集合
  3. $`{\bf 1}`$ は特定された単元集合、ここでは $`{\bf 1} = \{*\}`$ とするが、唯一の要素は何でもいい。
  4. $`\mrm{Pow}_{\lt \infty}(\hyp)`$ は、有限(基数が $`\infty`$ 未満)な部分集合の集合
  5. $`\mrm{Pow}_1(\hyp)`$ は、単元(基数がちょうど $`1`$)な部分集合の集合
  6. $`\mrm{finSupp}, \mrm{singSup}`$ は次節で説明

同型:

  1. $`\mrm{Pow}(X) \cong \mrm{Map}(X, {\bf B})`$
  2. $`\mrm{Map}({\bf 1}, Y) \cong Y`$
  3. $`\mrm{Pow}({\bf 1}) \cong \mrm{Map}({\bf 1}, {\bf B}) \cong {\bf B}`$
  4. $`\mrm{Pow}_{\lt \infty}(X) \cong \mrm{Map}_\mrm{finSupp}(X, {\bf B})`$
  5. $`\mrm{Pow}_1(X) \cong \mrm{Map}_\mrm{singSupp}(X, {\bf B})`$
  6. $`\mrm{Pow}_1(X) \cong X`$

納得できるかどうかは、「集合、要素、関数〈写像〉、二値真偽値」という概念を理解してるかどうか? による。必要なら「集合、要素、関数〈写像〉、二値真偽値」を最初から復習。

関数のサポート集合

$`R`$ は半環とする。半環だからゼロ $`0 \in R`$ がある。半環*1への関数 $`f`$ に対して、そのサポート集合(あるいは単にサポート) $`\mrm{Supp}(f)`$ を定義できる。

$`\text{For }f\in \mrm{Map}(X, R)\\
\quad \mrm{Supp}(f) := \{x\in X \mid f(x) \ne 0\}
`$

  • サポートが有限集合である関数を有限サポートな関数と呼ぶ。
  • サポートが単元集合である関数を単元サポートな関数と呼ぶ。
  • $`\mrm{Map}_\mrm{finSupp}(X, R)`$ : 有限サポートな関数の全体
  • $`\mrm{Map}_\mrm{singSupp}(X, R)`$ : 単元サポートな関数の全体

$`\mrm{Supp}`$ 自体のプロファイルは:

$`\quad \mrm{Supp} = \mrm{Supp}_{X, R} \;: \mrm{Map}(X, R) \to \mrm{Pow}(X) \text{ in }{\bf Set}`$

もし、パイ型を知っているならば:

$`\quad \mrm{Supp} \in \prod_{R\in |{\bf Semiring}|} \prod_{X\in |{\bf Set}|} \mrm{Map}( \mrm{Map}(X, R) , \mrm{Pow}(X))`$

同型を与える写像(左右両方)

同型を与える写像も具体的に書き下せないと困る。

部分集合から述語

◎$`\quad \mrm{Pow}(X)\ni A \mapsto (\lambda\, x\in X.(\, x\in A\,)) \in \mrm{Map}(X, {\bf B})`$

$`\lambda\, x\in X.(\, x\in A\,)`$ を、部分集合 $`A`$ の指示関数〈indicator function〉と呼ぶ。

ギリシャ文字カイを使って $`\chi_A`$ と書くのが習慣、したがって:

◎$`\quad \mrm{Pow}(X)\ni A \mapsto \chi_A \in \mrm{Map}(X, {\bf B})`$

述語から部分集合

◎$`\quad \mrm{Map}(X, {\bf B}) \ni p \mapsto \{x\in X\mid p(x)\} \in \mrm{Pow}(X)`$

述語から、その外延である部分集合。外延を作るのが内法的記法

ポインティング関数から要素

◎$`\quad \mrm{Map}({\bf 1}, Y) \ni \beta \mapsto \beta(*) \in Y`$

ポインティング関数は、いわゆる「引数が無い関数/引数を持たない関数」。だが、引数はあるからね。$`\beta(*)`$ を $`\beta()`$ と略記する習慣があるだけ。

要素からポインティング関数

◎$`\quad Y \ni b \mapsto (\lambda\, u\in {\bf 1}.\, b) \in \mrm{Map}({\bf 1}, Y)`$

$`\lambda\, u\in {\bf 1}.\, b`$ を、$`b^\sim`$ と略記すると:

◎$`\quad Y \ni b \mapsto b^\sim \in \mrm{Map}({\bf 1}, Y)`$

単元集合の部分集合、真偽値ポインティング関数、真偽値

$`X = {\bf 1}`$ と置いて、$`\mrm{Pow}(X) \cong \mrm{Map}(X, {\bf B})`$ と $`\mrm{Map}({\bf 1}, Y) \cong Y`$ を組み合わせれば:

$`\quad \mrm{Pow}({\bf 1}) \cong \mrm{Map}({\bf 1}, {\bf B}) \cong {\bf B}`$

が出る。同型を与える写像も結合〈合成〉すればよい。

有限部分集合から有限サポート述語

対応は、部分集合から述語と同じ。有限部分集合の指示関数は有限サポート関数(述語)になる。

有限サポート述語から有限部分集合

対応は、述語から部分集合と同じ。有限サポート述語の外延は有限部分集合になる。

単元部分集合から単元サポート述語

対応は、部分集合から述語と同じだが、単元サポート述語はデルタで書くのが習慣。

◎$`\quad \mrm{Pow}(X)\ni \{a\} \mapsto \delta_a \in \mrm{Map}(X, {\bf B})`$

ここで:

$`\quad \delta_a = \lambda\, x\in X.\, \mrm{eq}_X(a, x)`$

もっと簡略に書けば:

$`\quad \delta_a = \lambda\, x\in X.(\, a = x\,)`$

ニ変数のデルタ(オーバーロード)との関係は:

$`\quad \delta_a(x) = \delta(a, x)`$

当然ながら:

$`\quad \delta_a = \chi_{\{a\}}`$

単元サポート述語から単元部分集合

対応は、述語から部分集合と同じ。単元サポート述語の外延は単元部分集合になる。

単元部分集合から要素

◎$`\quad \mrm{Pow}_1(X)\ni A \mapsto \varepsilon\, A \in X`$

$`\varepsilon`$ はヒルベルトのイプシロン記号。一般に、$`\varepsilon`$ は集合から要素を超越的無作為に取り出すオペレーターだが、単元集合なら結果が一意的。

要素から単元部分集合

◎$`\quad X \ni a \mapsto \{a\} \in \mrm{Pow}_1(X)`$

*1:実際には、(役割り名で)“ゼロ”と呼ばれるなんらかの要素が特定されていれば、必ずしも半環である必要はない。

「ならば」問題の対処法

古典論理の「ならば」を誤解・曲解したままで、「ならば」を使えない/間違える人は多い。「前件($`\Rightarrow`$ の左側)が偽なら含意命題は真」というところがカナメ。$`\Rightarrow`$ は演算記号で関係記号ではない。のだが、関係記号としてもオーバーロードされている(これも酷いハナシだ)。

檜山は「宝くじが当たった ならば フェラーリを買う」のような例をよく出していた。「宝くじが当たらなかった」ときは、後件($`\Rightarrow`$ の左側)は見なくていい。「宝くじが当たらないのにフェラーリを買った」としても真だ、と。

だが、こういう説明をしても、ほんとに古典論理の「ならば」の説明になっているかどうかはあやしいし、かえって誤解・曲解へと導く可能性だってある。

下の真偽表を常に思い出せ、というのは良いアドバイスになる。false は一箇所しかない。

↓第一引数 →第ニ引数 true false
true true false
false true true

が、述語論理になると、またわからなくなってしまうようだ。

AND, OR, NOT までは集合との対応ちゃんと教えるのに、IMPLY(ならば)になると何故か集合との対応に言及しなくなってしまうのが原因のような気がする。AND, OR, NOT までは、述語に外延(集合)のイメージを持てるのだが、IMPLYになると自然言語の「ならば」に寄ってしまう。で、わけがわからなくなってトンチンカンをやらかす。IMPLYの正しい運用、推論が出来ない、と。

「ならば」がわかるように“集合と論理”をやり直すなら、次の手順がいいと思う。

  1. 部分集合の演算 $`\cap, \cup, (\text{-})^c`$ をベン図で学ぶ。これは既にやってると思う。
  2. 部分集合の演算 $`\setminus`$(差)、$`\triangle`$(対称差)をベン図で学ぶ。対称差のベン図
  3. 部分集合の演算 $`{-\!\triangleright}`$(差の補集合)、$`\triangleleft\!\!-\!\!\triangleright`$(対称差の補集合)をベン図で学ぶ。biconditional〈双条件〉のベン図
  4. 「部分集合 $`\mapsto`$ 述語」対応により、$`\Rightarrow, \Leftrightarrow`$ を導入。
  5. 射影により $`\exists, \forall`$ を導入。全称限量子は、補集合を射影して補集合をとる。単元集合をちゃんと使う。
  6. 自然言語の例えは使わない。$`\Rightarrow, \Leftrightarrow, \sqsubseteq, \equiv`$ の解釈もひたすらベン図を描く。述語の外延〈広義の真偽値〉に対する強固なメンタルモデルを作る。
  7. 集合と論理の習慣の違いを知る。
    1. 「$`X`$ の部分集合 $`A`$」と書いて、「$`A = X`$」を意味することはない。部分集合自体と、部分集合のあいだの演算・関係が混同されることはない。
    2. 「$`X`$ 上の述語 $`p`$」と書いて、「$`p = \mathrm{True}_X \text{ in }\mathrm{Pred}[X]`$」を意味することがある。さらには、ラムダ記号(関数抽象)や全称限量子(特殊な射影)、判断記号の省略もある。

演算の対応表:

$`\cap`$ $`\land`$
$`\cup`$ $`\lor`$
$`(\text{-})^c`$ $`\lnot`$
$`{-\!\triangleright}`$ $`\Rightarrow`$
$`\triangleleft\!\!-\!\!\triangleright`$ $`\Leftrightarrow`$

関係の対応表:

$`\subseteq`$ $`\sqsubseteq`$
$`=`$ $`\equiv`$

アルファ図法/V字論法と列挙確認

有限集合だけを考える。

  1. $`A = \{a_1, a_2, a_3\}`$
  2. $`B = \{b_1, b_2\}`$
  3. $`C = \{c_1, c_2\}`$

$`A`$ を次のように描く、$`B, C`$ も同様。


  1. 関数も関係も集合だと思えば列挙可能。有限集合の世界では、あらゆるものが具体的に列挙可能
  2. 関数は逆関数が作れないときがあるが、関係だと思えば転置は常に可能。
  3. 直積、ファイバー積、関係の結合〈composition〉、ジョインも列挙可能。
  4. ファイバー積と結合では中間情報は捨てる。ジョインは中間情報も残す。

書き出すときに面倒なら、$`A, B, C \subseteq {\bf N}`$ と考えてしまってもかまわない。それなら:

  1. $`A = \{1, 2, 3\}`$
  2. $`B = \{1, 2\}`$
  3. $`C = \{1, 2\}`$
記法

ここの $`f, g`$ は一般名。

  • $`\newcommand{\NFProd}[3]{ \mathop{_{#1} \!\underset{#2}{\times}\,\!_{#3} } }A\NFProd{f}{B}{g}C`$ ファイバー積、$`B`$ の情報を捨てる。
  • $`\newcommand{\NJoin}[3]{ \mathop{_{#1} \!\underset{#2}{\Join}\,\!_{#3} } } A\NJoin{f}{B}{g}C`$ ジョイン、$`B`$ の情報を残す。
  • $`f;g`$ 関係の結合、関数も関係の一種とみなす。
  • $`f^t`$ 関係の転置、関数も関係の一種とみなす。
  • $`A\times C`$ 単なる直積
設定

ここから先、$`f, g,h,i`$ は固有名。


プロファイル
  1. $`f\subseteq A\times B`$ つまり $`f \in {\bf UTens}(A, B) = \mathrm{Pow}(A\times B)`$
  2. $`g\subseteq C\times B`$
  3. $`h\subseteq C\times B`$
  4. $`i\subseteq A\times B`$
  5. $`A\NFProd{f}{B}{g}C \subseteq A\times C`$
  6. $`A\NJoin{f}{B}{g}C \subseteq A\times B \times C`$
  7. $`f; g^t \subseteq A\times C`$
  8. $`g; f^t \subseteq C\times A`$
  9. $`A\NFProd{f}{B}{h}C \subseteq A\times C`$
  10. $`A\NJoin{f}{B}{h}C \subseteq A\times B \times C`$
  11. $`f; h^t \subseteq A\times C`$
  12. $`h; f^t \subseteq C\times A`$
  13. $`A\NFProd{i}{B}{h}C \subseteq A\times C`$
  14. $`A\NJoin{i}{B}{h}C \subseteq A\times B \times C`$
  15. $`i; h^t \subseteq A\times C`$
  16. $`h; i^t \subseteq C\times A`$
問題 1

要素をすべて列挙せよ。

  1. $`f`$
  2. $`g`$
  3. $`h`$
  4. $`i`$
  5. $`A\NFProd{f}{B}{g}C`$
  6. $`A\NJoin{f}{B}{g}C`$
  7. $`f; g^t`$
  8. $`g; f^t`$
  9. $`A\NFProd{f}{B}{h}C`$
  10. $`A\NJoin{f}{B}{h}C`$
  11. $`f; h^t`$
  12. $`h; f^t`$
  13. $`A\NFProd{i}{B}{h}C`$
  14. $`A\NJoin{i}{B}{h}C`$
  15. $`i; h^t`$
  16. $`h; i^t`$
問題 2

要素をすべて列挙せよ。

  1. $`A\times C`$
  2. $`A\times B \times C`$
  3. $`A\NFProd{!_A}{\bf 1}{!_C}C`$
  4. $`A\NJoin{!_A}{\bf 1}{!_C}C`$
問題 3

問題1で列挙した結果を眺めて、次の一般的定理が成立することを確認せよ。以下で出てくる名前は、今までの固有名ではなくて、一般論における一般的定理を記述する一般名。例えば、$`A`$ は一般的になんらかの集合であって、三元集合とは限らない(老婆心で注意)。

  1. $`A\NFProd{f}{B}{g}C \cong f;g^t`$ (イコールだとしても、それを $`\cong`$ と書いて悪いわけではない。)
  2. $`(A\NFProd{f}{B}{g}C)^t \cong g;f^t`$
  3. $`A\NFProd{f}{B}{g}C \cong \sum_{b \in B}(f^{-1}(b) \times g^{-1}(b))`$
  4. $`(A\NFProd{f}{B}{g}C)^t \cong \sum_{b \in B}(g^{-1}(b) \times f^{-1}(b))`$

アルファさんのn点形とn点折れ線

(仮名)アルファさんの図法は、ちょっと衝撃的だった。「こだわりのなさ」に驚いた。アルファ図法のアイディアをまとめておく。$`\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\In}{\text{ in }}
\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\u}[1]{\underline{#1}}
\newcommand{\o}[1]{\overline{#1}}
\newcommand{\hyp}{\text{-} }
`$

内容:

座標軸と点

原則として、有限集合とその直積を考える。話は無限集合でも通用するが、アルファさん自身は無限集合を考えてない。

  • 線分で有限集合を表す。ただし、線分自体は“入れ物/置き場所”に過ぎない。
  • 有限集合の要素は、線分上の“目盛り”で表す。
  • “目盛り”がない線分は空集合を表す。
  • 線分の飾りや向き・位置などは何でもいい(これ重要)。

“座標軸”っぽい飾りを付けてもいいが、飾りはなくてもいい。例として次の集合を考える。

  • $`A = \{a_1, a_2, a_3\}`$
  • $`B = \{b_1, b_2\}`$

「集合 $`A`$ と集合 $`B`$ があります」という状況を描画するには、下図の上段でも下段でも本質的な差はない、どうでもいい、ということになる。

ここで、アルファ図法のテクニカルタームを導入する。テクニカルタームなので、国語辞書的意味や既存の他の意味にこだわらないでそのまま素直に受け入れる。(「こだわらない」「素直に」がアルファさんのアイディアの源泉のようだ。)

  • 座標軸: 集合を表す線分
  • (座標軸上の): 集合の要素を表す座標軸の目盛り刻み

テキスト記法

$`R`$ が直積集合(例えば、$`A\times B`$)の部分集合で、$`x`$ が $`R`$ の要素であることを次のように書く。

$`\quad x \in R \subseteq A\times B`$

$`R`$ を「$`A`$ から $`B`$ への関係」とみなす場合は次のように書く。

$`\quad R : A \to B \In {\bf Rel}`$

$`(a, b)\in R`$ は、$`R`$ を関係とみなすと次の意味だ。

  • $`R`$ により、$`a\in A`$ は $`b\in B`$ と対応している。

これを次のように書く。関数による対応ではないので誤解なきよう

$`\quad A\ni a \overset{R}{\mapsto} b \in B`$

$`R \subseteq A\times B`$ をアンカー/リシェイプ〈anchoring, reshaping〉すると、様々なプロファイルが生じる。($`{\bf 1} = \{*\} = \{()\} = \prod( () )`$ とする。)

  1. $`{\bf 1} \to A\times B \In {\bf Rel}`$
    または $`()\to (A, B)\In {\bf PolyRel}`$
  2. $`{\bf 1} \to B\times A \In {\bf Rel}`$
    または $`()\to (B, A)\In {\bf PolyRel}`$
  3. $`A \to B \In {\bf Rel}`$
    または $`(A)\to (B)\In {\bf PolyRel}`$
  4. $`B \to A \In {\bf Rel}`$
    または $`(B)\to (A)\In {\bf PolyRel}`$
  5. $`B \times A \to {\bf 1} \In {\bf Rel}`$
    または $`(B, A)\to ()\In {\bf PolyRel}`$
  6. $`A \times B \to {\bf 1} \In {\bf Rel}`$
    または $`(A, B)\to ()\In {\bf PolyRel}`$

アンカー/リシェイプしても同じ名前をオーバーロードして使うと:

  1. $`{\bf 1}\ni * \overset{R}{\mapsto} (a, b) \in A\times B`$
  2. $`{\bf 1}\ni * \overset{R}{\mapsto} (b, a) \in B\times A`$
  3. $`A\ni a \overset{R}{\mapsto} b \in B`$
  4. $`B\ni b \overset{R}{\mapsto} a \in A`$
  5. $`B \times A \ni (b, a) \overset{R}{\mapsto} * \in {\bf 1}`$
  6. $`A \times B \ni (a, b) \overset{R}{\mapsto} * \in {\bf 1}`$

扱っていることは、直積集合とその部分集合だけである。だが、アンカー/リシェイプとオーバーロードに慣れるのに年単位の時間がかかってしまうことがある。

アルファ図法の基本

アルファ図法では、$`A\times B`$ の要素 $`(a, b)`$ は、座標軸上の点 $`a`$ から別な座標軸上の点 $`b`$ に向かう有向ストランド(向きが付いた紐)で表す。

上段でも下段でも意味的差はない(同じ意味)。赤線は $`(a_1, b_2) \in A\times B`$ を、紫線は $`(b_1, a_3) \in B\times A`$ を表す。アルファさんによれば、有向ストランドは「目線移動を表す」。紫の紐なら、

  • 先に座標軸 $`B`$ 上の点 $`b_1`$ を見て、目線移動して、座標軸 $`A`$ 上の点 $`a_3`$ を見たこと。

面白いのは、「同時に見る(一緒に見る)」ことも表現できること。

上図で:

  • 赤線(有向)は、順序対 $`(a_1, b_2)`$ を表す。
  • 紫線(有向)は、順序対 $`(b_2, a_1)`$ を表す。
  • 黒線(無向)は、非順序対 $`[a_1, b_2] = [b_2, a_1]`$ を表す。

通常は表現が難しい非順序対〈unordered pair〉*1が、単なる無向な紐で表現できる。アルファさんは、向きが必要になるまでは向き無しで考えている。

アルファ図法によるリシェイプ

「集合 $`A`$ が2つ分、集合 $`B`$ が2つ分あります」という状況は次のように描ける。

テキスト記述のためには集合に順番を付ける必要があるので、上側(12時方向)から時計回りに見て、この絵を次のリスト(テーブルスキーマ、プロファイル)で表す。

$`\quad (A, B, A, B)`$

直積を取れば以下の集合になる。

$`\quad A\times B \times A\times B`$

直積集合の要素 $`(a_2, b_2, a_1, b_1) \in A\times B \times A\times B`$ を考える。この要素は以下の黒い四角形で表現できる。

しかし、4点 $`a_2, b_2, a_1, b_1`$ を全部見ていく目線移動は一通りではない。

  • 赤線は、$`(a_2, b_1, b_2, a_1) \in A\times B \times B \times A`$ を表す。
  • 青線は、$`(b_2, a_2, a_1, b_1) \in B\times A \times A \times B`$ を表す。

座標軸の集まりを描き変えなくても、目線移動を変えるだけで、直積集合とその要素〈タプル〉のリシェイプ〈reshaping〉が出来るのである。

アルファ図法では、「タプルを多角形で表す」と言ったが、正確には「長さnのタプルをn点形、あるいはn点をたどる折れ線で表す」。全部の点ではなくて、一部の点だけに注目することにより射影〈projection〉も自然に考えることができる。例えば、黒い四角形の右上辺に注目すると:

$`\quad A\times B \times A\times B \ni (a_2, b_2, a_1, b_1) \mapsto (a_2, b_2)\in A\times B`$

アルファ図法によるアンカー

「部分集合としての実体は変えずにプロファイル(外部から見えるインターフェイスの仕様)だけ変える」という操作・行為を理解するのが驚くほど難しい。アルファ図法は、この操作・行為の理解の助けになる。

前節と同じ設定で、要素〈タプル〉$`(a_2, b_2, a_1, b_1) \in A\times B \times A\times B`$ を考える。この要素は部分集合 $`R\subseteq A\times B \times A\times B`$ に属するとする。

$`\quad (a_2, b_2, a_1, b_1) \in R \subseteq A\times B \times A\times B`$

部分集合 $`R`$ を、次のプロファイルで考えたとする。

$`\quad R : A\times B \to B \times A \In {\bf Rel}`$

テキストだけだと、なかなか意図が伝わらないが、次のアルファ図を併用しよう。

タプルを表す黒い四角形(むしろ四点形)を、右上ニ点形(有向ストランド)と、左下ニ点形に分けて、さらに「右上 → 左下」への対応(赤線)と考える。テキストで書けば:

$`\quad A\times B \ni (a_2, b_2) \overset{R}{\mapsto} (b_1, a_1) \in B\times A`$

こう書いても、やはり、テキストでは正確な情報が伝わりにくい。上記のアルファ図を参照。

同じタプル $`(a_2, b_2, a_1, b_1) \in A\times B \times A\times B`$ を、また別な解釈をすると、下図。

テキストで書けば:

$`\quad B\times A \ni (b_2, a_1) \overset{R}{\mapsto} (b_1, a_2) \in B\times A`$

もうひとつ別な解釈。

テキストで書けば:

$`\quad B \ni b_2 \overset{R}{\mapsto} (a_2, a_1, b_1) \in A\times A\times B`$

$`(a_2, a_1, b_1) \in A\times A\times B`$ は三点形あるいは三点折れ線だが、内部を斜線で塗っている。

そこに居るだけの集合/要素に対して、目線移動により関係〈非決定性写像〉だと捉え直すことをアンカー〈anchoring〉という。

中学校の関数のグラフ以来、目線移動で対応を追いかけることはやってきたはず。中学校では、直角に曲がる目線移動だったのを、アルファさんは「直角に曲がっても、直線で移動しても、カーブしても何でもいい」ことにした。それだけと言えがそれだけのこと。だが、“それだけ”のことに気づける人は少ない。

*1:定義: 直積に対する対称群の作用を考えて、商集合を作る。

ノート見開き(ペラ一枚表裏)で某アルファ氏の発想

(仮名)アルファさんの発想が面白い。本人のなかでは一貫している(飛躍がない)のかも知れない。「教わったとおりにやった」だけかも知れない。檜山が言ったであろうこと(あまり憶えてないが絶対言いそう):

  1. 無限集合は難しいから最初は有限集合で考えたほうがいい。
  2. 関数に固執しないで、関係の特別なものと捉えなさい。
  3. 入出力の向きも(必要になるまで)気にしないでいい。行列・関係の転置はいつでもできる。
  4. 関係(実体は部分集合)は「そこに居るだけ」で、動作は伴わない。“対応”として使いたいなら、自分で目線移動しなさい。
  5. 特定のメンタルモデルに固執しない。
  6. 比喩はあくまで比喩だから、まに受けない。
  7. 整合性があるなら、書き方や描き方はなんでもいい。世間の習慣など無視して自由に考えてよい。
例題

例として、

  • $`A = \{a_1, a_2, a_3\}`$
  • $`B = \{b_1, b_2\}`$
  • $`C = \{c_1, c_2\}`$

として、$`f, g`$ は以下のとおり。

  • $`f(a_1) = b_2`$
  • $`f(a_3) = b_1`$
  • $`g(b_2) = c_2`$

$`f, g`$ はたまたま部分関数だが、任意の関係〈非決定性関数〉でよい。$`f, g`$ は次のブール係数行列で表現できる。

$`\quad \begin{bmatrix}
0 & 0 & 1 \\
1 & 0 & 0
\end{bmatrix}
`$

$`\quad \begin{bmatrix}
0 & 0 \\
0 & 1
\end{bmatrix}
`$

アルファさんの最初の提案

檜山は下図の左のような説明をした。赤は $`f`$ 、青は $`g`$ を表す。目線移動を特に強調したわけでもないが、アルファさんは目線移動の線(赤線と青線)を意識していたのかも知れない。

$`f`$ の絵と $`g`$ の絵が離れているのがイヤ、目線移動がスムーズにいかないのがイヤ、という理由で、上図の左のような描画法をアルファさんが提案。この時点では、まだマス目にそった(直角に曲がる)目線移動だったかも知れない。

$`f`$ と $`g`$ の結合 $`f;g = g\circ f`$ は、ショートカット(回り道しないで直接行く)緑の線で表現できる。が、「入出力の向きも(必要になるまで)気にしないでいい。」と檜山に言われているので、向き=矢印はあまり意識してない(おそらく)。

アルファさんの次の提案

下図の下段の右側がアルファさんの次の提案。

下段左側は檜山が教えたストランド(棒や紐〉による図法。そこから下段右側に至る発想は(おそらく):

  1. 上段左側の4本の“座標軸”を、上段右側にするとき、“座標軸”をまとめたり方向を変えたりの“再配置”をしている。
  2. 上段右側と下段左側も、“座標軸”を“再配置”しているに過ぎない。
  3. だったら、“座標軸”をどう“再配置”するのも自由だ。「書き方や描き方はなんでもいい。世間の習慣など無視して自由に考えてよい。」と檜山が言っていた。
  4. “座標軸”を外側の三角形にしたら見やすい。
  5. 「比喩はあくまで比喩」と檜山が言っていたから、ホントの3次元空間にこだわる必要はない。“座標軸”が5,6本あっても同じように描ける。

さらには、描画経験から自然に次のような認識も得ている。

  1. 抽象的多次元空間の一点は、多角形で表現できる。
  2. 抽象的多次元空間内の部分集合は、多角形の集まり。有限集合なら、幾つかの多角形を重ね書きして具体的に描ける。
  3. 抽象的多次元空間内の部分集合は、必ずしも関数や関係のグラフと考える必要はない。考えたいなら、グラフと考えてもよい。自由だ。
  4. 多角形(多次元空間の一点)が与えられれば、対応を取り出すことはできる。例えば、三角形の一辺から向かい合う頂点を決めるように。
  5. 多角形の幾つかの頂点から作られる小さい多角形(ときに辺や頂点)は、点を射影したモノになる。例えば、三角形の辺は座標平面への射影、三角形の頂点は座標軸〈座標直線〉への射影。もちろん、「平面」や「座標軸」は比喩だから「まに受けない。」(と、檜山が言っていた。)