AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik...
-
Upload
walthari-stoyer -
Category
Documents
-
view
114 -
download
1
Transcript of AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik...
![Page 1: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/1.jpg)
AsmLAbstract State Machine LanguageAbstract State Machine Language
Humboldt Universität zu BerlinInstitut für InformatikSeminar Systementwurf WS 05/06Vortrag: Mike Herzog
![Page 2: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/2.jpg)
2
ins kalte Wasser
var A = [3, 10, 5, 7, 1]indices = {0, 1, 2, 3, 4}
Main() step DO_SORT: until fixpoint choose i in indices, j in indices where i < j and A(i) > A(j) A(i) := A(j) A(j) := A(i) step OUTPUT: WriteLine(A)
var A = [3, 10, 5, 7, 1]indices = {0, 1, 2, 3, 4}
Main() step DO_SORT: until fixpoint choose i in indices, j in indices where i < j and A(i) > A(j) A(i) := A(j) A(j) := A(i) step OUTPUT: WriteLine(A)
![Page 3: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/3.jpg)
3
ins kalte Wasser (2)
class Personvar age as Integer
var Amy as Person(20)var Bob as Person(16)var Jim as Person(40)
People = {Amy, Bob, Jim}
GrowOlder()forall p in People
p.age := p.age + 1
var year = 2006
class Personvar age as Integer
var Amy as Person(20)var Bob as Person(16)var Jim as Person(40)
People = {Amy, Bob, Jim}
GrowOlder()forall p in People
p.age := p.age + 1
var year = 2006
Main()step while year < 2012
WriteLine(`In ` + year)
WriteLine(Amy.age)WriteLine(Bob.age)WriteLine(Jim.age)GrowOlder()year := year + 1
Main()step while year < 2012
WriteLine(`In ` + year)
WriteLine(Amy.age)WriteLine(Bob.age)WriteLine(Jim.age)GrowOlder()year := year + 1
![Page 4: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/4.jpg)
4
ins kalte Wasser (3)
reachable of T(root as T, arcs as Set of (T,T))as Set of Tvar reachable = {root}
step until fixpointforall (l, r) in arcs
if l in reachable and r notin reachable then
add r to reachablestep return reachable
Main()arcs = {(1,2), (2,3), (4,5), (3,1), (5,6)}WriteLine(reachable(3,arcs))
reachable of T(root as T, arcs as Set of (T,T))as Set of Tvar reachable = {root}
step until fixpointforall (l, r) in arcs
if l in reachable and r notin reachable then
add r to reachablestep return reachable
Main()arcs = {(1,2), (2,3), (4,5), (3,1), (5,6)}WriteLine(reachable(3,arcs))
![Page 5: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/5.jpg)
5
Gliederung
1. Propaganda Offizielles von Microsoft
2. Einsatz Vorbereitungen In Aktion
3. Arbeitsweise Interessantes aus den Innereien
4. Referenz und Beispiele Symbole Variablen Schlüsselwörter
![Page 6: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/6.jpg)
6
1. Propaganda
YuriGurevich
WolfgangGrieskamp
WolframSchulte
NikolaiTillman
MargusVeanes
![Page 7: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/7.jpg)
7
„Ausführbare Spezifikationssprache basierend auf der Theorie der Abstract State Machines“
Aktuell Version 2 für Visual Studio .NET
Nutzung von MS Word 2002 und XML-Technologie für Spezifikation
Enge Zusammenarbeit mit anderen Visual Studio .NET Komponenten
1. Propaganda
![Page 8: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/8.jpg)
8
2. Einsatz in Word XP
Nutzung eines speziellen AsmL-Templates
Spezielle Formatierungen für AsmL in Word anlegen
... und benutzen
![Page 9: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/9.jpg)
9
![Page 10: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/10.jpg)
10
2. Einsatz in Word XP
Kompilieren
Fehler beseitigen (?)
Ausgaben
angucken...
![Page 11: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/11.jpg)
11
2. Einsatz in der DOS-Box AsmL Datei
kompilieren... dann ausführen
![Page 12: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/12.jpg)
12
2. Einsatz im .NET Framework Integration in Visual Studio .NET
Nutzen von Daten und Typen Aufrufen von Methoden etc.
Nur leider nicht bei ...
.
![Page 13: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/13.jpg)
13
3. Arbeitsweise
Zustände sind Belegungen von Variablen
Zustandsübergänge sind Schritte, in denen sich Belegungen ändern
Ein Lauf einer Maschine ist eine Folge von Zustandsübergängen
![Page 14: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/14.jpg)
14
3. Arbeitsweise
Parallelität So oft wie möglich zu verwenden Realisiert durch step Anweisung Reihenfolge der Anweisungen innerhalb
eines Schrittes nicht deterministisch
Updatemengen Vorrat an bei nächstem step zu
aktualisierenden Variablen Konsistenz von Updates beachten
![Page 15: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/15.jpg)
15
Gliederung
1. Propaganda Offizielles von Microsoft
2. Einsatz Vorbereitungen In Aktion
3. Arbeitsweise Interessantes aus den Innereien
4. Referenz und Beispiele Symbole Variablen Schlüsselwörter
![Page 16: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/16.jpg)
AsmL - Referenz
Wie sich das Große aus den Kleinen zusammensetzt
Wie sich das Große aus den Kleinen zusammensetzt
![Page 17: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/17.jpg)
17
Die step Anweisung Markiert den nächsten Schritt Fasst alle Anweisungen eines Schrittes zusammen
Main() initially F as File? = null initially FContents = ´´ step 1: F := Open(´MyFile.txt´) step 2: FContents := Read(F, 1) step 3: FContents := FContents + Read(F, 1) step 4: WriteLine(FContents)
const myList = [1, 2, 3]
Main() step foreach i in myList WriteLine(i)
![Page 18: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/18.jpg)
18
Die step Anweisung (cont.) kennt Abbruchbedingungen für Anweisungsblöcke
Main() initially x = 1 step until x > 9 x := x + 1
oder:
Main() initially x = 1 step while x < 10 x := x + 1
![Page 19: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/19.jpg)
19
Die step Anweisung (cont.) AsmL erkennt Fixpunkt-Operationen enum EnumMode
Initial Started Finished
Main() initially Mode = Initial initially Count = 0 step until fixpoint if Mode = Initial then Mode := Started Count := 1 if Mode = Started and Count < 10 then Count := Count + 1 if Mode = Started and Count => 10 then Mode := Finished
![Page 20: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/20.jpg)
20
Updates
Variablen mit neuen Werten belegen
Durch das := Symbol angezeigt
Immer bei der nächsten step Anweisung
Reihenfolge innerhalb eines Blocks nicht vorhersagbar
Auf Konsistenz achten!
![Page 21: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/21.jpg)
21
Updates (cont.)
Udates passieren erst bei der nächsten step Anweisung:
var x = 0var y = 1
Main() step x := 5 WriteLine(`erst ist x=0: ` + x) step WriteLine(`x wurde aktualisiert` + x)
![Page 22: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/22.jpg)
22
Updates (cont.)
das Austauschen von Variablen-Werten ist ebenfallsASM-konform:
var x = 0var y = 1
Main() step // x und y vertauschen x := y y := x step // x ist nun 1 // y ist nun 0
![Page 23: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/23.jpg)
23
Methoden
Ähnlich anderen Programmiersprachen
Funktionen vs. Update-Prozeduren
Unterscheidung lokaler und globaler Variablen
Method Overloading ebenfalls unterstützt
![Page 24: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/24.jpg)
24
Methoden (cont.)
var Count
Increment() // update Prozedur Count := Count + 1
CurentCounter() as Integer // Funktion return Count
Main() step Increment() step WriteLine( currentCounter )
var Count
Increment() // update Prozedur Count := Count + 1
CurentCounter() as Integer // Funktion return Count
Main() step Increment() step WriteLine( currentCounter )
![Page 25: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/25.jpg)
25
Methoden (cont.)
s = {1, 8, 2, 12, 13, 6}
Max ( i as Integer, j as Integer) as Integer return (if i > j then i else j)
Max (s as Set of Integer) as Integer return (any m | m in s where not (exists n in s where n > m) )
Main() step WriteLine( Max(s)) WriteLine( Max(2 ,3))
s = {1, 8, 2, 12, 13, 6}
Max ( i as Integer, j as Integer) as Integer return (if i > j then i else j)
Max (s as Set of Integer) as Integer return (any m | m in s where not (exists n in s where n > m) )
Main() step WriteLine( Max(s)) WriteLine( Max(2 ,3))
![Page 26: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/26.jpg)
26
Werte
„Normale“ Variablen Eingebaute Datentypen
Null, Bool Byte, Short, Integer, Long, Float, Double, Char,
String Seq, Set, Map Tupel
Benutzerdef. Strukturen und Klassen
Konstanten Optional typisiert lokal oder global
![Page 27: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/27.jpg)
27
Werte: Strukturen structure InputEvent
case KeyInputkey as Char
case SwitchInputtoggle as Boolean
case CoinReturn//no data needed
HandleInput(e as InputEvent) match e KeyInput(k): WriteLine(`Key: ` + k) SwitchInput(t): WriteLine(`Switch: `+ t)
CoinReturn(): WriteLine(`Coin return`)
Main() step 1: HandleInput(KeyInput(`a`)) step 2: HandleInput(CoinReturn())
structure InputEventcase KeyInput
key as Charcase SwitchInput
toggle as Booleancase CoinReturn
//no data needed
HandleInput(e as InputEvent) match e KeyInput(k): WriteLine(`Key: ` + k) SwitchInput(t): WriteLine(`Switch: `+ t)
CoinReturn(): WriteLine(`Coin return`)
Main() step 1: HandleInput(KeyInput(`a`)) step 2: HandleInput(CoinReturn())
![Page 28: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/28.jpg)
28
Werte: Klassen
Enthalten (Daten-) Felder Ermöglichen Referenzen Ableitungen wie OO
class Person var name as String var age as Integer
p1 = new Person(`Anne`, 37)p2 = new Person(`Kurt`, 12)
Writeline(p1.name)
![Page 29: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/29.jpg)
29
Werte: Klassen (cont.)
class BasicBox var length as Double var width as Double var heigth as Double
Volume() as Double return (length * width * heigth)
class FragileBox extends BasicBox Volume() as Double return (0.85 * length * width * heigth)
basicBox1 = new BasicBox(1.0, 1.0, 2.0)
WriteLine(basicBox1.Volume())
class BasicBox var length as Double var width as Double var heigth as Double
Volume() as Double return (length * width * heigth)
class FragileBox extends BasicBox Volume() as Double return (0.85 * length * width * heigth)
basicBox1 = new BasicBox(1.0, 1.0, 2.0)
WriteLine(basicBox1.Volume())
![Page 30: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/30.jpg)
30
Werte: Mengen
A = {1, 3 ,5 ,7, 11}
B = {1..20}
C = {i | i in B where 2 * i in B}
E = (L union F)
I = (L intersect F)
n = size(L)
A = {1, 3 ,5 ,7, 11}
B = {1..20}
C = {i | i in B where 2 * i in B}
E = (L union F)
I = (L intersect F)
n = size(L)
Definition durch Aufzählung Wertebereich arithmetischen
Ausdruck
Operationen Vereinigung,
Durchschnitt, Mächtigkeit, ...
Relationen Teilmenge,
Element, ...
![Page 31: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/31.jpg)
31
Werte: Listen
leer = []
l = [1, 2, 4, 4, 2]
Main() step WriteLine(l(1)) // gibt 2 aus, da Listen null-basiert sind
leer = []
l = [1, 2, 4, 4, 2]
Main() step WriteLine(l(1)) // gibt 2 aus, da Listen null-basiert sind
Wie Mengen: nur Elemente
gleichen Typs zulässig
Anders als Mengen: Reihenfolge wird
beachtet Elemente können
mehrfach vorkommen
![Page 32: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/32.jpg)
32
Werte: Maps
var phoneNumber as Map of String to Integer
phoneNumber = {`Bob`-> 100, `Carla`-> 102}
WriteLine(`Carlas number is ` + phoneNumber(`Carla`))
var phoneNumber as Map of String to Integer
phoneNumber = {`Bob`-> 100, `Carla`-> 102}
WriteLine(`Carlas number is ` + phoneNumber(`Carla`))
Abbildungen von Schlüsseln auf Werte
Definition durch: Explizite Einträge Arithmetische
Ausdrücke
Operationen Indizes, Werte Vereinigung
![Page 33: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/33.jpg)
33
Werte: Maps (cont.)
var phoneNumber as Map of String to Integer = {`Bob` -> 100, `Carla` -> 101, `Jim` -> 102, `Denni` -> 103 }
Main() step y = {j | i -> j in phoneNumber where j < 103}
WriteLine(y)
var phoneNumber as Map of String to Integer = {`Bob` -> 100, `Carla` -> 101, `Jim` -> 102, `Denni` -> 103 }
Main() step y = {j | i -> j in phoneNumber where j < 103}
WriteLine(y)
![Page 34: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/34.jpg)
34
Werte: Arrays
Nutzung von Mengen, Listen und Abbildungen statt Arrays
Iteration mit step foreach step forall
Adressierung eines bestimmten Eintrags c = [r, b, g] WriteLine(c(0))
Auswahl eines beliebigen Eintrags choose x in {`ja`, `nein`, `vielleicht`}
![Page 35: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/35.jpg)
35
Werte: Aufzählungstypen enum Farben
Rot Gelb Grün Blau
var f as Farben = Rot
WriteLine(f) // gibt Rot aus
enum Farben Rot Gelb Grün Blau
var f as Farben = Rot
WriteLine(f) // gibt Rot aus
Symbolische konstanten wie beispielsweise in C++
Initialisierungen automatisch, partiell oder total möglich
![Page 36: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/36.jpg)
36
Exkurs: Datentypen f. F.
Einfache Datentypen String, Integer, Boolean, Null, ... var v0 as Integer var v1 as (Integer, Integer, String)
Options-Typen var v2 as Integer or String var v3 as String or Null var v3 as String?
var v4 as (Integer?, Set of String)?
![Page 37: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/37.jpg)
37
Exkurs: Datentypen f. F. (cont.)
SomeFunction(x as Integer or String) as Stringif x is Integer then
return `Found Integer.`else
return `Found String.`
Main()step 1: WriteLine(SomeFunction(2))step 2: WriteLine(SomeFunction(`abc`)step 3: WriteLine(SomeFunction(3.0)
SomeFunction(x as Integer or String) as Stringif x is Integer then
return `Found Integer.`else
return `Found String.`
Main()step 1: WriteLine(SomeFunction(2))step 2: WriteLine(SomeFunction(`abc`)step 3: WriteLine(SomeFunction(3.0)
![Page 38: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/38.jpg)
38
Auswahl Ausdrücke
Main()let S = {1, 2, 3, 4, 5}let T = {-1, 2, 5, 7}step
let u1 = (any i | i in S where i < 4)let u2 = (the i | i in S where i < 1)let u3 = (sum i | i in S)
steplet v1 = (max x + y | y in S, y in T)let v2 = (the value | value in T where
value notin S)let v3 = (min x | x in S union T)
Main()let S = {1, 2, 3, 4, 5}let T = {-1, 2, 5, 7}step
let u1 = (any i | i in S where i < 4)let u2 = (the i | i in S where i < 1)let u3 = (sum i | i in S)
steplet v1 = (max x + y | y in S, y in T)let v2 = (the value | value in T where
value notin S)let v3 = (min x | x in S union T)
![Page 39: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/39.jpg)
39
Quantoren
S = {1, 2, 3, 4, 5, 6}//...
Main() v1 = forall i in S holds odd(i) v3 = forall i in S where i > 4 holds odd(i) v2 = forall i in S, j in S holds i mod j < 6 v2 = exists i in S where i > 4 v4 = forall i in S holds exists j in S
where i < j v5 = exists i in S where exists j in S
where i < j v6 = exists i in S, j in S where i + 1 = j
S = {1, 2, 3, 4, 5, 6}//...
Main() v1 = forall i in S holds odd(i) v3 = forall i in S where i > 4 holds odd(i) v2 = forall i in S, j in S holds i mod j < 6 v2 = exists i in S where i > 4 v4 = forall i in S holds exists j in S
where i < j v5 = exists i in S where exists j in S
where i < j v6 = exists i in S, j in S where i + 1 = j
![Page 40: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/40.jpg)
40
Zusicherungen
Incr(x as Integer) as Integerrequire x >= 0ensure result = x + 1return ((((x + 1) * 2) - 2) / 2) + 1
Main()step WriteLine(Incr(1))step WriteLine(Incr(99))
Incr(x as Integer) as Integerrequire x >= 0ensure result = x + 1return ((((x + 1) * 2) - 2) / 2) + 1
Main()step WriteLine(Incr(1))step WriteLine(Incr(99))
![Page 41: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/41.jpg)
41
Die Explore-Anweisung
Finden verschiedener Möglichkeinten bei deterministischen Fkt. nur eine sonst entspr. mehrere
Choose() as (Integer, Integer) x = any i | i in {1..3} y = any i | i in {2..x} return (x,y)
Main() WriteLine(explore Choose()) WriteLine(search Choose())
Choose() as (Integer, Integer) x = any i | i in {1..3} y = any i | i in {2..x} return (x,y)
Main() WriteLine(explore Choose()) WriteLine(search Choose())
![Page 42: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/42.jpg)
42
Auswahl der Schlüsselwörteradd and any as case catch choose
class else elseif ensure enum enumerated
error
exists explore
extends fixpoint forall foreach holds
if ifnone implements
implies import in initially
interface
intersect
is let match max merge
min mod namespace
new not notin of
operator
or remove require resulting return search
skip step structure sum the then throw
try type union until var where while
-> .. := += ( ) [ ] { } |
+ - * / < (lt) > (gt) = (eq) <= (le) >= (ge) <> (ne)
![Page 43: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/43.jpg)
43
AsmL
Informationen bei Microsofthttp://research.microsoft.com/fse/asml/
Folien zum Vortrag unterwww.informatik.hu-berlin.de/~herzog/Studium/asml.html
![Page 44: AsmL Abstract State Machine Language Humboldt Universität zu Berlin Institut für Informatik Seminar Systementwurf WS 05/06 Vortrag: Mike Herzog.](https://reader036.fdocuments.us/reader036/viewer/2022081518/55204d6249795902118b685b/html5/thumbnails/44.jpg)
44