Semantik von Programmiersprachen SoSe 2017

Werbung
4. Aufgabenblatt zur Vorlesung
Semantik von Programmiersprachen
SoSe 2017
Wolfgang Mulzer, Max Willert
Abgabe bis zum 15. Mai 2017, 12 Uhr, in den Briefkasten neben Raum 111
Aufgabe 1 Repeat-Until
10 Punkte
(a) Erweitern Sie die Sprache while um eine repeat-until Schleife. Definieren
Sie die natürliche Semantik durch geeignete Schlussregeln.
Ihre Definitionen sollen unabhängig von der Existenz einer while-Schleife in
der Sprache sein.
(b) Zeigen Sie: Die Anweisungen repeat S until b und S; if b then skip
else (repeat S until b) sind semantisch äquivalent.
Aufgabe 2 Terminierung von Anweisungen
10 Punkte
Sei S eine Anweisung. Wir sagen S terminiert immer, falls es für alle Zustände
σ einen Zustand σ 0 gibt mit hS, σi → σ 0 . Wir sagen S terminiert nie, falls es für
keinen Zustand σ einen Zustand σ 0 gibt mit hS, σi → σ 0
Welche der folgenden Anweisungen terminieren immer? Welche terminieren nie? Begründen Sie Ihre Antworten anhand der Axiome und Schlussregeln für die natürliche
Semantik.
(a) while ¬ (x=1) do (y := y*x; x := x - 1)
(b) while 1 ≤ x do (y := y*x; x := x - 1)
(c) while true do skip
Aufgabe 3 Implementierung in Haskell
Implementieren Sie die natürliche Semantik von while in Haskell.
10 Punkte
Herunterladen