Knowledge

Alloy (specification language)

Source 📝

122: 161:, the Alloy Analyzer performs model-finding over restricted scopes consisting of a user-defined finite number of objects. This has the effect of limiting the generality of the results produced by the Analyzer. However, the designers of the Alloy Analyzer justify the decision to work within limited scopes through an appeal to the 144:
Through version 3.0, the Alloy Analyzer incorporated an integral SAT-based model-finder based on an off-the-shelf SAT-solver. However, as of version 4.0 the Analyzer makes use of the Kodkod model-finder, for which the Analyzer acts as a front-end. Both model-finders essentially translate a model
153:
formula, and then invoke an off-the-shelf SAT-solver on the boolean formula. In the event that the solver finds a solution, the result is translated back into a corresponding binding of constants to variables in the relational logic model.
137:. However, model-checking is ill-suited to the kind of models that are typically developed in Alloy, and as a result the core of the Analyzer was eventually implemented as a model-finder built atop a 462: 129:
The Alloy Analyzer was specifically developed to support so-called "lightweight formal methods". As such, it is intended to provide fully automated analysis, in contrast to the
467: 133:
techniques commonly used with specification languages similar to Alloy. Development of the Analyzer was originally inspired by the automated analysis provided by
437: 472: 310: 63: 55:
in that it permits the definition of infinite models. The Alloy Analyzer is designed to perform finite scope checks even on infinite models.
294: 59: 356: 457: 91: 138: 45: 452: 51:
Although Alloy is designed with automatic analysis in mind, Alloy differs from many specification languages designed for
392:
Andoni, Alexandr; Daniliuc, Dumitru; Khurshid, Sarfraz; Marinov, Darko (2002). "Evaluating the small scope hypothesis".
110: 165:: that a high proportion of bugs can be found by testing a program for all test inputs within some small scope. 426: 431: 393: 326: 29: 272:
Because Alloy is a declarative language the meaning of a model is unaffected by the order of statements.
158: 21: 477: 398: 173:
Alloy models are relational in nature, and are composed of several different kinds of statements:
83: 121: 306: 37: 146: 17: 367: 130: 33: 52: 446: 421: 150: 134: 67: 352: 79: 78:
The first version of the Alloy language appeared in 1997. It was a rather limited
102: 101:
The mathematical underpinnings of the language were heavily influenced by the
302: 95: 330: 256:
are parameterized constraints, and can be used to represent operations
106: 120: 87: 48:. Alloy specifications can be checked using the Alloy Analyzer. 32:
for expressing complex structural constraints and behavior in a
58:
The Alloy language and analyzer are developed by a team led by
36:. Alloy provides a simple structural modeling tool based on 416: 225:- this establishes the existence of a relation between 82:
language. Succeeding iterations of the language "added
180:
define the vocabulary of a model by creating new sets
299:
Software Abstractions: Logic, Language, and Analysis
157:In order to ensure the model-finding problem is 250:are constraints that are assumed to always hold 463:Massachusetts Institute of Technology software 8: 44:that can then be automatically checked for 397: 237:is associated with no more than one head 109:of Alloy owes more to languages such as 289: 287: 285: 281: 40:. Alloy is targeted at the creation of 468:Computer-related introductions in 1997 64:Massachusetts Institute of Technology 7: 262:are expressions that return results 366:. Portland, Oregon. Archived from 14: 268:are assumptions about the model 473:Formal specification languages 432:Kodkod analysis engine website 1: 438:An Alloy Metamodel in Ecore 355:; Dennis, G. (April 2008). 131:interactive theorem proving 494: 111:Object Constraint Language 364:First ACM Alloy Workshop 357:"Kodkod for Alloy Users" 458:Satisfiability problems 422:Alloy Github Repository 213:that contains a field 163:small scope hypothesis 126: 74:History and influences 30:specification language 149:into a corresponding 124: 453:Formal methods tools 209:defines a signature 193:defines a signature 22:software engineering 98:, and signatures". 233:s such that every 203:List{ head : 139:boolean SAT solver 127: 117:The Alloy Analyzer 312:978-0-262-10114-1 221:and multiplicity 38:first-order logic 28:is a declarative 485: 404: 403: 401: 389: 383: 382: 380: 378: 372: 361: 349: 343: 342: 340: 338: 329:. Archived from 323: 317: 316: 291: 208: 192: 147:relational logic 18:computer science 493: 492: 488: 487: 486: 484: 483: 482: 443: 442: 413: 408: 407: 391: 390: 386: 376: 374: 373:on 22 June 2010 370: 359: 351: 350: 346: 336: 334: 325: 324: 320: 313: 295:Jackson, Daniel 293: 292: 283: 278: 199: 187: 171: 169:Model structure 125:Alloy Analyzer. 119: 80:object modeling 76: 34:software system 12: 11: 5: 491: 489: 481: 480: 475: 470: 465: 460: 455: 445: 444: 441: 440: 435: 429: 427:Guide to Alloy 424: 419: 412: 411:External links 409: 406: 405: 384: 344: 333:on 7 June 2007 318: 311: 280: 279: 277: 274: 270: 269: 263: 257: 251: 244: 243: 242: 241: 197: 182: 181: 170: 167: 135:model checkers 118: 115: 75: 72: 60:Daniel Jackson 53:model-checking 13: 10: 9: 6: 4: 3: 2: 490: 479: 476: 474: 471: 469: 466: 464: 461: 459: 456: 454: 451: 450: 448: 439: 436: 433: 430: 428: 425: 423: 420: 418: 417:Alloy website 415: 414: 410: 400: 399:10.1.1.8.7702 395: 388: 385: 369: 365: 358: 354: 348: 345: 332: 328: 322: 319: 314: 308: 304: 300: 296: 290: 288: 286: 282: 275: 273: 267: 264: 261: 258: 255: 252: 249: 246: 245: 240: 236: 232: 228: 224: 220: 216: 212: 206: 202: 198: 196: 190: 186: 185: 184: 183: 179: 176: 175: 174: 168: 166: 164: 160: 155: 152: 151:boolean logic 148: 145:expressed in 142: 140: 136: 132: 123: 116: 114: 112: 108: 104: 99: 97: 93: 89: 85: 81: 73: 71: 69: 68:United States 65: 61: 56: 54: 49: 47: 43: 39: 35: 31: 27: 23: 19: 387: 375:. Retrieved 368:the original 363: 347: 335:. Retrieved 331:the original 321: 298: 271: 265: 259: 253: 247: 238: 234: 230: 226: 222: 218: 214: 210: 204: 200: 194: 188: 177: 172: 162: 156: 143: 128: 100: 92:polymorphism 77: 57: 50: 42:micro-models 41: 25: 15: 327:"Alloy FAQ" 90:relations, 84:quantifiers 46:correctness 478:Z notation 447:Categories 353:Torlak, E. 276:References 266:Assertions 254:Predicates 178:Signatures 105:, and the 103:Z notation 394:CiteSeerX 303:MIT Press 260:Functions 159:decidable 96:subtyping 86:, higher 377:19 April 297:(2006). 217:of type 191:Object{} 337:7 March 66:in the 62:at the 434:at MIT 396:  309:  229:s and 207:Node } 195:Object 107:syntax 371:(PDF) 360:(PDF) 248:Facts 88:arity 26:Alloy 379:2009 339:2013 307:ISBN 239:Node 235:List 231:Node 227:List 223:lone 219:Node 215:head 211:List 205:lone 20:and 201:sig 189:sig 16:In 449:: 362:. 305:. 301:. 284:^ 141:. 113:. 94:, 70:. 24:, 402:. 381:. 341:. 315:.

Index

computer science
software engineering
specification language
software system
first-order logic
correctness
model-checking
Daniel Jackson
Massachusetts Institute of Technology
United States
object modeling
quantifiers
arity
polymorphism
subtyping
Z notation
syntax
Object Constraint Language

interactive theorem proving
model checkers
boolean SAT solver
relational logic
boolean logic
decidable



Jackson, Daniel
MIT Press

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.