30.01.2014 Aufrufe

Formale Semantik Denotationelle Semantik

Formale Semantik Denotationelle Semantik

Formale Semantik Denotationelle Semantik

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Vorlesung Höhere Programmiersprachen,<br />

WS 2003/04<br />

Teil 2: <strong>Formale</strong> <strong>Semantik</strong><br />

<strong>Denotationelle</strong><br />

<strong>Semantik</strong><br />

1<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Inhaltsübersicht HPS WS 2003/04<br />

- Grundlagen (1,2)<br />

- Konzepte imperativer Programmiersprachen (2,3)<br />

- Deklarative Programmiersprachen (4)<br />

- Objektorientierte Programmiersprachen (5,6)<br />

- Programmierung von Smart Cards: Java Card (7)<br />

- Wissenschaftliches Rechnen: Fortran (8)<br />

- Wirtschaftsanwendungen: Cobol (8, 9)<br />

- Skriptsprachen (9)<br />

- <strong>Formale</strong> <strong>Semantik</strong><br />

- Operationale <strong>Semantik</strong> mit ASMs (10)<br />

- Operationale <strong>Semantik</strong> mit natürlicher <strong>Semantik</strong> und SOS (11)<br />

- <strong>Denotationelle</strong> <strong>Semantik</strong> (12, 13)<br />

- Axiomatische <strong>Semantik</strong> (14)


Ü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 />

• <strong>Denotationelle</strong> <strong>Semantik</strong><br />

• Axiomatische <strong>Semantik</strong><br />

3<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Idee: Definiere Effekte<br />

• Definiere die Effekte der Ausführung von<br />

Programmen<br />

• Modellierung mit mathematischen Funktionen<br />

• 1. Beispiel: Effekt einer Sequenz von Anweisungen:<br />

– funktionale Komposition der Effekte 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 />

4<br />

HPS WS 2003/04<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 />

5<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


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 />

6<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Kompositionalität<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 2003/04<br />

Dr. Sabine Glesner


Beispiele kompositionaler Definitionen<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 />

8<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


While-Sprache<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 />

9<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Direct Style Denotational Semantics<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 />

10<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


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 />

11<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Direct Style Denotational Semantics<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 />

12<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


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 />

13<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 />

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 />

F g = cond(B«b¬, g ◦ S«S¬, id)<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Direct Style Denotational Semantics<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 />

Abbildungsverhalten der Hilfsfunktion FIX:<br />

FIX: ((states → states) → (states → states)) → (states → states)<br />

14<br />

Argument ist ein Funktional<br />

HPS WS 2003/04<br />

Ergebnis ist eine Funktion<br />

Dr. Sabine Glesner


Eigenschaften von F und FIX<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 />

15<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


<strong>Denotationelle</strong> <strong>Semantik</strong> für While<br />

(Zusammenfassung direct style)<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 />

16<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beispiel 1 (Übungsaufgabe)<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?<br />

g 1 s = undef für alle s<br />

Aufgabe vorgerechnet an<br />

der Tafel<br />

g 3 s = s[xa0] falls x≥ 0 und<br />

g 3 s = s falls x


Beispiel 2 (Übungsaufgabe)<br />

Gegeben sei folgendes Fragment der<br />

Fakultätsfunktion:<br />

while x≠1 do (y:=y*x; x:=x-1)<br />

1) Bestimme das Funktional dieser Schleife.<br />

2) Gebe mindestens zwei Fixpunkte dieses<br />

Funktionals an.<br />

Aufgabe vorgerechnet an<br />

der Tafel<br />

18<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Probleme bei der Definition von F<br />

• Es gibt Funktionale, die mehr als einen<br />

Fixpunkt haben<br />

– Welchen suchen wir aus?<br />

• Es gibt Funktionale, die gar keinen Fixpunkt<br />

haben (trifft auf F offensichtlich nicht zu)<br />

– Beispiel:<br />

F 1 g =<br />

= g 1 wenn g=g 2<br />

= g 2 sonst<br />

– Ist g 1 ≠ g 2 , dann gibt es keinen Fixpunkt.<br />

19<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Anforderungen an Fixpunkte<br />

• Definiere Anforderungen, so dass<br />

– höchstens ein solcher Fixpunkt existiert und dass<br />

– alle Funktionale, die von While-Anweisungen stammen, auch<br />

tatsächlich einen Fixpunkt haben<br />

• Motivation: Betrachte mögliche Ergebnisse von<br />

While-Schleifen<br />

– A: Schleife terminiert<br />

– B: Schleife terminiert lokal nicht<br />

(Konstrukt im Schleifenrumpf terminiert nicht)<br />

– C: Schleife terminiert global nicht<br />

(äußeres While-Konstrukt terminiert nicht)<br />

20<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


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 A: Schleife terminiert<br />

• Wir haben keine besonderen Annahmen über<br />

den Fixpunkt g gemacht<br />

• Das bedeutet, dass jeder Fixpunkt g von F<br />

die folgende Bedingung erfüllt:<br />

g_0 s_0 = s_n<br />

• Wir bekommen also aus dem Fall A keine<br />

Extra-Anforderungen, die bei der Auswahl<br />

eines Fixpunkts helfen<br />

22<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Fall B: Schleife terminiert lokal nicht<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·n<br />

und S«S¬s i = s i+1 für i


Fall B: Schleife terminiert lokal nicht<br />

• Jeder Fixpunkt g von F erfüllt damit die<br />

Bedingung g 0 s 0 = undef<br />

• Auch mit diesem Fall bekommen wir keine<br />

Hinweise, welche speziellen Anforderungen<br />

der auszusuchende Fixpunkt erfüllen soll<br />

24<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Fall C: Schleife terminiert global<br />

nicht<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 />

25<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 2003/04<br />

Dr. Sabine Glesner


Fazit: Anforderungen an FIX<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 />

26<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Fixpunkt-Theorie<br />

Unser Programm im folgenden:<br />

Entwicklung einer Theorie, die die Existenz und<br />

Eindeutigkeit der angestrebten Fixpunkte garantiert<br />

27<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 2003/04<br />

Dr. Sabine Glesner


Partiell geordnete Mengen (D,v)<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 />

28<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 2003/04<br />

Dr. Sabine Glesner


Beispiel: Potenzmengen<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 />

{a, b, c}<br />

größtes Element<br />

{a, b}<br />

{a, c}<br />

{b, c}<br />

{a}<br />

{b}<br />

{c}<br />

29<br />

Solche Diagramme nennt<br />

man Hasse-Diagramme.<br />

HPS WS 2003/04<br />

∅<br />

kleinstes Element<br />

Dr. Sabine Glesner


Partielle Ordnung auf Funktionen<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 />

30<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beispiel: Partiell geordnete Funktionen<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 />

g 2 g 4<br />

31<br />

g 3<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Charakterisierung der partiellen Ordnung<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 />

32<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Obere Schranken<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 />

33<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beispiele für obere Schranken<br />

{a, b}<br />

{a}<br />

{a, b, c}<br />

{a, c}<br />

{b}<br />

{c}<br />

{b, c}<br />

34<br />

∅<br />

Y 0 = { ∅, {a}, {a,c} }<br />

Y 3 = { ∅ }<br />

Y 1 = { ∅, {a}, {c}, {a,c} }<br />

Y 4 = { {a}, {b,c} }<br />

Y 2 = { }<br />

Übungsaufgabe: Bestimme jeweils<br />

die oberen Schranken<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Vollständige Verbände<br />

35<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 />

• (Diese Folie ist nur Information, wird im weiteren nicht benötigt.)<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Ketten-vollständige partiell geordnete<br />

Mengen<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 />

36<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


(State→ State, v) ist eine ccpo<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 />

37<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beweis des Lemmas:<br />

38<br />

Drei Schritte zum Beweis:<br />

• 1. Schritt: Definiere 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 2003/04<br />

Dr. Sabine Glesner


Definition: Monotone Funktionen<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 />

– d 1 v d 2 implies f d 1 v´ f d 2<br />

39<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beispiel: Monotone Funktionen<br />

40<br />

Beispiele: f 1 , f 2 : P({a,b,c}) → P({d,e})<br />

X<br />

{a,b,c}<br />

{a,b}<br />

{a,c}<br />

{b,c}<br />

{a}<br />

{b}<br />

{c}<br />

{}<br />

f 1<br />

X<br />

{d,e}<br />

{d}<br />

{d,e}<br />

{d,e}<br />

{d}<br />

{d}<br />

{e}<br />

{}<br />

f 2<br />

X<br />

{d}<br />

{d}<br />

{d}<br />

{e}<br />

{d}<br />

{e}<br />

{e}<br />

{e}<br />

HPS WS 2003/04<br />

Frage:<br />

Welche Funktion ist<br />

monoton, welche nicht?<br />

f_1 macht a und b zu d,<br />

c zu e.<br />

⇒ f 1<br />

ist monoton.<br />

Gegenbeispiel:<br />

{b,c} ⊆ {a,b,c}, aber<br />

¬ (f 2<br />

{b,c} ⊆ f 2<br />

{a,b,c})<br />

⇒ f 2<br />

ist nicht monoton.<br />

Dr. Sabine Glesner


Beispiel: Fakultätsprogramm<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 />

41<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 2003/04<br />

Dr. Sabine Glesner


Fortsetzung Beweis: Details der<br />

Fallunterscheidung<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 />

42<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 2003/04<br />

Dr. Sabine Glesner


Verkettung monotoner Funktionen<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 />

43<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Eigenschaften monotoner Funktionen:<br />

Ketten und kleinste obere Schranken<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 />

44<br />

HPS WS 2003/04<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 />

45<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


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 />

46<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Stetige Funktionen<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 />

47<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beispiel: Fakultätsprogramm<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 />

48<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Fortsetzung Beweis I<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 />

49<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Fortsetzung Beweis II:<br />

Fallunterscheidung<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 2003/04<br />

Dr. Sabine Glesner


Fixpunkt-Satz<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 />

51<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 2003/04<br />

Dr. Sabine Glesner


Beweis Fixpunktsatz I<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 />

52<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beweis Fixpunktsatz II<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 />

53<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beweis Fixpunktsatz III<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 />

54<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Zusammenfassung Fixpunkttheorie<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 />

55<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beispiel: Fakultätsprogramm<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 />

56<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beispiel: Fakultätsprogramm<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 />

57<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Existenz der denotationellen <strong>Semantik</strong><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 />

58<br />

where F g = cond(B«b¬, g ◦ S«S¬ , id)<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


Beweis der Existenz der<br />

denotationellen <strong>Semantik</strong> I<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 2003/04<br />

Dr. Sabine Glesner


Beweis der Existenz der<br />

denotationellen <strong>Semantik</strong> II<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 />

60<br />

HPS WS 2003/04<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 />

61<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


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 />

62<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


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 />

63<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner


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 />

64<br />

HPS WS 2003/04<br />

Dr. Sabine Glesner

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!