三次元MMPのアルゴリズム:論文の改訂とMacaulay2への実装
三次元の極小モデルプログラム(MMP)のアルゴリズムに関する論文 An algorithm for the minimal model program in dimension three(arXiv:2603.13703)を、先日大幅に改訂しました。あわせて、この論文の内容をMacaulay2で実装したものを、GitHubで公開しています。
何を目指しているか
この改訂で目指したのは、実際に計算機で動かせるくらいに、効率の良いアルゴリズムを作るということです。論文の前のバージョンでは、「原理的にはアルゴリズムが存在する」ということを示しましたが、基礎体が\(\overline{\mathbb Q}\)であることや、因子や曲線の網羅的な探索を含むアルゴリズムだったので、実装するのは絶望的でした。
主な変更点
- 基礎体として数体も取れる。
- 曲線や因子を網羅的に探索するのをやめる。
- 端射線(ray)ではなく、端射面(face)を潰すことを許す。
- \(\mathbb{Q}\)分解的の仮定を外す。
- 間違いの修正:(1) より一般的なbigradingを許す必要があった。(2) 一部で代数的スタックを使い定式化する必要があった。
端射面を潰すMMPの存在は、6月に東京大学で開かれた研究集会に参加したときに、榎園さんから教えてもらいました。この変更が、今回の改訂の出発点になりました。これらの変更により、論文は26ページから41ページへと大幅に増えました。
AIの活用
今回の改訂では、AIをかなり活用しました。主な使い道は、文献探索、証明の構築、そして、Macaulay2でのコーディングです。上に書いた6月の研究集会の時点では、私はAIをそこまで活用していなかったので、その時と比べたら、大きく研究スタイルが変わりました。今回の改訂版が、私の中でAIを本格活用した研究の第一弾になります。
Macaulay2への実装
論文のアルゴリズムのMacaulay2による実装に関して、三つのリポジトリを公開しています。いずれもCC0 1.0(パブリックドメイン)です。ご自由にこれらのコードを活用したり、改変したりしてください。
Coding_MMP
統合レイヤーにあたるリポジトリです。MMPComputation.m2が中心で、標準因子 \(K_X\) のnef性の判定、nef threshold の計算、収縮射の構成、そしてMMP全体を回すトップレベルのドライバを担当します。下の二つのリポジトリを、gitのサブモジュールとして取り込む構成になっています。
SteinFactorizationM2
論文の§4–§5にあたる、Stein分解の計算です。二重次数付きHom加群を計算し、Stein分解の中間項の座標環を復元します。このリポジトリについては以前の記事で少し詳しく書きました。
flip-computation
論文の§6にあたる、相対標準モデルの計算です。主な入口はcomputeRelativeCanonicalModelです。リポジトリ名に「flip」と付けてはいますが、実際に計算しているのは相対標準モデルで、必ずしも古典的な設定でのflipping contractionに対するflipとは限りません。上に書いたとおり、端射面の収縮を許しているためです。
現状と見通し
正直なところ、実装の現状はまだ道半ばです。MMPの各ステップは、ごく簡単な例であれば動きます。しかし、それらを繋げてMMPとして走らせようとすると、代数多様体があっという間に複雑になってしまい、計算量的に厳しくなります。「面白いMMP列」と呼べるものを出力するところまでは、まだ届いていません。
ただ、ここから先は実装の工夫の問題だと思います。そして今のAIの進歩の速さを見ていると、計算機でMMPをガンガン走らせられる日は、割とすぐに来るのではないか、という気がしています。