Strukturierte Spezifikation: Freie Datentypen

Größe: px
Ab Seite anzeigen:

Download "Strukturierte Spezifikation: Freie Datentypen"

Transkript

1 Strukturierte Spezifikation: Freie Datentypen 113

2 Wie spezifiziert man Datentypen? Vorgehen: Definiere benötigte Sorten Letzte Vorlesung: Datentypen auf Rechnern sind generiert Definiere Konstruktoren und Generiertheitsklauseln Definiere weitere Operationen und ihre Axiome Problem: Wie geeignete, richtige Axiome finden? Formal richtig : Sie sollten für den gewünschten Datentyp stimmen (keine Inkonsistenz!), und sollten ihn möglichst eindeutig charakterisieren. 114

3 Freie und nichtfreie Datentypen nat nat???? by???? by integer???? by set???? by set???? by stack???? by bintree???? by graph???? by list???? by 115

4 Freie und nichtfreie Datentypen Beobachtung: Manche Datentypen sind frei (erzeugt): Zwei verschiedene Konstruktorterme repräsentieren auch immer zwei verschiedene Elemente. nat 0, +1 nat 0,1,+ integer 0, +1, 1 set, ins set, {.}, stack empty, push bintree mkleaf, mkbranch graph, +node, +edge list [], + 115

5 Freie und nichtfreie Datentypen Beobachtung: Manche Datentypen sind frei (erzeugt): Zwei verschiedene Konstruktorterme repräsentieren auch immer zwei verschiedene Elemente. nat freely generated by 0, +1 nat generated by 0,1, = 0 integer generated by 0,+1, = 0 set generated by, ins ins(a,ins(a, )) = ins(a, ) set generated by, {.}, {a} {a} = {a} stack freely generated by empty, push bintree freely generated by mkleaf, mkbranch graph generated by, +node, +edge +node n +node n = +node n list freely generated by [], + 115

6 Axiome für freie Datentypen Beispiel: Konstante c, einstellige Funktion f, zweistellige Funktion g Verschiedenheit der Konstruktoren c, f und g: c f(x), f(x) g(y,z), c g(x,y) Injektivität der Konstruktoren: f(x) = f(y) x = y, g(x,y) = g(u,v) x = u y = v Satz: Die Spezifikation mit diesen Axiomen ist monomorph und konsistent, sie charakterisiert also genau einen Datentyp. KIV: Schreibe freely generated by, Axiome werden generiert. 116

7 Freie Erzeugtheitsklauseln Freie Erzeugtheitsklauseln A = S freely generated by C : A = S generated by C Für zwei verschiedene Terme t,t T s (C,X \ X s ) mit s S gibt es Variablenbelegungen v,v, so dass [[t]] A,v [[t ]] A,v Insbesondere sind Terme mit verschiedenen Konstruktoren immer verschieden. 117

8 Freie Datentypen (Beispiel 1) Beispiel 1: Wochentage Weekday1 = specification sorts weekday; constants Mon, Tue, Wed, Thu, Fri, Sat, Sun : weekday; induction weekday freely generated by Mon, Tue, Wed, Thu, Fri, Sat, Sun; variables w : weekday; end specification Generierte Axiome: Die Konstanten Mon, Tue, Wed,... sind paarweise verschieden: Mon Tue, Mon Wed, Mon Thu, Mon Fri,

9 Freie Datentypen (Beispiel 1) Induktionsregel für die Sorte weekday Γ Mon w Mon w... Γ Sun w Γ Sun w Beweis durch Fallunterscheidung nach dem Tag Verallgemeinerung: Aufzählungstypen 119

10 Freie Datentypen (Beispiel 2) Beispiel 2: Die natürlichen Zahlen Nat3 = specification sorts nat; constants 0 : nat; functions +1 : nat nat; variables n : nat; induction nat freely generated by 0, +1; end specification Neu: Axiome jetzt generiert. 120

11 Freie Datentypen (Beispiel 3) Beispiel 3: Paare Pair1 = specification sorts elem1; elem2; pair; functions mkpair : elem1 elem2 pair; induction pair freely generated by mkpair; variables a : elem1; b : elem2; p : pair; end specification Generiertes Axiom: mkpair(a 1,b 1 ) = mkpair(a 2,b 2 ) a 1 = a 2 b 1 = b 2 121

12 Freie Datentypen (Beispiel 3) Induktionsregel für die Sorte pair Γ mkpair(a,b) p mkpair(a,b) p Γ Expandiert Variable p zu mkpair(a, b) Verallgemeinerung: Tupel 122

13 Freie Datentypen (Beispiel 4) Beispiel 4: Listen List2 = specification sorts list, elem; functions [] : list;. +. : elem list list; variables a, b: elem; l, l 1, l 2 : list; induction list freely generated by [], +; end specification 123

14 Freie Datentypen (Beispiel 4) Generierte Axiome Spezifikation generiert: [] a + l, a + l 1 = b + l 2 a = b l 1 = l 2 Induktionsregel für die Sorte list y. Γ,Γ a+l l Γ a+l l Γ [] l [] l y = free(γ ) \ {l} 124

15 Data Specification (Motivation) Häufige Situation: Freie Erzeugbarkeit mit Konstruktoren c Selektoren, die aus c(x 1,...x n ) die x i selektieren Testprädikate ist mit Konstruktor c gebildet Ordnung: ist Unterterm von Größenfunktion: Anzahl nichtkonstanter Konstruktoren Eigenes Syntaxkonstrukt data specification vermeidet unnötige Schreibarbeit. 125

16 Data Specification (Beispiel 1) Beispiel 1: Wochentage Weekday2 = data specification weekday = Mon Tue Wed Thu Fri Sat Sun; variables w : weekday; end data specification 126

17 Data Specification (Beispiel 2) Beispiel 2: natürliche Zahlen Nat4 = data specification nat = (. 1 : nat); variables n : nat nat; order predicates. <. : nat nat; end data specification Neue Axiome: n +1 1 = n; (: 0 1 ist unspezifiziert :) n < n; m<n n<k m<k; n < 0; m < n +1 (m = n m < n) 127

18 Data Specification (Beispiel 3) Beispiel 3: Paare Pair2 = data specification using Elem1, Elem2; pair = mkpair (..1 : elem1;..2 : elem2 ) variables p : pair; end data specification Neue Axiome : mkpair(a,b).1 = a; mkpair(a,b).2 = b 128

19 Data Specification (Beispiel 3) Beispiel 4: Listen List3 = data specification using Nat, Elem; list =. +. (..first : elem;..rest : list) with consp [] with nilp; variables l : list; (: ist Unterterm für Listen = ist Endstück :) order predicates.. : list list; size functions length : list nat; end data specification 129

20 Selektoren als partielle Funktionen Problem: Was tun, wenn ein Selektor auf den falschen Summand angewandt wird? Hier: Was sind [].first und [].rest?.first und.rest sollten für [] garnicht definiert sein Partielle Funktionen In KIV: []. first und [].rest sind unspezifiziert (i. e. kein Axiom) Semantik: [].rest ist in jeder Algebra (Datenstruktur) irgendeine andere Liste Echte Implementierung muss irgendeine Liste zurückgeben Pragmatik: Formeln mit [].rest sollten nicht vorkommen. Wenn doch, muss die Sequenz ohne die Formeln beweisbar sein. Bem.: Alternativen sind möglich aber komplizierter (Fehlerelemente, echte Partialität, etc.) 130

21 Data Specification (Beispiel 3) Neue Axiome für List3: nilp([]); nilp(a + l); consp([]); consp(a + l); (a + l).first = a; (: kein Axiom für [].first :) (a + l).rest = l; (: kein Axiom für [].rest :) l []; l (a + l 1 ) l = l 1 l l 1 ; (: beweisbar, aber der Einfachheit halber generiert :) l l; l 1 l 2 l 2 l 3 l 1 l 3 ; length([]) = 0; length(a + l) = length(l) +1; 131

22 Data Specification allgemein Definition (Datendefinition) Eine Datendefinition D hat die Form (optionales in eckigen Klammern): s = c 1 (sel 1,1 : s 1,1 ;...;sel 1,n1 : s 1,n1 ) [with p 1 ]... c k (sel k,1 : s k,1 ;...;sel k,nk : s k,nk ) [with p k ]; [order predicate..;][size function sz;] Überladen: sel i,j = sel i,j erlaubt, falls s i,j = s i,j, ansonsten alle Operationen paarweise verschieden. 132

23 Eigenschaften von Data Specifications Satz: Alle Data Specifications sind immer konsistent. Sie sind immer monomorph bis auf unspezifizierte Selektoren. Intuition bei Listen ist also: Wir haben exakt den Datentyp der Listen beschrieben. Wir haben lediglich für die Realisierung auf einem Rechner offen gelassen, was für ein Element bzw. was für eine Liste [].first und [].rest zurückgeben. 133

24 Strukturierte Spezifikation: Anreicherung um nichtrekursive und rekursive Definitionen 134

25 Strukturierte Spezifikationen Motivation Spezifikationen werden sehr schnell sehr groß Strukturierung erforderlich 1. Übersichtlichkeit & Verständlichkeit 2. Wiederverwendung von Komponenten 3. Unabhängige Entwicklung von Komponenten 4. Strukturierung und Wiederverwendung von Beweisen 135

26 Strukturierte Spezifikationen in KIV KIV zeigt strukt. Spezifikationen als Spezifikationsgraph an In KIV enthält jeder Knoten neben der Spezifikation außerdem eine Theorembasis Die Theorembasis enthält eine Menge von Theoremen (Sequenzen) über der Gesamtsignatur Für jede Sequenz kann ein Beweis vorhanden sein, der zeigt, daß die Sequenz aus SP und anderen Theoremen folgt (keine zyklischen Abhängigkeiten) Theoreme aus darunterliegenden Spezifikation werden mit insert spec-lemma statt insert lemma angewandt KIV hat ein Korrektheitsmanagement, um Abhängigkeiten zwischen Beweisen zu verwalten 136

27 Strukturierte Spezifikationen: Vereinigung und Anreicherung Vereinigung Wirft Signaturen + Axiome zusammen Syntax: union specification <SPEC1> + <SPEC2> +... end union specification Zu vermeiden: Nichtdisjunkte Vereinigung (Gefahr der Inkonsistenz!) Anreicherung Addiert neue Signaturen + Axiome Syntax: enrich <SPEC1>, <SPEC2>,... with <signature> <induction> <axioms> end enrich Implizit: Ausgangsspezifikation der Anreicherung ist die Vereinigung von <SPEC1>, <SPEC2>,

28 Anreicherung: Vorgehen Neue Axiome hinzuzunehmen macht eine Spezifikation sehr schnell inkonsistent (siehe Versuch 3!) Gewünscht: Nur konsistenzerhaltende Anreicherungen Formaler Begriff: Konsistenzerhaltend = Hierarchiepersistent Neue Operationen sollten monomorphieerhaltend sein: Wenn genau ein Datentyp spezifiziert, sollte die Operation ebenfalls eindeutig festgelegt sein Formaler Begriff: Monomorphieerhaltend = Eindeutig Vorgehen: Anreicherung nur durch rekursive und nichtrekursive Definitionen für neue Operationen. Diese sind hierarchiepersistent und eindeutig. 138

29 Nichtrekursive Definitionen (Motivation) Grundidee: Definition als Abkürzung einer grossen Formel Prädikat: p(x) ϕ (p kommt in Formel ϕ nicht vor) Funktion: f(x) = t (f kommt im Term t nicht vor) 139

30 Beispiel: Anreicherung um nichtrek. Prädikat NatDiv = enrich Nat with predicates : nat nat; axioms m n k. k * m = n; end enrich Die Anreicherung NatDiv ist hierarchiepersistent und eindeutig 140

31 Beispiel: Anr um nichtrek. Prädikat (mit FU) NatPrime = enrich NatDiv with predicates prime : nat; axioms prime(0); prime(1); n 2 (prime(n) m. m n m = 1 m = n); end enrich Die Anreicherung NatPrime ist hierarchiepersistent und eindeutig (FU nach n = 0, n = 1, n 2 ist vollständig) 141

32 Beispiel: Anreicherung um nichtrek. Konstante Nat12 = enrich Nat with constants 1 : nat; 2 : nat; axioms 1 = 0 +1; 2 = ; end enrich Die Anreicherung Nat12 ist hierarchiepersistent und eindeutig (beachte: in KIV sind die Zahlen schon vordefiniert) 142

33 Weitere Beispiele für nichtrekursive Definitionen m n k. m + k = n m < n m n m n m > n n < m even(n) m. n = m + m odd(n) even(n) m < n min(m,n) = m, m < n min(m,n) = n x 0 abs(x) = x, x < 0 abs(x) = x last(l + (a + [])) = a (: unvollst. Def :) a l l,l. l + a + l = l isprefix(l,l ) l. l + l = l nodups(l) l 1,l 2,l 3,a. l = l 1 + a + l 2 + a + l 3 143

34 Nichtrekursive Definitionen allgemein Prädikat: p(x) ϕ (p kommt in Formel ϕ nicht vor) Funktion: f(x) = t (f kommt im Term t nicht vor) Prädikat mit 2 vollständigen Fällen: ε (q(x,y) ϕ 1 ), ε (q(x,y) ϕ 2 ) Funktionen mit 3 unvollständigen Fällen: ε δ f(x,y) = t 1, ε δ f(x,y) = t 2, ε δ f(x,y) = t 3 Satz: Die Hinzunahme einer neuen Operation (Funktion oder Prädikat) mit nichtrekursiver Definition ist immer hierarchiepersistent. Wenn die Fälle vollständig sind, ist die Erweiterung sogar eindeutig. 144

35 Rekursive Definitionen (Motivation) Datentypen bestehen aus (der Semantik von) Konstruktortermen Rekursive Definitionen geben Definition durch Reduktion auf kleinere Konstruktorterme Entsprechen einem rekursiven Programm, das den Term abläuft Length = enrich List with functions length : list nat; axioms length([]) = 0; length(a + l) = length(l) +1; end enrich Satz: Die Hinzunahme einer neuen Operation mit rekursiver Definition zu einem freien Datentyp ist immer hierarchiepersistent. Wenn die Fälle vollständig sind, ist die Erweiterung immer eindeutig. 145

36 Beispiel: Anreicherung um rek. Definition Append = enrich List with functions. +. : list list list; axioms [] + l = l; (a + l) + l = a + (l + l ); end enrich Append ist hierarchiepersistent und eindeutig (+ ist überladen: Sowohl Element vor Liste hängen (rot und schwarz), als auch 2 Listen zusammenhängen (blau)) 146

37 Beispiel: Anreicherung um rek. Prädikat (FU) Sorted = enrich List with predicates sorted : list axioms ordered([]), ordered(a + []), ordered(a + b + l) a < b ordered(b + l) end enrich Ordered ist hierarchiepersistent und eindeutig, da die FU vollständig ist (jede Liste ist entweder = [],a + [],a + b + l) 147

38 Strukturierte Spezifikationen: Umbenennung und Parameter 148

39 Strukturierte Spezifikationen: Umbenennung Umbenennung: Benennt die Operationen einer Spezifikation um Nützlich um 2 Kopien zu erhalten Syntax: rename <SPEC> by morphism <renaming1>;... <renamingn>; end rename renaming = <sort/op/var> <sort/op/var>; Identische Umbenennungen weglassen (werden beim Ansehen der Spezifikation aber angezeigt) Nicht 2 Symbole auf dasselbe abbilden: Injektiv umbenennen Entweder alle Variablen oder keine umbenennen 149

40 Beispiel Umbenennung: Listen zu Stacks rename List by morphism list stack; [] empty; (: Typangabe für überladenes Symbol :) + :: (elem list list) push; (: pop nicht mehr postfix, Schreibweise stattdessen pop(x), default ist in/prae/postfix uebernehmen :).rest pop prio 0; (: top soll nun praefix sein :).first top.; (: eigentlich keine Stack-Operation, nur um Overloading zu zeigen :) + :: (list list list) concat prio 0; x st; y st0; z st1; end rename 150

41 Strukturierte Spezifikationen: Generische Spezifikation Generische Spezifikation: Syntax: generic specification parameter <SPEC> using <SPEC1>,..., <SPECn> target <signature> <induction> <axioms> end generic specification Wie Anreicherung (von <SPEC>, <SPEC1>,..., <SPECn>), nur wird von <SPEC> explizit gesagt, dass es sich um einen Parameter handelt Vereinigung und Anreicherung übernimmt den (oder die) Parameter der Unterspezifikationen Variante: generic data specification: Wie data specification nur mit Parameter 151

42 Strukturierte Spezifikationen: Aktualisierung (1) Aktualisierung: Instanziert Parameter (oder einen Parameter) einer Spezifikation Beispiel: Listen beliebiger Elemente Listen von Zahlen Syntax: actualize <SPEC> with <ASPEC1>,...,<ASPECn> by morphism <renaming1>;... <renamingn>; end actualize renaming = <sort/op/var> <sort/op/var>; Die Vereinigung von <ASPEC1>,...,<ASPECn> heisst aktuelle Spezifikation Identische Umbenennungen weglassen Entweder alle Variablen oder keine umbenennen 152

43 Strukturierte Spezifikationen: Aktualisierung (2) Aktualisierung: Der Parameter muss in die aktuelle Spez. abgebildet werden Abbildung darf nicht-injektiv sein: pair(elem1, elem2) pair(nat, nat) Der Nicht-Parameter-Teil darf nur injektiv und disjunkt zur aktuellen Spezifikation umbenannt werden, z. B. list natlist Die instanzierten Axiome des Parameters müssen Axiome in der aktuellen Spezifikation sein Verallgemeinerung instantiated specification: Axiome werden bewiesen mapping statt morphism erlaubt es, eine Sorte auf ein Tupel von Sorten abzubilden 153

44 Aktualisierung: Beispiel (1) Order = specification sorts elem; constants d : elem; predicates : elem elem; variables a, b, c : elem; axioms a a; a b b c a c; a d; (: d ist minimal :) end specification List-Ord = generic data specification parameter Order using Nat list = []. +. (..first : elem;..rest : list); size functions length : list nat; end generic data specification 154

45 Aktualisierung: Beispiel (2) NatList = actualize List-Ord with Nat by morphism list natlist; elem nat; <; d 0; a n; b n0; c n1; end actualize Die instanzierten Axiome (u. a. n < 0) sind (modulo Umbenennung) in Nat vorhanden. Die Listenoperationen (+,.rest etc.) werden nicht umbenannt (sie bekommen nur die neuen Sorten als Argumente). 155

Strukturierte Spezifikationen: Umbenennung und Parameter

Strukturierte Spezifikationen: Umbenennung und Parameter Strukturierte Spezifikationen: Umbenennung und Parameter 149 Strukturierte Spezifikationen: Umbenennung Umbenennung: Benennt die Operationen einer Spezifikation um Nützlich um 2 Kopien zu erhalten Syntax:

Mehr

Formale Spezifikationund Induktion

Formale Spezifikationund Induktion Formale Spezifikationund Induktion 91 Was ist ein SW-System mathematisch? 1. Sicht: Operational Ein SW-System ist ein Automat mit Zustand, Zustandsübergängen und mit Abläufen. 2. Sicht: Algebraisch Ein

Mehr

Formale Spezifikationund Induktion

Formale Spezifikationund Induktion Formale Spezifikationund Induktion 1 Was ist ein SW-System mathematisch? 1. Sicht: operational Ein SW-System ist ein Automat mit Zustand, Zustandsübergängen und mit Abläufen. 2. Sicht: algebraisch Ein

Mehr

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

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

Mehr

Σ = (z; c : z, f : z z) Σ = (z; c : z, f : z z) ( ; 17, x -x) ( ; 17, pred) ( ; true, neg) ( ; 0, suc) ({a,b} + ; a, xa xb und xb xa)

Σ = (z; c : z, f : z z) Σ = (z; c : z, f : z z) ( ; 17, x -x) ( ; 17, pred) ( ; true, neg) ( ; 0, suc) ({a,b} + ; a, xa xb und xb xa) METHODEN UND MODELLE DES SYSTEMENTWURFS 3. Algebraische Spezifikation mit CASL 3.1 Spezifikationen 3.2 CASL 3.1 SPEZIFIKATIONEN JAN SÜRMELI u.hu-berlin.de/mms-13 ZUR ERINNERUNG 2 DAS ZIEL 3 Signatur charakterisiert

Mehr

Noethersche Induktion

Noethersche Induktion Noethersche Induktion 166 Noethersche Relationen Definition (Noethersche Relationen) Sei A A. Die Relation heißt noethersch (oder wohlfundiert, engl. well-founded) wenn es keine unendlichen -Ketten gibt:...

Mehr

Algorithmen und Programmierung

Algorithmen und Programmierung Algorithmen und Programmierung Kapitel 8 Abstrakte Datentypen A&P (WS 14/15): 08 Abstrakte Datentypen 1 Überblick Abstrakte Datentypen Signaturen und Algebren Spezifikation von ADTs Umsetzung von ADTs

Mehr

Programmieren in Haskell Programmiermethodik

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

Mehr

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

Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie Rev. 2749 1 [28] Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom 04.11.2014: Typvariablen und Polymorphie Christoph Lüth Universität Bremen Wintersemester 2014/15 2 [28] Fahrplan Teil

Mehr

Semantik von Formeln und Sequenzen

Semantik von Formeln und Sequenzen Semantik von Formeln und Sequenzen 33 Grundidee der Verwendung von Logik im Software Entwurf Syntax: Menge von Formeln = Axiome Ax K ist beweisbar Formel ϕ beschreiben Korrektkeit Vollständigkeit beschreibt

Mehr

HASKELL KAPITEL 8. Bäume

HASKELL KAPITEL 8. Bäume HASKELL KAPITEL 8 Bäume Baum rekursiv definierte Datenstruktur nicht linear vielerlei Varianten: Struktur der Verzweigung, Ort der gespeicherten Information (Knoten, Kanten, Blätter ) 2 Binärbaum Jeder

Mehr

4.1 Motivation. Theorie der Informatik. Theorie der Informatik. 4.1 Motivation. 4.2 Syntax der Prädikatenlogik. 4.3 Semantik der Prädikatenlogik

4.1 Motivation. Theorie der Informatik. Theorie der Informatik. 4.1 Motivation. 4.2 Syntax der Prädikatenlogik. 4.3 Semantik der Prädikatenlogik Theorie der Informatik 3. März 2014 4. Prädikatenlogik I Theorie der Informatik 4. Prädikatenlogik I 4.1 Motivation Malte Helmert Gabriele Röger 4.2 Syntax der Prädikatenlogik Universität Basel 3. März

Mehr

2.3 Spezifikation von Abstrakten Datentypen

2.3 Spezifikation von Abstrakten Datentypen Abstrakte Datentypen (ADT) 2.3 Spezifikation von Abstrakten Datentypen Sichtbare Schnittstelle: Typbezeichner Signaturen der Operationen Spezifikation der Operationen Abstraktionsbarriere Implementierung

Mehr

Deklarative Semantik

Deklarative Semantik 7. Deklarative Semantik 7-1 Deklarative Semantik Bisher: Prolog als Programmiersprache. Operationale Semantik : Wie wird ein Programm ausgeführt? Welche Antworten werden berechnet? Jetzt: Prolog als logischer

Mehr

Abschnitt 3: Mathematische Grundlagen

Abschnitt 3: Mathematische Grundlagen Abschnitt 3: Mathematische Grundlagen 3. Mathematische Grundlagen 3.1 3.2 Induktion und Rekursion 3.3 Boolsche Algebra Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 48 / 155 Überblick

Mehr

Frage, Fragen und nochmals Fragen

Frage, Fragen und nochmals Fragen Frage, Fragen und nochmals Fragen Berthold Hoffmann Universität Bremen and DFKI Bremen hof@informatik.uni-bremen.de In diesem Text stehen einige Fragen, die man sich zu den Folien der Veranstaltung Funktionales

Mehr

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

Programmieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10. Universität Bielefeld AG Praktische Informatik 10. Dezember 2014 Wiederholung: Schema: f :: [σ] -> τ f [] = e 1 f (a : as) = e 2 where s = f as wobei e 1 und e 2 Ausdrücke vom Typ τ sind und e 2 die Variablen

Mehr

12. Interpretation von PVS-Theorien

12. Interpretation von PVS-Theorien 12. Interpretation von PVS-Theorien Vorspann zu allgemeinen Begriffen: Konsistenz usw. Äquivalenz und Quotienten Theorie-Interpretation Maschinelles Beweisen mit PVS 12 1 Vorspann: Interpretation, Modell,

Mehr

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

2008W. Vorlesung im 2008W  Institut für Algebra Johannes Kepler Universität Linz Logik Institut für Algebra Johannes Kepler Universität Linz Vorlesung im http://wwwalgebrauni-linzacat/students/win/ml Inhalt Logik Logik Aussagen Die mathematische Logik verwendet mathematische Methoden,

Mehr

Grundbegriffe der Informatik Kapitel 3: Mengen, Alphabete, Abbildungen

Grundbegriffe der Informatik Kapitel 3: Mengen, Alphabete, Abbildungen Grundbegriffe der Informatik Kapitel 3: Mengen, Alphabete, Abbildungen Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für

Mehr

Kapitel 1.1. Aussagenlogik: Syntax. Mathematische Logik (WS 2011/12) Kapitel 1.1: Aussagenlogik: Syntax 1/ 1

Kapitel 1.1. Aussagenlogik: Syntax. Mathematische Logik (WS 2011/12) Kapitel 1.1: Aussagenlogik: Syntax 1/ 1 Kapitel 1.1 Aussagenlogik: Syntax Mathematische Logik (WS 2011/12) Kapitel 1.1: Aussagenlogik: Syntax 1/ 1 Übersicht 1.1.1 Die Sprache der Aussagenlogik 1.1.2 Explizite vs. implizite Definitionen 1.1.3

Mehr

26 Hierarchisch strukturierte Daten

26 Hierarchisch strukturierte Daten Algorithmik II Peter Wilke Sommersemester 2005 Teil III Funktionale Programmierung 26 Hierarchisch strukturierte Daten Peter Wilke Algorithmik II Sommersemester 2005 1 Peter Wilke Algorithmik II Sommersemester

Mehr

Algebraische Kurven. Vorlesung 24. Tangenten bei Parametrisierungen. (Q)) die Richtung der Tangente von C in P.

Algebraische Kurven. Vorlesung 24. Tangenten bei Parametrisierungen. (Q)) die Richtung der Tangente von C in P. Prof. Dr. H. Brenner Osnabrück SS 2012 Algebraische Kurven Vorlesung 24 Tangenten bei Parametrisierungen Satz 24.1. Es sei K ein unendlicher Körper und ϕ: A 1 K A n K eine durch n Polynome ϕ = (ϕ 1 (t),...,ϕ

Mehr

Fallstudie: Nim Spiel

Fallstudie: Nim Spiel Fallstudie: Nim Spiel Angeblich chinesischen Ursprungs (Jianshizi) Interessant für Spieltheorie: vollständig analysierbar Frühzeitig computerisiert 1939 Nimatron (Weltausstellung New York) 1951 Nimrod

Mehr

3 Terme und Algebren 3.1 Terme

3 Terme und Algebren 3.1 Terme 3 Terme und Algebren 3.1 Terme Mod - 3.1 In allen formalen Kalkülen benutzt man Formeln als Ausdrucksmittel. Hier betrachten wir nur ihre Struktur - nicht ihre Bedeutung. Wir nennen sie Terme. Terme bestehen

Mehr

Theorem Proving. Software Engineering in der Praxis. Prädikatenlogik. Software Engineering in der Praxis Wintersemester 2006/2007

Theorem Proving. Software Engineering in der Praxis. Prädikatenlogik. Software Engineering in der Praxis Wintersemester 2006/2007 Seite 1 Theorem Proving Prädikatenlogik Seite 2 Gliederung Warum Theorembeweisen? Wie funktioniert Theorembeweisen? Wie kann mir das Werkzeug KIV dabei helfen? Seite 3 Warum Theorembeweisen? Wie kann man

Mehr

Funktionale Spezifikation

Funktionale Spezifikation Modellbildung erfolgt zu einem bestimmten Zweck Zwecke müssen exakt definiert werden eine Möglichkeit: funktionale Spezifikation Anwendungen: Vertragsgrundlage Korrektheitsnachweis Wiederverwendung (interface)

Mehr

Sequentielle Programme, Hoare-Logik und Dynamische Logik

Sequentielle Programme, Hoare-Logik und Dynamische Logik Sequentielle Programme, Hoare-Logik und Dynamische Logik 170 Was ist ein SW-System mathematisch? 1. Sicht: operational Ein SW-System ist ein Automat mit Zustand, Zustandsübergängen und mit Abläufen. 2.

Mehr

mathematik und informatik

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

Mehr

5 Lineare Algebra (Teil 3): Skalarprodukt

5 Lineare Algebra (Teil 3): Skalarprodukt 5 Lineare Algebra (Teil 3): Skalarprodukt Der Begriff der linearen Abhängigkeit ermöglicht die Definition, wann zwei Vektoren parallel sind und wann drei Vektoren in einer Ebene liegen. Daß aber reale

Mehr

Programmieren in C++ Überladen von Methoden und Operatoren

Programmieren in C++ Überladen von Methoden und Operatoren Programmieren in C++ Überladen von Methoden und Operatoren Inhalt Überladen von Methoden Überladen von Operatoren Implizite und explizite Konvertierungsoperatoren 7-2 Überladen von Methoden Signatur einer

Mehr

Prädikatenlogiken. Mathematische Logik. Vorlesung 7. Alexander Bors. 6. & 27. April A. Bors Logik

Prädikatenlogiken. Mathematische Logik. Vorlesung 7. Alexander Bors. 6. & 27. April A. Bors Logik Prädikatenlogiken Mathematische Logik Vorlesung 7 Alexander Bors 6. & 27. April 2017 1 Prädikatenlogiken Überblick 1 Formale Prädikatenlogiken erster Stufe (Quelle: Ziegler, pp. 3 24) (Abgeleitete) Axiome

Mehr

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird.

Dieser Foliensatz darf frei verwendet werden unter der Bedingung, dass diese Titelfolie nicht entfernt wird. Thomas Studer Relationale Datenbanken: Von den theoretischen Grundlagen zu Anwendungen mit PostgreSQL Springer, 2016 ISBN 978-3-662-46570-7 Dieser Foliensatz darf frei verwendet werden unter der Bedingung,

Mehr

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

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

Mehr

3 Exkurs: Der λ-kalkül

3 Exkurs: Der λ-kalkül 3 Exkurs: Der λ-kalkül Alonso Churchs λ-kalkül (ca. 1940) ist der formale Kern jeder funktionalen Programmiersprache. Der λ-kalkül ist eine einfache Sprache, mit nur wenigen syntaktischen Konstrukten und

Mehr

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016

Mathematik II für Studierende der Informatik. Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016 und Wirtschaftsinformatik (Analysis und lineare Algebra) im Sommersemester 2016 25. April 2016 Die Dimensionsformel Definition 3.9 Sei f : V W eine lineare Abbildung zwischen zwei K-Vektorräumen. Der Kern

Mehr

Programmierung im Grossen

Programmierung im Grossen 1 Letzte Aktualisierung: 16. April 2004 Programmierung im Grossen Bertrand Meyer 2 Vorlesung 4: Abstrakte Daten-Typen Übungen 3 Passe die vorhergehende Spezifikation von Stacks (LIFO, Last-In First-Out

Mehr

Mengen. (Nicht-) Elemente einer Menge { 3, 4 } { 1, { 2 }, { 3, 4 }, { 5 } } 3 { 1, { 2 }, { 3, 4 }, { 5 } }

Mengen. (Nicht-) Elemente einer Menge { 3, 4 } { 1, { 2 }, { 3, 4 }, { 5 } } 3 { 1, { 2 }, { 3, 4 }, { 5 } } Mengen Definition (Intuitive Mengenlehre) Eine Menge ist die Zusammenfassung von Elementen unserer Anschauung zu einem wohldefinierten Ganzen. (Georg Cantor) Notation 1. Aufzählung aller Elemente: { 1,

Mehr

Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation

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 &

Mehr

Mengen. Eigenschaften. Spezielle Mengen (1) Prominente Mengen. ! Mengenzugehörigkeit

Mengen. Eigenschaften. Spezielle Mengen (1) Prominente Mengen. ! Mengenzugehörigkeit Mengen! Definition (Intuitive Mengenlehre) Eine Menge ist die Zusammenfassung von Elementen unserer Anschauung zu einem wohldefinierten Ganzen. (Georg Cantor)! Notation 1. Aufzählung aller Elemente: {

Mehr

Einführung in die mathematische Logik

Einführung in die mathematische Logik Prof. Dr. H. Brenner Osnabrück SS 2016 Einführung in die mathematische Logik Vorlesung 12 Wir haben bisher nur von Axiomensystemen im Sinne einer beliebigen Ausdrucksmenge Γ L S gesprochen, die im Allgemeinen

Mehr

Die Prädikatenlogik erster Stufe: Syntax und Semantik

Die Prädikatenlogik erster Stufe: Syntax und Semantik Die Prädikatenlogik erster Stufe: Syntax und Semantik 1 Mathematische Strukturen und deren Typen Definition 1.1 Eine Struktur A ist ein 4-Tupel A = (A; (R A i i I); (f A j j J); (c A k k K)) wobei I, J,

Mehr

17 Lineare Abbildungen

17 Lineare Abbildungen Chr.Nelius: Lineare Algebra II (SS2005) 1 17 Lineare Abbildungen Wir beginnen mit der Klärung des Abbildungsbegriffes. (17.1) DEF: M und N seien nichtleere Mengen. Eine Abbildung f von M nach N (in Zeichen:

Mehr

1 Mathematische Grundbegriffe

1 Mathematische Grundbegriffe 1 1 Mathematische Grundbegriffe 1.1 Relationen und Funktionen Seien A 1,..., A n Mengen. Ein n-tupel über A 1,..., A n ist eine Folge (a 1,..., a n ) von Objekten a i A i, für i = 1,..., n. Zwei n-tupel

Mehr

2 Mengen und Abbildungen

2 Mengen und Abbildungen 2.1 Mengen Unter einer Menge verstehen wir eine Zusammenfassung von Objekten zu einem Ganzen. Die Objekte heiÿen Elemente. Ist M eine Menge und x ein Element von M so schreiben wir x M. Wir sagen auch:

Mehr

Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 3.8 Aussagenlogik Der Sequenzen-Kalkül 99. Sequenzen

Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 3.8 Aussagenlogik Der Sequenzen-Kalkül 99. Sequenzen Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 3.8 Aussagenlogik Der Sequenzen-Kalkül 99 Sequenzen Zum Abschluss des Kapitels über Aussagenlogik behandeln wir noch Gentzens Sequenzenkalkül.

Mehr

5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS)

5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS) 5 BINÄRE ENTSCHEIDUNGS- DIAGRAMME (BDDS) Sommersemester 2009 Dr. Carsten Sinz, Universität Karlsruhe Datenstruktur BDD 2 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer:

Mehr

Programmieren in C++ Templates

Programmieren in C++ Templates Programmieren in C++ Templates Inhalt Templates Funktions- und Klassen-Templates Spezialisierung von Templates Generische Klassen Einbinden von Templates Instantiierung (implizit und explizit) Templates

Mehr

Kapitel III Ringe und Körper

Kapitel III Ringe und Körper Kapitel III Ringe und Körper 1. Definitionen und Beispiele Definition 117 Eine Algebra A = S,,, 0, 1 mit zwei zweistelligen Operatoren und heißt ein Ring, falls R1. S,, 0 eine abelsche Gruppe mit neutralem

Mehr

A N A L Y S I S I F Ü R T P H, U E ( ) 1. Übungstest (FR, ) (mit Lösung )

A N A L Y S I S I F Ü R T P H, U E ( ) 1. Übungstest (FR, ) (mit Lösung ) Institut für Analysis und Scientific Computing TU Wien W. Auzinger WS 05/6 A N A L Y S I S I F Ü R T P H, U E (03.088). Übungstest (FR, 6..05) (mit Lösung ) Aufgabe. a ) Wandeln Sie die periodische Dezimalzahl

Mehr

Anwendungen der Logik, SS 2008, Martin Goldstern

Anwendungen der Logik, SS 2008, Martin Goldstern Anwendungen der Logik, SS 2008, Martin Goldstern Total geordnete Körper Ein total geordneter Körper ist ein Körper (K, +,, 0, 1, ) mit einer totalen (=linearen) Ordnung, die mit den Operationen verträglich

Mehr

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

Formale Grundlagen 2008W. Vorlesung im 2008S  Institut für Algebra Johannes Kepler Universität Linz Formale Grundlagen Institut für Algebra Johannes Kepler Universität Linz Vorlesung im 2008S http://www.algebra.uni-linz.ac.at/students/win/fg Inhalt Definition Sei A eine Menge und ɛ A A A eine zweistellige

Mehr

Einführung in die mathematische Logik

Einführung in die mathematische Logik Prof. Dr. H. Brenner Osnabrück SS 2014 Einführung in die mathematische Logik Vorlesung 7 Sprachen erster Sufe Die in der letzten Vorlesung erwähnten Konstruktionsmöglichkeiten für Aussagen sind im Wesentlichen

Mehr

Teil VI: Prozeduren Feld-Parameter & Typen. 1. Offene ARRAY-Parameter 2. Prozedurtypen und -variablen

Teil VI: Prozeduren Feld-Parameter & Typen. 1. Offene ARRAY-Parameter 2. Prozedurtypen und -variablen Teil VI: Prozeduren Feld-Parameter & Typen 1. Offene ARRAY-Parameter 2. Prozedurtypen und -variablen Offene ARRAY-Parameter Motivation Problem : geg.: mehrere deklarierte Felder unterschiedlicher Längen,

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Einheit 18: Logik Thomas Worsch Universität Karlsruhe, Fakultät für Informatik Wintersemester 2008/2009 1/35 Überblick Formeln in Prädikatenlogik erster Stufe Theorien und

Mehr

Theorembeweiserpraktikum SS 2016

Theorembeweiserpraktikum SS 2016 Institut für Programmstrukturen und Datenorganisation Lehrstuhl Programmierparadigmen Am Fasanengarten 5 76131 Karlsruhe http://pp.ipd.kit.edu/ Theorembeweiserpraktikum SS 2016 http://pp.ipd.kit.edu/lehre/ss2016/tba

Mehr

Musterlösung zur Klausur Grundwissen Schulmathematik am

Musterlösung zur Klausur Grundwissen Schulmathematik am Musterlösung zur Klausur Grundwissen Schulmathematik am 24.2.2012 Aufgabe 1 (10 Punkte) Zeigen Sie: Für alle n N ist n 3 3n 2 +2n durch 6 teilbar. svorschläge Beweis durch Induktion nach n n = 1. Es ist

Mehr

Abschnitt 3: Mathematische Grundlagen

Abschnitt 3: Mathematische Grundlagen Abschnitt 3: Mathematische Grundlagen 3. Mathematische Grundlagen 3.1 3.2 Boolsche Algebra 3.3 Induktion und Rekursion Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 46 / 708 Überblick

Mehr

Typ-Polymorphismus. November 12, 2014

Typ-Polymorphismus. November 12, 2014 Typ-Polymorphismus Universität Bielefeld AG Praktische Informatik November 12, 2014 Das Haskell Typ-System Wir beginnen mit einer Wiederholung des Bekannten: In allen Programmiersprachen sind Typ-Konzepte

Mehr

6.2 µ-rekursive Funktionen R p (N) (partiell rekursive Funktionen)

6.2 µ-rekursive Funktionen R p (N) (partiell rekursive Funktionen) 6.2 µ-rekursive Funktionen R p (N) (partiell rekursive Funktionen) Primitiv rekursive Funktionen P(N) Die bisher betrachteten Operationen auf Funktionen bilden totale Funktionen wieder in totalen Funktionen

Mehr

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

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

Mehr

Formale Systeme, WS 2013/2014. Lösungen zu Übungsblatt 5

Formale Systeme, WS 2013/2014. Lösungen zu Übungsblatt 5 Karlsruher Institut für Technologie Institut für Theoretische Informatik Prof. Dr. Peter H. Schmitt Dr. V. Klebanov, Dr. M. Ulbrich, C. Scheben Formale Systeme, WS 2013/2014 Lösungen zu Übungsblatt 5 Dieses

Mehr

Der untypisierte Lambda-Kalkül

Der untypisierte Lambda-Kalkül Der untypisierte Lambda-Kalkül Der Lambda-Kalkül wurde zur Beschreibung des mathematischen Begriffs Funktion entwickelt. Die Menge aller Lambda-Ausdrücke Exp ist folgendermaßen definiert: x Exp wenn x

Mehr

Grundbegriffe der Informatik

Grundbegriffe der Informatik Grundbegriffe der Informatik Kapitel 4: Wörter Thomas Worsch KIT, Institut für Theoretische Informatik Wintersemester 2015/2016 GBI Grundbegriffe der Informatik KIT, Institut für Theoretische Informatik

Mehr

Einführung in die Logik

Einführung in die Logik Einführung in die Logik Klaus Madlener und Roland Meyer 24. April 2013 Inhaltsverzeichnis 1 Aussagenlogik 1 1.1 Syntax................................. 1 1.2 Semantik............................... 3 1.3

Mehr

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra

Überblick. 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 Induktion und Rekursion 3.3 Boolsche Algebra Überblick 3. Mathematische Grundlagen 3.1 Mengen und Abbildungen 3.2 3.3 Boolsche Algebra Peer Kröger (LMU München) Einführung in die Programmierung WS 14/15 72 / 179 Beweisprinzip der vollständigen Induktion

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Benutzerdefinierte Datentypen Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 1. Aufzählungstypen 2. Typen mit zusammengesetzten

Mehr

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

Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie 16:02:01 2017-01-17 1 [37] Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom 08.11.2016: Typvariablen und Polymorphie Christoph Lüth Universität Bremen Wintersemester 2016/17 PI3 WS 16/17

Mehr

SWP Funktionale Programme

SWP Funktionale Programme SWP Funktionale Programme Berhard Aichernig und Alexander Felfernig Institut für Softwaretechnologie {bernhard.aichernig,alexander.felfernig}@ist.tugraz.at Institute for Software Technology Inhalt Einfache

Mehr

Normalform. 2.1 Äquivalenz und Folgerung. 2.2 Die pränexe Normalform

Normalform. 2.1 Äquivalenz und Folgerung. 2.2 Die pränexe Normalform 2 Normalformen 2.1 Äquivalenz und Folgerung Definition 2.1 Äquivalenz, Folgerung). Seien ϕ, ψ FO[σ]. a) ϕ und ψ heißen äquivalent kurz: ϕ ψ, bzw. ϕ = ψ), wenn für alle zu ϕ und ψ äquivalent passenden σ-interpretationen

Mehr

1 def Anweisung. 2 Argumentübergabe. 3 Lokale Variablen. 4 Default Argumente. 5 Aufruf mit Schlüsselwort. 6 Variable Argumente. Funktionen in Python

1 def Anweisung. 2 Argumentübergabe. 3 Lokale Variablen. 4 Default Argumente. 5 Aufruf mit Schlüsselwort. 6 Variable Argumente. Funktionen in Python 1 def Anweisung Sommersemester 2007 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente def Anweisung Beispiel: TuNix def def funktionsname([])

Mehr

Kap. 3 Relationenmodell mit relationaler Algebra

Kap. 3 Relationenmodell mit relationaler Algebra Kap. 3 Relationenmodell mit relationaler Algebra Kap. 3.1. Trägermenge Seien D 1, D 2,..., D k Domänen: (Typen, Arten, Sorten, Wertmengen) z.b. string integer real Boolean DateTime BLOB, TIFF-image, HTML-Doc,

Mehr

Logik I. Symbole, Terme, Formeln

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

Mehr

Funktionen in Python

Funktionen in Python October 19, 2006 1 def Anweisung 2 Argumentübergabe 3 Lokale Variablen 4 Default Argumente 5 Aufruf mit Schlüsselwort 6 Variable Argumente def Anweisung def def funktionsname([]) : [ Dokumentationsstring

Mehr

5. Äquivalenzrelationen

5. Äquivalenzrelationen 5. Äquivalenzrelationen 35 5. Äquivalenzrelationen Wenn man eine große und komplizierte Menge (bzw. Gruppe) untersuchen will, so kann es sinnvoll sein, zunächst kleinere, einfachere Mengen (bzw. Gruppen)

Mehr

Vorlesung Diskrete Strukturen Rechnen mit 0 und 1

Vorlesung Diskrete Strukturen Rechnen mit 0 und 1 Vorlesung Diskrete Strukturen Rechnen mit 0 und 1 Bernhard Ganter Institut für Algebra TU Dresden D-01062 Dresden bernhard.ganter@tu-dresden.de WS 2009/10 1 Bernhard Ganter, TU Dresden Modul Einführung

Mehr

Mengen und Abbildungen

Mengen und Abbildungen 1 Mengen und bbildungen sind Hilfsmittel ( Sprache ) zur Formulierung von Sachverhalten; naive Vorstellung gemäß Georg Cantor (1845-1918) (Begründer der Mengenlehre). Definition 1.1 Eine Menge M ist eine

Mehr

Grundlagen der Programmierung 2 (2.A)

Grundlagen der Programmierung 2 (2.A) Grundlagen der Programmierung 2 (2.A) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 5. Mai 2011 Listen und Listenfunktionen Listen modellieren Folgen von gleichartigen,

Mehr

SS Juli Übungen zur Vorlesung Logik Blatt 11

SS Juli Übungen zur Vorlesung Logik Blatt 11 SS 2011 06. Juli 2011 Übungen zur Vorlesung Logik Blatt 11 Prof. Dr. Klaus Madlener Abgabe bis 13. Juli 2011 10:00 Uhr 1. Aufgabe: [Axiomatisierung, Übung] 1. Definieren Sie eine Formel A n der Prädikatenlogik

Mehr

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe

Bäume. Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe Bäume Listen und Bäume, Graphen und Bäume, elementare Eigenschaften von Binärbäumen, Implementierung, Generische Baumdurchläufe S. Staab, Informatik für IM II; Folien nach D. Saupe, sowie W. Küchlin, A.

Mehr

Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T:

Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T: Binäre Bäume Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T: BinTree [T: TYPE]: DATATYPE empty: empty? node (key: T, left:bibtree, right:bibtree):

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Teil 4: Lernen rekursiver Funktionen

Teil 4: Lernen rekursiver Funktionen Theorie des Algorithmischen Lernens Sommersemester 2007 Teil 4: Lernen rekursiver Funktionen Version 1.0 Gliederung der LV Teil 1: Motivation 1. Was ist Lernen 2. Das Szenario der Induktiven Inf erenz

Mehr

Wiederholungsblatt zur Gruppentheorie

Wiederholungsblatt zur Gruppentheorie Wiederholungsblatt zur Gruppentheorie von Christian Elsholtz, TU Clausthal, WS 1999/2000 Um Ihnen zu helfen, die Gruppentheorie zu wiederholen, stelle ich hier einige wichtige Beispiele und einige Lösungen

Mehr

Vollständige Induktion

Vollständige Induktion Angenommen, wir wollen zeigen, dass eine Aussage P(n) für alle n N wahr ist. Anders ausgedrückt: Es gilt n N : P(n) Hierzu können wir die Technik der vollständigen Induktion verwenden. Wir zeigen, dass

Mehr

Datenstrukturen und Algorithmen. Vorlesung 8

Datenstrukturen und Algorithmen. Vorlesung 8 Datenstrukturen und Algorithmen Vorlesung 8 Inhaltsverzeichnis Vorige Woche: ADT Stack ADT Queue Heute betrachten wir: ADT Deque ADT Prioritätsschlange Binomial-Heap Schriftliche Prüfung Informationen

Mehr

Graphdurchmusterung, Breiten- und Tiefensuche

Graphdurchmusterung, Breiten- und Tiefensuche Prof. Thomas Richter 18. Mai 2017 Institut für Analysis und Numerik Otto-von-Guericke-Universität Magdeburg thomas.richter@ovgu.de Material zur Vorlesung Algorithmische Mathematik II am 18.05.2017 Graphdurchmusterung,

Mehr

Grundkurs Mathematik I

Grundkurs Mathematik I Prof. Dr. H. Brenner Osnabrück WS 2016/2017 Grundkurs Mathematik I Vorlesung 9 In theory, theory and praxis are the same, in praxis they aren t Die Multiplikation auf den natürlichen Zahlen Zur Definition

Mehr

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen 1 Datenstrukturen 1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen 1 1.3 Bäume Hierarchische Datenstruktur Zusammenfassung von Gruppen (z.b. Bund / Länder /

Mehr

WS 2011/2012. Robert Giegerich Dezember 2013

WS 2011/2012. Robert Giegerich Dezember 2013 WS 2011/2012 Robert 1 AG Praktische Informatik 11. Dezember 2013 1 robert@techfak.uni-bielefeld.de Vorschau Themen heute: Funktionen höherer Ordnung (Fortsetzung) künstliche Striktheit mehr zu fold für

Mehr

Lösungsmenge L I = {x R 3x + 5 = 9} = L II = {x R 3x = 4} = L III = { }

Lösungsmenge L I = {x R 3x + 5 = 9} = L II = {x R 3x = 4} = L III = { } Zur Einleitung: Lineare Gleichungssysteme Wir untersuchen zunächst mit Methoden, die Sie vermutlich aus der Schule kennen, explizit einige kleine lineare Gleichungssysteme. Das Gleichungssystem I wird

Mehr

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung

2. Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 2 Woche: Eindeutige Entschlüsselbarleit, Sätze von Kraft und McMillan, Huffmancodierung 24/ 44 Zwei Beispiele a 0

Mehr

Typklassen. Natascha Widder

Typklassen. Natascha Widder Typklassen Natascha Widder 19.11.2007 Motivation Typklassen fassen Typen mit ähnlichen Operatoren zusammen ermöglichen überladenen Funktionen Definition Typklassen Deklarationsschema class Name Platzhalter

Mehr

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung

Kapitel 2. Mathematische Grundlagen. Skript zur Vorlesung Einführung in die Programmierung LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Kapitel 2 Mathematische Grundlagen Skript zur Vorlesung Einführung in die Programmierung im Wintersemester 2012/13 Ludwig-Maximilians-Universität

Mehr

Binary Decision Diagrams (Einführung)

Binary Decision Diagrams (Einführung) Binary Decision Diagrams (Einführung) Binary Decision Diagrams (BDDs) sind bestimmte Graphen, die als Datenstruktur für die kompakte Darstellung von booleschen Funktionen benutzt werden. BDDs wurden von

Mehr

Haskell zur Constraint-Programmierung HaL8

Haskell zur Constraint-Programmierung HaL8 Haskell zur Constraint-Programmierung HaL8 Alexander Bau 2. Mai 2013 Wir benutzen eine Teilmenge von Haskell zur Spezifikation von Constraint- Systemen über Haskell-Datentypen. Ein Constraint-Compiler

Mehr

Operationen. auch durch. ausgedrückt. ist die Trägermenge der Operation. Mathematik I für Informatiker Algebren p.1/21

Operationen. auch durch. ausgedrückt. ist die Trägermenge der Operation. Mathematik I für Informatiker Algebren p.1/21 Operationen Eine Operation auf einer Menge ist eine Abbildung ist dabei die Menge aller -Tupel mit Einträgen aus. Man nennt auch durch die Stelligkeit der Operation ; dies wird ausgedrückt. Die Menge ist

Mehr

Mathe <> Deutsch. Die 7 verwirrendsten Mathe-Floskeln einfach erklärt! Math-Intuition.de

Mathe <> Deutsch. Die 7 verwirrendsten Mathe-Floskeln einfach erklärt! Math-Intuition.de Mathe Deutsch Die 7 verwirrendsten Mathe-Floskeln einfach erklärt! Inhalt hinreichend & notwendig kanonisch wohldefiniert beliebig paarweise trivial o.b.d.a & o.e. hinreichend & notwendig Bei jeder

Mehr

Allgemeine Algebren. Bernhard Ganter. Institut für Algebra TU Dresden D Dresden

Allgemeine Algebren. Bernhard Ganter. Institut für Algebra TU Dresden D Dresden Allgemeine Algebren Bernhard Ganter Institut für Algebra TU Dresden D-01062 Dresden bernhard.ganter@tu-dresden.de Operationen Eine Operation auf einer Menge A ist eine Abbildung f : A n A. A n ist dabei

Mehr

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare Beispiele: (Funktionen auf Listen) (3) Bemerkungen: 5. Zusammenhängen der Elemente einer Liste von Listen: concat :: [[a]] -> [a] concat xl = if null xl then [] else append (head xl) ( concat (tail xl))

Mehr