Wikipediaで抽象代数学のマグマを読んでみよう

ゲーム制作のネタにもなるかもしれない。よくできてるもんだ。

#今回の記事

自然数は　前に書いた。

「Wikipediaのペアノの公理を読んでみる」 http://qiita.com/muzudho1/items/3a743168dc12b00a2d96


次は　なんか「最も簡単なものはマグマであり」と書いてるし、マグマを読んでみよう。

Wikipedia 「抽象代数学」
https://ja.wikipedia.org/wiki/%E6%8A%BD%E8%B1%A1%E4%BB%A3%E6%95%B0%E5%AD%A6

以下、Wikipedia に書いてあることを単に　わたしが読んで　言い方を変えて　書いただけ。**数学的な用語を知らないので　説明の仕方が違って良いのではないか。**
間違っているところがあれば　誰かが教えてくれるだろう……。

その前に。

数がいっぱいある中で……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a1b1.png?raw=true)

#二項演算
２つのバケツを選んで、
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a1b2.png?raw=true)
何か計算しようとすることを　**二項演算**（にこうえんざん）　と呼ぶと誰かが決めてるようだ。真似しよう。

マグマは　二項演算で出てくる。

二項演算以外に　何があるかというと、

##単項演算
バケツを１つだけ選んで、
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a1b3.png?raw=true)
このバケツを　どうにかしようとする **単項演算** (たんこうえんざん)　と、

あとは

##多項演算
３つ以上のバケツを選んで、
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a1b4.png?raw=true)
これらのバケツで　何か計算しようとすることを **三項演算** (さんこうえんざん） と呼ぶようだ。

３つ以上は　キリがないので　**多項演算** (たこうえんざん) と呼べばいいのではないか。

で、単項演算とか　多項演算は　忘れるとして、二項演算に戻る。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2.png?raw=true)

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b1.png?raw=true)
「なんで　二項演算だけ　特別なんだ……。七項演算のマグマは無いのか……」

とりあえず　二項演算だけ見ていく。

#もう　こっから　むずかしい
絵に描くのも大変なので描かないが、数字は０～６の他にも７以上とかがあるとする。

そして　バケツに名前を付ける。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b3.png?raw=true)
**エックス・バケツ**　と、　**ワイ・バケツ**　があることにする。別に　うさぎさんバケツ、くまさんバケツでも良かった。いや、むしろ　うさぎさんバケツ、くまさんバケツの方が良かった。

あと、普段の算数・数学を忘れてもらうために　数字を　いったん　宇宙語に置き換える。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b4.png?raw=true)

そしてこの忙しい時に　何か黒い物体が降りてくる。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b5.png?raw=true)
この黒い物体と　意志の疎通は取れるのか……。

そのとき不思議なことが起こった。　黒い物体は光り輝き　１枚の風呂敷へと変わった。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b6.png?raw=true)

で、なんか
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b7.png?raw=true)
エックス・バケツ　チームが横に、　ワイ・バケツ　チームが縦に並んだ。

なるほど、この表があれば　どんな二項演算でも答えは　風呂敷に書き込めるかもしれない、例えば……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b8.png?raw=true)
わたしのキーボードでは　打ち込めないが、x と y を使って　●　という計算をした答えは　緑色に光っているところに　答えがあるだろう。描くのが大変なので描かないが……。

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b9.png?raw=true)
「七項演算だったら　表を描くのが　大変だったところだ……」

##で、要点としては
何が　**マグマ**　なのかというと……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b10.png?raw=true)
**宇宙語と　宇宙語を　計算した答えは　また同じ　宇宙語**　になることらしい。

それの何が嬉しいのかというと……。

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b11.png?raw=true)

**計算した答えを使って　また　計算　できる**　ことだ。　嬉しくない……。

##で、もっと単純に考えれば
まだ、普段の　算数・数学　の癖　が残っているかもしれない。もっと単純に考えよう。

宇宙語と　宇宙語　を計算した結果を　**さっきのは無しにして　もう一度　考え直して**　表に埋めてみる。

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b12.png?raw=true)
文字列連結じゃないか……。

確かに C#言語なんかでも

    string c = "a" + "b";

とでも書けば c の内容は "c" ではなくて "ab" だ。

#計算順序を　かっちり指定することが必要
で、この　マグマ　とかいうやつ。

    "a" ● "b" ● "c"

とか書かれていても、

- "a" ● "b" を先に計算して、そのあと "ab" ● "c" を計算するのか、
- "b" ● "c" を先に計算して、そのあと "a" ● "bc" を計算するのか、

決まりがないので計算できない。普段の数学の真似をして、丸かっこを付けるものとする。

    ( "a" ● "b" ) ● "c"

    "a" ● ( "b" ● "c" )

の、どっちかになる。

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a2b13.png?raw=true)
「あれっ？　( "a" ● "c" ) ● "b" とか、 "a" ● ( "c" ● "b" ) とか、
( "c" ● "b" ) ● "a" とかは？」

ここでは　計算順序の話しなので、 "a" ● "b" ● "c" は固定で、丸かっこを入れる場所だけが違う。

例えば

    "a" ● "b" ● "c" ● "d"

だと、

    ( "a" ● ( "b" ● ( "c" ● "d" ) ) ) // 3 2 1

    ( "a" ● ( ( "b" ● "c")  ● "d" ) ) // 3 1 2

    ( ( "a" ● ( "b" ● "c") ) ● "d" ) // 2 1 3

    ( ( ( "a" ● "b" ) ● "c" ) ● "d" ) // 1 2 3

    ( ( "a" ● "b" ) ● ( "c" ● "d" ) ) // 1 3 1 ※1はどっちが先でも同じ

ぐらいの順がありそう。

で、これを絵に描くと
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a3.png?raw=true)
二分木だよね、ということが言いたいんじゃないか。誰かが書いた Wikipedia。

##(追記)丸かっこ
「計算結果がどれも同じじゃないか？」って？　**違う違う。**

もう少し　Wikipedia に書いてある通りに意訳すると、計算結果には　息継ぎの切れ目のようなものがある。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702251416a4b2.png?raw=true)

「真っ赤な食堂のテーブルの上の花瓶に挿している花」という文があったとして　赤いのは食堂なのかテーブルなのか花瓶なのか花なのか、というように日本語には　係り結び　のようなものがある。マグマには　係り結びのルールが無いので　丸かっこのようなものが必要。

###逆に言うと
日本人は　日ごろから abcd のような日本語の文を耳から聞いて
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a3.png?raw=true)
丸かっこも使わずに　文脈や違和感から　abcdのどれとどれがくっつくのか　５パターンぐらい見分けられたり　間違ったりするということだ。

マグマには　これができない。

#休憩
マグマの全部を　再説明し直せていないんだが　夜中になったので　再説明を終わる。

マグマの要点を復習すると、**宇宙語と　宇宙語で計算したら　また宇宙語**、それ以外はルールが決まってない、あと説明する時間が足りてない何か。

#（以下、追記）で、マグマとか１個　知ってても意味ない
なんか　もう１個　マグマを見つけたとする。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702242231a5.png?raw=true)
なんか　マグマにも　西洋っぽいのもあれば　アジアンなものもあるのだろう。もしかすると　エジプトかもしれない。

##重要なのは
で、ここで重要なのは……
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a6.png?raw=true)
どうも　**この別々のマグマは　別の計算をしようとしている**　ようだ。わたしには分かる。キーボードで宇宙語を打ち込めないんだが　ここで仮に　左の宇宙語を　**うさぎ語**、　右の宇宙語を　**かめ語** と名付けるとし、そして　何かやっているかわからないがそこでの何かの計算を　**うさぎ算**　**かめ算**　と呼ぶとしよう。

##うさぎ算、かめ算は　同じだったら話が楽すぎる
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a7.png?raw=true)

うさぎ算と　かめ算は　ぜんぜん同じに見えない計算とする。まあ何か　違う理屈で　計算が行われるのだろう。

じゃあ　ここに　もうひとつ　**いぬ算**　というものを用意するとする。

##いぬ算を中継すると　どうよ
左のうさぎと、右のかめ　では　ぜんぜん　つかみどころがなかったものが……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8.png?raw=true)
いぬ算　を中継させることで、計算結果に一致がみられるような、そんな　直訳の翻訳装置みたいな計算方法があるかもしれない。

そんな　いぬ算　みたいなものを発見しようものなら　計算の応用範囲は　他分野に広がっていくだろう。

では、この　いぬ算　では、何が起こっているのか。

###一応　いぬ算の順序の例
なんか　見にくいので……。

1
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b2.png?raw=true)

2
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b3.png?raw=true)

3
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b4.png?raw=true)

4
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b5.png?raw=true)

5
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b6.png?raw=true)

6
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b7.png?raw=true)

7
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b8.png?raw=true)

8
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b9.png?raw=true)

9
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b10.png?raw=true)

10
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a8b11.png?raw=true)

こんな感じで計算すると、いつも計算結果がイコールになるとする。

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a9.png?raw=true)
「なぜ、　犬（１兎２）＝犬（１）亀　犬（２）　だけ特別なのか……？」

わたしが決めた学問じゃないんで知らないが、
犬（１）亀　犬（２）＝犬（１兎２）　も　言ってることは同じ　なんで、
多分、兎　と　亀　の表記を省略したときに　２つを見比べると……。

    犬（１ ２）      ＝ 犬（１） 犬（２）

    犬（１） 犬（２）＝ 犬（１ ２）

左にある方が　犬（１ ２） の方が見た目もすっきりしているし、そっちの書き方を優先したんじゃないだろうか、**知らんけど。**

#Wikipediaでの例を読んでみよう。
次のように解説がある。

Wikipedia 「Homomorphism」
https://en.wikipedia.org/wiki/Homomorphism

    e^(1+2) = e^1 * e^2    // 兎+　亀*　犬e^

    ln(1*2) = ln(1) + ln(2)    // 兎*　亀+　犬ln( )

へぇ、確かにイコールだ。うさぎ、かめ、いぬ　がいる。
また、もっと視覚的な説明がされている。

##Wikipediaでは数学は英語ページの方が充実しているのか……。
足し算と、掛け算を並べても　何も嬉しくないが……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a10b2.png?raw=true)

こんな風に　掛け算の方を　１から始まる２の倍数にすると……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a10.png?raw=true)
計算方法も　計算結果も異なるが、**おんなじ絵柄の絨毯になっている。** 絵に描いた方がいいだろうか。

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a10b3.png?raw=true)

ここで、下の図で説明するが、足し算表の数字を　足し合わせたあと　２のＸ乗　（いぬ算）にすると、　右の掛け算表の　２のＸ乗した列と行だけ掛け合わせると、同じ計算をしていることになる。

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a10b4.png?raw=true)

このように　いぬ算　のようなものを１つ仲介することで　おんなじ計算ができるようになるとき、**準同型**、英語で言うと **Homomorphism** (ホモモーフィズム)と言うようだ。

###誰が見つけたんだ　こんなの……。
２つのマグマがあれば、準同型　を作れるような　いぬ算　がないか探してみるのもいいのかもしれない。

まだマグマの全部　解説してないんで、時間があるときに　また　この記事に続けて書く。

#で、うさぎ語
そこらへんを　ほっつき歩いている　うさぎ星人に、「全部の文字を集めてこい」といって寄こさせたのが下の図だ。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b2.png?raw=true)
全部じゃないかもしれないが、とりあえず　集まった。水増しも無いようだ。

で、この文字セットを使って
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b3.png?raw=true)
電卓を作ろう。

＼　カタ、　カタ、　トンッ　／
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b4.png?raw=true)

文字の組み合わせによっては　ブザーが鳴って　計算できないこともあるかもしれない。なんて **不自由** なんだ。打ち歩詰めルールみたいだ。

もしかすると　この文字は　うさぎ語　の中では　数字ではないのかもしれない。

＼　カタ、　カタ、　トンッ　／
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b5.png?raw=true)

念入りに探す。もしかすると　片方が数字で、片方が文字かもしれない。ブザーが鳴っているのも　組み合わせのせいかもしれない。いろんな組み合わせも試す。


＼　カタ、　カタ、　トンッ　／
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b6.png?raw=true)

計算に成功したときは　なんのチャイムも　ファンファーレもならない。
こんな　**くそ地味な作業**　が好きなやつも世の中には存在する。

#うさぎ語　独自調べ
わたしが独自に調べたところによると、
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b7.png?raw=true)
うさぎ語の上図の９文字は　２文字間では　どのように組み合わせても　ＯＫ　のようだ。３文字の組み合わせでは**知らん。**

わたしは　うさぎ語の専門家ではないので　詳しいわけではないが、うさぎ語で書かれていない再説明ということで　読む人もいるのではないか。Qiita に書いておけば間違っていれば　誰か教えてくれるだろう。

よーし、**全域性** は確保された。

ところで……。

これは　ダメ　だったが……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b5.png?raw=true)

これは　ＯＫ　なようだ。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b8.png?raw=true)

うさぎ算とは　何なのか。分けわからん。

そういう **局所性** もあるうさぎ字　も含めると……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b9.png?raw=true)
さらに４文字増えるようが、この青い字を使うと　計算機が　ブー　と鳴ってしまう。マグマじゃない。

それに比べて　運よく　赤い字は　どう組み合わせても　また赤い字が出てくる。うまく完結してくれた。計算機の中だけでうまく　**閉じている**　とでも言おうか。マグマだ。

青い字も　もしかすると単項演算や多項演算だったら　閉じている字　なのかもしれないが……。

うさぎ星人には説明しなかったが　今回　欲しいのは
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b10.png?raw=true)
この　うさぎ算　で　両脇に置ける　二項演算用の数字だけだ。

とりあえず、上図の　赤いうさぎ字を　数字　と呼ぶことにする。

今　やりたいのは、かめ語の電卓の　亀ボタンを……、
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b11.png?raw=true)

この兎ボタンで……、
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a11b10.png?raw=true)

ハッキングしようというわけだ。

##まとめておくと……。
７０ミリリットルのポリ袋　Ｍ　があるとする。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a12b2.png?raw=true)

で、この中に　３５ミリリットルのポリ袋　Ｎ　が入っていたとする。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a12b3.png?raw=true)

このポリ袋は、どんなに中を開けても　ポリ袋しか入っていない。

##ポリ袋論
で、埼玉に住んでいると **埼玉県民** と呼ばれるわけだが、埼玉県民の中には **新座市民** というのが入っている。

この袋の中身を　もっと開けていくと **区民** や **世帯** が出てきて、最後には **世帯員** が出てくるかと思う。

ここで要点なのは　どんなに袋を **開けても** 山田〇郎とか　鈴木イ〇ロー　のような具体的な誰かは出てこないことで、**例えば誰か と問う** と、反町〇史　とか　藤井〇也　とかが出てくる。

「**開ける**」と「**問う**」は漢字は似ているが　別の操作だということを踏まえて、それと同じ理屈で……、

この何なのかわからない謎のポリ袋　Ｍ。　このポリ袋は例えば何か？　と問うてみよう。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a12b2.png?raw=true)

えっ、**問う** の？ 別にいいけど……。いっぱいあるんで少しだけ **答える** と……。
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a12b5.png?raw=true)
なんだ、マグマな数だったのか……。これは書き切れない。

じゃあ、Ｎ　のポリ袋って　例えば何？
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a13.png?raw=true)

えっ、**問う** の？ 別にいいけど……。色んなパターンがあるけど例えば　こんなパターンはどうだろうか？
![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a13b2.png?raw=true)
ゾロ目か～。

ゾロ目以外のパターンもあるかもしれないが。

なんにしろ　こういうのを……。

![Gazo](https://github.com/muzudho/HowToMakeGame/blob/master/img/2017-02/201702252125a13b3.png?raw=true)
ＮはＭの　**部分集合**　と呼ぶのらしい。

どうも　ＭはＮを兼ねる　ことを数学的に言うとそうなるらしい。

で　Ｍ　が　マグマ　なら、　Ｎ　が　**部分マグマ**　とか言うのも、なんか　そのまんま　だ。

続く。

（2017-03-16 追記: 書く時間がないじゃないか。時間くれ）