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