• Keine Ergebnisse gefunden

Semantik von Programmiersprachen – SS 2019

N/A
N/A
Protected

Academic year: 2022

Aktie "Semantik von Programmiersprachen – SS 2019"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Lehrstuhl für Programmierparadigmen

Sebastian Ullrich Max Wagner

sebastian.ullrich@kit.edu maximilian.wagner@kit.edu

Semantik von Programmiersprachen – SS 2019

http://pp.ipd.kit.edu/lehre/SS2019/semantik

Blatt 10: Fixpunkttheorie Besprechung: 01.06.2019

1. Welche der folgenden Aussagen sind richtig, welche falsch? (H)

(a) Fürf(σ) =σ[i7→1]und g(σ) =σ[i7→2] giltf vg.

(b) Jede Teilmenge vonR+0 ={x∈R|x≥0} hat bezüglich der normalen Ordnung ≤auf den reellen Zahlen Rein kleinstes Element.

(c) Jede Teilmenge einer total geordneten Menge ist eine Kette.

(d) In einer ccpo(D,v)hat jede Menge M ⊆Deine obere Schranke.

(e) Die MengePf in(N) der endlichen Teilmengen vonN ist mit der Teilmengenrelation⊆als Ordnung eine ccpo.

(f) Jede ccpo(D,v) hat ein kleinstes Element.

(g) Das abgeschlossene Intervall[0,1]⊆R ist eine ccpo mit≤als Ordnung.

(h) IF (p, f, g) ist strikt in f.

(i) Wenn f ◦g kettenstetig ist, dann sind auchf und g kettenstetig.

2. Monotonie und Fixpunkte (H)

Finden Sie eine Halbordnung (D,v) mit kleinstem Element ⊥ und eine monotone Funktion f ::D→D, die mehrere Fixpunkte besitzt, aber keinen kleinsten.

3. Exkurs: monadische Semantik (H)

In der funktionalen Programmierung kennt man das Abstraktionskonzept derMonade, die unter anderem durch die folgenden zwei Operationen charakterisiert werden kann:

pure::a→m a

(>=>) :: (a→m b)→(b→m c)→(a→m c)

Statt aufΣ*Σkönnen wirDJ_Kauf dem allgemeineren TypΣ→mΣdefinieren, angenommen mΣ ist eine ccpo1.

DmJskipK=pure

DmJx := aK=pure◦λσ. σ[x7→ AJaKσ]

DmJc1; c2K=DmJc1K>=>DmJc2K DmJif (b) then c1 else c2K= IF (BJbK, DmJc1K, DmJc2K)

DmJwhile (b) do cK= FIX (λf. IF (BJbK, DmJcK>=> f , pure))

DM aybeJ_Kentspricht damit der alten Semantik. Fallen Ihnen andere Monaden ein, die sinnvolle Semantiken ergeben?

1Man überlege sich, dassΣmΣdann auch eine ccpo sein muss

(2)

4. repeat c until b-Schleife (Ü)

In einer früheren Aufgabe haben wir schon die operationale Semantik einerrepeat-Schleife betrach- tet.Comwird dazu um das Syntaxkonstruktrepeat c until berweitert und die operationale Big-Step-Semantik durch die Regeln

RepeatTT: hc, σi ⇓σ0 BJbKσ0 =tt hrepeat c until b, σi ⇓σ0

RepeatFF: hc, σi ⇓σ0 BJbKσ0 =ff

repeat c until b, σ0

⇓σ00 hrepeat c until b, σi ⇓σ00

(a) Leiten Sie daraus die Rekursionsgleichung fürDJrepeat c until bKher.

(b) Erweitern Sie die Definition vonDJ·Kumrepeat c until b.

(c) Prüfen Sie, ob die Semantik mit Ihrer Erweiterung weiterhin wohldefiniert und kompositional ist.

(d) Zeigen oder widerlegen Sie:DJrepeat c until bK=DJc; while (not b) do cK

Semantik von Programmiersprachen – Blatt 10 2

Referenzen

ÄHNLICHE DOKUMENTE

6.3 haben wir die While-Sprache um Blöcke mit lokalen Variablen erweitert und operationale Semantiken

In der Vorlesung haben wir bereits die Big-Step- und Small-Step-Semantiken darauf erweitert, hier sollen Sie nun eine denotationale Erweiterung entwickeln. Statt höchstens

Berechnen Sie ein paar einfache Beispiele und versuchen Sie herauszufinden, in welcher Beziehung m, n und k zueinander stehen.. Schnelle

In einer früheren Aufgabe haben wir schon die operationale Semantik einer repeat-Schleife

Zeichen Sie dazu den Ableitungsbaum einer Ausf¨ uhrung des Programms gem¨ aß der Big-Step-Semantik f¨ ur n = −4.. Z¨ ahlschleife (

Die Maschine, auf der die ¨ ubersetzten Ausdr¨ ucke abgearbeitet werden sollen, nimmt eine Liste von Instruktionen, einen (anfangs leeren) Stack und einen Zustand mit der

Die in der Vorlesung vorgestelle Big-Step-Semantik f¨ ur Prozeduren mit einem Parameter wertet den ¨ ubergebenen Parameter beim Aufruf aus und ¨ ubergibt nur den Wert an die

Berechnen Sie ein paar einfache Beispiele und versuchen Sie herauszufinden, in welcher Beziehung m, n und k zueinander stehen.. Schnelle Division (