Vorlesung Höhere Programmiersprachen, Teil 2: Formale Semantik. Denotationelle Semantik

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Höhere Programmiersprachen, Teil 2: Formale Semantik. Denotationelle Semantik"

Transkript

1 Vorlesung Höhere Programmiersprachen, WS 2003/04 Teil 2: Formale Semantik Denotationelle Semantik 1

2 Inhaltsübersicht - Grundlagen (1,2) - Konzepte imperativer Programmiersprachen (2,3) - Deklarative Programmiersprachen (4) - Objektorientierte Programmiersprachen (5,6) - Programmierung von Smart Cards: Java Card (7) - Wissenschaftliches Rechnen: Fortran (8) - Wirtschaftsanwendungen: Cobol (8, 9) - Skriptsprachen (9) - Formale Semantik - Operationale Semantik mit ASMs (10) - Operationale Semantik mit natürlicher Semantik und SOS (11) - Denotationelle Semantik (12, 13) - Axiomatische Semantik (14)

3 Übersicht Formale Semantik Konzepte in Programmiersprachen Was muß überhaupt spezifiziert werden Überblick verschiedene Formalismen Operationale Semantik Abstrakte Zustandsmaschinen (ASMs) Strukturell operationale Semantik (SOS) natürliche Semantik Denotationelle Semantik Axiomatische Semantik 3

4 Idee: Definiere Effekte Definiere die Effekte der Ausführung von Programmen Modellierung mit mathematischen Funktionen 1. Beispiel: Effekt einer Sequenz von Anweisungen: funktionale Komposition der Effekte der einzelnen Anweisungen 2. Beispiel: Effekt einer Zuweisung x:=a: Funktion, die Zustände in Zustände abbildet der neue Zustand ist identisch mit dem alten außer dass der Wert der Variablen auf der linken Seite gleich ist mit dem Wert des Ausdrucks auf der rechten Seite 4

5 Kleines Beispiel-Programm Programm: z:=x; x:=y; y:=z Semantik des Programms: Funktion S, die Zustände in Zustände transformiert Seien S«z:=x, S«x:=y, S«y:=z jeweils die Funktionen für die Einzelanweisungen, die den Zustand entsprechend modifizieren Dann ist die Funktion für die Anweisungssequenz: S«z:=x; x:=y; y:=z = S«y:=z S«x:=y S«z:=x Man beachte die umgekehrte Reihenfolge, die der üblichen Notation für Funktionsverkettung entspricht. 5

6 Effekt des Beispielprogramms Anfangszustand: x hat den Wert 5, y den Wert 7 und z den Wert 0 S«z:=x; x:=y; y:=z ([xa 5, ya 7, za 0]) = = (S«y:=z S«x:=y S«z:=x ) ([xa 5, ya 7, za 0]) = S«y:=z (S«x:=y (S«z:=x ([xa 5, ya 7, za 0]))) = S«y:=z (S«x:=y ([xa 5, ya 7, za 5])) = S«y:=z ([xa 7, ya 7, za 5]) = ([xa 7, ya 5, za 5]) 6

7 Kompositionalität 7 Die abstrakte Syntax spezifiziert syntaktische Sorten Basiselemente (=Blätter im Syntaxbaum) und zusammengesetzte Elemente (innere Knoten) zusammengesetzte Elemente haben eindeutige Dekomposition Semantik wird kompositional definiert: semantische Funktion für jedes Basiselement semantische Funktionen für innere Knoten zusammengesetzt aus semantischen Funktionen der direkten Nachfolger

8 Beispiele kompositionaler Definitionen Funktion A: Aexp states Z weist arithemtischen Ausdrücken Zahlen in Z zu A«n]s = N«n A«x]s = Lookup(s,x) A«a 1 +a 2 s = A«a 1 s + A«a 2 s A«a 1 -a 2 s = A«a 1 s - A«a 2 s A«a 1 * a 2 s = A«a 1 s * A«a 2 s Funktion B: Bexp states {tt, ff} analog 8

9 While-Sprache a ::= n x a 1 + a 2 a 1 * a 2 a 1 a 2 b ::= true false a 1 = a 2 a 1 a 1 b b 1 b 2 S ::= x:=a skip S_1 ; S_2 if b then S 1 else S 2 while b do S 9

10 Direct Style Denotational Semantics Semantik der arithmetischen und Booleschen Ausdrücke: wie bei der operationalen Semantik Semantik der Zuweisung: S«x:=a s = s[xaa«a s] wenn S«x:=a = s, dann ist s x = A«a s und s y = s y für y x Semantik der Skip-Anweisung: S«skip = id id: Identitätsfunktion drückt aus, dass keine Zustandsänderung passiert S«skip s = s für alle Zustände s 10

11 Direct Style Denotational Semantics Semantik der bedingten Anweisung: S«if b then S 1 else S 2 = cond(b«b, S«S 1, S«S 2 ) Dabei ist cond folgendermaßen definiert: cond(p,g 1,g 2 ) s = g 1 s wenn p s = tt und g 1 s undef g 2 s wenn p s = ff und g 2 s undef undef sonst 11

12 Direct Style Denotational Semantics Semantik der Anweisungssequenz: S«S 1 ; S 2 = S«S 2 S«S 1 Dabei ist die Funktionsverkettung definiert als: (f g) s = f(g s) wenn g s undef und f(g s) undef undef sonst 12

13 Direct Style Denotational Semantics Semantik der While-Schleife: while b do S muß identisch sein mit der Semantik von 13 if b then (S; while b do S) else skip S«while b do S = cond(b«b, S«while b do S S«S, id) Problem: Definition ist nicht kompositional, drückt aber aus, dass Semantik der While-Schleife ein Fixpunkt des Funktionals F ist, wobei F definiert ist als: F g = cond(b«b, g S«S, id)

14 Direct Style Denotational Semantics Daraus ergibt sich eine kompositionale Definition der Semantik der While-Schleife: S«while b do S = FIX F where F g = cond(b«b, g S«S, id) Abbildungsverhalten der Hilfsfunktion FIX: FIX: ((states states) (states states)) (states states) 14 Argument ist ein Funktional Ergebnis ist eine Funktion

15 Eigenschaften von F und FIX S«while b do S ist ein Fixpunkt von F: S«while b do S = = S«if b then (S; while b do S) else skip = cond(b«b, S«S; while b do S, S«skip ) =cond((b«b, S«while b do S S«S, id) =F(S«while b do S ) 15

16 Denotationelle Semantik für While (Zusammenfassung direct style) S«x:=a s = s[xa A«a s] S«skip = id S«S 1 ; S 2 = S«S 2 S«S 1 S«if b then S 1 else S 2 = cond(b«b, S«S 1, S«S 2 ) S«while b do S = FIX F where F g = cond(b«b, g S«S, id) 16

17 Beispiel 1 (Übungsaufgabe) Semantik der While-Schleife while x 0 do x:=x-1 Aufgaben: 1) Bestimme Funktional F für diese Schleife. 2) Welche der folgenden Funktionen ist ein Fixpunkt dieses Funktionals F? g 1 s = undef für alle s Aufgabe vorgerechnet an der Tafel g 3 s = s[xa0] falls x 0 und g 3 s = s falls x<0 17 g_4 s = s[xa0] für alle s g 2 s = s[xa0] falls s x 0 und g_5 s = s für alle s g 2 s = undef falls s x < 0

18 Beispiel 2 (Übungsaufgabe) Gegeben sei folgendes Fragment der Fakultätsfunktion: while x 1 do (y:=y*x; x:=x-1) 1) Bestimme das Funktional dieser Schleife. 2) Gebe mindestens zwei Fixpunkte dieses Funktionals an. Aufgabe vorgerechnet an der Tafel 18

19 Probleme bei der Definition von F Es gibt Funktionale, die mehr als einen Fixpunkt haben Welchen suchen wir aus? Es gibt Funktionale, die gar keinen Fixpunkt haben (trifft auf F offensichtlich nicht zu) Beispiel: F 1 g = = g 1 wenn g=g 2 = g 2 sonst Ist g 1 g 2, dann gibt es keinen Fixpunkt. 19

20 Anforderungen an Fixpunkte Definiere Anforderungen, so dass höchstens ein solcher Fixpunkt existiert und dass alle Funktionale, die von While-Anweisungen stammen, auch tatsächlich einen Fixpunkt haben Motivation: Betrachte mögliche Ergebnisse von While-Schleifen A: Schleife terminiert B: Schleife terminiert lokal nicht (Konstrukt im Schleifenrumpf terminiert nicht) C: Schleife terminiert global nicht (äußeres While-Konstrukt terminiert nicht) 20

21 Fall A: Schleife terminiert Ausführung von while b do S ausgehend vom Zustand s 0 Es gibt Zustände s_1, s_2,, s_n,so dass B«b s i = tt wenn i<n und B«b s i = ff wenn i=n Sei g ein Fixpunkt von F. Dann gilt für i<n folgendes: g s i = (F g)s i = cond(b«b, g S«S, id) s i = g(s«s s i ) = g s i+1 Für i=n gilt: g s n = (F g)s n = cond(b«b, g S«S, id) s n = id s n = s n 21

22 Fall A: Schleife terminiert Wir haben keine besonderen Annahmen über den Fixpunkt g gemacht Das bedeutet, dass jeder Fixpunkt g von F die folgende Bedingung erfüllt: g_0 s_0 = s_n Wir bekommen also aus dem Fall A keine Extra-Anforderungen, die bei der Auswahl eines Fixpunkts helfen 22

23 Fall B: Schleife terminiert lokal nicht Ausführung von while b do S ausgehend vom Zustand s 0 Es gibt Zustände s_1, s_2,, s_n,so dass B«b s i = tt wenn i n und S«S s i = s i+1 für i<n und S«S s i = undef für i=n Sei g ein Fixpunkt von F. Dann gilt für i<n 23 g s i = g s i+1 Für i=n gilt: g s n = (F g)s n = cond(b«b, g S«S, id) s n = (g S«s )s n = undef

24 Fall B: Schleife terminiert lokal nicht Jeder Fixpunkt g von F erfüllt damit die Bedingung g 0 s 0 = undef Auch mit diesem Fall bekommen wir keine Hinweise, welche speziellen Anforderungen der auszusuchende Fixpunkt erfüllen soll 24

25 Fall C: Schleife terminiert global nicht Ausführung von while b do S ausgehend vom Zustand s 0 Es gibt Zustände s_1, s_2,, s_n,so dass B«b s i = tt und S«S s i = s i+1 für alle i Sei g ein Fixpunkt von F. Dann gilt für alle i g s i = g s i+1 25 Wir könnten im Prinzip jeden Fixpunkt wählen, aber unsere Erfahrung mit Programmen zeigt, dass die Schleife kein Ergebnis liefert, wenn sie nicht terminiert. Deswegen sollte in diesen Fällen das Ergebnis undef sein.

26 Fazit: Anforderungen an FIX Der gesuchte Fixpunkt sollte ein Fixpunkt des Funktionals F sein. Er sollte sowenig Funktionswerte definieren wie möglich. Der Fixpunkt sollte also nur die Resultate der Schleife festlegen, die tatsächlich bei der Ausführung der Schleife erzielt werden. Formal: Sei g_0 der angestrebte Fixpunkt und g ein beliebiger anderer Fixpunkt des Funktionals F. Dann gilt für alle Zustände s: F g 0 = g 0 Ist F g = g und g 0 s = s, dann ist g s = s. 26

27 Fixpunkt-Theorie Unser Programm im folgenden: Entwicklung einer Theorie, die die Existenz und Eindeutigkeit der angestrebten Fixpunkte garantiert 27 Partiell geordnete Mengen Im besonderen: Ordnung auf partiellen Funktionen Eindeutigkeit eines kleinsten Elements, falls es existiert, von partiell geordneten Mengen kleinstes Element der Funktionen, die von Zuständen in Zustände abbilden Formale Definition der Anforderungen an FIX F Vollständige partiell geordnete Mengen Ketten und ihre kleinsten oberen Schranken Ketten-vollständige partiell geordnete Mengen Monotone und stetige Funktionen: haben kleinste Fixpunkte

28 Partiell geordnete Mengen (D,v) Eine Menge D mit einer Ordnung v ist eine partielle Ordnung, wenn gilt: v ist reflexive: d v d für alle d D, v ist transitive: d 1 v d 2 und d 2 v d 3 impliziert d 1 v d 3 für alle d 1, d 2, d 3 D, und 28 v ist antisymmetrisch: aus d 1 v d 2 und d 2 v d 1 folgt d 1 = d 2. Theorem: Wenn eine partiell geordnete Menge (D, v) ein kleinstes Element hat, dann ist es eindeutig und wird mit bezeichnet.

29 Beispiel: Potenzmengen Sei S und die Potenzmenge P(S) = {K K S}. Es gilt: (P(S), ) ist eine partiell geordnete Menge. Beispiel: S = {a, b, c}. {a, b, c} größtes Element {a, b} {a, c} {b, c} {a} {b} {c} 29 Solche Diagramme nennt man Hasse-Diagramme. kleinstes Element

30 Partielle Ordnung auf Funktionen Sei State State = {f f: State State} die Menge aller (partiellen und totalen) Funktionen, die Zustände in Zustände abbilden. g 1 v g 2 gdw. g 1 s = s impliziert g 2 s = s für alle s,s Theorem: (State State, v) ist eine partiell geordnete Menge. Die partielle Funktion definiert durch s = undef für alle s ist das kleinste Element von State State. Beweis: Übungsaufgabe 30

31 Beispiel: Partiell geordnete Funktionen g 1 s = s für alle s g 2 s = s falls s x 0, g 2 s = undef sonst g 3 s = s falls s x = 0, g 3 s = undef sonst g 4 s = s falls s x 0, g 4 s = undef sonst Partielle Ordnung: g 1 g 2 g 4 31 g 3

32 Charakterisierung der partiellen Ordnung Sei State State = {f f: State State} die Menge aller (partiellen und totalen) Funktionen, die Zustände in Zustände abbilden. Definition: graph(g) = { (x,y) g(x)=y } Lemma: g 1 v g 2 genau dann, wenn graph(g 1 ) graph(g 2 ). 32

33 Obere Schranken Sei (D,v) eine partiell geordnete Menge und sei Y D. d ist eine obere Schranke (upper bound) von Y, wenn d v d für alle d Y gilt. d ist eine kleinste obere Schranke (least upper bound) von Y, wenn d eine obere Schranke von Y ist und wenn für alle anderen oberen Schranken d von Y gilt, dass d v d gilt. Die kleinste obere Schranke von Y wird mit ty bezeichnet. Lemma: Wenn Y eine kleinste obere Schranke hat, dann ist sie eindeutig. (Beweis: Übungsaufgabe) 33

34 Beispiele für obere Schranken {a, b} {a} {a, b, c} {a, c} {b} {c} {b, c} 34 Y 0 = {, {a}, {a,c} } Y 3 = { } Y 1 = {, {a}, {c}, {a,c} } Y 4 = { {a}, {b,c} } Y 2 = { } Übungsaufgabe: Bestimme jeweils die oberen Schranken

35 Vollständige Verbände 35 (D,v) ist ein vollständiger Verband, wenn jede Teilmenge von D eine kleinste obere Schranke hat. Übungsaufgabe: Zeige: Sei S eine Menge und P(S) ihre Potenzmenge. Dann ist (P(s), ) ein vollständiger Verband. (State State, v) ist kein vollständiger Verband. Beweis: Betrachte g mit g s = s[xa5] für alle s und f mit f s = s[xa1] für alle s. Sei Y = {f,g} State State. Y hat keine obere Schranke. Verband auf englisch: lattice, vollständiger Verband: complete lattice (Diese Folie ist nur Information, wird im weiteren nicht benötigt.)

36 Ketten-vollständige partiell geordnete Mengen Definition: Sei (D,v) eine partiell geordnete Menge. Eine Kette ist eine Teilmenge Y D, so dass für beliebige Elemente d 1, d 2 Y gilt: entweder d 1 v d 2 oder d 2 v d 1. (D,v) ist eine ketten-vollständige partiell geordnete Menge (ccpo = chain-complete partially ordered set), wenn jede Kette von D eine kleinste obere Schranke hat. 36

37 (State State, v) ist eine ccpo Theorem: (State State, v) ist eine kettenvollständige partiell geordnete Menge. Die kleinste obere Schranke ty einer Kette Y ist definiert durch: (ty) s = g s falls g s undef für ein g Y (ty) s = undef sonst 37

38 Beweis des Lemmas: 38 Drei Schritte zum Beweis: 1. Schritt: Definiere g 0 folgendermaßen: g 0 s = g s falls g s undef für ein g Y g 0 s = undef sonst und zeige, dass g 0 wohldefiniert ist. 2. Schritt: Zeige, dass g 0 eine obere Schranke von Y ist. 3. Schritt: Zeige, dass g 0 die kleinste obere Schranke von Y ist.

39 Definition: Monotone Funktionen (D,v) und (D,v ) seien ketten-vollständige partiell geordnete Mengen und f:d D eine (totale) Funktion. f ist monoton, wenn: d 1 v d 2 implies f d 1 v f d 2 39

40 Beispiel: Monotone Funktionen 40 Beispiele: f 1, f 2 : P({a,b,c}) P({d,e}) X {a,b,c} {a,b} {a,c} {b,c} {a} {b} {c} {} f 1 X {d,e} {d} {d,e} {d,e} {d} {d} {e} {} f 2 X {d} {d} {d} {e} {d} {e} {e} {e} Frage: Welche Funktion ist monoton, welche nicht? f_1 macht a und b zu d, c zu e. f 1 ist monoton. Gegenbeispiel: {b,c} {a,b,c}, aber (f 2 {b,c} f 2 {a,b,c}) f 2 ist nicht monoton.

41 Beispiel: Fakultätsprogramm S«y:=1; while x 1 do (y:=y*x; x:=x-1) s = (FIX F) (s[ya 1]) wobei (F g) s = g(s[ya (s y * s x)] [xa (s x) 1]) falls s x 1 und (F g) s = s falls s x = 1 Satz: F ist monoton. Beweisskizze: 41 Annahme: g 1 v g 2. Zeige dann: F g 1 v F g 2 Weitere Annahme: s ist ein beliebiger Zustand Zeige dann: (F g 1 ) s = s impliziert (F g 2 ) s = s (Wenn (F g 1 ) s = undef, dann gilt F g 1 v F g 2 sowieso)

42 Fortsetzung Beweis: Details der Fallunterscheidung Zu zeigen: (F g 1 ) s = s impliziert (F g 2 ) s = s Fall 1: s x = 1: (F g 1 ) s = s und (F g 2 ) s = s. Zu zeigende Aussage gilt. Fall 2: s x 1: 42 (F g 1 ) s = g 1 s([ ][ ]) 1. Möglichkeit: (F g 1 ) s = g 1 s([ ][ ]) = undef. Zu zeigende Aussage trivialerweise erfüllt. 2. Möglichkeit: (F g 1 ) s = g 1 s([ ][ ]) = s. Aus g 1 v g 2 folgt g 2 s([ ][ ])=(F g 2 ) s = s. Zu zeigende Aussage gilt.

43 Verkettung monotoner Funktionen Satz: (D,v), (D,v ) und (D,v ) seien kettenvollständige partiell geordnete Mengen und f:d D und f :D D seien monotone Funktionen. Dann ist auch f f: D D eine montone Funktion. Beweisidee: Annahme: d 1 v d 2 f d 1 v f d 2 (Monotonie von f) f (f d 1 ) v f (f d 2 ) (Monotonie von f ) 43

44 Eigenschaften monotoner Funktionen: Ketten und kleinste obere Schranken Satz: (D,v) und (D,v ) seien kettenvollständige partiell geordnete Mengen und f:d D eine monotone Funktion. Wenn Y eine Kette in D ist, dann ist {f d d Y} eine Kette in D. Außerdem gilt: t {f d d Y} v f(ty). Beweisidee: Fallunterscheidung Y= : Aussage folgt direkt aus v f Y : Zeige folgende Aussagen: {f d d Y} ist eine Kette und t {f d d Y} v f(ty). 44

45 Monotonie ist nicht genug Betrachte folgende Funktion: F: P(N {a}) P(N {a}) mit f X = X falls X endlich ist f X = X {a} falls X unendlich ist f ist eine monotone Funktion. Aber: t {f d d Y} = f (ty) gilt nicht immer. Sei Y = {{0,1,,,n} n 0}. Dann ist t{f X X Y} = ty = N, aber: f(ty) = f N = N {a} 45

46 Was wir brauchen: Wir brauchen Funktionen, die kleinste obere Schranken erhalten. Das bedeutet, dass man dasselbe Ergebnis erhält unabhängig davon, ob man die kleinste obere Schranke vor oder nach Anwendung der Funktion erhält. Funktionen mit dieser Eigenschaft heißen stetig (continuous). 46

47 Stetige Funktionen Definition: (D,v) und (D,v ) seien ketten-vollständige partiell geordnete Mengen und f:d D eine totale Funktion. f ist stetig, wenn f monoton ist und wenn t {f d d Y} = f(ty) für alle nicht-leeren Ketten Y von D. Übung: Zeige: (D,v) und (D,v ) seien ketten-vollständige partiell geordnete Mengen und f:d D eine totale Funktion mit t {f d d Y} = f(ty) für alle nicht-leeren Ketten Y von D. Dann ist f monoton. 47

48 Beispiel: Fakultätsprogramm S«y:=1; while x 1 do (y:=y*x; x:=x-1) s = (FIX F) (s[ya 1]) wobei (F g) s = g(s[ya (s y * s x)] [xa (s x) 1]) falls s x 1 und (F g) s = s falls s x = 1 Satz: F ist stetig. Beweis: Sei Y eine nicht-leere Kette in State State. Zu zeigen: t{f g g Y} = F(tY). Da F eine monotone Funktion ist, gilt t{f g g Y} v F(tY). (vgl. vorangegangene Folie) Noch zu zeigen: t{f g g Y} w F(tY). Dazu zeigen wir: graph(t{f g g Y}) graph(f(ty)). 48

49 Fortsetzung Beweis I Noch zu zeigen: graph(t{f g g Y}) graph(f(ty)) Annahme: Sei s ein beliebiger Zustand mit F(tY) s = s. Bestimme ein g Y mit (F g) s = s. Daraus folgt dann: t{f g g Y}) s = s und damit graph(t{f g g Y}) graph(f(ty)). Also: Bestimme ein g Y mit (F g) s = s. 49

50 Fortsetzung Beweis II: Fallunterscheidung 50 Fall 1: s x = 1 Daraus folgt: F(tY) s = s = s Für alle Funktionen g, also insbesondere für g Y, gilt: (F g) s = s falls s x = 1 Da Y, gibt es solch ein g. Fall 2: s x 1 Dann gilt: F(tY) s = ty(s[ ][ ]) = s Daraus folgt: Es gibt g Y mit g(s[ ][ ]) = s Daraus folgt: Fürdieses g gilt (F g) s = g(s[ ][ ]) = s Damit ist der Beweis abgeschlossen.

51 Fixpunkt-Satz Sei f: D D eine stetige Funktion auf der ccpo (D,v) mit kleinstem Element. Dann definiert FIX f = t{f n n 0} ein Element aus D, und dieses Element ist der kleinste Fixpunkt von f. Notation: f 0 = id, f n+1 = f f n für n>0 51 Beweis in drei Schritten: 1) Zeige: FIX f ist wohldefiniert. 2) Zeige: FIX f ist ein Fixpunkt von f. 3) Zeige: FIX f ist der kleinste Fixpunkt von f.

52 Beweis Fixpunktsatz I Beweis, dass FIX f wohldefiniert ist: Zeige mit Induktion über n, dass gilt: f n v f n d für alle d D Folgt aus der Monotonie von f Daraus folgt: f n v f m für n m f m ist ein d D Daher ist {f n n 0} eine nicht-leere Kette in D und Fix f existiert, weil D eine ccpo ist. 52

53 Beweis Fixpunktsatz II Beweis, dass FIX f ein Fixpunkt von f ist: zu zeigen: f (FIX f) = FIX f. f (FIX f) = = f (t{f n n 0}) (def. of FIX f) = t{f(f n ) n 0} (f stetig) = t{f n n 1} = t({f n n 1} { }) (weil t(y { })=ty für alle Ketten Y) = t{f n n 0} ( f 0 = ) = FIX f (def. of FIX f) 53

54 Beweis Fixpunktsatz III Beweis, dass FIX f der kleinste Fixpunkt v. f ist: Annahme: Es gibt einen weiteren Fixpunkt d. Es gilt: v d Da f monoton ist, gilt: f n v f n d für n 0. Da d ein Fixpunkt ist, gilt: f n v d für n 0. Also ist d ein Fixpunkt der Kette {f n n 0}. FIX f ist der kleinste Fixpunkt dieser Kette, also gilt: FIX f v d. Damit ist der Beweis des Fixpunktsatzes fertig. 54

55 Zusammenfassung Fixpunkttheorie Wir beschränken uns auf kettenvollständige partielle Ordnungen (ccpo s). Wir beschränken uns auf stetige Funktionen auf ccpo s. Wir zeigen, dass stetige Funktionen auf ccpo s immer eindeutige kleinste Fixpunkte haben. 55

56 Beispiel: Fakultätsprogramm S«y:=1; while x 1 do (y:=y*x; x:=x-1) s = (FIX F) (s[ya 1]) wobei (F g) s = g(s[ya (s y * s x)] [xa (s x) 1]) falls s x 1 und (F g) s = s falls s x = 1 Wir müssen sicherstellen, dass (State State, v) eine ccpo ist und dass F eine stetige Funktion ist (haben wir schon gemacht) Dann folgt aus dem Fixpunktsatz, dass FIX F wohldefiniert und der kleinste Fixpunkt von F ist. 56

57 Beispiel: Fakultätsprogramm (F 0 ) s = undef (F 1 ) s = undef falls s x 1 und (F 1 ) s = s falls s x = 1 (F 2 ) s = undef falls s x 1 und s x 2 und (F 2 ) s = s[y a (s y)*2] [x a 1] falls s x = 2 und (F 2 ) s = s falls s x = 1 (F n ) s = undef falls s x < 1 oder s x > n und (F n ) s = s[ya (s y)*j*l*2*1] [x a 1] falls s x = j und1 j n (FIX F) s = undef falls s x < 1 und (FIX F) s = s[ya (s y)*n*l*2*1] [x a 1] falls s x = n und 1 n 57

58 Existenz der denotationellen Semantik Dazu müssen wir nachweisen, dass Funktion S existiert und wohldefiniert ist: S«x:=a s = s[xa A«a s] S«skip = id S«S 1 ; S 2 = S«S 2 S«S 1 S«if b then S 1 else S 2 = cond(b«b, S«S 1, S«S 2 ) S«while b do S = FIX F 58 where F g = cond(b«b, g S«S, id)

59 Beweis der Existenz der denotationellen Semantik I 59 Beweis durch strukturelle Induktion über den Aufbau von Programmen: Zuweisung x:=a: Zustand s wird abgebildet auf s[xa A«a s]. Diese Abbildung ist wohldefiniert. skip: Identitätsabbildung ist wohldefiniert. S 1 ; S 2 : Verkettung von Funktionen, die nach Induktionsvoraussetzung wohldefiniert sind, ist wohldefiniert. if: Funktion cond ist wohldefiniert, wenn Argumentfunktionen wohldefiniert sind (gilt nach Ind.vor.)

60 Beweis der Existenz der denotationellen Semantik II While-Schleife: Ind.Vor.: S«Rumpf ist wohldefiniert. Die Funktionen F 1 und F 2 mit F 1 g = cond(b«b, g, id) und F 2 g = g S«Rumpf müssen als stetig nachgewiesen werden: Nachweis für F 1 : Übungsaufgabe Nachweis für F 2 erfolgt analog zum Nachweis der Stetigkeit von F bei der Fakultätsfunktion Beide Beweise: Nachlesen bei Nielson/Nielson 60

61 Zusammenfassung des Beweises für die Semantik der While-Schleife: Die Menge der Funktionen f: State State, die Zustände in Zustände abbilden, zusammen mit einer passenden Ordnung v ist eine ccpo (ketten-vollständige partielle Ordnung). Bestimmte Funktionen F: (State State) (State State) sind stetig. Bei der Definition der denotationellen Semantik wenden wir den Fixpunktoperator nur auf stetige Funktionen an. 61

62 Zusammenfassung denotationelle Semantik Definition der direct-style denotationellen Semantik Diskussion der Frage, ob Fixpunkte existieren und eindeutig sind Diskussion, welche Anforderungen man an den gewünschten Fixpunkt hat Fixpunkttheorie: Fixpunktsatz Anwendung auf denotationelle Semantik: Nachweis der Wohldefiniertheit 62

63 Bewertung denotationelle Semantik Mathematisches Konzept. Für einfache Programmiersprachen (wie z.b. die While-Sprache) einfach zu verstehen. Komplexität nimmt im Vgl. zur Komplexität der Sprachkonstrukte überproportional zu. Deshalb sind denotationelle Semantiken oft weniger handlich als operationale Semantiken, wenn es um imperative oder objekt-orientierte Programmiersprachen mit komplexen Zuständen geht. 63

64 Tips zum Nacharbeiten, Prüfungsvorbereiten oder falls man den Stoff mal wieder braucht: Daran denken: Ist nicht so schwer, wie es aussehen mag! Nachlesen im Lehrbuch: Hanne Riis Nielson und Flemming Nielson: Semantics with Applications: A Formal Introduction. sehr gutes Lehrbuch ist im Netz frei verfügbar, Adresse: dort gibt es auch weitere Beispiele und Übungsaufgaben 64

Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,

Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen, Vorlesung Höhere Programmiersprachen, WS 2003/04 Teil 2: Formale Semantik Axiomatische Semantik Inhaltsübersicht - Grundlagen (1,2) - Konzepte imperativer Programmiersprachen (2,3) - Deklarative Programmiersprachen

Mehr

Semantik von Programmiersprachen SS 2017

Semantik von Programmiersprachen SS 2017 Lehrstuhl für Programmierparadigmen Denis Lohner Sebastian Ullrich denis.lohner@kit.edu sebastian.ullrich@kit.edu Semantik von Programmiersprachen SS 2017 http://pp.ipd.kit.edu/lehre/ss2017/semantik Lösungen

Mehr

6 Denotationale Semantik Semantik von Programmiersprachen

6 Denotationale Semantik Semantik von Programmiersprachen 6.2 Fixpunkttheorie Im vorherigen Abschnitt haben wir den Fixpunktoperator FIX als Grenzwert der Fixpunktiteration postuliert. Es ist aber noch nicht klar, dass die Fixpunktiteration immer zu einem Grenzwert

Mehr

Kapitel 6. Programme mit Schleifen. Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt

Kapitel 6. Programme mit Schleifen. Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt Kapitel 6 Programme mit Schleifen Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt über zuweisbare Variablen, Konditionale und Schleifen, hat aber keine Prozeduren. IMP

Mehr

Kapitel 6. Fixpunkte und semantische Bereiche

Kapitel 6. Fixpunkte und semantische Bereiche Kapitel 6 Fixpunkte und semantische Bereiche Sowohl bei der Definition der operationalen Semantik als auch bei der Definition der mathematischen Semantik haben wir mehr oder weniger explizit Fixpunkte

Mehr

Wir betrachten jetzt eine idealisierte imperative Programmiersprache IMP mit zuweisbaren

Wir betrachten jetzt eine idealisierte imperative Programmiersprache IMP mit zuweisbaren Kapitel 6 Programme mit Schleifen Wir betrachten jetzt eine idealisierte imperative Programmiersprache IMP mit zuweisbaren Variablen und Schleifen. Unser Ziel ist es, die Syntax und Semantik von IMP mit

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 17: Relationen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2013/2014 1/61 Anmerkung Änderung im Wintersemester 2013/2014:

Mehr

Kapitel 5. Mathematische Semantik. 1 Motivation

Kapitel 5. Mathematische Semantik. 1 Motivation Kapitel 5 Mathematische Semantik In diesem Kapitel werden wir nun eine weitere Technik zur Definition der Semantik einer Programmiersprache vorstellen: die mathematische bzw. denotationale Semantik. Außerdem

Mehr

Programmieren für Fortgeschrittene

Programmieren für Fortgeschrittene Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme Wintersemester 2011/12 Programmieren für Fortgeschrittene Rekursive Spezifikationen Die folgende

Mehr

Diskrete Strukturen. Vorlesung 7: Fixpunkte & Kardinalität. 27. November 2018

Diskrete Strukturen. Vorlesung 7: Fixpunkte & Kardinalität. 27. November 2018 Diskrete Strukturen Vorlesung 7: Fixpunkte & Kardinalität 27. November 2018 Nächste Termine Modul Diskrete Strukturen Hörsaalübung (Mo. 9:15) Vorlesung (Di. 17:15) 26.11. 27.11. Fixpunkte + Kardinalitäten

Mehr

8. Einfache Fixpunkttheorie

8. Einfache Fixpunkttheorie 8. Einfache Fixpunkttheorie Fragestellung: was unter einem (kleinsten) Fixpunkt zu verstehen ist t(x) = x y : D. t(y) = y x y wann ein Fixpunkt existiert monotone Funktionen über CPOs haben einen kleinsten

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 21: Relationen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

Semantik von Programmiersprachen SS 2017

Semantik von Programmiersprachen SS 2017 Lehrstuhl für Programmierparadigmen Denis Lohner Sebastian Ullrich denis.lohner@kit.edu sebastian.ullrich@kit.edu Semantik von Programmiersprachen SS 2017 http://pp.ipd.kit.edu/lehre/ss2017/semantik Lösungen

Mehr

Korrekte Software: Grundlagen und Methoden Vorlesung 5 vom : Äquivalenz operationale und denotationale Semantik

Korrekte Software: Grundlagen und Methoden Vorlesung 5 vom : Äquivalenz operationale und denotationale Semantik 18:09:54 2016-07-07 1 [12] Korrekte Software: Grundlagen und Methoden Vorlesung 5 vom 2.05.16: Äquivalenz operationale und denotationale Semantik Serge Autexier, Christoph Lüth Universität Bremen Sommersemester

Mehr

13 Auswahlaxiom und Zornsches Lemma

13 Auswahlaxiom und Zornsches Lemma 13 Auswahlaxiom und Zornsches Lemma Handout zur Funktionalanalysis I von H. Glöckner, 25.11.2008 Wichtige Teile der modernen Mathematik beruhen auf dem sogenannten Auswahlaxiom der Mengenlehre. Dieses

Mehr

Abschnitt 11: Korrektheit von imperativen Programmen

Abschnitt 11: Korrektheit von imperativen Programmen Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961

Mehr

Semantik. Semantik von Programmiersprachen. Prof. Tobias Nipkow, Ph. D. Erstellt von Benjamin Gufler. Erstellt mit L A TEX

Semantik. Semantik von Programmiersprachen. Prof. Tobias Nipkow, Ph. D. Erstellt von Benjamin Gufler. Erstellt mit L A TEX Semantik Semantik von Programmiersprachen Prof. Tobias Nipkow, Ph. D. Erstellt von Benjamin Gufler Erstellt mit L A TEX II Inhaltsverzeichnis 0.1 Ziele............................................ 1 0.2

Mehr

Theorie der Programmierung III Wintersemester 2009/2010

Theorie der Programmierung III Wintersemester 2009/2010 Fachbereich 12 Informatik und Elektrotechnik Programmiersprachen Kurt Sieber Benedikt Meurer Theorie der Programmierung III Wintersemester 2009/2010 Übungsblatt 4 Aufgabe 1 Bestimmen Sie für jede der folgenden

Mehr

Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen

Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen Dozentin: Wiebke Petersen 4. Foliensatz Wiebke Petersen math. Grundlagen 86 starke / schwache Ordnungen Eine Ordnung R einer Menge A ist

Mehr

Diskrete Strukturen Kapitel 2: Grundlagen (Relationen)

Diskrete Strukturen Kapitel 2: Grundlagen (Relationen) WS 2016/17 Diskrete Strukturen Kapitel 2: Grundlagen (Relationen) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_16

Mehr

Kapitel 1. Mengen und Abbildungen. 1.1 Mengen

Kapitel 1. Mengen und Abbildungen. 1.1 Mengen Kapitel 1 Mengen und Abbildungen 1.1 Mengen Die Objekte der modernen Mathematik sind die Mengen. Obwohl die Logik einen axiomatischen Zugang zur Mengenlehre bietet, wollen wir uns in dieser Vorlesung auf

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 17: Relationen Thomas Worsch Karlsruher Institut für Technologie, Fakultät für Informatik Wintersemester 2009/2010 1/77 Überblick Äquivalenzrelationen Definition Äquivalenzrelationen

Mehr

Kapitel 4. Induktive Definitionen und Beweise

Kapitel 4. Induktive Definitionen und Beweise Kapitel 4 Induktive Definitionen und Beweise Bei der Definition der Semantik der Programmiersprache IMP haben wir an vielen verschiedenen Stellen induktive Definitionen benutzt: angefangen bei der Syntax

Mehr

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel

{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel Inhalt Hoare-Kalkül Formale Verifizierung Hoare-Kalkül while-sprache Terminierung Partielle / totale Korrektheit 4.0 Hoare-Kalkül entwickelt von C.A.R. (Tony) Hoare (britischer Informatiker), 1969 formales

Mehr

3.4 Fixpunkttheorie auf Partialordnungen

3.4 Fixpunkttheorie auf Partialordnungen 3.4 Fixpunkttheorie auf Partialordnungen Definition 3.15 (Partialordnung) Sei L eine Menge und eine binäre Relation auf L. O = L, heißt Partialordnung, falls folgende Bedingungen erfüllt sind: Reflexivität:

Mehr

Korrektheit und Hoare-Kalkül für Imperative Programme

Korrektheit und Hoare-Kalkül für Imperative Programme Korrektheit und Hoare-Kalkül für Imperative Programme Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 Ziele Partielle und totale Korrektheit kennen lernen Die Regeln des Hoare-Kalkül

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 17: Relationen Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/76 Überblick Äquivalenzrelationen Definition Äquivalenzrelationen

Mehr

2 Mengen, Abbildungen und Relationen

2 Mengen, Abbildungen und Relationen Vorlesung WS 08 09 Analysis 1 Dr. Siegfried Echterhoff 2 Mengen, Abbildungen und Relationen Definition 2.1 (Mengen von Cantor, 1845 1918) Eine Menge M ist eine Zusammenfassung von wohlbestimmten und wohl

Mehr

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung

Dank. Theoretische Informatik II. Teil II. Registermaschinen. Vorlesung Dank Vorlesung Theoretische Informatik II Bernhard Beckert Institut für Informatik Diese Vorlesungsmaterialien basieren zum Teil auf den Folien zu den Vorlesungen von Katrin Erk (gehalten an der Universität

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

David Harel, Dexter Kozen, Jerzy Tiuryn. Dynamic Logic. The MIT Press, 2000.

David Harel, Dexter Kozen, Jerzy Tiuryn. Dynamic Logic. The MIT Press, 2000. Kapitel 6 Programme In diesem Kapitel beschäftigen wir uns mit der Semantik von Programmen. Dazu betrachten wir eine kleine, idealisierte Programmiersprache IMP, die als Teilsprache von C aufgefasst werden

Mehr

WS 2013/14. Diskrete Strukturen

WS 2013/14. Diskrete Strukturen WS 2013/14 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws13/14

Mehr

Analysis I - Notizen 1. Daniel Lenz Jena - Wintersemester 2016

Analysis I - Notizen 1. Daniel Lenz Jena - Wintersemester 2016 Analysis I - Notizen 1 Daniel Lenz Jena - Wintersemester 2016 1 Es handelt sich nicht um ein Skriptum zur Vorlesung. Besten Dank an alle, die zu Verbesserungen früherer Notizen zur Analysis I beigetragen

Mehr

Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen

Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen Mathematische Grundlagen der Computerlinguistik Ordnungsrelationen Dozentin: Wiebke Petersen 4. Foliensatz Wiebke Petersen math. Grundlagen 89 starke / schwache Ordnungen Eine Ordnung R einer Menge A ist

Mehr

Grundlagen der Programmierung 2. Operationale Semantik

Grundlagen der Programmierung 2. Operationale Semantik Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung

Mehr

Elementare Verbandstheorie. Elementare Verbandstheorie Sommersemester / 1

Elementare Verbandstheorie. Elementare Verbandstheorie Sommersemester / 1 Elementare Verbandstheorie Elementare Verbandstheorie Sommersemester 2009 1 / 1 Halbordnungen Definition Eine binäre Relation auf einer Menge M heisst Halbordnung, wenn sie reflexiv, transitiv und antisymmetrisch

Mehr

Ordnungsrelationen auf Mengen

Ordnungsrelationen auf Mengen Ordnungsrelationen auf Mengen Eine (partielle) Ordnungsrelation oder kurz Ordnung O auf einer Menge M ist eine Relation, die reflexiv, antisymmetrisch und transitiv ist. Beispiel: M = { 1, 2, 3 }, O =

Mehr

GTI. Hannes Diener. 18. Juni. ENC B-0123,

GTI. Hannes Diener. 18. Juni. ENC B-0123, GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.

Mehr

7 Axiomatische Semantik

7 Axiomatische Semantik 7 Axiomatische Semantik Operationale und denotationale Semantiken legen die Bedeutung eines Programms direkt fest als Ableitungsbaum, maximale Ableitungsfolge oder partielle Funktion auf den Zuständen.

Mehr

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Kapitel 2 Mathematische Grundlagen Skript zur Vorlesung Einführung in die Programmierung im Wintersemester 2012/13 Ludwig-Maximilians-Universität

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt 12. 1. Fixpunktsätze von Knaster-Tarski und Kleene 2. Denotationelle Semantik von BNF-Grammatiken 3.

Mehr

Ein Fragment von Pascal

Ein Fragment von Pascal Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und

Mehr

Abschnitt 3: Mathematische Grundlagen

Abschnitt 3: Mathematische Grundlagen Abschnitt 3: Mathematische Grundlagen 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Ausdrücke 3 Mathematische Grundlagen Einf. Progr. (WS 08/09) 102 Überblick 3.

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Semantik von Programmiersprachen Markus Lohrey Universität Siegen Sommersemester 2015 Markus Lohrey (Universität Siegen) Semantik Sommersem. 2015 1 / 180 Literatur J. Loeckx, K. Sieber: The Foundations

Mehr

Abstarkte Interpretation I

Abstarkte Interpretation I Lehr- und Forschungseinheit Theoretische Informatik Hauptseminar Programmanalyse SS 2009 Abstrakte Interpretation I Prof. Dr. Martin Hofmann Referent: Gliederung I. Grundlagen der abstrakten Interpretation

Mehr

4 Ein Compiler für While

4 Ein Compiler für While 4 Ein Compiler für While Reale Rechner verarbeiten Assembler-Code und keine Syntaxbäume Sprachen wie While sind damit nicht direkt auf einem solchen Rechner ausführbar, sondern müssen übersetzt werden

Mehr

Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen

Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen Teil IV Semantik imperativer Sprachen 201 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap.

Mehr

Semantik von Programmiersprachen

Semantik von Programmiersprachen Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 14. Juli 2017 Semantik von Programmiersprachen Übersicht Art der Veranstaltung: Vorlesung mit

Mehr

Abschnitt 3: Mathematische Grundlagen

Abschnitt 3: Mathematische Grundlagen Abschnitt 3: Mathematische Grundlagen 3. Mathematische Grundlagen 3.1 3.2 Induktion und Rekursion 3.3 Boolsche Algebra Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 48 / 155 Überblick

Mehr

Einführung in die Logik

Einführung in die Logik Einführung in die Logik Klaus Madlener und Roland Meyer 24. April 2013 Inhaltsverzeichnis 1 Aussagenlogik 1 1.1 Syntax................................. 1 1.2 Semantik............................... 3 1.3

Mehr

Mächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen

Mächtigkeit von LOOP-Programmen. Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen Mächtigkeit von LOOP-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 23 Die Programmiersprache LOOP Syntax Elemente eines LOOP-Programms Variablen

Mehr

Korrektheit imperativer Algorithmen

Korrektheit imperativer Algorithmen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Abschnitt 9 Korrektheit imperativer Algorithmen Skript zur Vorlesung Einführung in die Programmierung im Wintersemester

Mehr

Semantik. Skript zur Vorlesung Semantik von Programmiersprachen im WS 2003/04 an der Universität Paderborn. Überarbeitet im WS 2004/05.

Semantik. Skript zur Vorlesung Semantik von Programmiersprachen im WS 2003/04 an der Universität Paderborn. Überarbeitet im WS 2004/05. Semantik Skript zur Vorlesung Semantik von Programmiersprachen im WS 2003/04 an der Universität Paderborn Überarbeitet im WS 2004/05 Ekkart Kindler Version: 0.2.8 vom 28. Januar 2005 ii Vorwort Dieses

Mehr

Mathematische Grundlagen der Computerlinguistik Relationen und Funktionen

Mathematische Grundlagen der Computerlinguistik Relationen und Funktionen Mathematische Grundlagen der Computerlinguistik Relationen und Funktionen Dozentin: Wiebke Petersen 2. Foliensatz Wiebke Petersen math. Grundlagen 20 n-tupel und Cartesisches Produkt Mengen sind ungeordnet,

Mehr

Kapitel 1.1. Aussagenlogik: Syntax. Mathematische Logik (WS 2011/12) Kapitel 1.1: Aussagenlogik: Syntax 1/ 1

Kapitel 1.1. Aussagenlogik: Syntax. Mathematische Logik (WS 2011/12) Kapitel 1.1: Aussagenlogik: Syntax 1/ 1 Kapitel 1.1 Aussagenlogik: Syntax Mathematische Logik (WS 2011/12) Kapitel 1.1: Aussagenlogik: Syntax 1/ 1 Übersicht 1.1.1 Die Sprache der Aussagenlogik 1.1.2 Explizite vs. implizite Definitionen 1.1.3

Mehr

Berechenbarkeit und Komplexität Vorlesung 11

Berechenbarkeit und Komplexität Vorlesung 11 Berechenbarkeit und Komplexität Vorlesung 11 Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7 RWTH Aachen 7. Dezember 2014 Wolfgang Thomas, Informatik 7 () Vorlesung Berechenbarkeit und Komplexität 7.

Mehr

Algorithmen und Programmieren II Programmverifikation {V} P {N}

Algorithmen und Programmieren II Programmverifikation {V} P {N} Algorithmen und Programmieren II Programmverifikation {V} P {N} SS 2012 Prof. Dr. Margarita Esponda ALP II: Margarita Esponda, 11. Vorlesung, 22.5.2012 1 Assertions oder Zusicherungen Das Konzept der Zusicherungen

Mehr

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)

Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) WS 2014/15 Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_14

Mehr

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen)

Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen) WS 2015/16 Diskrete Strukturen Kapitel 5: Algebraische Strukturen (Gruppen) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_15

Mehr

Warum formale Semantik? Übersicht Formale Semantik. Inhaltsübersicht HPS WS 2003/04 Vorlesung Höhere Programmiersprachen, Teil 2: Formale Semantik

Warum formale Semantik? Übersicht Formale Semantik. Inhaltsübersicht HPS WS 2003/04 Vorlesung Höhere Programmiersprachen, Teil 2: Formale Semantik Inhaltsübersicht Vorlesung Höhere Programmiersprachen, W 2002/03 Teil 2: Formale emantik Einleitung Operationale emantik mit AMs - Grundlagen (1,2) - Konzepte imperativer Programmiersprachen (2,3) - Deklarative

Mehr

Kapitel 4: Formale Verifikation

Kapitel 4: Formale Verifikation Kapitel 4: Formale Verifikation Inhalt 4.1 Grundlagen 4.2 Verifikation auf axiomatischer Basis 4.3 Verifikation einzelner Eigenschaften 4.4 Stärken und Schwächen formaler Verifikation Schlüsselbegriffe

Mehr

Semantik von Programmiersprachen Theorie und Anwendungen (Informatik III, Wintersemester 03/04)

Semantik von Programmiersprachen Theorie und Anwendungen (Informatik III, Wintersemester 03/04) Eidgenossische Technische Hochschule Zurich Ecole polytechnique federale de Zurich Politecnico federale di Zurigo Swiss Federal Institute of Technology Zurich Semantik von Programmiersprachen Theorie und

Mehr

4. Funktionen und Relationen

4. Funktionen und Relationen 4. Funktionen und Relationen Nikolaus von Oresmes Richard Dedekind (1831-1916) René Descartes 1596-1650 Pierre de Fermat 1607/8-1665 Seite 1 Inhalt der Vorlesung Teil 4: Funktionen und Relationen 4.1 Funktionen:

Mehr

Logische und funktionale Programmierung

Logische und funktionale Programmierung Logische und funktionale Programmierung Vorlesung 11: Logikprogramme Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 19. Dezember 2016 1/55 WIEDERHOLUNG: HORN-KLAUSELN

Mehr

Substitution. Unifikation. Komposition der Substitution. Ausführung der Substitution

Substitution. Unifikation. Komposition der Substitution. Ausführung der Substitution Substitution Unifikation Ziel eines Widerspruchsbeweis: Widerspruch ja/nein Variablenbindung im Falle eines Widerspruchs Eine Substitution θ ist eine endliche Menge der Form {v 1 /t 1 v n /t n }, wobei

Mehr

Ordnungsrelationen auf Mengen. Beispiel einer Ordnungsrelation. Spezielle Elemente von Ordnungen. Spezielle Elemente von Ordnungen

Ordnungsrelationen auf Mengen. Beispiel einer Ordnungsrelation. Spezielle Elemente von Ordnungen. Spezielle Elemente von Ordnungen Ordnungsrelationen auf Mengen! Eine (partielle) Ordnungsrelation oder kurz Ordnung O auf einer Menge M ist eine Relation, die reflexiv, antisymmetrisch und transitiv ist. Beispiel: M = { 1, 2, 3 }, O =

Mehr

Ordnungsrelationen auf Mengen

Ordnungsrelationen auf Mengen Ordnungsrelationen auf Mengen Eine (partielle) Ordnungsrelation oder kurz Ordnung O auf einer Menge M ist eine Relation, die reflexiv, antisymmetrisch und transitiv ist. Beispiel: M = { 1, 2, 3 }, O =

Mehr

4. Funktionen und Relationen

4. Funktionen und Relationen Bestimmung der Umkehrfunktionen c) bei reellen Funktionen geometrisch durch Spiegelung des Funktionsgraphen an der Winkelhalbierenden y = x. y = x 3 y = x y = x y = (x+1)/2 y = x 1/3 y = 2x 1 Seite 27

Mehr

Grundlagen der theoretischen Informatik

Grundlagen der theoretischen Informatik Grundlagen der theoretischen Informatik Kurt Sieber Fakultät IV, Department ETI Universität Siegen SS 2013 Vorlesung vom 09.04.2013 Inhalt der Vorlesung Teil I: Automaten und formale Sprachen (Kurt Sieber)

Mehr

Theoretische Informatik SS 03 Übung 3

Theoretische Informatik SS 03 Übung 3 Theoretische Informatik SS 03 Übung 3 Aufgabe 1 a) Sind die folgenden Funktionen f : partiell oder total: f(x, y) = x + y f(x, y) = x y f(x, y) = x y f(x, y) = x DIV y? Hierbei ist x DIV y = x y der ganzzahlige

Mehr

1 Axiomatische Charakterisierung der reellen. 3 Die natürlichen, die ganzen und die rationalen. 4 Das Vollständigkeitsaxiom und irrationale

1 Axiomatische Charakterisierung der reellen. 3 Die natürlichen, die ganzen und die rationalen. 4 Das Vollständigkeitsaxiom und irrationale Kapitel I Reelle Zahlen 1 Axiomatische Charakterisierung der reellen Zahlen R 2 Angeordnete Körper 3 Die natürlichen, die ganzen und die rationalen Zahlen 4 Das Vollständigkeitsaxiom und irrationale Zahlen

Mehr

Kombinatorik. Dr. Lucia Draque Penso. Universität Ulm. Dr. Lucia Draque Penso (Universität Ulm) Kombinatorik 1 / 19

Kombinatorik. Dr. Lucia Draque Penso. Universität Ulm. Dr. Lucia Draque Penso (Universität Ulm) Kombinatorik 1 / 19 Kombinatorik Dr. Lucia Draque Penso Universität Ulm Dr. Lucia Draque Penso (Universität Ulm) Kombinatorik 1 / 19 Fünfzehnte Vorlesung Dr. Lucia Draque Penso (Universität Ulm) Kombinatorik 2 / 19 Definition

Mehr

Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion

Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion Vorkurs Mathematik und Informatik Mengen, natürliche Zahlen, Induktion Saskia Klaus 07.10.016 1 Motivation In den ersten beiden Vorträgen des Vorkurses haben wir gesehen, wie man aus schon bekannten Wahrheiten

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Sascha Böhme, Lars Noschinski Sommersemester 2011 Lösungsblatt 9 25. Juli 2011 Einführung in die Theoretische Informatik

Mehr

Logik für Informatiker

Logik für Informatiker Vorlesung Logik für Informatiker 2. Induktion Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Induktion Zentrale Rolle Wesentliches Beweisprinzip in Mathematik

Mehr

Kapitel 2 Mathematische Grundlagen

Kapitel 2 Mathematische Grundlagen Kapitel 2 Mathematische Grundlagen Ziel: Einführung/Auffrischung einiger mathematischer Grundlagen 2.1 Mengen, Relationen, Ordnungen Definition: Eine Menge ist eine Zusammenfassung von wohlbestimmten und

Mehr

Technische Universität München. Ferienkurs Lineare Algebra 1. Mengenlehre, Aussagen, Relationen und Funktionen. 21. März 2011.

Technische Universität München. Ferienkurs Lineare Algebra 1. Mengenlehre, Aussagen, Relationen und Funktionen. 21. März 2011. Technische Universität München Ferienkurs Lineare Algebra 1 Mengenlehre, Aussagen, Relationen und Funktionen 21. März 2011 Tanja Geib Inhaltsverzeichnis 1 Aussagen 1 2 Mengenlehre 3 2.1 Grundlegende Definitionen

Mehr

Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Synchronisation (4) Eine untere Schranke für den Platzbedarf

Übersicht. Nebenläufige Programmierung: Praxis und Semantik. Synchronisation (4) Eine untere Schranke für den Platzbedarf Übersicht Komplexitätsresultate Aktuelle Themen zu Informatik der Systeme: Nebenläufige Programmierung: Praxis und Semantik Synchronisation (4) Drei Komplexitätsresultate Eine genaue Schranke für den Platzbedarf

Mehr

Ordnungsrelationen auf Mengen. Beispiel einer Ordnungsrelation. Spezielle Elemente von Ordnungen. Spezielle Elemente von Ordnungen

Ordnungsrelationen auf Mengen. Beispiel einer Ordnungsrelation. Spezielle Elemente von Ordnungen. Spezielle Elemente von Ordnungen Ordnungsrelationen auf Mengen Eine (partielle) Ordnungsrelation oder kurz Ordnung O auf einer Menge M ist eine Relation, die reflexiv, antisymmetrisch und transitiv ist. Beispiel: M = { 1, 2, 3 }, O =

Mehr

Mengenlehre und vollständige Induktion

Mengenlehre und vollständige Induktion Fachschaft MathPhys Heidelberg Mengenlehre und vollständige Induktion Vladislav Olkhovskiy Vorkurs 018 Inhaltsverzeichnis 1 Motivation 1 Mengen.1 Grundbegriffe.................................. Kostruktionen

Mehr

Einführung in die mathematische Logik

Einführung in die mathematische Logik Prof. Dr. H. Brenner Osnabrück SS 2014 Einführung in die mathematische Logik Vorlesung 13 Erststufige Peano-Arithmetik - Folgerungen und Ableitungen Die in der zweiten Stufe formulierten Dedekind-Peano-Axiome

Mehr

Skript und Übungen Teil II

Skript und Übungen Teil II Vorkurs Mathematik Herbst 2009 M. Carl E. Bönecke Skript und Übungen Teil II Das erste Semester wiederholt die Schulmathematik in einer neuen axiomatischen Sprache; es ähnelt damit dem nachträglichen Erlernen

Mehr

7 Axiomatische Semantik

7 Axiomatische Semantik 7 Axiomatische Semantik Operationale und denotationale Semantiken legen die Bedeutung eines Programms direkt fest als Ableitungsbaum, maximale Ableitungsfolge oder partielle Funktion auf den Zuständen.

Mehr

While Programme. Kai Sauerwald Zusammenfassung: Formale Methoden des Systementwurfs SS 12

While Programme. Kai Sauerwald Zusammenfassung: Formale Methoden des Systementwurfs SS 12 Definition: Semantikschema Ein Semnatikschema ist ein upel R, I, [ ] mit: Σ = def {σ σ : V ar Z} als die (Speicher-)Zustände. R: Menge der Repräsentationen / Nachrichten I: Menge der Begriffe / Informationen

Mehr

Informatik I Tutorium WS 07/08

Informatik I Tutorium WS 07/08 Informatik I Tutorium WS 07/08 Vorlesung: Prof. Dr. F. Bellosa Übungsleitung: Dipl.-Inform. A. Merkel Tutorium: 12 Tutor: Jens Kehne Tutorium 6: Dienstag, 04. Dezember 2007 Agenda des heutigen Tutoriums

Mehr

Lösung zur Übung für Analysis einer Variablen WS 2016/17

Lösung zur Übung für Analysis einer Variablen WS 2016/17 Blatt Nr. 3 Prof. F. Merkl Lösung zur Übung für Analysis einer Variablen WS 206/7 Aufgabe Das Guthaben G setzt sich zusammen aus der Summe aller bisherigen Einzahlungen multipliziert mit ( + p) k, wobei

Mehr

Logik für Informatiker

Logik für Informatiker Logik für Informatiker 1. Grundlegende Beweisstrategien: Noethersche Induktion 23.04.2012 Viorica Sofronie-Stokkermans Universität Koblenz-Landau e-mail: sofronie@uni-koblenz.de 1 Letzte Vorlesung 1. Grundlegende

Mehr

21 R E L AT I O N E N äquivalenzrelationen

21 R E L AT I O N E N äquivalenzrelationen 21 R E L AT I O N E N 21.1 äquivalenzrelationen 21.1.1 Definition In Abschnitt 15.2.1 hatten wir schon einmal erwähnt, dass eine Relation R M M auf einer Menge M, die reflexiv, symmetrisch und transitiv

Mehr

Operationale Semantik: Haskell

Operationale Semantik: Haskell Kapitel 4 Operationale Semantik: Haskell 4.1 Semantik von Programmiersprachen Programme sind zunächst mal nur Text. Programme sollen aber etwas im Rechner bewirken bzw. eine Funktion oder Funktionalität

Mehr

Logik für Informatiker. 1. Grundlegende Beweisstrategien. Viorica Sofronie-Stokkermans Universität Koblenz-Landau

Logik für Informatiker. 1. Grundlegende Beweisstrategien. Viorica Sofronie-Stokkermans Universität Koblenz-Landau Logik für Informatiker 1. Grundlegende Beweisstrategien Viorica Sofronie-Stokkermans Universität Koblenz-Landau e-mail: sofronie@uni-koblenz.de 1 Mathematisches Beweisen Mathematische ussagen - haben oft

Mehr

1 Funktionale vs. Imperative Programmierung

1 Funktionale vs. Imperative Programmierung 1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.

Mehr

2.1 Definitionen Sätze und Beweise Erklärungen zu den Definitionen... 15

2.1 Definitionen Sätze und Beweise Erklärungen zu den Definitionen... 15 Mengen Übersicht.1 Definitionen................................................. 11. Sätze und Beweise............................................ 14.3 Erklärungen zu den Definitionen...............................

Mehr

Resolutionsalgorithmus

Resolutionsalgorithmus 112 Resolutionskalkül Mit dem Begriff Kalkül bezeichnet man eine Menge von syntaktischen Umformungsregeln, mit denen man semantische Eigenschaften der Eingabeformel herleiten kann. Für den Resolutionskalkül:

Mehr

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen? Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen

Mehr

KAPITEL 4. Posets Hasse Diagramm

KAPITEL 4. Posets Hasse Diagramm KAPITEL 4 Posets Im Abschnitt über Relationen (1.4) wurde Eigenschaften von Relationen über einer einzigen Grundmenge X definiert. Mithilfe dieser Eigenschaften wurden z.b. Äquivalenzrelationen definiert.

Mehr

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme

Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme Berechenbarkeit und Komplexität: Mächtigkeit von Programmiersprachen: WHILE- und LOOP-Programme Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität 29. November 2007 Turing-mächtige

Mehr

Problem: Gegeben Spezifikation (P,Q) und Implementierung S Gesucht formaler (automatisierbarer?) Beweis, dass S (P,Q) erfüllt.

Problem: Gegeben Spezifikation (P,Q) und Implementierung S Gesucht formaler (automatisierbarer?) Beweis, dass S (P,Q) erfüllt. Formale Verifikation von Algorithmen 1.3 Verifikation Problem: Gegeben Spezifikation (P,Q) und Implementierung S Gesucht formaler (automatisierbarer?) Beweis, dass S (P,Q) erfüllt. Bisher nicht möglich

Mehr