Title :
Alloy*: A General-Purpose Higher-Order Relational Constraint Solver
Author :
Milicevic, Aleksandar ; Near, Joseph P. ; Eunsuk Kang ; Jackson, Daniel
Author_Institution :
Massachusetts Inst. of Technol., Cambridge, MA, USA
Abstract :
The last decade has seen a dramatic growth in the use of constraint solvers as a computational mechanism, not only for analysis of software, but also at runtime. Solvers are available for a variety of logics but are generally restricted to first-order formulas. Some tasks, however, most notably those involving synthesis, are inherently higher order; these are typically handled by embedding a first-order solver (such as a SAT or SMT solver) in a domain-specific algorithm. Using strategies similar to those used in such algorithms, we show how to extend a first-order solver (in this case Kodkod, a model finder for relational logic used as the engine of the Alloy Analyzer) so that it can handle quantifications over higher-order structures. The resulting solver is sufficiently general that it can be applied to a range of problems; it is higher order, so that it can be applied directly, without embedding in another algorithm; and it performs well enough to be competitive with specialized tools. Just as the identification of first-order solvers as reusable backends advanced the performance of specialized tools and simplified their architecture, factoring out higher-order solvers may bring similar benefits to a new class of tools.
Keywords :
constraint handling; Alloy Analyzer engine; Kodkod model; domain-specific algorithm; first-order solver; general-purpose higher-order relational constraint solver; relational logic; runtime analysis; software analysis; Boolean functions; Concrete; Data structures; Engines; Metals; Semantics; Syntactics; alloy; constraint solving; higher-order;
Conference_Titel :
Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on
Conference_Location :
Florence
DOI :
10.1109/ICSE.2015.77