Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS 2002 1 Semantik funktionaler Programme.

Ähnliche Präsentationen


Präsentation zum Thema: "Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS 2002 1 Semantik funktionaler Programme."—  Präsentation transkript:

1 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme

2 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme zur Semantikbeschreibung von funktionalen Programmen werden im deklarative Techniken verwendet die Semantik funktionaler Programme kann in Form von mathematischen Funktionen deklariert (angegeben) werden Problem: Zuordnung einer mathematischen Funktion für rekursiv definierte Programmfunktionen ist nicht trivial Beschreibung der Semantik von rekursiven Funktionen durch Verwendung von Induktionsbeweisen Induktive Deutung Deutung durch Fixpunktgleichungen

3 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantikbeschreibung nicht rekursiver Funktionen zur Semantikbeschreibung von nicht rekursiven Funktionen kann die Funktionsvorschrift direkt in eine mathematische Funktion transformiert werden PROCEDURE max (a : INTEGER; b : INTEGER) : INTEGER = BEGIN IF a > b THEN RETURN a ELSE RETURN b END; END max; Semantikfunktion: afalls a > b max :  x Z  Z mit max(a, b) = bsonst

4 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantikbeschreibung rekursiver Funktionen Problem: Direkte Transformation der Funktionsvorschrift führt zu einer rekursiven Funktionsdefinition PROCEDURE fac (a: INTEGER): INTEGER= (* a  0 *) BEGIN IF a = 0 THEN RETURN 1 ELSE RETURN a * fac(a-1) END; END fac Semantikfunktion: 1, falls a = 0 fac : N x N  N mit fac(a) = a * fac(a-1),sonst

5 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik rekursiver Funktionen: Induktionsbeweise Semantikbestimmung für rekursive Funktionen kann durch Induktionsbeweise (vollständige Induktion/Terminduktion) durchgeführt werden PROCEDURE fac (a: INTEGER): INTEGER= (* a  0 *) BEGIN IF a = 0 THEN RETURN 1 ELSE RETURN a * fac(a-1) END; END fac Semantikfunktion: fac : N x N  N mit fac(a) = a!

6 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik rekursiver Funktionen: Induktive Deutung aus einer Funktionsvorschrift f wird ein Funktional  abgeleitet, mit dem induktiv eine Funktionsfolge aufgebaut werden kann f 0  f 1  f 2  f 3  für die Funktionen f i der Folge gilt: alle Funktionen beschreiben die gesuchte Semantikfunktion für einen immer mehr erweiterten Definitionsbereich Definitionsbereich von f i+1 ist größer als der von f i aus der Folge von Funktionen wird eine Funktion f  konstruiert, die zur Semantikbeschreibung herangezogen werden kann

7 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Induktive Deutung: Fakultätsfunktion PROCEDURE fac (a: INTEGER): INTEGER= (* a  0 *) BEGIN IF a = 0 THEN RETURN 1 ELSE RETURN a * fac(a-1) END; END fac fac 1 (0) = 1 fac 2 (0) = 1 fac 3 (0) = 1  fac 2 (1) = 1 * fac 1 (0) fac 3 (1) = 1 * fac 2 (0) fac 1 :{0}  N  fac 3 (2) = 2 * fac 2 (1) fac 1 (0) = 1 fac 2 :{0, 1}  N  fac 2 (0) = 1 fac 3 :{0, 1, 2}  N fac 2 (1) = 1 fac 3 (0) = 1 fac 3 (1) = 1 fac 3 (2) = 2

8 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Induktive Deutung: Fakultätsfunktion (Beobachtung) die in der Funktionsfolge enthaltenen Funktionen können durch folgende induktive Konstruktion beschrieben werden 1falls a = 0 fac i+1 (a) = a * fac i (a-1) sonst in der Funktionsfolge ist fac i+1 immer um ein Element mehr definiert als fac i jedes Element der Funktionsfolge fac i+1 berechnet für einen eingeschränkten Definitionsbereich die Fakultätsfunktion ! hinsichtlich der Definiertheit ist die Fakultätsfunktion ! eine obere Schranke und gibt somit die Semantikfunktion für die Funktionsvorschrift an

9 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Mathematische Grundlagen: Nichtdefiniertheit zur Vereinheitlichung der Definitionsmengen der Funktionen in den Funktionsfolgen wird das Element  („Bottom“) eingeführt das spezielle Element  steht mathematisch für die Nichtdefiniertheit von Funktionswerten alle im folgenden verwendeten mathematischen Mengen sollen das Element  enthalten auf alle mathematischen Mengen M definieren wir eine ausgezeichnete Funktion , die für jede Eingabe den Wert  liefert  : M  M mit  (m) =  für alle m  M

10 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Mathematische Grundlagen: Nichtdefiniertheit auf einer Menge M kann nun durch x1  x2 gdw. x1=   x1 = x2 für x1, x2  M eine partielle Ordnung definiert werden durch elementweisen Vergleich der Resultatswerte kann die Ordnung  genutzt werden, um eine vergleichbare partielle Ordnung  auf Abbildungen f,g: N  M zu definieren f  g gdw.  x  N: f(x)  g(x) (gilt f  g dann sagen wir f ist weniger definiert als g)

11 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS falls a = 0 fac 1 (a) =  sonst 1 falls a = 0 oder a = 1 fac 2 (a) =  sonst 1 falls a = 0 oder a = 1 fac 3 (a) = 2falls a = 2  sonst Es gilt: fac 1  fac 2  fac 3 .... Beispiel: Nichtdefiniertheit der Fakultätsfunktionen fac i

12 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Induktive Deutung: Funktional  zur allgemeinen Konstruktion der Funktionsfolge wird bei der induktiven Deutung ein mathematisches Funktional verwendet für die rekursive Funktion PROCEDURE f (x: Type): RType = BEGIN fBody END f; seien M und N die mathematischen Mengen auf die Parameter- und Ergebniswerte von f abgebildet werden, dann ist das zu f gehörige Funktional  definiert als eine Abbildung  : (M  N)  (M  N), mit eval(fBody[f  g, x  a])falls a    [g](a) =  sonst

13 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Beispiel: Funktional  für die Fakultätsfunktion PROCEDURE fac (x: INTEGER): INTEGER= (* x  0 *) BEGIN IF x = 0 THEN RETURN 1 ELSE RETURN x * fac(x-1); END; END fac; Dann ist:  : (N  N)  (N  N), mit  falls a =   [g](a) = 1falls a = 0 a * g(a -1)sonst

14 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Induktiver Aufbau der Folge von Funktionen mit Hilfe von  wird nun induktiv eine Folge von Funktionen f i : M  N durch die Gleichungen (für alle x  M) definiert: f 0 (x) =  (x) =  f i+1 (x) =  [f i ](x) die Folge ist ausschließlich durch die iterative Anwendung des Funktionales  auf f 0 =  gegeben, d.h. es gilt fi =  i [f 0 ] =  i [  ]

15 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Beispiel: Induktiv aufgebaute Folge der Fakultätsfunktion PROCEDURE fac (x: INTEGER): INTEGER= (* x  0 *) BEGIN IF x = 0 THEN RETURN 1 ELSE RETURN x * fac(x-1) END; END fac; Für die Funktionen fac i in der Folge gilt:  falls a=   a > i - 1 fac i (a) = a!sonst

16 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Induktive Deutung: Semantikfunktion f  Problem: Die induktiv unter Verwendung des Funktionales  aufgebaute Folge fi, i  N, ist unendlich Beobachtung: Für die Funktionen der Folge fi, i  N, gilt:  i  N: f i  f i+1 unter Verwendung der Folge fi, i  N, lässt sich eine eindeutige Funktion f  konstruieren, mit  falls für alle i  N: f i (x) =  f  (x) = f j (x)falls es existiert j  N: f j (x)   f  ist bzgl.  eine obere Schranke für die Folge fi, i  N, (d.h. für alle i  N gilt fi  f  ) und damit ist f  die gesuchte Semantikfunktion

17 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Beispiel: Semantikfunktion fac  für die Fakultät Funktionsfolge fac i, i  N: fac 0  fac 1  fac 2  fac 3   falls a=   a > i - 1 fac i (a) = a!sonst Semantikfunktion fac  ist dann gegeben durch  falls für alle i  N: fac i (x) =  fac  (x) = a!falls es existiert j  N: fac j (x)    falls x =  = a!sonst

18 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Fixpunktdeutung: Fakultätsfunktion für die Funktionsfolge fac i, i  N, suchen wir eine ausgezeichnete Funktion f so, dass für die Funktionsfolge gilt: fac 0  fac 1  fac 2  fac 3   f  f  f  f  für eine solche Funktion f muss das Funktional  als Eingabe für f wieder die Funktion f als Ausgabe liefern  [f](a) = f(a) für alle a  N. da sich die Funktionsfolge für eine derartige Funktion nicht mehr ändern wird, hätten wir eine Funktion gefunden für die gilt: fac i  f für alle i  N. f wäre also eine obere Schranke bzgl.  und somit eine Semantikfunktion für die rekursive Funktionsvorschrift

19 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Rekursive Funktionen: Fixpunktdeutung bei der Fixpunktdeutung einer rekursiven Funktion werden Abbildungen g gesucht, derart das gilt:  [g]=g (  x  M:  [g](x)=g(x)) (g wird Fixpunkt von  genannt) semantische Bedeutung einer Rekursion ist durch den kleinsten Fixpunkt g von  gegeben ist das Funktional  monoton und stetig, so kann gezeigt werden, dass f  immer der kleinste Fixpunkt von  ist Anmerkung: In den von uns zur funktionalen Programmierung herangezogenen Programmiersprachen (Modula-3, Scheme) ist ein abgeleitetes Funktional  immer monoton und stetig.


Herunterladen ppt "Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS 2002 1 Semantik funktionaler Programme."

Ähnliche Präsentationen


Google-Anzeigen