30.01.2014 Aufrufe

Übersicht Formale Semantik Idee: Definiere Effekte

Übersicht Formale Semantik Idee: Definiere Effekte

Übersicht Formale Semantik Idee: Definiere Effekte

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!