tsujimotterのノートブック

日曜数学者 tsujimotter の「趣味で数学」実践ノート

足し算の繰り上がりと群コホモロジー

以前「足し算の繰り上がりと群コホモロジーが関係している」という話が、Twitter上で話題になったことがありました。

大元のツイートは、このツイートだったと思います。

関連するツイートとして、次のようなものもありました。


当時は理解できなかったのですが、久しぶりに思いだして自分なりに考えてみたところ、結構理解できた部分がありました。せっかくなのでまとめてみようと思って書いています。

「こんなところに群コホモロジーが関連してくるの!?」というところを楽しんでいただければと思います。

今回の内容は「群コホモロジー」が関係しますので、tsujimotterのノートブックでいうと以下のタグの記事が参考になります。今回は定義をちゃんと書かないので、より詳細に知りたい方は参考にしてください。
tsujimotter.hatenablog.com

特にこの2つの記事が関係すると思います。
tsujimotter.hatenablog.com

tsujimotter.hatenablog.com



二進法の足し算

元の話では十進法の足し算で考えていましたが、十進法は組み合わせが多くて難しいので、今回は 二進法の足し算 に限定して考えたいと思います。
(まったく同じ考え方で十進法も考えることができますのでご安心ください。)


二進法で一桁の足し算を考えるとき、次の4通りを考えれば十分です:

f:id:tsujimotter:20210311154041j:plain:w400


一の位の計算は「 \bmod{2} の足し算」になりますので、 \mathbb{Z}/2\mathbb{Z} の普通の足し算を考えればよいでしょう。

一方で二の位(十進法でいうところの十の位)の部分、これを 繰り上がり と言います。「繰り上がりの計算はいったいどのように解釈できるでしょうか?」というのが今回のテーマです。


少しフォーマルに書くと、繰り上がりの計算は  \mathbb{Z}/2\mathbb{Z}(一の位)の2つの元に対して、 \mathbb{Z}/2\mathbb{Z}(十の位)の元を与える写像だと思うことができます。

すなわち、写像  c\colon \mathbb{Z}/2\mathbb{Z} \times \mathbb{Z}/2\mathbb{Z} \to \mathbb{Z}/2\mathbb{Z} を次のように定めるということです:

 \begin{cases} c(0, 0) = 0 \\
c(0, 1) = 0 \\
c(1, 0) = 0 \\
c(1, 1) = 1 \end{cases}

引数にあたる  \mathbb{Z}/2\mathbb{Z} は一の位、行き先にあたる  \mathbb{Z}/2\mathbb{Z} は十の位に対応することに注意します。(少しややこしいですね。)


実は、この写像  c2-コサイクル であるという性質を持っています。

 c が2-コサイクルであるとは、任意の  x, y, z \in \mathbb{Z}/2\mathbb{Z} に対し、 c

 c(y, z) + c(x, y + z) = c(x + y, z) + c(x, y) \tag{1}

を満たすことを言います。

この式は、群コホモロジーの定義を知らないとなかなか意味不明かと思いますが、とりあえず「この式を満たす写像が2-コサイクルなのだ」と受け入れていきましょう。

実際、8通りすべてに対して、成り立つことが以下の表からわかります(ぜひ皆さんも確認してみてください):

 x y z c(y, z) + c(x, y+z) c(x+y, z) + c(x, y)
 0 0 0 0 + 0 0 + 0
 0 0 1 0 + 0 0 + 0
 0 1 0 0 + 0 0 + 0
 0 1 1 1 + 0 1 + 0
 1 0 0 0 + 0 0 + 0
 1 0 1 0 + 1 1 + 0
 1 1 0 0 + 1 0 + 1
 1 1 1 1 + 0 0 + 1

というわけで、繰り上がりの写像  c\colon \mathbb{Z}/2\mathbb{Z}\times \mathbb{Z}/2\mathbb{Z} \to \mathbb{Z}/2\mathbb{Z} が2-コサイクルであった、というのが一つ目の結論です。


群の拡大

なんで、2-コサイクルが出てくるのか、という点をもう少し掘り下げていきましょう。

ここには 群の拡大 というものが関係しています。一般に群の拡大とは、短完全列:

 0 \longrightarrow M \xrightarrow{\; i \;} E \xrightarrow{\; \pi \;} G \longrightarrow 0 \tag{2}

のことを指します。(あるいは、 E を主役にして、 E のことを  M G による群の拡大、ということもあります。)

特に、 A をアーベル群とし、中心拡大と呼ばれるものを考えます。中心拡大とは、式  (2) の短完全列において、 M E中心(center)に入っていることをいいます。

今回は、 M, E, G すべてアーベル群を考えているので、この仮定は自動的に満たされています。

2021.03.12追記:中心拡大の仮定を入れるのを忘れていましたので追記しました。他にも仮定が抜けていたらすみません。


さて、今回のケースにおいては、次のような群の拡大を考えることになります:

 0 \longrightarrow \mathbb{Z}/2\mathbb{Z} \xrightarrow{\; \times 2 \;} \mathbb{Z}/4\mathbb{Z} \xrightarrow{\; \bmod{2} \;} \mathbb{Z}/2\mathbb{Z} \longrightarrow 0 \tag{3}

これから式  (3) の意味を説明していきますが、 \mathbb{Z}/2\mathbb{Z} が2つ出てきて少しわかりづらいですね。群の拡大  (2) の記号を用いて「 M の方の  \mathbb{Z}/2\mathbb{Z}」とか、「 G の方の  \mathbb{Z}/2\mathbb{Z}」というように呼んでいきたいと思います。


まず  \mathbb{Z}/4\mathbb{Z} ですが、二進法2桁の数  0 = 00, \; 1 = 01, \; 2 = 10, \; 3 = 11 を表す加法群です。

 \mathbb{Z}/4\mathbb{Z} = \{ 00, 01, 10, 11 \}

ここからは  \mathbb{Z}/4\mathbb{Z} の元をずっと二進法により表すことにします。


次に「 M の方の  \mathbb{Z}/2\mathbb{Z}」ですが、これは「二の位の値」を表します。二の位は「二進法2桁の数」として考えるとき

 0 \longmapsto 00, \;\; 1 \longmapsto 10

と対応しますが、これがちょうど2倍写像になるわけですね。これにより2倍写像

 \mathbb{Z}/2\mathbb{Z} \xrightarrow{\;\times 2\;} \mathbb{Z}/4\mathbb{Z}

が定まるというわけです。集合の元の対応関係を図に表すと

f:id:tsujimotter:20210311162738j:plain:w200

ということになります。


今度は「 G の方の  \mathbb{Z}/2\mathbb{Z}」ですが、こちらは「一の位の値」を表します。これは2倍写像のCokerになっていて、2倍写像で送った「 M の方の  \mathbb{Z}/2\mathbb{Z}」で  \mathbb{Z}/4\mathbb{Z} を割った群となります。

この群の割り算は「二の位を無視して、一の位が同じものを同一視する」ことに相当するので、 \bmod{2} 写像であったというわけですね:

f:id:tsujimotter:20210311163729j:plain:w200


以上により、群の拡大  (3) の全容がわかったかと思います。図に表すとこうなります:

f:id:tsujimotter:20210311164046j:plain:w400


二進法2桁の足し算とは、 \mathbb{Z}/4\mathbb{Z} における群演算を考えていることに他なりません。

群の拡大  \mathbb{Z}/4\mathbb{Z} の演算を、一の位  G = \mathbb{Z}/2\mathbb{Z} と二の位  G = \mathbb{Z}/2\mathbb{Z} によって記述するのが繰り上がりの演算だったと考えることができるでしょう。


ところで、 \mathbb{Z}/2\mathbb{Z} \mathbb{Z}/2\mathbb{Z} による群の拡大としては、もう一つ

 0 \longrightarrow \mathbb{Z}/2\mathbb{Z} \longrightarrow \mathbb{Z}/2\mathbb{Z} \times \mathbb{Z}/2\mathbb{Z} \longrightarrow \mathbb{Z}/2\mathbb{Z} \longrightarrow 0 \tag{4}

が考えられると思います。

しかし、この拡大は二進法の足し算には対応しません。なぜならば、二進法2桁の足し算は   \mathbb{Z}/2\mathbb{Z} \times \mathbb{Z}/2\mathbb{Z} の足し算にはならないからです。実際、 \mathbb{Z}/2\mathbb{Z} \times  \mathbb{Z}/2\mathbb{Z} の足し算は

 (0, 1) + (0, 1) = (0, 0)

ですが、二進法の足し算が

 01 + 01 = 00

になったらおかしいですよね。


群の拡大と2-コサイクル

いよいよ群の拡大と2-コサイクルの関係について説明しましょう。一般に、群の拡大が与えられると、そこから2-コサイクルを導く具体的な手順があるのです。

まず、群の拡大

 0 \longrightarrow M \xrightarrow{\; i \;} E \xrightarrow{\; \pi \;} G \longrightarrow 0 \tag{2再掲}

に対して、切断  s \colon G \to E を考えます。

切断とは、 \pi \circ s = \text{id} となるような  s のことです。 \pi E から  G への「一方通行」ですが、逆に  G の元を  E に持っていく写像を考えたいということですね。ただし、 G から  E に戻したものを、再度  \pi で送ったときに元に戻って欲しい、という条件が付いています。


実際、群の拡大

 0 \longrightarrow \mathbb{Z}/2\mathbb{Z} \xrightarrow{\; \times 2 \;} \mathbb{Z}/4\mathbb{Z} \xrightarrow{\; \bmod{2} \;} \mathbb{Z}/2\mathbb{Z} \longrightarrow 0 \tag{3再掲}

に対して、切断  s \colon \mathbb{Z}/2\mathbb{Z} \to \mathbb{Z}/4\mathbb{Z}(定義域は  G の方の  \mathbb{Z}/2\mathbb{Z})を次のように定めます:

 \begin{cases} s(0) = 00 \\
s(1) = 01 \end{cases}

定義域の  \mathbb{Z}/2\mathbb{Z} は「一の位」を表しますので、これをそのまま二進法の数に埋め込んだ感じですね。

f:id:tsujimotter:20210311165450j:plain:w200


二の位を二倍写像  i で送ったものを  i(\mathbb{Z}/2\mathbb{Z}) = \{i(0) + i(1) \} = \{ 00, 10 \} とし、一の位の元を  s で送ったものをそれぞれ  s(0), s(1) とします。

これらを用いて  \mathbb{Z}/4\mathbb{Z} = \{00, 01, 10, 11\} を、次のように表すことができます:

 \begin{align} \mathbb{Z}/4\mathbb{Z} &= \{ 00, 10 \}\; \sqcup \; \{01, 11\} \\
&= \{ i(0) + s(0), \; i(1) + s(0) \}\; \sqcup \; \{i(0) + s(1), \; i(1) + s(1)\} \\
&= \left(i(\mathbb{Z}/2\mathbb{Z}) + s(0) \right) \;\; \sqcup \;\; \left(i(\mathbb{Z}/2\mathbb{Z}) + s(1)\right) \end{align}

要するに一の位と二の位を別々に考えている感じですね。


この集合の中で、1桁の数同士の演算を考えます:

 s(0) + s(0) = 00 + 00 = 00 = \mathbf{i(0)} + s(0)
 s(0) + s(1) = 00 + 01 = 01 = \mathbf{i(0)} + s(1)
 s(1) + s(0) = 01 + 00 = 01 = \mathbf{i(0)} + s(1)
 s(1) + s(1) = 01 + 01 = 10 = \mathbf{i(1)} + s(0)


たとえば2行目でやっていることは

 00 s(0))と  01 s(1)

を足し合わせると、 00+01 = 01 となり、これは

二の位が  0 i(0))で一の位が  1 s(1))の数

になるよ、という計算をやっていることになります。

単に1桁同士の数の和を計算しているだけなのですが、記号を変えると途端によく分からなくなりますね。


ここで、太字で書いた部分  \mathbf{i(0), i(0), i(0), i(1)}i^{-1} で戻して並べて  \mathbf{0, 0, 0, 1} とします。これを用いて写像  c\colon \mathbb{Z}/2\mathbb{Z} \times \mathbb{Z}/2\mathbb{Z} \to \mathbb{Z}/2\mathbb{Z} を作ります:

 \begin{cases} c(0, 0) = \mathbf{0} \\
c(0, 1) = \mathbf{0} \\
c(1, 0) = \mathbf{0} \\
c(1, 1) = \mathbf{1} \end{cases}


この写像  c が群の拡大  (3) から作られる2-コサイクルとなります。実際、2-コサイクルになっていることは計算すればすぐにわかります。

というかそもそも作り方からして、  \mathbb{Z}/2\mathbb{Z}(一の位)の2つの元に対して、 \mathbb{Z}/2\mathbb{Z}(十の位)の元を与える写像だったわけで、これは繰り上がりの写像そのものですね!!

繰り上がりの写像が2-コサイクルになっていることは先ほど確認したので、これは当然2-コサイクルになっているわけです。


もっというと、一般に群の拡大(中心拡大)

 0 \longrightarrow M \xrightarrow{\; i \;} E \xrightarrow{\; \pi \;} G \longrightarrow 0 \tag{2再掲}

に対して、まったく同様の手順で写像  c(E) \colon G\times G \to M を作ることができます。これが2-コサイクルになることは一般的に言えるので、このことから繰り上がり写像が2-コサイクルであったというわけなんですね。

こんな仕組みが裏にあったというわけです。面白いですね!


ここまでの話は

群の中心拡大  0\to M \to E \to G \to 0 から、2コサイクル  c(E)\colon G\times G \to M が作れる

という話でした。

逆方向もいうことができます。

2コサイクル  c\colon G\times G \to M から、群の中心拡大  0\to M \to E_c \to G \to 0 が作れる


足し算の例でいうと、与えられているものは群  G = \mathbb{Z}/2\mathbb{Z}(一の位)、 M = \mathbb{Z}/2\mathbb{Z}(ニの位)および2-コサイクル  c\colon G\times G \to M でした。

ここで、集合として  E_c

 E_c := M \times G

で定めます。(あくまで、集合としてなので、この段階では演算は考えていません。)

この集合に、次のような「加法」の演算を入れます。 x, y \in \mathbb{Z}/2\mathbb{Z}(二の位)、 z, w \in \mathbb{Z}/2\mathbb{Z}(一の位)に対し

 (x, z) + (y, w) := (x+y + \underline{c(z, w)}, \; z+w)

とします。下線部分の   \underline{c(z, w)} がなければ単なる直積  \mathbb{Z}/2\mathbb{Z} \times  \mathbb{Z}/2\mathbb{Z} の加法なわけですが、下線の部分が入ることによって、ニの位の計算に一の位からの「繰り上がり」が入ってきたことになるわけです。これによって、 \mathbb{Z}/4\mathbb{Z} の加法の演算が復元されたというわけなのですね。


2次の群コホモロジーとの関係

最後に、群コホモロジーとの関係について触れておきます。

2-コサイクルといえば、2次の群コホモロジーの元なのでした。より正確にいえば、2次の群コホモロジーとは2-コサイクル全体を2-バウンダリ全体で割った群のことでした。

 H^2(G, M) = Z^2(G, M) \big/ B^2(G, M)

なので、2-コサイクルの同値類が2次の群コホモロジーの元というわけですね。


一方、群の拡大の方にも、同型を考えることができます。適切に同型類を定めることによって、次の事実が一般に成り立ちます:

 M G による群の中心拡大の同型類全体と、2次の群コホモロジー  H^2(G, M) が一対一対応する


今回のケースでいうと、2次の群コホモロジー  H^2(\mathbb{Z}/2\mathbb{Z}, \mathbb{Z}/2\mathbb{Z}) は位数2となっています。つまり、自明な元と非自明な元があるわけです。

群の拡大

 0 \longrightarrow \mathbb{Z}/2\mathbb{Z} \xrightarrow{\; \times 2 \;} \mathbb{Z}/4\mathbb{Z} \xrightarrow{\; \bmod{2} \;} \mathbb{Z}/2\mathbb{Z} \longrightarrow 0 \tag{3再掲}

に対応する2-コサイクル  c(\mathbb{Z}/4\mathbb{Z}) \colon  \mathbb{Z}/2\mathbb{Z} \times  \mathbb{Z}/2\mathbb{Z} \to  \mathbb{Z}/2\mathbb{Z}(繰り上がり写像)は、非自明な元に対応します。


一方で、

 0 \longrightarrow \mathbb{Z}/2\mathbb{Z} \xrightarrow{\; \times 2 \;} \mathbb{Z}/2\mathbb{Z} \times \mathbb{Z}/2\mathbb{Z} \xrightarrow{\; \bmod{2} \;} \mathbb{Z}/2\mathbb{Z} \longrightarrow 0 \tag{4再掲}

の方は、自明な2-コサイクルに対応するようです。

 H^2(\mathbb{Z}/2\mathbb{Z}, \mathbb{Z}/2\mathbb{Z}) の元としては、この2つだけということですね!



まったく同じように、群の拡大

 0 \longrightarrow \mathbb{Z}/10\mathbb{Z} \xrightarrow{\; \times 10 \;} \mathbb{Z}/100\mathbb{Z} \xrightarrow{\; \bmod{10} \;} \mathbb{Z}/10\mathbb{Z} \longrightarrow 0

に対して、上と同じ手順で2-コサイクル与えると、十進法1桁の足し算における繰り上がりを与えることができるはずです。興味がある人はぜひ考えてみてください。


小学校で習った足し算の繰り上がりって、数学的にはこんなに深かったのですね!

それでは今日はこの辺で!


参考文献(2021.03.12追記)

まだ最初の方しか読めてないのですが、こちらの論文が基本的な文献かと思います。

A Cohomological Viewpoint on Elementary School Arithmetic
Daniel C. Isaksen
https://www.jstor.org/stable/3072368

補足(2021.03.12追記)

 \mathbb{Z}/4\mathbb{Z}における加法の結合則を考えると、2-コサイクル条件は自然に出てくることに気づいたので、こちらに載せておきます:
(画像ですみません。)

f:id:tsujimotter:20210312220755p:plain:w500