1. グラフ化の狙い
平方剰余の相互法則は、公式だけを見ると短い定理ですが、背後には「平方剰余集合」「Legendre 記号」「Euler 判定法」「Gauss 補題」「補充法則」「床関数の格子点計数」という複数の部品があります。グラフ化の目的は、これらを線形の文章ではなく、依存関係のネットワークとして見ることです。
ノードで表すもの
定義、補題、定理、計算規則、アルゴリズムの状態をノードにします。例えば「Gauss 補題」は、半代表を折り返す操作と負符号数 \(\mu(a,p)\) をまとめるノードです。
矢印で表すもの
「どの事実からどの事実が導かれるか」を矢印にします。例えば Gauss 補題から補充法則 \(\Leg{-1}{p}\), \(\Leg{2}{p}\) が得られ、同じ補題を \(a=q\) に適用すると相互法則へ進みます。
2. DOT の読み方
DOT は Graphviz のグラフ記述言語です。以下のように、digraph は有向グラフ、A -> B は矢印、label は表示名を表します。
digraph G {
graph [rankdir=LR];
node [shape=box, style="rounded,filled"];
Legendre -> GaussLemma -> Reciprocity;
}
d3-graphviz は、DOT ソースから SVG グラフをレンダリングし、遷移アニメーションやズームを扱える JavaScript ライブラリです。このレポートでは、編集欄にある DOT をその場で再描画できます。
3. インタラクティブ・グラフ
プリセットを選ぶか、DOT を直接編集して「描画」を押してください。ノードや矢印を増やすと、定理の依存関係を自分の理解に合わせて再構成できます。
DOT コントローラ
4. 証明の流れを段階表示
相互法則の代表的な証明は、次のように分解できます。ボタンで段階を切り替えると、同じ定理が少しずつ組み上がる様子が見えます。
5. \(p,q\) や \(a,p\) を入れてグラフを生成
相互法則チェッカーを DOT 化
相異なる奇素数 \(p,q\) を入力すると、\(p\bmod4\), \(q\bmod4\), 符号、\(\Leg{p}{q}\), \(\Leg{q}{p}\) を含むグラフを生成します。
Gauss 補題を DOT 化
奇素数 \(p\) と \(a\) を入力すると、\(j\mapsto aj\pmod p\) を半代表 \(\{1,\dots,(p-1)/2\}\) へ折り返す流れを描きます。
6. 視覚化から得る要点
相互法則は「反転」の規則
大きい法で \(p\) を調べる代わりに、小さい法で \(q\) を調べる。その交換に伴う符号だけが本質的なコストです。
符号は面積の偶奇
符号 \((-1)^{((p-1)/2)((q-1)/2)}\) は、半分サイズの長方形に含まれる格子点数の偶奇として見えます。
Gauss 補題が橋になる
「剰余の集合論」と「格子点計数」を結びつけるのが Gauss 補題です。視覚的には、点を掛け算で動かし、半分の範囲へ折り返す操作です。