SQLを用いた効率的なDatalogクエリ処理:環境関係に基づく巧妙なアプローチ

2025-08-31
SQLを用いた効率的なDatalogクエリ処理:環境関係に基づく巧妙なアプローチ

この記事では、DatalogプログラムをSQLクエリに変換する新しい手法を紹介します。著者はSQLのリレーショナル代数の機能を巧みに活用し、Datalogプログラム本体の変数バインディング環境を関係として表現することで、既存のSQLエンジンを使用してDatalogクエリを効率的に実行します。この手法は簡潔であるだけでなく、双対数のトリックを用いた半ナイーブ評価も可能で、パフォーマンスをさらに向上させます。この記事には、PythonとSQLのコード例、および他のDatalogエンジンとのパフォーマンス比較が含まれています。

続きを読む
開発

書き換え規則データベースの構築:野心的なプロジェクト

2025-02-22
書き換え規則データベースの構築:野心的なプロジェクト

この記事では、整数プロパティ、微分、集合論、ビットベクトル、関数型プログラムなど、さまざまな分野を網羅する書き換え規則のデータベースを作成することを提案しています。著者は、書き換え規則を含む既存のプロジェクトやライブラリを多数リストアップし、これらの規則を共通の形式に統合することの実現可能性と課題について議論しています。いくつかの規則は既存のSMTソルバーで直接証明できますが、著者は、特定のアプリケーションコンテキストにおける正確な書き換えと操作のために、明確に定義された書き換え規則データベースが不可欠であり、将来の研究にとって貴重なリソースとなると主張しています。

続きを読む

SATソルバー研究I:ブール充足可能性問題への深層探求

2025-01-08
SATソルバー研究I:ブール充足可能性問題への深層探求

この記事では、SATソルバーの魅惑的な世界を探求し、単純な総当たり法から、Davis-Putnam法やConflict-Driven Clause Learning (CDCL)などの高度なアルゴリズムへの進化をたどります。様々な手法を比較し、性能を劇的に向上させた最近の進歩、例えば、合同閉包、節の等価性掃引、有界変数追加などを強調します。著者は、総当たり法、Davis-Putnamベース、与えられた節ループによるソルバーを示すPythonコードの例を提供します。この記事では、部分評価手法や将来の研究方向にも触れ、ブール充足可能性問題の複雑さに興味のあるすべての人にとって魅力的な読み物となっています。

続きを読む

__bool__ のオーバーロードによるシンボリック実行

2024-12-24
__bool__ のオーバーロードによるシンボリック実行

この記事では、Z3 Pythonライブラリで __bool__ 関数をオーバーロードすることにより、Python コードのシンボリック実行を行うための巧妙な手法を紹介しています。著者は Z3 の機能を活用して、Python の条件文を Z3 式に変換し、パス探索と結果分析を可能にしています。このアプローチは複雑な AST 巡回を回避し、Python コード内で直接使用できるため、シンボリック実行を簡素化します。

続きを読む