Supplement 1 / DOT + d3-graphviz

平方剰余の相互法則を「グラフ」として読む

この補講は、定理・補題・計算法の依存関係を DOT で明示し、d3-graphviz で実際に描画・編集・再描画できるようにした視覚的レポートです。数式の理解に加えて、「どの命題がどの命題を支えるか」をノードと矢印で追えるようにしています。

MathJaxDOT editord3-graphviz renderingGauss 補題の自動グラフ化

1. グラフ化の狙い

平方剰余の相互法則は、公式だけを見ると短い定理ですが、背後には「平方剰余集合」「Legendre 記号」「Euler 判定法」「Gauss 補題」「補充法則」「床関数の格子点計数」という複数の部品があります。グラフ化の目的は、これらを線形の文章ではなく、依存関係のネットワークとして見ることです。

\[ \Leg{p}{q}\Leg{q}{p}=(-1)^{\frac{p-1}{2}\frac{q-1}{2}} \] ここで \(p,q\) は相異なる奇素数です。右辺が \(-1\) になるのは、ちょうど \(p\equiv q\equiv 3\pmod4\) のときです。

ノードで表すもの

定義、補題、定理、計算規則、アルゴリズムの状態をノードにします。例えば「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 をその場で再描画できます。

表示の注意: グラフ描画には d3、d3-graphviz を CDN から読み込みます。ローカルで開く場合も通常は動作しますが、ネットワーク制限がある環境では DOT テキストだけが表示されることがあります。

3. インタラクティブ・グラフ

プリセットを選ぶか、DOT を直接編集して「描画」を押してください。ノードや矢印を増やすと、定理の依存関係を自分の理解に合わせて再構成できます。

DOT コントローラ

編集例:A -> B [label="理由"]; を追加すると、A から B への矢印が増えます。
初期化中

4. 証明の流れを段階表示

相互法則の代表的な証明は、次のように分解できます。ボタンで段階を切り替えると、同じ定理が少しずつ組み上がる様子が見えます。

段階 1
\[ \mu(q,p)=\sum_{x=1}^{(p-1)/2}\left\lfloor \frac{qx}{p}\right\rfloor, \quad \mu(p,q)=\sum_{y=1}^{(q-1)/2}\left\lfloor \frac{py}{q}\right\rfloor. \] この 2 つの和は、長方形格子を対角線 \(qx=py\) で二分した上下の点数です。

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 補題です。視覚的には、点を掛け算で動かし、半分の範囲へ折り返す操作です。