メモ(数論20): 十六元数・八元数など

チラ裏 > 数論 i > メモ20

「チラ裏」は、きちんとまとまった記事ではなく、断片的なメモです。誤字脱字・間違いがあるかもしれません。

***

2024-01-12 十六元数の零因子 君は 0 を割ることができるか?

#数論 #十六元数 #FairyGlass #八元数


Cawagas & Gutierrez (2005) said, “The actual determination of the zero divisors of the sedenions is quite tedious and time consuming.” We disagree. We will show that in fact finding the 168 pairs of zero divisors is trivial and elementary, quite easy even if done manually. A sample PARI/GP script (not brute-force) is included to demonstrate this.

Using an interesting but rather complicated method, Robert P. C. de Marrais listed 168 pairs of sedenion zero divisors of the type (ab)(cd) = 0, where a, b, c, dQ = {±e0, ±e1, …, ±e7}. We’d like to note that based on the Cayley–Dickson process (ab)(cd) = (ac − d*bda + bc*), solving (ab)(cd) = 0 is simply solving the system of equations:
acd*b = 0, da + bc* = 0.

It is easy to see that, when a triple (abc) ∈ Q3 is fixed, the above can be uniquely solved for dQ if and only if (i) a, b, c are purely imaginary and linearly independent, and (ii) c ≠ ±ab. In practice, one can select any et as a, with 1 ≤ t ≤ 7 (7 options); any eu as b, with 1 ≤ u ≤ 7, u ≠ t (7 − 1 = 6 options); and any ev as c, with 1 ≤ v ≤ 7, v ≠ t, v ≠ u, c ≠ ±ab (7 − 3 = 4 options). For each triple (abc) selected this way, a valid d such that (ab)(cd) = 0 is determined as d = (ac)b = (cb)a. So we know that there are exactly 7 × 6 × 4 = 168 such pairs (or 168/2 = 84 pairs, depending on how you count them) no matter which of the 480 octonion multiplication tables is used. When a specific multiplication table is chosen (e.g. the classic one used by Graves and Cayley), it is trivial to actually write the 168 pairs, using the above-mentioned conditions and the formula d = (ac)b (see PARI/GP code). This elementary approach is possible because the octonions are a division algebra—more specifically, because the quasigroup Q is a Moufang loop.

Although there may be a few subtle points if you try to handle this in a totally elementary manner, our method is essentially so obvious that probably it is already known. We (re)discovered it in January, 2024, after seeing John Baez’s This Week’s Finds, Week 59, where he tries to prove that the “hexadecanions” are not a division algebra by showing that they have zero divisors, and incorrectly says (by quoting someone) that (e1, e4)(−1, e5) = 0. While this calculation is clearly erroneous, at first it was not clear how one can construct valid examples of zero divisors in an easy, simple way.


2 個の実数 A, B から複素数 A + Bi が定義されるように、2 個の複素数から四元数が定義され、2 個の四元数から八元数が定義され、2 個の八元数から十六元数が定義される。十六元数の見どころは「零因子」。二つの数 x, y はどちらも 0 ではないが、積 xy は 0 になる…という少し不思議な現象だ。

Cawagas たちは十六元数についての論文(2005年)の中で、168種(数え方によっては 84種)の零因子ペアを具体的に決定することは面倒で時間がかかると述べた。その見解は正しくないようだ。このメモでは、168ペアを構成する単純で初等的な方法を記し、それが必要十分であることを示す。アルゴリズムは明快で、手計算でも容易に実行可能。 PARI/GP によるサンプルスクリプトを添付する。


(コメント)
複素数は実数を2個
並べたようなもの…
四元数は実数を4個
並べたようなもの…
八元数は実数8個…
十六元数は16個…

「形」は超単純!


【1】 次の形で十六元数 x を表現できる:
  x = (a, b) ただし a, b は任意の八元数

〔補足〕 八元数とは? 虚数単位を e1, e2, … で表すと(これらはどれも相異なる虚数だが、一つ一つは普通の虚数 i と似た性質を持ち平方すると −1 になる)、八元数 a は次のように一つの実部と7種の虚数成分を持つ:
  a = a0 + a1e1 + a2e2 + a3e3 + a4e4 + a5e5 + a6e6 + a7e7
これを次のように、8次元ベクトル(8 個の実数を並べたもの)として略記することがある:
  a = (a0, a1, a2, a3, a4, a5, a6, a7)
同様に、もう一つの八元数
  b = (b0, b1, b2, b3, b4, b5, b6, b7)
を考えると、十六元数 x = (a, b) とは:
  x = ((a0, a1, a2, a3, a4, a5, a6, a7), (b0, b1, b2, b3, b4, b5, b6, b7))
これは16次元ベクトル…
  x = (a0, a1, a2, a3, a4, a5, a6, a7, b0, b1, b2, b3, b4, b5, b6, b7)
…と同一視され、ベタに書けば次のように15種の虚数成分を持つ数である。
  x = a0 + a1e1 + a2e2 + a3e3 + a4e4 + a5e5 + a6e6 + a7e7
   + b0e8 + b1e9 + b2e10 + b3e11 + b4e12 + b5e13 + b6e14 + b7e15
ここで b0, b1, … はただの変数名なので、虚数単位の番号に合わせて b0 = a8, b1 = a9, … と改名しても構わない。

y = (c, d) をもう一つの十六元数とすると、x と y の積は通常、次のように定義される(これは「定義」で「証明」ではないので、なぜ?と悩む必要はないのだが、この定義は、普通の四元数古典的八元数と互換性がある):

xy = (a, b)(c, d) = (ac − d*b, da + bc*)  ☆

ただしアスタリスクは共役を表す。八元数
  q = q0 + q1e1 + q2e2 + … + q7e7
の共役とは、実部が等しく虚部の符号が反対の数:
  q* = q0 − q1e1 − q2e2 − … − q7e7

補題1 実部 q0 が 0 なら q* = −q が成り立つ。特に虚数単位 e1, e2, …, e7 の共役は、それぞれ −e1, −e2, …, −e7

補題2 虚数単位の平方は −1 だから、ある虚数単位の逆数は、その虚数単位の符号を変えたもの。例えば:
  (e4)2 = e4e4 = −1
  だから −(e4e4) = (−e4)e4 = e4(−e4) = 1
つまり e4 と −e4 は互いに逆数。 4 番以外の虚数単位についても同様。

【2】 十六元数 x = (a, b) を構成する a, b が、どちらも(八元数の)虚数単位 e1, e2, …, e7 のどれかで、等しくはない(a ≠ b)としよう。例えば
  x = (e1, e2) とか x = (e7, e3)
のような十六元数を考える。

〔補足〕 八元数は
  a = a0 + a1e1 + a2e2 + a3e3 + a4e4 + a5e5 + a6e6 + a7e7
つまり
  a = (a0, a1, a2, a3, a4, a5, a6, a7)
の形の数で、各成分は任意の実数だから、
  a = (0, 0, 0, 1, 0, 0, 0, 0)
  = 0 + 0e1 + 0e2 + 1e3 + 0e4 + 0e5 + 0e6 + 0e7 = e3
のように、たまたま成分のほとんどが実数 0 の場合も、一つの八元数。一般には A + Bi の形を持つ複素数について、実部が 0 の 0 + 1i = i や 0 − 2i = −2i もやはり複素数(純虚数の複素数)だが、それと同様。ここでは「成分の前半に 1 が一つだけ、後半に 1 が一つだけあり、それ以外の成分は 0 の十六元数」を考えている。例えば:
  x = (e7, e3)
   = (0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0)

実は、この型の十六元数は全て零因子積の定義 ☆ を使って書くと、
  xy = (a, b)(c, d) = (ac − d*b, da + bc*) = (0, 0) = 0  ★★
を満たす y = (c, d) が存在して、c, d はどちらも
  集合 S = {±e1, ±e2, …, ±e7}
の元(つまり要素)。このことを c, d ∈ S で表す。集合の元を選ぶときは、複号(プラス・マイナス)の選択は自由とする。例えば c = +e1, d = −e7 のように ± の上下の符号を同時に選択選択の上下が不統一でもいい。他の文脈で ± や ∓ が並んでいる場合、特に断りがない限り、複号の上下は対応している(複号同順)。

〔例〕 A = ±1, B = ∓1 第一の選択肢は、上の符号を選んで A = +1, B = −1。第二の選択肢は、下の符号を選んで A = −1, B = +1。

上記の「存在して…」という主張を確かめるには、任意の x = (a, b) が与えられたとして、それを定数としてそれに対し xy = 0 を満たす y = (c, d) が存在すること――つまり c, d を未知数として ★★ に基づく次の連立方程式に解があること――を示す必要がある:
  ac − d*b = ac + db = 0  ‥‥①
  da + bc* = da − bc = 0  ‥‥②
ここで「純虚数の共役は元の数の符号を変えたもの」という性質(補題1)を使った。

【3】 具体例。古典的な八元数の「九九」が分かっていると話が早いが、知らなくても掛け算表を参照すれば、機械的にできる。八元数では、交換法則 pq = qp が保証されないことに注意: p に右から q を掛けること pq と、左から q を掛けること qp は一般には意味が異なる。

〔注〕 掛け算表を選ばないと具体例を提示できないので、ここでは一番普通の規則を使うが、実は八元数の「九九」には480種のバリエーションがある。バリエーションは「七つある虚数の番号の付け方」「空間内の座標軸の正負の定義」のようなテクニカルな問題で、このメモの本題とは関係ない。

定数 a = e1, b = e4 が与えられたとする。 c, d を未知数として①②を解きたい。仮に c = e2 を選ぶと①は:
  e1e2 + de4 = e3 + de4 = 0
  つまり de4 = −e3
両辺に (e4)−1 = −e4 を右から掛けると(逆数については補題2参照):
  (de4)(e4)−1 = (−e3)(e4)−1
  d = (−e3)(−e4) = e3e4 = e7
八元数の世界では、結合法則 (pq)r = p(qr) が保証されないが、 r が q の逆数の場合には、次の形の限定的な結合法則が成り立つ:
  (pq)q−1 = p(qq−1) = p⋅1 = p  命題3(イ)参照
左辺の (de4)(e4)−1 を d に変形できたのは、そのため。

今求めた d = e7 は②も満たす:
  da − bc = e7e1 − e4e2 = −e6 − (−e6) = 0

よって (c, d) = (e2, e7) は①②の解: この具体例には、確かに(少なくとも一つの)解がある。 ★★ から、次の 2 因子は零因子:
  (a, b)(c, d) = (e1, e4)(e2, e7) = 0

【4】 上の例では「仮に」と称して説明なく c = e2 とした。実は c, d についてのこの連立方程式は、解がある場合、4種(符号だけの違いもカウントに含めれば8種)の解を持つ。 c の選択肢は7種(符号も含めて14種)しかないので、でたらめに c を選んでも、かなりの確率で有効な解が得られる。正確に言うと、次の通り。
  S = {±e1, ±e2, …, ±e7}
…の中から a, b を選ぶとき(ただし b ≠ ±a とする)、±a, ±b, ±ab 以外ならどれを c としても、①②の有効な解が得られる。 a = e1, b = e4, ab = e5 の例で言えば ±e2, ±e3, ±e6, ±e7 のどれを c としても、それに対応して①②を連立させる d が得られる。

定理S の 2 元から作られる十六元数の零因子) a, b ∈ S が b ≠ ±a を満たし、かつ c ∈ S が ±a, ±b, ±ab 以外の場合には――そしてその場合に限って―― (a, b)(c, d) = 0 を満たす d ∈ S が存在する。その具体的な値は d = (ac)b = (cb)a である。

〔注〕 この定理の証明には、具体的な掛け算規則の選択は必要ない。八元数の「九九」480種のどれを選んでも、同じ定理が成り立つ。

以下では、まず c = ±a, ±b, ±ab または b = ±a なら①②に解がないことを示してから、c がそれ以外の S の元なら①②に解があること(そして具体的な解)を述べる。

a, b についての仮定と補題2から、①は
  db = −ac つまり d = (−ac)b−1 = (−ac)(−b) = (ac)b  ‥‥③
を意味し、②は
  da = bc つまり d = (bc)a−1 = (bc)(−a) = (−bc)a  ‥‥④
を意味する。

S = {±e1, ±e2, …, ±e7} の 2 元について、それらが「等しくなく、互いに −1 倍の関係でもない」とき、その 2 元を「別種」と呼ぶことにする。

〔例〕 e2 と e4 は別種。e2 と −e4 も別種。e2 と −e2 は別種ではない。

補題3 S の別種の 2 元 p, q の積は再び S の元だが、p とも q とも別種。それを pq = r とすると、もし掛け算の左右を交換するなら、積の符号が変わる。つまり qp = −r。言い換えれば qp = −pq, pq = −qp。

この事実は、八元数の「和音」こと triad の性質に由来する(例: 176 が有効な和音なら e1e7 = e6 であり、同時に e7e1 = −e6)。四元数の積の基本性質(例: ij = k だが ji = −k)を継承している。

〔補足〕 別種ではない 2 元の積は ±1 に等しく、S の元にならない。例: e2e2 = −1, e2(−e2) = 1。なぜなら e2 などの一つ一つは虚数単位。

【5】 定理の証明(解がないケース) c = ±a なら ac = a(±a) = ±a2 = ∓1 であり(なぜなら a は虚数単位)、他方 −bc = −b(±a) = ∓ba なので:
  ③から d = (ac)b = ∓b
  ④から d = (−bc)a = (∓ba)a = ∓ba2 = ∓b(−1) = ±b (複号同順)
仮定により b ≠ 0 なので上と下は両立せず、③④(従って①②)を連立させる解はない。途中計算の (ba)a = ba2 の部分では、八元数が交代法則を満たすことを使った。

次に c = ±b なら ac = a(±b) = ±ab、 −bc = −b(±b) = ∓b2 = ±1 なので:
  ③から d = (ac)b = (±ab)b = ±ab2 = ∓a
  ④から d = (−bc)a = ±a
これも両立しない。

c = ±ab の場合はトリッキー: 以下で見るように、このケースで解 d があるなら d は実数でなければならず、 d ∈ S を前提とした①の変形は不成立。積の定義 ☆ によれば、
  xy = (ac − d*b, da + bc*) = (0, 0) = 0
が成り立つことは、次の二つが成り立つことと同じ:
  ac − d*b = 0  ‥‥⑤
  da + bc* = 0  ‥‥⑥
八元数は交代法則を満たすので、c = ±ab なら:
  ac = ±a(ab) = ±a2b = ∓b
これを⑤に代入すると:
  ∓b − d*b = 0 従って d*b = ∓b
両辺に b−1 を右から掛けると:
  d* = ∓bb−1 = ∓b(−b) = ±b2 = ∓1
これは虚部ゼロなので、共役の定義(虚部の符号が反対)から、共役は自分自身に等しい:
  d = d* = ∓1
これを⑥に代入すると(a, b についての仮定から c = ±ab は純虚数で補題1に従う):
  da + bc* = da − bc = (∓1)a − b(±ab) = 0
  つまり ∓a ∓ b(ab) = 0  ‥‥⑦
仮定により a, b は別種なので、補題3から b(ab) = −b(ba) = −b2a = a、従って⑦左辺は次の値を持ち、⑦右辺と等しくなり得ない。
  ∓a ∓ a = ∓2a
つまり⑤⑥は両立不可能。

最後に、もしも b = ±a なら:
  ③は d = (ac)b = (ac)(±a) = ±(ac)a
  ④は d = (−bc)a = (∓ac)a = ∓(ac)a
上と下は同じ (ac)a で符号が逆なので、両立不可能。なぜなら (ac)a ≠ 0。

〔補足〕 S 内の任意の 2 元(必ずしも相異ならない)の積は、再び S 内にあるか、または ±1。従って、S 内の任意の 3 元(必ずしも相異ならない)の積も、同じ範囲内にあり 0 にはなり得ない。

【6】 定理の証明(解があるケース) 「両立不可能」として除外されたケース(c = ±a, ±b, ±ab の場合と a = ±b の場合)以外では、必ず (a, b)(c, d) = 0 を満たす d ∈ S が存在する。それを言うには d についての二つの式③④が両立すること、つまり次の等式を示せばいい:
  (ac)b = (−bc)a
仮定により c は ±b ではないから、補題3により −bc = cb; 上の式をこう書いてもいい:
  (ac)b = (cb)a  ‥‥⑧

今 a, b, c ∈ S について、結合子その性質(八元数の交代性に基づく)を使うと:
  0 = △(c, a, b) − △(c, a, b) = △(c, a, b) + △(c, b, a)
  つまり 0 = (ca)b − c(ab) + (cb)a − c(ba)
ここで c と a は別種、 a と b も別種。補題3から ca = −ac, ab = −ba。上に代入して:
  0 = (−ac)b − c(−ba) + (cb)a − c(ba) この右辺第2・第4項は消滅
整理すると:
  0 = −(ac)b + (cb)a つまり (ac)b = (cb)a
⑧が示された。∎

〔注意〕 c = ±ab も⑧を満たすが、題意に適さない(既に除外されている): 【5】で見たように、c = ±ab だと d が実数になってしまい、そもそも①が成り立たないので、①に基づく③⑧の成否は、解の有無と無関係。ところで c ≠ ±ab なら、この種の不都合は生じない。 S の元の積が実数になるなら、その積は ±1 に限られる。④式 d = −(bc)a は d が実数でも実数でなくても成り立つので、それに当てはめると:
  ±1 = −(bc)a つまり (bc)a = ∓1
両辺に a−1 を右から掛けると:
  bc = ∓a−1 = ±a
両辺に b−1 を左から掛けると:
  c = ±b−1a = ∓ba = ±ab
つまり d が実数になるとしたら c = ±ab。

【7】 結論として、このタイプの零因子は、初等的な議論(八元数の連立1次方程式に基づく)によって、過不足なく直接構成できる。

  1. 八元数 a, b として S の任意の別種の元を選んでいい: 7 × 6 = 42 種の選択肢がある(符号も区別すれば168種)。
  2. a, b の選択に応じて c の選択肢は ±a, ±b, ±ab 以外の4種(符号も区別すれば8種)。どれを選んでもいい。
  3. a, b, c の組み合わせを決めると、d = (ac)b は自動的に定まる:
      (a, b) × (c, (ac)b) = 0 は十六元数の零因子

PARI/GP で記述すると次の通り(a, b, c の符号を正に固定)。八元数の積の計算に octomul5 を使う(詳細)。添え字 t, u, v の三重ループ(それぞれ 1 から 7 の値を取る)によって、有効な t, u, v の組み合わせごとに (et, eu)(ev, d) = 0 を満たす d ∈ S を決定する。これは試行錯誤の全数検索ではなく 73 = 343 種の組み合わせには、原則として全部、解 d がある。ただし解がない例外ケースについては、解を求めようとせず、ループがスキップされる: t = u のとき(つまり a = b のとき)には解がないことが分かっているので、実際の解は 6/7 に減り、c = a, b, |ab| のときにも解がないことが分かっているので、さらに 4/7 に減る。得られる解の総数は:
  73 × 6/7 × 4/7 = 7 × 6 × 4 = 168

プログラムのコード(読まずに先へ)。

\\ Simple construction of sedenion zero divisors (*not* brute-force)
\\ PARI/GP, Jan. 2024, Public Domain

\\ octonion e_n (n=0..7)
e( n ) = { my( vec = vector(8) ); vec[ n+1 ] = 1; vec; }

test() = {
 for( t = 1, 7,
  my( a = e(t) );
  for( u = 1, 7, if( u == t, next );
   printf( "( e%d + e%d ) : ", t, u+8 );
   my( b = e(u), ab = octomul5( a, b ) );
   for( v = 1, 7, if( v == t || v == u, next );
    my( c = e(v), d );
    if( c == ab || c == -ab, next );
    d = octomul5( octomul5( a, c ), b );
    report( v, d )
   ); \\v
   print
  );  \\u
  print
 );   \\t
}

report( v, d ) = {
 my( w = 0, Sign );
 for( n = 1, 7, if( d == e(n), w = n; Sign = "+"; break,
                    d == -e(n), w = n; Sign = "-"; break ) );
 if( w, printf( " ( e%d %s e%d ),", v, Sign, w+8 ),
     print( "Unexpected d=", d ) );
}

octomul5(X,Y) = { \\ octonion multiplication, classic (Graves-Cayley) version
 my(x0=X[1], x1=X[2], x2=X[3], x3=X[4], x4=X[5], x5=X[6], x6=X[7], x7=X[8]);
 my(y0=Y[1], y1=Y[2], y2=Y[3], y3=Y[4], y4=Y[5], y5=Y[6], y6=Y[7], y7=Y[8]);
 my(z0,z1,z2,z3, z4,z5,z6,z7);
 z0 = x0*y0 - x1*y1 - x2*y2 - x3*y3 - x4*y4 - x5*y5 - x6*y6 - x7*y7;
 z1 = (x0*y1 + x1*y0) + (x2*y3 - x3*y2) + (x4*y5 - x5*y4) + (x7*y6 - x6*y7);
 z2 = (x0*y2 + x2*y0) + (x3*y1 - x1*y3) + (x4*y6 - x6*y4) + (x5*y7 - x7*y5);
 z3 = (x0*y3 + x3*y0) + (x1*y2 - x2*y1) + (x4*y7 - x7*y4) + (x6*y5 - x5*y6);
 z4 = (x0*y4 + x4*y0) + (x5*y1 - x1*y5) + (x6*y2 - x2*y6) + (x7*y3 - x3*y7);
 z5 = (x0*y5 + x5*y0) + (x1*y4 - x4*y1) + (x7*y2 - x2*y7) + (x3*y6 - x6*y3);
 z6 = (x0*y6 + x6*y0) + (x2*y4 - x4*y2) + (x1*y7 - x7*y1) + (x5*y3 - x3*y5);
 z7 = (x0*y7 + x7*y0) + (x3*y4 - x4*y3) + (x6*y1 - x1*y6) + (x2*y5 - x5*y2);
 [z0,z1,z2,z3, z4,z5,z6,z7]; }

出力の最初の部分は、次の通り。

( e1 + e10 ) :  ( e4 - e15 ), ( e5 + e14 ), ( e6 - e13 ), ( e7 + e12 ),
( e1 + e11 ) :  ( e4 + e14 ), ( e5 + e15 ), ( e6 - e12 ), ( e7 - e13 ),
( e1 + e12 ) :  ( e2 + e15 ), ( e3 - e14 ), ( e6 + e11 ), ( e7 - e10 ),
( e1 + e13 ) :  ( e2 - e14 ), ( e3 - e15 ), ( e6 + e10 ), ( e7 + e11 ),
( e1 + e14 ) :  ( e2 + e13 ), ( e3 + e12 ), ( e4 - e11 ), ( e5 - e10 ),
( e1 + e15 ) :  ( e2 - e12 ), ( e3 + e13 ), ( e4 + e10 ), ( e5 - e11 ),

( e2 + e9 ) :  ( e4 + e15 ), ( e5 - e14 ), ( e6 + e13 ), ( e7 - e12 ),
( e2 + e11 ) :  ( e4 - e13 ), ( e5 + e12 ), ( e6 + e15 ), ( e7 - e14 ),
( e2 + e12 ) :  ( e1 - e15 ), ( e3 + e13 ), ( e5 - e11 ), ( e7 + e9 ),
( e2 + e13 ) :  ( e1 + e14 ), ( e3 - e12 ), ( e4 + e11 ), ( e6 - e9 ),
( e2 + e14 ) :  ( e1 - e13 ), ( e3 - e15 ), ( e5 + e9 ), ( e7 + e11 ),
( e2 + e15 ) :  ( e1 + e12 ), ( e3 + e14 ), ( e4 - e9 ), ( e6 - e11 ),

( e3 + e9 ) :  ( e4 - e14 ), ( e5 - e15 ), ( e6 + e12 ), ( e7 + e13 ),
( e3 + e10 ) :  ( e4 + e13 ), ( e5 - e12 ), ( e6 - e15 ), ( e7 + e14 ),
( e3 + e12 ) :  ( e1 + e14 ), ( e2 - e13 ), ( e5 + e10 ), ( e6 - e9 ),
( e3 + e13 ) :  ( e1 + e15 ), ( e2 + e12 ), ( e4 - e10 ), ( e7 - e9 ),
( e3 + e14 ) :  ( e1 - e12 ), ( e2 + e15 ), ( e4 + e9 ), ( e7 - e10 ),
( e3 + e15 ) :  ( e1 - e13 ), ( e2 - e14 ), ( e5 + e9 ), ( e6 + e10 ),

意味: このタイプの零因子のうち、x = e1 + e10 に対し xy = 0 を満たすものは
  y = e4 − e15, y = e5 + e14, y = e6 − e13, y = e7 + e12,
の四つ。 x = e1 + e11 に対し xy = 0 を満たすものは
  y = e4 + e14, y = e5 + e15, y = e6 − e12, y = e7 − e13,
の四つ。等々。

〔補足〕 次の関係が成り立つ(複号は a, b, c の選択に応じ、上下どちらか一つだけが正しい):
  (a, b)(c, d) = (et, eu)(ev, ±ew) = (et + eu+8)(ev ± ew+8)  t, u, v, w ∈ {1, 2, …, 7}。
右辺は十六元数の積 xy; 左辺と真ん中は、同じ積を八元数 a, b, c, d を使って表したもの(積の定義 ☆ 参照)。


(質問)
0 を割ることが
できるか?


x = 2 に対し xy = 10 を満たす y を求めることは 10 を 2 で割ること。同様に x = e1 + e10 に対し xy = 0 を満たす y を求めることは…
  0 を e1 + e10 で(左から)割ること
…のはずだが、この場合の xy = 0 の解 y は、自明な y = 0 の他にも、出力の最初の行にように、次の4種の零因子がある:
  y = e4 − e15, y = e5 + e14, y = e6 − e13, y = e7 + e12
すなわち、この「0 を割る割り算」には少なくとも五つの「答え」がある! 十六元数の世界では、この場合、0 を割ることはできない――というか割れることは割れるけど、答えが一つに定まらない。普通の数の世界では
  0 ÷ 2 = 0 × 1/2 = 0, 0 ÷ (3 + 4i) = 0 × (3 − 4i)/25 = 0
のように 0 を(0 以外の数で)割れば、答えは 0 に決まっているが、十六元数の世界ではもはやその常識は通用しない!

出力の残りの部分(下記)と合わせると、a = e1, e2, …, e7 のそれぞれに対し 4 × 6 = 24 種の積が報告され、トータルで 168 個の積が出力される。例えば
  (e1 + e10)(e5 + e14) = 0 と (e5 + e14)(e1 + e10) = 0
  (e1 + e10)(e4 − e15) = 0 と (e4 + e15)(e1 − e10) = 0
のような積が別々にカウントされている。前者は因子の左右を入れ替えただけで、同じといえば同じペア。 b の符号を変えると d の符号も変わることから、後者も(符号の違いを別にすれば)同じといえば同じペア。こういった左右入れ替えを別々にカウントしなければ、ペアの総数は半分の 84 になる。

( e4 + e9 ) :  ( e2 - e15 ), ( e3 + e14 ), ( e6 - e11 ), ( e7 + e10 ),
( e4 + e10 ) :  ( e1 + e15 ), ( e3 - e13 ), ( e5 + e11 ), ( e7 - e9 ),
( e4 + e11 ) :  ( e1 - e14 ), ( e2 + e13 ), ( e5 - e10 ), ( e6 + e9 ),
( e4 + e13 ) :  ( e2 - e11 ), ( e3 + e10 ), ( e6 + e15 ), ( e7 - e14 ),
( e4 + e14 ) :  ( e1 + e11 ), ( e3 - e9 ), ( e5 - e15 ), ( e7 + e13 ),
( e4 + e15 ) :  ( e1 - e10 ), ( e2 + e9 ), ( e5 + e14 ), ( e6 - e13 ),

( e5 + e9 ) :  ( e2 + e14 ), ( e3 + e15 ), ( e6 - e10 ), ( e7 - e11 ),
( e5 + e10 ) :  ( e1 - e14 ), ( e3 + e12 ), ( e4 - e11 ), ( e6 + e9 ),
( e5 + e11 ) :  ( e1 - e15 ), ( e2 - e12 ), ( e4 + e10 ), ( e7 + e9 ),
( e5 + e12 ) :  ( e2 + e11 ), ( e3 - e10 ), ( e6 - e15 ), ( e7 + e14 ),
( e5 + e14 ) :  ( e1 + e10 ), ( e2 - e9 ), ( e4 + e15 ), ( e7 - e12 ),
( e5 + e15 ) :  ( e1 + e11 ), ( e3 - e9 ), ( e4 - e14 ), ( e6 + e12 ),

( e6 + e9 ) :  ( e2 - e13 ), ( e3 - e12 ), ( e4 + e11 ), ( e5 + e10 ),
( e6 + e10 ) :  ( e1 + e13 ), ( e3 + e15 ), ( e5 - e9 ), ( e7 - e11 ),
( e6 + e11 ) :  ( e1 + e12 ), ( e2 - e15 ), ( e4 - e9 ), ( e7 + e10 ),
( e6 + e12 ) :  ( e1 - e11 ), ( e3 + e9 ), ( e5 + e15 ), ( e7 - e13 ),
( e6 + e13 ) :  ( e1 - e10 ), ( e2 + e9 ), ( e4 - e15 ), ( e7 + e12 ),
( e6 + e15 ) :  ( e2 + e11 ), ( e3 - e10 ), ( e4 + e13 ), ( e5 - e12 ),

( e7 + e9 ) :  ( e2 + e12 ), ( e3 - e13 ), ( e4 - e10 ), ( e5 + e11 ),
( e7 + e10 ) :  ( e1 - e12 ), ( e3 - e14 ), ( e4 + e9 ), ( e6 + e11 ),
( e7 + e11 ) :  ( e1 + e13 ), ( e2 + e14 ), ( e5 - e9 ), ( e6 - e10 ),
( e7 + e12 ) :  ( e1 + e10 ), ( e2 - e9 ), ( e5 - e14 ), ( e6 + e13 ),
( e7 + e13 ) :  ( e1 - e11 ), ( e3 + e9 ), ( e4 + e14 ), ( e6 - e12 ),
( e7 + e14 ) :  ( e2 - e11 ), ( e3 + e10 ), ( e4 - e13 ), ( e5 + e12 ),

〔付記〕 八元数・十六元数の掛け算の定義は複数あるが、ここでは古典的な方式を使っている。全数検索により、このタイプの零因子が(符号の違いを別にして)他にないことは検証済み。このタイプ以外の零因子の有無については、この議論からは何とも言えない。

【8】 x = (a, b) の a, b として、虚数単位ではなく実数の単位 1 あるいは −1 などを使うことは可能だろうか。実部が 0 でない十六元数 x は零因子になり得るか?

a = R ≠ 0 が実数だったら:
  ac − d*b = Rc + db = 0 だから d = −R⋅cb−1
  da + bc* = dR − bc = 0 だから d = 1/R⋅bc
もしも b, c が本文の定理同様 S の元なら、上の第1式は = R(cb) = −R(bc)。第2式との関係から −R = 1/R となるが、その両辺を −R 倍すると R2 = −1 となり、R は実数という前提に反する。 b または c または d も実数だったら…と考えてみても、どれも「解なし」。
  S = {±e1, ±e2, …, ±e7}
に ±e0 = ±1 を付け加えた 16 要素の集合で考えても、新しい零因子は見つからない。少なくとも本文のタイプの零因子では「a, b などは ±1 になり得ない」と結論される。

その結果、十六元数として見ると、このタイプの零因子には e1 ~ e7 と e9 ~ e15 は現れ得るのに e0 と e8 は現れない。

*

零因子は「ゼロでないのに掛けると消えてしまう」奇妙な存在。「実体(実部)のある数がそんな幽霊的な振る舞いはしないだろう」ということから、e0 が現れないこと(つまり零因子が純虚数であること)については、直観的にも「まぁそうかもね」と思える。

一方、このタイプの零因子に e8 が現れないこと――「15種類の虚数単位 e1 ~ e15 の振る舞いが対等ではない」という結論――は、不思議な感じがする。

四元数の三つの虚部 i, j, k は対称的、八元数の七つの虚部 e1, e2, …, e7 も(ほとんど?)対称的だが、16次元の 15 個の虚数軸では「次元対称性」が破れ、ある一つの虚数軸が、はっきり他と違う性質を持つらしい。

なぜそれが不思議に感じられるのか。八元数までの世界では「実数と虚数」という二分法が明確に成り立つ――例えば四元数は「実数成分と三つの虚数成分を持つ」というように。ところが十六元数においては「実数と虚数」という区別に、グレーゾーンと陰影が生じている: e8 は、平方すると −1 になるという点では他の虚数単位と同じだが、零因子の観点からは、他の虚数単位とは違う。あえて言えば「他の虚数単位よりも実数に近い性質の虚数単位」。不思議というより不慣れ、初体験の現象でびっくりした…というところか。「空間・次元・座標軸」のようなものについて、無意識に当たり前と仮定していたことが覆され、それが一種のセンス・オブ・ワンダーを引き起こす。慣れてしまえば、それも当たり前と感じられるようになるのだろう。

零因子そのものは 2⋅3 ≡ 0 (mod 6) のように身近にあり、驚くことではないけど、十六元数の零因子は「未知の深い何か」を秘めているようだ。

⁂


<メールアドレス>