sudo file-roller /home/bischowg/Download/applications/alloy-i386-linux.zipDas Programm lässt sich nun mit dem Befehl
java -jar alloy.jarstarten.
module modulnameKommentare sind einzeilig und werden mit zwei backslashes begonnen.
// Dies ist ein Kommentar.Nach der Moduldeklaration folgen die Deklarationen der Signaturen (sig), Fakten. Es ist egal in welcher Reihenfolge man diese Konstrukte in die .als-Datei schreibt. Alloy ist deskriptiv und nicht imperativ. Es interpretiert die gesamte Menge an gegebenen Konstrukten egal in welcher Reihenfolge sie angegeben sind.
// The contents path is acyclic
assert acyclic {
no d: Dir | d in d.^contents
}
check acyclic for 5
| Schlüsselwort | Bedeutung |
|---|---|
| abstract | Eine abstrakte Signatur enthält nur die Atome, die auch in den von ihr abgeleiteten Signaturen vorhanden sind. |
| all | All-Quantor |
| assertion | |
| check | Eine Assertion lässt sich mit dem Befehl check testen |
| extends | Signature können voneinander abgeleitet werden |
| fact | Fact, Fakten müssen in Modellen gelten |
| for | Suche nach Beispielen beschränken |
| in | Teilmenge |
| let | Wie ein define in C, wird einfach ersetzt |
| lone | one or less, eines oder gar keines |
| module | definiert ein Modell in einer .als-Datei |
| no | |
| one | Genau eines. Von dieser Signatur gibt es nur genau ein Objekt |
| pred | Prädikat |
| run | Alloy Befehl, der versucht eine Lösung des Modells zu finden (Keine Gegenbeispiele) |
| set | Eine Menge kann kein Element, ein Element oder mehrere Elemente enthalten. |
| sig | Signature, definiert eine Menge von Objekten |
sig Mensch {
ehegatte: lone Mensch,
kind: set Mensch
}
Die obige Signatur erzeugt das Atom Mensch, das zwei Relationen ausbildet nämlich ehegatte und kind. Es werden also auch gleich zwei Mengen definiert, nämlich die Menge aller Ehegatten von Mensch und die Menge aller Kinder von Mensch.
pred example() {}
run example for exactly 4 A, exactly 2 B
Das leere Prädikat ist per Definition immer wahr, es wird also faktisch nur der Rest der Alloy .als-Datei auf eine erfüllende Instanz untersucht.