Technische Universität München Institut für Informatik Prof. Manfred Broy Dr. K. Spies, Dr. M. Kuhrmann, Dr. W. Sitou, L. Heinemann, D. Thoma SS 2009 9. Juli 2008 Übungsblatt 9 Übungen zu Grundlagen der Programm- und Systementwicklung“ ” Aufgabe 1 Funktionen höherer Stufe Seien die Funktionen f , g und add gegeben: f : ((N at → N at), N at → Bool), Bool → (N at → N at) g : (N at → Bool), (N at → N at → Bool) → Seq α → Bool add : (N at → N at) → N at (a) Welche Stufen haben diese funktionalen Sorten? (b) Besprechen Sie die Anwendungen der curry-Funktion zu den Funktionen f , g und add. Auf welche der Funktionen kann die curry-Funktion angewandt werden bzw. wann macht eine solche Anwendung überhaupt Sinn? Aufgabe 2 Funktionen höherer Stufe und Unterspezifikation Schreiben Sie eine Sortierfunktion für eine Liste mit folgenden Eigenschaften: Der Typ der Listenelemente ist unterspezifiziert. Die Eigenschaft, nach der die Liste sortiert sein soll, ist unterspezifiziert. 1 Aufgabe 3 Rekursive Funktionen auf unendlichen Sequenzen Gegeben sei eine unendliche Sequenz von natürlichen Zahlen, dargestellt als eine Funktion Nat → Nat. (Diese Funktion bildet die Position in der Sequenz auf den Eintrag ab.) Wir definieren die Funktion search, die das erste Vorkommen einer gegebener Zahl in der Sequenz findet: fct search = (x : Nat, seq: Nat -> Nat) Nat: search_from_index (x, seq, 0); fct search_from_index (x : Nat, seq: Nat -> Nat, start : Nat) Nat: if (seq(start)=x) then start else search_from_index (x, seq, start+1) fi; (a) Stellen Sie die Funktionen search from index0 , search from index1 , search from index2 , . . . auf, die die Funktion search from index approximieren. (b) Stellen Sie eine Hypothese auf, wie der Grenzwert search from index∞ aussieht. (c) Beweisen Sie, dass dieser Grenzwert tatsächlich der kleinste Fixpunkt ist. (d) Für welche Werte der Eingabeparameter terminiert die Funktion? Stellen Sie für diese Werte eine Abstiegsfunktion auf und beweisen Sie, dass es sich dabei tatsächlich um eine Abstiegsfunktion handelt. 2