mathematik und informatik

Ähnliche Dokumente
mathematik und informatik

Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom : Rekursive Datentypen

Politikwissenschaft, Verwaltungswissenschaft, Soziologie

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen

Daniela Gretz Martin Huber Nicolas Pethes. Epochen und Gattungen. kultur- und sozialwissenschaften

mathematik und informatik

mathematik und informatik

Prof. Dr. Kathrin Jonkmann. Einführung in die Pädagogische Psychologie. kultur- und sozialwissenschaften

Strukturelle Rekursion und Induktion

Einführung in das Marketing. Version 1.6

Diagnostizieren, Evaluieren und Intervenieren in schulischen und Bildungskontexten

kultur- und sozialwissenschaften

Hans-Peter Müller. Emile Durkheim. kultur- und sozialwissenschaften

Erläuterungen. Grundlagen der Leistungserstellung. Übersichtsdiagramm. Internes Rechnungswesen und funktionale Steuerung

Kurseinheit 1 Einführung und mathematische Grundlagen Aussagenlogik

Jane Hergert Bernd Marcus. Methoden und Verfahren der Berufseignungsdiagnostik. kultur- und sozialwissenschaften

SIX SIGMA TEIL 3: DIE MEASURE PHASE DMAIC MARTIN ZANDER. Green Belt Level

kultur- und sozialwissenschaften

Vorkurs: Mathematik für Informatiker

Algorithmen und Programmierung

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

Institut für Wirtschaftswissenschaftliche Forschung und Weiterbildung GmbH Institut an der FernUniversität in Hagen. IWW Studienprogramm

kultur- und sozialwissenschaften

kultur- und sozialwissenschaften

Teil 7: Rekursion; Imperative Programme

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation

Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen:

Vollständige Induktion

Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie

kultur- und sozialwissenschaften

Grundbegriffe der Informatik

Informatik I Tutorium WS 07/08

Das kosmische Gesetz

kultur- und sozialwissenschaften

Einführung in die Informatik 2

Programmieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10.

Donnerstag, 11. Dezember 03 Satz 2.2 Der Name Unterraum ist gerechtfertigt, denn jeder Unterraum U von V ist bzgl.

Interdisziplinäres Fernstudium Umweltwissenschaften - infernum. Reader: Statistik in den Umweltwissenschaften.

kultur- und sozialwissenschaften

Linie und Prägnanz: Wurst vs. Winkel

Wahrscheinlichkeitsrechnung und Statistik downloaded from by on August 7, For personal use only.

Grundbegriffe der Informatik

9 Algebraische Datentypen

Einführung in die Praktische Philosophie

4 Terme und Σ-Algebren

kultur- und sozialwissenschaften

Vollständige Induktion. Analysis I. Guofang Wang. Universität Freiburg

Zentralübung zur Vorlesung Diskrete Strukturen (Prof. Mayr)

Theorembeweiser und ihre Anwendungen

expr :: Expr expr = Mul (Add (Const 3) (Const 4)) (Div (Sub (Const 73) (Const 37)) (Const 6))

5. Induktive Strukturen und Induktion

Supply-Chain-Management

Allgemeines Halteproblem Hilberts 10. Problem

4. Induktives Definieren - Themenübersicht

Skript und Übungen Teil II

sicherheitsmaßnahmen schweißen

For personal use only.

DIN EN ISO 9001 : 2015 UMSETZEN. Pocket Power ANNI KOUBEK. Herausgegeben von Gerd F. Kamiske

Frank Hillebrandt. Einführung in soziologische Denkweisen

fi fi fi fi fi fi fi fi

Funktionale Programmierung Grundlegende Datentypen

Beweistechnik: Beweise in Bezug auf Mengen. Formale Methoden 2 LVA , Beweistechnik: Widerspruchsbeweise. Satz R (S T ) = (R S) (R T )

Entwicklung korrekter Programme in Coq. Thomas Strathmann

2010 Migräne Sagen Sie auf Wiedersehen! Martin Zander

Logik für Informatiker

Induktion und Rekursion

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 13 (Queues, Binary Search)

SWP Funktionale Programme

Initiative Tierwohl Geflügel

Quantitative Forschung in der Sozialstrukturanalyse

Lösungen zum 9. Übungsblatt zur Vorlesung Höhere Mathematik II für biw/ciw/mach/mage/vt

Einführung in die Algebra

Frage, Fragen und nochmals Fragen

Kapitel 1. Erste algebraische Strukturen. 1.2 Ringe und Körper

Lösung Probeklausur Informatik I

M. Zander. Hand Reflexologie. Selbstbehandlung leicht gemacht

Programmierung und Modellierung

ALP I Induktion und Rekursion

LEAN MANUFACTURING. Teil 3 Lean Werkzeuge. Ein Quick Guide für den schnellen Einstieg in die Möglichkeiten der Lean Philosophie.

Höhere Mathematik I für die Fachrichtung Informatik. Lösungsvorschläge zum 4. Übungsblatt

FORMULIEREN VON AUSSAGEN KONSTANTEN VARIABLEN MENGEN DEFINITIONEN SÄTZEN BEWEISEN LOGIK VERSTEHE, WIE ES FUNKTIONIERT

TEIL 5: DIE IMPROVE PHASE

f ist eine Funktion und für alle bis. auf endlich viele h H gilt f(h) = 0

Formale Grundlagen 2008W. Vorlesung im 2008S Institut für Algebra Johannes Kepler Universität Linz

Wie kommen wir in die Zeitung?

Technische Informatik - Eine Einführung

Einführung in die Theoretische Informatik

Prüfprozesseignung nach VDA 5 und ISO

Mathematik und Logik

11 Fallstudie: Reguläre Ausdrücke

Formale Grundlagen der Informatik 1 Kapitel 19. Syntax & Semantik

1 Der Satz von Poincaré-Birkhoff-Witt. 2 Die freie Algebra. 3 Die universell einhüllende Algebra

Reduktion / Hilberts 10. Problem

Entwicklung eines korrekten Übersetzers

5. bis 10. Klasse. Textaufgaben. Alle Themen Typische Aufgaben

Grundkurs Mathematik I

Die Reduktion Hilberts 10. Problem

Einführung in die mathematische Logik

3 Vom Zählen zur Induktion

Die Kunst des Fragens 4. Auflage

Transkript:

Prof. Dr. Martin Erwig Kurs 01852 Fortgeschrittene Konzepte funktionaler Programmierung LESEPROBE mathematik und informatik

Das Werk ist urheberrechtlich geschützt. Die dadurch begründeten Rechte, insbesondere das Recht der Vervielfältigung und Verbreitung sowie der Übersetzung und des Nachdrucks bleiben, auch bei nur auszugsweiser Verwertung, vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder ein anderes Verfahren) ohne schriftliche Genehmigung der FernUniversität reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.

64 3 Verifikation und Programm-Transformation Setzt man dieses Ergebnis in die Gleichung (3.2) ein, so erhält man power (x,n) = x * x n 1 = x n womit der Satz bewiesen ist. 3.1.2 Strukturelle Induktion auf Datentypen Die Gültigkeit der beiden Induktionsverfahren aus dem vorigen Abschnitt ergibt sich aus der induktiven Definition der natürlichen Zahlen: 1. 0 IN 2. n IN (suc(n) IN suc(n) 0) 3. IN enthält keine weiteren Elemente. Das heißt, die natürlichen Zahlen kann man auch als freie 1 Termalgebra über der Konstanten 0 : IN und der Operation suc : IN IN auffassen. Ebenso sind ML-Datentypen nichts anderes als freie Termalgebren zumindest gilt dies für solche Datentypen, die keine Funktionstypen enthalten. Ein ML-Datentyp gemäß der folgenden Form (alle τ ij seien konstante Typen) datatype (α 1,...,α k ) type = con 1 of τ 11 *... * τ 1m1... con n of τ n1 *... * τ nmn definiert eine freie Algebra von Termen des Typs (α 1,...,α k ) type, die über die Operationen con 1 : τ 11 *... * τ 1m1 -> (α 1,...,α k ) type... con n : τ n1 *... * τ nmn -> (α 1,...,α k ) type konstruiert werden. Für jede solche Termalgebra stellt die strukturelle Induktion ein eigenes Induktionsprinzip zur Verfügung. Im folgenden sei x ij vom Typ τ ij für 1 i n,1 j m i. Dann lautet das Prinzip der strukturellen Induktion in allgemeiner Form: Prinzip der strukturellen Induktion Falls aus der Gültigkeit von P für alle Argumente vom Typ τ eines Konstruktors die Gültigkeit von P für den entsprechenden Konstruktorterm folgt, und dies für alle Konstruktoren des Typs τ, so folgt daraus die Gültigkeit der Aussage P für alle Elemente des Typs τ. 1 Das bedeutet, daß alle Terme verschieden sind.

3.1 Induktion 65 Als Deduktionsregel notieren wir dies: i n : ( j m i : (τ ij = (α 1,...,α k ) type P(x ij ))) P(con i (x i1,...,x imi )) x (α 1,...,α k ) type : P(x) Für Listen ergibt sich daraus das folgende Induktionsprinzip: P([]) l a list : x a : (P(l) P(x::l)) l a list : P(l) Strukturelle Induktion für Listen Im folgenden nehmen wir an, daß freie Variablen in Induktionsregeln immer typkorrekt allquantifiziert sind, das heißt, wir können die obige Regel auch kürzer notieren: P([]) (P(l) P(x::l)) P(l) (Die Quantifizierung der Schlußfolgerung ergibt sich aus der Art der Induktion, hier: Listen). Mit der Listeninduktion kann man sehr viele Eigenschaften von Listenfunktionen verifizieren. Als Beispiel wollen wir zeigen, wie sich das Spiegeln einer Liste (mit rev) bezüglich der Konkatenation von Listen (@) verhält. Zunächst geben wir die Definitionen der beiden Listenfunktionen an. 2 fun [] @ l = l (x::l ) @ l = x::(l @ l) fun rev [] = [] rev (x::l) = (rev l) @ [x] Als Zwischenschritt zeigen wir zunächst, daß die Listenkonkatenation assoziativ ist: Satz 3.3 Für beliebige Listen l 1, l 2 und l 3 gilt: (l 1 @ l 2 ) @ l 3 = l 1 @ (l 2 @ l 3 ). Beweis. Wir führen eine strukturelle Induktion über l 1 durch. (Der Linkspfeil über der Nummer einer Funktionsgleichung bezeichnet deren Anwendung von rechts nach links.) 2 Infix-Symbole wie @ werden auch auf der linken Seite von Funktionsdefinitionen infix notiert.

66 3 Verifikation und Programm-Transformation l 1 = [] Hier gilt: [] @ (l 2 @ l 3 ) = l 2 @ l 3 {@ 1 } l 1 = x::l Hier ergibt sich nun: = ([] @ l 2 ) @ l 3 {@ 1 } (x::l) @ (l 2 @ l 3 ) = x::(l @ (l 2 @ l 3 )) {@ 2 } Nun können wir den folgenden Satz beweisen: Satz 3.4 Für beliebige Listen l 1 und l 2 gilt: = x::((l @ l 2 ) @ l 3 ) {Ind.Ann.} = (x::(l @ l 2 )) @ l 3 {@ 2 } = ((x::l) @ l 2 ) @ l 3 {@ 2 } rev (l 1 @ l 2 ) = rev l 2 @ rev l 1. Beweis. Wir führen eine strukturelle Induktion über l 1 durch. l 1 = [] rev ([] @ l 2 ) = rev l 2 = rev l 2 @ [] = rev l 2 @ rev l 1. Wir haben hier die Gleichung l @ [] = l ausgenutzt. Deren Gültigkeit kann man leicht durch strukturelle Induktion über l nachweisen. l 1 = x::l Wir formen wie folgt um: rev ((x::l) @ l 2 ) = rev (x::(l @ l 2 )) {@ 2 } = rev (l @ l 2 ) @ [x] {rev 2 } = (rev l 2 @ rev l) @ [x] {Ind.Ann.} = rev l 2 @ (rev l @ [x]) {Satz 3.3} = rev l 2 @ rev (x::l) {rev 2 } Selbsttestaufgabe 4. Zeigen Sie, daß für alle Listen l und l gilt: length (l 1 @ l 2 ) = length l 1 + length l 2 Eine weitere Instanz des allgemeinen Schemas für die strukturelle Induktion ist die Induktion über Binärbäumen. Wir verwenden die Definition von Binärbäumen aus Abschnitt 1.6: datatype a tree = NODE of a * a tree * a tree EMPTY;