Entwicklung korrekter Programme in Coq. Thomas Strathmann
|
|
|
- Michaela Holzmann
- vor 8 Jahren
- Abrufe
Transkript
1 Entwicklung korrekter Programme in Coq Thomas Strathmann
2 Überblick Teil 1 Was ist Coq? Theoretische Grundlagen Programmierung, Spezifikation, Beweise in Coq Teil 2 Vorstellung der Arbeit Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache in Coq 2
3 Coq interaktiver, taktischer, typtheoretischer Theorembeweiser Basis: Kalkül der induktiven Konstruktionen abhängig getypter Lambda-Kalkül konstruktive Typtheorie + induktive Definitionen Programmextraktion 3
4 Getypter Lambda-Kalkül Formalismus zur Beschreibung berechenbarer Funktionen Grundlage vieler funktionaler Sprachen Terme: jeder Term hat einen Typ: x : T Konstanten und Variablen Funktionsanwendung: (F G) T 1 T 2 Abstraktion: λx : T 1.M: T 2 4
5 Konstruktive Typtheorie Konstruktive Semantik von Beweisen (Brouwer, Heyting, Kolmogorow) Aussage ist eine Aufgabe; Beweis ist ein Verfahren zum Lösen der Aufgabe Typtheorie: Aussage ist Typ ihres Beweises P ist wahr, gdw. man einen Term t : P konstruieren kann t heißt Beweisterm für P 5
6 Curry-Howard Korrespondenz Beweisbarkeit der Aussage P Ableitbarkeit von P in einem Kalkül Existenz eines Terms vom Typ P Ableitungen in einem Kalkül natürlichen Schließens für konstruktive Logik entsprechen Termen des einfach getypten Lambda-Kalküls (Howard 1969) Beispiel: Beweis für P Q ist ein Verfahren, das P einen Beweis für Q zu einem Beweis für liefert. Entspricht (λx : P.t: Q) 6
7 Typhierarchie von Coq... Type1 Type0 Set Prop... nat Z... Jedes Objekt in einer Typtheorie muss einen Typ haben. Deshalb müssen Typen selbst auch einen Typ besitzen. (Typen von Typen werden Sorten genannt.) Folglich gibt es in Coq eine unendliche Hierarchie von Typen. 7
8 Set und Prop Entsprechung zwischen Mengen (Set) und Propositionen (Prop) Terme in Set sind Spezifikationen für Programme (d.h. als Funktion realisierbar) Terme, deren Typ in Set ist, werden extrahiert Terme in Prop sind logische Aussagen Terme, deren Typ in Prop ist (= Beweise), werden bei Extraktion entfernt 8
9 Induktive Definitionen Induktive Definitionen modellieren (generalisierte) algebraische Datentypen und Relationen Beispiel: Natürliche Zahlen (Peano) Inductive nat : Set := O : nat succ : nat -> nat. 9
10 Rekursive Funktionen keine partiellen Funktionen vollständiges Pattern Matching auf Konstruktoren induktiver Datentypen nur terminierende Funktionen (syntaktische Terminierungsprüfung) Strukturelle Rekursion: ein Funktionsargument muss bei jedem rekursiven Aufruf strukturell kleiner werden; Aufruf nur mit Teilterm erlaubt 10 Strukturelle Induktion ist ein Spezialfall der fundierten Induktion (auch Noethersche Induktion genannt). Coq unterstützt auch fundierte Induktion/Rekursion für Fälle, in denen sich eine Funktion nicht strukturell rekursive ausdrücken kann. Die wesentliche Idee hierbei ist, Terminierung dadurch zu zeigen, dass ein Maß (im mathematischen Sinne eine Norm) der Argumente bei jedem rekursiven Aufruf streng monoton fallend ist, also eine absteigende Kette bildet.
11 Funktion: Beispiel Fixpoint add (n m:nat) : nat := match n with O => m succ n => add n (succ m) end. Terminierung: Rekursiver Aufruf mit strukturell kleinerem Argument n 11
12 Beweise: Grundlagen Beweisvorgang eingeleitet durch Angabe eines Beweisziels (Goal) Beispiel: Goal forall n m:nat, n+m = m+n. Kontext mit Hypothesen H 1,...,H n Ziel G werden soll, aus denen das durch Anwendung von Taktiken hergeleitet H 1 : P 1 H 2 : P 2... H n : P n G : P Die interaktiven Beweise sind insofern imperativ als sie einen Zustand, den Kontext, verändern. 12
13 Beweise: Taktiken führen Beweisschritte aus (imperativ) Programmiersprache L tac Kontrollfluss-Operationen: try, repeat, orelse, fail, idtac... Pattern Matching auf (Teiltermen von) Ziel und Hypothesen Verbesserte Wartung durch Taktiken, die robust gegenüber Änderungen der Formalisierung sind 13
14 Beweise: Beispiel Lemma add_unit_right: n:nat, add n O = n. Proof. induction n as [ n ]. Case n = O. reflexivity. Case n = succ n. simpl. rewrite IHn. reflexivity. Qed. 14
15 Relationen Relation ρ A B gdw. A ρ B als Aussage auffassen, die wahr ist Beispiel: Relation < auf natürlichen Zahlen Inductive less_than : nat nat Prop := lt_base : less_than O (succ O) lt_succ : n m : nat, less_than n m less_than (succ n)(succ m) lt_pred : n m : nat, less_than (succ n) m -> less_than n m. 15
16 Relationen (forts.) Example lt1_4: less_than (succ O) (succ (succ (succ (succ O)))). apply lt_pred. apply lt_pred. repeat apply lt_succ. apply lt_o. Qed. 16
17 Für die Haskellianer: Das Paper Faking It von Conor McBride beschreibt eine Codierung abhängiger Typen in Haskell. Abhängige Typen Mit Termen indizierte Typfamilien statische Typüberprüfung statt dynamischer Prüfung und Laufzeitfehlern Funktionstypen mit Vor- und Nachbedingungen Datentypen, deren Instanzen per constructionem Invariaten erfüllen Beispiel: längenindizierte Listen Inductive vector {A:Set} : nat! Set := Vnil : vector O Vcons : A! n : nat, vector n! vector (succ n). Abhängige Typen (dependent types) stammen aus der Typtheorie von Martin-Löf, die als Basis für die Formalisierung der gesamten konstruktiven Mathematik entwickelt wurde. Allerdings gab es die Idee der abhängigen Typen schon in der Untersuchung der Kombinatorlogik durch Curry. 17
18 Beispiel: Spezifikation Spezifkation der Funktion head: forall (A:Type) (l:list A) : Vorbedingung length l > 0 -> { l' : list A & { x : A l = x :: l' } }. Nachbedingung Eingabe: Liste l und Beweis für length l>0 Ausgabe: l und x sowie Beweis der Nachbedingung Es handelt sich um einen abhängigen Funktionstyp, da er von einem Beweis der Vorbedingung abhängt. Dieser Beweis wird (weil sein Typ in Prop ist) bei der Extraktion entfernt. Für die praktische Verwendung der Funktion schreibt man dann einen Wrapper, der nur das Head-Element x zurückliefert, nicht aber die Liste l. 18
19 Beispiel: Beweis Definition head (A:Type) (l:list A) : length l > 0 -> { l' : list A & { x : A l = x :: l' } }. intros. induction l. contradict H. compute. intros. inversion H. exists l. exists a. reflexivity. Qed. 19
20 Ende Teil 1 Fragen soweit? 20
21 Implementierung eines korrekten Übersetzers Formale Methoden wertlos, wenn Übersetzer fehlerhaft Compilerverifikation noch sehr aufwändig Beispiel: CompCert: Zeilen Coq (14% Compiler, 10% Semantik, 76% Beweis) rein-funktionale Sprachen haben einfacherere Semantik => besser geeignet für eine Diplomarbeit 21
22 Entscheidungen Quellsprache: Syntax und Semantik Welche Sprache? Termrepräsentation in Coq? Zielarchitektur Maschinenmodell Übersetzung Welche Art Semantik? Wie formalisieren? 22
23 Vorgehen Formalisieren der Quellsprache interessante Punkte: Implementierung der Zielarchitektur Implementierung der Übersetzungsschritte Korrektheitsbeweis: Übersetzung erhält Semantik Automatisierung der Beweise Auswirkung von Semantik und Termrepräsentation 23
24 Vielen Dank für die Aufmerksamkeit! Fragen/Anregungen? 24
Entwicklung eines korrekten Übersetzers
Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung
Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen
Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist
Grundlagen der Programmierung 2. Operationale Semantik
Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung
Intuitionistische Lineare Logik
Lineare Logik Intuitionistische Lineare Logik Zusammenhang zur intuitionistischen Logik Termzuweisung und funktionale Interpretation Intuitionistische Lineare Logik Sinn und Zweck : Kontrolle über Ressourcen
1. Typen 1.1 Typsicherheit 1.2 Typprüfung
1. Typen 1.1 Typsicherheit 1.2 Typprüfung Ein Typsystem ist ein praktikables, syntaktisches Verfahren, mit dem man die Abwesenheit gewisser Laufzeit-Eigenschaften eines Programms beweisen kann, indem man
Abschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.
4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit
Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen
Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen Anforderungen durch Logiken Modellierung zusammenhängender
Theorembeweiser und ihre Anwendungen
Theorembeweiser und ihre Anwendungen Prof. Dr.-Ing. Gregor Snelting Dipl.-Inf. Univ. Daniel Wasserrab Lehrstuhl Programmierparadigmen IPD Snelting Universität Karlsruhe (TH) IPD Snelting, Uni Karlsruhe
Mehrsortige Strukturen
Was bisher geschah Modellierung von Daten durch Mengen (Individuenbereiche), häufig zusammengesetzt durch Mengenoperationen, Zusammenhängen zwischen Individuen durch Relationen (auch Eigenschaften) Funktionen
Induktion und Rekursion
Induktion und Rekursion Induktion und Rekursion Vorkurs Informatik Theoretischer Teil WS 013/14. Oktober 013 Vorkurs Informatik WS 013/14 1/1 Vollständige Induktion Vorkurs Informatik WS 013/14 /1 Ziel
Der einfach getypter Lambda-Kalkül
Der einfach getypter Lambda-Kalkül Typprüfung und Typinferenz Tobias Nipkow und Steffen Smolka Technische Universität München 1 Einleitung 2 Explizit getypter λ-kalkül 3 Implizit getypter λ-kalkül Statische
Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation
Grundlagen der Programm- und Systementwicklung Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Technische Universität München Institut für Informatik Software &
THEORETISCHE INFORMATIK UND LOGIK
Prädikatenlogik als Universalsprache Die Entwicklung der Logik hat ein zentrales Motiv: Logik als eine universelle, präzise Sprache THEORETISCHE INFORMATIK UND LOGIK 15. Vorlesung: Logisches Schließen
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen - 1 -
n 1. Der Begriff Informatik n 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik n "Informatik" = Kunstwort aus Information
Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I λ Kalkül WS 2012/2013 Berechenbarkeit - inspiriert durch Hilbert's Frage - im Jahr 1900, Paris - Internationaler Mathematikerkongress Gibt es ein System von Axiomen, aus denen alle Gesetze der Mathematik
GTI. Hannes Diener. 18. Juni. ENC B-0123,
GTI Hannes Diener ENC B-0123, [email protected] 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.
Was ist mathematische Logik?
Was ist mathematische Logik? Logik untersucht allgemeine Prinzipien korrekten Schließens Mathematische Logik stellt zu diesem Zweck formale Kalküle bereit und analysiert die Beziehung zwischen Syntax und
Unentscheidbarkeitssätze der Logik
Unentscheidbarkeitssätze der Logik Elmar Eder () Unentscheidbarkeitssätze der Logik 1 / 30 Die Zahlentheorie ist nicht formalisierbar Satz (Kurt Gödel) Zu jedem korrekten formalen System der Zahlentheorie
Funktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
Philosophie des Intuitionismus und sein Einfluß auf die Informatik
Philosophie des Intuitionismus und sein Einfluß auf die Informatik Christoph Kreitz Was ist Intuitionismus? Unterschiede zur klassischen Mathematik Historische Entwicklung Bezüge zur Informatik Ähnlichkeit
Übersicht Formale Semantik. Übersicht Axiomatische Semantik. Inhaltsübersicht HPS WS 2003/04. Vorlesung Höhere Programmiersprachen,
Vorlesung Höhere Programmiersprachen, WS 2003/04 Teil 2: Formale Semantik Axiomatische Semantik Inhaltsübersicht - Grundlagen (1,2) - Konzepte imperativer Programmiersprachen (2,3) - Deklarative Programmiersprachen
mathematik und informatik
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
3. Klausur Einführung in die Theoretische Informatik Seite 1 von Welches der folgenden klassischen Probleme der Informatik ist entscheidbar?
3. Klausur Einführung in die Theoretische Informatik Seite 1 von 14 1. Welches der folgenden klassischen Probleme der Informatik ist entscheidbar? A. Gegeben eine kontextfreie Grammatik G. Gibt es ein
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -
1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik
Inferenzmethoden. Einheit 18. Logik höherer Stufe
Inferenzmethoden Einheit 18 Logik höherer Stufe 1. Syntax und Semantik 2. Simulation mathematischer Konstrukte 3. Beweisführung in Logik höherer Stufe Logik höherer Stufe Logik erster Stufe hat nur einfache
Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):
Was bisher geschah deklarative Programmierung funktional: Programm: Menge von Termgleichungen, Term Auswertung: Pattern matsching, Termumformungen logisch: Programm: Menge von Regeln (Horn-Formeln), Formel
{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel
Inhalt Hoare-Kalkül Formale Verifizierung Hoare-Kalkül while-sprache Terminierung Partielle / totale Korrektheit 4.0 Hoare-Kalkül entwickelt von C.A.R. (Tony) Hoare (britischer Informatiker), 1969 formales
Funktionale Programmierung ALP I. µ-rekursive Funktionen WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda
ALP I µ-rekursive Funktionen WS 2012/2013 Primitiv-rekursive Funktionen Jede primitiv-rekursive Funktion ist Loop-berechenbar. Das bedeutet, dass jede PR-Funktion in der Loop-Programmiersprache formuliert
Funktionale Programmierung Einführung
Einführung Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 13.09.2017 15:29 Inhaltsverzeichnis Was ist imperative Programmierung.......................
III.1 Prinzipien der funktionalen Programmierung - 1 -
1. Prinzipien der funktionalen Programmierung 2. Deklarationen 3. Ausdrücke 4. Muster (Patterns) 5. Typen und Datenstrukturen 6. Funktionale Programmiertechniken III.1 Prinzipien der funktionalen Programmierung
Diskrete Strukturen Kapitel 2: Grundlagen (Beweise)
WS 2014/15 Diskrete Strukturen Kapitel 2: Grundlagen (Beweise) Hans-Joachim Bungartz Lehrstuhl für wissenschaftliches Rechnen Fakultät für Informatik Technische Universität München http://www5.in.tum.de/wiki/index.php/diskrete_strukturen_-_winter_14
Vorsemesterkurs Informatik
Vorsemesterkurs Informatik Vorsemesterkurs Informatik Mario Holldack WS2015/16 30. September 2015 Vorsemesterkurs Informatik 1 Einleitung 2 Aussagenlogik 3 Mengen Vorsemesterkurs Informatik > Einleitung
Einführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 2017/18 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
Einführung in die Programmierung
Einleitung Gliederung Einführung in die Programmierung Wintersemester 08/09 Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering
Workshop Einführung in die Sprache Haskell
Workshop Einführung in die Sprache Haskell Nils Rexin, Marcellus Siegburg und Alexander Bau Fakultät für Informatik, Mathematik und Naturwissenschaften Hochschule für Technik, Wirtschaft und Kultur Leipzig
Einführung in die Programmierung Wintersemester 2016/17
Einführung in die Programmierung Wintersemester 2016/17 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Einleitung Gliederung Zum Begriff Informatik Zum
Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Sommersemester
Mathematische Logik, Grundlagen der Mathematik. Helmut Schwichtenberg Mathematisches Institut, Ludwig-Maximilians-Universität
Mathematische Logik, Grundlagen der Mathematik Helmut Schwichtenberg Mathematisches Institut, Ludwig-Maximilians-Universität München 1 Vorlesungen Mathematische Logik I, II Beweistheorie Rekursionstheorie
Sudoku. Warum 6? Warum 6?
. / Sudoku Füllen Sie die leeren Felder so aus, dass in jeder Zeile, in jeder Spalte und in jedem x Kästchen alle Zahlen von bis stehen.. / Warum?. / Warum?. / Geschichte der Logik Syllogismen (I) Beginn
Einführung in die mathematische Logik
Prof. Dr. H. Brenner Osnabrück SS 2014 Einführung in die mathematische Logik Vorlesung 14 Die Korrektheit des Ableitungskalküls Im Laufe der Einführung des syntaktischen Prädikatenkalküls haben wir gesehen,
Logik I. Symbole, Terme, Formeln
Logik I Symbole, Terme, Formeln Wie jede geschriebene Sprache basiert die Prädikatenlogik erster Stufe auf einem Alphabet, welches aus den folgenden Symbolen besteht: (a) Variabeln wie zum Beispiel v 0,v
Was bisher geschah Modellierung in Logiken: klassische Prädikatenlogik FOL(Σ, X) Spezialfall klassische Aussagenlogik AL(P)
Was bisher geschah Modellierung in Logiken: klassische Prädikatenlogik FOL(Σ, X) Spezialfall klassische Aussagenlogik AL(P) Syntax Semantik Signatur, Variablen Terme (induktive Definition, Baumform) Atome
Logik für Informatiker
Vorlesung Logik für Informatiker 2. Induktion Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Induktion Zentrale Rolle Wesentliches Beweisprinzip in Mathematik
Grundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
Godehard Link COLLEGIUM LOGICUM. Logische Grundlagen der Philosophie und der Wissenschaften. Band 1. mentis PADERBORN
Godehard Link COLLEGIUM LOGICUM Logische Grundlagen der Philosophie und der Wissenschaften Band 1 mentis PADERBORN Inhaltsverzeichnis Vorwort xiii Einleitung 1 0.1 Historisches zum Verhältnis von Logik
Theoretische Informatik II
Theoretische Informatik II Dr. Eva Richter / Holger Arnold Universität Potsdam, Theoretische Informatik, Sommersemester 2008 Übungsblatt 3 (Version 4) Abgabetermin: 13.5.2008, 12.00 Uhr Der λ-kalkül Da
Programmiersprachen: Klassifizierung und Methoden. Programmier-Paradigmen. Grundlagen der Programmierung 2 (1.C) - 1 -
Programmiersprachen: Klassifizierung und Methoden Programmier-Paradigmen Grundlagen der Programmierung 2 (1.C) - 1 - Programmiersprachen: Begriffe Syntax Beschreibung der Programme als Texte let xyz =
Logik für Informatiker
Vorlesung Logik für Informatiker 1. Einführung Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Formale Logik Ziel Formalisierung und Automatisierung rationalen
Einführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Maximilian Haslbeck Fabian Mitterwallner Georg Moser David Obwaller cbr.uibk.ac.at Zusammenfassung der letzten LVA Definition Eine Registermaschine (RM) R ist
Programmierung Paradigmen und Konzepte
Programmierung Paradigmen und Konzepte Mit 79 Bildern, 85 Beispielen, 130 Aufgaben und Kontrollfragen und 19 Referatsthemen Fachbuchverlag Leipzig im Carl Hanser Verlag 1 Einführung und Überblick 11 1.1
Automatische induktive Beweise und ein System dazu
Automatische induktive Beweise und ein System dazu System VeriFun Arbeitsgruppe von Prof. Dr. Christoph Walther, TU Darmstadt beweist (induktive) Sätze über Eigenschaften von Funktionen einer strikten
Kapitel 1: Einleitung. Gliederung. Zum Begriff Informatik Zum Begriff Algorithmus Zum Begriff Programmieren
Kapitel 1: Einleitung Wintersemester 2006/07 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Gliederung Zum Begriff Informatik
Theoretische Informatik I
Theoretische Informatik I Rückblick Theoretische Informatik I 1. Mathematische Methoden 2. Reguläre Sprachen 3. Kontextfreie Sprachen Themen der Theoretischen Informatik I & II Mathematische Methodik in
Gliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
Strukturelle Rekursion und Induktion
Kapitel 2 Strukturelle Rekursion und Induktion Rekursion ist eine konstruktive Technik für die Beschreibung unendlicher Mengen (und damit insbesondere für die Beschreibung unendliche Funktionen). Induktion
ALP I Turing-Maschine
ALP I Turing-Maschine Teil I WS 2012/2013 Äquivalenz vieler Berechnungsmodelle Alonzo Church λ-kalkül Kombinatorische Logik Alan Turing Turing-Maschine Mathematische Präzisierung Effektiv Berechenbare
Haskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen
Rev. 1152 1 [23] Praktische Informatik 3: Einführung in die Funktionale Programmierung Vorlesung vom 10.11.2010: Rekursive Datentypen Christoph Lüth & Dennis Walter Universität Bremen Wintersemester 2010/11
Collegium Logicum - Logische Grundlagen der Philosophie und der Wissenschaften Link
Collegium Logicum - Logische Grundlagen der Philosophie und der Wissenschaften Band 1 von Godehard Link 1. Auflage Collegium Logicum - Logische Grundlagen der Philosophie und der Wissenschaften Link schnell
Programmieren für Fortgeschrittene
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme Wintersemester 2011/12 Programmieren für Fortgeschrittene Rekursive Spezifikationen Die folgende
Kapitel 4: Formale Verifikation
Kapitel 4: Formale Verifikation Inhalt 4.1 Grundlagen 4.2 Verifikation auf axiomatischer Basis 4.3 Verifikation einzelner Eigenschaften 4.4 Stärken und Schwächen formaler Verifikation Schlüsselbegriffe
Programmiersprachen. Organisation und Einführung. Berthold Hoffmann. Studiengang Informatik Universität Bremen
Organisation und Einführung Studiengang Informatik Universität Bremen Sommersemester 2010 (Vorlesung am Montag, der 12. April 2010) (Montag, der 12. April 2008) 1 Vorstellung 2 Organisation 3 Einführung
Programmieren in Haskell Programmiermethodik
Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs
Gert Smolka Universität des Saarlandes
Was ist Logik? Gert Smolka Universität des Saarlandes 25. Januar 2010 Logik ist die Lehre des vernünftigen Schlussfolgerns. Logik untersucht die Gültigkeit von Argumenten hinsichtlich ihtlih ihrer Struktur
