Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Clemens Küchler Geändert vor über 8 Jahren
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.
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.