シュアンールの予想とトリトンの浮動小数点数のセマンティクスについて

2026/05/16 12:34

シュアンールの予想とトリトンの浮動小数点数のセマンティクスについて

RSS: https://news.ycombinator.com/rss

要約

日本語訳:

以下の改善されたサマリーは、欠落していた技術的な詳細を統合し、マップの性質を明確にしながらも可読性を維持するものである。

## サマリー:
FPSan は、浮動小数点数プログラムにおける代数的同値性を検証するために設計された Triton コンパイラパスであり、結合律など浮動小数点数の法則によって引き起こされるエラーを回避するために、演算を等価な整数算術に変換するものである。このツールの作成者は著者および Pawel Szczerbuk であり、理論的な正しさを確保するために実数の版のシューネールの仮説(Schanuel's conjecture)に依存している点で特異である。技術的には、FPSan は特定のエンドコードを用いて IEEE-754 シングルの浮動小数点数を 2^32 を法とする整数環に対して全単射的にマッピングし、符号ビットを保存し、負のゼロを 2^31 として処理する。基本的な算術演算(+、-、*、exp)は、このモジュラー環内の対応する整数演算に置換され、三角関数(sin/cos)は角度の恒等式を満たすために、2-adic 整数上の環の列を用いて実装される。実装には、2-adic ニュートン法を用いた洗練された逆計算手法が含まれ、高精度埋め込みによるハイブリッド精度環境への対応も支援する。現在、FPSan は GPU メトリックス乗算や自己注意機構を含む複雑な機械学習タスクにおいて実証されており、実数上で同値である回路が、ツールの検証フレームワーク内で依然として同値であることを形式的に保証している。

本文

最近、Pawel Szczerbuk と共同で「FPSan」というツールの開発に時間を割いてまいりました。これは Triton コーパスのコンパイラパスとして実装されていますが、通常のコンパイラパスが備えるべき所期の特性を一切備えておりません:具体的には機能を保証するどころか処理速度を低下させ、かつこれまで完全にドキュメント化されていません(後者の点については、Pawel よりも既にドキュメンタリを追加するためのオープンな PR が提出されています)。

本ツールの目的は、Trition で記述された浮動小数点算術を含むプログラムの代数的同値性を検証するのを容易にすることにあります。核心となる問題は、浮動小数点算術においては結合法則のような代数的法則が厳密には成り立たないという点です。一般的に言えば、(a + b) + c が必ず a + (b + c) に等しいとは限りません。したがって、この事実に基づいてプログラムを再構成した場合(例えば、逐次総和のループを並列的な木構造の還元置換することなど)、プログラムの振る舞いは完全に同一ではなくなります。

FPSan は、プログラム空間上の冪等な関数と見做せます。この関数は、すべての浮動小数点演算を(全く異なる!)整数演算に置き換え、代数的同値なプログラム f と g に対して、f と g が同値であれば、FPSan(f) と FPSan(g) は同じ入力を与えられた際に同一の結果を生じさせることを保証します。

より形式的には、Schanuel の仮説の実数版が成立するという条件下において、以下の性質を備えるプログラム f と g に対してのみこの主張が成り立ちます:

  • 各プログラムは浮動小数点入力に対して算術回路を実装しており、その制御フローはこれらの浮動小数点入力には依存しません。
  • その算術回路は、入出力端子、定数{-1.0, 0.0, +1.0}、環演算{−, +, ×}、および指数関数 exp のみから構成されます。

これらの演算是やや制約が強いように見えるかもしれませんが、既に機械学習に広く関与する多くの一般的な GPU コアネル(行列乗算および自己注意機構の大部分など)を FPSan の保証範囲内におさめるほどに広範です。

証明については本稿の末尾に後回しにすることにより議論の流れを乱さないよう配慮しております。恐らくこれは、超越論数の極難しい未解決問題である Schanuel の仮説の妥当性にコンパイラサンタイザー(正しさ)が依存する唯一の例かもしれません。

実装

具体的には、FPSan は IEEE-754 シングルフローティングポイントの数値セット(2^32 個)から、2^32 に対する剰余環への全単射な「埋め込み関数」φ を構築します。この関数 φ は以下の手順で実装されています:

  1. IEEE-754 エンコーディングを使用して浮動小数点値を 32 ビットのワードとして符号化します。
  2. 上位ビット(符号ビット)は保持します。
  3. 残りの 31 ビットについては、まず奇数定数による mod-2^31 乗算を行い、次に xorshift を適用し、さらに奇数定数による第 2 の mod-2^31 乗算を行います。そして最後に(符号ビットが設定されていた場合)、二の補数を求めます。
  4. その 32 ビットのワードを、2^32 に対する剰余整数として解釈します。

この設計は、ビットをよく混ぜ合わせつつ、すべての非ゼロ x に対して φ(−x) = −φ(x)、φ(0.0) = 0、φ(1.0) = 1 の性質を備えるようになっています。「負のゼロ」浮動小数点値は 2^31 にマッピングされ、これは 2^32 に対する剰余環において加法的に自己逆となるもう一つの要素です。

この関数を用いて、FPSan は以下の置換を行います:

  • 浮動小数点加算 fadd(x, y) を φ^-1(φ(x) + φ(y)) に
  • 浮動小数点減算 fsub(x, y) を φ^-1(φ(x) − φ(y)) に
  • 浮動小数点乗算 fmul(x, y) を φ^-1(φ(x) × φ(y)) に
  • 浮動小数点べき関数 exp(x) を φ^-1(C^φ(x)) に(ここで C は 8 で割ったあまりが 5 である特定の定数)

最後の定義は、2^32 に対する剰余整数の乗法群の構造を利用しています。具体的には:

  • 逆元が存在するため乗法群に含まれるのは、2^31 個の奇数の要素(すなわち 2 で割ったあまりが 1 のもの)のみです。
  • これらのうち、4 で割ったあまりが 1 の 2^30 個の要素は乗算に対して巡回群を形成します。
  • さらにそのうち、8 で割ったあまりが 5 の 2^29 個の要素は生成元(あるいは等価に言えば最大周期を持つ)であり、これが C を 8 で割ったあまり 5 と選ぶ理由です。

写像 x → C^x は、C^(2^32) = 1 (mod 2^32) であるため mod 2^32 で良好に定義されており、C^x (mod 2^32) は x の値 mod 2^32 にのみ依存します。これは我们的法度数が 2 のべき乗であるから可能であり、任意の法度数 n に対しては一般に指数が n を割り切るわけではありません。

書き換えた fadd, fsub, fmul, および exp は明らかに環の公理、恒等式 exp(fadd(x, y)) = fmul(exp(x), exp(y))、および関係式 exp(0.0) = 1.0 をすべて満たします。

ミキープシジョン機能

FPSan は、任意の浮動小数点データ型に対する埋め込み関数 φ の analogue を構築し、同じ基数を持つ整数環へマッピングします。j ビットから k ビットへのダウンキャストには、高精度な j ビット浮動小数点を mod 2^j の整数環へ埋め込み、その後 mod 2^k で画像を取り、低精度の k ビット浮動小数点として再埋め戻しますアップキャストはその逆過程であり、mod 2^k の整数から mod 2^j の整数への「符号拡張」 lifts を選択します。これにより、特に{-1, 0, 1}の定数は異なる精度間での任意の型変換でも生存します。アップキャストに続けてダウンキャストを行うと恒等写像が誘発されますが、逆は成立せず(ダウンキャストは必然的に情報を破壊するため)です。

埋め込み関数とその逆関数における乗算子構築には、mod 2^k に対する効率的な逆元の計算が必要であり、これは ceil(log2(k)) 回の 2-adic ニュートンの法によって実現します。

Pawel は、Triton のミキープシジョン行列乗算原始関数 tl.dot を FPSan 同等物に変換するルールを作成しました(これを浮動小数点スカラー演算へ展開することで)。混合関数 φ および φ^-1 は各入力および出力要素にのみ適用され、行列乗算の核心は int32 の乗算と加算だけで構成されます。

証明

ついに楽しいパート:Schanuel が FPSan の所期の性質を蕴含することを示す証明です。 実数体上の二つの算術回路 f と g を考えてみましょう。これらはそれぞれ入力、出力端子、定数{-1, 0, +1}、環演算{−, +, ×}、および指数関数 exp のみから成り立っています。さらに、それらが写像 ℝ → ℝ から同じ関数を実装しているという同値性も仮定します。 Schanuel の仮説の実数版を仮定すると、{0, −, +, ×, exp} で生成される実数体 R の部分環 X は、Macintyre (1991) により証明された通り、何もない生成元を持つ自由指数環に同型であることが得られます。回路が R 上で同値であれば、X に制限したときも必然的に同値であり、その同型性によって何もない生成元を持つ自由指数環上で同値であることがわかります。

mod 2^32 の整数環と単項関数 C^x(ここで C は 8 で割ったあまりが 5 である特定の定数)との組は、何もない生成元を持つ自由指数環の商です。特に、写像 θ(exp(x)) = C^θ(x) を設定することで、何もない生成元を持つ自由指数環から mod 2^32 の整数環への全単射な準同型写像 θ を構築できます。 したがって、それゆえに FPSan 下でも回路は同値性を保持し、それは埋め込み関数 φ を通じて操作を引き戻すことにより、浮動小数点数に指数環の構造を与えるだけだからです。

正弦と余弦

我々はまた、形式記号 i(满足 i^2 = −1)を附加することで得られる二次拡大体における (−3/5 + 4/5 i)^n の実部および虚部として、2-adic 整数上での正弦関数と余弦関数の analogue を実装しました。これらは三角関数の角度の和・差の恒等式に加え、通常のノルム恒等式 sin(x)^2 + cos(x)^2 = 1 を満たします。 得られた結論(Schanuel の仮説を仮定し、実数上で成立する{0, 1, −, +, ×, exp}を含む任意の正当な代数恒等式が FPSan 下でも成り立つ)は強化されます:sin と cos も含まれた場合も同様に真です。

以下の二つの環の列を定義します:

  • 実数の部分環の上昇鎖 {Y_0, Y_1, Y_2, …}、ここで Y_0 = ℤであり、Y_{n+1} は Y_n に含まれるすべての x に対して exp(x), sin(x), cos(x) を附加して生成される環です。
  • 複素数の部分環の上昇鎖 {W_0, W_1, W_2, …}、ここで W_0 = ℤ[i]であり、W_{n+1} は W_n に含まれるすべての x に対して exp(x) を附加して生成される環です。

n についての帰納法により、W_n が正確に Y_n[i] であることを示せます(かつ特に Y_n は W_n の実部です)。特に、これが n-1 で成立すると仮定すれば:

  • x が Y_{n−1} に含まれるなら、exp(x)、cos(x) = (exp(ix) + exp(-ix))/2、および sin(x) = (exp(ix) – exp(-ix))/(2i) は明らかに W_n に含まれます。
  • z が W_{n−1} に含まれるなら(したがってその実部 a および虚部 b が Y_{n−1} に含まれる)、exp(z) の実部および虚部はそれぞれ exp(a) cos(b) および exp(a) sin(b) となり、これらは Y_n に属します。

すべての n に対する Y_n の合同を定義して Y とし、同様にすべての n に対する W_n の合同を定義して W とすると、W = Y[i] が得られます。

ここで Macintyre の証明アイデアを W_n の列に対して繰り返すことができます:複素版の Schanuel の仮説を仮定すれば、i^2 = −1 を満足する i によって生成された自由指数環が W であることがわかります。Y における{0, 1, −, +, ×, exp, cos, sin}を含む代数関係を転換し、W における{0, 1, i, −, +, ×, exp}に関する代数関係に変えることができ、かつこれは i が i^2 = −1 を満足する任意の指数環で成立しなければなりません。結論が得られます。

同じ日のほかのニュース

一覧に戻る →

2026/05/18 6:40

ジェンケイアド

## 日本語訳: GenCAD は、画像から直接編集可能な 3D CAD デザインを生成する AI モデルを作成することで、エンジニアリング分野における画期的な突破を遂げています。以前の方法は複雑なデータ構造に苦戦していましたが、この新しいアプローチは Boundary Representation(B-rep)形式に関連する精度上の課題を克服します。これは、latent command representations と diffusion modeling を含む独自の 4 つのステップのプロセスを通じて実現されており、結果を静的な形状ではなく、実行可能なパラメトリックコマンドとしてデコードします。 この技術は、製造業者やエンジニア向けに設計ワークフローを変革し、完全にモディフィ可能で高精度なモデルを瞬時に作成することを可能にしています。以前は、簡易的な 3D ビジュアルを調整可能なエンジニアリングファイルに変換するには、きつ手間のかかる手作業が必要でしたが、GenCAD はこの障壁を取り除き、ユーザーが設計を容易に反復して改善できる完全な CAD プログラムへの即座のアクセスを提供します。その結果、産業全体が大幅な効率向上を実感し、自律的なツールによって現在、さらなる開発に必要な柔軟性を備えた洗練された編集可能な幾何形状が生成されています。

2026/05/18 6:56

ThinkPad:IBM の弁当箱から、レノボの AI ワークステーションへ

## Japanese Translation: ThinkPad ノートパソコンファミリーは、IBM での公式発売(1992 年 10 月 5 日)以降、同社の所有期間(1992–2005 年)および Lenovo による継承期間(2005 年〜現在)にわたり、連続した納品を実現している長年のエンジニアリングの遺産です。当初は 700C カップシェルとして発表され、Richard Sapper の象徴的なマットブラックケース、10.4 インチの有源マトリックスカラー TFT ディスプレイ、そして Ted Selker の開発した TrackPoint II——ホームROWから指を動かす時間を短縮するポインティングスティック——を搭載していました。2010 年までには納品台数が 6000 万台を超え、買収後のブランドの存続と IBM の元々のエンジニアリング原則の維持を証明しました。デザインは 30 年にわたり大きく進化しましたが、1992 年の時代から現代のモデルである 2025/2026 年製の P14s Gen 6 や X1 Carbon に至るまで視覚的な連続性を保ち続けています。これらの現行モデルは「Strix Point」CPU を採用し、高度な NPU とプレミアム OLED ディスプレイを備えています。初期モデルでは 2012 年まで 7 レーキストANDARD化されており、その後は Precision キーボードに置き換えられましたが、後期の世代では 2012 年から開始されたハンダ付けメモリ制限などの課題もありました。一方、近年の傾向としては、薄い筐体にユーザー交換可能な DDR5 SODIMM を採用するなど、修理可能性への再注力が進んでいます。また、専用ドックから汎用的な USB-C/Thunderbolt 規格へも円滑に移行しています。結局のところ、ThinkPad の成功は、元々のデザイン哲学を尊重しつつ最新技術を統合することで、長期的な市場優位性を維持できることを示しています。

2026/05/18 6:15

プロログによるコーディング・ホラー。

## Japanese Translation: 本記事は、純粋で単調なコーディング慣行への厳格な遵守が、堅牢な Prolog プログラムにとって不可欠であるという主張を展開している。一般的な産業パターンへ偏离することは、言語の述語論的性質を破損させ、高価な欠陥をもたらす。`!/0`、`(->)/2`、および `var/1` などの非単調な構造は、意図された解の喪失か不適切な結果を生じる。`assertz/1` および `retract/1` でグローバルデータベースを改変することは、隠れた依存関係を創出し予期せぬ失敗を引き起こすため、状態は世界の改変を通じてではなく述語の引数を通じて伝達されるべきである。`(is)/2`、`(=:=)/2`、および比較演算子のような低水準のアリティム操作は、開発者に矛盾する述語論的および操作的意味を両立させるよう迫り、プログラムを理解しやすくし、学習・テスト・推論を行うことを難しくする。不純な出力操作もまた、解答を Prolog タームとして記号論的に考察することを阻止する。純粋で単調な Prolog 部分集合を採用し、`dif/2` のような近代の述語論的ツール、`if_/3` のようなメタ述語、およびクリーンなデータ構造を活用することで、開発者はパフォーマンスを維持しつつ一般性・柔軟性・厳格なテスト可能性を取り戻し、プロフェッショナル環境での利用を制限するレガシーの負担から Prolog を解放することができる。

シュアンールの予想とトリトンの浮動小数点数のセマンティクスについて | そっか~ニュース