Sibyl: Improving Software Engineering Tools with SMT Selection
Will Leeson, Matthew B. Dwyer, Antonio Filieri
Abstract
SMT solvers are often used in the back end of different software engineering tools─e.g., program verifiers, test generators, or program synthesizers. There are a plethora of algorithmic techniques for solving SMT queries. Among the available SMT solvers, each employs its own combination of algorithmic techniques that are optimized for different fragments of logics and problem types. The most efficient solver can change with small changes in the SMT query, which makes it nontrivial to decide which solver to use. Consequently, designers of software engineering tools often select a single solver, based on familiarity or convenience, and tailor their tool towards it. Choosing an SMT solver at design time misses the opportunity to optimize query solve times and, for tools where SMT solving is a bottleneck, the performance loss can be significant. In this work, we present Sibyl, an automated SMT selector based on graph neural networks (GNNs). Sibyl creates a graph representation of a given SMT query and uses GNNs to predict how each solver in a suite of SMT solvers would perform on said query. Sibyl learns to predict based on features of SMT queries that are specific to the population on which it is trained - avoiding the need for manual feature engineering. Once trained, Sibyl makes fast and accurate predictions which can substantially reduce the time needed to solve a set of SMT queries. We evaluate Sibyl in four scenarios in which SMT solvers are used: in competition, in a symbolic execution engine, in a bounded model checker, and in a program synthesis tool. We find that Sibyl improves upon the state of the art in nearly every case and provide evidence that it generalizes better than existing techniques. Further, we evaluate Sibyl's overhead and demonstrate that it has the potential to speedup a variety of different software engineering tools.
Ask about this paper
Your agent reads all of it.
Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.
Your agent calls
Luneget_paper_fulltext
Free to start. No credit card required.
Terminal
Install the CLIlune papers fulltext ec6b0984-57be-4aee-91c7-619f6c016e13Builds on4
- Building powerful and equivariant graph neural networks with structural message-passingClément Vignac, Andreas Loukas, Pascal FrossardNeurIPS 2020 · 141 citations
- Reconciling enumerative and deductive program synthesisKangjing Huang, Xiaokang Qiu, Peiyuan Shen, Yanjun WangPLDI 2020 · 46 citations
- Learning to Explore Paths for Symbolic ExecutionJingxuan He, Gishor Sivanrupan, Petar Tsankov, Martin T. VechevCCS 2021 · 39 citations
- Multiplex Symbolic Execution: Exploring Multiple Paths by Solving OnceYufeng Zhang, Zhenbang Chen, Ziqi Shuai, Tianqi Zhang et al.ASE 2020 · 17 citations
Related papers
- SMTgazer: Learning to Schedule SMT Algorithms via Bayesian OptimizationChuan Luo, Shaoke Cui, Jianping Song, Xindi Zhang et al.ASE 2025
- High-level synthesis performance prediction using GNNs: benchmarking, modeling, and advancingNan Wu, Hang Yang, Yuan Xie, Pan Li et al.DAC 2022 · 57 citations
- Synthesize solving strategy for symbolic executionZhenbang Chen, Zehua Chen, Ziqi Shuai, Guofeng Zhang et al.ISSTA 2021 · 13 citations
- Automated accelerator optimization aided by graph neural networksAtefeh Sohrabizadeh, Yunsheng Bai, Yizhou Sun, Jason CongDAC 2022 · 48 citations
- Online Prompt Selection for Program SynthesisYixuan Li, Lewis Frampton, Federico Mora, Elizabeth PolgreenAAAI 2025 · 2 citations
