Hostname: page-component-7b7567c8c-tnzcf Total loading time: 0 Render date: 2026-11-12T08:00:23.368Z Has data issue: false hasContentIssue false

Applications and extensions of Alloy: past, present and future

Published online by Cambridge University Press:  08 July 2013

EMINA TORLAK
Affiliation:
University of California, Berkeley, U.S.A. Email: emina@eecs.berkeley.edu
MANA TAGHDIRI
Affiliation:
Karlsruhe Institute of Technology, Karlsruhe, Germany Email: taghdiri@ira.uka.de
GREG DENNIS
Affiliation:
Google, Cambridge, MA., U.S.A. Email: gdennis@alum.mit.edu
JOSEPH P. NEAR
Affiliation:
Computer Science and Artificial Intelligence Laboratory, MIT, Cambridge, MA., U.S.A. Email: jnear@csail.mit.edu
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

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.