定義と操作 させてΣ {\displaystyle \Sigma } は解釈されていない関数 の集合であり、Σ n \displaystyle \Sigma _{n}} は、Σ {\displaystyle \Sigma } アリティ関数から構成されるn {\displaystyle n} 。 させて私 d {\displaystyle \mathbb {id} } 等価性を比較できる不透明な識別子の可算集合であり、eクラスID と呼ばれる。f ∈ Σ n {\displaystyle f\in \Sigma _{n}} eクラスIDへ私 1 、 私 2 、 … 、 私 n ∈ 私 d {\displaystyle i_{1},i_{2},\ldots ,i_{n}\in \mathbb {id} } と表記されるf ( 私 1 、 私 2 、 … 、 私 n ) {\displaystyle f(i_{1},i_{2},\ldots ,i_{n})} そしてeノード と呼ばれる。
e -graph は 、次のデータ構造を使用して e-node の同値類を表します。[ 1 ]
ユニオンファインド 構造U {\displaystyle U} eクラスIDの同値クラスを表し、通常の操作を行うf 私 n d {\displaystyle \mathrm {検索} } 、1 d d {\displaystyle \mathrm {追加} } そしてm e r g e {\displaystyle \mathrm {マージ} } eクラスIDe {\displaystyle e} 正典で ある場合f 私 n d ( U 、 e ) = e {\displaystyle \mathrm {find} (U,e)=e} 電子ノードf ( 私 1 、 … 、 私 n ) {\displaystyle f(i_{1},\ldots ,i_{n})} それぞれが正典である場合私 j {\displaystyle i_{j}} 正典です(j {\displaystyle j} で1 、 … 、 n {\displaystyle 1,\ldots ,n} ) e-クラスIDとe-ノードのセット(e-クラス と呼ばれる)との関連付け。これは以下から構成されます。 ハッシュコン H {\displaystyle H} (つまり、eノードからeクラスIDへのマッピング) eクラスの地図 M {\displaystyle M} eクラスIDをeクラスにマッピングし、M {\displaystyle M} 同等のIDを同じeノードセットにマッピングします。∀ 私 、 j ∈ 私 d 、 M [ 私 ] = M [ j ] ⇔ f 私 n d ( U 、 私 ) = f 私 n d ( U 、 j ) {\displaystyle \forall i,j\in \mathbb {id} ,M[i]=M[j]\Leftrightarrow \mathrm {find} (U,i)=\mathrm {find} (U,j)}
不変量 上記の構造に加えて、有効な e-graph はいくつかのデータ構造不変条件 に準拠します。[ 2 ] 2 つの e-node が同じ e-class に属している場合、それらは同等です。 合同不変条件 は、e-graph が合同条件 の下で等価性を閉じることを保証する必要があることを示しています。ここで、2 つの e-node は、f ( 私 1 、 … 、 私 n ) 、 f ( j 1 、 … 、 j n ) {\displaystyle f(i_{1},\ldots ,i_{n}),f(j_{1},\ldots ,j_{n})} 合同であるのはf 私 n d ( U 、 私 k ) = f 私 n d ( U 、 j k ) 、 k ∈ { 1 、 … 、 n } {\displaystyle \mathrm {find} (U,i_{k})=\mathrm {find} (U,j_{k}),k\in \{1,\ldots ,n\}} ハッシュコンの不変条件 は、ハッシュコンが正規のeノードをそのeクラスIDにマッピングすることを示しています。
業務 Eグラフは、1 d d {\displaystyle \mathrm {追加} } 、f 私 n d {\displaystyle \mathrm {検索} } 、 そしてm e r g e {\displaystyle \mathrm {マージ} } ユニオンファインドから派生した、eグラフの不変条件を保持する操作。最後の操作であるeマッチングについては、以下で説明する。
eグラフは二部グラフとしても定式化できる。 G = ( N ⊎ 私 d 、 E ) {\displaystyle G=(N\uplus \mathrm {id} ,E)} どこ
私 d {\displaystyle \mathrm {id} } は、(上記の)eクラスIDのセットです。N {\displaystyle N} はeノードの集合であり、E ⊆ ( 私 d × N ) ∪ ( N × 私 d ) {\displaystyle E\subseteq (\mathrm {id} \times N)\cup (N\times \mathrm {id} )} は有向辺の集合です。各eクラスからその各メンバーへ、また各eノードからその各子へ、有向エッジが存在する。[ 3 ]
Eマッチング させてV {\displaystyle V} を変数の集合とし、T e r m ( Σ 、 V ) {\displaystyle \mathrm {用語} (\Sigma ,V)} は、0 項関数記号 (定数 とも呼ばれる) を含み、変数を含み、関数記号の適用に関して閉じている最小の集合である。言い換えれば、T e r m ( Σ 、 V ) {\displaystyle \mathrm {用語} (\Sigma ,V)} は、V ⊂ T e r m ( Σ 、 V ) {\displaystyle V\subset \mathrm {用語} (\Sigma ,V)} 、Σ 0 ⊂ T e r m ( Σ 、 V ) {\displaystyle \Sigma _{0}\subset \mathrm {Term} (\Sigma ,V)} 、そしてx 1 、 … 、 x n ∈ T e r m ( Σ 、 V ) {\displaystyle x_{1},\ldots ,x_{n}\in \mathrm {Term} (\Sigma ,V)} そしてf ∈ Σ n {\displaystyle f\in \Sigma _{n}} 、 それからf ( x 1 、 … 、 x n ) ∈ T e r m ( Σ 、 V ) {\displaystyle f(x_{1},\ldots ,x_{n})\in \mathrm {Term} (\Sigma ,V)} 変数を含む項はパターン と呼ばれ、変数を含まない項はグラウンド と呼ばれます。
電子グラフE {\displaystyle E} 基底項を表す t ∈ T e r m ( Σ 、 ∅ ) \displaystyle t\in \mathrm {Term} (\Sigma ,\emptyset )} そのeクラスの1つがt {\displaystyle t} eクラスC {\displaystyle C} 表現するt {\displaystyle t} もしあるeノードがf ( 私 1 、 … 、 私 n ) ∈ C {\displaystyle f(i_{1},\ldots ,i_{n})\in C} そうです。eノードf ( 私 1 、 … 、 私 n ) ∈ C {\displaystyle f(i_{1},\ldots ,i_{n})\in C} 用語を表すg ( j 1 、 … 、 j n ) {\displaystyle g(j_{1},\ldots ,j_{n})} もしf = g {\displaystyle f=g} そして各eクラスM [ 私 k ] {\displaystyle M[i_{k}]} 用語を表すj k {\displaystyle j_{k}} (k {\displaystyle k} で1 、 … 、 n {\displaystyle 1,\ldots ,n} )
e-マッチングは 、パターンを受け取る操作です。p ∈ T e r m ( Σ 、 V ) {\displaystyle p\in \mathrm {Term} (\Sigma ,V)} そして電子グラフE {\displaystyle E} 、そしてすべてのペアを生成します( σ 、 C ) {\displaystyle (\sigma ,C)} どこσ ⊂ V × 私 d {\displaystyle \sigma \subset V\times \mathbb {id} } は、変数をマッピングする置換です。p {\displaystyle p} eクラスIDとC ∈ 私 d {\displaystyle C\in \mathbb {id} } は、用語がσ ( p ) {\displaystyle \sigma (p)} はC {\displaystyle C} e-マッチングにはいくつかの既知のアルゴリズムがあり、[ 4 ] [ 5 ] 関係e-マッチングアルゴリズムは 最悪ケース最適結合 に基づいており、最悪ケース最適である。[ 6 ]
複雑 n 個の 等式を持つ e-graph はO( n log n ) 時間で構築できます。[ 9 ]
平等飽和 等価飽和は 、eグラフを使用して最適化コンパイラを構築するための手法です。[ 10 ] この手法は、eグラフが飽和するか、タイムアウトに達するか、eグラフのサイズ制限に達するか、固定回数の反復を超えるか、またはその他の停止条件に達するまで、eマッチングを使用して一連の書き換えを適用することによって動作します。書き換え後、通常はAST サイズまたはパフォーマンスの考慮事項に関連するコスト関数に従って、eグラフから最適な項が抽出されます。
参考文献 ↑ ( Willsey et al. 2021 ) ↑ ( Willsey et al. 2021 ) ↑ ( Goharshady、Lam 、 Parreaux 2024 ) ↑ ( デ・モウラ& ビョルナー 2007 ) ↑ Moskal, Michał; Łopuszański, Jakub; Kiniry, Joseph R. (2008-05-06). "E-matching for Fun and Profit" . Electronic Notes in Theoretical Computer Science . Proceedings of the 5th International Workshop on Satisfiability Modulo Theories (SMT 2007). 198 (2): 19– 35. doi : 10.1016/j.entcs.2008.04.078 . ISSN 1571-0661 . ↑ Zhang, Yihong; Wang, Yisu Remy; Willsey, Max; Tatlock, Zachary (2022-01-12). "関係的電子マッチング" . ACM プログラミング言語に関する論文集 . 6 (POPL): 35:1–35:22. arXiv : 2108.02290 . doi : 10.1145/3498696 . S2CID 236924583 . ↑ Stepp, Michael Benjamin (2011). Equality saturation: engineering challenges and applications (PhD thesis). USA: University of California at San Diego. ISBN 978-1-267-03827-2 。↑ ( Goharshady、Lam 、 Parreaux 2024 ) ↑ ( Flatt et al. 2022 、p. 2) ↑ ( テイト他、2009年 ) ↑ de Moura, Leonardo; Bjørner, Nikolaj (2008). "Z3: 効率的なSMTソルバー". Ramakrishnan, CR; Rehof, Jakob (編). Tools and Algorithms for the Construction and Analysis of Systems . Lecture Notes in Computer Science. Vol. 4963. Berlin, Heidelberg: Springer. pp. 337–340 . doi : 10.1007/978-3-540-78800-3_24 . ISBN 978-3-540-78800-3 。↑ Rümmer, Philipp (2012). "自由変数を用いたEマッチング". Bjørner, Nikolaj; Voronkov, Andrei (編)『 プログラミング、人工知能、推論のための論理』 第18回国際会議LPAR-18、ベネズエラ、メリダ、2012年3月11日~15日、議事録。Lecture Notes in Computer Science、第7180巻、 ベルリン 、 ハイデルベルク :Springer、pp. 359–374。doi: 10.1007 / 978-3-642-28717-6_28。ISBN 978-3-642-28717-6 。↑ ( Flatt et al. 2022 、p. 2) ↑ Detlefs, David; Nelson, Greg; Saxe, James B. (2005 年 5 月). "Simplify: プログラムチェックのための定理証明器". Journal of the ACM . 52 (3): 365– 473. doi : 10.1145/1066100.1066102 . ISSN 0004-5411 . S2CID 9613854 . ↑ Joshi, Rajeev; Nelson, Greg; Randall, Keith (2002-05-17). "Denali: 目標指向型スーパーオプティマイザ". ACM SIGPLAN Notices . 37 (5): 304–314 . doi : 10.1145/543552.512566 . ISSN 0362-1340 . ↑ ヤン、イーチェン。フォティリムタ、ピチャヤ・マンポ。ワン・イース・レミ。ウィルジー、マックス。ロイ、スディップ。ピナール、ジャック(2021-03-17)。 「テンソルグラフ超最適化のための等価飽和」。 arXiv : 2101.01332 [ cs.AI ]。 ↑ Wang, Yisu Remy; Hutchison, Shana; Leang, Jonathan; Howe, Bill; Suciu, Dan (2020-12-22). "SPORES: 大規模線形代数のための関係等式飽和による和積最適化". arXiv : 2002.07951 [ cs.DB ]. ↑ Thomas, Samuel; Bornholt, James (2026-06-01). "カスタマイズ可能なデジタル信号プロセッサのためのベクトル化コンパイラの自動生成" . Communications of the ACM . 69 (6): 97– 105. doi : 10.1145/3802600 . ISSN 0001-0782 . ↑ Stepp, Michael; Tate, Ross; Lerner, Sorin (2011). "LLVM 用等価性に基づく翻訳バリデーター". Gopalakrishnan, Ganesh; Qadeer, Shaz (編). Computer Aided Verification . Lecture Notes in Computer Science. Vol. 6806. Berlin, Heidelberg: Springer. pp. 737–742 . doi : 10.1007/978-3-642-22110-1_59 . ISBN 978-3-642-22110-1 。↑ "Wasm-mutate: E-Graphs を使用した WebAssembly コンパイラのファジング (EGRAPHS 2022) - PLDI 2022" . pldi22.sigplan.org . 2023-02-03 に取得 . ↑ Coward, Samuel; Constantinides, George A.; Drane, Theo (2022-03-17). "E-Graphs 上の抽象解釈". arXiv : 2203.09191 [ cs.LO ]. Coward, Samuel; Constantinides, George A.; Drane, Theo (2022-05-30). "E-Graphsと抽象解釈の組み合わせ". arXiv : 2205.14989 [ cs.DS ]. ↑ Cao, David; Kunkel, Rose; Nandi, Chandrakana; Willsey, Max; Tatlock, Zachary; Polikarpova, Nadia (2023-01-09). "babble: Learning Better Abstractions with E-Graphs and Anti-Unification". Proceedings of the ACM on Programming Languages . 7 (POPL): 396–424 . arXiv : 2212.04596 . doi : 10.1145/3571207 . ISSN 2475-1421 . S2CID 254536022 . de Moura, Leonardo; Bjørner, Nikolaj (2007). "SMTソルバーのための効率的なEマッチング" . Pfenning, Frank (編).自動推論 – CADE-21 . Lecture Notes in Computer Science. Vol. 4603. Berlin, Heidelberg: Springer. pp. 183–198 . doi : 10.1007/978-3-540-73595-3_13 . ISBN 978-3-540-73595-3 。 Willsey, Max; Nandi, Chandrakana; Wang, Yisu Remy; Flatt, Oliver; Tatlock, Zachary; Panchekha, Pavel (2021-01-04). "egg: 高速で拡張可能な等価性飽和" . Proceedings of the ACM on Programming Languages . 5 (POPL): 23:1–23:29. arXiv : 2004.03082 . doi : 10.1145/3434304 . S2CID 226282597 . Tate, Ross; Stepp, Michael; Tatlock, Zachary; Lerner, Sorin (2009年1月21日) 「等価性飽和」 .第36回ACM SIGPLAN-SIGACTプログラミング言語原理シンポジウム議事録 . POPL '09. 米国ジョージア州サバンナ: Association for Computing Machinery. pp. 264–276 . doi : 10.1145/1480881.1480915 . ISBN 978-1-60558-379-2 . S2CID 2138086 . Flatt, Oliver; Coward, Samuel; Willsey, Max; Tatlock, Zachary; Panchekha, Pavel (2022年10月) 「合同閉包からの小さな証明」 A. Griggio; N. Rungta (編)『第22回コンピュータ支援設計における形式手法に関する会議 – FMCAD 2022 議事録 』 TU Wien Academic Press、pp. 75–83。doi : 10.34727 / 2022 /isbn.978-3-85448-053-2_13。ISBN 978-3-85448-053-2 . S2CID 252118847 . Goharshady, Amir Kafshdar; Lam, Chun Kit; Parreaux, Lionel (2024-10-08). "疎な等価グラフの高速かつ最適な抽出" . ACM プログラミング言語に関する論文集 . 8 (OOPSLA2): 361:2551–361:2577. doi : 10.1145/3689801 .
外部リンク エッグプロジェクト eグラフを説明するColabノートブック