Open access
Date
2020-06Type
- Conference Paper
Abstract
SMT solvers are at the basis of many applications, such as program verification, program synthesis, and test case generation. For all these applications to provide reliable results, SMT solvers must answer queries correctly. However, since they are complex, highly-optimized software systems, ensuring their correctness is challenging. In particular, state-of-the-art testing techniques do not reliably detect when an SMT solver is unsound.
In this paper, we present an automatic approach for generating test cases that reveal soundness errors in the implementations of string solvers, as well as potential completeness and performance issues. We synthesize input formulas that are satisfiable or unsatisfiable by construction and use this ground truth as test oracle. We automatically apply satisfiability-preserving transformations to generate increasingly-complex formulas, which allows us to detect many errors with simple inputs and, thus, facilitates debugging.
The experimental evaluation shows that our technique effectively reveals bugs in the implementation of widely-used SMT solvers and applies also to other types of solvers, such as automata-based solvers. We focus on strings here, but our approach carries over to other theories and their combinations. © 2020 Association for Computing Machinery. Show more
Permanent link
https://doi.org/10.3929/ethz-b-000397450Publication status
publishedExternal links
Book title
Proceedings of the ACM/IEEE 42nd International Conference on Software EngineeringPages / Article No.
Publisher
Association for Computing MachineryEvent
Subject
Automatic testing; Soundness testing; String solvers; SMT solversOrganisational unit
03653 - Müller, Peter / Müller, Peter
Related publications and datasets
Is cited by: https://doi.org/10.3929/ethz-b-000548050
Is new version of: https://doi.org/10.3929/ethz-b-000375243
Notes
Conference lecture held on July 10, 2020. Due to the Corona virus (COVID-19) the conference will be conducted virtually.More
Show all metadata