SMT インスタンスを解決するための初期の試みでは、それらをブール SAT インスタンスに変換し (たとえば、32 ビット整数変数は適切な重みを持つ 32 個の 1 ビット変数でエンコードされ、「プラス」などのワードレベルの演算はビットに対する低レベルの論理演算に置き換えられます)、この式をブール SAT ソルバーに渡していました。このアプローチは、積極的なアプローチ(またはビットブラスト) と呼ばれ、利点があります。SMT 式を同等のブール SAT 式に前処理することで、既存のブール SAT ソルバーを「そのまま」使用でき、時間の経過とともにパフォーマンスと容量の向上を活用できます。一方、基礎となる理論の高レベルの意味論が失われるため、ブール SAT ソルバーは「明白な」事実 (たとえば、(整数加算の場合)この観察により、 DPLLスタイルの検索のブール推論と、特定の理論からの述語の論理積(AND)を処理する理論固有のソルバー( T ソルバー)を密接に統合した多数のSMT ソルバーが開発されました。このアプローチは、遅延アプローチと呼ばれています。[ 4 ]
DPLL(T) [ 5 ]と呼ばれるこのアーキテクチャは、ブール推論の責任を DPLL ベースの SAT ソルバーに委ね、SAT ソルバーは、明確に定義されたインターフェースを介して理論 T のソルバーとやり取りします。理論ソルバーは、式のブール探索空間を探索する際に、SAT ソルバーから渡された理論述語の論理積の実行可能性をチェックすることだけを気にすればよいのです。ただし、この統合がうまく機能するためには、理論ソルバーは伝播と競合分析に参加できなければなりません。つまり、既に確立された事実から新しい事実を推論でき、理論の競合が発生した場合には実行不可能性の簡潔な説明を提供できる必要があります。言い換えれば、理論ソルバーは増分的でバックトラック可能でなければなりません。
An important application of SMT solvers is symbolic execution for analysis and testing of programs (e.g., concolic testing), aimed particularly at finding security vulnerabilities. Example tools in this category include SAGE from Microsoft Research, KLEE, S2E, and Triton. SMT solvers that have been used for symbolic-execution applications include Z3, STPArchived 2015-04-06 at the Wayback Machine, the Z3str family of solvers, and Boolector.
Interactive theorem proving
SMT solvers have been integrated with proof assistants, including Rocq[29] and Isabelle/HOL.[30]
Synthesis
SMT solvers are a core building block in program synthesis, the automated generation of programs from specifications. A prominent approach is counterexample-guided inductive synthesis (CEGIS), in which a synthesiser proposes a candidate program that is verified by an SMT solver; counterexamples from failed checks guide the synthesiser until a correct solution is found.[31]
A related application is automatic program repair: given a buggy program and a test suite, an SMT formula is constructed whose solution yields a patch. For example, Nopol encodes the problem of finding a repaired conditional expression as an SMT instance, translating the solution back into a source-code patch for Java programs.[32]
↑Blanchette, Jasmin Christian; Böhme, Sascha; Paulson, Lawrence C. (2013-06-01). "Extending Sledgehammer with SMT Solvers". Journal of Automated Reasoning. 51 (1): 109–128. doi:10.1007/s10817-013-9278-5. ISSN1573-0670. ATPs and SMT solvers have complementary strengths. The former handle quantifiers more elegantly, whereas the latter excel on large, mostly ground problems.
↑ Hadarean, Liana; Bansal, Kshitij; Jovanović, Dejan; Barrett, Clark; Tinelli, Cesare (2014). "A Tale of Two Solvers: Eager and Lazy Approaches to Bit-Vectors" . In Biere, Armin; Bloem, Roderick (eds.). Computer Aided Verification . Lecture Notes in Computer Science. Vol. 8559. Cham: Springer International Publishing. pp. 680–695 . doi : 10.1007/978-3-319-08867-9_45 . ISBN978-3-319-08867-9。
↑ Brain, Martin; Schanda, Florian; Sun, Youcheng (2019). "浮動小数点問題に対するより良いビットブラストの構築". Vojnar, Tomáš; Zhang, Lijun (編). Tools and Algorithms for the Construction and Analysis of Systems . 第25回国際会議、Tools and Algorithms for the Construction and Analysis of Systems 2019、チェコ共和国プラハ、2019年4月6日~11日、議事録、パートI。Lecture Notes in Computer Science。Cham: Springer International Publishing。pp. 79–98。doi : 10.1007 /978-3-030-17462-0_5。ISBN978-3-030-17462-0. S2CID 92999474 .
↑ Brain, Martin; Niemetz, Aina; Preiner, Mathias; Reynolds, Andrew; Barrett, Clark; Tinelli, Cesare (2019). "浮動小数点式の可逆条件". In Dillig, Isil; Tasiran, Serdar (eds.). Computer Aided Verification . 31st International Conference, Computer Aided Verification 2019, New York City, July 15–18, 2019. Lecture Notes in Computer Science. Cham: Springer International Publishing. pp. 116–136 . doi : 10.1007/978-3-030-25543-5_8 . ISBN978-3-030-25543-5. S2CID 196613701 .
↑ Liang, Tianyi; Tsiskaridze, Nestan; Reynolds, Andrew; Tinelli, Cesare; Barrett, Clark (2015). "無制限文字列に対する正規メンバーシップと長さ制約の決定手順" . Lutz, Carsten; Ranise, Silvio (編) 『結合システムのフロンティア』所収。Lecture Notes in Computer Science. Vol. 9322. Cham: Springer International Publishing. pp. 135–150 . doi : 10.1007/978-3-319-24246-0_9 . ISBN978-3-319-24246-0。
↑ Reynolds, Andrew; Blanchette, Jasmin Christian (2015). "SMTソルバーにおける(Co)データ型の決定手順" . Felty, Amy P.; Middeldorp, Aart (編). Automated Deduction - CADE-25 . Lecture Notes in Computer Science. Vol. 9195. Cham: Springer International Publishing. pp. 197–213 . doi : 10.1007/978-3-319-21401-6_13 . ISBN978-3-319-21401-6。
↑ Sheng, Ying; Nötzli, Andres; Reynolds, Andrew; Zohar, Yoni; Dill, David; Grieskamp, Wolfgang; Park, Junkil; Qadeer, Shaz; Barrett, Clark; Tinelli, Cesare (2023-09-15). "Reasoning About Vectors: Satisfiability Modulo a Theory of Sequences" . Journal of Automated Reasoning . 67 (3): 32. doi : 10.1007/s10817-023-09682-2 . ISSN 1573-0670 . S2CID 261829653 .
↑ Bansal, Kshitij; Reynolds, Andrew; Barrett, Clark; Tinelli, Cesare (2016). "SMTにおける有限集合と基数制約のための新しい決定手順" . Olivetti, Nicola; Tiwari, Ashish (編).自動推論. Lecture Notes in Computer Science. Vol. 9706. Cham: Springer International Publishing. pp. 82–98 . doi : 10.1007/978-3-319-40229-1_7 . ISBN978-3-319-40229-1。
↑ Meng, Baoluo; Reynolds, Andrew; Tinelli, Cesare; Barrett, Clark (2017). "SMTにおける関係制約解決" . De Moura, Leonardo (編).自動推論 – CADE 26 . Lecture Notes in Computer Science. Vol. 10395. Cham: Springer International Publishing. pp. 148– 165. doi : 10.1007/978-3-319-63046-5_10 . ISBN978-3-319-63046-5。
↑ Reynolds, Andrew; Iosif, Radu; Serban, Cristina; King, Tim (2016). "A Decision Procedure for Separation Logic in SMT" . In Artho, Cyrille; Legay, Axel; Peled, Doron (eds.). Automated Technology for Verification and Analysis . Lecture Notes in Computer Science. Vol. 9938. Cham: Springer International Publishing. pp. 244–261 . doi : 10.1007/978-3-319-46520-3_16 . ISBN978-3-319-46520-3. S2CID 6753369 .
↑ Ozdemir, Alex; Kremer, Gereon; Tinelli, Cesare; Barrett, Clark (2023). "有限体による充足可能性" . Enea, Constantin; Lal, Akash (編)『コンピュータ支援検証』Lecture Notes in Computer Science. Vol. 13965. Cham: Springer Nature Switzerland. pp. 163–186 . doi : 10.1007/978-3-031-37703-7_8 . ISBN978-3-031-37703-7. S2CID 257235627 .
↑ Bayless, Sam; Bayless, Noah; Hoos, Holger; Hu, Alan (2015-03-04). "SAT Modulo Monotonic Theories" . Proceedings of the AAAI Conference on Artificial Intelligence . 29 (1). arXiv : 1406.0043 . doi : 10.1609/aaai.v29i1.9755 . ISSN 2374-3468 . S2CID 9567647 .
↑トビアス、クレンツェ。ベイレス、サム。胡、アラン J. (2016)。「SMT による高速、柔軟、最小限の CTL 合成」。スワラット州チャウドゥリにて。ファルザン、アザデ(編)。コンピュータ支援による検証。コンピューターサイエンスの講義ノート。 Vol. 9779. チャム: Springer International Publishing。 pp. 136–156。土井: 10.1007/978-3-319-41528-4_8。ISBN978-3-319-41528-4。
↑ Bembenek, Aaron; Greenberg, Michael; Chong, Stephen (2023-01-11). "From SMT to ASP: Solver-Based Approaches to Solving Datalog Synthesis-as-Rule-Selection Problems" . Proceedings of the ACM on Programming Languages . 7 (POPL): 7:185–7:217. doi : 10.1145/3571200 . S2CID 253525805 .
↑ Bauer, A.; Pister, M.; Tautschnig, M. (2007), "ハイブリッドシステムとモデルの分析のためのツールサポート", Proceedings of the 2007 Conference on Design, Automation and Test in Europe (DATE'07) , IEEE Computer Society, p. 1, CiteSeerX 10.1.1.323.6807 , doi : 10.1109/DATE.2007.364411 , ISBN978-3-9810801-2-4S2CID 9159847
↑ Fränzle, M.; Herde, C.; Ratschan, S.; Schubert, T.; Teige, T. (2007), "複雑なブール構造を持つ大規模非線形算術制約システムの効率的な解法" (PDF) , Journal on Satisfiability, Boolean Modeling and Computation , 1 (3–4 JSAT Special Issue on SAT/CP Integration): 209– 236, doi : 10.3233/SAT190012
↑ Barbosa, Haniel; Barrett, Clark; Brain, Martin; Kremer, Gereon; Lachnitt, Hanna; Mann, Makai; Mohamed, Abdalrhman; Mohamed, Mudathir; Niemetz, Aina; Nötzli, Andres; Ozdemir, Alex; Preiner, Mathias; Reynolds, Andrew; Sheng, Ying; Tinelli, Cesare (2022). "cvc5: 汎用性と産業レベルのSMTソルバー" . In Fisman, Dana; Rosu, Grigore (eds.). Tools and Algorithms for the Construction and Analysis of Systems, 28th International Conference . Lecture Notes in Computer Science. Vol. 13243. Cham: Springer International Publishing. pp. 415–442。土井: 10.1007/978-3-030-99524-9_24。ISBN978-3-030-99524-9. S2CID 247857361 .
↑ Barrett, Clark; de Moura, Leonardo; Stump, Aaron (2005). "SMT-COMP: Satisfiability Modulo Theories Competition" . Etessami, Kousha; Rajamani, Sriram K. (eds.). Computer Aided Verification . Lecture Notes in Computer Science. Vol. 3576. Springer. pp. 20–23 . doi : 10.1007/11513988_4 . ISBN978-3-540-31686-2。
↑ Barrett, Clark; de Moura, Leonardo; Ranise, Silvio; Stump, Aaron; Tinelli, Cesare (2011). "The SMT-LIB Initiative and the Rise of SMT: (HVC 2010 Award Talk)". In Barner, Sharon; Harris, Ian; Kroening, Daniel; Raz, Orna (eds.). Hardware and Software: Verification and Testing . Lecture Notes in Computer Science. Vol. 6504. Springer. p. 3. Bibcode : 2011LNCS.6504....3B . doi : 10.1007/978-3-642-19583-9_2 . ISBN978-3-642-19583-9。
Jha, Susmit; Limaye, Rhishikesh; Seshia, Sanjit A. (2009). "Beaver: ビットベクトル演算のための効率的なSMTソルバーの設計".第21回コンピュータ支援検証国際会議議事録. pp. 668–674 . doi : 10.1007/978-3-642-02658-4_53 . ISBN978-3-642-02658-4。
Bryant, RE; German, SM; Velev, MN (1999). "未解釈関数を用いた等価論理のための効率的な決定手順によるマイクロプロセッサ検証" (PDF) . Analytic Tableaux and Related Methods . pp. 1–13 .、pp. 、。
Davis, M.; Putnam, H. (1960). "A Computing Procedure for Quantification Theory" . Journal of the Association for Computing Machinery . 7 (3): 201–215 . doi : 10.1145/321033.321034 . S2CID 31888376 .
Davis, M.; Logemann, G.; Loveland, D. (1962). "定理証明のための機械プログラム". Communications of the ACM . 5 (7): 394–397 . doi : 10.1145/368273.368557 . hdl : 2027/mdp.39015095248095 . S2CID 15866917 .
Kroening, D.; Strichman, O. (2008).決定手続き ― アルゴリズム的観点. 理論計算機科学シリーズ. Springer. ISBN978-3-540-74104-6。
Nam, G.-J.; Sakallah, KA; Rutenbar, R. (2002). "A New FPGA Detailed Routing Approach via Search-Based Boolean Satisfiability". IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems . 21 (6): 674–684 . Bibcode : 2002ITCAD..21..674N . doi : 10.1109/TCAD.2002.1004311 .
SMT-LIB: 充足可能性理論ライブラリ
SMT-COMP:充足可能性理論コンペティション
意思決定手順 ― アルゴリズム的観点から
Sebastiani, R. (2007). "Lazy Satisfiability Modulo Theories". Journal on Satisfiability, Boolean Modeling and Computation . 3 ( 3–4 ): 141–224 . CiteSeerX 10.1.1.100.221 . doi : 10.3233/SAT190034 .