Original Paper

Innovations in Systems and Software Engineering

, Volume 6, Issue 3, pp 243-253

First online:

Randomized constraint solvers: a comparative study

  • Mitsuo TakakiAffiliated withFederal University of Pernambuco Email author 
  • , Diego CavalcantiAffiliated withFederal University of Campina Grande
  • , Rohit GheyiAffiliated withFederal University of Campina Grande
  • , Juliano IyodaAffiliated withFederal University of Pernambuco
  • , Marcelo d’AmorimAffiliated withFederal University of Pernambuco
  • , Ricardo B. C. PrudêncioAffiliated withFederal University of Pernambuco

Rent the article at a discount

Rent now

* Final gross prices may vary according to local VAT.

Get Access

Abstract

The complexity of constraints is a major obstacle for constraint-based software verification. Automatic constraint solvers are fundamentally incomplete: input constraints often build on some undecidable theory or some theory the solver does not support. This paper proposes and evaluates several randomized solvers to address this issue. We compared the effectiveness of a symbolic solver (CVC3), a random solver, two heuristic search solvers, and seven hybrid solvers (i.e. mix of random, symbolic, and heuristic solvers). We evaluated the solvers on a benchmark generated with a concolic execution of 9 subjects. The performance of each solver was measured by its precision, which is the fraction of constraints that the solver can find solution out of the total number of constraints that some solver can find solution. As expected, symbolic solving subsumes the other approaches for the 4 subjects that only generate decidable constraints. For the remaining 5 subjects, which contain undecidable constraints, the hybrid solvers achieved the highest precision (fraction of constraints that a solver can find a solution out of the total number of satisfiable constraints). We also observed that the solvers were complementary, which suggests that one should alternate their use in iterations of a concolic execution driver.

Keywords

Constraint solvers Software testing Concolic execution Random solvers