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

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Vorlesung Compilertechnik Sommersemester 2008
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
6. Regelbasierte Systeme
Claudio Moraga; Gisbert Dittrich
Prof. Dr. W. Conen 15. November 2004
Rekursionen Erstellt von J. Rudolf im November 2001 /
8. Formale Sprachen und Grammatiken
Finale Semantik und beobachtbares Verhalten
3. Berechenbarkeit Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar? Intuitiv: Wenn es einen Algorithmus gibt, der sie berechnet! Was heißt,
Puck eine visuelle Programmiersprache für die Schule
REKURSION + ITERATION.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Algorithmentheorie 04 –Hashing
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Kapitel 5 Stetigkeit.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Rekursion Richard Göbel.
Visualisierung funktionaler Programme
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Einführung in die Programmierung
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/ /23.1.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
2.4 Rekursion Klassifikation und Beispiele
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Algorithmen und Datenstrukturen Übungsmodul 8
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Arne Vater Wintersemester 2006/ Vorlesung
Das Traveling Salesman Problem (TSP)
SFZ FN Sj. 13/14 Python 3 Rekursion Inf K1/2 Sj 13/14
7. Formale Sprachen und Grammatiken
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 3 / 1 Algebraische Hülle und Homomorphie A = [A, F ] sei  -Algebra. Eine.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
 Sortigkeit oder Arität
Fallunterscheidung und Iteration Programmierung I Prof. Dr. Michael Löwe.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Dr. Wolfram Amme, Verifikation imperativer Programme, Informatik II, FSU Jena, SS Verifikation von imperativen Programmen.
Dr. Wolfram Amme, Grundsätze der Logikprogrammierung, Informatik II, FSU Jena, SS Grundsätze der Logikprogrammierung.
1 Grundsätze objektorientierter Programmierung. Dr. Wolfram Amme, Grundsätze objektorientierter Programmierung, Informatik II, FSU Jena, SS Objektorientierte.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
Dr. Wolfram Amme, Funktionale Programmierung, Informatik II, FSU Jena, SS Funktionale Programmierung.
REKURSION + ITERATION.
 Präsentation transkript:

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

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

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

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

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!

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

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

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

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

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)

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

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

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

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 [  ]

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

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

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

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

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.