Faster constraint solving with subtypes

  • Authors:
  • Jonathan Edwards;Daniel Jackson;Emina Torlak;Vincent Yeung

  • Affiliations:
  • MIT, Cambridge, MA;MIT, Cambridge, MA;MIT, Cambridge, MA;MIT, Cambridge, MA

  • Venue:
  • ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

Constraints in predicate or relational logic can be translated into boolean logic and solved with a SAT solver. For faster solving, it is common to exploit the typing of predicates or relations, in order to reduce the number of boolean variables needed to encode the constraint. Here we show how to extend this idea to constraints expressed in a language with subtyping. Our technique, called atomization, refactors the type hierarchy into a flat collection of disjoint atomic types. The constraints are then decomposed into equivalent constraints involving smaller relations or predicates over these new types, which can then be solved in the normal fashion. Experiments with an implementation of this technique within the Alloy Analyzer show improved performance on practical software checking problems.