檜山正幸のキマイラ飼育記 このページをアンテナに追加 RSSフィード Twitter

キマイラ・サイトは http://www.chimaira.org/です。
トラックバック/コメントは日付を気にせずにどうぞ。
連絡は hiyama{at}chimaira{dot}org へ。
蒸し返し歓迎!
このブログの更新は、Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama
ところで、アーカイブってけっこう便利ですよ。

2018-07-09 (月)

古典的微分幾何・ベクトル解析のモダン化: 古式記法の現状と解釈

| 16:38 | 古典的微分幾何・ベクトル解析のモダン化: 古式記法の現状と解釈を含むブックマーク

古典的微分幾何・ベクトル解析のモダン化」シリーズを、もう1,2回は続けようかな、と思ってます。局所座標を使った計算で一番多いのは微分計算ですから、微分計算まではたどり着きたいなー、と。

で、先に進む前に、「古式な記法に関する注釈や補足説明が必要だな」と感じます。この記事でそれを行います。

内容:

  1. はじめに
  2. 変数と関数の混同
  3. 写像と部分写像の未識別
  4. 部分写像の制限・ミート・ジョイン
  5. 関数の適用と結合〈合成〉の混同
  6. ユークリッド空間の開集合と多様体の開集合の混同
  7. モニタールームの男とピグマリオン
  8. 関数環とその上の加群を導入しない
  9. おわりに

はじめに

「古式」という言葉の使い方に関しては、前回のここらへんを参照してください。

古式な微分幾何・ベクトル解析には、曖昧さや混乱がいくつか見られます。一連の記事で僕が言いたいことは、「それはダメだ」ではなくて、「問題点をちゃんと認識した上で、使えるものは使い続けよう」です。古式スタイルが長年使われ続けている理由は、やはり便利だからで、その便利さ捨てきれないな、と思うのです。

古式スタイルの曖昧さ/混乱の目ぼしいものを挙げます。以下で、「混同」とは、異なる概念であることは知っていて、ゴッチャにすることです。不注意というよりは意図的であることがほとんどです。「未識別」とは、異なる概念であると認識できてない、あるいはあえて区別する意思がないことです。

古式スタイルの曖昧さ/混乱:

  1. 変数と関数の混同
  2. 写像と部分写像の未識別
  3. 関数の適用と結合〈合成〉の混同
  4. ユークリッド空間の開集合と多様体の開集合の混同
  5. 関数環とその上の加群を導入しない

これらの問題点を指摘して、対処法を述べます。その対処法(新しい解釈や記法)は、今後の記事で使う予定です。以前の記事(↓)といくぶん重複する記述があります。

変数と関数の混同

写像 f:X→Y を考えます。具体例としては、X = Y = R, f(x) = x2 + 1 。この写像fを、

  • y = f(x)

と書くのは普通だし、特に問題はないでしょう。xは入力変数で、yは出力変数です。なお、「独立変数」「従属変数」という言葉は使いません。その理由は「古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用 // 非独立入力変数と多出力変数」をみてください。

次の記法を許します。

  • y = y(x)

具体例は、

  • y = y(x) = x2 + 1

この記法は、次のラムダ記法による関数定義により合理化できます。

mapping y := λx∈R.(y := x2 + 1 : y∈R)

詳細は「古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用」に書いてあります。

古式スタイルでは、同じ名前が変数名と関数名に使われることがあります。このため、単なる変数か、関数を表す変数かは、文脈(名前のスコープ)なしでは判断できません。上記のラムダ記法では、入力変数・出力変数はラムダ項のスコープに閉じ込められていて、関数名のスコープはその外にあります。

次の記法はどうでしょう。

  • x = x(x)

ラムダ記法を使えば、これも合理化できます。

mapping x := λx∈R.(x := x2 + 1 : x∈R)

出力変数名、関数名、入力変数名の三者がどれも'x'という名前なのです。ここまでひどい書き方は稀でしょうが、ないとは言えません。なお、x(x) で自己適用を思い出す人もいるでしょうが、自己適用とは関係ありません。単に、ひどい書き方です。

写像と部分写像の未識別

微分幾何・ベクトル解析は、幾何的実体を取り扱います。なので、写像 f:X→Y と言う場合、X, Y は位相空間/多様体であり、fは連続写像/なめらかな写像のときが多いです。暗黙に(特に明示せずに)、位相空間/多様体、連続写像/なめらかな写像を前提するのは、まーいいでしょう。

さらに、古式スタイルの写像 f:X→Y は、実際には部分写像〈partial map〉である場合が非常に多いですね。古式スタイルの写像/関数は、デフォルトで部分写像/部分関数だと解釈したほうがいいと思います。

我々は、写像(全域写像)を f:X→Y と書き、部分写像を f:X⊇→Y と書き分けますが、古式スタイルでは書き分け/識別はされません。よって、部分写像が全域であるか? 全域でないなら定義域〈domain of definition〉はどこか?は、自分で文脈から判断する必要があります。文脈情報が不十分だと、判断できません。

「写像(全域写像)より、むしろ部分写像を基本として採用する」という方針自体は適切だと思います。マズイのは、それを明示しないこと、部分写像に関する概念をちゃんと導入しないことです。

我々のラムダ記法において、部分写像であることを明示するために、次の書き方を導入します。

  • λx∈A⊆X.(写像の式 : Y)

このラムダ項が表す部分写像のプロファイルは、f:X⊇A→Y です。部分写像を表すラムダ項の具体例は、

  • λx∈(R| x ≧ 0)⊆R.(x2 + 1 : R)

部分写像の結合〈合成〉は「出来るところだけ計算する」方式です。結合が出来ても、定義域が空になることがあります。例えば:

// 非負実数に対して定義された1次関数
mapping f := λx∈(R| x ≧ 0)⊆R.(-x - 1 : R)

// 非負実数に対して定義された2次関数
mapping g := λx∈(R| x ≧ 0)⊆R.(x2 + 1 : R)

とすると、cod(f) = R, dom(g) = R なので結合可能〈composable〉ですが、f;g = g¥circf は:

  • λx∈(R| x ≠ x)⊆R.( : R)

となります。x ≠ x は空集合を作るための条件(常に偽ならなんだっていい)です。g¥circf のプロファイルは、g¥circf:R⊇∅→R です。空集合∅から任意の集合への写像はひとつだけあります

部分写像の制限・ミート・ジョイン

ここで、部分写像に対する操作をいくつか紹介しておきます。積極的に部分写像を扱うなら知っておきたい基礎知識ですが、ちょっと退屈かも; この節飛ばして、必要なときに見返すでもいいです。

f:X→Y を普通の写像〈全域写像〉として、A⊆X とします。このとき、fの域をAに制限〈restrict | constrain〉できます。

  • f|A := (inclA,X);f = f¥circ(inclA,X)

inclA,X は包含写像〈inclusion map〉で、ラムダ記法を使うなら次のように定義できます。

mapping inclA,X := λx∈A.(x : X)

恒等写像は X⊆X に対する包含写像となり、idX = inclX,X です。恒等写像や包含写像のような「バカみたいに簡単」なものが、非常に重要なことはままあります。

今度は f:X⊇→Y が部分写像とします。部分写像の場合、「fをAに制限する」の意味は二通りあります。普通の写像と同じく、域〈domain〉を制限する場合と、定義域〈domain of definition〉を制限する場合です。このふたつを区別する標準的記法がないので、域の制限〈domain restriction〉は f|A定義域の制限〈domain-of-definition restriction〉は仮に f‖A としておきます。制限後の域・定義域・余域は次のようになります。

  • dom(f|A) = A
  • ddef(f|A) = A∩ddef(f)
  • cod(f|A) = Y
  • dom(f‖A) = X
  • ddef(f‖A) = A∩ddef(f)
  • cod(f‖A) = Y

余域の制限〈codomain restriction〉 f|B (B⊆Y)は普通の写像でも部分写像でも同じように定義されます。「古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用 // 出力制約」を参照してください。

  • dom(f|B) = X
  • ddef(f|B) = ddef(f)
  • cod(f|B) = B

よく使われる余域制限は、f|im(f) です。fが多様体のチャート f:M⊇→Rn のとき、f|im(f) は、可逆な(普通の)写像になります。

fの〈image〉 im(f) は、普通の写像でも部分写像でも同じ定義です。

  • im(f) := {y∈Y | f(x) = y となる x∈X が存在する}

fの余域 cod(f) と、fの像 im(f) を混同している人がいますが、これは区別しましょう。

一般に、集合A, Bに対してミート〈共通部分〉A∩Bとジョイン〈合併〉A∪Bが定義できますが、部分写像に対してもミート〈meet〉、ジョイン〈join〉が定義できます。ただし、fとgのミート f∩g、ジョイン f∪g が定義できるためには、次の条件があります。

  1. dom(f) = dom(g) = X かつ cod(f) = cod(g) = Y
  2. f‖ddef(g) = g‖ddef(f)

2番目の条件は次のように言い換えられます。

  • x∈(ddef(f)∩ddef(g)) に対して、f(x) = g(x)

この条件が満たされるとき、fとgは互換〈compatible〉である、とか一貫性があると言います。

fとgが互換のとき

  • f∩g := f‖ddef(g) (g‖ddef(f) でもいい)
  • f∪g := λx∈(ddef(f)∪ddef(g))⊆X.(if (x∈ddef(f)) f(x) elseif (x∈ddef(g)) g(x))

念のため、f∩g, f∪g のプロファイルを書いておくと:

  • f∩g:X⊇(ddef(f)∩ddef(g))→Y
  • f∪g:X⊇(ddef(f)∪ddef(g))→Y

定義域が、集合のミート・ジョインになっています。

以上に述べた、部分写像の定義域の制限、ミート、ジョインは、部分写像に対するカットアンドペースト操作です。単一の、あるいは幾つかの部分写像を加工/細工〈craftwork〉するときに使います。

関数の適用と結合〈合成〉の混同

古式スタイルでは、f(x) あるいは f(x1, ..., xn) のような表現が何を意味するか判然としないことがあります。解釈の候補としては:

  1. f(x) は f(x) のことである。
  2. f(x) は f のことである。
  3. f(x) は f¥circx のことである。

f:X→Y, x∈X として f(x) を素直に解釈すれば、f(x)∈Y である関数値です。関数fに入力値xを渡して関数値〈出力値〉を求めることを「xにfを適用〈apply〉する」ともいいます。関数値としての f(x) は、fを適用した結果です。

f(x) が実際は λx∈X.(f(x) : Y) の意味で使われることもあります。xは入力変数であり、f(x)はラムダ項の一部なのですが、外側のラムダ束縛が省略されていると解釈します。f = λx∈X.(f(x) : Y) なので、f(x) はfの意味です。XからYへの写像〈関数〉の全体(からなる集合)を Map(X, Y) とすると、今の解釈では “f(x)”∈Map(X, Y) です。

古式スタイルでは、変数と関数が混同されることを思い出してください。変数xは関数かも知れません。x = x(t) 、つまり x:T→X であるケースもあります。このとき、f(x) は結合〈合成〉 f¥circx と解釈します。f(x) = f¥circx は、TからYへの関数〈写像〉となるので、“f(x)”∈Map(T, Y) です。

それぞれの解釈において:

  1. [適用として解釈] f:X→Y, x∈X として、f(x)∈Y
  2. [関数として解釈] f(x) = λx∈X.(f(x) :Y) = f :X→Y として、“f(x)”∈Map(X, Y)
  3. [結合として解釈] f:X→Y, x:T→X, f(x) = f¥circx として、“f(x)”∈Map(T, Y)

どの解釈が適切かは文脈によります。意外と f(x) = f¥circx が多かったりします。z = z(y) = z(y(x)) のような等式も、

  • 「出力変数z」 := 「関数z」¥circ「関数y」 = λx.(「関数z」(「関数y」(「入力変数x」)))

と解釈できます。ただし、z = z(y) = z(y(x)) = z(x) とやられると、z¥circy = z なのでさすがに辻褄を合わせるのが辛くなります。でも、z¥circy = z も「左辺を改めてzと置く」の意味で使われていそうです。

// yとzは事前に定義された関数
// zを上書き再定義
mapping z := λx∈X.(z := z(y(x)) : z∈Z)
// 新z = (旧z)¥circy = (旧z)(y)

xがタプルのときは、さらに解釈が厄介になります。x = (x1, ..., xn) とします。上付き添字〈インデックス〉を使ったのは、微分幾何では上付き添字が多いからです。x = (x1, ..., xn) でも話は同じです。Aはユークリッド空間Rnの開集合、Uは多様体Mの開集合とします。この状況で、xi(i = 1, ..., n)の解釈の候補は:

  1. xi は、Aを変域とする変数xの第i成分で、単なるスカラー変数
  2. xi は、AからRへの射影πiのこと
  3. xi は、A上の座標ラベルのひとつ
  4. xi は、U上のチャートxと射影πiの結合である座標関数
  5. xi は、U上の座標ラベルのひとつ

1番目は素直な解釈だからいいとします。2番目と3番目の例として、次の公式を考えてみましょう。

 ¥frac{¥partial x^j}{¥partial x^i}¥, = ¥, ¥delta^j_i

この公式の意味は、第i座標方向への偏微分〈方向微分〉作用素をDiとして、第j射影を πj:A→R としたときに、

 D_i(¥pi^j) = ¥mbox{const}(¥delta^j_i)

の意味です。constは、R→C(A) という写像で、実数を定数関数にします。ラムダ記法で定義するなら:

mapping const = λc∈R.(λx∈A.(c : R) : C(A))

もとの公式の偏微分の分子であるxjは射影πjの意味なので、2番目の解釈を採用します。偏微分作用素の分母 ¥partial x^i のxiは、標準的な偏微分作用素をラベルする(識別する)ための座標ラベル記号です。座標ラベルに関しては、「古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用 // 座標ラベル」を参照してください。

さて、4番目と5番目の解釈が生じるのは、古式スタイルでは変数と関数を区別しないからです。ユークリッド空間Rnの開集合A、またはRn全体を走る変数xは、なんかの関数かもしれません。よくあるのは、xが多様体Mの開集合U上で定義されたチャート〈座標写像〉 x:U→Rn, im(x) = A というケースです。このとき、xiは πi¥circx の意味、つまり4番目の解釈です。また、xiは、U上での偏微分作用素 ¥frac{¥partial}{¥partial x^i} をラベルするためにも使われます、5番目の解釈ですね。今の場合は、¥frac{¥partial}{¥partial x^i}:C(U)→C(U) である点に気を付けてください -- 微分計算は、いずれ詳しく話すつもりですが。

意味は違っても使う記号は同じなので、心のなかで解釈を切り替えなくてはなりません。心の中での切り替えのトレーニングは、"Don't think. FEEL."方式になってしまいがちです。困ったことだけど、如何ともし難い。ただ、解釈の候補を知っておけば助けにはなるでしょう。

ユークリッド空間の開集合と多様体の開集合の混同

古式スタイルでは、多様体M上のチャートの定義域である開集合(座標近傍)Uと、チャートの像であるユークリッド空間Rnの開集合Aを意図的に混同します。これは、古式スタイルの欠点というより、メリット/アドバンテージと言うべきかも知れません。事情を知って慣れれば便利です。しかしながら、事情を知らずに慣れてないなら意味不明な風習です。

φはMのチャートとします。(チャートに関する詳細は「古典的微分幾何・ベクトル解析のモダン化: 局所座標って何だ?」を参照。)チャートの定義から次は成立します。

  1. φ|A:U→A (A = im(φ))は位相同型。
  2. φ|A:U→A は、C(A)とC(U)のあいだの可換環としての同型を導く。

2番目の性質は、チャートの定義によっては証明すべき定理になりますが、いずれにしても成立します。これらから、次が言えます。

  1. Uと点とAの点は、1:1に対応する。しかも、対応は連続的である。
  2. U上の関数とA上の関数は、1:1に対応する。しかも、対応は足し算・掛け算を保存する。

つまり、点や関数を扱う上で、UとAは(φを前提として)同一視可能です。古式スタイルでは、実際に同一視をします。

UとAの同一視を行う上で大活躍(?)するのが、変数と関数の混同です。前節の x = (x1, ..., xn) の5つの解釈、前々節のf(x)の3つの用法を思い出してください。

まず、fをA(ユークリッド空間の開集合)上の実数値関数として、x = (x1, ..., xn) をA上を走る単なる変数とします。このとき、f(x) = f と解釈して、“f(x)” :Rn⊇A→R です。

次に、チャート φ:M⊇U→Rn を、x:M⊇U→R と書く(呼ぶ)ことにします。そして、f(x) の解釈を、心のなかでソッと f¥circx に切り替えます。すると、“f(x)”:M⊇U→R となります。変数名、関数名、記法を一切変えずに:

  1. “f(x)” = f :Rn⊇A→R
  2. “f(x)” = f¥circx = f¥circφ : M⊇U→R

のどちらでも表すことができるのです。さらには、微分の計算も、同じ記号・記号で出来ちゃうんですよ。なんて便利なんでしょう。地獄のような混乱も伴うけど。

モニタールームの男とピグマリオン

古式スタイルは、“多様体Mの開集合U”と“ユークリッド空間Rnの開集合A”を同一視することを目標に記法が設計されているように思えます。目標が達成されているという意味では成功しています。しかしそれにより、“多様体Mの開集合U”と“ユークリッド空間Rnの開集合A”を区別できない/区別しようとしない人を生み出しているように思えます。

古典的微分幾何・ベクトル解析のモダン化: 局所座標って何だ? // モニタールームの孤独な男」で述べたモニタールームの男が、“多様体Mの開集合U”と“ユークリッド空間Rnの開集合A”を区別できない/区別しようとしない人の戯画化です。

『相対性理論の考え方』*1のなかで、著者J・L・シンジが、「ピグマリオン症」という言葉を使っていました。「キュプロス王・ピグマリオンが、自ら彫り上げた象牙の人形を溺愛した」というギリシャ神話に基づく言葉らしく、「本物に似せて作った模型を本物より愛してしまう」とか「本物の存在を忘れて模型だけしか見られない」といった“病状”を意味しています。

モニタールームの男のように、局所座標が写し出す映像の集まりだけで十分だ、という立場も、計算目的なら頷〈うなず〉けます。しかし、物理現象がそこで起きる空間などを想定する場合、「写し出された映像が世界そのものだ」はやはり違うでしょう。モダンな定式化では、模型はあくまで模型であり、模型により表示される実体/実状があるんだ、という立場を強調します。

関数環とその上の加群を導入しない

XからYへのなめらかな写像〈smooth map〉の全体(からなる集合)を C(X, Y) と書くことにします。なめらかな写像を定義するには、事前にXとYに「なめらかさ」を定義可能とする構造(なめらか構造)が載ってなくてはなりません。が、今は追求しないでおきます。

S⊆X として、なめらかな部分写像 f:X⊇S→Y の全体は、CX(S, Y) と書きしょう。

  • f∈CX(S, Y) ⇔ (f:X⊇S→Y, fはなめらか)

Uを多様体Mの開集合として、CM(U, R) を単に CM(U) と書きます。同様に*2、ユークリッド空間Rnの開集合Aに対しても、CRn(A) := CRn(A, R) 。ただし、CM(U), CRn(A) という記法を使うときは、単に関数の集合ではなくて、足し算・掛け算を備えた可換環とみなすと約束します。

可換環としての CM(U) や CRn(A) は、微積分でもの凄くよく使います。例えば、写像(なめらかなものしか考えない) g:A→Rm のヤコビ行列 J[g] は、

  • J[g]:A→Mat(n, m;R)

として定義できます。ここで、Mat(n, m;R) は実数係数のm行n列行列の集合です。次の同型があります。

  • CRn(A, Mat(n, m;R)) ¥stackrel{¥sim}{=} Mat(n, m;CRn(A))

この同型により、

  • J[g]∈Mat(n, m;CRn(A))

とみなせます。ヤコビ行列は、関数可換環 CRn(A) を係数域とする行列なのです。この時点で、可換環係数の行列を扱っている、つまりは、可換環係数の線形代数に手を染めています。

手を染めているなら、ドップリ浸かってしまえばいいのに、と思うのですが、古式スタイルでは可換環係数線形代数に消極的です。意図的混同による古式記法や、前節で述べた同一視と相性が悪いのかも知れません。

多様体の議論にとって、線形代数はとても重要です。空間の拡がりが広くなると、それだけ“大規模な”線形代数が必要になります。

幾何的対象 一点 座標近傍 多様体
線形代数 ベクトル空間の線形代数 自由加群の線形代数 加群層の線形代数

ベクトル空間の線形代数に幾何的風味を付けたモノ、あるいは幾何にベクトル空間の線形代数を持ち込んだモノとしてベクトルバンドルがあります。

底空間 一点 座標近傍 多様体
バンドル ベクトル空間 自明ベクトルバンドル ベクトルバンドル

土台としての位相空間に、バンドルと線形代数を組み合わせた構造を載せれば、モダンな多様体の定式化になります。多様体達全体として、幾何と代数が密接に連携した巨大な複合体が出来上がります。

前節で述べた、モニタールームの男のようなピグマリオン症がまずい点のひとつに、多様体達が相互に連携した壮大な世界が見えなくなってしまうことがあります。モニター画面(チャートの像)しか見てないので、建物の外の広大な世界は見えません。

おわりに

今回の記事で、古式スタイルが、意図的な混同と同一視をベースにしていることがお分かりいただけたでしょう。しかし、これが便利なのは何故でしょうか?

古式スタイルで使われている混同と同一視を丁寧にほぐしてみると分かるのですが、概念の差異を区別するために、記号・記法がインフレーションを起こしてしまうのです。英字〈ラテン文字〉だけでは足りなくて、ギリシャ文字、スクリプト体、それでも足りなくて花文字、さらには何重にもネストした添字などを使わないと区別ができません。煩雑で負担になります。

なんでもゴッチャにするのはまずいですが、ある程度は混同と同一視をしないと大変過ぎてやってられないのです。古式スタイルは、混同と同一視に関して、長年培われたガイドラインを提供します。注意深く使うなら、このガイドラインは役に立つと思います。

*1:講談社ブルーバックス、たぶん今は絶版。

*2Rnも多様体なので、あえて言う必要はないのですが。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20180709

2018-07-05 (木)

古典的微分幾何・ベクトル解析のモダン化: 局所座標って何だ?

| 17:59 | 古典的微分幾何・ベクトル解析のモダン化: 局所座標って何だ?を含むブックマーク

多様体は局所座標を持っています。つうか、局所座標の集まりを備えた空間が多様体です。具体的な計算は、局所座標によって行います。この局所座標に関する丁寧な解説が意外に見当たらないので、ここで事例を中心に説明しましょう。

内容:

  1. 微分幾何・ベクトル解析における古式とモダン
  2. モニタールームの孤独な男
  3. 円周に対するチャートとアトラス
  4. アトラスの記述 プログラム風
  5. 反チャート: 反対方向のチャート
  6. 地球の地図帳
  7. 多様体の座標系とは何なのか
  8. 多様体は人造物か自然物か
  9. おわりに

微分幾何・ベクトル解析における古式とモダン

前置きのオシャベリをします。

タイトルに「モダン化」という言葉を使ってますが、微分幾何やベクトル解析のモダンな定式化とはどんなものでしょう。いろんな観点/意見があるでしょうが、僕にとっての“モダンな感じ”とは次のようなものです。

  1. 圏論を使う。
  2. ファイバーバンドルを使う。
  3. 前層/層を使う。
  4. 一般化線形代数を使う。

一般化線形代数とは、体上のベクトル空間だけでなく、可換環上の加群も扱う線形代数の意味で言ってます*1

古典的 -- いや、「古き良き」というよりは、単に古いだけかも知れないので古式と呼ぶことにします -- 古式な微分幾何・ベクトル解析でやることは、座標を使って、たくさんの添字が付いた記号計算を頑張ることです。モダンな定式化では、できるだけ座標なしで議論しようとします。

古式スタイル*2とモダンスタイルでは、座標に対する態度が随分と違います。古式スタイルでは、座標の向こうにある実体をあまり意識しません。モダンスタイルでは、実体のほうをなるべく直接的に捉えようとします。

モダンなスタイルであっても、座標を使った計算をなしで済ませることはできません。古式スタイルとモダンスタイルを結びつけるのも、座標という概念です。そこでこの記事では、多様体上の座標系(局所座標の集まり)を主題的に扱います。

モニタールームの孤独な男

多様体上の座標系とはどんなものか? その“感じ”を伝える例え話をします -- この節もオシャベリですね。オシャベリに興味がない方はこの節を飛ばしてください。

とある建物に100台の監視カメラが設置されていて、これらのカメラ群に死角はなく、建物内のあらゆることを監視できるとします。モニタールームには、100面のディスプレイがあり、ひとりの男がディスプレイ群を眺めています。

*3

彼は、建物内の諸々をディスプレイごしに完全に把握できます。彼はこう考えます、「ここにいれば、全てがわかるんだ。ボクは、外に出ていく必要なんてない」と。そのうち彼は、ディスプレイの先に現実があることを忘れてしまい、「100面のディスプレイこそが世界なんだ」と思い込み、モニタールームから出ることはありませんでした。

この「モニタールームの孤独な男」は、古式スタイルの微分幾何・ベクトル解析の比喩となるでしょう。例え話と幾何的概念の対応は次のようになります。

例え話 幾何的概念 記号的表現
建物 多様体 M
監視カメラとディスプレイ チャート φ:M⊇U→Rn
カメラの視野範囲 座標近傍 U = ddef(φ)
ディスプレイ ユークリッド空間内の開集合 A = im(φ)
監視システムの全体 アトラス A

「チャート」は「局所座標」の別名、「アトラス」は「座標系」(いくつかの局所座標が集まったシステム)の別名です。古式スタイルは、チャート/アトラスを使った計算に集中します。

モダンスタイルを例え話で言うなら、モニタールームから外に出て、建物の状況を自分の目で見ようとする(別な)男です。第二の男の興味は、監視システムではなく、実際の建物とそこで起きていることです。とはいえ、監視システムを無視しているわけではありません*4

円周に対するチャートとアトラス

実例を述べましょう。円周S1を次のように定義します。

  • S1 := {(x, y)∈R2 | x2 + y2 = 1}

このS1は、2次元ユークリッド空間R2の部分多様体です。完全に抽象的に与えられた多様体とは事情が少し違いますが、部分多様体のほうが話が簡単なので、最初の例はこのS1にします。

前回導入したラムダ記法により、S1上の開集合を域とする関数〈写像 | map | mapping〉をいくつか定義します。関数定義に使われる変数名と関数の名前がかぶってもいいことに注意してください。

// 写像xは、平面の第一射影を、円周の上半分に制限したもの
mapping x := λ(x, y)∈(S1| y > 0).(x : R)

// 写像yは、平面の第ニ射影を、円周の右半分に制限したもの
mapping y := λ(x, y)∈(S1| x > 0).(y : R)

この2つの関数 x, y を通常の写像と考えると:

  • dom(x) = {(x, y)∈S1| y > 0} = {(x, y)∈R2| x2 + y2 = 1, y > 0}
  • cod(x) = R
  • dom(y) = {(x, y)∈S1| x > 0} = {(x, y)∈R2| x2 + y2 = 1, x > 0}
  • cod(y) = R

記述を簡潔にするために、dom(x) = X, dom(y) = Y と置きます。

さてここで、関数 x, y をS1上の部分写像だと思い直します。(部分写像については「古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用 // 部分写像とそのプロファイル」を参照してください。)次のように再設定します。

  • dom(x) = S1
  • ddef(x) = X
  • cod(x) = R

つまり、部分写像としてのプロファイルは:

  • x:S1⊇X→R

同様に、yも再設定します。

  • dom(y) = S1
  • ddef(y) = Y
  • cod(y) = R
  • y:S1⊇Y→R

一般に、fがS1チャート〈chart | 海図 | 地図〉だとは、

  1. fは、S1からRへの部分写像である。
  2. fの定義域は、S1の開集合である。
  3. fは、その定義域 ddef(f) と像 im(f) (Rの部分集合)のあいだの位相同型を導く。
  4. fは、C(ddef(f)) と C(im(f)) のあいだの可換環同型を導く。

4番目の条件はいずれ述べる(予定な)ので今は気にしなくていいです。S1のような、Rnの部分多様体に限って言えば、fがなめらか(無限回微分可能)ならば4番目の条件は満たされます。

S1上の部分写像だと再設定したx, yは、上記の条件を満たすので、どちらもS1のチャートになっています。チャートは、S1の一部分をR内に同型に写します。

S1のチャートの集まりが、次の条件を満たすとき、S1アトラス〈atlas | 海図帳 | 地図帳〉と呼びます。

  • 各チャートの定義域をすべて寄せ集めると(合併すると)S1になる。

{x, y} はアトラスになっていません。なぜなら、ddef(x)∪ddef(y) = X∪Y がS1とは違うからです。次節でS1のアトラスを作ってみます。

アトラスの記述 プログラム風

S1のアトラスを記述するために、プログラミング言語っぽい構文を使います。プログラミング言語は機械との対話のための言語で、「空気読めよ方式」が通用しないので、曖昧だったものを明確化するには好都合なのです。

space S1 := {(x, y)∈R2 | x2 + y2 = 1}

atlas for S1 {
 // 上側半円に対するチャート
 chart x := λ(x, y)∈(S1| y > 0).(x : R)

 // 右側半円に対するチャート
 chart y := λ(x, y)∈(S1| x > 0).(y : R)

 // 下側半円に対するチャート
 chart x' := λ(x, y)∈(S1| y < 0).(x : R)

 // 左側半円に対するチャート
 chart y' := λ(x, y)∈(S1| x < 0).(y : R)
}

最初の1行は、念のために、円周S1の定義を再掲しています。行頭のspaceは、「空間を定義するよ」という符丁です。単なる集合ではなくて、常に位相空間を定義するので"space"としました。

atlas for S1 { ... } の部分がS1のアトラスの記述です。アトラスはチャートの集まりなので、アトラス・ブロック('{'と'}'のあいだ)には、チャートが並びます。チャートの定義(名付け)は写像の定義(名付け)と同じです。行頭のchartが「この写像はチャートだよ」と主張しています。

上記のコードは、S1に対する多様体構造記述コードになります。もし、多様体構造記述コードをチェックするソフトウェア(多様体コンパイラ)があるなら、chartと宣言された写像がほんとにチャートになっているのか、atlasと宣言されたチャートの集まりがほんとにアトラスになっているのか等をチェックすることでしょう。欲しいなー、そういう多様体コンパイラ。

残念ながら、多様体コンパイラは現存しないので、みなさんの目視・手動で次を確認してください。

  1. 各チャートは、S1からRへの部分写像になってますか?
  2. 各チャートの定義域は、S1の開集合ですか?
  3. 各チャートは、その定義域と像のあいだの位相同型を与えてますか?
  4. 各チャートは、なめらか(無限回微分可能)な写像ですか?
  5. 各チャートの定義域をすべて寄せ集めると、S1全体になりますか?

上記コードにはアトラスがひとつしかないので、アトラスに名前を付けてませんが、同じ位相空間/多様体に複数のアトラスを考えることもあります。そのときは、アトラスに名前を付けて区別します。

反チャート: 反対方向のチャート

多様体Mのチャートは、多様体Mからユークリッド空間Rnへの部分写像です。逆に、ユークリッド空間Rnから多様体Mへの部分写像で、適当な条件を満たすものを反チャート〈opposite chart〉と呼びましょう。チャートと反チャートはしばしば混同されますが、これはキッチリと区別しましょう。

  • チャートは、多様体からユークリッド空間への部分写像
  • 反チャートは、ユークリッド空間から多様体への部分写像

アトラスは反チャートの集まりとして構成してもいいとします。前節とは別な、S1のアトラスを定義します。反チャートは、キーワードopchart(opposite chartから)を使って定義します。次のアトラスは反チャートから構成されます。

space S1 := {(x, y)∈R2 | x2 + y2 = 1}

atlas for S1 {
 // (1, 0)を除いた部分に対する反チャート
 opchart p := λθ∈(R| 0 < θ < 2π).(
                  x := cos(θ),
                  y := sin(θ)
               : (x, y)∈S1)

 // (-1, 0)を除いた部分に対する反チャート
 opchart q := λφ∈(R| π < φ < 3π).(
                  x := cos(φ),
                  y := sin(φ)
               : (x, y)∈S1)
}

もうお分かりだと思いますが、gがS1の反チャートである条件は次のとおりです。

  1. gは、RからS1への部分写像である。
  2. gの定義域は、Rの開集合である。
  3. gは、その定義域 ddef(g) と像 im(g) (S1の部分集合)のあいだの位相同型を導く。
  4. gは、C(ddef(f)) と C(im(f)) のあいだの可換環同型を導く。(今は気にしなくていいです。)

アトラスの構成は、チャートだけ/反チャートだけに拘る理由はないので、チャート/反チャート混合型も許します。次は、チャートと反チャートを混ぜて作ったアトラスの例です。

space S1 := {(x, y)∈R2 | x2 + y2 = 1}

atlas for S1 {
 // 右側半円に対するチャート
 chart y := λ(x, y)∈(S1| x > 0).(y : R)

 // (1, 0)を除いた部分に対する反チャート
 opchart p := λθ∈(R| 0 < θ < 2π).(
                  x := cos(θ),
                  y := sin(θ)
               : (x, y)∈S1)
}

[追記 date="翌日"]あれ。写像fの像〈image〉を本文内では im(f) 、上の手描きの絵内では img(f) 使ってるな。こんな乱れはよくあることなんで、特に直しません。[/追記]

アトラスにはチャート/反チャートのどちらも含めてもいいので、アトラスの条件は次のように変わります。

  • 所属しているチャートの定義域と、反チャートの像をすべて寄せ集めると(合併すると)S1になる。

地球の地図帳

チャート、反チャート、アトラスの概念は、もちろんS1以外でも通用します。一般の場合の定義を完全に述べるのはけっこう手間がかかる(位相空間に関する準備などがある)ので、後回しにします。S1以外の例を見てみます。

S1の次元を上げた例で、R3内の球面S2です。球面S2地球に見立てましょう。そう、「チャート」「アトラス」の語源となった事例です。

*5

経度θ、緯度φをパラメータとするパラメータ表示(つまり反チャート)で、ほぼ地球を覆〈おお〉えますが、グリニッジを通って北極から南極に至る子午線(大円の半分)*6はカバーできません。反チャートは定義域が開集合である単射という条件があるので、無理に子午線をカバーしようとすると、反チャートじゃなくなります。

パラメータ表示〈反チャート〉から漏れてしまう半円を覆うには、北半球と南半球のチャートが必要です。これでもなお、アフリカ・ギニア湾にある“赤道とグリニッジ子午線の交点”が漏れるので、アフリカ/ヨーロッパを含む半球に対するチャートも追加します。

以下が、地球とみなしたS2のアトラス〈地図帳〉です。

// 球面=地球
space S2 := {(x, y, z)∈R3| x2 + y2 + z2 = 1}

atlas for S2 {
 // 経度緯度方式の反チャート(パラメータ表示)
 opchart p := λ(θ, φ)∈(R2| -π<θ<π, -π/2<φ<π/2).(
                  x := cos(φ)cos(θ),
                  y := cos(φ)sin(θ),
                  z := sin(φ)
               : (x, y, z)∈S2)

 // 北半球をx-y平面に射影するチャート
 chart n := λ(x, y, z)∈(S2| z > 0).(
                x := x
                y := y
             : (x, y)∈R2)

 // 南半球をx-y平面に射影するチャート
 chart s := λ(x, y, z)∈(S2| z < 0).(
                x := x
                y := y
             : (x, y)∈R2)

 // グリニッジ子午線と赤道の交点(ギニア湾)の側の
 // 半球をy-z平面に射影するチャート
 chart a := λ(x, y, z)∈(S2| x > 0).(
                y := y
                z := z
             : (y, z)∈R2)
}

多様体の座標系とは何なのか

この節では、部分写像の概念が必須です(部分写像については「古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用 // 部分写像とそのプロファイル」を参照してください)。部分写像のプロファイルを f:X⊇A→Y のように書きますが、定義域Aを省略して f:X⊇→Y のようにも書きます。f:X⊇→Y に対して:

  • dom(f) = X
  • ddef(f) = {x∈X| f(x)が定義されている}
  • im(f) = {y∈Y| x∈ddef(f) が存在して、y = f(x) と書ける}
  • cod(f) = Y

以上の概念と書き方はしっかり確認してください。

さて、Mを多様体とします。多様体〈manifold〉とは、我々が扱う図形(幾何的対象物)です。なめらかな多様体〈smooth manifold〉しか考えません。「なめらか」とは、とんがった所や角張った所がなくて、どこを触ってもツルンとした手触りであることです。この「なめらかさ」を、「微分が何回でも好きなだけ出来る」という表現で定義します。

Mのチャートは、φ:M⊇→Rn という部分写像で、適当な条件を満たすものでした。局所座標〈local coordinate | local coordinate system〉はチャートと同義語です。関連する用語を並べてみると:

  • φの定義域 ddef(φ) を、座標近傍〈coordinate neighborhood〉と呼ぶ。
  • φの余域 cod(φ) = Rn座標空間〈coordinate space〉と呼ぶことがある。僕(檜山)は言いませんが。
  • φを座標写像〈coordinate map〉と呼ぶことがある。僕は言いませんが。
  • φに、Rnの第i射影を結合〈合成〉した πi¥circφ を座標関数〈coordinate function〉、座標成分〈coordinate component〉と呼ぶことがある。僕は、座標成分をたまに使うかな、たまに。

座標近傍の「近傍」は、「特定の点の近く」の意味ですが、特定の点がなくても近傍と言います。語感がイヤなら「座標開集合」とか呼べばいいんじゃないのかな。まー、座標まわりの用語法はゴチャゴチャしているので、僕はチャートをキチンと定義した上で、原則「チャート」だけを使うようにしています。その他の概念は、ddef(φ), dom(φ), πi¥circφ, im(φ) などと書けばいいのです。

それとですね、反チャートのほうを局所座標と呼ぶ人もいます。チャートと反チャートの両方とも局所座標とする人もいるでしょう。そもそも、チャートと反チャートの区別が付かずにゴッチャになっている人もいそうです。

反チャートは、ψ:Rn→M という方向の部分写像です。反チャートのことを、よくパラメータ表示〈parameterization〉と呼びます。反チャートの定義域 ddef(ψ)⊆Rnパラメータ領域〈parameter domain/region/space〉と呼びます。

チャート φ:M⊇→Rn の方向を反対にすると反チャート Rn⊇→M が出来そうです。同じく、反チャート ψ:Rn⊇→M の方向を反対にしてチャート M⊇→Rn が出来そうです。「方向を反対にする」を厳密に定義しましょう。

チャート φ:M⊇→Rn と、Rnの部分集合Bに対して、φの余域をBに制限した部分写像を φ|B とします。ただし、Bを自由には選べなくて、im(φ)⊆B のときに限り φ|B がwell-definedになります(「古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用 // 出力制約」を参照してください)。im(φ)⊆im(φ) は自明に成立するので、φ|im(φ):M⊇→im(φ) は意味を持ちます。

φ:M⊇→Rn がチャートである条件に、「φ|im(φ)が可逆〈invertible〉である」があるので、普通の写像としての逆写像 (φ|im(φ))-1:im(φ)→ddef(φ) が作れます。さらに、包含関係 ddef(f)⊆M に伴う包含写像 inclddef(f),M:ddef(f)→M を後結合〈postcompose〉して、

  • (φ|im(φ))-1;(inclddef(f),M) = (inclddef(φ),M)¥circ(φ|im(φ))-1

が作れます。これを、φの反転converse〉と呼び、φと書くことにします。

  • φ := (inclddef(φ),M)¥circ(φ|im(φ))-1

同様に、反チャート ψ:Rn⊇→M に対して、反転ψを定義できます。

  • ψ := (inclddef(ψ),Rn)¥circ(ψ|im(ψ))-1

チャート/反チャートの条件に反転可能〈convertible〉であることが入っていたので、φ, ψ が作れるわけです。そして、次が成立します。

  • φがMのチャートなら、反転φはMの反チャートである。
  • ψがMの反チャートなら、反転ψはMのチャートである。

これにより、チャートと反チャートを対称的に扱ってよくなります。対称的に扱えることは、混同してゴッチャにしていいってことじゃないです。

多様体Mには、Mの全てのチャートからなる集合 Chart(M) と、Mの全ての反チャートからなる集合 OpChart(M) が付随します。チャート/反チャートを反転する操作を conv(-) := (-) と置くと、convは、

  • conv:(Chart(M)∪OpChart(M)) → (Chart(M)∪OpChart(M))

という自己写像〈endomorphism〉となり、conv;conv = conv¥circconv = id という性質(対合性〈involution property〉)を持ちます。convは、鏡に写すような操作なので、チャート/反チャートの空間が対称性を持つ、という言い方は的外れではありません。

多様体は人造物か自然物か

多様体は人間が作業して作り出すものでしょうか? それとも、概念世界に天然に存在しているものでしょうか?

  • 人造物なら、我々はそれを作成する。
  • 自然物なら、我々はそれを発見する。

どうだっていいじゃん -- うん、どうだっていいんですけどね。ただ、チャートやアトラスの定義に、多様体を人造物とみるか/自然物とみるかの違いが反映されている気もするんですよ。

もし人造物なら、ユークリッド空間Rnの開集合を素材にして、ペタペタ糊付け〈gluing〉して多様体を作り出す必要があります。この立場だと、アトラスは素材キットであり、糊付けがうまくいくように素材を選択して同梱する必要があります。変な素材を入れると糊付け/組み立てが失敗します。

一方、多様体が自然物なら、我々はそれを発見し観察するだけです。チャートやアトラスは、観測の手段であり素材キットではありません。観測のために適切なチャートを選択する必要はありますが、もともと多様体に備わっていたものなので、チャートどうしがうまく噛み合わない、なんてことは起こりません。

僕自身は、多様体は自然物だと思っています。そう信じてるわけじゃなくて、そう思ったほうが都合がよさそうだからです。多様体Mの開集合Uを任意に選ぶと、U上のなめらかな(実数値の)関数の集合 C(U) が決まります。「座標(チャートまたは反チャート)を考える前に“なめらか”もへったくれもないだろう」 -- いやっ、座標を入れる前から「なめらかさ」は自然界に存在しているのです。

我々人間が、座標(チャートまたは反チャート)を選ぶかどうかに無関係に、M上の各開集合Uに C(U) が決まっているなら、次の言明は意味を持ちます。

  • 多様体M上の開集合Uと、ユークリッド空間Rnの開集合Aに対して、位相同型写像 ρ:U→A が、C(A) から C(U) への同型写像を誘導する。

誘導された写像とは、f∈C(A) に対して、引き戻し (f¥circρ)∈C(U) を対応させる写像です。φ:M⊇U→Rn がチャートであることは、φ|im(φ) が上記のρの性質を持つことになります。

もちろん、「座標(チャートまたは反チャート)以前に与えられる C(U) って何なんだよ、それ?」という疑問に答える必要があります。(今日は答えません、あしからず、いずれ書くかも。)

多様体は人造物だから糊付けして作るのだ、という立場なら、今言った難しい問題は回避できます。素材キットであるアトラスに同梱されたチャート達が整合的ならいいのです。整合性は、チャート(局所座標)のあいだの変換写像〈transition map〉達が、普通の意味でなめらか(無限回微分可能)であることだと定義できます。ここで変換写像とは:

  • φ, φ':M⊇→Rn がチャートのとき、部分写像の意味での結合 φ'¥circφ を、φからφ'への変換写像と呼ぶ。(φはφの反転)

アトラスのなかに反チャートが混じっていても、変換写像とアトラスの整合性は同様に定義できます。

おわりに

前節で述べた「多様体は人造物か自然物か」の議論は、哲学や信仰の話ではありません。そうではなくて、多様体を定式化する際の指導原理の話です。「多様体は自然物だ」説が、どちらかというと、冒頭(最初の節)のモダンな定式化と相性がいいように思えます。

「多様体は自然物だ」説に基づいたチャート/アトラスをちゃんと定義して、「多様体は人造物だ」説に基づくたチャート/アトラスと同値であることを示すのは、また今度にします。

それと、円周S1と球面S2以外のチャート/アトラスの例、ユークリッド空間Rnの部分多様体ではない多様体のチャート/アトラスの例も提示したいんですけど、それもまたいつか。

*1:多様体Mまたはその開集合U上のなめらかな(無限回微分可能な)関数の全体 C(M), C(U) は、可換環だし、ベクトル場や微分形式(の場)は、関数の可換環上の加群になっています。

*2:「古式スタイル」って「馬から落馬」な言い方だけど、使い続けます。

*3:画像: http://www.ntv.co.jp/marumie/onair/120130/120130_02.html より

*4:抽象的に多様体を定義する試みのなかには、ほんとに座標を一切使わないものもあります。そこまでいくと、ちょとやり過ぎかな、と思います。

*5:画像の出典は不明、芸人のゴー☆ジャスさん

*6:現在の本初子午線はグリニッジ天文台から100メートル離れているそうです。

ryoryo 2018/07/05 18:34 >> ユークリッド空間R^nの部分多様体ではない多様体

ホイットニーの埋め込み定理があるから、難しいような気もしますがどうなんでしょう。

m-hiyamam-hiyama 2018/07/05 18:40 ryoさん、
> 難しいような気もしますがどうなんでしょう。
ん? 何が難しいのでしょうか?
どんな多様体でもR^nに埋め込めちゃうから、「R^nの部分多様体でない多様体」の例なんてない、ってこと?

ryoryo 2018/07/06 20:53 そうです。埋め込めちゃう時に、いやこれは「R^nの部分多様体でない多様体」の例だよ、
というのはどういう構成したらいいのかなぁ、と疑問に思ったのです。

m-hiyamam-hiyama 2018/07/07 08:41 「十分大きなmに対して M→R^m と埋め込める」という主張において、もし M⊆R^n だとしたらトリビアル&ナンセンスですよね。
埋め込み定理が意味を持つのは、「R^nの部分多様体ではないM」があるからこそです。事例としては M=射影空間 とか。

2018-07-02 (月)

古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用

| 18:46 | 古典的微分幾何・ベクトル解析のモダン化: ラムダ記法の利用を含むブックマーク

微分幾何・ベクトル解析の古い教科書、あるいは古いスタイルで書かれた説明は、とても分かりにくいものです。記法の説明や計算の仕方はちゃんと書いてあるのですが、その記法が何を表すのか? 計算によって何をしてるのか? 実体/実状が把握できないんです。

今でも古いスタイルの説明はよく見かけます。それに文句を言うのはやめて(過去、文句を言いましたが(笑))、古い(古典的/古式)スタイルの記述に、モダンな解釈を与えるにはどうするか、を解説します。

古典的/古式なスタイルは、微分幾何・ベクトル解析に限らず、例えば中学・高校の教育でも使われているので、それを避けるのは難しいでしょう。モダンな解釈、モダンな再定式化を知っておいて損はないと思います。

今回だけでなく、2,3回は書くと思います(たぶん)。とりあえず今回は、関数〈写像〉に関する曖昧な記述をハッキリさせるために型付きラムダ記法を導入します。

内容:

  1. 古典的/古式なスタイルの記述とは
  2. 入力型と出力型を持つ型付きラムダ記法
  3. 入力制約と出力変数
  4. 非独立入力変数と多出力変数
  5. 出力制約
  6. 部分写像とそのプロファイル
  7. 関数への名前付け
  8. 座標ラベル
  9. ヤコビ行列の表現
  10. おわりに

続きの記事:

古典的/古式なスタイルの記述とは

現代の記号的記述/記号的計算では、次の三者は区別されます。

  • 変数記号 x
  • 関数記号 f、関数を表す項 E
  • 関数値を表す項 f(x), E(x)

関数を表す項としては、λx∈R.(x2 - x + 2) のような型付きラムダ項〈typed lambda term〉がよく使われます。

しかし、古典的/古式なスタイルでは、変数と関数の区別は曖昧です。例えば、多変数写像を微分したヤコビ行列は次のように書きます。

 ¥(¥frac{¥partial y^j}{¥partial x^i}¥)_{i = 1, ¥cdots, n¥: j = 1, ¥cdots, m

変数(のタプル) y = (y1, ..., ym) は、変数(のタプル) x = (x1, ..., xn) の“関数”だ、という言い方をします。で、“関数”yを変数xで微分したわけです。

関数(あるいは写像)yが可逆な(逆写像を持つ)場合は、xがyの“関数”となるので、xをyで微分すれば、

 ¥(¥frac{¥partial x^i}{¥partial y^j}¥)_{j = 1, ¥cdots, m, ¥: i = 1, ¥cdots, n}

これは、先のヤコビ行列の逆行列になるので、次の等式が成立します。

 ¥frac{¥partial x^k}{¥partial y^j}¥,¥frac{¥partial y^j}{¥partial x^i} = ¥delta^k_i

ここで、添字(インデックス)jに関する総和記号は省略してあり、δはクロネッカーのデルタです。

と、これが古典的/古式な言い方/書き方の例です。わかりますか? まー、分かる人には分かるでしょうが、僕はサッパリ分かりませんでした。

記号の約束(上下の添字、総和記号の省略)はともかくとして、関数〈写像〉に関する暗黙の前提が多すぎるんですよ。その前提を自力で補うことが、僕には困難でした。

入力型と出力型を持つ型付きラムダ記法

関数〈写像〉の記述を明確にする書き方として、型付きラムダ記法〈typed lambda notation〉があります。例えば、2次関数 y = x2 は次のように書きます。

  • λx∈R.x2

だいぶ明確になります。しかし、これだと関数〈写像〉の余域〈codomain | 終域〉がハッキリしません。次の書き方にします。

  • λx∈R.(x2 : R)

いわゆる“型推論”には頼らず、必ず明示的に入力型と出力型を書くことにします。次の3つの関数は別なものです。

  1. λx∈R.(x2 : R)
  2. λx∈Z.(x2 : R)
  3. λx∈Z.(x2 : Z)

入力制約と出力変数

入力型の記述に、集合の内包記法〈intentional notation/definition〉を使っていいとしましょう。例えば:

  • λx∈{t∈R| t ≧ 0}.(√x : R)

内包記法で使われた変数tは束縛変数なので、自由にリネームできます。

  • λx∈{x∈R| x ≧ 0}.(√x : R)

同名の変数xが、異なる束縛スコープで使われています。束縛変数はそのスコープ内で自由にリネームできるので、次に挙げるラムダ項は全部同じ関数を表します。

  1. λx∈{t∈R| t ≧ 0}.(√x : R)
  2. λy∈{x∈R| x ≧ 0}.(√y : R)
  3. λx∈{y∈R| y ≧ 0}.(√x : R)
  4. λx∈{x∈R| x ≧ 0}.(√x : R)
  5. λy∈{y∈R| y ≧ 0}.(√y : R)

同じ名前を異なるスコープで使うことは許されることですが、混乱するのは確かです。古式スタイル*1が分かりにくい理由のひとつは、同じ名前を様々な意味でオーバーロード(多義的使用)するからです。モダン化するには、明確にスコープを切って、異なるスコープで解釈してあげます。

さて、λx∈{x∈R| x ≧ 0}.(√x : R) に問題はないのですが、混乱の危険だけではなくて、束縛変数xを二度導入しているので冗長です。次の書き方を採用しましょう。

  • λx∈(R| x ≧ 0).(√x : R)

ちょっとだけコンパクトな書き方になりました。x ≧ 0 のような、入力変数に関する条件を入力制約〈input constraint〉と呼びます。プログラマには、事前条件〈precondition〉と言うとピンと来るでしょう。

古式スタイルでは、関数の定義に y = x2 のように出力変数も指定するのが普通です。この習慣を尊重して、次の書き方を許します。

  • λx∈R.(y := x2 : y∈R)

さらに、出力変数に入力変数と同じ名前を使うのも許します。

  • λx∈R.(x := x2 : x∈R)

これまた混乱しますが、構文的には(出現位置で)入力変数と出力変数を区別できるので大丈夫です。プログラミングでは x = x + 1 と書いたりするし、恒等関数を λx∈R(x := x : x∈R) と書くのはさほど変ではないでしょう。

出力変数もラムダ項のなかに閉じ込められているので、リネームは自由に行なえます。次はすべて同じ関数を表します。

  • λx∈R.(x := x2 : x∈R)
  • λx∈R.(y := x2 : y∈R)
  • λx∈R.(z := x2 : z∈R)

非独立入力変数と多出力変数

円周S1は、2次元平面の部分集合として定義する場合が多いですね。

  • S1 := {(x, y)∈R2| x2 + y2 = 1}

円周S1上で定義された関数を、2変数関数で表すことがあります。

  • λ(x, y)∈(R2| x2 + y2 = 1).(x + y : R)

入力制約 x2 + y2 = 1 があるので、この関数はR2全体で定義されてません。関数の域〈domain | 始域〉は1次元ですが、変数はxとyを使っています。

入力変数を独立変数とも呼ぶ習慣がありますが、この例では、xとyは独立ではありません。入力制約で縛られるので非独立〈non-independent〉あるいは従属〈dependent〉な関係になります。このようなことがあるので、次の提案をしておきます。

  • 入力変数を独立変数と呼ぶのはやめよう。非独立な入力変数もある。
  • 出力変数を従属変数と呼ぶのはやめよう。入力変数でも従属変数がある。

非独立な入力変数があるとき、状況によっては「入力変数を減らして独立な入力変数に出来るよ」と主張しているのが陰関数定理です。

出力変数は2つ以上あってもかまいません。

  • λθ∈R.(x := cos(θ), y := sin(θ) : (x, y)∈R2)
  • λ(r, θ)∈(R2| r≧0, 0≦θ≦2π).(x := r cos(θ), y := r sin(θ) : (x, y)∈R2)
  • λ(x, y)∈(R2| x > 0).(r := √(x2 + y2), θ := arctan(y/x) : (r, θ)∈R2)

入力変数と出力変数に同じ名前が登場してもいいので:

  • λ(x, y)∈R2.(x := y, y := x : (x, y)∈R2)

これは、第一座標と第二座標を入れ替える写像です。分かりにくいのなら、出力変数もリネームしていいので:

  • λ(x, y)∈R2.(s := y, t := x : (s, t)∈R2)

出力制約

入力変数(のタプル)に入力制約で条件付けできます。同様に出力側にも制約を課していいとしましょう。

  • λx∈R.(y := x2 : y∈(R| y > -1))
  • λ(x, y)∈(R2| x2 + y2 = 1).(z := x + y : z∈(R| -√2 ≦ z ≦ √2))
  • λ(x, y)∈(R2| x > 0).(r := √(x2 + y2), θ := arctan(y/x) : (r, θ)∈(R2| -π < θ < π))

出力制約〈output constraint〉は勝手に付けられるわけではありません。ラムダ項が関数を表すことを担保するためには、値が出力制約の範囲内にあることを示す必要があります。上の3つのそれぞれに対して、次の命題を示す義務が生じます。

  • ∀x∈R.(y = x2 ⇒ y > -1)
  • ∀(x, y)∈R2.(x2 + y2 = 1 ∧ z = x + y ⇒ -√2 ≦ z ≦ √2)
  • ∀(x, y)∈R2.(x > 0 ∧ r = √(x2 + y2) ∧ θ = arctan(y/x) ⇒ -π < θ < π)

ラムダ記法とイプシロン記法を組み合わせて関数を定義する」で述べことですが、関数定義に伴って要求される正当性の証明を(Mizarでは)justificationと呼びます。今の例では、上記の命題の証明がjustificationとなります。

関数を定義する際や、関数に何らかの操作を加える際には、justificationが要求されることがあるのですが、古式スタイルはそこらへんを曖昧に済ませてしまいます。そもそも、入力制約や出力制約がちゃんとは言及されないこと(空気読めよ方式)があります。曖昧な部分は自力で明確化するしかないです。

部分写像とそのプロファイル

現代風の関数〈写像〉の定義では:

  1. 域〈始域〉Xと余域〈終域〉Yがハッキリと決まっている。
  2. 域Xのすべての要素xに、余域Yの要素f(x)が一意的に(1つだけ)定まる。

古式スタイルでは、これらは守られません。古式スタイルの関数〈写像〉とは、部分写像〈partial mapping〉と思ったほうがいいでしょう。

部分写像は、次の素材から構成されます。

  • 集合X
  • Xの部分集合A
  • 集合Y
  • AからYへの通常の写像 f:A→Y

これらをまとめて次のように書きます。

  • f:X⊇A→Y

X⊇A→Y の部分を、部分写像fのプロファイルと呼びます。集合Aはfの定義域〈domain of definition〉です。通常、域と定義域は同義語と解釈しますが、部分写像では違います。次の記法を使いましょう。

  • dom(f) = X
  • ddef(f) = A
  • cod(f) = Y

2つの部分写像fとgが結合可能〈composable | 合成可能〉である条件は、通常の写像と同じで cod(f) = dom(g) です。f:X⊇A→Y と g:Y⊇B→Z の結合 h = f;g = g¥circf は次のように定義されます。

  • f(a)∈B のとき、 h(a) = g(f(a))
  • そうでないとき、h(a)は未定義

h = f;g = g¥circh の定義域(域ではない)は、fの定義域とは変わるかもしれません。fによる集合Bの逆像がhの定義域です。hの定義域が空になってしまこともあります。

上記のように部分写像とその結合を定義すると、だいたい普通の写像と同じように扱えることは分かっています。なので、古式スタイルの“関数”を部分写像として扱いたいと思うのですが … ですが、けっこう深刻な問題があります。

型付きラムダ記法で書かれた関数定義から、部分写像としてのプロファイルを取り出すことがうまくできないのです。例えば:

  • λ(x, y)∈(R2| x2 + y2 = 1).(x + y : R)

この関数のプロファイルは何でしょうか? S1を円周として、R2⊇S1R が自然のように思えますが、S1⊇S1R (つまり全域写像)のつもりだったかも知れません。次はどうでしょう?

  • λ(x, y)∈(R2| x2 + y2 = 1, y > 0).(x : R)

U = {(x, y)∈R2| x2 + y2 = 1, y > 0} として、この関数のプロファイル候補は:

  • R2⊇U→R
  • S1⊇U→R
  • U⊇U→R

どれなのか? これといって決め手はありません。部分写像としてのプロファイルを決定できないので、古式スタイルの関数を部分写像と解釈することは難しく、部分写像としての整合的な定式化も頓挫します。

以前僕は、部分写像プロファイルを少し一般化した f:X⊇A→B⊆Y というプロファイルを考えて、fの使用状況からXとYを、ソフトウェアにより“型推論”することを試みたことがあります。難しくてうまくいきませんでした。

ソフトウェアによる実装が難しいということは、人間にとっても難しい、ってことです。古式スタイルの曖昧な域・定義域・余域を、アルゴリズム的に決定するのは無理だと思います。しかし、曖昧な域・定義域・余域がヘビーに使われる場面、具体的には局所座標の変換では、ハッキリとした定式化ができます。局所座標の変換については、次の機会に(たぶん)述べます。

関数への名前付け

冒頭でも述べたように、古式スタイルでは、関数と変数の区別がされないことがあります。これは、名前のスコープをハッキリさせることで、破綻しない定式化ができます。

関数の名前付けを次の形で行いましょう。

  • mapping sqrt := λx∈(R| x ≧ 0).(√x : R)

次の名前付けは問題ありません。

  • mapping y := λx∈R.(y := x2 : y∈R)

ラムダ項内の出力変数と関数名がたまたま同じですが、出力変数もラムダ項内に閉じ込められた束縛変数です。束縛変数はリネームしても何も変わりません。

  • mapping y := λx∈R.(t := x2 : t∈R)

あるいは、出力変数なしでもいいでしょう。

  • mapping y := λx∈R.(x2 : R)

この定義のもとで、次のような等式は成立します。

  • y(a) = a2
  • y(2) = 4
  • y(a + b) = a2 + 2ab + b2

「出力変数名と関数名が同じ名前」というのは、たまたま選んだ束縛変数名が関数名と同じだけで、スコープが違うし、束縛変数のリネームもできるので問題にはなりません。

  • mapping (x1, x2) := λθ∈R.(x1 := cos(θ), x2 := sin(θ) : (x1, x2)∈R2)

でも、外部に公開される関数名はx1とx2で、内部的な出力変数名とかぶっているのは単なる偶然だと言い張れます。

というわけで、関数名と出力変数名のかぶりは合理化できましたが、違う関数に同じ名前が付けられるのはどうでしょうか。

mapping y := λx∈R.(y := x2 : y∈R)
mapping y := λx∈R.(y := 2x + 1 : y∈R)

こんなときは、後の関数定義(名前付け)が前の定義を上書きした、あるいは新しい環境(名前空間)に入って同名の別な関数を定義したと解釈しましょう。

座標ラベル

古式スタイルが分かりにくい大きな理由は、「同じ名前を様々な意味でオーバーロード(多義的使用)するからだ」と述べました。このような状況に対して、同じ名前でも、所属する名前空間〈namespace | namae partition〉が違うから別なものを表してもいい、という解釈で合理化できます。

前節では、出力変数名と関数名は違う名前空間(スコープ)に属するから同名でもかまわないとしました。ここで、また別な名前空間として、座標ラベル〈coordinate label〉の名前空間を導入しましょう。

Rnの部分集合(多くの場合は開集合)Aに対して、座標ラベルと呼ばれる記号の集合Sを用意します。Sはn個の要素を持つ有限集合です。例えば、S = {'x', 'y'}。シングルクォートで囲んだのは、変数名ではなくて単なるラベルだと強調するためです(この後はもう囲みません)。座標ラベルは、座標軸の名前と考えればいいでしょう。

座標ラベル集合は、集合Aごとに準備されるので、Aの座標ラベル集合とBの座標ラベル集合に同じ記号が入っていてもかまいません。座標ラベルは単なるラベルなので、変数名や関数名とは別な名前空間を構成します。

座標ラベルSが指定された集合Aは、A⊆Rn というより、A⊆RS と考えます。RS ¥stackrel{¥sim}{=} Rn ですが、RS では座標軸の呼び名が 1, 2, ..., n ではなくて、Sの要素(ラベル)で呼びます。

射影 RSR は、Sの要素でラベルされます。例えば、R{x, y}ならば、

  • πx:R{x, y}R
  • πy:R{x, y}R

Rn = R{1, ..., n} とみなせば、πi:R{1, ..., n}R という記法と整合します。

A⊆RS とみなすので、A上に制限された射影も、Sでラベルしたπs(s∈S)で表します。

S = {x, y} の例で、射影に関数名を与えることができます。例えば、

mapping x := πx
mapping y := πy

あるいは、

mapping p := πx
mapping q := πy

射影にどんな名前を付けるのも自由だし、名前を付けずにπsとして使ってもかまいません。

射影以外に、偏微分作用素も座標ラベルでラベルすることにします。Aは開集合として、C(A)を、A上で定義されたなめらかな(無限回微分可能な)実数値関数の全体だとします。A⊆Rn ならば、標準的な偏微分作用素は、1, ..., n という番号でラベルされます。

  • D1:C(A)→C(A)
  • D2:C(A)→C(A)
  • Dn:C(A)→C(A)

A⊆RSなら、偏微分作用素もSの要素sでラベルしてDsのように書きます。S = {x, y} の例なら:

  • Dx:C(A)→C(A)
  • Dy:C(A)→C(A)

繰り返しますが、座標ラベルは変数名でも関数名でもないので、同名の変数・関数があっても問題になりません。

ヤコビ行列の表現

次の例を考えましょう。

  • λ(x, y)∈(R2| x > 0).(r := √(x2 + y2), θ := arctan(y/x) : (r, θ)∈R2)
  • λ(r, θ)∈(R2| r > 0, -π < θ < π).(x := r cos(θ), y := r sin(θ) : (x, y)∈R2)

写像の成分関数に次のように名前を付けます。

mapping (r, θ) := λ(x, y)∈(R2| x > 0).(r = √(x2 + y2), θ = arctan(y/x) : (r, θ)∈R2)

mapping (x, y) := λ(r, θ)∈(R2| r > 0, -π < θ < π).(x := r cos(θ), y := r sin(θ) : (x, y)∈R2)

既に述べた理由で、関数名 r, θ, x, y は問題ありません。

座標ラベル集合{x, y}に対して、開集合Aを次のように定義します。

  • A := {{x:s, y:t}∈R{x, y}| s > 0}

{x:s, y:t}は、x座標成分の値がs、y座標成分がtという意味です。同様に、座標ラベル集合{r, θ}に対して、開集合Bを次のように定義します。

  • B := {{r:s, θ:t}∈R{r, θ}| s > 0, -π < t < π}

R2 ¥stackrel{¥sim}{=} R{x, y}, R2 ¥stackrel{¥sim}{=} R{r, θ} により、関数 r, θ, x, y は次のようにみなせます。

  • r:A→R
  • θ:A→R
  • x:B→R
  • y:B→R

A, B上の偏微分作用素は、{x, y}, {r, θ} でラベルされるので、

  • Dx:C(A)→C(A)
  • Dy:C(A)→C(A)
  • Dr:C(B)→C(B)
  • Dθ:C(B)→C(B)

偏微分作用素を関数に作用させれば、次は意味を持ちます。

  1. Dxr ∈C(A)
  2. Dyr ∈C(A)
  3. Dxθ ∈C(A)
  4. Dyθ ∈C(A)
  5. Drx ∈C(B)
  6. Dθx ∈C(B)
  7. Dry ∈C(B)
  8. Dθy ∈C(B)

関数可換環C(A)またはC(B)を係数環とする次の行列も意味を持ちます。

[tex:
\begin{pmatrix}
D_x r      & D_y r \\
D_x \theta & D_y \theta
\end{pmatrix}
]

[tex:
\begin{pmatrix}
D_r x & D_{\theta} x \\
D_r y & D_{\theta} y
\end{pmatrix}
]

¥begin{pmatrix}D_x r      & D_y r ¥¥D_x ¥theta & D_y ¥theta¥end{pmatrix}

¥begin{pmatrix}D_r x & D_{¥theta} x ¥¥D_r y & D_{¥theta} y¥end{pmatrix}

 D_x = ¥frac{¥partial}{¥partial x} のような書き換えをすれば:

[tex:
\begin{pmatrix}
\frac{\partial r}{\partial x}      &  \frac{\partial r}{\partial y} \\
\frac{\partial \theta}{\partial x} &  \frac{\partial \theta}{\partial y} \\
\end{pmatrix}
]

[tex:
\begin{pmatrix}
\frac{\partial x}{\partial r} &  \frac{\partial x}{\partial \theta} \\
\frac{\partial y}{\partial r} &  \frac{\partial y}{\partial \theta} \\
\end{pmatrix}
]

¥begin{pmatrix}¥frac{¥partial r}{¥partial x}      &  ¥frac{¥partial r}{¥partial y} ¥¥¥frac{¥partial ¥theta}{¥partial x} &  ¥frac{¥partial ¥theta}{¥partial y} ¥¥¥end{pmatrix}

¥begin{pmatrix}¥frac{¥partial x}{¥partial r} &  ¥frac{¥partial x}{¥partial ¥theta} ¥¥¥frac{¥partial y}{¥partial r} &  ¥frac{¥partial y}{¥partial ¥theta} ¥¥¥end{pmatrix}

これらは、関数係数〈関数成分〉の行列ですが、次の、簡単だがとても重要な同型により、実数係数行列を値とする関数〈写像〉ともみなせます。以下で、C(X, Y)は、XからYへのなめらかな写像の全体、Mat(n, m;R)は、R係数のm行n列の行列の集合です。

  • C(A, Mat(n, m;R)) ¥stackrel{¥sim}{=} Mat(n, m;C(A))
  • C(B, Mat(n, m;R)) ¥stackrel{¥sim}{=} Mat(n, m;C(B))

(r, θ):A→R2 と (x, y):B→R2 は、そのままでは(厳密に言えば)結合できませんし、逆写像にもなっていません。しかし、次のような部分写像とみなせば結合ができます。

  • (r, θ):R{x, y}⊇A→R{r, θ}
  • (x, y):R{r, θ}⊇B→R{x, y}

部分写像の意味で結合〈合成〉すれば:

  • (x, y)¥circ(r, θ) = idA
  • (r, θ)¥circ(x, y) = idB

がほぼ成立するので、互いに逆と言ってもいいでしょう。[追記]「ほぼ成立する」の「ほぼ」を追加しました。非常にうるさく言えば、idA, idB じゃなくて、inclA,R{x, y}, inclB,R{r, θ}で、inclは包含写像〈inclusion map〉です。[/追記]

添字付けや総和記号の省略の規則は述べてませんが、冒頭で述べたヤコビ行列の記法が、意味付け可能だろうと推察できるでしょう。

[追記]Maximaにヤコビ行列を計算させてみると、こんな(↓)感じでした。やはり、同時に同じ名前を使うのはうまくなくて、関数のx, y、変数のr, θは大文字にしています。

r : sqrt(x^2 + y^2)
theta : atan(y/x)
X : R*cos(Theta)
Y : R*sin(Theta)

matrix([diff(r, x), diff(r, y)], [diff(theta, x), diff(theta, y)])
matrix([diff(X, R), diff(X, Theta)], [diff(Y, R), diff(Y, Theta)])

[/追記]

おわりに

前節の議論では、集合や写像の名前付けやプロファイルの特定などが、細かすぎてうるさいなー、と感じたかもしれません。それはそのとおりで、煩雑になります。「話が簡単になるから、このくらいの曖昧さや非厳密さはいいだろう」という気持ちはわかりますが、それが何段階も積み重なると、全体がモヤンモヤンのワケわからないシロモノになります。

記号をイイカゲンに使った計算は実際に楽で便利なんで、使うのはおおいにけっこうですが、一方で、モヤンモヤンは晴らしておきたいなー、とも思います。

*1:古式の「式」って、スタイルって意味だよね。「古式スタイル」って「馬から落馬」な言い方ですね。でも使う。

2018-06-27 (水)

IIDな確率変数達はどこから来るのか

| 15:31 | IIDな確率変数達はどこから来るのかを含むブックマーク

超曖昧語「母集団」「標本」にケリをつける // ID列と独立ベキ測度の前送り定理」で、間違いを書いてしまい訂正しました。訂正のところに、「たぶん間違った理由を説明します、後日」と書いてますが、間違いを説明するだけでは建設的でないので、「独立ベキ測度の前送り定理」をほぼセルフコンテインドな形で説明します。

そして、どこからともなく唐突に現れるIID〈independent and identically distributed〉な確率変数達は、もとの確率変数(母集団の変量)から具体的に構成できるシロモノであることを示します。

内容:

  1. はじめに
  2. 準備:写像の一般論
  3. 準備:可測写像の独立性
  4. 準備:確率空間の独立積と独立ベキ
  5. 独立ベキ測度の前送り定理
  6. IID列を作る
  7. IID列の独立性
  8. おわりに

はじめに

この記事のエッセンスは、与えられた確率空間 A = (ΩA, ΣA, μA) に対して、独立積の意味でのn乗 A⊗n = ((ΩA)n, (ΣA)⊗n, (μA)⊗n) を作ることです。独立積の意味でのn乗は独立ベキと呼びます。

独立ベキは、確率空間への操作として良い性質を持っていて、f:A→B が確率空間のあいだの準同型写像(確率測度を保存する可測写像)ならば、自動的に、A⊗n から B⊗n への準同型写像を誘導します*1。誘導された写像は f⊗n と書くのが整合的ですが、この記事では(諸般の事情から)f×nと書きます。

  • f×n:(ΩA)n→(ΩB)n (確率を保存する写像)

B側に確率測度がなくて、単なる可測空間のときは、A側の確率測度をfによってB側に前送りできます。前送りされた測度を備えたBは確率空間になり、f×nは確率測度を保存する可測写像となります。

このテの議論のためには、測度の定義くらいは知っている必要がありますが、実際にやっていることのほとんどは、部分集合(可測集合)を写像の逆像によりあっちこっちに引っ張り回すことです。集合と写像の計算/推論をたくさんするので、「全称記号・存在記号の練習:集合と写像の話題から」で出したような練習問題の宝庫と言えます。

準備:写像の一般論

写像 f:A→B, g:C→D に対して、次のような構成を説明します。これらの構成は、たいへん基本的なものです。

  1. fとgの結合〈composition | 合成〉、記法は f;g または g¥circf *2
  2. fとgの直積〈direct product〉、記法は f×g *3
  3. fとgのデカルトタプリング〈cartesian tupling〉、記法は <f, g>

定義は次のとおりです。

  1. 結合: B = C のときだけ定義可能で f;g = g¥circf:A→D
    定義: (f;g)(a) = (g¥circf)(a) := g(f(a))
  2. 直積: f×g:A×C→B×D
    定義: (f×g)(a, c) := (f(a), g(c))
  3. デカルトタプリング: A = C のときだけ定義可能で <f, g>:A→B×D
    定義: <f, g>(a) := (f(a), g(a))

集合の直積A×Bに対して、その第一射影〈first projection〉を π1A,B:A×B→A、第二射影〈second projection〉を π2A,B:A×B→A とします。

  • π1A,B(a, b) := a
  • π2A,B(a, b) := b

A, Bが分かっているとき、または特に明示する必要もないときは、射影を単に π1, π2 とも書きます。

集合Aの対角写像〈diagonal map〉は ΔA:A→A×A と書きます。

  • ΔA(a) := (a, a)

Aが分かっているとき、または特に明示する必要もないときは、対角写像を単にΔとも書きます。

次の関係があります。

  • f:A→B, g:A→D に対して、<f, g> = Δ;(f×g)
  • f:A→B, g:C→D に対して、f×g = <π1A,C;f, π2A,C;g>
  • f:A→B, g:A→D に対して、<f, g>;π1 = f, <f, g>;π2 = g
  • f:A→B×D に対して、<f;π1, f;π2> = f

どれも、定義から容易に示せます。

直積もデカルトペアリングも、n個の集合/写像に対して定義できます。詳しく説明する必要はないでしょうが、次のような記号を使います。

  • 直積 f1×...×fn:A1×...×An→B1×...×Bn
  • デカルトペアリング <f1, ..., fn>:A→B1×...×Bn
  • 射影 πiA1,...,An:A1×...×An→Ai (i = 1, ..., n)
  • 対角 ΔnA:A→A×...×A

後で使うので、次の等式は心に留めておいてください

  • f:A→B1×...×Bn に対して、<f;π1, ..., f;πn> = f

集合Aに対して Pow(A) はAのベキ集合〈power set〉とします。f:A→B に対して、fの逆像写像〈inverse-image mapping〉 f*:Pow(B)→Pow(A) と、fの像写像〈image mapping〉 f*:Pow(A)→Pow(B) を次のように定義します。

  • T∈Pow(B) に対して、f*(T) := {a∈A | f(a)∈T}
  • S∈Pow(A) に対して、f*(S) := {b∈B | ∃a∈A.(a∈A かつ f(a) = b)}

fの逆像写像の像写像 f** = (f*)* : Pow(Pow(B))→Pow(Pow(A)) は次のような写像です。

  • F∈Pow(Pow(B)) に対して、f**(F) = {S∈Pow(A) | ∃T∈Pow(B).(T∈F かつ f*(T) = S)}

f**は、B上の集合族(Bの部分集合の集合)を、A上の集合族に写します。f** は、σ代数やその生成系をfと逆向きに送るときに使われます。

準備:可測写像の独立性

この節では、可測写像の独立性の定義を天下りに述べます。動機付けや実例がないのは心苦しいですが、かんべんしてね。なお、この記事では、「確率変数」という言葉を積極的に使う気はありません。「可測写像(確率変数)」という表記にとどめます(タイトルとリード文には「確率変数」と出してるけど(苦笑))。

A = (ΩA, ΣA) を可測空間とします。ΩAが台集合で、ΣAはΩA上のσ代数です。混乱の心配がなければ、記号を乱用して A = (A, ΣA) とも書きます。

F⊆ΣA を任意の集合(Aの部分集合の集合)として、σA(F) をFから生成された最小のσ代数〈smallest sigma-algebra〉とします。σA(F)⊆ΣA。可測空間Aが分かっているとき、または特に明示する必要もないときは、σA(F) を単に σ(F) とも書きます。

A = (A, ΣA), B = (B, ΣB) を可測空間、f:A→B を可測写像とします。f**B) は、ΣAの部分σ代数になります。

  • f**B) = {S∈ΣA | ∃T∈ΣB.(T∈ΣB かつ f*(T) = S)}

可測写像 f:A→B から f**B) が一意に決まるので、次のように定義します。

  • σ[f] := f**B)

σ[f]を、fで生成されたσ代数〈sigma-algebra generated by f〉と呼ぶことがあります。σ(-)とσ[-]は、括弧の種類で区別しています。似てはいますが、違う概念です。

ここから先、Aは単なる可測空間ではなくて、確率空間だとします。つまり、A = (A, ΣA, μA) で、μAは確率測度とします。A, BをΣAの部分σ代数とします。2つの部分σ代数ABがμAに関して独立〈independent〉だとは、次が成立することです。

  • 任意の U∈A, V∈B に対して、μA(U∩V) = μA(U)μA(V)

より一般に、A1, ..., An をΣAの部分σ代数として、n個の部分σ代数 A1, ..., An がμAに関して独立だとは、次が成立することです。

  • 任意の UiAi(i = 1, ..., n)に対して、μA(U1∩...∩Un) = μA(U1)...μA(Un) (n個の積)

A = (A, ΣA, μA) が確率空間で、X1 = (X1, ΣX1), ..., Xn = (Xn, ΣXn) がn個の可測空間のとき、n個の可測写像(確率変数) f1:A→X1, ..., fn:A→Xn独立だとは、ΣAの部分σ代数 σ[f1], ..., σ[fn] が独立なことです。

具体的に書けば:

  • 任意の Ui∈σ[fi](i = 1, ..., n)に対して、μA(U1∩...∩Un) = μA(U1)...μA(Un) (n個の積)

Ui∈σ[fi] を丁寧に書けば、適当な Vi∈ΣXi によって、Ui = fi*(Vi) と書けることです。これを使って f1, ..., fn の独立性の条件をさらに書き換えれば:

  • 任意の Vi∈ΣXi (i = 1, ..., n)に対して、μA(f1*(V1)∩...∩fn*(Vn)) = μA(f1*(V1))...μA(fn*(Vn)) (n個の積) ---(独立性の条件)

n個の可測写像(確率変数)の独立性は、確率測度μAがないと定義できないことに注意してください。

準備:確率空間の独立積と独立ベキ

確率空間の独立積と独立ベキについては、次を参照してください。

確率空間の独立積/独立ベキを扱うときは、A = (A, ΣA, μA) といういつもの記号の乱用はマズイので、A = (ΩA, ΣA, μA) という書き方をすることにします。

確率空間Aの独立ベキ(独立積の意味でのn乗)をA⊗nと書きます。

  • A⊗n = ((ΩA)n, (ΣA)⊗n, (μA)⊗n)

A⊗nの台集合は、直積の意味でのn乗である(ΩA)nです。U1×...×Un∈(ΣA)⊗n に対して、独立ベキ確率測度〈independent power of a probability measure〉(確率測度の独立ベキ)は次のように定義されています。

  • A)⊗n(U1×...×Un) := μA(U1)...μA(Un) (右辺はn個の積)

U1×...×Un という形(矩形 | 方形)の集合以外の集合に対しては、標準的な測度の拡張方法を使って測度を定義します。

独立ベキ測度の前送り定理

A = (ΩA, ΣA, μA) を確率空間、X = (ΩX, ΣX) を可測空間、f:ΩA→ΩX を可測写像とします。したがって、f*は ΣX→ΣA というσ代数のあいだの準同型写像を定義します。fとf*で向きが逆になることに注意してください。

可測写像fによる確率測度μAの前送りは f*A) と書きます。f*は写像の像写像と同じ記号ですが、これは文脈で区別することにします。

  • (f*A))(U) = μA(f*(U))

測度νに可測集合Sを渡すことを <ν|S> と書くことにすると:

  • <f*A)|U> = <μA|f*(U)>

こう書いてみると、可測集合の引き戻しf*と測度の前送りf*が、ある種の双対の関係にあることが分かるでしょう。

f:ΩA→ΩX の直積の意味でのn乗をf×nと書きます。

  • f×n = f×...×f :(ΩA)n→(ΩX)n
  • f×n(a1, ..., an) = (f(a1), ..., f(an))

fが可測写像なら、f×nも可測写像になります。σ代数 (ΣX)⊗n の生成元は、V1, ..., Vn∈ΣX による V1×...×Vn⊆(ΩX)n の形の集合です。したがって、V1×...×Vnのf×nによる逆像が(ΣA)⊗nに入ればいいのですが、

  • (f×n)*(V1×...×Vn) = f*(V1)×...×f*(V1)

が成立するので、確かに(ΣA)⊗nの要素になります。なお、すぐ上の等式は次のように確認できます

   (a1, ..., an)∈(f×n)*(V1×...×Vn)
⇔ (f×n)(a1, ..., an)∈V1×...×Vn
⇔ (f(a1), ..., f(an))∈V1×...×Vn
⇔ f(a1)∈V1 ∧ ... ∧ f(an)∈Vn
⇔ a1∈f*(V1) ∧ ... ∧ an∈f*(Vn)
⇔ (a1, ..., an)∈f*(V1)×...×f*(Vn)

f×nは可測写像なので、(ΩA)n上の確率測度(μA)⊗nを前送りして、(ΩX)n上の確率測度を構成できます。その定義は:

  • [(f×n)*((μA)⊗n)](V1×...×Vn) := (μA)⊗n[(f×n)*(V1×...×Vn)] (ここのブラケット('['と']')に特に意味はなくて丸括弧と同じです。)

今しがた示した等式 (f×n)*(V1×...×Vn) = f*(V1)×...×f*(V1) を使うと:

  • A)⊗n[(f×n)*(V1×...×Vn)] = (μA)⊗n[f*(V1)×...×f*(V1)]

独立ベキ測度 (μA)⊗n の定義により

  • A)⊗n[f*(V1)×...×f*(V1)] = μA(f*(V1))...μA(f*(Vn))

μA(f*(V)) = (f*A))(V) なので、

  • μA(f*(V1))...μA(f*(Vn)) = (f*A))(V1)...(f*A))(Vn)

これは、前送り測度f*A)から作った独立ベキ測度の値です。つまり:

  • (f*A))(V1)...(f*A))(Vn) = (f*A))⊗n(V1×...×Vn)

以上の計算から、次が示せました。

  • (f×n)*((μA)⊗n) = (f*A))⊗n

これが、独立ベキ測度の前送り定理で、内容的には次のことを言っています。

  • A側の独立ベキ測度を作ってそれをX側に前送りしても、X側に前送りした測度の独立ベキ測度を作っても同じ。

どちらかの方法(どっちでも同じ)で作られた(ΩX)n上の測度が、変量値リストの抽出確率測度(実現確率測度)を与えます。「リスト」という言葉については、「超曖昧語「母集団」「標本」にケリをつける // 抽出法とコレクションデータ型」を見てください。通常、この変量値リストの抽出確率測度(実現確率測度)を標本分布と呼んでいます。“変量値が実現する”とは、標本が抽出され測定されることです。

IID列を作る

前節と同じ設定で、f×n:(ΩA)n→(ΩX)n とします。直積集合 (ΩX)n の第i射影を単にπiと書くことにします。

  • πi:(ΩX)n→ΩX

gi:(ΩX)n→ΩX を次のように定義します。

  • gi := f×ni = πi¥circf×n

具体的に書けば:

  • gi(a1, ..., an) := (f×ni)(a1, ..., an) = (πi¥circf×n)(a1, ..., an) = πi(f(a1), ..., f(an)) = f(ai)

こう定義すると、次の等式が成立します。

  • <g1, ..., gn> = f×n : (ΩA)n→(ΩX)n

この等式は、σ代数とか確率とかに関係はなくて、「準備:写像の一般論」で述べた一般論だけに関わる話です。「心に留めておいてください」と言った次の等式から上の等式は出ます。

  • f:A→B1×...×Bn に対して、<f;π1, ..., f;πn> = f (ただし、fをf×nに、BiをΩXに置き換える)

こうして作られた g1, ..., gn が可測写像(確率変数)のIID列ですが、IIDと呼ばれるからには次が必要です。

  1. (gi)*((μA)⊗n) = f*A) ---(同分布性)
  2. g1, ..., gn は確率測度(μA)⊗nに関して独立 ---(独立性)

1番目の等式を示すには、次の点に注意します。

  1. 写像として、f×ni = πi;f あるいはまったく同じことだが πi¥circf×n = f¥circπi 、ここで、左辺のπiは(ΩX)nの射影で、右辺のπiは(ΩA)nの射影。
  2. i;f)* = (πi)*;f* あるいはまったく同じことだが (f¥circπi)* = f*¥circi)*
  3. i)*((μA)⊗n) = μA (独立ベキ確率測度の射影像)

これらは簡単に示せます(やってみてください)。上記のそれぞれを(1), (2), (3)と参照することにして、計算します。

   (gi)*
 // giの定義より
 = (πi¥circf×n)*
 // (1)より
 = (f¥circπi)*
 // (2)より
 = f*¥circi)*
したがって、
 (gi)* = f*¥circi)*
これに、確率測度 μA⊗n を渡して
 (gi)*A⊗n) = (f*¥circi)*)(μA⊗n) = f*[(πi)*A⊗n)]
// (3)より
 f*[(πi)*A⊗n)] = f*A)
したがって、
 (gi)*A⊗n) = f*A)

これで、(gi)*((μA)⊗n) = f*A) は示せました。独立性は次の節で示します。

IID列の独立性

「g1, ..., gn は確率測度(μA)⊗nに関して独立」であることをいうには、「準備:可測写像の独立性」の「独立性の条件」から、確率測度 ν := (μA)⊗n に関して次の等式が示せればいいわけです。

  • 任意の Vi∈ΣX に対して、ν(g1*(V1)∩...∩gn*(Vn)) = ν(g1*(V1))...ν(gn*(Vn)) (右辺はn個の積)

一般のnの場合を書くと記号が煩雑になるので、n = 2 の場合を証明します。nが3以上でも発想は同じです。

記号を簡略にするために、再び記号の乱用を使って、ΩAをAとも書くことにします。次のように置きます。

  • f:A→X
  • f×f:A×A→X×X
  • g = π1¥circ(f×f)
  • h = π2¥circ(f×f)
  • μ = μA (略記)
  • ν = μ¥otimesμ (A×A上の確率測度)

この記法の約束に従うと、gとhの独立性は次のように書けます。

  • 任意の V, W∈ΣX に対して、ν(g*(V)∩h*(W)) = ν(g*(V))ν(h*(W))

一般のnに比べると随分と簡単で、分かりやすいでしょ。

さて、確率測度νの引数に入っている集合を書き出すと:

  1. g*(V)∩h*(W)
  2. g*(V)
  3. h*(W)

これらの集合を書き換えると次のようになります。

  1. g*(V)∩h*(W) = f*(V)×f*(W)
  2. g*(V) = f*(V)×A
  3. h*(W) = A×f*(W)

これは、まさに集合と写像の練習問題なのでやってみてください。そのとき、f, g, h の関係を確認してくださいね。

集合を書き換えた形で独立性を書くなら:

  • 任意の V, W∈ΣX に対して、ν(f*(V)×f*(W)) = ν(f*(V)×A)ν(A×f*(W))

これが示すべきターゲット命題です。ところが、νが独立ベキ測度μ¥otimesμだったことを思い起こせば、等式はほぼ自明になってしまいます。

    等式の左辺
  = ν(f*(V)×f*(W))
  = (μ¥otimesμ)(f*(V)×f*(W))
  = μ(f*(V))μ(f*(W))

    等式の右辺
  = ν(f*(V)×A)ν(A×f*(W))
  = (μ¥otimesμ)(f*(V)×A)(μ¥otimesμ)(A×f*(W))
  = [μ(f*(V))μ(A)][μ(A)μ(f*(W))]
  = μ(f*(V))μ(f*(W))

おわりに

今回のこの記事と前回の「超曖昧語「母集団」「標本」にケリをつける」をあわせれば、母集団 A = (ΩA, ΣA, μA, f:ΩA→X) のサイズnの標本リストの空間(ΩA)nと、そこからの可測写像 g1, ..., gn の関係は明白だと思います。まったくかけ離れているように思えた「標本」の2つの定義がこれでつながるわけです。

g1, ..., gn 達の前送り測度はすべて等しく、独立なn個の可測写像となっています。そのことは、gi達がどうやって構成されたかによって完全に説明可能です。

よくある「確率変数Xに対して、IID列 X1, ..., Xn を考える」みたいな言い方だと、「どうやって考えるのよ? そんな都合がいいもんがホントにあるの?」と(僕は)なるのですが、チャンと自力で作り上げれば、そういう疑念は払拭されると思います。

ところで、「たぶん間違った理由を説明します、後日」の理由ですが、まー、僕がボンヤリしていたからです。今回説明したようなスジをシッカリ確認しないで、なんとなく等式を書いてしまったからです。何かを述べるときは、根拠を再確認すべきですね。

*1Probを確率空間と確率を保存する可測写像の圏とすると、Pn(A) := A⊗n として定義される操作は、f:A→B に対しても Pn(f):Pn(A)→Pn(B) と拡張できて、Pn:ProbProb という自己関手となります。Pn(-) = (-)⊗n が関手であることが、様々な構成のベースとなっています。

*2:';'と'¥circ'が混じっても平気なように、上下左右のトレーニングをしましょう。

*3:写像の直積に'¥otimes'を使うことも多いです。今回のこの記事だと、'¥otimes'を使ったほうが全体に辻褄があう気もしますが、集合レベルでは直積(デカルト積)なので'×'を使いました。集合レベルでは'×'、構造(確率空間)レベルでは'¥otimes'が正確ですが、使い分けがめんどくさい。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20180627

2018-06-25 (月)

全称記号・存在記号の練習:集合と写像の話題から

| 17:50 | 全称記号・存在記号の練習:集合と写像の話題からを含むブックマーク

比較的最近、述語論理の全称記号・存在記号について書きました。

特定分野の予備知識を仮定しないことにすると、例題は自然数や整数の話になりがちですが、集合と写像をネタに例題を探してみました。


f:X→Y は写像として、S⊆X, T⊆Y とします。

  • s∈S ⇒ f(s)∈T

が成立しているとします。これは、

  • f*(S)⊆T

と書けますね。ここで、f*(S)は、fによるSの像〈image〉を表します。

  • f*(S) := {y∈Y | ∃x∈X.(x∈S ∧ f(x) = y)}

f*(S) を単に f(S) と書くことがありますが、好ましくないです。なぜなら、f:X→Y, f*:Pow(X)→Pow(Y) であり、fとf*は異なる写像だからです。

さて、f*(S)⊆T は、

  • ∀y∈Y.(y∈f*(S) ⇒ y∈T)

であり、f*(S) をその定義により書き換えると:

  • ∀y∈Y.(y∈{y∈Y | ∃x∈X.(x∈S ∧ f(x) = y)} ⇒ y∈T)

集合の内包的記法が冗長なので(ウザいだけなので)落として、

  • ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T)

これは f*(S)⊆T の書き換えに過ぎないので、最初に挙げた命題 s∈S ⇒ f(s)∈T に全称記号を付けた命題と同値のはずです。

  • ∀s∈X.(s∈S ⇒ f(s)∈T)

同値であることを述べると:

  • ∀s∈X.(s∈S ⇒ f(s)∈T) ⇔ ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T)

この命題は、今述べた背景から考えれば明らかに成立します。が、背景は忘れて、単なる論理的命題の証明だと思って淡々と証明してみます。


同値性を主張する命題を2つの含意命題に分けます。

  1. ∀s∈X.(s∈S ⇒ f(s)∈T) ⇒ ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T)
  2. ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T) ⇒ ∀s∈X.(s∈S ⇒ f(s)∈T)

それぞれの証明要求を書きます。

  1. Γ |-? ∀s∈X.(s∈S ⇒ f(s)∈T) ⇒ ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T)
  2. Γ |-? ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T) ⇒ ∀s∈X.(s∈S ⇒ f(s)∈T)

Γ(文脈、予備知識)のなかには、「X, Yは集合である」とか「f:X→Y, S⊆X, T⊆Y」なんかが入っています。

それぞれの証明要求を変形(お膳立て)します。

 Γ |-?
  ∀s∈X.(s∈S ⇒ f(s)∈T) ⇒ ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T)
 ----------------------------------------------------------------------
 Γ, ∀s∈X.(s∈S ⇒ f(s)∈T) |-?
   ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T)
 ----------------------------------------------------------------------
 Γ, ∀s∈X.(s∈S ⇒ f(s)∈T), y∈Y |-?
   ∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T
 ----------------------------------------------------------------------
 Γ, ∀s∈X.(s∈S ⇒ f(s)∈T), y∈Y, ∃x∈X.(x∈S ∧ f(x) = y) |-?
   y∈T

 Γ |-?
   ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T) ⇒ ∀s∈X.(s∈S ⇒ f(s)∈T)
 ----------------------------------------------------------------------
 Γ, ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T) |-?
     ∀s∈X.(s∈S ⇒ f(s)∈T)
 ----------------------------------------------------------------------
 Γ, ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T), s∈X |-?
     s∈S ⇒ f(s)∈T
 ----------------------------------------------------------------------
 Γ, ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T), s∈X, s∈S |-?
     f(s)∈T

証明をします。∀と∃の推論規則を使った場所には、目立つように'●'を付けておきます。

証明要求: Γ, ∀s∈X.(s∈S ⇒ f(s)∈T), y∈Y, ∃x∈X.(x∈S ∧ f(x) = y)
         |-? y∈T

// 前提より
∃x∈X.(x∈S ∧ f(x) = y)
BEGIN ●∃除去
  a∈X
  a∈S ∧ f(a) = y ---(1)
  // 前提より
  ∀s∈X.(s∈S ⇒ f(s)∈T),
    --[●∀除去 s:=a]
  a∈S ⇒ f(a)∈T ---(2)
  // (1)から
  a∈S ---(3)
  // (2), (3)から
  f(a)∈T ---(4)
  // (1)から
  f(a) = y ---(5)
  // (4), (5)から
  y ∈T
END
y∈T

証明要求: Γ, ∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T), s∈X, s∈S
         |-? f(s)∈T

// 前提より
∀y∈Y.(∃x∈X.(x∈S ∧ f(x) = y) ⇒ y∈T)
 --[●∀除去 y:=f(s)]
∃x∈X.(x∈S ∧ f(x) = f(s)) ⇒ f(s)∈T ---(1)
// 前提より
s∈S
// 等号の反射律から
f(s) = f(s)
// 上の2つの命題から
s∈S ∧ f(s) = f(s)
 --[●∃導入 一番左のs:←x, 二番目のs:←x]
∃x∈X.(x∈S ∧ f(x) = f(s)) ---(2)
// (1), (2)から
f(s)∈T

2018-06-22 (金)

超曖昧語「母集団」「標本」にケリをつける

| 10:15 | 超曖昧語「母集団」「標本」にケリをつけるを含むブックマーク

曖昧・多義的に使われている専門用語は全然珍しくありません。確率・統計の分野でも、たくさんの曖昧語・多義語が登場します。そのなかでも、特に曖昧性がひどく、意味不明の四天王だと僕が思っている言葉は、

  • 確率変数
  • 分布
  • 母集団
  • 標本

です。どれも手強くて、「四天王の中でも最弱」とか「最強」とかの順位付けは難しいです。

*1

「確率変数」については何度も話題にしています。2つだけ過去記事を選ぶなら:

「分布」に関しては:

今回この記事では、残る2つの超曖昧語「母集団」「標本」について、出来る限りの解明を試みます。中心的話題は、「標本」に対するまったくかけ離れた2つの定義を結びつけることです。2つの定義を結びつけるために、「独立ベキ測度の前送り定理」を紹介します。

内容:

  1. 諸悪の根源: 構造と台集合の混同
  2. 「母集団」の背後にある構造
  3. 母集団に関する記法と概念
  4. 母集団からの標本
  5. 抽出法とコレクションデータ型
  6. 抽出される確率と抽出の確率空間
  7. 標本サイズごとに分けて考える
  8. 確率空間の独立積/独立ベキ
  9. IID列と独立ベキ測度の前送り定理
  10. おわりに

続き「IIDな確率変数達はどこから来るのか」の内容:

  1. はじめに
  2. 準備:写像の一般論
  3. 準備:可測写像の独立性
  4. 準備:確率空間の独立積と独立ベキ
  5. 独立ベキ測度の前送り定理
  6. IID列を作る
  7. IID列の独立性
  8. おわりに

諸悪の根源: 構造と台集合の混同

曖昧語・多義語が生まれてしまう原因は色々あるでしょうが、広く浸透している悪習が原因となっていることがあります。そんな悪習のひとつに:

  • 構造と、その構造を載せている台集合を区別しない、意図的に混同する

という習慣があります。悪習なので弊害があります。しかし、広く浸透しているので、今さらどうにもならないものです。

例えば、すべての自然数からなる集合は N = {0, 1, 2, ...} と書かれます。Nは単なる集合です。N上に大小順序を考えれば、(N, ≦) は順序集合(順序構造を持った集合)となります。N上に足し算を考えれば、(N, +, 0) は可換モノイドになります。掛け算を考えても、(N, ×, 1) は可換モノイドです。足し算と掛け算の両方とも考えれば、(N, +, 0, ×, 1) は可換半環〈commutative semiring〉だし、それに順序もあわせると、(N, +, 0, ×, 1, ≦) は順序半環〈ordered semiring〉です*2

Nとだけ書いたときは、本来なら単なる集合のはずです。ところが、文脈により、順序集合としてのN、可換モノイドとしてのN、可換半環としてのN、順序半環としてのNなどの多様な意味で(つまり、曖昧・多義的に)Nが使われます。

曖昧性が多少は解消するように、あるいは、意図的に曖昧に書いていることを表明するために、次のような記法が使われます。

  • N = (N, ≦)
  • N = (N, +, 0)
  • N = (N, ×, 1)
  • N = (N, +, 0, ×, 1)
  • N = (N, +, 0, ×, 1, ≦)

ある特定の文脈で、けっこう複雑な構造を想定していても、台集合(集合だけでは何の構造もない)により、構造を代表させることがあるのです。そんなとき、文字通りに集合だと受け取ってはダメです。空気を読んで、集合上の構造を想定するのです。

このテの悪習に文句を言ってもはじまりません。やめさせることは絶対に不可能ですから。悪習が蔓延〈はびこ〉っている事実を認識して注意するだけです。

「母集団」の背後にある構造

「母集団」という言葉は、前節で述べた悪習にひどく蝕〈むしば〉まれた言葉です。表立っては集合として定義されますが、背後には複雑な構造があります。

例えば、日本人の成人男性全員からなる集合をAとしましょう。集合Aを母集団と呼ぶのは普通のことです。しかし、集合Aだけがあってもなんも面白くありません。A上で定義された関数が考察の対象になります。例えば、身長を考えましょう。身長は f:A→R という関数として定式化されます。とりあえず、集合Aと関数 f:A→R を組み合わせた構造 (A, f) が想定できました。

身長関数 f:A→R に誤差は考えないことにします。Aの各要素(日本人成人男性の個体)aに対して f(a) が実数として正確に定まると想定します。このfは確率変数です。変数ではないし、ランダム性(偶然による不定性/予測不可能性)はコレッポッチもありませんが、それでも確率変数です*3

単なる関数(正確には可測関数)を確率変数と呼ぶのはいいのですが(いや、良くないけど認めましょう)、「確率変数」という言葉を使うときのココロとして「関数の域〈domain〉には確率測度が載っている」という想定があります。つまり、集合A上に確率測度が必要です。

確率測度は測度に条件が付いたものです。測度概念(測度空間)を構成する材料は次のものです。

  1. 台集合
  2. σ代数〈σ集合代数 | 完全加法族〉
  3. 測度(測度関数)

台集合はA(日本人成人男性)と決まっているので、A上のσ代数と測度を定義しましょう。

  • σ代数は、Aのベキ集合 Pow(A) に通常の集合演算を考えたもの。これをΣ(総和記号じゃないよ!)と書く。
  • 測度(測度関数) ν:Σ→R を、S∈Σ に対して ν(S) = (Sの基数〈個数〉) とする。

Aは有限集合なので S⊆A も有限集合で、ν(S)は集合Sの個数(人数)を勘定した値です。

(A, Σ, ν) は測度空間になりますが、確率空間(確率測度を持った測度空間)にはなっていません。ν(A) = 1 ではないからです。そこで、新しい測度μを次のように定義します。

  • μ(S) := ν(S)/ν(A)

μは、正規化された基数測度です。(A, Σ, μ) は確率空間になります。確率空間 (A, Σ, μ) にも「偶然による不定性/予測不可能性」といった意味合いは(今のところ)見い出せません*4

以上に述べたように、母集団Aと言った場合、集合Aだけを意味しているのではなくて、構造 (A, Σ, μ, f) を想定しています。これを、広く浸透している悪習に従って書けば:

  • A = (A, Σ, μ, f)

イコールの左側のAは構造としての母集団、右側のAは台集合としての母集団です。

母集団に関する記法と概念

前節で述べたように、母集団の構造は (A, Σ, μ, f) のように書くことにします。

  • Aは母集団の台集合(狭義の母集団)
  • Σは母集団のσ代数
  • μは母集団の確率測度
  • fは母集団の変量〈variate〉

と呼ぶことにします。複数の母集団を考える場合は次のように書きます。

  • A = (A, ΣA, μA, fA)
  • B = (B, ΣB, μB, fB)

もし、構造と台集合をちゃんと区別したいなら、台集合をΩAのように書くことにします。また、変量fAの余域〈codomain〉はXAと書きましょう。この記法だと:

  • A = (ΩA, ΣA, μA, fAA→XA)

A, ΣA) は可測空間、(ΩA, ΣA, μA) は確率空間の構造であり、fAA→XA は確率変数(可測関数)です。ここから先では、fA と XA の下付きAは省略して、f, X と書きます(さすがにウザいからね)*5

ときに多変量〈multivariate〉の母集団を考えることがあります。例えば、身長 f:A→R と共に体重 g:A→R も考えるとかです。一般に、f1:A→X1, f2:A→X2, ..., fk:A→Xk がk個の変量のとき、

  • f(a) := (f1(a), f2(a), ..., fk(a))

と定義した

  • f:A→X1×X2×...×Xk

を考えれば、X1×X2×...×Xk に値をとるひとつの変量fがあるとみなすことが出来ます。よって、とりたてて多変量を扱うことはしません*6

僕の他の記事でも述べているように、「確率分布」は「確率測度」と同義語です。ときに、確率密度関数を確率分布とも呼びますが、確率密度関数から確率測度が決まるので、確率分布=確率測度 で大丈夫でしょう。

さて、母集団 A = (A, ΣA, μA, f:A→X) の分布と言った場合、もともとある確率測度μの意味ではなくて、μをfでX側に前送り〈push-forward〉した確率測度を意味することが多いようです。前送り測度(像測度ともいう) f*(μ) は次のように定義されます。

  • U∈ΣX に対して、(f*(μ))(U) := μ(f*(U)) ここで f*(U) := {a∈A | f(a)∈U}

変量が値をとる空間Xにもσ代数ΣXはあるとしています。多くの場合、X = R か X = Rk なので、X上には標準的なΣXがあります。

母集団からの標本

A = (A, ΣA, μA, f:A→X) を母集団とします。日本人成人男性の例は離れて、以下、一般論であることに注意してください。

母集団Aからの「標本」という言葉があります。この「標本」の意味が僕はサッパリ分かりませんでした。いくつかの定義(らしきもの)があるのですが、それらの定義(らしきもの)の相互関係が理解できないのです。そもそもが無関係の同音異義語って可能性もありますしね。

まず、確率空間の文脈で「標本空間」という言葉があります。これはまー、割とどうでもいいので、すぐ下の補足コラムにします。本文では、確率空間の標本空間じゃなくて、調査目的で抽出される標本を問題にします。

[補足]

A, ΣA, μA) が確率空間のとき、台集合ΩA標本空間〈sample space〉と呼びます。ΩAの要素を標本点〈sample point〉または単に標本〈sample〉とも呼びます。これは、「そう呼ぶよ」って約束なので、「はい、そうですか」ってだけの話です。

f:ΩA→X が確率変数(単なる可測関数)のとき、集合X上に前送り測度 f*(μ) を載せると、(X, ΣX, f*(μ)) は確率空間になり、できた確率空間の標本空間はXです。この状況で:

  1. ΩAを標本空間と呼び、Xは標本空間とは呼ばない。
  2. Xを標本空間と呼び、ΩAは標本空間とは呼ばない。
  3. ΩAもXも標本空間と呼ぶ。

という用法があります。もともとが確率空間の台集合を標本空間と呼ぶなら、「こっちを標本空間とは呼ばない」という判断は根拠がありません。一方で、確率空間の台集合をすべからく標本空間と呼ぶなら、確率・統計の文脈で出てくる集合は、たいてい標本空間となるわけで、あえて標本空間と呼ぶ意義があるか疑問です。

そして、今問題にしている「調査目的で抽出された標本」との混同・混乱も生じるので、確率空間の台集合を標本空間と呼ぶのはやめたほうがいいだろうと思います。

[/補足]

「標本」に対するよくある説明を見てみましょう。「基本統計量の算出」というWebページによれば、

  • 母集団: 分析が対象とするすべてのデータ.例えば,早稲田大学の学生全員.
  • 標本: 母集団からの一部のデータ.例えば,今日,教室にいる早大生諸君.

と説明されています。

ここでの「母集団」は、母集団構造の台集合のことでしょうから、集合としてのA(混乱を避けるならΩA)です。「一部のデータ」の意味は、事例「今日,教室にいる早大生諸君」を考慮すると、Aの部分集合のことのようです。つまり、次のように定義してよさそうです。

  • 母集団 A = (A, ΣA, μA, f:A→X) からの標本とは、集合としてのAの有限部分集合のことである。

Sが標本だとは、「S⊆A かつ Sは有限集合」という意味です。有限集合Sの基数(個数)を標本サイズ〈sample size〉と呼びます。

大数の法則や中心極限定理でも“標本”を扱います。ここで登場する標本は母集団台集合の有限部分集合でしょうか? 中心極限定理の定式化などを見るに、まったく違ったものを標本と呼んでいるようです。

集合B(もとの集合Aとは限らない)から集合Xへの確率変数(単なる可測関数)の列 g1, g2, ..., gn独立同分布だとは、次のことです。[追記]今νと書いてあるところが以前はμでした。訂正しました。[/追記]

  • g1, g2, ..., gn は独立な確率変数である。
  • giによる前送り測度 (gi)*(ν) は、すべて等しい。つまり (g1)*(ν) = (g2)*(ν) = ... = (gn)*(ν) ここでνは、なんらかの確率測度。

独立同分布をIID〈independent and identically distributed〉と略称するので、独立同分布な確率変数の列をIID列と呼ぶことにします。中心極限定理などの文脈における標本とはIID列のことです。

  • 母集団 A = (A, ΣA, μA, f:A→X) からの標本とは、IID列 g1, g2, ..., gn : B→X であって、(gi)*(ν) = f*(μ) を満たすものである。ここで、Bはなんらかの集合で、νはB上のなんらかの確率測度。

nを標本サイズと呼ぶのは同じです。

しかし、それにしても、この2つの定義、あまりにも違いすぎませんか。こんだけ違うと同じ名前で呼ぶわけにもいかないので、先の定義による標本を標本部分集合〈sample subset〉と呼び、今の定義による標本を標本IID列〈sample IID sequence〉と呼ぶことにします。標本部分集合のサイズは基数(個数)のこと、標本IID列のサイズは列の長さのことです。

抽出法とコレクションデータ型

実際の調査作業として“標本”を選び出すとき、いくつかのやり方があるようです。それを(標本の)抽出法と呼びます。例えば、アンケート調査とかを思い描いてください。

  • 非復元抽出 : 一度選んだ個体(例えば人)は、もう選ばないようにする選び方
  • 復元抽出 : 一度選んだ個体でも、また選んでもよい選び方
  • 非順序抽出 : 選んだ順序は無視する(記録しない)選び方
  • 順序抽出 : 選んだ順序も記録する選び方

この分類は2×2のマトリックスとして理解したほうがいいでしょう。

復元 非復元
順序 順序復元抽出法 順序非復元抽出法
非順序非順序復元抽出法 非順序非復元抽出法

これらの抽出法は、プログラミングにおける複合データ型構成と密接に関係します*7。いま、Zを何でもいいから集合(プログラミング的にはデータ型)としましょう。Zの要素を組み合わせて新しいデータ型を作ることができます。次のようなデータ型があります。

  1. Subset(Z) : Zの有限部分集合をデータ(インスタンス)とするデータ型
  2. List(Z) : Zの要素を並べたリストをデータとするデータ型
  3. UniqList(Z) : Zの要素のリストだが、同じ要素の重複出現を許さないリストをデータとするデータ型(Uniqは一意性を意味するuniqueから)
  4. Bag(Z) : Zの要素を集めたバッグをデータとするデータ型

バッグ〈bag〉とは、要素の並び順は考慮しないが、要素の重複出現回数は意味を持つデータです。これらのデータ型は、要素の集まり〈collection〉のデータ型なので、コレクションデータ型〈collection data type〉と呼びます*8

この節冒頭で説明した抽出法により選んだ結果のデータは、コレクションデータ型のデータ(インスタンス)になります。A = ΩA を母集団台集合として:

  1. 非順序非復元抽出法による抽出結果 → Subset(A)型のデータ
  2. 順序復元抽出法による抽出結果 → List(A)型のデータ
  3. 順序非復元抽出法による抽出結果 → UniqList(A)型のデータ
  4. 非順序復元抽出法による抽出結果 → Bag(A)型のデータ

前節で述べた標本部分集合は、抽出法として非順序非復元抽出法を採用した場合の抽出結果ですね。他の抽出法を排除する理由はないので、「標本」の意味を次のように変更したほうがいいでしょう。

  • 母集団 A = (A, ΣA, μA, f:A→X) からの標本とは、何らかの抽出法による抽出結果であるコレクションデータ型のデータである。

こうすると、標本は、抽出法(あるいはコレクションデータ型)に依存するので、次のように呼び分けるべきです。

  1. 標本部分集合
  2. 標本リスト、または標本タプル*9
  3. 標本一意リスト(重複を許さないリスト)
  4. 標本バッグ

これらを総称するときは、標本コレクション〈sample collection〉ということにします。標本コレクションの一般論もできます。しかし、採用する抽出法(コレクションデータ型)により、その後の議論が大きく変わるところもあります。なので、抽出法(コレクションデータ型)を明示しない曖昧な議論は好ましくありません。

理論的に扱いやすい抽出法(コレクションデータ型)は順序復元抽出法(リスト型)です。IID列としての定義に直接結びつくのは、“標本リスト=リスト型の標本データ”に限られます。なので、当初は「標本=標本部分集合」と定義されたにしても、どこかで「標本=標本リスト」に変更する必要があります。このような区別や切り替えを曖昧なままにすることがあるとすれば、それも悪習です。

抽出される確率と抽出の確率空間

確率というと、コイントス、サイコロふり、宝くじなどの博打のイメージがあるでしょう。しかし、日本人成人男性の身長のような例では、博打的要素はないように思えます。実は、博打的要素が入ってくるのは、標本抽出の時点なのです。

例えば、A = 日本人成人男性, f = 身長 の例で、何人かが標本として抽出されるとします。どんな人々が標本として抽出されるかには「偶然による不定性/予測不可能性」があります。いやむしろ、「偶然による不定性/予測不可能性」があるように選ぶべきなのです。

それぞれの標本部分集合や標本リストには、抽出される“可能性の度合い”が定まります。これは、抽出される確率の確率密度です。確率密度関数があるということは、確率空間の構造があるはずです。標本部分集合の場合、つまり、抽出法として非順序非復元抽出法を採用した場合なら次のようになります。

  • 台集合: Subset(ΩA) : もとの母集団の台集合ΩAの有限部分集合全体からなる集合
  • σ代数: Subset(ΩA) のベキ集合 Pow(Subset(ΩA)) の部分代数である“なんらかのσ代数”
  • 確率測度: すぐ上のσ代数上で定義された“なんらかの確率測度”。Subset(ΩA) 上に確率密度関数が定義できれば、それをもとに確率測度を構成できる。

抽出法として、順序復元抽出法を採用するならば、上記のSubsetをListに置き換えた定義になります。“なんらかのσ代数”と“なんらかの確率測度”は自動的に生じるものではなく、頑張って構成しなくてはなりません。

Subuset(ΩA), List(ΩA) のように、抽出法により変わる「すべての標本データからなる集合」を総称して(抽象化して)、Sample(ΩA) と書くことにします。また、“なんらかのσ代数”と“なんらかの確率測度”をちゃんと決めて作った確率空間を Sample(A) とします。つまり、

  • Sample(A) = (Sample(ΩA), ΣSample(A), μSample(A))
  • Sample(ΩA) は、集合ΩAから作った「すべての標本データからなる集合」
  • ΣSample(A) は、頑張って構成した“なんらかのσ代数”
  • μSample(A) は、頑張って構成した“なんらかの確率測度”

“標本”という概念がとても難しい理由は、母集団Aから作った確率空間 Sample(A) = (Sample(ΩA), ΣSample(A), μSample(A)) を把握・理解するのが難しいからです。把握・理解せずにごまかして進むのも難しいです。もとの母集団Aと採用した抽出法に基づいて、台集合/σ代数/確率測度を具体的に構成してみるのが結局は近道なのかと思います。

次節以降で、抽出法を順序復元抽出法に限定して、確率空間 List(A) を構成してみます。

標本サイズごとに分けて考える

母集団 A = (ΩA, ΣA, μA, f:ΩA→X) に対して、標本リストの集合 List(ΩA) を台集合とする確率空間 List(A) = (List(ΩA), ΣList(A), μList(A)) を構成しましょう。この際、母集団の変量 f:ΩA→X は関係しないので、与えられた確率空間 (ΩA, ΣA, μA) から、新しい確率空間 (List(ΩA), ΣList(A), μList(A)) を構成する問題になります。

確率空間 (List(ΩA), ΣList(A), μList(A)) があるとは、標本リストの集合 S⊆ List(ΩA) に対して、Sが抽出される確率 μList(A)(S) が決まることです。ΩAが有限集合のときは、標本リスト(のインスタンス) s∈List(ΩA) ごとに μList(A)({s}) が決まれば抽出確率測度 μList(A) も決まりますが、一般的には μList(A)({s}) が意味を持つとは限りません(一点の確率は全部0かも)。

とりあえず、すべての標本リストの集合 List(ΩA) の上に確率測度を載せるのは難しそうなので、標本サイズ(リストの長さ)nを固定して考えましょう。

  • ListnA) := {s∈List(ΩA) | size(s) = n}

とします。List(ΩA) を全体として考えるのではなくて、nごとに ListnA) を考えて、nごとの確率空間を構成します。

  • Listn(A) = (ListnA), ΣListn(A), μListn(A))

ここで重要な事実は、n = 1 のとき、

  • List1(A) ¥stackrel{¥sim}{=} A

であることです。この同型関係の意味は、まずは集合として List1A) ¥stackrel{¥sim}{=} ΩA であり、この集合の同型に基づいて、σ代数の同型(可測空間としての同型)、確率測度の同型(確率空間としての同型)が言えるということです。

母集団の上に最初に与えられた確率空間構造は、サイズ1の標本(ひとつの個体)を抽出する際の抽出確率だったのです。ΩAが有限集合のとき、正規化された基数測度を母集団上の確率としたのは、「どの個体も公平に抽出される」ことの表現です。ΩAが有限でない場合でも、ΩA上に“なんらかの意味での一様確率測度”*10があれば、それが抽出の公平性の表現となるでしょう。与えられた確率測度μAが公平ではない、あるいは公平性の概念がないなら、それはそれで別にかまいません。μAが分かっている、あるいは想定できることが大事なのです。

List1(A) が何であるか分かったので、次に List2(A) を考えてみます。抽出法は順序抽出なので、1個目の標本データと2個目の標本データの区別があります。2個抽出に関して、次のことは仮定していいでしょう。

  1. 1個目の抽出結果が、2個目の抽出に影響を与えることはない。
  2. 1個目を抽出する際の抽出確率測度と、2個目を抽出する際の抽出確率測度は同じ。

このような仮定のもとで、確率空間 List2(A) (Listn(A) でも同様)を構成するには、独立積/独立ベキが使えます(次節)。

確率空間の独立積/独立ベキ

この節では、A, B などは(変量を持つ母集団ではなくて)単なる確率空間とします。アルファベットは有限個しかないので、使い回すしかないのですよ、かんべんしてね。

A = (ΩA, ΣA, μA) と B = (ΩB, ΣB, μB) に対して、AとBの独立積確率空間 A¥otimesB を定義できます。独立積〈independent product〉に関しては、次の記事で説明しています*11

AとBの独立積 A¥otimesB の構成要素は:

  • ΩA⊗B = ΩA×ΩB : 集合の直積
  • ΣA⊗B = ΣA¥otimesΣB : σ代数の独立積(テンソル積)
  • μA⊗B = μA¥otimesμB : 確率測度の独立積(テンソル積)

A = B の場合、A¥otimesA = A⊗2 と書いて、独立積の意味での二乗と考えます。より一般には:

  • A⊗n := A¥otimes... ¥otimesA (n個のAの独立積)

独立積の意味でのn乗を独立ベキ〈independent power | independent exponential〉と呼びます。

与えられた確率空間Aからの、サイズnの標本リスト抽出に関する確率空間 Listn(A) = (ListnA), ΣListn(A), μListn(A)) は、Aのn乗の独立ベキ A⊗n で与えられます。

  • ListnA) ¥stackrel{¥sim}{=}A)n (集合の直積の意味でのn乗)
  • ΣListn(A) ¥stackrel{¥sim}{=} ΣA⊗n = ΣA¥otimes ... ¥otimesΣA = (ΣA)⊗n
  • μListn(A) ¥stackrel{¥sim}{=} μA⊗n = μA¥otimes ... ¥otimesμA = (μA)⊗n

このようにして与えられた、台集合 ListnA) ¥stackrel{¥sim}{=}A)n 上の確率測度 μListn(A) ¥stackrel{¥sim}{=} μA⊗n = (μA)⊗n が、順序復元抽出法(リストデータ型)に伴うサイズnの抽出確率測度〈sampling probability measure〉です。確率測度と確率分布(略して単に分布)は同義語なので、抽出分布〈sampling distribution〉と言っても同義だし、"sampling"を「標本」と訳せば、標本分布でも同じことです。ただし、「分布」というときのココロ=言葉のニュアンスから、変量の値の空間Xを登場させる必要があるかも知れません(すぐ後に記述)。

さて、確率測度が載ってない単なる可測空間 X = (ΩX, ΣX) と Y = (ΩY, ΣY) に対しても、確率空間の独立積と同じように、X¥otimesY = (ΩX×ΩY, ΣX¥otimesΣY) を定義できます。行きがかり上、これも可測空間の独立積と呼んでしまいましょう。独立ベキ X⊗n = X¥otimes ... ¥otimesX も同様に定義します。

ここで、話を母集団 A = (ΩA, ΣA, μA, f:ΩX→X) に戻します。あっ、同じ文字'A'を使っていても、今度のAは母集団ね。母集団が単なる確率空間と違うのは、変量 f:ΩA→X を持つところです。確率空間や可測空間に独立ベキを定義できることは分かりました。変量fにも独立ベキを定義できるでしょうか? できます! 独立ベキとは言っても、単なる写像としての直積ベキですけどね。

f:ΩA→X に対して、

  • (f× ... ×f)(a1, ..., an) := (f(a1), ..., f(an))

として f× ... ×f:ΩA× ... ×ΩA→X× ... ×X を定義します。f× ... ×f をf×nと略記して:

  • f×n:(ΩA)n→Xn

今定義した f×n を確率空間の独立ベキに添えてあげると、母集団の独立ベキを定義できます。

  • A⊗n := ((ΩA)n, (ΣA)⊗n, (μA)⊗n, f×n:(ΩA)n→Xn)

これはまた、母集団Aに対する Listn(A) だと言ってもいいでしょう。

  • ListnA) ¥stackrel{¥sim}{=}A)n
  • ListnA) ¥stackrel{¥sim}{=}A)⊗n
  • ListnA) ¥stackrel{¥sim}{=}A)⊗n
  • (Listn(f):ListnA)→Listn(X)) ¥stackrel{¥sim}{=} (f×n:(ΩA)n→Xn)

こうして構成された母集団Aのn-独立ベキ A⊗n は、f×n:(ΩA)n→Xn を変量として持ちます。母集団台集合上に載る確率測度を、変量で前送りした確率測度を「分布」と呼びたがる傾向(言葉のニュアンス)があるので:

  • (f×n)*((μA)⊗n)

これが、皆さんお望みの標本確率分布〈抽出確率分布〉です。

母集団 A = (ΩA, ΣA, μA, f:ΩA→X) を調べる際にもっとも欲しいのは標本確率分布、つまりXn上の確率測度です。標本リストの空間 ListnA) ¥stackrel{¥sim}{=}A)n は、標本確率分布構成の素材に過ぎないと言えます。Xn上の標本確率分布ができあがると、ΩAや (ΩA)n忘れ去られてしまうこともあります。さらに、(ΩA)n とXn同一視してしまうこともあります。これも悪習ですが、しょうがない。

IID列と独立ベキ測度の前送り定理

標本IID列がまだ出てきてませんね。標本IID列は、前節最後に登場した標本確率分布を構成する道具です。母集団の独立ベキを構成した上で、独立ベキ上の前送り測度として標本測度を構成する方法(前節)が、僕は自然だと思いますが、「独立ベキを採用したくない」という方針もあるでしょう。そんなときに使われる手法がIID列です。

[追記] f×nで前送りするのはいいけど、f<n> = <f, ..., f> による前送りはダメですね。像測度が対角集合に集中してしまって、独立積による測度と一致しません。<f, ..., f> という記号表現のf達が、「同じ名前でも互いに独立ならば」という変な前提で計算してしまったのですが、そんなワケない! 錯覚でした。

後日訂正をしますが、もとの文(間違い)も消し線付きで残しておきます。[/追記][続追記]この節の内容を大幅に敷衍した別記事を書きました。詳細は「IIDな確率変数達はどこから来るのか」をご覧ください。[/続追記]

まず、母集団の変量 f:ΩA→X に対して、関数fのn-タプルの意味でのベキを構成します。

  • <f, ..., f>(a) := (f(a), ..., f(a)) (すべての成分がf(a))

<f, ..., f>をf<n>と略記することにして、

  • f<n>A→Xn

集合の直積ベキXn上の可測空間構造は既に述べました。X⊗n = (Xn, (ΣX)⊗n) ですね。すると、f<n>によって、母集団台集合ΩAに載った確率測度μAを前送りできます。

  • (f<n>)*A)

この (f<n>)*A) はもちろん、集合Xn上の確率測度です。この確率測度を作る際に、<f, ..., f> じゃなくても、IID列 g1, ..., gn から作った <g1, ..., gn> を使っても同じ確率測度ができ上がります。これが標本IID列の使い方です。僕には、なんか技巧的な方便な感じがします。

[追記]ここから先はあってます。上の消し線のところを無視してもらえれば訂正になっているけど、たぶん間違った理由を説明します、後日。[/追記][続追記]この節の内容を大幅に敷衍した別記事を書きました。詳細は「IIDな確率変数達はどこから来るのか」をご覧ください。[/続追記]

前節で「標本確率分布」と呼んだ確率測度を作る際に、f×n = f× ... ×f じゃなくても、IID列 g1, ..., gn から作った <g1, ..., gn> を使っても同じ確率測度ができ上がります。これが標本IID列の使い方です。僕には、なんか技巧的な方便な感じがします。

さて、前節で作ったXn上の確率測度 (f×n)*((μA)⊗n) と、<g1, ..., ×gn> により作ったXn上の確率測度 <g1, ..., gn>*((μA)⊗n) が同じでないと困ります。同一性を保証する定理を「独立ベキ測度の前送り定理」と呼んでおきましょう。その主張は次の等式になります。

  • (f×n)*((μA)⊗n) = <g1, ..., gn>*((μA)⊗n) = (f*A))⊗n

2つの確率測度の定義を追いかけて、σ代数の生成系の上で測度が等しい値を取ることを確認すれば示せます。詳細は「IIDな確率変数達はどこから来るのか」に書きました。

おわりに

以上述べたようなストーリーをたどることにより、調査実務としての標本概念からIID列までをつなぐことができます。確率変数のIID列という道具は確かに便利なんですが、唐突な感じは否めません。IID列は、“確率空間/母集団”の“独立積/独立ベキ”という概念を省いてショートカットする道具という位置付けではないでしょうか。

抽出法としては順序復元抽出法(標本データがリスト型データ)だけを述べましたが、別な抽出法ならば、変量の値の空間は、Xn = Listn(X) ではなくなるし、標本確率分布(変量の値側の確率測度)の構成も変わります。難しくなります。

今日はもう述べませんが、標本の抽出法がコレクションデータ型と対応するという事実はなかなか面白くて、標本の抽出法も(コレクションデータ型がそうであるように)関手やモナドとしての記述を持ちます。

さて、この長い記事で、超曖昧語「母集団」「標本」を解明することが出来たでしょうか。出来ていたらいいけど。

*1:画像: https://www.ttrinity.jp/product/3196459 より

*2:もちろん、それぞれの構造が満たすべき法則(公理)も一緒に考えています。

*3:身長の測定に誤差が生じてしまう事態を考えることも当然にあります。そのときは、fは誤差の影響を受けるという意味で「確率的」と言えるでしょう。今回の話は、誤差なしの設定だ、ということです。

*4:後で、正規化された基数測度を、選ばれるチャンスが公平であることだと再解釈します。

*5:しかしそれでも、混乱の心配があれば fA, XA のように書くべきです。「めんどくさいから省略」を積み重ねると意味不明になるので。

*6:変量のあいだの関係を問題にする場合など、多変量を多変量のまま扱う必要性もあります。

*7:この関係に気付くと、標本抽出が、モナド的な構造を持つであろうことも予想できます。

*8:コンテナデータ型と呼ぶこともあります。

*9:コンピュータで扱うデータとしては、リストとタプルは区別されます。メモリーレイアウトや操作可能性が違うからです。しかし、要素を並べた列という意味でなら同義語とみなしていいでしょう。

*10:「一様」だと言えるには、平行移動のような異なった場所を重ねて比較するメカニズムが必要です。したがって、異なる場所を比較できない場合は、「一様」に意味を持たせることができません。[追記]別な「一様」の定義として、標準的な測度が事前にあって、その標準測度に関して確率密度関数が定数というのもありますね。でも、「標準測度は公平」の根拠は天下り。[/追記]

*11:「確率空間の凸結合と分割」で、続きがあるようなことを書いてますが、この記事は続きではありません。

2018-06-18 (月)

二点しかない離散空間に長さ1の線分を描けるか?

| 15:41 | 二点しかない離散空間に長さ1の線分を描けるか?を含むブックマーク

a, bを実数の定数として、f(x) = ax + b は中学校で習った1次関数です。xの変域を単位閉区間 [0, 1] = {x∈R | 0 ≦ x ≦1} に制限します。ax + b = b(1 - x) + (a + b)x であることに注意して、s := b (sはstart点のs), t := a + b (tはtarget点のt)と置けば、f(x) を次のように書き換えられます。

  • f(x) = s(1 - x) + tx

xを時刻とみなせば、時刻0でスタート点s(出発地)にいて、時刻1でターゲット点t(目的地)に到着する等速直線運動(速度はa)の記述と解釈できます。0と1の中間の時刻(例えば x = 1/2)でも、必ず対応する位置 f(x) が存在します。

さて、いま二点だけの集合 {2, 3} を考えます。ホントに二点だけですよ! 中間の位置はありません。関数 f:[0, 1]→{2, 3} で、f(x) = 2(1 - x) + 3x と書けるものはあるでしょうか?

普通に考えると、x = 1/2 で f(1/2) = 2(1 - 1/2) + 3(1/2) = 5/2、しかし5/2は{2, 3}の要素ではないのでウマクないですよね。なにかしら普通ではない、しかし合理的で説得的な考え方により、f(x) = 2(1 - x) + 3x : [0, 1]→{2, 3} に意味を与えたいのです。さあ、どうしましょうか?

内容:

  1. カーク・スターツの論文
  2. ベクトル空間内の凸集合
  3. 凸結合の性質
  4. 凸空間の公理的定義
  5. 二元集合を台集合とする凸空間はあるのか?
  6. 二元集合上の凸構造の構成
  7. おわりに

カーク・スターツの論文

カーク・スターツ(Kirk Sturtz)は、2017年7月にarXiv.orgに投稿され、2018年4月に更新(ver.4)された論文により、ジリィモナド界隈の人々が成立するだろうと期待していた(しかし、証明はなかった)定理を証明しました。

新しい証明・理論には、新しいアイディアが必要です。スターツは、いくつもの新しいアイディアを駆使して証明・理論を組み立てていますが、そのなかに、小さな/ささいなアイディアかも知れませんが、僕には大きな驚きだったものがあります。

それが表題にある「二点しかない離散空間に長さ1の線分を描く方法」です。正確な言葉づかいをするなら、要素が2つだけの集合に凸構造〈convex structure〉を定義することです。

実は僕も、「二元集合(要素が2つだけの集合)に凸構造が入ったらいいなー」と思ったことがあります。しかし、「出来るわけないよな、こりゃ無理ムリ」と決めてかかっていました。なので、スターツが二元集合上の凸構造を作っているのを知って、もうビックリ! だったのです。

スターツのアイディア*1と共に、僕がどんな先入観に囚われていたかも説明します。

ベクトル空間内の凸集合

Vを実数体R上のベクトル空間とします*2。Vの部分集合Aが凸集合〈convex set〉だとは、次が成立することです。

  • x, y∈A ならば、0 ≦ τ ≦ 1 である実数τに対して、((1 - τ)x + τy)∈A

ここから先、閉区間 [0, 1] に所属する実数はギリシャ文字小文字で表すことにします。文字τ(タウ、ラテン文字tに相当)を選んだのは、時間パラメータの雰囲気(τ = time)を残したかったからです。

ベクトル空間Vの要素x, yを固定して、τを0から1へと動かした場合、(1 - τ)x + τy は、xからyへと至る線分〈segment〉(直線の一部)を描きます。この線分を [x, y] と書きます。

  • [x, y] := {v∈V | 0 ≦ τ ≦ 1 である実数τにより v = (1 - τ)x + τy と書ける}

V = R の場合を考えると、閉区間の記法 [0, 1] は、今定義した記法と整合します。

  • [0, 1] := {s∈R | 0 ≦ τ ≦ 1 である実数τにより s = (1 - τ)0 + τ1 と書ける}

線分を使って凸集合の定義を言い換えると:

  • A⊆V が凸集合 :⇔ (x, y∈A ⇒ [x, y]⊆A)

':⇔'は、定義であることを強調した論理的同値、'⇒'は「ならば」(論理的含意)です。

平面(2次元ベクトル空間)内の円板(円周ではない)や、内部を含む三角形などは凸集合です。平面全体や一点だけの集合も凸集合です。凸集合の例を作るときに役立つ定理があります。

  1. f:V→R が線形写像のとき、a∈R に対して、{v∈V | f(v) ≧ a} は凸集合である。
  2. Iはインデックス集合(無限集合でもよい)として、各 i∈I に対してAiが凸集合のとき、共通部分 ∩{Ai | i∈I} は凸集合である。

{v∈V | f(v) ≧ a} の形の集合は、アフィン半空間〈affine half-space〉*3と呼ばれるので、すぐ上の一番目の定理は、「アフィン半空間は凸集合である」と言い換えられます。

{v∈V | f(v) ≧ a}∩{v∈V | -f(v) ≧ a} = {v∈V | f(v) = a} なので、Vの超平面(アフィン超平面)は凸集合なのが分かります。{fi(v) ≧ ai | i = 1, 2, ..., k} という連立不等式で定義される多角形・多面体も凸集合です。円板のように、多角形とは呼べない図形でも、無限個の半空間の共通部分として書けます。

ハート形は凸集合ではありません。次の図のように、両端がハート形に入っているのに、ハート形からはみ出す線分が存在するからです。

[補足]

空集合は凸集合です。これは、そう約束したと思ってもいいですが、例外事項を付加したわけではなくて、定義だけから厳密に言えることです。最近、論理と証明の話を書いたばかりなので、論理的に確認してみましょう。

Pow(V)はベクトル空間(の台集合)Vのベキ集合だとして、Aが凸集合であることを、ちゃんと書いてみると:

  • for A∈Pow(V) (Aが凸集合 ⇔ ∀x, y∈V.(x, y∈A ⇒ [x, y]⊆A))

A = ∅ (空集合)と具体化してみると:

  • ∅が凸集合 ⇔ ∀x, y∈V.(x, y∈∅ ⇒ [x, y]⊆∅)

∅が凸集合であるかないかの判定は、x, y∈∅ ⇒ [x, y]⊆∅ という命題の真偽判定と同じことです。含意命題('⇒'を含む命題)の前件('⇒'の左側) x, y∈∅ は常に偽なので、含意命題全体は真です。つまり、∀x, y∈V.(x, y∈∅ ⇒ [x, y]⊆∅) が真であることから、「∅が凸集合」も真になります。

別な(逆な)発想として、「∅が凸集合でない」と言いたいなら、

  • ∃x, y∈V.(x, y∈∅ ∧ ¬([x, y]⊆∅))

を示す必要があります。x, y∈∅ が常に偽なので、この命題は絶対に成立しません(「∅が凸集合」に対する反例となる2点を見つけられない)。二重否定の原理から、「∅が凸集合でない」が成立し得ない、とは「∅は凸集合である」ことです。

[/補足]

凸結合の性質

前節の凸集合の定義で出てきた (1 - τ)x + τy を、xとyの凸結合〈convex combination〉と呼びます。凸結合を、τ, x, y の3引数を持つ関数〈写像〉ccと考えましょう。つまり、

  • cc:[0, 1]×V×V→V
  • cc(τ, x, y) := (1 - τ)x + τy

型付きのラムダ記法を使うなら:

  • cc := λ(τ, x, y)∈[0, 1]×V×V.( (1 - τ)x + τy :V )

A⊆V が凸集合であることは、ccをA上に制限した cc:[0, 1]×A×A→A がちゃんと定義できる(well-defined)ことと同じです。

cc(τ, x, y) を ccτ(x, y) とも書きます。ccは次の性質を持ちます。

  1. cc0(x, y) = x ---(始点条件)
  2. ccτ(x, x) = x ---(退化線分条件)
  3. cc1-τ(x, y) = ccτ(y, x) ---(反転対称性)
  4. ccτ(x, ccρ(y, z)) = ccτρ(ccσ(x, y), z) ただし τ(1 - ρ) = (1 - τρ)σ ---(パラメータ付き結合律)

これらの等式は、ccの定義に従って計算すれば出てきます(ぜひ、やってみてください)。それぞれの等式の意味を説明しましょう。

ccを等速直線運動のパラメータ表示と考えると、τ = 0 では始点xにいるはずです。それを表した等式が「始点条件」です。

始点と終点が一致している等速直線運動は、一点に退化した線分を描きます。一点に退化した線分とは定数写像になります。「退化線分条件」はそのことを表していますね。

パラメータτを τ' = 1 - τ に変更すると、時間を反転したことになり、終点から始点へと逆行する運動になります。時間反転が、空間的には線分の対称性を導きます。「反転対称性」です。

最後の「パラメータ付き結合律」は少し複雑です。一般に、二項演算(=ニ変数関数)fが f(x, f(y, z)) = f(f(x, y), z) を満たすなら、fは結合律を満たします。ccの場合、パラメータをうまく調整すると結合律を満たします。パラメータに関する条件も含めて結合律を述べたのが「パラメータ付き結合律」です。

μ = τσ と置くと、

  • ccτ(x, ccρ(y, z)) = ccμ(ccσ(x, y), z)

この結合律は、4つのパラメータ τ, ρ, μ, σ が次の連立方程式を満たすときだけ成立します。

  1. μ = τσ
  2. τ(1 - ρ) = (1 - μ)σ

連立方程式により定義される図形 {(τ, ρ, μ, σ)∈[0, 1]4 | μ = τσ かつ τ(1 - ρ) = (1 - μ)σ} が、ccの結合律を支配していると言ってもいいでしょう。

凸空間の公理的定義

凸集合の定義では、ベクトル空間Vがまずあり、その部分集合として凸集合が定義されました。凸結合も、ベクトル空間の足し算とスカラー倍から組み立てられた演算です。前節の凸結合の性質も、定理として示すべきものです。

ここで発想を変えて、ベクトル空間を想定せずに、とある集合Aとその上の演算のパラメータ族〈family of binary operations〉ccの組として「凸な構造」を定義しましょう。(A, cc) が満たすべき公理(定理ではない)は、前節の凸結合の性質です。凸結合の公理を満たす (A, cc) を凸空間〈convex space〉と呼びます。

ccτ(x, y) を、中置二項演算子 +τ として書くことにします。読みやすさはけっこう改善します。中置二項演算子を使って、凸結合の公理をもう一度書いてみます。

  1. x +0 y = x ---(始点条件)
  2. x +τ x = x ---(退化線分条件)
  3. x +1-τ y = y +τ x ---(反転対称性)
  4. x +τ (y +ρ z) = (x +σ y) +μ z ただし、μ = τρ, τ(1 - ρ) = (1 - μ)σ ---(パラメータ付き結合律)

こう書いてみると、凸結合は“パラメータ付きの和”に見えるので、凸結合を凸和〈convex sum〉と呼ぶこともあります。凸結合を二項演算だと見ると、それぞれの公理も若干違った見え方になるかも知れません。

  1. x +0 y = x は、τ = 0 のときの凸和が左自明演算になることです。左自明演算とは、x・y = x という演算です。同様に、τ = 1 のときの凸和は右自明演算です。
  2. x +τ x = x は、+τ がベキ等〈idempotent〉な演算であることを意味します。
  3. x +1-τ y = y +τ x は一種の交換律です。
  4. x +τ (y +ρ z) = (x +σ y) +μ z はもちろん、パラメータ条件に縛られた結合律です。

ここから先は、プラス記号'+'を凸和の意味でもオーバーロード(多義的使用)して、A = (A, +) のような記号の乱用もします。

(A, +) と (B, +) が2つの凸空間だとして、写像 f:A→B がアフィン凸写像〈affine convex map〉だとは、凸和を保存することです。つまり、次を満たすことですね。

  • f(x +τ y) = f(x) +τ f(y)

アフィン凸写像は、凸アフィン写像アフィン写像凸写像などとも呼ばれます。

凸空間を対象として、アフィン凸写像を射とする圏が構成できます。しかし、今回は圏論的考察はしません。

二元集合を台集合とする凸空間はあるのか?

いよいよ本題に入ります。二元集合(2つだけの要素を持つ集合)を凸空間にすることが出来るか? が問題です。

二元集合として、真偽値の集合 B = {F, T} をとります。BはBooleanから、F, T は False, True の略です。Bに対して凸和 +:[0, 1]×B×BB をうまいこと定義して、(B, +) を凸空間にしたいのです。

僕は即座に「無理」と判断しました。皆さんはどうでしょう? なぜ僕は「無理」と判断してしまったのでしょう? 後から考えてみました。

先入観・思い込みがあったのです。その先入観・思い込みは、凸空間にいだいた幾何的・物理的イメージによります。今まで使用していた用語「線分」には明らかに図形のイメージが伴います。その線分は等速直線運動の軌跡とみなしているので、物理的イメージもあります。凸空間の定義に使われる閉区間 [0, 1] は図形だろうし、凸空間の典型例である多角形・多面体、円板・球体なども図形です。

つまり、凸空間には、図形の(幾何的)イメージが非常に強く付着しています。このため、無意識に幾何的判断をしてしまうのです。

Bの二点、例えばFとTに対して F +τ T = ccτ(F, T) は、閉区間[0, 1]からBへの写像となります。Bは離散空間で2つの連結成分({F}と{T})を持ちます。ですから、連結で連続した[0, 1]からの写像は存在するはずがありません。B内の線分や等速直線運動なんて無理なんです。

これが僕の判断でした。しかし、公理的・抽象的に定義された凸空間の定義に、位相や連続性は一切入っていません。凸空間は代数的構造であって、代数的法則の成立が要請されているだけです*4

「無理だ」という判断は、凸空間の定義に照らし合わせて、まったく何の根拠もなかったのです。実際スターツは、凸空間 (B, +) を 構成しています。

二元集合上の凸構造の構成

B = {F, T} 上の凸和を次のように定義します。

  1. F +τ F := F
  2. F +τ T := if (τ = 1) then T else F
  3. T +τ F := F +1-τ T = if (τ = 0) then T else F
  4. T +τ T := T

このように定義された凸和が、凸空間の4つの公理(始点条件、退化線分条件、反転対称性、パラメータ付き結合律)を満たせば、(B, +) は凸空間になります。順番に確認していきましょう。

始点条件

始点条件を、∀(「任意の」を意味する記号)を使って書けば、∀x, y∈B.(x +0 y = x) となります。∀x, y∈B の部分は、4つの組み合わせに展開できるので:

  1. F +0 F = F
  2. F +0 T = F
  3. T +0 F = T
  4. T +0 T = T

これらは定義から明らかです。

退化線分条件

同じく∀を使って書けば、∀x∈B.∀τ∈[0, 1].(x +τ x = x)、展開すれば:

  1. ∀τ∈[0, 1].(F +τ F = F)
  2. ∀τ∈[0, 1].(T +τ T = T)

これらも定義から言えます。

反転対称性

∀x, y∈B.∀τ∈[0, 1].(x +1-τ y = y +τ x) が示すべきことです。∀x, y∈B を展開すれば4つの命題になります。

  1. ∀τ∈[0, 1].(F +1-τ F = F +τ F)
  2. ∀τ∈[0, 1].(F +1-τ T = T +τ F)
  3. ∀τ∈[0, 1].(T +1-τ F = F +τ T)
  4. ∀τ∈[0, 1].(T +1-τ T = T +τ T)

これも定義からすぐに言えますね。

パラメータ付き結合律

パラメータ付き結合律は、ちょっと複雑な論理式になって:

  • ∀x, y, z∈B.∀τ, ρ, μ, σ∈[0, 1].(μ = τρ かつ τ(1 - ρ) = (1 - μ)σ ⇒ x +τ (y +ρ z) = (x +σ y) +μ z)

∀x, y, z∈B を8つの場合に展開するのではなくて、パラメータτ, ρに関して場合分けすることにします。

(τ, ρ) = (1, 1) の場合とそれ以外です。それ以外をさらに2つに分けて:

  1. 場合1 : τ = 1 かつ ρ = 1
  2. 場合2 : τ ≠ 1 (ρは任意)
  3. 場合3 : ρ ≠ 1 (τは任意)

漏れない場合分けなので、「場合1または場合2または場合3」で、すべての(τ, ρ)をカバーしています。

場合2と場合3では、結合律の左辺のパラメータ(τ, ρ)で与えられたとき、右辺のパラメータ(μ, σ)を次のように計算できることに注意してください。

  • μ = τρ
  • σ = τ(1 - ρ)/(1 - μ) = τ(1 - ρ)/(1 - τρ)

場合1では、分母がゼロになるので二番目の式が使えません。

場合1 : τ = 1 かつ ρ = 1

この条件で、「μ = τρ かつ τ(1 - ρ) = (1 - μ)σ」を満たす μ, σ は、

  • μ = 1
  • σは任意

となります。目的の命題=結合律は、

  • x +1 (y +1 z) = (x +σ y) +1 z

です。σが何であっても、これは成立します。

場合2 : τ ≠ 1 (ρは任意)

この条件のもとでは、

  • μ ≠ 1 (τ ≠ 1, μ = τρ なので)

σ = τ(1 - ρ)/(1 - τρ) を、σ = 1 として解くと τ = 1 。つまり、σ = 1 ⇒ τ = 1 。対偶をとれば τ ≠ 1 ⇒ σ ≠ 1 ですが、τ ≠ 1 は今の仮定に入っているので、

  • σ ≠ 1

τ ≠ 1 から x +τ (y +ρ z) = x 。μ ≠ 1 から (x +σ y) +μ z = (x +σ y)、σ ≠ 1 から (x +σ y) = x 。

以上より、x +τ (y +ρ z) = x 、(x +σ y) +μ z = x だから、

  • x +τ (y +ρ z) = (x +σ y) +μ z

場合3 : ρ ≠ 1 (τは任意)

この条件のもとでも場合2と同じく次は成立します。

  • μ ≠ 1
  • σ = 1 ⇒ τ = 1

さらに、

  • τ = 1 ⇒ σ = 1

も、σ = τ(1 - ρ)/(1 - τρ) の計算から明らか。よって、

  • τ = 1 ⇔ σ = 1
  • τ ≠ 1 ⇔ σ ≠ 1

ρ ≠ 1, τ = 1 のときは、σ = 1 でもあって、

  • x +τ (y +ρ z) = y +ρ z = y
  • (x +σ y) +μ z = y +μ z = y (μ ≠ 1 だったから)

結合律は成立します。

ρ ≠ 1, τ ≠ 1 のときは、σ ≠ 1 でもあって、

  • x +τ (y +ρ z) = x
  • (x +σ y) +μ z = (x +σ y) = x

結合律は成立します。

おわりに

公理的・抽象的に定義された凸空間は、我々の幾何的・物理的イメージを裏切るような存在物(その例が (B, +))も包摂しているようです。お馴染みの例である有限次元ベクトル空間の凸部分集合は、必然的に幾何的(位相的)構造も持ってしまうのですが、凸部分集合の幾何的イメージに頼るのは危険です。

定義や前提に含まれない仮定を勝手に付けてしまう過ちは、けっこうやってしまいます。今回の例でも僕はやらかしました。余計なことを考えない境地に至るのは、だいぶ修行が必要そうです。

*1:既によく知られていたことを、スターツが採用しただけかも知れませんが、スターツ論文が自分にとっての初見だったので、「スターツの」とします。

*2:凸集合を定義する場所としては、ベクトル空間よりもアフィン空間のほうがふさわしいのですが、話を簡単にするためにベクトル空間を使います。

*3:アフィン半空間の定義も、アフィン空間をベースに行うべきですが、ベクトル空間でいいことにします。

*4:幾何的イメージを避けてかどうかは分かりませんが、凸空間の代わりに凸代数〈convex algebra〉、重心代数〈barycentric algebra〉という呼び名もあるようです。重心代数は微妙に違った定義かも知れません。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20180618

2018-06-15 (金)

論理の全称記号∀も存在記号∃もちゃんと使えるようになろう

| 12:24 | 論理の全称記号∀も存在記号∃もちゃんと使えるようになろうを含むブックマーク

論理の存在記号∃をちゃんと使えるようになろう」:

自然数の大小順序だけでも、まだネタはありますし、もう少し練習問題があったほうがいい気もします。全称記号∀に関する説明が不足してるし、∀と∃の関係も述べていません。が、長くなるので今回はこのくらいにしておきます。

ということで、そのまま続きを書きます。前回の記事を読んでいることを前提にするので、予備知識や記法の約束の繰り返しはしません。

内容:

  1. 全称記号と存在記号に関する推論規則
  2. 全称命題を準備するボックスを使ってみよう: 最小元の存在
  3. 背理法も使ってみる: 最大元の非存在
  4. おわりに

全称記号と存在記号に関する推論規則

全称記号∀を含む命題と存在記号∃を含む命題に対する推論規則は、それぞれに導入規則〈introduction rule〉と除去規則〈elimination rule〉があり、合計で4つの規則となります。論理の教科書によくあるスタイル(望ましいスタイルとは思ってない)で規則を書くと:

      P                    ∀x.P
 ------------[∀導入]    ----------[∀除去]
 ∀x.P[a:=x]              P[x:=t]

      P                    ∃x.P
 ------------[∃導入]    ----------[∃除去]
 ∃x.P[t:←x]             P[x:=a]

規則の記述のなかで使っている記号を説明します。

  • Pは命題です。正確に言えば、述語論理の論理式を表すメタ変数がPです。
  • xとaは変数(を表すメタ変数)ですが、xは束縛変数で、aは自由変数とします。実際に使う変数を'x', 'a'って決めてるわけじゃないですよ。メタ変数xが表す実際の変数がaのときもあります。
  • tは項(を表すメタ変数)です。定数、変数、関数(の記号)の組み合わせが項です。

ブラケット〈角括弧〉は置換を表します。4つのルールで、置換の仕方は微妙に違います。

  1. ∀導入 ∀x.P[a:=x] : 自由変数の束縛変数化 : Pに含まれていた自由変数aを束縛変数xに置き換える。
  2. ∀除去 P[x:=t] : 束縛変数の具体化 : Pに含まれていた束縛変数xを項tで置き換える。
  3. ∃導入 ∃x.P[t:←x] : 具体項の束縛変数化 : Pに含まれていた項tを束縛変数xで置き換える。これだけ特殊で(なので違う記号を使っている)、具体物を表す項に対して置き換えを行う。tが複数箇所に出現しても、出現箇所を特定して置き換える。つまり、置換しないままのtが残ってもかまわない。
  4. ∃除去 P[x:=a] : 束縛変数の条件付き自由変数化 : Pに含まれていた束縛変数xを自由変数aで置き換える。ただし、自由変数aには条件が付く(その意味で「自由」という呼び方は違和感があるかも)。

この節冒頭のスタイルで推論規則を書くのは望ましくない、と言ったのは、前回に述べたボックスの構造が全く含まれていないからです。∃除去で使うボックスが前回の主たる話題でした。∀導入にもボックスが付きます。ボックスなしでは実用的なテンプレートとしては不十分なので、推論バー(横棒)しか書かないスタイルは実用性に乏しいと思うのです。

全称命題を準備するボックスを使ってみよう: 最小元の存在

∀x∈N.(a ≦ x) という論理式は、「aがNの最小元である」という意味です。「Nに最小元が存在する」なら、次の論理式になります。

  • ∃a∈N.∀x∈N.(a ≦ x)

大小関係≦の定義は次のようであり、この定義は我々の暗黙の前提Γに入っているのでした。

  • ∀x, y∈N(x ≦ y ⇔ ∃z∈N.(x + z = y)) ---(大小順序の定義)

この定義を用いると、a ≦ x は ∃z∈N.(a + z = x) のことなので、「Nに最小元が存在する」は次のことです。

  • ∃a∈N.∀x∈N.∃z∈N.(a + z = x)

これをターゲットとする証明要求は:

  • Γ |-? ∃a∈N.∀x∈N.∃z∈N.(a + z = x)

我々は経験上、自然数の最小元といえば0だと知っています。実際、ターゲットを示す証明の出発点は、∀a∈N.(a + 0 = a) という命題で、これはΓに入っています。先に当該命題の証明を示して、後に説明を続けます。なお、ドルマーク('$')が付いたラベルは、既に前提Γに入っている命題の引用を示します。

証明要求: Γ |-?
         ∃a∈N.∀x∈N.∃z∈N.(a + z = x)

BEGIN ∀導入
  x∈N

  ∀a∈N.(a + 0 = a) ---$(ゼロの中立性)
    --[∀除去 a:=x]
  x + 0 = x
  // 交換律より
  0 + x = x
    --[∃導入 等式左辺のx:←z]
  ∃z∈N.(0 + z = x)
END
●∀x∈N.∃z∈N.(0 + z = x)
  --[∃導入 0:←a]
∃a∈N.∀x∈N.∃z∈N.(a + z = x)

前回既に、∃除去ボックスを出したので、∀導入ボックスにも違和感はないでしょう。∀導入ボックスを絵で描けば次のようです。

テキストと絵を混ぜるのは大変なので、∀導入ボックスをテキストで表現するには:

BEGIN ∀導入
  変数宣言

  :
  :
  ボックス内結論
END
●全称命題

∀導入ボックス内で使う変数を、ボックス冒頭で宣言します。ボックス内結論に∀を付けて(全称束縛して)ボックスの外に出します。黒丸'●'は全称命題を目立たせるマーカーで、特に意味はありません。

具体例である「最小元の存在」の証明では、∀導入ボックス内の変数はxで、ボックス内結論 ∃z∈N.(a + z = x) に自由変数xが入っています。この自由変数xを束縛変数に書き換えて外に出すのですが、

  • 慣れるまでは、自由変数と束縛変数に、別な名前を使うことを推奨。前回述べた推奨事項)

もうこの推奨を破っています。同じ変数名xをそのまま束縛変数にも使っています。破っておいて言うのもナンですが、自由変数と束縛変数は本来別物なんですよ。構文的に完全に区別している例もあります。が、実際には文字が足りなくなるので、同じ名前を使い回すことになっちゃうんですね。

しかしそれでも、∀導入ボックス内で宣言された変数xは、ボックスの外部に絶対に漏れないことには注意してください。ボックス外のxは、たまたま同名の束縛変数であって、ボックス内のxがボックス外まで有効な(生きている)わけじゃないです。プログラミング言語で、ブロック内の変数が外から見えるわけないでしょ、それと同じ。

背理法も使ってみる: 最大元の非存在

前節で最小元を扱ったので、最大元もみておきましょう。最大の自然数は存在しないので、そのことを表現すれば:

  • ¬∃a∈N.∀x∈N.(x ≦ a)

これを示すために次の命題を仮定します(後で証明します)。

  • ∀x∈N.(x ≦ x + 1) ---(a)
  • ∀x∈N.(x ≠ x + 1) ---(b)

この2つをまとめて書けば ∀x∈N.(x < x + 1) ですが、2つに分けた形にしておきます。

今度の証明要求は次のようになります。

  • Γ |-? ¬∃a∈N.∀x∈N.(x ≦ a)

背理法を使うことにすれば:

  • Γ, ∃a∈N.∀x∈N.(x ≦ a) |-? ⊥

'⊥'は矛盾を表す記号です。矛盾を出す証明は次のようになります。

証明要求: Γ, ∃a∈N.∀x∈N.(x ≦ a) |-? ⊥

●∃a∈N.∀x∈N.(x ≦ a)
BEGIN ∃除去
  m∈N
  ∀x∈N.(x ≦ m)
    --[∀除去 x:=m + 1]
  m + 1 ≦ m ---(1)

  ∀x∈N.(x ≦ x + 1) ---$(a)
    --[∀除去 x:=m]
  m ≦ m + 1 ---(2)

  // (1), (2)より
  m + 1 ≦ m ∧ m ≦ m + 1 ---(3)

  ∀x, y∈N.(x ≦ y ∧ y ≦ x ⇒ x = y) ---$(反対称律)
    --[∀除去 x:=m, y:=m + 1]
  m ≦ m + 1 ∧ m + 1 ≦ m ⇒ m = m + 1 ---(4)

  // (3), (4)より
  m = m + 1 ---(5)

  ∀x∈N.(x ≠ x + 1) ---$(b)
    --[∀除去 x:=m]
  m ≠ m + 1 ---(6)

  // (5), (6)より
  ⊥
END
⊥

変形後の証明要求の前提(左側)に「最大元が存在する」があるので、その最大元をmと置いて証明を進めています。∃除去ボックス内で遂行される証明は、既に分かっている全称命題の具体化(∀除去)ばっかりです。全称命題の具体化(∀除去)は、通常は無意識に行われています。

さて、補題(a), (b)ですが、あまりに明らかですからこれを公理にしてもいいですが、大小順序の定義と消約律から証明できます。不等号≦を、定義から存在命題に置き換えた形を証明要求としましょう。

証明要求: Γ |-? ∀x∈N.∃z∈N.(x + z = x + 1)

BEGIN ∀導入
  n∈N
  ∀x∈N.(x = x) ---$(等式の反射律)
   --[∀除去 x:=n + 1]
  n + 1 = n + 1
   --[∃導入 左辺の1:←z]
  ∃z∈N.(n + z = n + 1)
END
●∀x∈N.∃z∈N.(x + z = x + 1)

補題(b)を示すには、0 ≠ 1 が公理にあるとします。背理法を使う形の証明要求とします。

証明要求: Γ, x∈N, x = x + 1 |-? ⊥

// 前提から
x = x + 1
// ゼロの中立性から
x + 0 = x + 1
// 消約律から
0 = 1
// 公理 0 ≠ 1 と矛盾するので
⊥

おわりに

前回と今回で、∀導入, ∀除去, ∃導入, ∃除去、これら4つの推論規則の例をある程度は出せたと思います。特に、∀導入と∃除去では、ボックスを使います。ボックスには、そのボックス内でだけ有効な(生きている)変数が伴い、ボックスの先頭で変数宣言します。ボックスの入り口、出口にも決まったお作法があります。念の為再掲すると:

変数リネームは、(あまり守られない)推奨事項です。こういったボックスを意識すると、全称命題/存在命題を間違いなく扱うことが出来ます。

2018-06-14 (木)

論理の存在記号∃をちゃんと使えるようになろう

| 11:09 | 論理の存在記号∃をちゃんと使えるようになろうを含むブックマーク

距離空間や一般の位相空間を勉強中のN君ですが、「任意の」や「存在する」の扱いには苦労しているようです。特に、「前提にある存在命題の使い方が分からない」と。うん、難しいですよね。「習うより慣れろ」と言われても、そう簡単に慣れるもんじゃないです。

∀と∃をちゃんと使うには、実用的なテンプレートを意識して、当座はそのテンプレートに沿って命題や証明を書いたほうがいいと思います。そのようなテンプレート、特に存在記号のためのテンプレートと、その使い方を紹介します。

内容:

  1. はじめに
  2. 例題と予備知識
  3. 自然数の大小順序と証明の例: 反射律
  4. 存在命題を料理するボックスを使ってみよう: 反対称律
  5. もっとボックスを使ってみよう: 推移律
  6. おわりに
  1. 全称記号と存在記号に関する推論規則
  2. 全称命題を準備するボックスを使ってみよう: 最小元の存在
  3. 背理法も使ってみる: 最大元の非存在
  4. おわりに

はじめに

イプシロン-デルタ論法はなぜ難しいのか? どうしたら分かるのか? 分かる必要があるのか?」に、次のように書きました。

イプシロン-デルタ論法のために必要なスキルとして、次が要求されています。

  1. 点の集合だけでなく、集合の集合を扱うスキル(あるいは慣れ)。
  2. 「任意の」「存在する」という言葉を含む論理的な表現を扱うスキル(あるいは慣れ)。

これはもちろん、イプシロン-デルタ論法だけではなくて、空間やら構造やらを扱うときは常に必要になります。

「任意の」「存在する」の使い方は、述語論理の推論規則によって統制されているのですが、あまり分かりやすいものではありません。次の2つの記事で詳しく分析しています。が、ちょっと詳し過ぎたかも知れません。

命題の記述や証明がうまく出来ないと「論理的に考えていないから」と思いがちですが、そうとも限りません。単に技術的な問題、つまりノウハウが不足しているだけかもしれません。特に、∀と∃の取り扱いはノウハウが必要です。この記事は、ノウハウと事例の提供を目的にしています。

例題と予備知識

今回例題に使うのは、自然数の順序関係(大小順序関係)です。自然数の全体を N = {0, 1, 2, ...} とします。0も自然数に入れている点に注意してください。自然数の演算としては、足し算しか考えません。足し算は次の法則を満たします。

  • (a + b) + c = a + (b + c) ---(結合律)
  • a + b = b + a ---(交換律)
  • a + 0 = a ---(ゼロの中立性)

他にも必要な法則(公理)がありますが、必要になった時点で導入します。

いま述べた結合律などの法則は、実は全称記号〈全称限量子 | 全称量化子 | universal quantifier〉∀が付いています。

  • ∀a, b, c.( (a + b) + c = a + (b + c) )

法則には常に全称記号が付くので、「常に付くなら常に省略してもいいだろう」と省略されます。

変数 a, b, c は、今の場合は自然数を表します。変数の変域(変数の型)を明示するなら、

  • ∀a, b, c∈N.( (a + b) + c = a + (b + c) )

です。∀a, b, c∈N という書き方も略記で、ちゃんと書くなら:

  • ∀a∈N.∀b∈N.∀c∈N.( (a + b) + c = a + (b + c) )

単に命題をポンと出しても、それの真偽は不明です。「この命題は真だぞ」という主張を伴うなら、「真だぞ」を意味する判断〈judgement〉記号 '|-' を添えたほうが確実です*1

  • |- ∀a∈N.b∈N.c∈N.( (a + b) + c = a + (b + c) )

まーしかし、さすがに面倒くさいので、(a + b) + c = a + (b + c) とだけ書いて、結合律の提示とするのです。「毎回、真面目に律儀に書け」と言う気は無いですが、省略、省略、省略のあげくに簡潔な書き方をしていることは意識すべきです。省略された情報は文脈から補いますが、文脈に頼りすぎるとコミュニケーションが失敗します*2。明示的に書くか、暗黙の前提で済ますかは、よくよく考える必要があります。

「式」という言葉は多義・曖昧過ぎるので、この記事では「命題〈proposition〉」と「項〈term〉」を使います。命題は真偽判定が可能(だと想定されるよう)な文、項はなんかのモノ(例えば自然数)を表す(と想定される)記号表現です。(ただし、単項式/多項式の意味の項とは違います。単項式/多項式の項はサマンド〈summand〉*3のことです。)x や x + 1 は項で、∀x.(x = x + 1) は命題です。

命題を一般的に表すために P, Q などを使い、項を一般的に表すために s, t などを使います。これらはメタ変数なので、書体を変えるのが望ましいのですが、普通のローマン体で書きます。「普通の変数(今回は自然数を表す変数)か? メタ変数(命題や項を一般的に表す変数)なのか?」は、“文脈で”判断してください。

自然数の大小順序と証明の例: 反射律

自然数の大小は、足し算とは独立に理解されるでしょう。例えば、足し算が出来ない小さな子供でも、個数の大小は認識できるかもしれません。しかしここでは、足し算ありきで、大小の順序関係は足し算により定義される、と考えましょう。

  • x ≦ y :⇔ ∃z.(x + z = y) --(大小順序の定義)

':⇔'は、定義であることを強調した論理的同値です。全称記号や変数の型(所属する集合)までちゃんと書けば:

  • ∀x, y∈N(x ≦ y ⇔ ∃z∈N.(x + z = y)) --(大小順序の定義)

いま定義した x ≦ y が、ちゃんと順序関係になっているか、確認します。「x ≦ y が順序関係である」とは次が成立することです。

  • x ≦ x ---(反射律)
  • x ≦ y, y ≦ x ⇒ x = y ---(反対称律)
  • x ≦ y, y ≦ z ⇒ x ≦ z ---(推移律)

順に証明を付けていきましょう。

まず反射律に対して次の証明要求を考えます。

  • Γ |-? ∀x∈N.(x ≦ x)

証明要求とは、その名の通り「この命題を証明してください」という依頼や指示のことです。'|-?'の左側が証明のときに使っていい前提で、'|-?'の右側が証明のターゲット命題(目的とする命題)です。大文字ガンマ'Γ'は、諸々の前提をまとめて書くときに使います。

証明要求について詳しくは、次の記事とそこからのリンク先を参照してください。

上記記事には、証明要求の変形についても書いてあり、それを証明の“お膳立て”と呼んでいます。次はお膳立ての例です。

 Γ |-? ∀x∈N.(x ≦ x)
 ----------------------[全称の変形]
 Γ, x∈N |-? x ≦ x

変形後の証明要求は次のようにして証明(契約が履行)されます。

証明要求: Γ, x∈N |-? x ≦ x

x + 0 = x ---(1)
 --[∃導入 0:←z]
∃z.(x + z = x) ---(2)
// 大小順序の定義より
x ≦ x ---(3)

こんな短い証明ですが、いつくもの約束が使われています。それらを説明していきます。

  • 証明の最後の命題は、証明要求のターゲット命題('|-?'の右側)と同じでなければならない。

上の例では、最後の命題(番号は(3))と、証明要求のターゲット命題は、どちらも x ≦ x ですからいいですね。

  • 証明内に出現するすべての命題は、その根拠がハッキリしてなくてはならない。

証明内に出現する命題には (1), (2), (3)と番号がふってあります。(1), (2), (3)すべてに根拠が必要ですが、根拠記述には次の3つの方法を適宜使い分けています。

  1. 根拠が明らかと思える場合は、特に何も書かない(省略)。
  2. 使っている推論規則を推論バー形式で書く。
  3. コメントとして短いヒントを書く。

(1)の x + 0 = 0 は、証明要求の前提('|-?'の左側)から容易に推論できるので、根拠は何も書いてません。(1)から(2)は、「∃導入」と呼ばれる推論規則を使っています。∃導入の一般的な形は次のようです。

     P
 --------------[∃導入 t:←v]
 ∃v.P[t:←v]

ここで、Pは何らかの命題(Pは命題を表すメタ変数)です。P[t:←t] は、Pのなかに含まれる項t(tは項を表すメタ変数)を、変数v(vは変数を表すメタ変数)で置き換えたものです。今の具体例では、

    x + 0 = x
 ------------------[∃導入 0:←z]
  ∃z.(x + z = x)

命題 x + 0 = x のなかに含まれる項 0 (0も項です)を、変数(具体的な実際の変数)zで置き換えた x + z = x に存在限量子 ∃z を付けて ∃z.(x + z = x) を出しています。

なお、推論バーのバー(横棒)の長さを調整するのがイヤになったので、長さは調整しません! ハイフン2,3個並べてバーを表現します。

先の具体例の(2)から(3)はコメントでヒントを書いています。

∃z.(x + z = x) ---(2)
// 大小順序の定義より
x ≦ x ---(3)

大小順序の定義は、x ≦ y ⇔ ∃z.(x + z = y) だったので、yをxに置き換えると、x ≦ x ⇔ ∃z.(x + z = x) 、これと(2)から、(3)が出るわけです。詳細に推論を積み重ねなくても、コメントで十分でしょう。

存在命題を料理するボックスを使ってみよう: 反対称律

では次に、反対称律の証明にいきましょう。

  • x ≦ y, y ≦ x ⇒ x = y ---(反対称律)

この命題をちゃんと書けば:

  • ∀x, y∈N(x ≦ y ∧ y ≦ x ⇒ x = y)

その証明要求は、

  • Γ |-? ∀x, y∈N(x ≦ y ∧ y ≦ x ⇒ x = y)

変形して、

  • Γ, (x, y∈N) |-? x ≦ y ∧ y ≦ x ⇒ x = y

証明要求の左側(前提)に出現する (x, y∈N) は、一種の変数宣言だと思ってください。もう少し変形(お膳立て)しておきましょう。

  Γ, (x, y∈N) |-? x ≦ y ∧ y ≦ x ⇒ x = y
  ----------------------------------------------[含意の変形]
  Γ, (x, y∈N), (x ≦ y ∧ y ≦ x) |-? x = y
  ----------------------------------------------[前提の連言を分解]
  Γ, (x, y∈N), x ≦ y, y ≦ x |-? x = y

さらに、x ≦ y と y ≦ x を、大小順序の定義により書き換えれば:

  • Γ, (x, y∈N), ∃z∈N.(x + z = y), ∃z∈N.(y + z = x) |-? x = y

これでお膳立ては終わり。実際の証明にかかります。

前提(証明のときに使ってよい命題達)に∃が入っているので、これは「前提にある存在命題の使い方」を練習するチャンスです。存在命題を使うときは、専用のボックスを使いましょう

ボックスは、「全称記号の導入規則について考える」と「存在記号の除去規則について考える」で説明したもので、次のようなものです。

この絵がピンと来なくてもいいです。∀や∃の扱いでは、証明の一部分を囲むボックスが必要だ、と認識してください。存在記号∃の除去〈elimination〉に使うボックスは次のようです。

さっそく実際に使いたいのですが、テキストで書いた証明内でボックスをリアルに描くのは非常にめんどくさいので、次の記法を使います。

●存在命題
BEGIN ∃除去
  変数宣言
  変数の条件
  :
  :
  ボックス内結論
END
ボックス内結論

BEGIN/ENDとインデントを使います。黒丸'●'は、存在命題が目立つようにです。この形式で反対称律の証明を行います。説明は後でします。

証明要求:  Γ, (x, y∈N), ∃z∈N.(x + z = y), ∃z∈N.(y + z = x)
          |-? x = y

●∃z∈N.(x + z = y)
BEGIN ∃除去
  a∈N
  x + a = y ---(1)
  ●∃z∈N.(y + z = x)
  BEGIN ∃除去
    b∈N
    y + b = x ---(2)
    // (1)と(2)から
    (x + a) + b = x
    // 結合律から
    x + (a + b) = x
    // ゼロの中立性から
    x + (a + b) = x + 0
    // 消約律(後述)から
    a + b = 0
    // ゼロ和自由性(後述)から
    a = 0 ∧ b = 0
    // 連言の左を取り出して
    a = 0 ---(3)
    // (1)と(3)から
    x = y
  END
  x = y
END
x = y

証明のなかで、まだ触れてない法則が出てくるので、それを述べておきます。消約律 〈cancellation property | cancellation law〉は次の形の法則です。

  • a + x = a + y ⇒ x = y

ちゃんと書けば:

  • ∀a, x, y∈N.(a + x = a + y ⇒ x = y)

ゼロ和自由性〈zerosumfree property〉は次の形。

  • a + b = 0 ⇒ a = 0 ∧ b = 0

ちゃんと書けば:

  • ∀a, b∈N.(a + b = 0 ⇒ a = 0 ∧ b = 0)

これらの法則については次の記事で述べています。興味があればどうぞ。

さて、問題の存在命題の扱い方ですが、この具体例では、∃除去ボックスを入れ子にして使っています。ほとんどの証明は内側の∃除去ボックスで遂行されているので、内側の∃除去ボックスだけ取り出します。

  ●∃z∈N.(y + z = x)
  BEGIN ∃除去
    b∈N
    y + b = x ---(2)
    :
    :
    x = y
  END
  x = y

存在命題 ∃z∈N.(y + z = x) をこの∃除去ボックス内で料理します。ボックスの1行目は、ボックス内だけで使う変数の宣言です。この変数*4の名前の選び方は次のとおり。

  1. ボックス内から、ボックス外の変数を参照することがあるので、外部の変数と違う名前を選ぶ。これは守るべし!
  2. 存在命題の束縛変数とは違う名前を選んだほうが事情がハッキリする。これは、あまり守られてないし、破っても実害はない。が、最初のうちは混乱を防ぐために違う名前を推奨。

上の具体例では、

  1. ボックスの外側で、x, y, aが既に使われているので、これと同じ名前はダメ。
  2. 存在命題の束縛変数がzだから、混乱を避ける意味でzと別な名前にする。

で、ボックス内で使う変数にbを選んでいます。変数名の衝突や、紛らわしい名前による混乱を避けるため、変数名の選択法は重要なスキルです。にも関わらず、明示的に述べられず、トレーニングの機会も少ないのは困ったことです。

∃除去ボックスの2行目は、今導入したボックス内変数(具体的にはb)に関する条件です。もとの存在命題の束縛変数(具体的にはz)を、ボックス内変数で置き換えた命題を書きます。y + z = x のzをbに置き換えるので、y + b = x となります。

あとは、ボックス内で証明を遂行して結論を出します。ボックス内の結論には、変数宣言で導入したボックス内変数が入っていてはダメです。ただし、束縛変数なら話が別です。例えば、∀b∈N.(...) のようにbを使うなら問題ありません。とはいえ、これも混乱のもとなので、自由変数(ボックス内変数も自由変数)と、∀, ∃の束縛変数は別な名前を使いましょう。慣れた人は同じ変数を平気で使い回す*5ので、それがまた初心者を困惑させたりします。

  • 慣れるまでは、自由変数と束縛変数に、別な名前を使うことを推奨。

ボックス内結論は、ボックスの外に取り出します。同じ命題を2回書くので冗長ですが、∃除去ボックスのスコープから結論をエクスポートしたことを確認する意味で、2回書きましょう*6。結論がボックス外に取り出せるために、ボックス内変数bが入っていてはダメなのです。

以上に述べたことが、前提である存在命題の使い方の決まり文句=テンプレートです。律儀に守ると、かなり冗長になりますが、慣れるまではテンプレート通りに書きましょう。

もっとボックスを使ってみよう: 推移律

推移律の証明もやってみましょう。証明要求は、次のようです。

  • Γ |-? ∀x, y, z∈N.(x ≦ y ∧ y ≦ z ⇒ x ≦ z)

前節と同じ要領で証明要求を変形すれば:

  • Γ, (x, y, z∈N), ∃z∈N.(x + z = y), ∃w∈N.(y + w = z) |-? ∃w∈N.(x + w = z)

(わざとに)自由変数と束縛変数を同じ名前にしているので、注意してください。紛らわしいだけで間違いではありません。この設定で推移律を証明してみましょう。

証明要求: Γ, (x, y, z∈N), ∃z∈N.(x + z = y), ∃w∈N.(y + w = z)
          |-? ∃w∈N.(x + w = z)

●∃z∈N.(x + z = y)
BEGIN ∃除去
  a∈N
  x + a = y ---(1)
  ●∃w∈N.(y + w = z)
  BEGIN ∃除去
    b∈N
    y + b = z ---(2)
    // (1), (2)より
    (x + a) + b = z
    // 結合律より
    x + (a + b) = z
     --[∃導入 (a + b):←w]
    ∃w∈N.(x + w = z)
  END
  ∃w∈N.(x + w = z)
END
∃w∈N.(x + w = z)

前節とほとんど同じなので、説明は要らないですね。

注意すべきは、やはり変数の使い方です。あえて、同名の自由変数と束縛変数を使っています。自由変数と同名の束縛変数を使うのはかまいません(でも、ときに混乱をまねきます)。異なる命題で同じ束縛変数を使うのも問題ありません(でも、ときに混乱をまねきます)。上の証明内に現れる変数は:

  1. 自由変数 x, y, z(前提で宣言されている)
  2. 束縛変数z(前提の命題)
  3. 束縛変数w(前提の命題)
  4. 自由変数a(外側の∃除去ボックスで宣言されている)
  5. 自由変数b(内側の∃除去ボックスで宣言されている)
  6. 束縛変数w(ターゲット命題、内側の∃除去ボックス内の∃導入で導入)

こういった変数の名前と型(変域、所属する集合)、そしてスコープ(有効範囲)の管理がとても大事です。変数に名前・型・スコープがあること、スコープは入れ子のブロック構造になること -- このへんはプログラミング言語と同じです。自然言語で適切に表現するのは難しいです。

だから、機械可読で、機械(ソフトウェア)でチェック可能な人工言語で証明を書くほうがいいと僕は思うのですが、残念ながら、広く実用に耐える証明支援系は存在しません。

こうすればCoqに入門できそうだ (誰も書かないCoq入門以前 5)」:

Coqに関する情報はけっこう多いのですが、ゲームとして遊び始めるための良い説明は少ないです。多くの人が入門的な解説を試みてはいますが、Coqの入門的な説明はとても困難だと思います。

Isabelleについて: 証明支援系は何を目指し、どこへ向かうのか」:

Isabelleが世の趨勢と離れるのか? という話をしてますが、有り体に言えば、もともとIsabelleは独特の文化を持った癖の強い処理系で、利用者は特殊な人々です。証明支援系を使いたくても、Isabelleを避ける人はいるでしょう。僕自身、Isabelleは「ダメだこりゃ」と思った1人です。

Mizar、嫌いじゃないんだけどな」:

僕はほんとに「もったいない」と思っています。システムとコミュニティがこのままだと、せっかく蓄積した膨大なライブラリもあまり活用されないままに朽ちていく懸念さえあります。それはあまりにも「もったいない」。

Globularの使い方 (1)」:

3次元ビュー、まともなアニメーション機能、5次元以上の正しい計算モデルなどは(ユーザーなら)誰でも欲しいでしょうが、実現するのは何年先でしょうか? このソフトウェアの性格からいって、10年、20年のスパンで進化と成長を見守るべきでしょう。

おわりに

自然数の大小順序だけでも、まだネタはありますし、もう少し練習問題があったほうがいい気もします。全称記号∀に関する説明が不足してるし、∀と∃の関係も述べていません。が、長くなるので今回はこのくらいにしておきます。

論理の教科書には、推論バーの積み重ねで証明が出来るかのごとくに書かれていますが、それだけでは不十分です(「自然演繹はちっとも自然じゃない -- 圏論による再考」参照)。ボックス(ブロック)の入れ子構造と、変数のライフタイム管理も必要です。

とりあえず、∃除去ボックスのテンプレートを使えるようにしましょう。慣れるまでは、変数のスコープに意識を向け、冗長でも律儀に変数をリネームしましょう。


続きがあるよ。

*1:記号'|-'は構文論的な真(公理か証明済み)を主張します。一方、記号'|='は意味論的な真を主張します。

*2:「何言ってるか(書いていあるか)よく分からない」ときは、文脈を共有できてないことが多いです。

*3:サマンドの訳語に「加数」というのがあるようですが、あんまり聞かないですね。

*4:固有変数〈eigenvariable〉、またはパラメータと呼ぶようですが、あまり使われない言葉なので、ボックス内変数にしておきます。

*5:同じ変数の使い回しをしないと、文字が足りなくなってしまうので、実際的には使い回しをせざるを得ない事情があります。

*6:変数水増しオペレーターの効果も考えると、まったく同じ命題を2回書いているのではありません。見た目は同じでも議論域〈domain of discourse〉は変わっています。変数水増しオペレーターについては、「存在記号の除去規則について考える」を参照。

hitotakuchanhitotakuchan 2018/06/14 12:02 私は最近一人だけですが数学の個別指導をしていて、この辺りの厳密な演繹ルールを教えるのに Coq を使いました。
彼は最終的には量化子も含めちゃんと使えるようになったので指導法としてよかったと考えています。

最終的には、演繹ルールの厳密な運用よりも教科書にある自然言語で書かれた定義を、論理式として正確に表現する能力の方が獲得が難しいという結論に至っていて、こちらの方はどうやって指導していけばいいのか解決策を見いだせていません。

m-hiyamam-hiyama 2018/06/14 12:12 hitotakuchanさん、
> 演繹ルールの厳密な運用よりも教科書にある自然言語で書かれた定義を、論理式として正確に表現する能力の方が獲得が難しいという結論に至っていて、

そう、そう、そう。まったくそのとおり!
だいたい僕自身が、日本語と形式言語の翻訳が出来ません。
この記事の半形式的証明を、日本語にエンコードすることも(不可能でないけど)難しいし、負担だと思います。

(一般の日本語ではなくて)論理的な内容を記述する日本語自体をフォーマルに構文定義しないとダメかな、とか思っています。

2018-06-12 (火)

謎の食券販売機@渋谷

| 14:59 | 謎の食券販売機@渋谷を含むブックマーク

以前、松屋の食券販売機を話題にしたことがあります。

上記記事は、対話的機械としての“ユーザーインターフェースの悪さ”を指摘したものです。

最近、見た目も振る舞いも謎な食券販売機を渋谷で見かけました。


渋谷の「大勝軒まるいち」は、本家「東池袋大勝軒」山岸氏の最後のお弟子さんのお店だそうです。僕は、東池袋大勝軒に行ったことはありますが、どんな味だったかハッキリとは覚えてないので、「まるいち」と本家を比較して云々はできません。が、つけ麺おいしかったです。

さて、その「まるいち」の食券販売機がこれです。

まず、最初のツッコミポイントは、お釣り出口(↓)です。いったい、どっちからお釣りが出るんじゃい?

結果を言うと、上のほうからお釣りが出ました。下の方の出口は変な突起がついていて、なんなんだか分かりません。

この自販機は、完全に明示的な指示をしないと動きません。例えば千円札を入れて、950円注文し、50円以下のメニュー項目がなくても、[発券]ボタン(↓)を押さないと食券が出てきません。無事に食券が出てきても、明示的に[おつり]ボタン(↓)を押さないとお釣りが出てきません。

僕は、発券したらお釣りは出てくるもんだと思い込んでいたいので、しばらく待ってしまいました。いつまでたってもお釣りが出てこないので[おつり]ボタンの存在に気付いた次第。

ソフトウェア部分(液晶パネル)には、キャンセルがなかったような気がします(記憶のみ)。そこで、存在感のあるこのキャンセルレバー

表示を見る限り、コインのキャンセル(返却)にしか使えない感じです。お札のキャンセルはどうしたらいいんでしょう。(今度行ったら、お札のキャンセルに挑戦してみます。)

通りすがり通りすがり 2018/06/19 02:48 下のお釣り出口は、お札が出てくるのじゃないかな、と思いました。

m-hiyamam-hiyama 2018/06/19 10:13 通りすがりさん、
なるほど、そうですね。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20180612