The declarative modeling language Alloy and its automatic analyzer provide an effective tool-set for building designs of systems and checking their properties. The Alloy Analyzer performs bounded exhaustive analysis using off-the-shelf SAT solvers. The analyzer's performance hinges on the complexity of the models and so far, its feasibility has been shown only within small bounds. With the growing popularity of analyzable declarative modeling languages, in general, and Alloy, in particular, it is imperative to develop new techniques that allow the underlying solvers to scale to real systems.We present Kato, a novel technique that defines program slicing for declarative models and enables efficient analyses using existing analyzers, such as the Alloy Analyzer. Given a declarative model, Kato identifies a slice, which represents the model's core: a satisfying solution to the slice can be systematically extended to generate a solution for the entire model, while unsatisfiability of the core implies unsatisfiability of the entire model. The experimental results show that it is possible to achieve a significant improvement in the solving time.
[1]
R. K. Shyamasundar,et al.
Introduction to algorithms
,
1996
.
[2]
Daniel Jackson,et al.
Software Abstractions - Logic, Language, and Analysis
,
2006
.
[3]
Daniel Jackson,et al.
Declarative symbolic pure-logic model checking
,
2005
.
[4]
Sarfraz Khurshid,et al.
Optimizations for Compiling Declarative Models into Boolean Formulas
,
2005,
SAT.
[5]
P. Ashar,et al.
Combining strengths of circuit-based and CNF-based algorithms for a high-performance SAT solver
,
2002,
Proceedings 2002 Design Automation Conference (IEEE Cat. No.02CH37324).
[6]
David W. Binkley,et al.
Program slicing
,
2008,
2008 Frontiers of Software Maintenance.
[7]
Daniel Jackson,et al.
Alcoa: the Alloy constraint analyzer
,
2000,
Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.