Ãbersicht Formale Semantik Idee: Definiere Effekte
Ãbersicht Formale Semantik Idee: Definiere Effekte
Ãbersicht Formale Semantik Idee: Definiere Effekte
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Vorlesung Höhere Programmiersprachen,<br />
WS 2002/03<br />
Teil 2: <strong>Formale</strong> <strong>Semantik</strong><br />
Denotationelle<br />
<strong>Semantik</strong><br />
Inhaltsübersicht HPS WS 2002/03<br />
- Grundlagen (1,2,3)<br />
- Konzepte imperativer Programmiersprachen (3,4)<br />
- Deklarative Programmiersprachen (5,6)<br />
- Objektorientierte Programmiersprachen (6,7)<br />
- Wissenschaftliches Rechnen: Fortran (8,9)<br />
- <strong>Formale</strong> <strong>Semantik</strong><br />
- Operationale <strong>Semantik</strong> mit ASMs (8,9)<br />
- Operationale <strong>Semantik</strong> mit natürlicher <strong>Semantik</strong> und SOS (10)<br />
- Denotationelle <strong>Semantik</strong> (11)<br />
- Axiomatische <strong>Semantik</strong> (12)<br />
1<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
- Skriptsprachen (13)<br />
- Wirtschaftsanwendungen:<br />
- Cobol (14)<br />
- Abap/4 (15)<br />
Übersicht <strong>Formale</strong> <strong>Semantik</strong><br />
• Konzepte in Programmiersprachen<br />
– Was muß überhaupt spezifiziert werden<br />
• Überblick verschiedene Formalismen<br />
• Operationale <strong>Semantik</strong><br />
– Abstrakte Zustandsmaschinen (ASMs)<br />
– Strukturell operationale <strong>Semantik</strong> (SOS)<br />
– natürliche <strong>Semantik</strong><br />
• Denotationelle <strong>Semantik</strong><br />
• Axiomatische <strong>Semantik</strong><br />
<strong>Idee</strong>: <strong>Definiere</strong> <strong>Effekte</strong><br />
• <strong>Definiere</strong> die <strong>Effekte</strong> der Ausführung von<br />
Programmen<br />
• Modellierung mit mathematischen Funktionen<br />
• 1. Beispiel: Effekt einer Sequenz von Anweisungen:<br />
– funktionale Komposition der <strong>Effekte</strong> der einzelnen<br />
Anweisungen<br />
• 2. Beispiel: Effekt einer Zuweisung x:=a:<br />
– Funktion, die Zustände in Zustände abbildet<br />
– der neue Zustand ist identisch mit dem alten außer dass<br />
der Wert der Variablen auf der linken Seite gleich ist mit<br />
dem Wert des Ausdrucks auf der rechten Seite<br />
3<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
4<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Kleines Beispiel-Programm<br />
• Programm: z:=x; x:=y; y:=z<br />
• <strong>Semantik</strong> des Programms:<br />
– Funktion S, die Zustände in Zustände transformiert<br />
• Seien S«z:=x¬, S«x:=y¬, S«y:=z¬ jeweils die<br />
Funktionen für die Einzelanweisungen, die den<br />
Zustand entsprechend modifizieren<br />
• Dann ist die Funktion für die Anweisungssequenz:<br />
S«z:=x; x:=y; y:=z ¬ = S«y:=z¬ ◦ S«x:=y¬ ◦ S«z:=x¬<br />
• Man beachte die umgekehrte Reihenfolge, die der<br />
üblichen Notation für Funktionsverkettung<br />
entspricht.<br />
Effekt des Beispielprogramms<br />
• Anfangszustand: x hat den Wert 5,<br />
y den Wert 7 und z den Wert 0<br />
• S«z:=x; x:=y; y:=z ¬([xa 5, ya 7, za 0]) =<br />
= (S«y:=z¬ ◦ S«x:=y¬ ◦ S«z:=x¬) ([xa 5, ya 7, za 0])<br />
= S«y:=z¬(S«x:=y¬(S«z:=x¬([xa 5, ya 7, za 0])))<br />
= S«y:=z¬(S«x:=y¬([xa 5, ya 7, za 5]))<br />
= S«y:=z¬([xa 7, ya 7, za 5])<br />
= ([xa 7, ya 5, za 5])<br />
5<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
6<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Kompositionalität<br />
Beispiele kompositionaler Definitionen<br />
7<br />
• Die abstrakte Syntax spezifiziert<br />
syntaktische Sorten<br />
– Basiselemente (=Blätter im Syntaxbaum) und<br />
– zusammengesetzte Elemente (innere Knoten)<br />
– zusammengesetzte Elemente haben eindeutige<br />
Dekomposition<br />
• <strong>Semantik</strong> wird kompositional definiert:<br />
– semantische Funktion für jedes Basiselement<br />
– semantische Funktionen für innere Knoten<br />
zusammengesetzt aus semantischen Funktionen<br />
der direkten Nachfolger<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
8<br />
• Funktion A: Aexp × states → Z<br />
– weist arithemtischen Ausdrücken Zahlen in Z zu<br />
A«n]s = N«n¬<br />
A«x]s = Lookup(s,x)<br />
A«a 1 +a 2 ¬s = A«a 1 ¬s + A«a 2 ¬s<br />
A«a 1 - a 2 ¬s = A«a 1 ¬s- A«a 2 ¬s<br />
A«a 1 * a 2 ¬s = A«a 1 ¬s * A«a 2 ¬s<br />
• Funktion B: Bexp × states → {tt, ff} analog<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
While-Sprache<br />
Direct Style Denotational Semantics<br />
a ::= n | x | a 1 + a 2 | a 1 * a 2 | a 1 –a 2<br />
b ::= true | false | a 1 = a 2 | a 1 · a 1 | ¬ b | b 1 ∧ b 2<br />
S ::= x:=a | skip | S_1 ; S_2 | if b then S 1 else S 2 | while b do S<br />
• <strong>Semantik</strong> der arithmetischen und Booleschen<br />
Ausdrücke:<br />
– wie bei der operationalen <strong>Semantik</strong><br />
• <strong>Semantik</strong> der Zuweisung:<br />
– S«x:=a¬s = s[xaA«a¬s]<br />
– wenn S«x:=a¬ = s´, dann ist s´ x = A«a¬s und s´ y = s y für y ≠ x<br />
• <strong>Semantik</strong> der Skip-Anweisung: S«skip¬ = id<br />
– id: Identitätsfunktion<br />
– drückt aus, dass keine Zustandsänderung passiert<br />
– S« skip¬ s = s für alle Zustände s<br />
9<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
10<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Direct Style Denotational Semantics<br />
Direct Style Denotational Semantics<br />
<strong>Semantik</strong> der bedingten Anweisung:<br />
S«if b then S 1 else S 2 ¬ = cond(B« b¬, S«S 1 ¬, S«S 2 ¬)<br />
Dabei ist cond folgendermaßen definiert:<br />
cond(p,g 1 ,g 2 ) s =<br />
g 1 s wenn p s = tt und g 1 s ≠ undef<br />
g 2 s wenn p s = ff und g 2 s ≠ undef<br />
undef sonst<br />
<strong>Semantik</strong> der Anweisungssequenz:<br />
S«S 1 ; S 2 ¬ = S«S 2 ¬ ◦ S«S 1 ¬<br />
Dabei ist die Funktionsverkettung definiert als:<br />
(f ◦ g) s =<br />
f(g s) wenn g s ≠ undef und f(g s) ≠ undef<br />
undef sonst<br />
11<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
12<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Direct Style Denotational Semantics<br />
Direct Style Denotational Semantics<br />
<strong>Semantik</strong> der While- Schleife: while b do S<br />
muß identisch sein mit der <strong>Semantik</strong> von<br />
if b then (S; while b do S) else skip<br />
S«while b do S¬ = cond(B« b¬, S«while b do S¬ ◦ S«S¬, id)<br />
Daraus ergibt sich eine kompositionale Definition<br />
der <strong>Semantik</strong> der While- Schleife:<br />
S«while b do S¬ = FIX F<br />
where F g = cond(B«b¬, g ◦ S«S¬, id)<br />
Problem: Definition ist nicht kompositional,<br />
drückt aber aus, dass <strong>Semantik</strong> der While- Schleife ein<br />
Fixpunkt des Funktionals F ist, wobei F definiert ist als:<br />
Abbildungsverhalten der Hilfsfunktion FIX:<br />
FIX: ((states → states) → (states → states)) → (states → states)<br />
13<br />
F g = cond(B«b¬, g ◦ S«S¬, id)<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
14<br />
Argument ist ein Funktional<br />
HPS WS 2002/03<br />
Ergebnis ist eine Funktion<br />
Dr. Sabine Glesner<br />
Eigenschaften von F und FIX<br />
Denotationelle <strong>Semantik</strong> für While<br />
(Zusammenfassung direct style)<br />
S«while b do S¬ ist ein Fixpunkt von F:<br />
S«while b do S¬ =<br />
= S«if b then (S; while b do S) else skip¬<br />
= cond(B«b¬, S«S; while b do S¬, S«skip¬)<br />
=cond((B«b¬, S«while b do S¬ ◦ S«S¬, id)<br />
=F(S«while b do S¬ )<br />
S«x:=a¬s = s[xa A«a¬s]<br />
S«skip¬ = id<br />
S«S 1 ; S 2 ¬ = S«S 2 ¬ ◦ S«S 1 ¬<br />
S«if b then S 1 else S 2 ¬ = cond(B«b¬, S«S 1 ¬, S«S 2 ¬)<br />
S«while b do S¬ = FIX F<br />
where F g = cond(B«b¬, g ◦ S«S¬ , id)<br />
15<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
16<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Beispiel 1 (Übungsaufgabe)<br />
Beispiel 2 (Übungsaufgabe)<br />
17<br />
<strong>Semantik</strong> der While- Schleife<br />
while x≠0 do x:=x- 1<br />
Aufgaben:<br />
1) Bestimme Funktional F für diese Schleife.<br />
2) Welche der folgenden Funktionen ist ein<br />
Fixpunkt dieses Funktionals F? g 3 s = s[xa0] falls x≥ 0 und<br />
g 1 s = undef für alle s<br />
g 3 s = s falls x
Fall A: Schleife terminiert<br />
Ausführung von while b do S ausgehend vom Zustand s 0<br />
Es gibt Zustände s_1, s_2, …, s_n,so dass<br />
B«b¬s i = tt wenn i
Fall C: Schleife terminiert global<br />
nicht<br />
Fazit: Anforderungen an FIX<br />
25<br />
Ausführung von while b do S ausgehend vom Zustand s 0<br />
Es gibt Zustände s_1, s_2, …, s_n,so dass<br />
B«b¬s i = tt und S«S¬s i = s i+1 für alle i<br />
Sei g ein Fixpunkt von F. Dann gilt für alle i<br />
g s i = g s i+1<br />
Wir könnten im Prinzip jeden Fixpunkt wählen, aber unsere<br />
Erfahrung mit Programmen zeigt, dass die Schleife kein<br />
Ergebnis liefert, wenn sie nicht terminiert. Deswegen sollte in<br />
diesen Fällen das Ergebnis undef sein.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
26<br />
• Der gesuchte Fixpunkt sollte ein Fixpunkt des<br />
Funktionals F sein.<br />
• Er sollte sowenig Funktionswerte definieren wie<br />
möglich.<br />
Der Fixpunkt sollte also nur die Resultate der<br />
Schleife festlegen, die tatsächlich bei der<br />
Ausführung der Schleife erzielt werden.<br />
• Formal: Sei g_0 der angestrebte Fixpunkt und g ein<br />
beliebiger anderer Fixpunkt des Funktionals F. Dann<br />
gilt für alle Zustände s:<br />
– F g 0 = g 0<br />
– Ist F g = g und g 0 s = s´, dann ist g s = s´.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Fixpunkt-Theorie<br />
Partiell geordnete Mengen (D,v)<br />
27<br />
Unser Programm im folgenden:<br />
Entwicklung einer Theorie, die die Existenz und<br />
Eindeutigkeit der angestrebten Fixpunkte garantiert<br />
• Partiell geordnete Mengen<br />
• Im besonderen: Ordnung auf partiellen Funktionen<br />
• Eindeutigkeit eines kleinsten Elements, falls es existiert, von partiell<br />
geordneten Mengen<br />
• kleinstes Element der Funktionen, die von Zuständen in Zustände<br />
abbilden<br />
• <strong>Formale</strong> Definition der Anforderungen an FIX F<br />
• Vollständige partiell geordnete Mengen<br />
• Ketten und ihre kleinsten oberen Schranken<br />
• Ketten-vollständige partiell geordnete Mengen<br />
• Monotone und stetige Funktionen: haben kleinste Fixpunkte<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
28<br />
• Eine Menge D mit einer Ordnung v ist eine<br />
partielle Ordnung, wenn gilt:<br />
– v ist reflexive: d v d für alle d ∈ D,<br />
– v ist transitive: d 1 v d 2 und d 2 v d 3 impliziert d 1 v<br />
d 3 für alle d 1 , d 2 , d 3 ∈ D, und<br />
– v ist antisymmetrisch: aus d 1 v d 2 und d 2 v d 1<br />
folgt d 1 = d 2 .<br />
• Theorem: Wenn eine partiell geordnete<br />
Menge (D, v) ein kleinstes Element hat, dann<br />
ist es eindeutig und wird mit ⊥ bezeichnet.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Beispiel: Potenzmengen<br />
Partielle Ordnung auf Funktionen<br />
29<br />
Sei S≠ ∅ und die Potenzmenge P(S) = {K | K⊆ S}.<br />
Es gilt: (P(S), ⊆) ist eine partiell geordnete Menge.<br />
Beispiel: S = {a, b, c}.<br />
größtes Element<br />
{a, b, c}<br />
{a, b}<br />
{a}<br />
Solche Diagramme nennt<br />
man Hasse-Diagramme.<br />
HPS WS 2002/03<br />
{a, c}<br />
{b}<br />
∅<br />
{b, c}<br />
{c}<br />
kleinstes Element<br />
Dr. Sabine Glesner<br />
30<br />
• Sei State → State = {f | f: State → State} die Menge<br />
aller (partiellen und totalen) Funktionen, die<br />
Zustände in Zustände abbilden.<br />
• g 1 v g 2 gdw. g 1 s = s´impliziert g 2 s = s´ für alle s,s´<br />
• Theorem: (State → State, v) ist eine partiell<br />
geordnete Menge. Die partielle Funktion ⊥<br />
definiert durch ⊥ s = undef für alle s ist das<br />
kleinste Element von State → State.<br />
• Beweis: Übungsaufgabe<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Beispiel: Partiell geordnete Funktionen<br />
Charakterisierung der partiellen Ordnung<br />
• g 1 s = s für alle s<br />
• g 2 s = s falls s x ≥ 0, g 2 s = undef sonst<br />
• g 3 s = s falls s x = 0, g 3 s = undef sonst<br />
• g 4 s = s falls s x · 0, g 4 s = undef sonst<br />
Partielle Ordnung:<br />
g 1<br />
• Sei State → State = {f | f: State → State} die Menge<br />
aller (partiellen und totalen) Funktionen, die<br />
Zustände in Zustände abbilden.<br />
• Definition: graph(g) = { (x,y) | g(x)=y }<br />
• Lemma:<br />
g 1 v g 2 genau dann, wenn graph(g 1 ) ⊆ graph(g 2 ).<br />
g 2 g 4<br />
31<br />
g 3<br />
HPS WS 2002/03 Dr. Sabine Glesner<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
32
Obere Schranken<br />
Beispiele für obere Schranken<br />
33<br />
• Sei (D,v) eine partiell geordnete Menge und sei Y⊆<br />
D.<br />
• d ist eine obere Schranke (upper bound) von Y, wenn<br />
d´v d für alle d´∈ Y gilt.<br />
• d ist eine kleinste obere Schranke (least upper<br />
bound) von Y, wenn d eine obere Schranke von Y ist<br />
und wenn für alle anderen oberen Schranken d´ von<br />
Y gilt, dass d v d´ gilt. Die kleinste obere Schranke<br />
von Y wird mit tY bezeichnet.<br />
• Lemma: Wenn Y eine kleinste obere Schranke hat,<br />
dann ist sie eindeutig. (Beweis: Übungsaufgabe)<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
34<br />
{a, b}<br />
{a, b, c}<br />
{a, c}<br />
{b, c}<br />
{a}<br />
{b}<br />
{c}<br />
∅<br />
Y 0 = { ∅, {a}, {a,c} }<br />
Y 1 = { ∅, {a}, {c}, {a,c} }<br />
Y 3 = { ∅ }<br />
Y 4 = { {a}, {b,c} }<br />
Y 2 = { }<br />
Übungsaufgabe: Bestimme jeweils<br />
die oberen Schranken<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Vollständige Verbände<br />
Ketten-vollständige partiell geordnete<br />
Mengen<br />
• (D,v) ist ein vollständiger Verband, wenn jede<br />
Teilmenge von D eine kleinste obere Schranke hat.<br />
• Übungsaufgabe: Zeige: Sei S eine Menge und P(S)<br />
ihre Potenzmenge. Dann ist (P(s), ⊆) ein vollständiger<br />
Verband.<br />
• (State→ State, v) ist kein vollständiger Verband.<br />
• Beweis: Betrachte g mit g s = s[xa5] für alle s und f<br />
mit f s = s[xa1] für alle s. Sei Y = {f,g} ⊆ State → State. Y<br />
hat keine obere Schranke.<br />
• Verband auf englisch: lattice,<br />
vollständiger Verband: complete lattice<br />
• Definition: Sei (D,v) eine partiell geordnete<br />
Menge. Eine Kette ist eine Teilmenge Y ⊆ D,<br />
so dass für beliebige Elemente d 1 , d 2 ∈ Y gilt:<br />
entweder d 1 v d 2 oder d 2 v d 1 .<br />
• (D,v) ist eine ketten-vollständige partiell<br />
geordnete Menge (ccpo = chain-complete<br />
partially ordered set), wenn jede Kette von<br />
D eine kleinste obere Schranke hat.<br />
• (Diese Folie ist nur Information, wird im weiteren nicht benötigt.)<br />
35<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
36<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
(State→ State, v) ist eine ccpo<br />
Beweis des Lemmas:<br />
37<br />
• Theorem: (State→ State, v) ist eine kettenvollständige<br />
partiell geordnete Menge.<br />
• Die kleinste obere Schranke tY einer Kette<br />
Y ist definiert durch:<br />
– (tY) s = g s falls g s ≠ undef für ein g ∈ Y<br />
– (tY) s = undef sonst<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
38<br />
Drei Schritte zum Beweis:<br />
• 1. Schritt: <strong>Definiere</strong> g 0 folgendermaßen:<br />
– g 0 s = g s falls g s ≠ undef für ein g ∈ Y<br />
– g 0 s = undef sonst<br />
und zeige, dass g 0 wohldefiniert ist.<br />
• 2. Schritt: Zeige, dass g 0 eine obere<br />
Schranke von Y ist.<br />
• 3. Schritt: Zeige, dass g 0 die kleinste obere<br />
Schranke von Y ist.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Definition: Monotone Funktionen<br />
Beispiel: Monotone Funktionen<br />
39<br />
• (D,v) und (D´,v´) seien ketten-vollständige<br />
partiell geordnete Mengen und f:D→D´ eine<br />
(totale) Funktion.<br />
• f ist monoton, wenn:<br />
40<br />
Beispiele: f 1 , f 2 : P({a,b,c}) → P({d,e})<br />
X<br />
{a,b,c}<br />
f 1<br />
X<br />
{d,e}<br />
f 2<br />
X<br />
{d}<br />
Frage:<br />
Welche Funktion ist<br />
monoton, welche nicht?<br />
– d 1 v d 2 implies f d 1 v´ f d 2<br />
{a,b} {d}<br />
{d}<br />
f_1 macht a und b zu d,<br />
c zu e.<br />
{a,c}<br />
{d,e}<br />
{d}<br />
⇒ f 1<br />
ist monoton.<br />
{b,c}<br />
{d,e}<br />
{e}<br />
{a}<br />
{d}<br />
{d}<br />
Gegenbeispiel:<br />
{b}<br />
{d}<br />
{e}<br />
{b,c} ⊆ {a,b,c}, aber<br />
{c}<br />
{e}<br />
{e}<br />
¬ (f 2<br />
{b,c} ⊆ f 2<br />
{a,b,c})<br />
{}<br />
{}<br />
{e}<br />
⇒ f 2<br />
ist nicht monoton.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
HPS WS 2002/03 Dr. Sabine Glesner
Beispiel: Fakultätsprogramm<br />
Fortsetzung Beweis: Details der<br />
Fallunterscheidung<br />
41<br />
• S« y:=1; while x≠1 do (y:=y*x; x:=x-1)¬ s =<br />
(FIX F) (s[ya 1]) wobei<br />
– (F g) s = g(s[ya (s y * s x)] [xa (s x) – 1]) falls s x ≠ 1 und<br />
– (F g) s = s falls s x = 1<br />
• Satz: F ist monoton.<br />
• Beweisskizze:<br />
– Annahme: g 1 v g 2 . Zeige dann: F g 1 v F g 2<br />
– Weitere Annahme: s ist ein beliebiger Zustand<br />
– Zeige dann: (F g 1 ) s = s´ impliziert (F g 2 ) s = s´<br />
(Wenn (F g 1 ) s = undef, dann gilt F g 1 v F g 2 sowieso)<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
42<br />
• Zu zeigen: (F g 1 ) s = s´ impliziert (F g 2 ) s = s´<br />
• Fall 1: s x = 1:<br />
– (F g 1 ) s = s und (F g 2 ) s = s. Zu zeigende Aussage gilt.<br />
• Fall 2: s x ≠ 1:<br />
– (F g 1 ) s = g 1 s([…][…])<br />
– 1. Möglichkeit: (F g 1 ) s = g 1 s([…][…]) = undef.<br />
Zu zeigende Aussage trivialerweise erfüllt.<br />
– 2. Möglichkeit: (F g 1 ) s = g 1 s([…][…]) = s´.<br />
Aus g 1 v g 2 folgt g 2 s([…][…])=(F g 2 ) s = s´.<br />
Zu zeigende Aussage gilt.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Verkettung monotoner Funktionen<br />
Eigenschaften monotoner Funktionen:<br />
Ketten und kleinste obere Schranken<br />
• Satz: (D,v), (D´,v´) und (D´´,v´´) seien kettenvollständige<br />
partiell geordnete Mengen und<br />
f:D→D´ und f´:D´→D´´ seien monotone<br />
Funktionen. Dann ist auch f´ ◦ f: D → D´´ eine<br />
montone Funktion.<br />
• Beweisidee:<br />
– Annahme: d 1 v d 2<br />
– ⇒ f d 1 v´ f d 2 (Monotonie von f)<br />
– ⇒ f´(f d 1 ) v´´ f´(f d 2 ) (Monotonie von f´)<br />
• Satz: (D,v) und (D´,v´) seien kettenvollständige<br />
partiell geordnete Mengen und<br />
f:D→D´ eine monotone Funktion. Wenn Y eine<br />
Kette in D ist, dann ist {f d | d ∈ Y} eine Kette<br />
in D´. Außerdem gilt: t´{f d | d ∈ Y} v´ f(tY).<br />
• Beweisidee: Fallunterscheidung<br />
– Y=∅: Aussage folgt direkt aus ⊥´ v´ f ⊥<br />
– Y≠ ∅: Zeige folgende Aussagen:<br />
• {f d | d ∈ Y} ist eine Kette und<br />
• t´{f d | d ∈ Y} v´ f(tY).<br />
43<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
44<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Monotonie ist nicht genug<br />
• Betrachte folgende Funktion:<br />
F: P(N ∪ {a}) → P(N ∪ {a}) mit<br />
– f X = X falls X endlich ist<br />
– f X = X ∪ {a} falls X unendlich ist<br />
• f ist eine monotone Funktion.<br />
• Aber: t´{f d | d ∈ Y} = f (tY) gilt nicht immer.<br />
– Sei Y = {{0,1,,…,n}| n≥ 0}.<br />
– Dann ist t{f X | X ∈ Y} = tY = N,<br />
– aber: f(tY) = f N = N ∪ {a}<br />
Was wir brauchen:<br />
• Wir brauchen Funktionen, die kleinste obere<br />
Schranken erhalten.<br />
• Das bedeutet, dass man dasselbe Ergebnis<br />
erhält unabhängig davon, ob man die kleinste<br />
obere Schranke vor oder nach Anwendung<br />
der Funktion erhält.<br />
• Funktionen mit dieser Eigenschaft heißen<br />
stetig (continuous).<br />
45<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
46<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Stetige Funktionen<br />
Beispiel: Fakultätsprogramm<br />
• Definition: (D,v) und (D´,v´) seien ketten- vollständige<br />
partiell geordnete Mengen und f:D→D´ eine totale<br />
Funktion. f ist stetig, wenn<br />
– f monoton ist und wenn<br />
– t´{f d | d ∈ Y} = f(tY) für alle nicht-leeren Ketten Y von D.<br />
• Übung: Zeige:<br />
(D,v) und (D´,v´) seien ketten- vollständige partiell<br />
geordnete Mengen und f:D→D´ eine totale Funktion<br />
mit t´{f d | d ∈ Y} = f(tY) für alle nicht- leeren Ketten Y<br />
von D. Dann ist f monoton.<br />
• S« y:=1; while x≠1 do (y:=y*x; x:=x- 1)¬ s =<br />
(FIX F) (s[ya 1]) wobei<br />
– (F g) s = g(s[ya (s y * s x)] [xa (s x) – 1]) falls s x ≠ 1 und<br />
– (F g) s = s falls s x = 1<br />
• Satz: F ist stetig.<br />
• Beweis: Sei Y eine nicht- leere Kette in State → State.<br />
Zu zeigen: t{F g | g ∈ Y} = F(tY).<br />
• Da F eine monotone Funktion ist, gilt<br />
t{F g | g ∈ Y} v F(tY). (vgl. vorangegangene Folie)<br />
• Noch zu zeigen: t{F g | g ∈ Y} w F(tY).<br />
• Dazu zeigen wir: graph(t{F g | g ∈ Y}) ⊇ graph(F(tY)).<br />
47<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
48<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Fortsetzung Beweis I<br />
Fortsetzung Beweis II:<br />
Fallunterscheidung<br />
49<br />
• Noch zu zeigen:<br />
graph(t{F g | g ∈ Y}) ⊇ graph(F(tY))<br />
• Annahme: Sei s ein beliebiger Zustand mit<br />
F(tY) s = s´.<br />
• Bestimme ein g ∈ Y mit (F g) s = s´.<br />
• Daraus folgt dann: t{F g | g ∈ Y}) s = s´ und<br />
damit graph(t{F g | g ∈ Y}) ⊇ graph(F(tY)).<br />
• Also: Bestimme ein g ∈ Y mit (F g) s = s´.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
50<br />
• Fall 1: s x = 1<br />
– Daraus folgt: F(tY) s = s = s´<br />
– Für alle Funktionen g, also insbesondere für<br />
g∈ Y≠ ∅, gilt: (F g) s = s falls s x = 1<br />
– Da Y≠ ∅, gibt es solch ein g.<br />
• Fall 2: s x ≠ 1<br />
– Dann gilt: F(tY) s = tY(s[…][…]) = s´<br />
– Daraus folgt: Es gibt g ∈ Y mit g(s[…][…]) = s´<br />
– Daraus folgt: Fürdieses g gilt (F g) s = g(s[…][…]) = s´<br />
• Damit ist der Beweis abgeschlossen.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Fixpunkt-Satz<br />
Beweis Fixpunktsatz I<br />
51<br />
Sei f: D → D eine stetige Funktion auf der ccpo (D,v)<br />
mit kleinstem Element ⊥.<br />
Dann definiert FIX f = t{f n ⊥ | n≥ 0} ein Element aus D,<br />
und dieses Element ist der kleinste Fixpunkt von f.<br />
Notation: f 0 = id, f n+1 = f ◦ f n für n>0<br />
Beweis in drei Schritten:<br />
1) Zeige: FIX f ist wohldefiniert.<br />
2) Zeige: FIX f ist ein Fixpunkt von f.<br />
3) Zeige: FIX f ist der kleinste Fixpunkt von f.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
52<br />
Beweis, dass FIX f wohldefiniert ist:<br />
• Zeige mit Induktion über n, dass gilt:<br />
– f n ⊥ v f n d für alle d ∈ D<br />
– Folgt aus der Monotonie von f<br />
• Daraus folgt: f n ⊥ v f m ⊥ für n· m<br />
– f m ⊥ ist ein d ∈ D<br />
• Daher ist {f n ⊥ | n ≥ 0} eine nicht-leere Kette<br />
in D und Fix f existiert, weil D eine ccpo ist.<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Beweis Fixpunktsatz II<br />
Beweis Fixpunktsatz III<br />
Beweis, dass FIX f ein Fixpunkt von f ist:<br />
• zu zeigen: f (FIX f) = FIX f.<br />
• f (FIX f) =<br />
– = f (t{f n ⊥ | n ≥ 0}) (def. of FIX f)<br />
– = t{f(f n ⊥) | n ≥ 0} (f stetig)<br />
– = t{f n ⊥ | n ≥ 1}<br />
– = t({f n ⊥ | n ≥ 1} ∪ {⊥}) (weil t(Y∪{⊥})=tY für alle Ketten Y)<br />
– = t{f n ⊥ | n ≥ 0} ( f 0 ⊥ = ⊥)<br />
– = FIX f (def. of FIX f)<br />
Beweis, dass FIX f der kleinste Fixpunkt v. f ist:<br />
• Annahme: Es gibt einen weiteren Fixpunkt d.<br />
• Es gilt: ⊥ v d<br />
• Da f monoton ist, gilt: f n ⊥ v f n d für n≥ 0.<br />
• Da d ein Fixpunkt ist, gilt: f n ⊥ v d für n ≥ 0.<br />
• Also ist d ein Fixpunkt der Kette {f n ⊥ | n≥ 0}.<br />
• FIX f ist der kleinste Fixpunkt dieser Kette, also gilt:<br />
• FIX f v d.<br />
Damit ist der Beweis des Fixpunktsatzes fertig.<br />
53<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
54<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Zusammenfassung Fixpunkttheorie<br />
Beispiel: Fakultätsprogramm<br />
• Wir beschränken uns auf kettenvollständige<br />
partielle Ordnungen (ccpo´s).<br />
• Wir beschränken uns auf stetige Funktionen<br />
auf ccpo´s.<br />
• Wir zeigen, dass stetige Funktionen auf<br />
ccpo´s immer eindeutige kleinste Fixpunkte<br />
haben.<br />
• S« y:=1; while x≠1 do (y:=y*x; x:=x- 1)¬ s =<br />
(FIX F) (s[ya 1]) wobei<br />
– (F g) s = g(s[ya (s y * s x)] [xa (s x) – 1]) falls s x ≠ 1 und<br />
– (F g) s = s falls s x = 1<br />
• Wir müssen sicherstellen, dass<br />
– (State → State, v) eine ccpo ist und dass<br />
– F eine stetige Funktion ist (haben wir schon gemacht)<br />
• Dann folgt aus dem Fixpunktsatz, dass FIX F<br />
wohldefiniert und der kleinste Fixpunkt von F ist.<br />
55<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
56<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Beispiel: Fakultätsprogramm<br />
Existenz der denotationellen <strong>Semantik</strong><br />
57<br />
• (F 0 ⊥) s = undef<br />
• (F 1 ⊥) s = undef falls s x ≠ 1 und<br />
(F 1 ⊥) s = s falls s x = 1<br />
• (F 2 ⊥) s = undef falls s x ≠ 1 und s x ≠ 2 und<br />
(F 2 ⊥) s = s[y a (s y)*2] [x a 1] falls s x = 2 und<br />
(F 2 ⊥) s = s falls s x = 1<br />
• (F n ⊥) s = undef falls s x < 1 oder s x > n und<br />
(F n ⊥) s = s[ya (s y)*j*L*2*1] [x a 1] falls s x = j und1· j· n<br />
• (FIX F) s = undef falls s x < 1 und<br />
(FIX F) s = s[ya (s y)*n*L*2*1] [x a 1] falls s x = n und 1· n<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
58<br />
Dazu müssen wir nachweisen, dass Funktion<br />
S existiert und wohldefiniert ist:<br />
S«x:=a¬s = s[xa A«a¬s]<br />
S«skip¬ = id<br />
S«S 1 ; S 2 ¬ = S«S 2 ¬ ◦ S«S 1 ¬<br />
S«if b then S 1 else S 2 ¬ = cond(B«b¬, S«S 1 ¬, S«S 2 ¬)<br />
S«while b do S¬ = FIX F<br />
where F g = cond(B«b¬, g ◦ S«S¬ , id)<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Beweis der Existenz der<br />
denotationellen <strong>Semantik</strong> I<br />
Beweis der Existenz der<br />
denotationellen <strong>Semantik</strong> II<br />
59<br />
• Beweis durch strukturelle Induktion über<br />
den Aufbau von Programmen:<br />
– Zuweisung x:=a: Zustand s wird abgebildet auf<br />
s[xa A«a¬s]. Diese Abbildung ist wohldefiniert.<br />
– skip: Identitätsabbildung ist wohldefiniert.<br />
– S 1 ; S 2 : Verkettung von Funktionen, die nach<br />
Induktionsvoraussetzung wohldefiniert sind, ist<br />
wohldefiniert.<br />
– if: Funktion cond ist wohldefiniert, wenn<br />
Argumentfunktionen wohldefiniert sind (gilt<br />
nach Ind.vor.)<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
60<br />
• While-Schleife:<br />
– Ind.Vor.: S«Rumpf¬ ist wohldefiniert.<br />
– Die Funktionen F 1 und F 2 mit<br />
• F 1 g = cond(B«b¬, g, id) und<br />
• F 2 g = g ◦ S«Rumpf¬<br />
– müssen als stetig nachgewiesen werden:<br />
– Nachweis für F 1 : Übungsaufgabe<br />
– Nachweis für F 2 erfolgt analog zum Nachweis der<br />
Stetigkeit von F bei der Fakultätsfunktion<br />
– Beide Beweise: Nachlesen bei Nielson/Nielson<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner
Zusammenfassung des Beweises für<br />
die <strong>Semantik</strong> der While-Schleife:<br />
• Die Menge der Funktionen f: State→ State, die<br />
Zustände in Zustände abbilden, zusammen<br />
mit einer passenden Ordnung v ist eine ccpo<br />
(ketten-vollständige partielle Ordnung).<br />
• Bestimmte Funktionen F: (State→ State) →<br />
(State→ State) sind stetig.<br />
• Bei der Definition der denotationellen<br />
<strong>Semantik</strong> wenden wir den Fixpunktoperator<br />
nur auf stetige Funktionen an.<br />
Zusammenfassung denotationelle<br />
<strong>Semantik</strong><br />
• Definition der direct-style denotationellen<br />
<strong>Semantik</strong><br />
• Diskussion der Frage, ob Fixpunkte<br />
existieren und eindeutig sind<br />
• Diskussion, welche Anforderungen man an<br />
den gewünschten Fixpunkt hat<br />
• Fixpunkttheorie: Fixpunktsatz<br />
• Anwendung auf denotationelle <strong>Semantik</strong>:<br />
Nachweis der Wohldefiniertheit<br />
61<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
62<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
Bewertung denotationelle <strong>Semantik</strong><br />
• Mathematisches Konzept.<br />
• Für einfache Programmiersprachen (wie z.B. die<br />
While- Sprache) einfach zu verstehen.<br />
• Komplexität nimmt im Vgl. zur Komplexität der<br />
Sprachkonstrukte überproportional zu.<br />
• Deshalb sind denotationelle <strong>Semantik</strong>en oft weniger<br />
handlich als operationale <strong>Semantik</strong>en, wenn es um<br />
imperative oder objekt- orientierte<br />
Programmiersprachen mit komplexen Zuständen<br />
geht.<br />
Tips zum Nacharbeiten,<br />
Prüfungsvorbereiten oder falls man<br />
den Stoff mal wieder braucht:<br />
• Daran denken:<br />
Ist nicht so schwer, wie es aussehen mag!<br />
• Nachlesen im Lehrbuch: Hanne Riis Nielson<br />
und Flemming Nielson: Semantics with<br />
Applications: A Formal Introduction.<br />
– sehr gutes Lehrbuch<br />
– ist im Netz frei verfügbar, Adresse:<br />
http://www.daimi.au.dk/~hrn<br />
– dort gibt es auch weitere Beispiele und<br />
Übungsaufgaben<br />
63<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner<br />
64<br />
HPS WS 2002/03<br />
Dr. Sabine Glesner