問いが最も価値を持つ時代

AI、めちゃくちゃ便利ですね。

分からないことがあれば聞けばいい。計算してほしければ計算してくれる。知らない概念が出てきたら説明してくれる。難しければ「もっと簡単に」と言えばいいし、逆に詳しく知りたければいくらでも掘り下げられる。

ほんの数年前なら何冊も本を読んだり、検索結果を何ページも行ったり来たりしないと分からなかったようなことが、今では数秒で返ってきます。

ここまで来ると、一度はこう思うはずです。

もう勉強しなくてもいいのでは?

しかし、人類はこの手のことを何度も言ってきました。

計算機が出たときには、もう計算を覚えなくていいと言われた。検索エンジンが出たときには、もう知識を覚えなくていいと言われた。そして今、AI が出てきて、ついに考えることすら不要になるのではと言われています。

でも、なぜか毎回そうはなりません。

たぶん、そもそも我々が「勉強とは何をしているのか」を少し勘違いしているのだと思います。

今回は AI が学びの何を変えて、何を変えていないのかについて、思ったことをつらつらと書いてみたいと思います*1

勉強では「答え」だけを覚えているわけではない

勉強というと、多くの人は「答えを覚えること」を想像すると思います。

三平方の定理を覚える。二次方程式の解の公式を覚える。歴史上の出来事を覚える。たしかにそれはやっています。

でも、それと同時にもう一つ覚えています。「問い」です。

三平方の定理を習うとき、我々は

直角三角形の三つの辺の間には、何か普遍的な関係があるのではないか?

という問いも一緒に学んでいます。

これは、知ってしまうと非常に当たり前に見えます。でも、もし数学をほとんど学んだことがない人に直角三角形を一つ見せたとして、

この三つの辺の長さには、三角形によらず成り立つ何らかの関係があるのではないか

という問いを自然に立てられるでしょうか。おそらく、そんなに簡単ではありません。

我々は三平方の定理という「答え」だけを学校で教わっているのではありません。「ここには何か法則があるかもしれない」「こういうもの同士を比べることができる」「そもそもこれは問うに値する」ということまで一緒に教わっています。

考えてみると、これは相当大きいことです。

AI は「答え」を猛烈に安くした

AI が本当に革命的なのは、答えを得るコストをとんでもない勢いで下げたことです。

以前なら、本を探す、論文を探す、検索ワードを工夫する、必要な部分を読む、複数の情報を突き合わせる、といったことをしなければならなかった。今ではかなりの部分が、

AI に聞く

に圧縮されつつあります。

これはものすごい変化です。「答えを探すための技術」は、一気に「AI を使いこなす技術」に圧縮されている。

しかし、ここで妙なことが起きます。AI がどれだけ賢くなっても、

何を聞くのか

という問題は残るのです。

AI は「問い」に対して「答え」を出す

かなり乱暴に抽象化すると、AI は

問い → 答え

という機械です。

もちろん、「面白い問いを考えて」と言えば問いも出してくれます。しかし、その場合でも人間は、

何について問いを作らせるのか?

という一段上の問いをすでに持っています。それすら AI に決めてもらおうとすれば、今度は「自分は何について考えるべきなのか?」という問いが残る。どこまで登っても、最後には何らかの「問い」が必要になります。

逆に言えば、問いを一つも持っていない人間にとって、AI は何も始めてくれません。世界中の知識にアクセスできる機械が目の前にあっても、「何を知りたいのか」がなければ、そこから先には進めない。

AI は答えを持っていない人を救うことはできます。しかし、問いを持っていない人を救うことは、たぶんもっと難しい。

答えが安くなるほど、問いの価値が上がる

もちろん、問いに対して瞬時に答えが出るというのは革命です。ここは疑う余地がありません。しかし、

AI があれば、全員があらゆる知識を手に入れた

と考えるのは早計だと思います。全員が手に入れたのは、「聞けば答えが返ってくる環境」です。何を聞くかは、まだ同じではない。

同じ AI を使っていても、「これって何?」で終わる人もいれば、「なぜこの仮定が必要なの?」「この二つは本当に別物なの?」「この議論は別の分野にも移せるのでは?」「ここで失敗する例は?」「そもそも問いの立て方が間違っているのでは?」と進んでいく人もいます。

そして、一つ良い問いを持っていると、AI によってその周囲を猛烈な速度で探索できるようになりました。

以前なら一つの問いを調べるだけで一日かかったかもしれない。今なら十個、百個と次の問いに進める。つまり、答えを得る速度が上がったことで、むしろ「最初に何を問えるか」の差がそのまま大きな差になって現れるようになった。

一言でいうと

答えが安くなったからこそ、問いが高くなった。

と、私は感じています。

では、問いはどうやって身につけるのか

ここが問題です。

良い問いを持てと言われても、良い問いは突然空から降ってくるわけではありません。ではどうすればよいのか。

まず、過去の人間が立ててきた問いを大量に知ることだと思います。

人間は長いあいだ、「なぜこうなるのか」「もっと一般化できないか」「この仮定は必要なのか」「例外はないのか」「別の説明はできないのか」「そもそも何を定義すればいいのか」と悩み続けてきました。そして、解決したり、失敗したり、何十年も遠回りしたり、そもそも問い方が悪かったと気づいたりしてきた。

これを学ぶ。答えだけではなく、

人は何を不思議だと思ってきたのか

を学ぶ。

勉強というのは、これまで人類が見つけてきた「問いの型」を、自分の頭に入れる作業でもあるのだと思います。

自分から遠い問いを仕入れる

さらに、問いを増やすなら、自分から少し遠いものを学ぶ方がいいと思っています。

自分がその場で自然に思いつく問いというのは、当然ながら今の自分の知識から生まれます。つまり、いくら新しく見えても、多くは今の自分の延長線上にあります。それだけでは、問いの種類はなかなか増えません。

だから、自分があまり知らない分野を少し学ぶ。普段は読まない本を読む。友人が最近何をしているのか聞く。自分とは全然違う仕事をしている人が、何に困っているのか聞く。

そうすると、ときどき、

えっ、そこを問題にするのか

という問いに出会います。

自分の思考を滑らかに拡張するだけでなく、自分とはほとんど不連続な場所から問いを持ってくる。それを自分の持っている知識とぶつける。

そういうところから、妙に面白い発想が出てくることがあります。このような突然変異を自分から起こしていくことが必要になると思います*2

とはいえ、答えも必要

ここまで「問いが大事」という話をしてきましたが、だから知識は覚えなくていい、という話ではありません。むしろ逆です。良い問いを立てるためには、良い答えを大量に知っている必要があります。

知識がなければ問えない問いは、世の中にいくらでもあります。というより、多分その方が圧倒的に多い。

微分を知らなければ、

微分できない関数をどう扱えばいいのか

とはなかなか思いません。ある理論を知らなければ、「この仮定を外せないのか」とも思えません。ある分野で何がすでに失敗してきたかを知らなければ、昔から何度も試されていることを新しい問いだと思ってしまうかもしれません。

結局、

答えを知る

新しい問いが生まれる

その答えを知る

さらに先の問いが生まれる

という循環になっています。

問いと答えは対立していません。良い答えが、次の良い問いを作ります。

結局、勉強はなくならない

残念ながら(あるいは嬉しいことに)、AI が出てきても勉強そのものはなくならなさそうです。ただし、勉強の意味は少し変わるのかもしれません。

これまでは、答えを知っていることそのものに大きな価値がありました。これからは、その答えの多くを AI がすぐに出してくれます。

それでも自分の中に知識を蓄える意味は残る。なぜなら、その知識が次の問いを作るからです。

そして、自分の中にいろいろな「問い」と「答え」を蓄えていくことで、

自分の力でたどり着ける問いの範囲

そのものが広がっていきます。

AI は、その範囲の中を猛烈な速度で走ってくれます。でも、どの方向へ走るのかを決めるのは人間で、そのための蓄えが必要です。

これから価値を持つのは、たくさん答えを覚えている人ではないのかもしれません。

何を問えばいいかを知っている人。一つ答えを得たあとに、次に何を問うべきかが分かる人。そして、まだ誰も十分に問えていないことに気づける人。

答えが最も簡単に手に入るようになった時代だからこそ、問いが最も価値を持つ。

最近はそんなことを考えています。

ではまた。

*1:この文が AI 臭いと思った方、相当に鋭いです。正直に言うと、本文のほとんどは ChatGPT に書いてもらいました。ただし、本文に含めている論旨自体はすべて私が書いた上で執筆してもらったので、私自身の主張として読んでもらって大丈夫です。

*2:偉そうに言っていますが、私自身がこれまであまり力を入れてこなかった方面でもあります。自戒を込めた宣言です。

Ball の立方体切断定理 Part 2

前回の記事では、立方体の断面積の最大値を求める定理「Ball の立方体切断定理」の証明を行い、この定理の正しさは Ball の積分不等式に帰着されることを見ました。今回はこの不等式の証明を行っていきます。

前回はこちら
smooth-pudding.hatenablog.com

今回の目標

前回、Ball の積分不等式(以下の補題3)を仮定して、Ball の立方体切断定理の証明を行いました。

補題3. 任意の p \geq 2 に対して、以下が成立する。

\displaystyle\int_{\mathbb{R}} \left| \mathrm{sinc} \, x \right|^{p} \mathrm{d} x \leq \sqrt{\dfrac{2}{p}}

等号は p = 2 でのみ成立する。

ただし \mathrm{sinc} は以下で定義されます。


  \displaystyle
  \mathrm{sinc} \, x = \begin{cases}
    1 & (x = 0), \\
    \dfrac{\sin(\pi x)}{\pi x} & (x \neq 0)
  \end{cases}

さらに「次回予告」では、Nazarov–Podkorytov の論文で、以下の主張から Ball の積分不等式を導いていることに触れました。

主定理. g(x) = |\mathrm{sinc} \, x|, f(x) = e^{- \pi x^{2} / 2} とおく。p \geq 2 に対して

\displaystyle
  \int_{0}^{\infty} g(x)^{p} \mathrm{d} x \leq \int_{0}^{\infty} f(x)^{p} \mathrm{d} x

が成り立つ。等号は p = 2 でのみ成り立つ。

今回はこの定理の証明を目標にします。

以下、主定理のステートメントの記法を記事を通じて用いることとします。

layer-cake 表示

今回紹介する手法では、積分を横に切って層状に重ねる形式に変換します。これを layer-cake 表示と呼びます。これを導くために、まずは「横に切る」ための言葉を用意します。

定義4.
Lebesgue 可測関数 h \colon [0, \infty) \to [0, 1] に対して、H \colon (0, 1) \to \mathbb{R} を以下で定義する*1

\displaystyle
  H(y) = \left| \set{ x \mid h(x) > y } \right|

ただし集合 X \subseteq \mathbb{R} の Lebesgue 測度を |X| とした。この Hh の上位関数 (super-level function) と呼ぶ。

上位関数を用いて \int h^{p} を変形してみると、以下のようになります。

\displaystyle
  \begin{aligned}
    \int_{0}^{\infty} h(x)^{p} \mathrm{d} x
    &= \int_{0}^{\infty} \int_{0}^{h(x)} p y^{p - 1} \mathrm{d} y \, \mathrm{d} x \\
    &= \int_{0}^{\infty} \int_{0}^{1} p y^{p - 1} \chi_{\set{ h(x) > y }}(x, y) \mathrm{d} y \, \mathrm{d} x \\
    &= p \int_{0}^{1} y^{p - 1} \int_{0}^{\infty} \chi_{\set{ h(x) > y }}(x, y) \mathrm{d} x \, \mathrm{d} y \\
    &= p \int_{0}^{1} y^{p - 1} H(y) \mathrm{d} y
  \end{aligned}

この表示のことを layer-cake 表示と呼びます。ただし \chi は定義関数です。

この layer-cake 表示を用いて \int f^{p} - \int g^{p} を変形してみます。f, g の上位関数をそれぞれ F, G とすると

\displaystyle
    \int_{0}^{\infty} f(x)^{p} \mathrm{d} x
    -
    \int_{0}^{\infty} g(x)^{p} \mathrm{d} x
    =
    p \int_{0}^{1} y^{p - 1} \left\{ F(y) - G(y) \right\} \mathrm{d} y

となります。よって D(y) = F(y) - G(y) とおけば
\displaystyle
    \int_{0}^{1} y^{p - 1} D(y) \mathrm{d} y
    \geq 0

を示すことが目標になります。

積分のトリック

ちょっとしたトリックを用います。

補題5. 以下の2つの条件を満たすと仮定する。
(a) ある p_{0} \geq 2 において以下が成立する。

\displaystyle
      \int_{0}^{1} y^{p_{0} - 1} D(y) \mathrm{d} y = 0

(b) ある y_{*} \in (0, 1) が存在して、以下が成立する。
\displaystyle
      \begin{gathered}
        y \geq y_{*} \Longrightarrow D(y) \geq 0,\\
        y < y_{*} \Longrightarrow D(y) \leq 0
      \end{gathered}

このとき、任意の p \geq p_{0} に対して

\displaystyle
      \int_{0}^{1} y^{p - 1} D(y) \mathrm{d} y \geq 0

が成立する。また |\set{ y \mid D(y) \neq 0 }| > 0 ならば、等号が成立するのは p = p_{0} の場合に限る。

証明. p = p_{0} のときは明らかなので、p > p_{0} と仮定する。式変形すると

\displaystyle
  \begin{aligned}
    &\hphantom{{}={}} \int_{0}^{1} y^{p - 1} D(y) \mathrm{d} y \\
    &= \int_{0}^{1} y^{p - p_{0}} y^{p_{0} - 1} D(y) \mathrm{d} y \\
    &= \int_{0}^{1} (y^{p - p_{0}} - y_{*}^{p - p_{0}}) y^{p_{0} - 1} D(y) \mathrm{d} y \\
  \end{aligned}

が得られる。ただし最後の等式では (a) に y_{*}^{p - p_{0}} を掛けたものを用いた。(b) より (y^{p - p_{0}} - y_{*}^{p - p_{0}}) D(y) は常に非負である。よってこの積分値は常に非負である。特に |\set{ y \mid D(y) \neq 0 }| > 0 なら、積分値は正の値となる。■

この定理を直観的に説明すると以下のようになります。まず指数が p = p_{0} のときにちょうど 0 になることが保証されていて、かつ D(y)y が大きいところでは正、y が小さいところでは負になっています。y^{p - 1} というファクターは p が大きくなるほど y が大きくなるところからの寄与を増加させ、y が小さくなるところからの寄与を減少させます。その結果、p を大きくすると、D(y) のうち正の部分が積分に与える寄与がより強まり、負の部分が積分に与える寄与がより小さくなります。p = p_{0} でちょうど 0 だったので、p > p_{0} ならこの効果の分大きくなり、正になる、という具合です。

従って目標はずっとシンプルなものに変わり、補題5の (a), (b) を順に示すことになりました。

p = 2 で等式が成立

補題5の (a) が p_{0} = 2 で成立することを確かめます。

補題6. 以下が成立する。

\displaystyle
  \int_{0}^{\infty} g(x)^{2} \mathrm{d} x
  = \int_{0}^{\infty} f(x)^{2} \mathrm{d} x

証明. 右辺を計算すると

\displaystyle
  \int_{0}^{\infty} f(x)^{2} \mathrm{d} x
  = \int_{0}^{\infty} e^{- \pi x^{2}} \mathrm{d} x
  = \dfrac{1}{2}

となる。一方、初等的な計算により*2
\displaystyle
  \int_{0}^{\infty} \dfrac{\sin^{2}(\pi x)}{(\pi x)^{2}} \mathrm{d} x
  = \dfrac{1}{2}

となるので、左辺も同様に \dfrac{1}{2} となる。■

グラフの形状の観察

(b) の証明をする前に、g(x) = |\mathrm{sinc} \, x| の形状を観察してみます。今後このグラフの形状をうまく評価に落としていくので、先に慣れておきましょう。

以下が y = g(x) のグラフです。0 \leq x \leq 1 の付近に大きな山があり、そのあとは 1 区切りで小さくなっていく山々が連なっています。

y = g(x) のグラフ。

この形状から予想されるように、各々の山の頂上を y_{0}, y_{1}, y_{2}, \dots とすると、1 = y_{0} > y_{1} > y_{2} > \dots となります。頂上を形式的に定義すれば以下のようになります。

\displaystyle
  y_{0} = 1, \quad
  y_{m} = \max_{m < x < m + 1} g(x) \quad (m = 1, 2, \dots)

また \lim\limits_{x \to \infty} g(x) = 0 なので \lim\limits_{m \to \infty} y_{m} = 0 です。したがって 0 < y < y_{1} かつ y \neq y_{2}, y_{3}, \dots なら、y_{m + 1} < y < y_{m} となる正の整数 m が必ず存在します。

上位関数 G(y) を考える場合は、y_{1} < y < 1 では山ひとつ分、y_{2} < y < y_{1} では山ふたつ分、...というふうに、有限個の山の寄与を合算したものになります。

一方、y = f(x) の形状はシンプルです。以下の通り、単調に減少していきます。上位関数 F(y) への寄与も、こちらは山ひとつ分です。

y = f(x) のグラフ。

十分大きな y で D(y) ≧ 0

では補題5 (b) のうち D(y) \geq 0 の領域が存在することを証明します。G(y) への寄与が山ひとつ分の領域、すなわち y_{1} < y < 1 の部分に注目してみます。

先程のグラフを重ねて、ひとつめの山の近くにズームしてみました。赤い山(= g(x))よりも青い山(= f(x)) のほうがより広がっているので、上位関数としては F(y) > G(y) となっています。つまり D(y) > 0 となっています。

つまり以下が成り立ちます。

補題7. y_{1} < y < 1 のとき D(y) > 0 が成り立つ。

観察で終わりにしてもよいのですが、この部分は \mathrm{sinc} 関数のオイラー積表示を使った綺麗な証明があるので紹介します。

証明. 0 < x < 1 に対して、以下の等式 (オイラー積表示) が成り立つことが知られている。

\displaystyle
  \mathrm{sinc} \, x = \prod_{k = 1}^{\infty} \left( 1 - \dfrac{x^{2}}{k^{2}} \right)

ところで t \in \mathbb{R} に対して 1 - t \leq e^{-t} が成り立つので
\displaystyle
  1 - \dfrac{x^{2}}{k^{2}} \leq e^{- x^{2} / k^{2}}

が成立する。以上から
\displaystyle
  \mathrm{sinc} \, x 
  \leq \prod_{k = 1}^{\infty} e^{- x^{2} / k^{2}}
  = e^{- \pi^{2} x^{2} / 6}

が従う*3。数値比較により - \dfrac{\pi^{2}}{6} < - \dfrac{\pi}{2} となるので、\mathrm{sinc}\,x < e^{- \pi x^{2} / 2} が成り立つ。主張はこの不等式から直ちに従う。■

十分小さな y で D(y) ≦ 0

次に補題5 (b) のうち D(y) \leq 0 の領域が存在することを示します。実はこれはほぼ自明です。

補題8. D(y) \leq 0 となる y \in (0, 1) が存在する。

証明.
もしすべての y \in (0, 1)D(y) > 0 が成り立つならば

\displaystyle
  \int_{0}^{1} y D(y) \mathrm{d} y > 0

が成立する。しかしこれは補題6に矛盾する。■

0 < y < y_1 で D(y) は単調増加

次に D(y)0 < y < y_{1} で単調増加であることを示します。これと補題7, 8 を組み合わせれば、晴れて補題5の (b) を主張できます。

F(y) は常に微分可能です。また上位集合のラインがちょうど山頂に重なる y = y_{1}, y_{2}, \dots を除くと、G(y) も微分可能です。また G(y) は山頂に重なるタイミングも含めて連続性はあります。したがって、y = y_{1}, y_{2}, \dots を除いた領域で D'(y) を評価して D'(y) \geq 0 を示す方針で考えます。

まず F(y) は具体的に計算することができます。

\displaystyle
  f(x) = e^{- \pi x^{2} / 2} > y
  \iff x < \sqrt{\dfrac{2}{\pi} \log \dfrac{1}{y}}

と変形できるので、F(y) = \sqrt{\dfrac{2}{\pi} \log \dfrac{1}{y}} となります。微分を計算すると
\displaystyle
  F'(y) = - \dfrac{1}{y\sqrt{2 \pi \log(1 / y)}}

が得られます。

補題9. F(y) は微分可能で、以下が成立する。

\displaystyle
  F'(y) = - \dfrac{1}{y\sqrt{2 \pi \log(1 / y)}}

以下は y を横軸にとった F'(y) のグラフです。y_{1}0.5 よりも小さいことを考えると、0 < y < y_{1} では F'(y) は単調増加であることが分かります。

F'(y) のグラフ

G(y) の方は幾分厄介です。f(x) は逆関数を計算できたため直接 F'(y) を計算できましたが、g(x) はそうはいきません。代わりに微分の値を不等式評価していきます。目標は次です。

補題10. m を正の整数とする。G(y) は区間 (y_{m + 1}, y_{m}) 上で微分可能で、以下の評価が成立する。

\displaystyle
  | G'(y) | \geq \dfrac{2}{\pi} + m + m^{2}

証明. G(y) は各山ごとの切り取り幅が寄与している。y \in (y_{m + 1}, y_{m}) のときは、0 番目から m 番目の山からの寄与の合計である。それぞれについて考える。

まず 0 番目の山について、g(x_{0}) = y となる 0 < x_{0} < 1 をとる。また k \, (\leq m) 番目の山については、切り取りの左端と右端があるので、左端を x_{k,-}, 右端を x_{k,+} とする。すなわち g(x_{k,-}) = g(x_{k,+}) = y であり、k < x_{k,-} < x_{k,+} < k + 1 である。

交点の定義

これらを用いると G(y) は以下のように表される。

\displaystyle
G(y) = x_{0} + \sum_{k = 1}^{m} (x_{k, +} - x_{k, -})

次に y を変化させたときに x_{0}, x_{k, -}, x_{k, +} がどのように変動するかを考える。g(x) = y の両辺を y で微分して整理すると

\displaystyle
  g'(x) \dfrac{\mathrm{d} x}{\mathrm{d} y} = 1
  \iff
  \dfrac{\mathrm{d} x}{\mathrm{d} y} = \dfrac{1}{g'(x)}

となる。よって、各区間の端点の移動による効果は g'(x) の逆数によって与えられる。

ところで、y を増加させたときの各端点の移動は、かならず G(y) を減少させる方向の効果を与える。したがって

\displaystyle
  G'(y) = - \dfrac{1}{|g'(x_{0})|} - \sum_{k = 1}^{m} \left(
    \dfrac{1}{|g'(x_{k,-})|} + \dfrac{1}{ | g'(x_{k, +}) | }
  \right)

と表される。

各項を評価しよう。まず 0 < x < 1 のとき

\displaystyle
  g(x) = \dfrac{\sin(\pi x)}{\pi x}
  = \int_{0}^{1} \cos(\pi x u) \mathrm{d} u

と表示できる。そこで十分小さい h をとると
\displaystyle
  \begin{aligned}
    &\hphantom{{}={}} | g(x_{0} + h) - g(x_{0}) | \\
    &\leq \int_{0}^{1} \left| \cos(\pi x_{0} u + \pi h u) - \cos(\pi x_{0} u) \right| \mathrm{d} u \\
    &= 2 \int_{0}^{1} \left| \sin\dfrac{2 \pi x_{0} u + \pi h u}{2} \right| \left| \sin\dfrac{\pi h u}{2} \right| \mathrm{d} u \\
    &\leq 2 \int_{0}^{1} \dfrac{\pi |h| u}{2} \mathrm{d} u \\
    &= \dfrac{\pi |h|}{2}
  \end{aligned}

が得られるので、結局
\displaystyle
  | g'(x_{0}) | = \lim_{h \to 0} \left| \dfrac{ g(x_{0} + h) - g(x_{0}) }{h} \right|
  \leq \dfrac{\pi}{2}

となる。

残りの山についても評価しよう。k < x < k + 1 とし、u = x - k とおく。\sin(\pi u) \leq \pi u なので

\displaystyle
  0 < g(x) 
  = \dfrac{\sin(\pi u)}{\pi(k + u)}
  \leq \dfrac{u}{k + u}
  \leq \dfrac{u}{k}

が成り立つ。また
\displaystyle
  g'(x) = \dfrac{\cos(\pi u) - g(x)}{k + u}

である。よって
\displaystyle
  \begin{aligned}
    |g'(x)|
    &= \dfrac{| \cos(\pi u) - g(x) |}{ k + u } \\
    &\leq \dfrac{ | \cos(\pi u) | + | g(x) | }{ k + u } \\
    &\leq \dfrac{ 1 + u/k }{ k + u} \\
    &= \dfrac{1}{k}
  \end{aligned}

となる。

以上から

\displaystyle
  \begin{aligned}
    |G'(y)|
    &= \dfrac{1}{|g'(x_{0})|} + \sum_{k = 1}^{m} \left(
      \dfrac{1}{|g'(x_{k, -})|} + \dfrac{1}{|g'(x_{k, +})|}
    \right) \\
    &\geq \dfrac{2}{\pi} + \sum_{k = 1}^{m} 2k \\
    &= \dfrac{2}{\pi} + m + m^{2}
  \end{aligned}

が従う。■

さて、ピースを組み立てて最後のピースを完成させます。

補題11. D(y)0 < y < y_{1} で狭義単調増加である。

証明. m を正の整数とし、y_{m + 1} < y < y_{m} とする。F'(y) の具体的な表示から F'(y) \neq 0 と分かるので、G'(y) \leqq 0 と合わせて

\displaystyle
  D'(y) = F'(y) - G'(y)
  = |F'(y)| \left( \dfrac{|G'(y)|}{|F'(y)|} - 1 \right)

と変形できる。

ところで

\displaystyle
  y_{m + 1}
  = \max_{m + 1 < x < m + 2} g(x)
  \geq g\left( m + \dfrac{3}{2} \right)
  = \dfrac{1}{\pi (m + 3/2)}

が成り立つ。さらに 0 < y < y_{1} において F'(y) は単調増加なので |F'(y)| は単調減少である。よって以下が成り立つ。
\displaystyle
  \begin{aligned}
  |F'(y)| 
  &\leqq \left|F'\left( \dfrac{1}{\pi (m + 3/2)} \right)\right| \\
  &= \dfrac{\pi(m + 3/2)}{\sqrt{ 2 \pi \log( \pi (m + 3/2) ) }}
  \end{aligned}

以上から
\displaystyle
  \begin{aligned}
    \dfrac{|G'(y)|}{|F'(y)|}
    &\geq \left( \dfrac{2}{\pi} + m + m^{2} \right)
    \dfrac{ \sqrt{2 \pi \log(\pi (m + 3/2))} }{ \pi( m + 3/2) } \\
    &= \dfrac{m^{2} + m + 2/\pi}{m + 3/2}
    \sqrt{
      \dfrac{2}{\pi} \log\left( \pi \left( m + \dfrac{3}{2} \right) \right)
    }
  \end{aligned}

が得られる。さらに m \geq 1 より
\displaystyle
\begin{aligned}
  &\hphantom{{}={}}m^{2} + m + \dfrac{2}{\pi} \\
  &= m + \dfrac{3}{2} + (m^{2} - 1) + \left(\dfrac{2}{\pi} - \dfrac{1}{2}\right) \\
  &> m + \dfrac{3}{2}
\end{aligned}

および
\displaystyle
  \log\left( \pi \left( m + \dfrac{3}{2} \right) \right)
  \geq \log \dfrac{5 \pi}{2}
  > \dfrac{\pi}{2}

が成り立つ*4。したがって
\displaystyle
  \dfrac{|G'(y)|}{|F'(y)|} > 1

である。以上から D'(y) > 0 なので、y_{m + 1} < y < y_{m} で狭義単調増加である。

D は連続なので、0 < y < y_{1} で狭義単調増加である。■

主定理の証明・まとめ

最後にすべてまとめます。

主定理の証明.
定義4 に従い、f, g の上位関数をそれぞれ F, G と定義する。また D(y) = F(y) - G(y) と定義する。補題6より、D は補題5の (a) を p = 2 で満たす。また補題7, 8, 11 より D は補題5の(b)を満たす。実際、D の連続性から D(y) = 0 となる 0 < y \leq y_{1} が存在するので、そのひとつを y_{*} とすればよい。よって補題5より任意の p \geq 2 に対して

\displaystyle
  \int_{0}^{1} y^{p - 1} D(y) \mathrm{d} y \geq 0

が成立する。Layer-cake 表示を経由すれば、これより主張が従う。等式が p = 2 でのみ成立することは |\set{ y \mid D(y) \neq 0 }| \geq 1 - y_{1} > 0 から従う。■

以上で証明が終わりました。素朴な問題なのに、証明でいろいろな技術が輝いていてとても面白い定理でしたね。

ではまた。

参考文献

[1] Keith Ball, “Cube slicing in \mathbb R^n,” Proceedings of the American Mathematical Society, 97 (3), 465–473, 1986. MR 840631.
doi: 10.1090/S0002-9939-1986-0840631-0

[2] Fedor L. Nazarov and Anatoliy N. Podkorytov, “Ball, Haagerup, and Distribution Functions,” in V. P. Havin and N. K. Nikolski (eds.), Complex Analysis, Operators, and Related Topics, Operator Theory: Advances and Applications, Vol. 113, Birkhäuser, Basel, pp. 247–267, 2000.
doi: 10.1007/978-3-0348-8378-8_21




\displaystyle

*1:厳密には H\infty 値をとりうるので、もうすこし h に条件を課す必要がある。この記事で扱う f, g では問題ない。

*2:Dirichlet 積分に変形する方法や、Parseval 等式を利用する方法などがある。

*3:\sum\limits_{k = 1}^{\infty} \frac{1}{k^{2}} = \frac{\pi^{2}}{6} はバーゼル問題と呼ばれるよく知られた等式です。

*4:\pi < 4 より \frac{2}{\pi} > \frac{2}{4} = \frac{1}{2} が成り立つ。また \log \frac{5 \pi}{2} = 2.061..., \frac{\pi}{2} = 1.5707... より \log \frac{5 \pi}{2} > \frac{\pi}{2} が成り立つ。

Ball の立方体切断定理 Part 1

今回は単位立方体の断面積の最大値を与える定理、その名もBall の立方体切断定理を紹介します。

単位立方体の断面積を最大化する

単位立方体とは、1辺の長さが1の立方体です。これを平面で切ったときの断面を考えます。このときの断面積の最大値はいくらでしょうか?

Gemini が描いてくれた立方体を切る図。怪しさ満点。

面に平行な断面は面積 1 なので、最大値は少なくとも 1 以上です。こういう問題は大抵対称性の高い方法が最適なので、断面が正六角形になるような切り方を思い浮かべるのではないでしょうか。

断面が正六角形になる切り方

実際に計算してみると、断面積は \dfrac{3\sqrt{3}}{4} \approx 1.299 となります。これが正解かと思いきや、もっと断面積が大きくなる切り方があります。それは以下のような切り方です。

断面積が √2 になる切り方

実際、この切り方の場合、断面積は \sqrt{2} \approx 1.414 になります。

もっと断面積が大きくなる切り方は存在するでしょうか?答えはいいえです。つまり断面積 \sqrt{2} が最大値です。

Ball はこの問題を n 次元に一般化して解決し、以下の定理を証明しました*1。現在では Ball の立方体切断定理 (Ball's cube slicing theorem) と呼ばれているようです。

主定理 (Ball's cube slicing theorem).
n を2以上の自然数とする。n 次元単位立方体 Q_{n} を以下で定義する。

Q_{n} = \left[ - \dfrac{1}{2}, \dfrac{1}{2} \right]^{n} \subseteq \mathbb{R}^{n}

また単位ベクトル a \in \mathbb{R}^{n} および r \in \mathbb{R} に対して、a に垂直な超平面 H_{r, a} を以下で定義する。
H_{r, a} = \set{ x \in \mathbb{R}^{n} \mid a \cdot x = r }

このとき Q_{n} \cap H_{r, a}n - 1 次元体積 v_{n, r, a}
v_{n, r, a} \leq \sqrt{2}

を満たす。等号は例えば
r = 0, \quad a = \dfrac{1}{\sqrt{2}} (1, 1, 0, \dots, 0)

のときに成立する。

この記事ではこの定理の証明を与えます。以下、この記事を通じてこのステートメントの記法を用います。

原点を通る場合への帰着

まずは r = 0 の場合に帰着させます。すなわち以下を示します。

補題1. 自然数 n \geq 2、単位ベクトル a \in \mathbb{R}^{n} および任意の r \in \mathbb{R} に対し、v_{n, r, a} \leq v_{n, 0, a} が成り立つ。

証明. r \in \mathbb{R} に対して S(r) = Q_{n} \cap H_{r,a} とし、S(r)n - 1 次元体積を A(r) とおく。

以下、X_{1}, X_{2} \subseteq \mathbb{R}^{n} および実数 t \in \mathbb{R} に対して、以下のように書くこととする。

\begin{gathered}
X_{1} + X_{2} = \set{ x_{1} + x_{2} \in \mathbb{R}^{n} \mid x_{1} \in X_{1}, x_{2} \in X_{2} }, \\
t X_{1} = \set{ t x_{1} \in \mathbb{R}^{n} \mid x_{1} \in X_{1} }
\end{gathered}

立方体は原点について対称なので、S(r) = - S(-r) が成り立つ。また S(r), S(-r) \subseteq Q_{n} であり、Q_{n} は凸集合なので、

\dfrac{1}{2} S(r) + \dfrac{1}{2} S(-r) \subseteq Q_{n}
が成り立つ。さらに任意の x_{1} \in H_{r, a}, x_{2} \in H_{-r, a} に対して
\dfrac{x_{1} + x_{2}}{2} \cdot a
= \dfrac{r + (-r)}{2}
= 0
より (x_{1} + x_{2}) / 2 \in H_{0,a} が成り立つ。よって
\dfrac{1}{2} S(r) + \dfrac{1}{2} S(-r) \subseteq S(0)
が成立する。

(S(r) + S(-r)) / 2n - 1 次元体積を \bar{A}(r) とおく。包含関係から \bar{A}(r) \leq A(0) である。また平行移動によって両超平面を H_{0, a} と同一視して Brunn-Minkowski の定理*2を適用すると

\bar{A}(r)^{1/(n - 1)} \geq \dfrac{1}{2} A(r)^{1/(n-1)} + \dfrac{1}{2} A(-r)^{1/(n-1)}
が成立する。さらに S(r) = - S(-r) より A(r) = A(-r) なので、結局 \bar{A}(r) \geq A(r) を得る。以上から A(r) \leq A(0) が従う。これは主張にほかならない。■

断面積を具体的に表示

断面として原点を通るもののみ考えればよいことが分かりました。さらに断面積を具体的に表示します。

補題2. 自然数 n \geq 2 および単位ベクトル a \in \mathbb{R}^{n} に対し、以下が成り立つ。

\displaystyle v_{n,0,a} = \int_{\mathbb{R}} \prod_{j} \mathrm{sinc}(a_{j} t) \mathrm{d} t

ただし
\displaystyle \mathrm{sinc}(x) = \begin{cases}
1 & (x = 0), \\
\dfrac{\sin(\pi x)}{\pi x} & (x \neq 0)
\end{cases}

と定義する。

Ball の論文に沿って、なんと確率論を使って計算していきます。

証明. X_{1}, X_{2}, \dots, X_{n}[ - 1/2, 1/2 ] 上の一様分布を持つ独立な確率変数とし、

\displaystyle X = \sum_{j} a_{j} X_{j}

と定める。X の確率密度関数を f(x) とすると f(0) = v_{n,0,a} が成り立つ。実際、微小な \mathrm{d}r に対して r < X < r + \mathrm{d}r となる確率は f(r)\mathrm{d}r と表される。一方、これは立方体のうち2つの超平面 H_{r,a}H_{r+\mathrm{d}r,a} に挟まれた部分の体積であり、v_{n,r,a}\mathrm{d}r と近似できる*3

X_{j} の特性関数は以下のとおりである。

\displaystyle \mathbb{E}[ e^{is X_{j}}] = \mathrm{sinc}\left( \dfrac{s}{2 \pi} \right)

独立性から、X の特性関数 \varphi_{X}(s)
\displaystyle
\begin{aligned}
\varphi_{X}(s)
&= \mathbb{E}[ e^{i s X} ] \\
&= \prod_{j} \mathbb{E}[ e^{i s a_{j} X_{j}} ] \\
&= \prod_{j} \mathrm{sinc}\left( \dfrac{a_{j} s}{2 \pi} \right)
\end{aligned}

と計算できる。よって Fourier 逆変換により*4
\displaystyle
f(0) = \dfrac{1}{2 \pi} \int_{\mathbb{R}} \prod_{j} \mathrm{sinc}\left( \dfrac{a_{j} s}{2 \pi} \right) \mathrm{d} s

を得る。最後に s = 2 \pi t とおけば主張が従う。■

Ball の積分不等式で証明を閉じる

Ball の論文では、以下の不等式を証明しています。現在はBall の積分不等式 (Ball's integral inequality)と呼ばれているようです。

補題3. 任意の p \geq 2 に対して、以下が成立する。

\displaystyle\int_{\mathbb{R}} \left| \mathrm{sinc} \, x \right|^{p} \mathrm{d} x \leq \sqrt{\dfrac{2}{p}}

等号は p = 2 でのみ成立する。

ここでは一旦この主張を認めて、主定理を証明してしまいましょう。

主定理の証明.
ある j について |a_{j}| \geq \dfrac{1}{\sqrt{2}} ならば、断面を j 番目の座標に垂直な座標超平面へ射影すれば

\displaystyle v_{n, 0, a} \leq \dfrac{1}{|a_{j}|} \leq \sqrt{2}

となるので、成立する*5

以下、すべての j について |a_{j}| < \dfrac{1}{\sqrt{2}} が成り立つと仮定する。 \sum_{j} a_{j}^{2} = 1 なので、多変数の Hölder の不等式より

\displaystyle
\int_{\mathbb{R}} \prod_{j} \left| \mathrm{sinc}( a_{j} t ) \right| \mathrm{d} t
\leq {\prod_{j}^{}}'
\left(
  \int_{\mathbb{R}} | \mathrm{sinc}(a_{j} t) |^{1 / a_{j}^{2}} \mathrm{d} t
\right)^{a_{j}^{2}}

が成り立つ。ただし \prod'a_{j} \neq 0 なる範囲での積である。a_{j} \neq 0 のとき、補題3より
\displaystyle
\begin{aligned}
  \int_{\mathbb{R}} | \mathrm{sinc}(a_{j} t) |^{1/a_{j}^{2}} \mathrm{d} t
  &= \dfrac{1}{|a_{j}|} \int_{\mathbb{R}} | \mathrm{sinc} \, \tau |^{1 / a_{j}^{2}} \mathrm{d} \tau \quad (\tau = |a_{j}| t) \\
  &\leq \dfrac{1}{|a_{j}|} \sqrt{ 2 a_{j}^{2} } \\
  &= \sqrt{2}
\end{aligned}

が従う。以上から
\displaystyle
  \int_{\mathbb{R}} \prod_{j} \left| \mathrm{sinc}( a_{j} t ) \right| \mathrm{d} t
  \leq {\prod_{j}}' \sqrt{2}^{a_{j}^{2}}
  = \sqrt{2}

が従う。

以上と補題1, 2 から

\displaystyle
\begin{aligned}
v_{n, r, a}
&\leq v_{n, 0, a} \\
&= \int_{\mathbb{R}} \prod_{j} \mathrm{sinc}(a_{j} t) \mathrm{d} t \\
&\leq \int_{\mathbb{R}} \prod_{j} \left| \mathrm{sinc}(a_{j} t) \right| \mathrm{d} t \\
&\leq \sqrt{2}
\end{aligned}

となり、主定理が示された。■

よって、最後の関門は Ball の積分不等式 (補題3) のみとなりました。

次回予告:Nazarov–Podkorytov による Ball の積分不等式の証明

さて、補題3の証明ですが、Ball の論文ではかなり気合の不等式評価をしています。具体的には Taylor 展開しまくって |\mathrm{sinc} \, x|^{p} を各点で頑張って評価しています。

以前この論文を読んだときここで挫折したのですが、GPT に「もっといい証明ない?」と聞いてみたところ Nazarov–Podkorytov の手法がシンプルだよと教えてくれました。

Nazarov–Podkorytov の手法では以下を証明します。

次回の主定理. g(x) = |\mathrm{sinc} \, x|, f(x) = e^{- \pi x^{2} / 2} とおく。p \geq 2 に対して

\displaystyle
  \int_{0}^{\infty} g(x)^{p} \mathrm{d} x \leq \int_{0}^{\infty} f(x)^{p} \mathrm{d} x

が成り立つ。

これから Ball の積分不等式が直ちに従うことを確認します。右辺は Gauss 積分なので具体的に計算することができて

\displaystyle
  \int_{0}^{\infty} f(x)^{p} \mathrm{d} x
  = \int_{0}^{\infty} e^{- \pi p x^{2} / 2} \mathrm{d} x
  = \dfrac{1}{\sqrt{2 p}}

となります。f, g はどちらも偶関数なので、積分範囲を広げれば Ball の積分不等式が従います。

Nazarov–Podkorytov の手法では、各点で f(x)g(x) を直接比較する代わりに、閾値 \lambda を動かしたときの上位集合 \set{ f > \lambda }\set{ g > \lambda } の大きさを比較します。これにより、(各点で気合で評価するのと比べると) かなり見通しのよい証明になります。

今回はここまで。次回は具体的に Nazarov–Podkorytov の手法を解説します。

ではまた。

続き↓
smooth-pudding.hatenablog.com

参考文献

[1] Keith Ball, “Cube slicing in \mathbb R^n,” Proceedings of the American Mathematical Society, 97 (3), 465–473, 1986. MR 840631.
doi: 10.1090/S0002-9939-1986-0840631-0

[2] Fedor L. Nazarov and Anatoliy N. Podkorytov, “Ball, Haagerup, and Distribution Functions,” in V. P. Havin and N. K. Nikolski (eds.), Complex Analysis, Operators, and Related Topics, Operator Theory: Advances and Applications, Vol. 113, Birkhäuser, Basel, pp. 247–267, 2000.
doi: 10.1007/978-3-0348-8378-8_21

*1:Ball なのに球じゃなくて立方体なんかい、って思った人は手を挙げてください。私もです。

*2:Brunn–Minkowski theorem - Wikipedia を参照。気が向いたらまた紹介記事を書きます。

*3:ここはやや数学的にごまかしています。ちゃんと正当化したい場合は、まず区間に対する確率を断面積の積分として表し、Radon–Nikodym 微分で密度を構成した上で、連続性を用いて f(0)=v_{n,0,a} を確認してください。

*4:厳密には、a によっては右辺の積分が絶対収束しない場合があります。この場合は広義積分として解釈します。なお、後の主定理の証明でこの表示を用いるケースでは絶対収束します。

*5:j 以外の座標の取りうる範囲を Q_{n-1} まで広げると、n-1 次元体積が射影のヤコビアンの逆数分、すなわち 1 / |a_{j}| となり、これで上から評価されます。

日本語の LLM “方言” の考察

まずは、これを読んでください。

新しいことを始めるときは、まず軸を置いて全体を整理しておくのがかなり効きます。いきなり細部を掘るより、何パターンか回して傾向を拾い、刺さる方向が見えてきたところで具体案に落とす方が強いです。この方法は高い柔軟性を持つので、途中で問題が出ても論点を切って調整できます。結果に差が見えたら、その違いを方向性が固まったサインと読んで、完成形に寄せていけばよいでしょう。

どうでしょう。かなり「AI 臭さ」を感じませんか?

文法的にはそこまでおかしくないし、言っていることも普通に分かります。しかし、日本語ネイティブが同じ内容を書くと、たぶんこうはなりません。なにが原因なのでしょう?

最近 GPT や Claude と話していて、このような「意味は完全に分かるのに、なぜか AI が書いたと分かる日本語」が気になっていました。そこで今回は、こういう表現を勝手に「LLM 方言」と呼んで、何が起きているのか考えてみます。

なぜ冒頭の文章は「方言」のように感じるのか

まず、冒頭の文章にはわざと LLM が使いがちな表現を大量に詰め込んでいます。

  • 軸を置く
  • 整理する
  • 効く
  • 掘る
  • 回す
  • 拾う
  • 刺さる
  • 落とす
  • 強い
  • 高い柔軟性を持つ
  • 論点を切る
  • ~と読む
  • 寄せる

多い。

もちろん、この中には普通の日本語として使われる表現もあります。「整理する」なんて日常的に使いますし、「若者に刺さる」「仕様に落とし込む」なども別におかしくありません。どうも問題は単語そのものではなさそうです。

ではどこが違うのでしょうか。どうやら、使える意味の範囲を広く取りすぎていることにありそうです。いくつか具体的に見てみましょう。

強い

ChatGPT にディズニーランドとディズニーシーを比較してもらったところ、

ディズニーシーはこの点が強いです。一方でディズニーランドはこの点が強いです。

というふうな表現が返ってきました。「傾向が強い」「個性が強い」「印象が強い」なら普通ですが、「この点で優れている」「こちらの方が魅力が大きい」という意味まで「強い」で表現するのはすこし違和感があります。「この点が強い」と言われても意味は分かる。でも普通そうは言わんやろ、という感じがあります。

効く

この方法はかなり効きます。

ここで具体例を入れると効きます。

この整理の仕方が効きます。

「薬が効く」「対策が効く」「この工夫が効いている」なら自然ですが、LLM は「有効である」「効果がある」「理解しやすくなる」「改善につながる」あたりまで全部「効く」で済ませがちです。

刺さる

この機能は初心者に刺さります。

この構成は数学好きに刺さります。

この説明は直感派の人に刺さります。

「この広告は若者に刺さる」くらいなら特に違和感はありませんが、「その人に適している」「その人が好みそう」「その人にとって分かりやすい」といったところまで「刺さる」が侵食してきます。

掘る・切る

この論点をもう少し掘りましょう。

いや、掘り下げろ。

日本語でも「ちょっと掘ってみる」のような口語表現はありますが、LLM は本来「掘り下げる」と言うところでも平然と「掘る」と言います。同じように、

論点を切る

と言うこともありますが、こちらも普通なら「切り分ける」「分ける」あたりでしょう。この二つは先ほどまでとは少し違って、複合動詞をやたら短くしているようにも見えます。

持つ

この方式は高い柔軟性を持ちます。

何が言いたいかは分かります。しかし日本語なら「この方式は柔軟性が高い」で十分でしょう。

この手法は一定の限界を持ちます。

両者は緊張関係を持っています。

なども、「一定の限界があります」「緊張関係にあります」の方が自然です。

こうして並べてみると、LLM 方言は単純な誤用とは少し違います。一つ一つを見ると、日本語にも似た使い方がちゃんとあります。ただ、ネイティブなら文脈によって別々の単語を選ぶところを、LLM は少数の単語に大量の仕事をさせている。どうもこのあたりが、あの独特な「AI 臭さ」を作っているように思います。

仮説:英語から来ているのでは?

では、なぜこんなことが起きるのでしょうか。

ここで一つ気になることがあります。先ほど挙げた単語を英語にしてみると、妙に対応関係が見えてきます。

例えば「強い」は strong です。英語では strong pointstrong appealstrong candidatestrong preference など、strong をかなり広い意味で使えます。

DisneySea is stronger in this respect.

のような表現も自然です。これをそのまま日本語の単語に対応させれば、

ディズニーシーはこの点が強いです。

のできあがりです。

「効く」は work を考えると分かりやすいです。

This approach works.

This works well for beginners.

Adding an example here works well.

英語では、このように「うまくいく」「効果がある」を work で広く表現できます。日本語なら「この方法は有効です」「初心者にはこの方法がうまくいきます」「ここで具体例を入れると分かりやすくなります」などと表現が分かれるところですが、これを広く「効く」に対応させれば、LLM おなじみの

この方法はかなり効きます。

ができあがります。

「持つ」も英語の have を考えると納得できます。

This approach has some limitations.

This system has good compatibility with existing software.

のように英語では have がかなり広く使えます。日本語では「限界がある」「互換性が高い」と言うところまで「have → 持つ」としてしまえば、「限界を持つ」「高い互換性を持つ」という日本語になります。

さらに「read → 読む」、「see → 見る」 も怪しいです。英語では read the result as ... のように read を「解釈する」という意味で使えますし、see も視覚的に「見る」だけではなく、認識する、理解する、解釈するといった意味を広く持っています。そのせいなのか、LLM は、

この結果は~と読めます。

これを一種の最適化として見ることができます。

のような言い方をよくします。

ほかにも 「dig into → 掘る」、「pick up → 拾う」 あたりも同じような雰囲気を感じさせます。もちろん全部が綺麗に一対一対応するわけではなく、「軸」「寄せる」「落とす」まで英語由来だと言い始めるとだいぶ怪しくなってきます。ただ少なくとも「強い」「効く」「持つ」「見る」「読む」あたりについては、「英語では広い意味を持っている単語に対応する日本語を、そのまま同じぐらい広く使ってしまっている」と考えると、綺麗に説明できてしまうように思います。ある種「逆ルー大柴」と言えそうです(?)。

LLM 方言が意味するもの

ここまでの LLM 方言は、主に GPT や Claude と話している中で見つけたものです。どちらもアメリカの企業が開発しているモデルで、英語のデータから非常に大きな影響を受けていることは間違いないでしょう。

一方で「LLM はまず英語で考えて、それを日本語に翻訳している」と考えるのは単純すぎるようです。Anthropic が Claude の内部を調べた研究では、異なる言語の間で共有される概念表現が観察されており、少なくとも単純な逐語翻訳のような仕組みではなさそうです。
www.anthropic.com

それでも、その「概念」の作られ方に英語の影響が強く残っている可能性はあるのではないでしょうか。例えば英語では strong 一語で表せる意味の領域があり、日本語ではその領域を「強い」「優れている」「魅力が大きい」「有力である」など複数の単語で分担しているとします。LLM の中でできあがった意味の領域と日本語の単語の意味の領域が本当は少しずれているのに、生成するときに日本語の「強い」をその領域全体へ当てはめてしまう。そう考えると、「意味は合っているのに、その単語はそこでは使わない」という LLM 方言ができるのも納得できます。

またこのことから、Sakana AI の Namazu のようなアプローチの意味が見えてきます。Namazu は高性能な既存の基盤モデルに対して、日本語や日本の文化・社会的文脈に合わせた事後学習を行う方向で開発されています。Sakana AI 自身も、日本語能力を含めてベースモデルから改善することを評価しています。
sakana.ai

個人的には「Namazu の日本語はとても自然だ」と感じているのですが、もしかするとこういった事後学習で「この概念なら日本人はどの単語を選ぶか」というレベルの調整がなされていて、その結果 LLM 方言が薄くなっているのかもしれません。

また、この現象を逆に考えると、LLM 方言を観察することが英語の勉強につながる可能性もあります。

この方法は効く。

は日本語として妙でも、

This approach works.

なら自然ですし、

この点が強い。

は妙でも、

stronger in this respect

なら普通に使えます。

我々が英語を話すときは日本語の単語の範囲に引きずられて英単語を狭く使ってしまうことがありますが、LLM 方言はちょうどその逆です。LLM の変な日本語を真似せず、その一歩手前にある英語だけ真似すれば、むしろ自然な英語に近づくのかもしれません。やはり逆ルー大柴ですね(???)。

まとめ

今回は、LLM が話す独特な日本語を「LLM 方言」として眺めてみました。単なる誤用ではなく、日本語にも存在する単語を、本来よりずっと広い意味で使っている。そしてその意味の広がりを調べてみると、英語の strongworkhaveseeread などと妙によく対応している、というのが今回の仮説でした。

思いつきの考察なので、どこまでちゃんと正当化できるかはわかりません。ただ、この考察を読んだみなさんが「AI 臭い」文の見方が変わったのなら、この記事を書いてよかったなと思います。

みなさんも、LLM の方言を見つけたら、温かく見守ってあげてください。ではまた。

Namazu を Claude から呼べるようにする

Sakana Namazu というモデルがあります。

sakana.ai

ベースは中国のモデルですが*1、日本語や日本文化についてしっかり事後学習してあるので、とても自然な日本語を話してくれます。

今回はそんな Namazu を Claude から呼び出す方法を紹介します。

Namazu の利用方法

簡単に利用するには、Sakana Chat がおすすめです。Namazu とお話できます。

chat.sakana.ai

大阪モードのレスポンスは、ネイティブの私にとっても申し分ないクオリティです。

また Namazu を使った翻訳サービス Sakana Translate もあります。

chat.sakana.ai

コマンドラインで使えるようにする

チャットするだけでも楽しいのですが、それでは物足りなくなるのが人情というもの。嬉しいことに、最近 Namazu API が公開されました。

sakana.ai

これを使ってコマンドラインでも利用できるようにできます。


だいたいこんな感じだったと思います(うろ覚え)

  1. 冒頭のページにアクセス
  2. 今から始める的なボタンを押す
  3. アカウントを登録する
  4. 支払い情報を登録する
  5. クレジットを入金する
  6. API キーを作成してトークンを生成して控えておく
  7. 適当なシステムを組んで API でリクエストを飛ばせるようにする
  8. コマンドでこれを呼び出せるようにする

最後の2つを詳しく説明します。

API でリクエストを飛ばせるようにする方法

OpenAI 互換なので、Python で簡単に作ることができます。Claude Code をお持ちなら「OpenAI 互換の API でアクセスできるシステムを作って」で完成すると思います。

私の環境では以下が生成されました。OS は Ubuntu 24.04 です。このスクリプトの場合は、SAKANA_API_KEY という環境変数にトークンを登録すれば準備完了です。

#!/usr/bin/env python3
"""Sakana Namazu API (Chat Completions, OpenAI互換) を呼び出す薄いラッパー。

Namazu API にはタスク別の専用エンドポイントは存在しない。プロンプト
(system/user) は呼び出し側(オーケストレーター)が組み立て、このスクリプトは
認証・HTTP通信・出力整形のみを担当する。

認証: このスクリプトと同じディレクトリの .env に SAKANA_API_KEY=... を保存しておく
(このスクリプトが自動で読む)。

使用例:
    # 直接テキストを渡す
    namazu --system "あなたは有能なアシスタントです。" \\
        --user "ここに聞きたいこと・依頼したいことを書く"

    # ファイルから読む
    namazu --system "..." --user-file input.txt

    # 標準入力から読む (--user / --user-file を省略した場合)
    cat input.txt | namazu --system "..."

    # 生のレスポンスJSONが欲しい場合
    namazu --system "..." --user "..." --json
"""

from __future__ import annotations

import argparse
import os
import sys
from pathlib import Path

from dotenv import load_dotenv
from openai import OpenAI

DEFAULT_BASE_URL = "https://api.sakana.ai/v1"
DEFAULT_MODEL = "sakana-namazu"


def parse_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser(
        description="Sakana Namazu Chat Completions API を呼び出す",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog=__doc__,
    )
    parser.add_argument(
        "--system", default=None, help="system プロンプト (省略可)"
    )
    text_group = parser.add_mutually_exclusive_group()
    text_group.add_argument("--user", default=None, help="user メッセージの本文")
    text_group.add_argument(
        "--user-file", type=Path, default=None, help="user メッセージ本文を読むファイル"
    )
    parser.add_argument(
        "--model", default=DEFAULT_MODEL, help=f"モデルID (デフォルト: {DEFAULT_MODEL})"
    )
    parser.add_argument(
        "--temperature", type=float, default=0.3, help="温度パラメータ (デフォルト: 0.3)"
    )
    parser.add_argument(
        "--max-tokens", type=int, default=4096, help="最大出力トークン数 (デフォルト: 4096)"
    )
    parser.add_argument(
        "--json", action="store_true", help="レスポンス全体をJSONで出力する"
    )
    return parser.parse_args()


def read_user_text(args: argparse.Namespace) -> str:
    if args.user is not None:
        return args.user
    if args.user_file is not None:
        return args.user_file.read_text(encoding="utf-8")
    if sys.stdin.isatty():
        raise SystemExit(
            "エラー: --user / --user-file が無い場合は標準入力からテキストを渡してください。"
        )
    return sys.stdin.read()


def main() -> None:
    load_dotenv(Path(__file__).parent / ".env")
    args = parse_args()
    user_text = read_user_text(args)

    messages = []
    if args.system:
        messages.append({"role": "system", "content": args.system})
    messages.append({"role": "user", "content": user_text})

    api_key = os.environ.get("SAKANA_API_KEY")
    if not api_key:
        raise SystemExit(
            "エラー: SAKANA_API_KEY が設定されていません。namazu/.env に "
            "SAKANA_API_KEY=... を記入してください。"
        )
    client = OpenAI(base_url=DEFAULT_BASE_URL, api_key=api_key)

    response = client.chat.completions.create(
        model=args.model,
        messages=messages,
        temperature=args.temperature,
        max_tokens=args.max_tokens,
    )

    if args.json:
        print(response.model_dump_json(indent=2))
    else:
        print(response.choices[0].message.content)


if __name__ == "__main__":
    main()

コマンドラインで Namazu を呼び出せるようにする

Python のスクリプトができたら、実はあと1ステップで終わりです。スクリプトのおいてあるディレクトリで以下を実行すれば完了です。(事前に uv のインストールが必要です)

uv tool install --editable .

これが完了すると namazu --user "ぬるぽ" などとすると「ガッ」と返してくれるようになりました。かわいいね。

Claude から Namazu を呼び出せるようにする

最後に Claude から呼び出せるようにします。Claude Code で「namazu のコマンドをよしなに呼び出せるスキルをグローバルに作って」と依頼したら一瞬で完成です。ちなみに私のところで作られた SKILL.md は以下のとおりです。

---
name: namazu
description: Send a request to the Sakana Namazu API (Chat Completions, OpenAI-compatible) via the globally installed `namazu` CLI. A general-purpose system/user request wrapper — not tied to any fixed task (e.g. not a proofreading-specific tool).
---

# Namazu Skill

Runs the globally installed `namazu` command to call the Sakana Namazu Chat Completions API.

`namazu` is installed system-wide (`uv tool install --editable`, source at `~/.local/share/namazu-tools/`), so it works from any directory in any Claude Code session — no per-project setup needed. The API key is already configured in `~/.local/share/namazu-tools/.env`.

`namazu` itself has no fixed purpose: it's a thin wrapper that just sends whatever `--system` / `--user` content it's given to the Namazu model. What task it performs (proofreading, drafting, analysis, translation, etc.) is entirely determined by the prompt passed in at call time.

## Instructions

1. Run `namazu` via the Bash tool with the arguments supplied after `/namazu`, e.g.:
   ```
   namazu --system "<system prompt>" --user "<user text>"
   ```
2. If the system/user content isn't clear from the invocation, ask the user what to send rather than guessing at a task.
3. Long input can be piped or passed via `--user-file` instead of `--user`.
4. Return the response text to the user. Only pass `--json` when raw response metadata (e.g. token usage) is explicitly wanted.

## Options (passed through to the CLI)

| Option | Description |
|---|---|
| `--system` | system prompt (optional) |
| `--user` / `--user-file` | user message content (mutually exclusive; omit both to read stdin) |
| `--model` | model ID (default `sakana-namazu`) |
| `--temperature` | default `0.3` |
| `--max-tokens` | default `4096`; raise explicitly for long input |
| `--json` | print the full response JSON instead of just the text |

Full reference: `namazu --help`.

## Usage

```
/namazu --system "<system prompt>" --user "<user text>"
```

## Examples

```
/namazu --system "あなたは有能なアシスタントです。" --user "この文章を3行で要約して"
/namazu --system "You are a translator." --user-file draft.txt
cat notes.txt | namazu --system "箇条書きに整理して"
```

実行してみた結果がこちら。

なんだこいつ〜!?

ではまた。

*1:現在は Kimi K2.6 がベースのようです。

黒峰問題完全解決

黒峰問題が今度こそ本当に解決しました。
今回はその内訳を余すことなくお届けします。

経緯

今から7年前、黒峰さん ( @kuromineharuto )という方が作った整数問題、いわゆる黒峰問題が Twitter で盛り上がっていました。一度は解決宣言をしたのですが、残念ながらその後欠陥が見つかり、未解決のままになっていました。

smooth-pudding.hatenablog.com

今年の4月には、成長のとどまるところを知らない AI がそのうち解いてくれるのではないか、という期待を込めて、久しぶりに問題を再整理する記事を投稿しました。

smooth-pudding.hatenablog.com

突然、とあるコメントが投稿されました。


github.com

ついに「その瞬間」が到来したのです。

コメントをくれた本人と連絡を取り合い、複数の方法で検証したところ、どうやら今度こそ本当に解決であろう、ということが分かりました。

そこで今回は、この証明をベースとして、さらにコンパクトにしたものをお届けしたいと思います。前回までの記事で示した内容もなるべく含めて、可能な限り self-contained にしようと思います。

黒峰問題の設定

定義(黒峰方程式)
次の方程式を黒峰方程式と呼ぶ。

 \displaystyle 2^x+3^y+5=z^3

黒峰問題とは、黒峰方程式の整数解、すなわち x, y, z がすべて整数となるような解をすべて求めよ、という問題です。

小さい数値で実験してみると、すぐに以下に気づきます。

\begin{aligned}
2^1+3^0+5=8=2^3 \\
2^5+3^3+5=64=4^3
\end{aligned}

したがって、以下は黒峰方程式の整数解と分かります。

 \displaystyle (x,y,z)=(1,0,2),(5,3,4)

しかし、どれだけ頑張って探しても、これ以外に整数解が見つかりませんでした。実は、本当にこれら以外には整数解が存在しません。つまり、黒峰問題の完全解決とは、以下を証明することです。

定理(黒峰問題の完全解決)
黒峰方程式の整数解は

 \displaystyle (x,y,z)=(1,0,2),(5,3,4)

 2 組だけである。

以下では、この定理を証明していきます。

前回記事ですでに分かっていたこと

整数指数から非負整数指数への帰着

補題1
黒峰方程式の整数解は

 \displaystyle x\geqq0,\quad y\geqq0,\quad z>0

を満たす。

証明

等式の両辺に  2^{|x|} を掛けて変形すると、

 \displaystyle 2^{|x|}3^y=-2^{x+|x|}-5\cdot2^{|x|}+z^3\cdot2^{|x|}

となる。右辺は整数なので、左辺も整数でなければならない。  2^{|x|}  3 の倍数ではないため、  y<0 なら左辺は整数にならない。したがって  y\geqq0 である。

さらに、元の等式を

 \displaystyle 2^x=-3^y-5+z^3

と変形する。右辺は整数なので、左辺も整数でなければならない。したがって  x\geqq0 である。

また、元の方程式の左辺は正なので  z^3>0 であり、  z>0 となる。□

これ以降は、特別な言及が無い限り、 x, y を非負整数、  z を正の整数として考えます。

小さい指数の分類

補題2
 y<3 である解は

 \displaystyle (x,y,z)=(1,0,2)

だけである。

証明

 y=0 なら

 \displaystyle 2^x+6=z^3

である。  x\geqq2 なら左辺を  4 で割った余りは  2 になる。しかし整数の三乗を  4 で割った余りは  0,1,3 のいずれかであり、  2 にはならない。したがって  x=0,1 だけを調べればよく、  x=1 のときだけ  z=2 を得る。

 y=1 なら

 \displaystyle 2^x+8=z^3

である。  \mathrm{mod}\ 7 で考えると、  2^x  7 で割った余りは  1,2,4 のいずれかなので、  z^3  7 で割った余りは  2,3,5 のいずれかとなる。一方、整数の三乗を  7 で割った余りは  0,1,6 のいずれかなので、解は存在しない。

 y=2 なら

 \displaystyle 2^x+14=z^3

である。  x\geqq2 なら左辺を  4 で割った余りは  2 になる。しかし整数の三乗を  4 で割った余りは  0,1,3 のいずれかなので、これは不可能である。残る  x=0,1 も直接調べれば、いずれも解を持たない。□

補題3
 x=5 である解は

 \displaystyle (x,y,z)=(5,3,4)

だけである。

証明

 x=5 なら

 \displaystyle 3^y+37=z^3

である。  y が偶数なら、  \mathrm{mod}\ 4

 \displaystyle z^3\equiv1+37\equiv2\pmod4

となるので不可能である。したがって  y は奇数である。

よって  y  6 で割った余りは  1,3,5 のいずれかである。  y\equiv1\pmod6 なら、  \mathrm{mod}\ 7

 \displaystyle z^3\equiv3+37\equiv5\pmod7

となるが、  5  7 を法とする立方剰余ではない。また、  y\equiv5\pmod6 なら、  \mathrm{mod}\ 13

 \displaystyle z^3\equiv3^5+37\equiv9+11\equiv7\pmod{13}

となるが、  7  13 を法とする立方剰余ではない。したがって

 \displaystyle y\equiv3\pmod6

である。

そこで  y=3\eta,\ t=3^\eta とおくと、

 \displaystyle z^3-t^3=37

である。差の三乗を因数分解して、

 \displaystyle (z-t)(z^2+zt+t^2)=37

を得る。  z>t であり、  37 は素数なので、  z-t=1 である。したがって

 \displaystyle 37=(t+1)^2+t(t+1)+t^2=3t(t+1)+1

より  t(t+1)=12 、したがって  t=3 である。よって  \eta=1,\ y=3,\ z=4 となる。□

補題4
 x<5,\ y\geqq3 である解は存在しない。

証明

 y\geqq3 なので、  3^y\equiv0\pmod9 である。したがって  \mathrm{mod}\ 9

 \displaystyle z^3\equiv2^x+5\pmod9

となる。  x=0,1,2,3,4 に対する右辺の余りは順に  6,7,0,4,3 である。一方、整数の三乗を  9 で割った余りは  0,1,8 のいずれかなので、可能性が残るのは  x=2 だけである。

しかし  x=2 なら

 \displaystyle z^3=3^y+9

である。  y\geqq3 より、右辺を  27 で割った余りは  9 となる。一方、右辺は  3 の倍数なので  z  3 の倍数であり、  z^3  27 の倍数でなければならない。これは矛盾である。□

補題2から4は以下の定理にまとめられます。

定理5
 x<6 または  y<3 である解は

 \displaystyle (x,y,z)=(1,0,2),(5,3,4)

 2 組だけである。

証明

 y<3 なら補題2より  (x,y,z)=(1,0,2) である。

 y\geqq3 とする。このとき仮定より  x<6 である。  x<5 なら補題4より解は存在せず、  x=5 なら補題3より  (x,y,z)=(5,3,4) である。□

定理5より、まだ未解決なのは

 \displaystyle x\geqq6,\quad y\geqq3

の場合だけとなります。

大きい指数に対する合同条件

補題6
 x\geqq6,\ y\geqq3 である解が存在するなら、

 \displaystyle x\equiv1\pmod4,\quad y\equiv45\pmod{48}

が成り立つ。

証明

\mathrm{mod} \ 9 を考えると、y \geqq 3 より

2^{x} + 5 \equiv z^{3} \pmod{9}

を満たす必要がある。整数の三乗は \mathrm{mod} \ 90, 1, 8 のいずれかなので、x \equiv 2, 5 \pmod{6} となる。

\mathrm{mod} \ 64 を考えると、x \geqq 6 より

3^{y} + 5 \equiv z^{3} \pmod{64}

を満たす必要がある。整数の三乗が \mathrm{mod} \ 64 で取りうる値を考えることで、y \equiv 1, 5, 9, 11, 13 \pmod{16} となる。

素数 p に対して、\mathrm{mod}\ p での黒峰方程式

2^{x} + 3^{y} + 5 \equiv z^{3} \pmod{p}

が解を持つ条件について考える。これまでと同様に、z^{3}\mathrm{mod}\ p で取りうる値に制約があるため、p ごとにそれぞれ x, y に制約が与えられる。

具体的に p = 13, 43, 73, 97, 337, 577, 673, 1009 について考え、中国式剰余定理を用いて結果を組み合わせると、x, y について

(x \bmod 1008, y \bmod 336) \equiv (5, 45), (5, 333), (725, 45)

でなければならないことが分かる。いずれのケースも

x \equiv 1 \pmod{4}, \quad y \equiv 45 \pmod{48}

を満たす。□

上記の後半の計算を実際に手で行うのは大変なので、プログラムで実行します。以下はこの計算を行う Python コードです。

# coding: utf-8

X_MOD = 1008
Y_MOD = 336


# 立方剰余を計算
def cubic_residue(p: int) -> set[int]:
    return {pow(n, 3, p) for n in range(p)}


# 2^x + 3^y + 5 ≡ z^3 (mod p) となりうる (x,y) を集める
def sieve(p: int) -> set[tuple[int, int]]:
    z_cubed_candidates = cubic_residue(p)

    pow2 = [pow(2, x, p) for x in range(X_MOD)]
    pow3 = [pow(3, y, p) for y in range(Y_MOD)]

    sieved = {
        (x, y)
        for x in range(X_MOD)
        for y in range(Y_MOD)
        if (pow2[x] + pow3[y] + 5) % p in z_cubed_candidates
    }

    return sieved


def main():
    candidates = set(
        (x, y)
        for x in range(X_MOD)
        for y in range(Y_MOD)
        if x % 6 in {2, 5} and y % 16 in {1, 5, 9, 11, 13}
        # mod 9, mod 16 の検査で絞ったところからスタート
    )

    # 篩を重ね合わせる
    primes = [13, 43, 73, 97, 337, 577, 673, 1009]
    for p in primes:
        candidates &= sieve(p)

    print(candidates)


if __name__ == "__main__":
    main()

paiza.io で動作確認できます。

幻惑解

合同式による絞り込みを続けても、最後の候補は完全には消えません。その原因となるのが、次の有理数解です。

定義(幻惑解)
次の黒峰方程式の有理数解を幻惑解と呼ぶ。

 \displaystyle (x,y,z)=\left(5, -3,\frac{10}{3}\right)

実際、

 \displaystyle 2^5+3^{-3}+5=\left(\frac{10}{3}\right)^3

が成り立ちます。もちろん  y  z が整数ではないため、黒峰問題の解ではありません。

しかし、  3 と互いに素な数  m を法として考えると、  3 には逆数があります。すなわち、

 \displaystyle 3r\equiv1\pmod m

となる整数  r が存在します。このとき、

 \displaystyle 2^5+r^3+5\equiv(10r)^3\pmod m

が成り立ちます。つまり幻惑解は、  3 と互いに素な法の世界では整数解のように振る舞います。固定した有限個の法による合同式だけでは最後の候補を排除できないのは、このためです。

Jacobi記号

Jacobi記号は高校数学では扱わないため、定義や一般的な性質は以下の記事にまとめました。

smooth-pudding.hatenablog.com

この記事では、次の一般的な事実だけを引用します。

Jacobi記号の一般的な性質

 A を正の奇数とし、 a  A は互いに素であるとする。

ある整数  u について

 \displaystyle u^2\equiv a\pmod A

が成り立つなら、

 \displaystyle \left(\frac{a}{A}\right)=1

である。

また、Jacobi記号には次の公式が成り立つ。

 \displaystyle \left(\frac{-1}{A}\right)=(-1)^{(A-1)/2}

 \displaystyle \left(\frac{2}{A}\right)=(-1)^{(A^2-1)/8}

さらに、 p,q を互いに素な正の奇数とすると、

 \displaystyle \left(\frac{p}{q}\right)\left(\frac{q}{p}\right)=(-1)^{(p-1)(q-1)/4}

が成り立つ。

これらの定義と証明は参照先の記事に譲ります。以下では、この一般的な性質を黒峰問題から得られる整数  A に適用します。

未解決だった部分の証明

ここからが、今回新たに得られた部分です。

補題7
 x\geqq6,\ y\geqq3 である解が存在すると仮定する。このとき

 \displaystyle y=3\eta,\quad \eta\equiv3\pmod4

となる非負整数  \eta が存在する。

証明

補題6より  y\equiv45\pmod{48} である。特に  y  3 の倍数なので、  y=3\eta と書ける。また

 \displaystyle 3\eta\equiv45\equiv9\pmod{12}

より、

 \displaystyle \eta\equiv3\pmod4

である。□

補題8
 x\geqq6,\ y\geqq3 である解が存在するなら、

 \displaystyle z\equiv30\pmod{40}

である。

証明

まず  \mathrm{mod}\ 5 で考える。補題6より  x\equiv1\pmod4  y\equiv45\equiv1\pmod4 なので、

 \displaystyle 2^x\equiv2\pmod5,\qquad 3^y\equiv3\pmod5

である。したがって、

 \displaystyle z^3\equiv2+3+5\equiv0\pmod5

となり、  z  5 の倍数である。

次に  \mathrm{mod}\ 64 で考える。  x\geqq6 より  2^x\equiv0\pmod{64} である。また  y\equiv13\pmod{16} であり、  3^{16}\equiv1\pmod{64} なので、

 \displaystyle 3^y\equiv3^{13}\equiv19\pmod{64}

である。よって、

 \displaystyle z^3\equiv19+5\equiv24\pmod{64}

となる。  0 から  63 までを調べると、三乗して  24 になる数はすべて  8 で割って  6 余るので、

 \displaystyle z\equiv6\pmod8

である。  z  5 の倍数でもあるので、  2 つの条件を合わせて

 \displaystyle z\equiv30\pmod{40}

を得る。□

定義
補題7の  \eta を用いて、

 \displaystyle t=3^\eta,\qquad A=z-t

とおく。

補題9
上で定義した  A

 \displaystyle A>0,\qquad A\equiv3\pmod{40}

を満たす。

証明

元の方程式は

 \displaystyle z^3=t^3+2^x+5

である。右辺は  t^3 より大きいので  z>t 、したがって  A=z-t>0 である。

また補題7より  \eta\equiv3\pmod4 であり、  3^4\equiv1\pmod{40} なので、

 \displaystyle t=3^\eta\equiv3^3\equiv27\pmod{40}

である。補題8の  z\equiv30\pmod{40} と合わせると、

 \displaystyle A=z-t\equiv30-27\equiv3\pmod{40}

となる。□

補題10
上で定義した  A について、

 \displaystyle A\mid2^x+5

が成り立つ*1

証明

 y=3\eta  t=3^\eta より  3^y=t^3 である。したがって元の方程式から、

 \displaystyle 2^x+5=z^3-t^3

を得る。差の三乗を因数分解すると、

 \displaystyle 2^x+5=(z-t)(z^2+zt+t^2)

である。  A=z-t なので、  A\mid2^x+5 となる。□

補題11
 -10  A を法とする平方である。すなわち、ある整数  u について

 \displaystyle u^2\equiv -10\pmod A

が成り立つ。

証明

補題6より  x\equiv1\pmod4 なので、  x は奇数である。そこで  x=2k+1 とおく。

補題10より、

 \displaystyle 2^x\equiv -5\pmod A

である。両辺を  2 倍すると、

 \displaystyle 2^{x+1}\equiv -10\pmod A

となる。  x+1=2k+2 なので、

 \displaystyle (2^{k+1})^2\equiv -10\pmod A

である。したがって  -10  A を法とする平方である。□

定理12
 x\geqq6,\ y\geqq3 を満たす黒峰方程式の解は存在しない。

証明

解が存在すると仮定し、上で定義した  A を取る。補題9より、

 \displaystyle A\equiv3\pmod{40}

である。特に  A は正の奇数であり、 2  5 のいずれとも互いに素である。

まず、補題11より、ある整数  u について

 \displaystyle u^2\equiv -10\pmod A

が成り立つ。したがって、Jacobi記号の一般的な性質から、

 \displaystyle \left(\frac{-10}{A}\right)=1

である。

一方、Jacobi記号の積に関する性質から、

 
\displaystyle 
\left( \frac{-10}{A} \right)
=\left(\frac{-1}{A}\right)
\left(\frac{2}{A}\right)
\left(\frac{5}{A}\right)

と分解できる。ここで、 A\equiv3\pmod{40} から

\begin{gathered}
A \equiv 3 \pmod{4},\\
A \equiv 3 \pmod{8},\\
A \equiv 3 \pmod{5}
\end{gathered}

である。

まず  A\equiv3\pmod4 なので、

 \displaystyle \left(\frac{-1}{A}\right) = (-1)^{(A - 1)/2} = -1

となる。次に  A\equiv3\pmod8 なので、

 \displaystyle \left(\frac{2}{A}\right) = (-1)^{(A^{2} - 1)/8} = -1

である。最後に A5 と互いに素な奇数であることから

 \displaystyle
\left( \frac{5}{A} \right) \left( \frac{A}{5} \right)
= (-1)^{ (5 - 1) (A - 1) / 4 }
= 1

となるので、

 \displaystyle \left(\frac{5}{A}\right)=\left(\frac{A}{5}\right)

が得られる。 A\equiv3\pmod5 であり、 3  5 を法とする平方ではないので、

 \displaystyle \left(\frac{A}{5}\right)=\left(\frac{3}{5}\right)=-1

である。したがって、

 \displaystyle \left(\frac{-10}{A}\right)=(-1)(-1)(-1)=-1

となる。

ところが、先ほど同じJacobi記号が  1 であることを示した。これは矛盾である。よって、 x\geqq6,\ y\geqq3 を満たす解は存在しない。□

定理(黒峰問題の完全解決)
黒峰方程式の整数解は

 \displaystyle (x,y,z)=(1,0,2),(5,3,4)

 2 組だけである。

証明

補題1より、整数解は  x,y\geqq0,\ z>0 の場合だけを考えれば十分である。定理5により、  x<6 または  y<3 である解は

 \displaystyle (x,y,z)=(1,0,2),(5,3,4)

だけである。また定理12より、  x\geqq6,\ y\geqq3 である解は存在しない。したがって、整数解は上の  2 組だけである。□

幻惑解をクリアできる理由

最後に、今回の証明がなぜ幻惑解を乗り越えられたのかを整理します。

従来の方法では、あらかじめ固定した数  m を選び、元の方程式を法  m で調べていました。しかし幻惑解

 \displaystyle \left(5, -3,\frac{10}{3}\right)

は、  3 と互いに素な法では解のように振る舞います。そのため、固定した法を追加し続けても、幻惑解に対応する合同類が残ります。

一方、今回の最後の議論では、仮に存在する整数解そのものから

 \displaystyle A=z-3^{y/3}

という新しい整数を作っています。これはあらかじめ固定された法ではなく、解に応じて変化する法です。さらに元の方程式を因数分解することで、

 \displaystyle A\mid2^x+5

という正確な整除関係を得ています。

幻惑解を形式的に代入すると  A=3 になります。しかし、

 \displaystyle 3\nmid2^5+5=37

なので、整数解から得られるこの整除関係を満たしません。幻惑解は固定された法に対する合同式をすり抜けることはできますが、解自身から作られた  A に対する整除関係まではすり抜けられません。ここが、従来の合同式によるアプローチとの決定的な違いです。

まとめ

黒峰方程式

 \displaystyle 2^x+3^y+5=z^3

の整数解は、

 \displaystyle (x,y,z)=(1,0,2),(5,3,4)

 2 組だけです。

証明は以下の3ステップからなります。

  1. まず負の指数と小さい指数を初等的に処理し、残る解を合同式によって以下まで絞る。
     \displaystyle x\equiv1\pmod4,\quad y\equiv45\pmod{48}
  2. 解の存在を仮定し、 A=z-3^{y/3} とおいて、以下を得る。
     \displaystyle A\equiv3\pmod{40},\quad A\mid2^x+5
  3. Jacobi 記号 \left( \frac{-10}{A} \right) を二通りの方法で求め、矛盾を導く。
    • A \mid 2^{x} + 5 から -10A を法とした平方剰余となり、\left( \frac{-10}{A} \right) = 1 となる。
    • A \equiv 3 \pmod{40} から \left( \frac{-10}{A} \right) = -1 となる。

合同式だけでは幻惑解が障害となっていましたが、解自身から生じる可変の法と整除関係を使うことで、その壁を越えることができました。これで黒峰問題は完全に解決です。

ではまた。

おまけ

この記事で紹介した証明をベースに、改めて Lean 4 で形式化してみました。
github.com

*1:整数 d, m について、 d \mid m と書いたとき、dm の約数、md の倍数であることを表します。

Legendre 記号と Jacobi 記号の性質を高校数学で証明する

この記事では、Legendre 記号と Jacobi 記号の基本的な性質を、高校数学の範囲で追える形で証明します。

これらの性質を使うと、平方剰余の判定をより小さな数の計算へと帰着でき、Legendre 記号や Jacobi 記号を効率よく計算できるようになります。

Legendre 記号

平方剰余と Legendre 記号

p を奇素数とし、a を整数とします。合同式

\displaystyle x^2\equiv a\pmod p
が解をもつとき、ap を法とする平方剰余であるといいます。解をもたないときは平方非剰余といいます。

たとえば p=7 のとき、

\displaystyle
1^2\equiv1,\qquad
2^2\equiv4,\qquad
3^2\equiv2
\pmod7
です。したがって、1,2,47 を法とする平方剰余であり、3,5,6 は平方非剰余です。

この区別を表すのが Legendre 記号です。ここで、pa の約数であることを p\mid a、約数でないことを p\nmid a と書きます。

\displaystyle
\left(\frac ap\right)
=
\begin{cases}
0 & (p\mid a),\\
1 & (p\nmid a\text{ かつ }a\text{ が }p\text{ を法とする平方剰余}),\\
 -1 & (a\text{ が }p\text{ を法とする平方非剰余})
\end{cases}
と定義します*1

たとえば p=7 では、

\displaystyle
\left(\frac17\right)
=
\left(\frac27\right)
=
\left(\frac47\right)
=1
であり、

\displaystyle
\left(\frac37\right)
=
\left(\frac57\right)
=
\left(\frac67\right)
=-1
です。

Legendre 記号は、分子 ap で割った余りだけで決まります。したがって、a\equiv b\pmod p ならば、

\displaystyle
\left(\frac ap\right)
=
\left(\frac bp\right)
です。

平方剰余はちょうど半分ある

1,2,\dots,p-1 の平方を考えます。x^2\equiv y^2\pmod p ならば、

\displaystyle
(x-y)(x+y)\equiv0\pmod p
です。p は素数なので、x\equiv y\pmod p または x\equiv-y\pmod p となります。

したがって、xp-x は同じ平方を与え、それ以外の重複はありません。よって、p の倍数でない平方剰余の個数は、全体のちょうど半分、つまり

\displaystyle \frac{p-1}{2}
です。平方非剰余も同じく (p-1)/2 個あります。

Euler の規準

Legendre 記号を計算するための基本公式が Euler の規準です。p\nmid a のとき、

\displaystyle
\left(\frac ap\right)
\equiv
a^{(p-1)/2}
\pmod p
が成り立ちます。右辺は、p を法として 1 または -1 のいずれかになります。


証明

まず、a が平方剰余であるとします。ある整数 x を使って、

\displaystyle a\equiv x^2\pmod p
と書けます。Fermat の小定理より x^{p-1}\equiv1\pmod p なので、

\displaystyle
a^{(p-1)/2}
\equiv
x^{p-1}
\equiv1
\pmod p
です。

次に、a が平方非剰余である場合を考えます。Fermat の小定理より a^{p-1}\equiv1\pmod p なので、

\displaystyle
\left(a^{(p-1)/2}\right)^2\equiv1\pmod p
です。したがって、

\displaystyle
a^{(p-1)/2}\equiv1
\quad\text{または}\quad
a^{(p-1)/2}\equiv-1
\pmod p
となります。

ここで、多項式

\displaystyle X^{(p-1)/2}-1
を考えます。次数は (p-1)/2 なので、p を法として高々 (p-1)/2 個の解しかもちません*2

一方、平方剰余 a はすべて a^{(p-1)/2}\equiv1\pmod p を満たします。平方剰余はすでに (p-1)/2 個あるため、

\displaystyle X^{(p-1)/2}\equiv1\pmod p
の解は平方剰余だけです。したがって、平方非剰余 a については、

\displaystyle
a^{(p-1)/2}\equiv-1\pmod p
となります。

以上より、

\displaystyle
a^{(p-1)/2}
\equiv
\left(\frac ap\right)
\pmod p
が示されました。


積に関する性質

Legendre 記号には、

\displaystyle
\left(\frac{ab}{p}\right)
=
\left(\frac ap\right)
\left(\frac bp\right)
という性質があります。つまり、分子の積を Legendre 記号の積に分解できます。


証明

まず、p\mid a または p\mid b ならば、p\mid ab なので、等式の両辺はともに 0 です。

以下では p\nmid a かつ p\nmid b とします。このとき p\nmid ab なので、Euler の規準より、

\displaystyle
\left(\frac{ab}{p}\right)
\equiv
(ab)^{(p-1)/2}
\pmod p
です。右辺を分解すると、

\displaystyle
(ab)^{(p-1)/2}
=
a^{(p-1)/2}b^{(p-1)/2}
なので、

\displaystyle
\left(\frac{ab}{p}\right)
\equiv
\left(\frac ap\right)
\left(\frac bp\right)
\pmod p
となります。

両辺はいずれも 1,-1 のいずれかです。p は奇素数なので、この二つは p を法として異なります。したがって、整数として

\displaystyle
\left(\frac{ab}{p}\right)
=
\left(\frac ap\right)
\left(\frac bp\right)
が成り立ちます。


Gauss の補題

第一補充法則、第二補充法則、平方剰余の相互法則を証明するため、Gauss の補題を導入します。

p を奇素数とし、

\displaystyle n=\frac{p-1}{2}
とおきます。p\nmid a とし、

\displaystyle
a,2a,3a,\dots,na
p で割った最小正剰余を考えます。そのうち p/2 より大きいものの個数を m とします。このとき、

\displaystyle
\left(\frac ap\right)=(-1)^m
が成り立ちます。これが Gauss の補題です。


証明

a,2a,\dots,na の最小正剰余を r_1,r_2,\dots,r_n とします。各 r_k について、

\displaystyle
s_k=
\begin{cases}
r_k & \left(r_k<\dfrac p2\right),\\
r_k-p & \left(r_k>\dfrac p2\right)
\end{cases}
とおきます。つまり、p/2 より大きい剰余については、負の数に取り直します。

すると、

\displaystyle
s_k\in\{-n,-n+1,\dots,-1,1,\dots,n\}
です。ここで s_k\in A は、s_k が集合 A の要素であることを表します。

さらに、|s_1|,|s_2|,\dots,|s_n|1,2,\dots,n を並べ替えたものになります。

実際、|s_i|=|s_j| ならば ia\equiv\pm ja\pmod p です。p\nmid a なので i\equiv\pm j\pmod p となりますが、1\leqq i,j\leqq n < p/2 なので、これは i=j を意味します。

したがって、

\displaystyle
s_1s_2\cdots s_n
=
(-1)^m n!
です。一方、s_k\equiv ka\pmod p なので、

\displaystyle
s_1s_2\cdots s_n
\equiv
a^n n!
\pmod p
です。よって、

\displaystyle
a^n n!\equiv(-1)^m n!\pmod p
となります。p\nmid n! なので n! を消去して、

\displaystyle
a^{(p-1)/2}\equiv(-1)^m\pmod p
を得ます。Euler の規準より、

\displaystyle
\left(\frac ap\right)=(-1)^m
です。


第一補充法則

第一補充法則は、-1 が平方剰余になる条件を与えます。

\displaystyle
\left(\frac{-1}{p}\right)
=
(-1)^{(p-1)/2}
したがって、

\displaystyle
\left(\frac{-1}{p}\right)
=
\begin{cases}
1 & (p\equiv1\pmod4),\\
 -1 & (p\equiv3\pmod4)
\end{cases}
です。つまり、x^2\equiv-1\pmod p が解をもつのは、p\equiv1\pmod4 のときに限ります。


証明

Gauss の補題で a=-1 とします。

\displaystyle
 -1,-2,\dots,-\frac{p-1}{2}
の最小正剰余は、

\displaystyle
p-1,p-2,\dots,p-\frac{p-1}{2}
です。これらはすべて p/2 より大きいので、m=(p-1)/2 です。したがって、

\displaystyle
\left(\frac{-1}{p}\right)
=
(-1)^{(p-1)/2}
となります。


第二補充法則

第二補充法則は、2 が平方剰余になる条件を与えます。

\displaystyle
\left(\frac2p\right)
=
(-1)^{(p^2-1)/8}
したがって、

\displaystyle
\left(\frac2p\right)
=
\begin{cases}
1 & (p\equiv1,7\pmod8),\\
 -1 & (p\equiv3,5\pmod8)
\end{cases}
です。


証明

再び n=(p-1)/2 とおきます。

\displaystyle
2,4,6,\dots,2n=p-1
はすべて p 未満なので、そのまま最小正剰余になっています。このうち p/2 より大きいものは、2k>p/2、すなわち k>p/4 を満たす k です。

ここで、実数 x 以下の最大の整数を \left\lfloor x\right\rfloor と書きます。たとえば、\left\lfloor3.7\right\rfloor=3 です。

したがって、

\displaystyle
m
=
\frac{p-1}{2}
 -
\left\lfloor\frac p4\right\rfloor
です。

p8 で割った余りごとに調べます。p=8r+1 のとき m=2rp=8r+3 のとき m=2r+1p=8r+5 のとき m=2r+1p=8r+7 のとき m=2r+2 です。

Gauss の補題より、

\displaystyle
\left(\frac2p\right)=(-1)^m
なので、p\equiv1,7\pmod8 のとき 1p\equiv3,5\pmod8 のとき -1 となります。これは、

\displaystyle
\left(\frac2p\right)
=
(-1)^{(p^2-1)/8}
とまとめて書けます。


平方剰余の相互法則

p,q を異なる奇素数とします。このとき、

\displaystyle
\left(\frac qp\right)
\left(\frac pq\right)
=
(-1)^{\frac{p-1}{2}\frac{q-1}{2}}
が成り立ちます。これを平方剰余の相互法則といいます。

場合分けして書けば、p,q の少なくとも一方が 1\pmod4 なら、

\displaystyle
\left(\frac qp\right)
=
\left(\frac pq\right)
です。一方、p\equiv q\equiv3\pmod4 ならば、

\displaystyle
\left(\frac qp\right)
=
 -\left(\frac pq\right)
となります。


証明

Gauss の補題を整数部分で書き直す

相互法則を証明するため、Gauss の補題を少し変形します。ap の倍数でない奇数とします。このとき、

\displaystyle
\left(\frac ap\right)
=
(-1)^{
\displaystyle
\sum_{k=1}^{(p-1)/2}
\left\lfloor\frac{ak}{p}\right\rfloor
}
が成り立ちます。

Gauss の補題に現れる個数 m と、

\displaystyle
S=
\sum_{k=1}^{(p-1)/2}
\left\lfloor\frac{ak}{p}\right\rfloor
の偶奇が一致することを示します。

ak の最小正剰余を r_k とし、先ほどと同じく、

\displaystyle
s_k=
\begin{cases}
r_k & (r_k < p/2),\\
r_k-p & (r_k > p/2)
\end{cases}
とおきます。r_k>p/2 となる場合を \varepsilon_k=1、それ以外を \varepsilon_k=0 と書けば、

\displaystyle
s_k
=
ak
 -
p\left\lfloor\frac{ak}{p}\right\rfloor
 -
p\varepsilon_k
です。

両辺を k=1,\dots,(p-1)/2 について足します。|s_k|1,\dots,(p-1)/2 の並べ替えなので、2 を法として、

\displaystyle
\sum s_k\equiv\sum k\pmod2
です。また、a,p はともに奇数なので、

\displaystyle
\sum s_k
\equiv
\sum k-S-m
\pmod2
です。したがって、S\equiv m\pmod2 となります。

Gauss の補題より、

\displaystyle
\left(\frac ap\right)=(-1)^m=(-1)^S
です。

格子点を数える

p,q を異なる奇素数とし、

\displaystyle
S=
\sum_{k=1}^{(p-1)/2}
\left\lfloor\frac{qk}{p}\right\rfloor
および、

\displaystyle
T=
\sum_{j=1}^{(q-1)/2}
\left\lfloor\frac{pj}{q}\right\rfloor
とおきます。先ほどの公式より、

\displaystyle
\left(\frac qp\right)=(-1)^S,
\qquad
\left(\frac pq\right)=(-1)^T
です。

ここで、格子点

\displaystyle
1\leqq k\leqq\frac{p-1}{2},
\qquad
1\leqq j\leqq\frac{q-1}{2}
を考えます。全部で、

\displaystyle
\frac{p-1}{2}\frac{q-1}{2}
個あります。

この長方形の中に、直線 pj=qk を引きます。p,q は異なる素数なので、この直線上に格子点はありません。実際、pj=qk ならば p\mid k ですが、1\leqq k < p なので不可能です。

したがって、すべての格子点は pj < qk または pj > qk のどちらか一方に属します。

k を固定します。このとき、

\displaystyle
\frac{qk}{p}
\leqq
\frac{q(p-1)}{2p}
<
\frac q2
なので、

\displaystyle
\left\lfloor\frac{qk}{p}\right\rfloor
\leqq
\frac{q-1}{2}
です。したがって、pj < qk を満たす正整数 j の個数は、

\displaystyle
\left\lfloor\frac{qk}{p}\right\rfloor
です。よって、直線の一方にある格子点の個数は S です。同様に、もう一方にある格子点の個数は T です。

よって、

\displaystyle
S+T
=
\frac{p-1}{2}\frac{q-1}{2}
となります。以上から、

\displaystyle
\left(\frac qp\right)
\left(\frac pq\right)
=
(-1)^{S+T}
=
(-1)^{
\frac{p-1}{2}\frac{q-1}{2}
}
が得られます。これで平方剰余の相互法則が証明されました。


Legendre 記号の計算例

例として、

\displaystyle
\left(\frac{37}{101}\right)
を計算します。37\equiv1\pmod4 なので、相互法則で符号は変わりません。

\displaystyle
\left(\frac{37}{101}\right)
=
\left(\frac{101}{37}\right)
=
\left(\frac{27}{37}\right)
です。積に関する性質より、

\displaystyle
\left(\frac{27}{37}\right)
=
\left(\frac3{37}\right)^3
=
\left(\frac3{37}\right)
です。37\equiv1\pmod4 なので、

\displaystyle
\left(\frac3{37}\right)
=
\left(\frac{37}{3}\right)
=
\left(\frac13\right)
=1
です。したがって、

\displaystyle
\left(\frac{37}{101}\right)=1
となります。

Jacobi 記号

Jacobi 記号の定義

Legendre 記号の分母は奇素数に限られていました。これを正の奇数まで拡張したものが Jacobi 記号です。一般に、合同式 x^2\equiv a\pmod n が解をもつときも、an を法とする平方剰余であるといいます。

n を正の奇数とし、その素因数分解を、

\displaystyle
n=p_1^{e_1}p_2^{e_2}\cdots p_r^{e_r}
とします。

ここで、\prod は積をまとめて表す記号です。たとえば、

\displaystyle
\prod_{i=1}^{3}a_i=a_1a_2a_3
です。

Jacobi 記号を、

\displaystyle
\left(\frac an\right)
=
\prod_{i=1}^r
\left(\frac{a}{p_i}\right)^{e_i}
と定義します。また、

\displaystyle
\left(\frac a1\right)=1
と定めます。

たとえば 45=3^2\cdot5 なので、

\displaystyle
\left(\frac a{45}\right)
=
\left(\frac a3\right)^2
\left(\frac a5\right)
です。

Jacobi 記号と平方剰余

Legendre 記号では、\left(\frac ap\right)=1 であることと、ap を法とする平方剰余であることは同値でした。しかし、Jacobi 記号ではそうとは限りません。

たとえば、

\displaystyle
\left(\frac2{15}\right)
=
\left(\frac23\right)
\left(\frac25\right)
です。第二補充法則より、

\displaystyle
\left(\frac23\right)=-1,
\qquad
\left(\frac25\right)=-1
なので、

\displaystyle
\left(\frac2{15}\right)=1
です。

しかし、x^2\equiv2\pmod3 は解をもちません。したがって、x^2\equiv2\pmod{15} も解をもちません。

Jacobi 記号が -1 なら平方非剰余ですが、1 だからといって平方剰余とは限りません。

分子の積に関する性質

Jacobi 記号についても、

\displaystyle
\left(\frac{ab}{n}\right)
=
\left(\frac an\right)
\left(\frac bn\right)
が成り立ちます。


証明

n の素因数分解を n=p_1^{e_1}p_2^{e_2}\cdots p_r^{e_r} とします。定義より、

\displaystyle
\left(\frac{ab}{n}\right)
=
\prod_{i=1}^r
\left(\frac{ab}{p_i}\right)^{e_i}
です。Legendre 記号の積に関する性質から、

\displaystyle
\left(\frac{ab}{p_i}\right)
=
\left(\frac a{p_i}\right)
\left(\frac b{p_i}\right)
なので、

\displaystyle
\left(\frac{ab}{n}\right)
=
\prod_{i=1}^r
\left(\frac a{p_i}\right)^{e_i}
\prod_{i=1}^r
\left(\frac b{p_i}\right)^{e_i}
=
\left(\frac an\right)
\left(\frac bn\right)
です。


分母の積に関する性質

m,n を正の奇数とすると、

\displaystyle
\left(\frac a{mn}\right)
=
\left(\frac am\right)
\left(\frac an\right)
が成り立ちます。m,n は互いに素でなくても構いません。


証明

素数 pmr 回、ns 回現れるなら、mn には r+s 回現れます。したがって、

\displaystyle
\left(\frac ap\right)^{r+s}
=
\left(\frac ap\right)^r
\left(\frac ap\right)^s
です。これをすべての素数について掛け合わせれば、

\displaystyle
\left(\frac a{mn}\right)
=
\left(\frac am\right)
\left(\frac an\right)
が得られます。


Jacobi 記号の第一補充法則

n を正の奇数とします。このとき、

\displaystyle
\left(\frac{-1}{n}\right)
=
(-1)^{(n-1)/2}
が成り立ちます。したがって、

\displaystyle
\left(\frac{-1}{n}\right)
=
\begin{cases}
1 & (n\equiv1\pmod4),\\
 -1 & (n\equiv3\pmod4)
\end{cases}
です。


証明

n を、同じ素数の重複を許して n=p_1p_2\cdots p_s と書きます。Jacobi 記号の定義と Legendre 記号の第一補充法則より、

\displaystyle
\left(\frac{-1}{n}\right)
=
\prod_{i=1}^s
(-1)^{(p_i-1)/2}
です。

奇数 p_i について、

\displaystyle
p_i\equiv(-1)^{(p_i-1)/2}\pmod4
が成り立ちます。したがって、

\displaystyle
n
=
p_1p_2\cdots p_s
\equiv
\prod_{i=1}^s
(-1)^{(p_i-1)/2}
\pmod4
です。

一方、奇数 n についても n\equiv(-1)^{(n-1)/2}\pmod4 です。どちらの右辺も 1 または -1 なので、

\displaystyle
\prod_{i=1}^s
(-1)^{(p_i-1)/2}
=
(-1)^{(n-1)/2}
となります。よって、

\displaystyle
\left(\frac{-1}{n}\right)
=
(-1)^{(n-1)/2}
です。


Jacobi 記号の第二補充法則

n を正の奇数とします。このとき、

\displaystyle
\left(\frac2n\right)
=
(-1)^{(n^2-1)/8}
が成り立ちます。したがって、

\displaystyle
\left(\frac2n\right)
=
\begin{cases}
1 & (n\equiv1,7\pmod8),\\
 -1 & (n\equiv3,5\pmod8)
\end{cases}
です。


証明

奇数 t に対し、

\displaystyle
\chi(t)=(-1)^{(t^2-1)/8}
とおきます。t8 で割った余りごとに書けば、

\displaystyle
\chi(t)
=
\begin{cases}
1 & (t\equiv1,7\pmod8),\\
 -1 & (t\equiv3,5\pmod8)
\end{cases}
です。この符号は \chi(ab)=\chi(a)\chi(b) を満たします。これは、a,b8 で割った余りが 1,3,5,7 のいずれかであることから確認できます。

n=p_1p_2\cdots p_s と書けば、Legendre 記号の第二補充法則より、

\displaystyle
\left(\frac2n\right)
=
\prod_{i=1}^s
\left(\frac2{p_i}\right)
=
\prod_{i=1}^s
\chi(p_i)
です。\chi は積を保つので、

\displaystyle
\prod_{i=1}^s\chi(p_i)
=
\chi(p_1p_2\cdots p_s)
=
\chi(n)
です。したがって、

\displaystyle
\left(\frac2n\right)
=
(-1)^{(n^2-1)/8}
となります。


Jacobi 記号の相互法則

m,n を互いに素な正の奇数とします。このとき、

\displaystyle
\left(\frac mn\right)
\left(\frac nm\right)
=
(-1)^{
\frac{m-1}{2}\frac{n-1}{2}
}
が成り立ちます。

したがって、m,n の少なくとも一方が 1\pmod4 なら、

\displaystyle
\left(\frac mn\right)
=
\left(\frac nm\right)
です。一方、m\equiv n\equiv3\pmod4 ならば、

\displaystyle
\left(\frac mn\right)
=
 -\left(\frac nm\right)
となります。


証明

m,n を、素数の重複を許して、

\displaystyle
m=p_1p_2\cdots p_r,
\qquad
n=q_1q_2\cdots q_s
と書きます。m,n は互いに素なので、任意の i,j に対して p_i
eq q_j です。

Jacobi 記号の定義と積に関する性質より、

\displaystyle
\left(\frac mn\right)
=
\prod_{i=1}^r\prod_{j=1}^s
\left(\frac{p_i}{q_j}\right)
です。同様に、

\displaystyle
\left(\frac nm\right)
=
\prod_{i=1}^r\prod_{j=1}^s
\left(\frac{q_j}{p_i}\right)
です。したがって、

\displaystyle
\left(\frac mn\right)
\left(\frac nm\right)
=
\prod_{i=1}^r\prod_{j=1}^s
\left(\frac{p_i}{q_j}\right)
\left(\frac{q_j}{p_i}\right)
となります。

p_i,q_j に Legendre 記号の相互法則を適用すると、

\displaystyle
\left(\frac{p_i}{q_j}\right)
\left(\frac{q_j}{p_i}\right)
=
(-1)^{
\frac{p_i-1}{2}
\frac{q_j-1}{2}
}
です。よって、

\displaystyle
\left(\frac mn\right)
\left(\frac nm\right)
=
(-1)^E
ただし、

\displaystyle
E
=
\sum_{i=1}^r\sum_{j=1}^s
\frac{p_i-1}{2}
\frac{q_j-1}{2}
です。この二重和は、

\displaystyle
E
=
\left(
\sum_{i=1}^r\frac{p_i-1}{2}
\right)
\left(
\sum_{j=1}^s\frac{q_j-1}{2}
\right)
と分解できます。

第一補充法則の証明と同様に、

\displaystyle
\sum_{i=1}^r\frac{p_i-1}{2}
\equiv
\frac{m-1}{2}
\pmod2
であり、

\displaystyle
\sum_{j=1}^s\frac{q_j-1}{2}
\equiv
\frac{n-1}{2}
\pmod2
です。したがって、

\displaystyle
E
\equiv
\frac{m-1}{2}\frac{n-1}{2}
\pmod2
となります。よって、

\displaystyle
\left(\frac mn\right)
\left(\frac nm\right)
=
(-1)^{
\frac{m-1}{2}\frac{n-1}{2}
}
です。


Jacobi 記号の計算例

例として、

\displaystyle
\left(\frac{123}{527}\right)
を計算します。527 が素数かどうかを調べる必要はありません。正の奇数であれば Jacobi 記号は定義できます。

まず、123\equiv3\pmod4527\equiv3\pmod4 なので、相互法則で符号が反転します。

\displaystyle
\left(\frac{123}{527}\right)
=
 -\left(\frac{527}{123}\right)
=
 -\left(\frac{35}{123}\right)
です。積に分解すると、

\displaystyle
\left(\frac{35}{123}\right)
=
\left(\frac5{123}\right)
\left(\frac7{123}\right)
です。

5\equiv1\pmod4 なので、

\displaystyle
\left(\frac5{123}\right)
=
\left(\frac{123}{5}\right)
=
\left(\frac35\right)
=-1
です。

次に、7\equiv3\pmod4123\equiv3\pmod4 なので、

\displaystyle
\left(\frac7{123}\right)
=
 -\left(\frac{123}{7}\right)
=
 -\left(\frac47\right)
=-1
です。

以上より、

\displaystyle
\left(\frac{35}{123}\right)
=
(-1)(-1)
=
1
なので、

\displaystyle
\left(\frac{123}{527}\right)=-1
です。素因数分解をせずに計算できました。

まとめ

Legendre 記号について、積に関する性質、二つの補充法則、平方剰余の相互法則を証明しました。

\displaystyle
\left(\frac{ab}{p}\right)
=
\left(\frac ap\right)
\left(\frac bp\right)
\displaystyle
\left(\frac{-1}{p}\right)
=
(-1)^{(p-1)/2}
\displaystyle
\left(\frac2p\right)
=
(-1)^{(p^2-1)/8}
\displaystyle
\left(\frac qp\right)
\left(\frac pq\right)
=
(-1)^{
\frac{p-1}{2}\frac{q-1}{2}
}
さらに、Jacobi 記号を素因数ごとの Legendre 記号の積として定義すると、同じ形の法則が成り立ちます。

\displaystyle
\left(\frac{ab}{n}\right)
=
\left(\frac an\right)
\left(\frac bn\right)
\displaystyle
\left(\frac{-1}{n}\right)
=
(-1)^{(n-1)/2}
\displaystyle
\left(\frac2n\right)
=
(-1)^{(n^2-1)/8}
\displaystyle
\left(\frac mn\right)
\left(\frac nm\right)
=
(-1)^{
\frac{m-1}{2}\frac{n-1}{2}
}
Jacobi 記号が 1 であっても、分子が平方剰余であるとは限りません。それでも、これらの法則を使えば、素因数分解をせずに記号を効率よく計算できます。

*1:分数の記法を使いますが、約分したり分母分子に同じ数を掛けたりはできません。

*2:この事実は、一般には体上の多項式に関する定理として示されます。本記事では証明を省略します(タイトル詐欺ごめんね)。