Applications and extensions of Alloy: past, present and future

Alloy is a declarative language for lightweight modelling and analysis of software. The core of the language is based on first-order relational logic, which offers an attractive balance between analysability and expressiveness. The logic is expressive enough to capture the intricacies of real systems, but is also simple enough to support fully automated analysis with the Alloy Analyzer. The Analyzer is built on a SAT-based constraint solver and provides automated simulation, checking and debugging of Alloy specifications. Because of its automated analysis and expressive logic, Alloy has been applied in a wide variety of domains. These applications have motivated a number of extensions both to the Alloy language and to its SAT-based analysis. This paper provides an overview of Alloy in the context of its three largest application domains, lightweight modelling, bounded code verification and test-case generation, and three recent application-driven extensions, an imperative extension to the language, a compiler to executable code and a proof-capable analyser based on SMT.

[1]  Daniel J. Dougherty An Improved Algorithm for Generating Database Transactions from Relational Algebra Specifications , 2009, RULE.

[2]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[3]  Mana Taghdiri,et al.  A Lightweight Formal Analysis of a Multicast Key Management Scheme , 2003, FORTE.

[4]  Sharad Malik,et al.  Declarative Infrastructure Configuration Synthesis and Debugging , 2008, Journal of Network and Systems Management.

[5]  Jeremy Manson,et al.  The Java memory model , 2005, POPL '05.

[6]  Mana Taghdiri Inferring Specifications to Detect Errors in Code , 2004, ASE.

[7]  Joseph P. Near From Relational Specifications to Logic Programs , 2010, ICLP.

[8]  Javier Tuya,et al.  Full predicate coverage for testing SQL database queries , 2010, Softw. Test. Verification Reliab..

[9]  Emina Torlak,et al.  A constraint solver for software engineering: finding models and cores of large relational specifications , 2009 .

[10]  Sarfraz Khurshid,et al.  Automated SQL query generation for systematic testing of database engines , 2010, ASE.

[11]  Mandana Vaziri-Farahani,et al.  Finding bugs in software with a constraint solver , 2004 .

[12]  Mana Taghdiri,et al.  Automating modular program verification by refining specifications , 2008 .

[13]  Gregory D. Dennis A relational framework for bounded program verification , 2009 .

[14]  Emina Torlak,et al.  Kodkod: A Relational Model Finder , 2007, TACAS.

[15]  Derek Rayside,et al.  Automating commutativity analysis at the design level , 2004, ISSTA '04.

[16]  Marcelo F. Frias,et al.  Analysis of invariants for efficient bounded verification , 2010, ISSTA '10.

[17]  Kathi Fisler,et al.  Alchemy: transmuting base alloy specifications into implementations , 2008, SIGSOFT '08/FSE-16.

[18]  Sarfraz Khurshid,et al.  Testing Software Product Lines Using Incremental Test Generation , 2008, 2008 19th International Symposium on Software Reliability Engineering (ISSRE).

[19]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[20]  Felix Sheng-Ho Chang,et al.  Finding Minimal Unsatisfiable Cores of Declarative Specifications , 2008, FM.

[21]  Christos Faloutsos,et al.  Epidemic thresholds in real networks , 2008, TSEC.

[22]  Andrew William Roscoe,et al.  The Theory and Practice of Concurrency , 1997 .

[23]  Radu Mateescu,et al.  CADP 2006: A Toolbox for the Construction and Analysis of Distributed Processes , 2007, CAV.

[24]  Sarfraz Khurshid,et al.  Query-Aware Test Generation Using a Relational Constraint Solver , 2008, 2008 23rd IEEE/ACM International Conference on Automated Software Engineering.

[25]  Srinivas Devadas,et al.  Controlled physical random functions and applications , 2008, TSEC.

[26]  Jun Sun,et al.  Reasoning support for Semantic Web ontology family languages using Alloy , 2006, Multiagent Grid Syst..

[27]  Sarfraz Khurshid,et al.  Integrating Model Checking and Theorem Proving for Relational Reasoning , 2003, RelMiCS.

[28]  David Aspinall,et al.  On Validity of Program Transformations in the Java Memory Model , 2008, ECOOP.

[29]  Leonardo Mendonça de Moura,et al.  Complete Instantiation for Quantified Formulas in Satisfiabiliby Modulo Theories , 2009, CAV.

[30]  Natarajan Shankar,et al.  PVS: A Prototype Verification System , 1992, CADE.

[31]  Sivan Toledo,et al.  Algorithms and data structures for flash memories , 2005, CSUR.

[32]  Gerard J. Holzmann,et al.  The SPIN Model Checker , 2003 .

[33]  Frank Tip,et al.  Finding bugs efficiently with a SAT solver , 2007, ESEC-FSE '07.

[34]  Sarfraz Khurshid,et al.  Constraint Prioritization for Efficient Analysis of Declarative Models , 2008, FM.

[35]  Armin Biere,et al.  Symbolic Model Checking without BDDs , 1999, TACAS.

[36]  Dennis McLeod,et al.  The semantic data model: a modelling mechanism for data base applications , 1978, SIGMOD Conference.

[37]  Mana Taghdiri,et al.  Relational Reasoning via SMT Solving , 2011, FM.

[38]  Marcelo F. Frias,et al.  Alloy Analyzer+PVS in the Analysis and Verification of Alloy Specifications , 2007, TACAS.

[39]  Jean-Raymond Abrial,et al.  The B-book - assigning programs to meanings , 1996 .

[40]  Felix Sheng-Ho Chang,et al.  Modular verification of code with SAT , 2006, ISSTA '06.

[41]  Daniel Jackson,et al.  Formal Modeling and Analysis of a Flash Filesystem in Alloy , 2008, ABZ.

[42]  Laurian M. Chirica,et al.  The entity-relationship model: toward a unified view of data , 1975, SIGF.

[43]  Maria Paola Bonacina,et al.  On Deciding Satisfiability by DPLL(G+T) and Unsound Theorem Proving , 2009, CADE.

[44]  Sarfraz Khurshid,et al.  Pythia : Automatic Generation of Counterexamples for ACL 2 using Alloy , 2007 .

[45]  Tobias Nipkow,et al.  Nitpick: A Counterexample Generator for Higher-Order Logic Based on a Relational Model Finder , 2010, ITP.

[46]  Tahina Ramananandro,et al.  Mondex, an electronic purse: specification and refinement checks with the Alloy model-finding method , 2007, Formal Aspects of Computing.

[47]  Sarfraz Khurshid,et al.  TestEra: a novel framework for automated testing of Java programs , 2001, Proceedings 16th Annual International Conference on Automated Software Engineering (ASE 2001).

[48]  Michael J. Butler,et al.  ProB: A Model Checker for B , 2003, FME.

[49]  Konstantinos Arkoudas Denotational proof languages , 2000 .

[50]  Javier Tuya,et al.  Constraint-based test database generation for SQL queries , 2010, AST '10.

[51]  Daniel Jackson,et al.  Designing and Analyzing a Flash File System with Alloy , 2009, Int. J. Softw. Informatics.

[52]  Lee Momtahan Towards a Small Model Theorem for Data Independent Systems in Alloy , 2005, Electron. Notes Theor. Comput. Sci..

[53]  Mana Taghdiri,et al.  Lightweight extraction of syntactic specifications , 2006, SIGSOFT '06/FSE-14.

[54]  Nazareno Aguirre,et al.  DynAlloy: upgrading alloy with actions , 2005, ICSE.

[55]  Franc Brglez,et al.  Design of experiments and evaluation of BDD ordering heuristics , 2001, International Journal on Software Tools for Technology Transfer.

[56]  Joseph P. Near An Imperative Extension to Alloy and a Compiler for its Execution , 2010 .

[57]  Sarfraz Khurshid,et al.  Whispec: white-box testing of libraries using declarative specifications , 2007, LCSD '07.

[58]  Daniel Jackson,et al.  Requirement progression in problem frames: deriving specifications from requirements , 2007, Requirements Engineering.

[59]  Cesare Tinelli,et al.  Solving Quantified Verification Conditions Using Satisfiability Modulo Theories , 2007, CADE.

[60]  Jim Woodcock,et al.  An Electronic Purse: Specification, Refinement and Proof , 2000 .

[61]  Benoît Fraikin,et al.  Comparison of Model Checking Tools for Information Systems , 2010, ICFEM.

[62]  Vincent S. Yeung Declarative configuration applied to course scheduling , 2006 .

[63]  Emina Torlak,et al.  MemSAT: checking axiomatic specifications of memory models , 2010, PLDI '10.