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 2002 1 Semantik funktionaler Programme

2 Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS 2002 2 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 2002 3 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 2002 4 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 2002 5 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 2002 6 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 2002 7 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 2002 8 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 2002 9 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 2002 10 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 2002 11 1 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 2002 12 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 2002 13 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 2002 14 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 2002 15 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 2002 16 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 2002 17 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 2002 18 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 2002 19 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