Noethersche Induktion

Größe: px
Ab Seite anzeigen:

Download "Noethersche Induktion"

Transkript

1 Noethersche Induktion 166

2 Noethersche Relationen Definition (Noethersche Relationen) Sei A A. Die Relation heißt noethersch (oder wohlfundiert, engl. well-founded) wenn es keine unendlichen -Ketten gibt:... a 3 a 2 a 1 a 0 Beispiele: < auf natürlichen Zahlen ist noethersch, aber nicht > < auf ganzen Zahlen ist nicht noethersch m n n = m + 1 ist noethersch (nicht transitiv) (echte Teilmenge) ist noethersch auf endlichen Mengen 167

3 Eigenschaften noetherscher Relationen < ist immer irreflexiv Die Relation muss nicht transitiv sein, ihre transitive Hülle ist aber auch noethersch (und transitiv) deshalb häufig o.b.d.a nur noethersche Ordnungen betrachtet Die Relation muss kein kleinstes Element besitzen. Beispiel: echte Teilmenge auf nichtleeren Mengen kleinstes Element existiert noethersch. Beispiel: < auf rationalen Zahlen 0 Wenn < noethersch und stärker, i.e. x y x < y, dann erst Recht noethersch 168

4 Bedeutung noetherscher Relationen Bedeutung: betrachte Folge der Zustände, die ein Programm durchläuft. Definiere s s : s ist Nachfolgezustand von s Dann gilt: noethersch Programm terminiert immer stärkeres Induktionsprinzip als strukturelle Induktion: noethersche Induktion eingesetzt zum Beweis der Terminierung 169

5 Beispiele für noethersche Prädikate Ordnungsprädikate: Ordnungsprädikate < von Datendefinitionen sind noethersch. Zur Erinnerung: x < y x (als Konstr.term) ist echter Unterterm von y. Z. Bsp. bei Listen : x < a + x, x < a + (b + x), x [] [] < x keine Grössenordnung, nicht: a + x < a + b + x (ausser wenn a = b) Größenordnung: Sei size : s nat. Dann ist noethersch mit x y : size(x) < size(y). Lexikalische Ordnung: Betrachte Spezifikation Pair2 von vorher. Seien < 1 : elem1 elem1 und < 2 : elem2 elem2 noethersch. Dann auch mit mkpair(a,b) mkpair(a,b ) : a < 1 a (a = a b < 2 b ). 170

6 Noethersche Induktion Satz (Noethersche Induktion) Genau für noethersche Relationen gilt: Wenn für jedes a aus E(a ) für alle Elemente a a die Aussage E(a) gefolgert werden kann, so gilt E für alle Elemente: ( a. ( a. a a E(a )) E(a)) b. E(b) Definition (Noethersche Induktionsregel) Sei y := free(γ ) \ {x} und noethersch. Induktion über x: IND( ) y. x. x x ( Γ ) x x,γ Γ speziell für Formel: y. x. x x ϕ x x ϕ ϕ 171

7 Noethersche Induktion (Beispiele) Beispiel: Natürliche Zahlen n 0. n 0 < n ϕ(n 0 ) ϕ(n) n. ϕ(n) Beispiel: Listen l 0. (l 0 l) ϕ(l 0 ) ϕ(l) l. ϕ(l) 172

8 Noethersche Induktion in KIV In KIV ist die Regel induction für noethersche Induktion vorhanden Für Variablen x eines freien Datentyps wird angeboten Ind. über vordefiniertes Ordnungsprädikat (pro Sorte eines; Induktion über x wird angeboten) Ind. über vordedefinierte Grössenfunktion (pro Sorte eine Fkt. #; Induktion über # x) Grössenfunktionen für nichtfreie Datentypen kann man mit Unit-Add HeuristicInfo addieren es ist auch möglich einen Term anzugeben, über dessen Grösse induziert wird (z.bsp. # x # y) Die Induktionshypothese wird in KIV mit Ind-Hyp abgekürzt. Goal-Again with Ind-Hyp zeigt die Induktionshypothese an. Anwendung der Induktionshypothese mit apply induction (statt all left) 173

9 Sequentielle Programme, Hoare-Logik und Dynamische Logik 174

10 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 SW-System ist eine Algebra, d. h. ein System von Daten und Operationen. 175

11 Grundidee für Programme Hilfsmittel: Begriffe von Signatur, Algebra und Belegung aus der Prädikatenlogik Datentypen in den Programmen sind beliebige algebraisch spezifizierte Datentypen (daher heißen die Programme abstrakte Programme) Programmvariablen sind Variablen der Prädikatenlogik Ein Zustand eines Programms ist eine Belegung der Prädikatenlogik Kopiersemantik, d.h. Änderung an einer Variablen ändert keine andere Variablen haben keine Adressen 176

12 Programme: Syntax Programme Prog(Σ,X) (Notation: α, β, γ) parallele Zuweisung: x 1 := t 1,x 2 := t 2,...,x n := t n Variablen aus X, Terme aus T(Σ,X), kurz: x := t { α;β } (geschachtelte { } weglassen) Schleife (ε ist quantorenfreie Formel): while ε do α Fallunterscheidung: if ε then α else β lokale Variablen: let x 1 = t 1,x 2 = t 2,...,x n = t n in α das Programm, das nichts tut: skip (Abkürzung: if ε then α if ε then α else skip) das Programm, das nie terminiert: abort (kann als Abkürzung definiert werden: while true do skip) Prozeduren später 177

13 Programme: Semantik (1) Für eine Σ-Algebra A betrachtet man die Menge ST:={v v : s S X s A s } der Variablenbelegungen. Für sequentielle Programme sind nicht alle Zwischenzustände interessant, es genügt, Anfangs- und Endzustände zu betrachten. Erster Versuch: Ein Programm überführt einen Anfangszustand in einen Endzustand: [[α]] : ST ST 178

14 Programme: Semantik (1) Für eine Σ-Algebra A betrachtet man die Menge ST:={v v : s S X s A s } der Variablenbelegungen. Für sequentielle Programme sind nicht alle Zwischenzustände interessant, es genügt, Anfangs- und Endzustände zu betrachten. Erster Versuch: Ein Programm überführt einen Anfangszustand in einen Endzustand: [[α]] : ST ST Probleme mit dieser Semantik: Was ist die Semantik von abort? Wie auf indeterministische Programme erweitern? 178

15 Programme: Semantik (2) Deshalb: relationale Semantik: [[α]] ST ST (v,v ) [[α]] bedeutet: Zustand v wird von α in v überführt Wenn zu v kein v mit (v,v ) [[α]] vorhanden ist: α terminiert nicht, wenn in v gestartet Wenn {(v,v ),(v,v )} [[α]], so ist das Programm mit v gestartet indeterministisch mit 2 möglichen Endzuständen: v und v derzeit betrachtete Programme sind deterministisch: Zu jedem v höchstens ein v 179

16 Programme: Semantik (3) Man definiert die relationale Semantik eines Programmes bzgl. der Algebra A rekursiv wie folgt: [[abort]] [[skip]] [[x := t]] [[α;β]] [[if ε then α else β]] := := {(v,v) v ST} := {(v,w) w = v [[t]] A,v x } := {(u,w) es gibt v : (u,v) [[α]] und (v,w) [[β]]} := {(v,w) A,v = ε und (v,w) [[α]] oder A,v = ε und (v,w) [[β]]} [[let x = t in α]] := {(v,wx v(x) ) (v [[t]] A,v x,w) [[α]]} [[while ε do α]] := [[(if ε then α) i ; if ε then abort ]] i N wobei α 0 := skip,α i+1 := α;α i 180

17 Korrektheitsbegriffe für Programme Partielle Korrektheit: ϕ {α} ψ Falls zu Beginn ϕ gilt und α terminiert, dann gilt anschließend ψ Semantik: A = ϕ {α} ψ für jedes v mit A,v = ϕ und jedes w mit (v,w) [[α]] gilt A,w = ψ Totale Korrektheit: ϕ α ψ Falls zu Beginn ϕ gilt, dann terminiert α und anschließend gilt ψ Semantik: A = ϕ α ψ für jedes v mit A,v = ϕ gibt es w mit (v,w) [[α]] es gilt A,w = ψ 181

18 Beispiele zur Korrekheit Partielle Korrektheit: = true { x:= 2 } x = 2 = x = 2 { x:= x+1 } x = 3 = x = y { x:= x +1} x 1 = y = x = a y = b { x:= y, y := x} x = b y = a = x = 2 { abort } x > 2 Unterschied partielle und totale Korrektheit: = true { if y=0 then abort else x:=1 } x = 1 = true if y=0 then abort else x:=1 x = 1 = y 0 if y=0 then abort else x:=1 x = 1 182

19 Der Hoare-Kalkül (1) Floyd, C. A. R. Hoare, Oxford 1969 SP HC ϕ{α}ψ HC : Besteht aus Regeln zur Behandlung von Programmen und den Regeln des Sequenzenkalküls 183

20 Der Hoare-Kalkül (2) skip-regel: abort-regel: ϕ {skip} ϕ ϕ {abort} ψ Zuweisungs-Regel: ϕ t x {x := t} ϕ compound-regel: ϕ {α} χ χ {β} ψ ϕ {α;β} ψ wobei die Zwischenbedingung χ selbst gesucht werden muss. 184

21 Der Hoare-Kalkül (3) conditional-regel: while-regel: ϕ ε {α} ψ ϕ ε {β} ψ ϕ {if ε then α else β} ψ ϕ INV INV ε {α} INV INV ε ψ ϕ {while ε do α od} ψ wobei die Schleifeninvariante INV selbst gesucht werden muss 185

22 Der Hoare-Kalkül (4) Wie immer: Ist der Kalkül korrekt? Ist er sogar vollständig? Korrektheit gilt, d.h. SP HC ϕ {α} ψ Mod(SP) = ϕ {α} ψ. Aber Vollständigkeit gilt nicht, d.h. Mod(SP) = ϕ {α} ψ impliziert nicht, daß SP HC ϕ {α} ψ gilt. Gegenbeispiel? 186

23 Der Hoare-Kalkül (5) Gegenbeispiel zur Vollständigkeit des Hoare-Kalküls: Nat = data specification nat = 0 +1 (-1 : nat) end data specification x = 0 y = y 0 { while y 0 do y := y -1; x := x +1 od } x = y 0 Schleifeninvariante? x + y = y 0? Eigentlich schon, aber keine Formel in Nat. 187

24 Der Hoare-Kalkül (6) Frage: Wie ändert sich der Kalkül, wenn man totale Korrektheit betrachtet? Antwort: Überall dort, wo Nichtterminierung auftreten kann (abort und while). Ersetze also die geschweiften Klammern durch spitze und ändere die abort- und while-regel ab, um Nichtterminierung zu verhindern. Dies ergibt den totalen Hoare-Kalkül (THC ): SP THC ϕ α ψ Wie müssen die abort- und while-regel geändert werden? 188

25 Der Hoare-Kalkül (7) Bedingung bei abort-regel: Vorbedingung darf nie auftreten! abort-regel: ϕ ϕ abort ψ 189

26 Der Hoare-Kalkül (8) Bedingung bei while-regel: Schleife darf nur endlich oft durchlaufen werden! Benutze dazu noethersche Ordnung und einen Term t (z.b. Länge einer Liste), der bzgl. kleiner wird, sowie eine Variable v Var(α). while-regel: ϕ INV INV ε v = t α INV t v INV ε ψ ϕ while ε do α od ψ wobei die Schleifeninvariante INV selbst gesucht werden muss Damit ist der totale Hoare-Kalkül korrekt, aber nicht vollständig. 190

27 Dynamische Logik A. Salwicki 1970 ( algorithmische Logik ), V.R. Pratt 1976, D. Harel 1977 Idee: Erfinde nicht einfach einen komplett neuen Kalkül für neue Objekte (hier: Hoare-Tripel) sondern bilde Programmformeln und erweitere Kalkül um diese neuen Formeln. 191

28 Dynamische Logik: Syntax Die Menge DLFor(Σ,X) der DL-Formeln über der Signatur Σ und der Variablenmenge X enthält alle prädikatenlogischen Formeln von For(Σ,X) für α DLProg(Σ,X) und ψ DLFor(Σ,X) auch [α]ϕ ( box alpha phi ) Informelle Bedeutung: Wenn α terminiert, gilt nachher ϕ α ϕ ( diamond alpha phi ) Informelle Bedeutung: α hält, und nachher gilt ϕ Klassifikation: Dynamische Logik ist eine (Multi-)Modallogik. Modallogik mit Formeln ϕ (und ϕ) stammen aus der Philosophie: ich weiss ϕ ich glaube ϕ, ϕ ist möglich Temporallogik: irgendwann wird ϕ wahr sein 192

29 Bemerkungen zur Syntax Boxen und Diamonds binden stärker als Aussagenlogik: [α]ψ χ bedeutet ([α]ψ) χ Schachtelung möglich: α β ψ bedeutet α ( β ψ ) auch gemischte Schachtelung ist erlaubt: [α] x. ϕ β ψ Auch in DL betrachtet man Sequenzen, z.b. α ψ,γ. Wenn x in α vorkommt, x 0 aber nicht, so besagt α x = x 0 : Am Ende von α hat x den Wert, den x 0 jetzt hat α x = x 0 β x = x 0 bedeutet: Wann immer α in x einen Wert x 0 ausrechnet so tut das auch β Man kann in DL also über Programmähnlichkeit reden Es gilt: [α]ψ α ψ Man könnte also Box mit Hilfe von Diamond definieren 193

30 Semantik der Dynamischen Logik Die Semantik von Formeln der Prädikatenlogik wird erweitert durch A,v = [α]ψ : für alle w : (v,w) [[α]] A,w = ψ. A,v = α ψ : es gibt w : (v,w) [[α]] und A,w = ψ. Damit gilt A,v = ϕ{α}ψ A,v = ϕ [α]ψ A,v = ϕ α ψ A,v = ϕ α ψ, Hoare-Tripel sind also spezielle Formeln der Dynamischen Logik. 194

31 Dynamische Logik: Beispiele = [x := 1] x = 1 = x = x0 [x := x + 1] x = x0 + 1 = x = x0 x := x + 1 x = x0 + 1 Unterschied Box/Diamond: = x = 5 [abort] x = 5 = x = 5 abort x = 5 Sequenzen mit Programmen, Programme auch im Antezedent: = x = x0 [x := x + 1] x = x0 + 1 = x > 0 while x > 1 do x := x -1 x = 1 = if x > 0 then y := 1 else abort y = y0 y0 = 1 x > 0 = [if x > 0 then y := 1 else abort] y = y0 y0 = 1 x > 0 x = 0 195

32 Kalkül für Dynamische Logik Grundidee: Symbolische Ausführung von Programmen Betrachte Ausführung des Programms α 1 ;α 2 ;...;α n (α i ohne ; (compound) auf top-level) Annahme: initialer Zustand erfüllt Vorbedingung ϕ 0 Berechne ϕ 1, die stärkste Formel, die nach α 1 gilt Berechne ϕ 2, die stärkste Formel, die nach α 1 ;α 2 gilt... solange bis das Programm verschwunden ist Zum Schluss: Teste ob ϕ n die Nachbedingung impliziert (nur noch PL) Gegenüber Hoare-Kalkül: kein Raten von Zwischenformeln bei seq. Ausführung, Zuweisung vorwärts ausführen! Symb. Ausführung geht sowohl im Antezedent als auch im Sukzedent! 196

33 DL-Kalkül: Normalisierung normalize right normalize left Γ α β ψ, Γ α;β ψ, Γ [α][β]ψ, Γ [α;β]ψ, α β ψ,γ α;β ψ,γ [α][β]ψ,γ [α;β]ψ,γ In KIV: Nie explizit angewandt, die erste Anweisung wird bei jeder Regelanwendung (in allen Programmformeln) immer automatisch abgespalten. KIV rotiert immer die Programmformeln nach vorne. 197

34 DL-Kalkül: Zuweisungen (1) assign right (Hoare-Regel in DL) assign right (Dynamische Logik) Γ ψ τ x, Γ [x := τ]ψ, Γ,x = τ [α x x ]ψ x x, Γ [x := τ][α]ψ, wobei x eine neue Variable ist (bezeichnet den neuen Wert von x) Beachte: Programmvariablen werden umbenannt! 198

35 DL-Kalkül: Zuweisungen (2) in KIV: assign right kombiniert beide Regeln: Original-Hoare-Regel, falls nach der Zuweisung ψ kein Programm mehr enthält sonst die DL Regel Die Regel gilt genau gleich auch für Diamonds statt Boxen Die Regel für Zuweisung auf der linken Seite sieht genauso aus: assign left wobei x eine neue Variable ist x = τ,[α x x ]ψ x x,γ [x := τ][α]ψ,γ 199

36 DL-Kalkül: if Der Kalkül der dynamischen Logik besteht u.a. aus den Regeln des Hoare-Kalküls, wie z.b. if right if positive right Γ,ε [α]ψ, Γ, ε [β]ψ, Γ [if ε then α else β]ψ, Γ,ε [α]ψ, Γ ε, Γ [if ε then α else β]ψ, analog: if negative right, if left etc.. KIV versucht immer die Tests zu entscheiden (per Simplifier), damit nur eine Prämisse entsteht. 200

37 DL-Kalkül: while invariant right invariant right Γ INV, INV,ε [α]inv INV, ε ψ Γ [while ε do α]ψ, Γ INV, INV,ε,v = t α (INV t v) INV, ε ψ Γ while ε do α ψ, KIV: Die Schleifeninvariante INV und im zweiten Fall auch die Schranke t muss von Hand eingegeben werden (v ist neue Variable) 201

38 DL-Kalkül: abort abort right abort left Γ Γ abort ψ, Γ [abort]ψ, abort ψ,γ Γ [abort]ψ,γ 202

39 DL-Kalkül: skip skip right skip left Γ ψ, Γ skip ψ, Γ ψ, Γ [skip]ψ, ψ,γ skip ψ,γ ψ,γ [skip]ψ,γ 203

40 DL-Kalkül: lokale Variablen vardecls right x = τ,γ α x x ϕ Γ let x = τ in α ϕ vardecls left α x x ϕ,x = τ,γ let x = τ in α ϕ,γ x sind neue Variablen (bezeichnen die lokalen Variablen). Dieselbe Regel auch für Boxen. 204

41 Beispiel zur Korrekheit Liste nat. Zahlen x: m := x.first, x0 := x.rest; while x0 [] do { if x0.first > m then m := x0.first ; x0 := x0.rest } 205

42 Beispiel zur Korrekheit Maximum einer nichtleeren Liste nat. Zahlen x: x [] m := x.first, x0 := x.rest; while x0 [] do { if x0.first > m then m := x0.first ; x0 := x0.rest } m = maxl(x) wobei maxl([]) = 0, maxl(n + x) = max(n,maxl(x)) 205

43 Zur nächsten Aufgabe Invarianten vorher überlegen!!! 206

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

Formale Methoden im Software Engineering

Formale Methoden im Software Engineering Formale Methoden im Software Engineering Eine praktische Einführung Dominik Haneberg, Florian Nafz, Bogdan Tofan 1 Organisatorisches Vorlesung: Mittwoch 12:15 Uhr - 13:45 Uhr (1058 N) Versuche: (Raum 3017

Mehr

Kontrakte, Abstrakte Datentypen und Verfeinerung

Kontrakte, Abstrakte Datentypen und Verfeinerung Kontrakte, Abstrakte Datentypen und Verfeinerung 229 Kontrakte 230 Vor- und Nachbedingungen, Kontrakte Ein Kontrakt für eine Prozedur p (oder auch für eine Methode) besteht (mindestens) aus einer Vorbedingung

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

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

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

5 Logische Programmierung

5 Logische Programmierung 5 Logische Programmierung Logik wird als Programmiersprache benutzt Der logische Ansatz zu Programmierung ist (sowie der funktionale) deklarativ; Programme können mit Hilfe zweier abstrakten, maschinen-unabhängigen

Mehr

7. Formale Sprachen und Grammatiken

7. Formale Sprachen und Grammatiken 7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik - das Quiz zur Vorlesung Teil I - Grundzüge der Logik In der Logik geht es um... (A) die Formen korrekten Folgerns (B) die Unterscheidung von wahr und falsch (C) das Finden von

Mehr

Prädikatenlogik - Micromodels of Software

Prädikatenlogik - Micromodels of Software Prädikatenlogik - Micromodels of Software Philipp Koch Seminar Logik für Informatiker Universität Paderborn Revision: 30. Mai 2005 1 Inhaltsverzeichnis 1 Motivation 3 2 Modelle 3 2.1 Definition eines Modells.......................

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

2. Vorlesung. Slide 40

2. Vorlesung. Slide 40 2. Vorlesung Slide 40 Knobelaufgabe Was tut dieses Programm? Informell Formal Wie stellt man dies sicher? knobel(a,b) { Wenn a = 0 dann return b sonst { solange b 0 wenn a > b dann { a := a - b sonst b

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

Teil X. Programmverifikation. Spezifikation eines Algorithmus einer Funktion einer Prozedur. Vorbedingungen Parameter Wertebereiche

Teil X. Programmverifikation. Spezifikation eines Algorithmus einer Funktion einer Prozedur. Vorbedingungen Parameter Wertebereiche Teil X Programmverifikation STRUKTURIERTES PROGRAMMIEREN Vorlesung im Wintersemester 2015 Prof. E.G. Schukat-Talamazzini Stand: 24. Juli 2015 Robert W Floyd 1936 2001 Sir Charles Antony Richard Hoare *1934

Mehr

Erfüllbarkeit und Allgemeingültigkeit

Erfüllbarkeit und Allgemeingültigkeit Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 3.3 Aussagenlogik Erfüllbarkeit 44 Erfüllbarkeit und Allgemeingültigkeit Def.: eine Formel ϕ heißt erfüllbar, wennesein I gibt, so dass I = ϕ

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) 5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c) mit V = {1,...,n} und E {(v, w) 1 apple v, w apple n, v 6= w}. c : E!

Mehr

Seminararbeit für das SE Reine Mathematik- Graphentheorie

Seminararbeit für das SE Reine Mathematik- Graphentheorie Seminararbeit für das SE Reine Mathematik- Graphentheorie Der binäre Rang, der symplektische Graph, die Spektralzerlegung und rationale Funktionen Vortrag am 24.01.2012 Heike Farkas 0410052 Inhaltsverzeichnis

Mehr

Kapitel 7: Formaler Datenbankentwurf

Kapitel 7: Formaler Datenbankentwurf 7. Formaler Datenbankentwurf Seite 1 Kapitel 7: Formaler Datenbankentwurf Die Schwierigkeiten der konzeptuellen Modellierung sind zu einem großen Teil dadurch begründet, dass sich die relevanten Strukturen

Mehr

2. Universelle Algebra

2. Universelle Algebra 2. Universelle Algebra Die Theorie der universellen Algebra verallgemeinert die Theorien der klassischen Algebren. Obwohl ursprünglich nur eine Sorte betrachtet wurde, werden wir hier gleich den mehrsortigen

Mehr

Logik für Informatiker

Logik für Informatiker Logik für Informatiker 2. Aussagenlogik Teil 3 30.04.2012 Viorica Sofronie-Stokkermans Universität Koblenz-Landau e-mail: sofronie@uni-koblenz.de 1 Letztes Mal Aussagenlogik Syntax: welche Formeln? Semantik:

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 9: Prädikatenlogik schulz@eprover.org Rückblick 2 Rückblick: Vor- und Nachteile von Aussagenlogik Aussagenlogik ist deklarativ: Syntaxelemente entsprechen

Mehr

SWP Prüfungsvorbereitung

SWP Prüfungsvorbereitung 20. Juni 2011 1 Grammatiken 2 LL(1) 3 EXP 4 Datentypen 5 LP Grammatiken Angabe Erstellen Sie First- und Follow-Mengen aller Non-Terminale der folgenden Grammatik. S a S S B y B A C A A b b A x A ɛ C c

Mehr

Theoretische Informatik

Theoretische Informatik Theoretische Informatik Einheit 1 Mathematische Methodik 1. Problemlösen 2. Beweistechniken 3. Wichtige Grundbegriffe Methodik des Problemlösens Klärung der Voraussetzungen Welche Begriffe sind zum Verständnis

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

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Diskrete Strukturen und Logik WiSe 2007/08 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Diskrete Strukturen und Logik WiSe 2007/08 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Diskrete Strukturen und Logik Gesamtübersicht Organisatorisches Einführung Logik & Mengenlehre

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 11: Abstrakte Reduktionssysteme schulz@eprover.org Reduktionssysteme Definition: Reduktionssystem Ein Reduktionssystem ist ein Tupel (A, ) Dabei gilt: A

Mehr

Algorithmen und Datenstrukturen SS09

Algorithmen und Datenstrukturen SS09 Foliensatz 8 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 29 TU Ilmenau Seite / 54 Binärbäume TU Ilmenau Seite 2 / 54 Binäre Bäume Bäume und speziell

Mehr

Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 8

Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 8 Prof. Dr. Wilhelm Schäfer Paderborn, 8. Dezember 2014 Christian Brenner Tristan Wittgen Besprechung der Aufgaben: 15. - 18. Dezember 2014 Übungsaufgaben zur Vorlesung Modellbasierte Softwareentwicklung

Mehr

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung

Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung Wintersemester 2009/10 Prof. Dr. Dr. h.c. Manfred Broy Unter Mitarbeit von Dr. K. Spies, Dr. M. Spichkova, L. Heinemann, P.

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

Einführung in die Theoretische Informatik

Einführung in die Theoretische Informatik Einführung in die Theoretische Informatik Woche 10 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 Zusammenfassung Zusammenfassung der letzten LV Satz Sei G = (V, Σ, R, S) eine kontextfreie

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15 Übersicht Schleifen Schleifeninvarianten Referenztypen, Wrapperklassen und API CoMa I WS 08/09 1/15 CoMa I Programmierziele Linux bedienen Code umschreiben strukturierte Datentypen Anweisungen und Kontrollstrukturen

Mehr

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83

9.2. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83 9.. DER SATZ ÜBER IMPLIZITE FUNKTIONEN 83 Die Grundfrage bei der Anwendung des Satzes über implizite Funktionen betrifft immer die folgende Situation: Wir haben eine Funktion f : V W und eine Stelle x

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Foliensatz 4 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 50 Grundlegende Datentypen TU Ilmenau Seite 2 / 50 Atomare Datentypen

Mehr

Programmierung und Modellierung

Programmierung und Modellierung Programmierung und Modellierung Terme, Suchbäume und Pattern Matching Martin Wirsing in Zusammenarbeit mit Moritz Hammer SS 2009 2 Inhalt Kap. 7 Benutzerdefinierte Datentypen 7. Binärer Suchbaum 8. Anwendung:

Mehr

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2 1 2 Notation für Wörter Grundlagen der Theoretischen Informatik Till Mossakowski Fakultät für Informatik Otto-von-Guericke Universität Magdeburg w a is die Anzahl der Vorkommen von a in w Beispiel: abba

Mehr

Logik für Informatiker

Logik für Informatiker Vorlesung Logik für Informatiker 3. Aussagenlogik Einführung: Logisches Schließen im Allgemeinen Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS 06 p.1 Beispiel:

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen.

I. Aussagenlogik. Aussagenlogik untersucht Verknüpfungen wie und, oder, nicht, wenn... dann zwischen atomaren und komplexen Sätzen. I. Aussagenlogik 2.1 Syntax Aussagenlogik untersucht Verknüpfungen wie "und", "oder", "nicht", "wenn... dann" zwischen atomaren und komplexen Sätzen. Sätze selbst sind entweder wahr oder falsch. Ansonsten

Mehr

Theoretische Grundlagen des Software Engineering

Theoretische Grundlagen des Software Engineering Theoretische Grundlagen des Software Engineering 7: Einführung Aussagenlogik schulz@eprover.org Logisches Schließen 2 gold +1000, 1 per step, Beispiel: Jage den Wumpus Performance measure death 1000 10

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Verträge für die funktionale Programmierung Design und Implementierung

Verträge für die funktionale Programmierung Design und Implementierung 1 Verträge für die funktionale Programmierung Design und Implementierung RALF HINZE Institut für Informatik III, Universität Bonn Römerstraße 164, 53117 Bonn, Germany Email: ralf@informatik.uni-bonn.de

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle.

Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik. Seminar Entscheidungsverfahren für logische Theorien. Endliche Modelle. Universität Koblenz-Landau, Abteilung Koblenz FB 4 Informatik Seminar Entscheidungsverfahren für logische Theorien Tobias Hebel Koblenz, am 18.02.2005 Inhaltsverzeichnis 1 Einleitung... 3 2 Grundlagen...

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

Grammatiken. Einführung

Grammatiken. Einführung Einführung Beispiel: Die arithmetischen Ausdrücke über der Variablen a und den Operationen + und können wie folgt definiert werden: a, a + a und a a sind arithmetische Ausdrücke Wenn A und B arithmetische

Mehr

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln

Mai 2006. Hauptseminar: Nichtrelationale Datenbanken Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Hauptseminar: Nichtrelationale Historisch-Kulturwissenschaftliche Informationsverarbeitung Universität zu Köln Mai 2006 Was ist eine Datenbank? Erweiterung relationaler um eine Deduktionskomponente Diese

Mehr

Informatik IC2. Balazs Simon 2005.03.26.

Informatik IC2. Balazs Simon 2005.03.26. Informatik IC2 Balazs Simon 2005.03.26. Inhaltsverzeichnis 1 Reguläre Sprachen 3 1.1 Reguläre Sprachen und endliche Automaten...................... 3 1.2 Determinisieren.....................................

Mehr

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1

Zusammenfassung. 1 Wir betrachten die folgende Signatur F = {+,,, 0, 1} sodass. 3 Wir betrachten die Gleichungen E. 4 Dann gilt E 1 + x 1 Zusammenfassung Zusammenfassung der letzten LV Einführung in die Theoretische Informatik Woche 7 Harald Zankl Institut für Informatik @ UIBK Wintersemester 2014/2015 1 Wir betrachten die folgende Signatur

Mehr

2. Lernen von Entscheidungsbäumen

2. Lernen von Entscheidungsbäumen 2. Lernen von Entscheidungsbäumen Entscheidungsbäume 2. Lernen von Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch Attribut/Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse

Mehr

Assertions (Zusicherungen)

Assertions (Zusicherungen) April 10, 2005 Oberseminar Software-Entwicklung Inhalt 1. Einführung (Motivation, Tony Hoare, Programmverifikation) 2. Design by Contract (Idee, Eiffel) 3. Praxis: Programming by Contract for Python 4.

Mehr

Programmbeweise mit Z

Programmbeweise mit Z 0/40 Programmbeweise mit Z Andreas Zeller Lehrstuhl Softwaretechnik Universität des Saarlandes, Saarbrücken Das Schema-Kalkül 1/40 Z besteht aus zwei Sprachen: der Sprache der gewöhnlichen Mathematik und

Mehr

Kapitel MK:IV. IV. Modellieren mit Constraints

Kapitel MK:IV. IV. Modellieren mit Constraints Kapitel MK:IV IV. Modellieren mit Constraints Einführung und frühe Systeme Konsistenz I Binarization Generate-and-Test Backtracking-basierte Verfahren Konsistenz II Konsistenzanalyse Weitere Analyseverfahren

Mehr

Kapitel 4. Aussagenlogik. 4.1 Boolesche Algebren

Kapitel 4. Aussagenlogik. 4.1 Boolesche Algebren Kapitel 4 Aussagenlogik Aussagenlogik war das erste logische System, das als mathematische Logik formuliert werden konnte (George Boole, Laws of Thought, 1854). Aussagenlogik ist die einfachste Logik und

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de

Grundlagen Theoretischer Informatik I SoSe 2011 in Trier. Henning Fernau Universität Trier fernau@uni-trier.de Grundlagen Theoretischer Informatik I SoSe 2011 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Grundlagen Theoretischer Informatik I Gesamtübersicht Organisatorisches; Einführung Logik

Mehr

Kurs 1612 Konzepte imperativer Programmierung Kurs 1613 Einführung in die imperative Programmierung

Kurs 1612 Konzepte imperativer Programmierung Kurs 1613 Einführung in die imperative Programmierung Aufgaben Aufgabe 1 Schreiben Sie eine PASCAL-Prozedur transponierematrix, die als Parameter eine quadratische Matrix von integer-werten erhält und diese Matrix transponiert, also die Zeilen und Spalten

Mehr

Ergänzungen zur Analysis I

Ergänzungen zur Analysis I 537. Ergänzungsstunde Logik, Mengen Ergänzungen zur Analysis I Die Behauptungen in Satz 0.2 über die Verknüpfung von Mengen werden auf die entsprechenden Regelnfür die Verknüpfung von Aussagen zurückgeführt.

Mehr

Guten Morgen und Willkommen zur Saalübung!

Guten Morgen und Willkommen zur Saalübung! Guten Morgen und Willkommen zur Saalübung! 1 Wie gewinnt man ein Spiel? Was ist ein Spiel? 2 Verschiedene Spiele Schach, Tic-Tac-Toe, Go Memory Backgammon Poker Nim, Käsekästchen... 3 Einschränkungen Zwei

Mehr

Kapitel 5: Applikative Programmierung

Kapitel 5: Applikative Programmierung Kapitel 5: Applikative Programmierung In der applikativen Programmierung wird ein Programm als eine mathematische Funktion von Eingabe-in Ausgabewerte betrachtet. Das Ausführen eines Programms besteht

Mehr

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur

Formeln. Signatur. aussagenlogische Formeln: Aussagenlogische Signatur Signatur Formeln Am Beispiel der Aussagenlogik erklären wir schrittweise wichtige Elemente eines logischen Systems. Zunächst benötigt ein logisches System ein Vokabular, d.h. eine Menge von Namen, die

Mehr

Foundations of Systems Development

Foundations of Systems Development Foundations of Systems Development Vergleich und Zusammenfassung Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer WS 2007/08 2 Ziele Wichtige Aspekte von algebraischen Spezikationen

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

Kapitel DB:V (Fortsetzung)

Kapitel DB:V (Fortsetzung) Kapitel DB:V (Fortsetzung) V. Grundlagen relationaler Anfragesprachen Anfragen und Änderungen Relationale Algebra Anfragekalküle Relationaler Tupelkalkül Relationaler Domänenkalkül DB:V-67 Relational Algebra

Mehr

1 Syntax von Programmiersprachen

1 Syntax von Programmiersprachen 1 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ): formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmier-Sprache Festlegung, wie Programme

Mehr

Zusammenhänge präzisieren im Modell

Zusammenhänge präzisieren im Modell Zusammenhänge präzisieren im Modell Dr. Roland Poellinger Munich Center for Mathematical Philosophy Begriffsfeld Logik 1 Mathematik und Logik Die Mathematik basiert auf logisch gültigen Folgerungsschritten

Mehr

Algorithmen II Vorlesung am 15.11.2012

Algorithmen II Vorlesung am 15.11.2012 Algorithmen II Vorlesung am 15.11.2012 Kreisbasen, Matroide & Algorithmen INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

Mehr

Formale Methoden II. Gerhard Jäger. SS 2008 Universität Bielefeld. Teil 8, 11. Juni 2008. Formale Methoden II p.1/30

Formale Methoden II. Gerhard Jäger. SS 2008 Universität Bielefeld. Teil 8, 11. Juni 2008. Formale Methoden II p.1/30 Formale Methoden II SS 2008 Universität Bielefeld Teil 8, 11. Juni 2008 Gerhard Jäger Formale Methoden II p.1/30 Beispiele Anmerkung: wenn der Wahrheitswert einer Formel in einem Modell nicht von der Belegungsfunktion

Mehr

Gibt es verschiedene Arten unendlich? Dieter Wolke

Gibt es verschiedene Arten unendlich? Dieter Wolke Gibt es verschiedene Arten unendlich? Dieter Wolke 1 Zuerst zum Gebrauch des Wortes unendlich Es wird in der Mathematik in zwei unterschiedlichen Bedeutungen benutzt Erstens im Zusammenhang mit Funktionen

Mehr

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum

4. Lernen von Entscheidungsbäumen. Klassifikation mit Entscheidungsbäumen. Entscheidungsbaum 4. Lernen von Entscheidungsbäumen Klassifikation mit Entscheidungsbäumen Gegeben sei eine Menge von Objekten, die durch /Wert- Paare beschrieben sind. Jedes Objekt kann einer Klasse zugeordnet werden.

Mehr

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten Gliederung Zusammenhang von Graphen Stark Zusammenhängend K-fach Zusammenhängend Brücken Definition Algorithmus zum Finden von Brücken Anwendung Zusammenhangskomponente Definition Wichtige Aussagen und

Mehr

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Vorlesung 04.12.2006: Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz Datenstruktur BDD 1986 von R. Bryant vorgeschlagen zur Darstellung von aussagenlogischen Formeln (genauer: Booleschen Funktionen)

Mehr

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Inhalt SWP Funktionale Programme (2. Teil) Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie wotawa@ist.tugraz.at Interpreter für funktionale Sprache

Mehr

Prolog basiert auf Prädikatenlogik

Prolog basiert auf Prädikatenlogik Software-Technologie Software-Systeme sind sehr komplex. Im Idealfall erfolgt die Programmierung problemorientiert, während die notwendige Übertragung in ausführbare Programme automatisch erfolgt. Prolog-Philosophie:

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2007 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Traversierung Durchlaufen eines Graphen, bei

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen.

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen. I.2. I.2. Grundlagen von von Programmiersprachen. 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

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Algorithmentheorie. 13 - Maximale Flüsse

Algorithmentheorie. 13 - Maximale Flüsse Algorithmentheorie 3 - Maximale Flüsse Prof. Dr. S. Albers Prof. Dr. Th. Ottmann . Maximale Flüsse in Netzwerken 5 3 4 7 s 0 5 9 5 9 4 3 4 5 0 3 5 5 t 8 8 Netzwerke und Flüsse N = (V,E,c) gerichtetes Netzwerk

Mehr

Wissensrepräsentation und -verarbeitung in Logiken. bereinigt Pränex Skolem ( -Eliminierung) Klausel (Menge von Klauseln, Notation ohne Quantoren)

Wissensrepräsentation und -verarbeitung in Logiken. bereinigt Pränex Skolem ( -Eliminierung) Klausel (Menge von Klauseln, Notation ohne Quantoren) Was bisher geschah Wissensrepräsentation und -verarbeitung in Logiken klassische Aussagenlogik klassische Prädikatenlogik: Wiederholung Syntax, Semantik Normalformen: bereinigt Pränex Skolem ( -Eliminierung)

Mehr

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm Studienanforderungen Studiengang Maschinenbau Programmieren Begleitende Übungen zu Veranstaltungen Umsetzen des Algorithmus in ein lauffähiges Programm Studiengang Bauingenieurwesen Programmieren Begleitende

Mehr

Mathematische Maschinen

Mathematische Maschinen Mathematische Maschinen Ziel: Entwicklung eines allgemeinen Schemas zur Beschreibung von (mathematischen) Maschinen zur Ausführung von Algorithmen (hier: (partiellen) Berechnungsverfahren). Mathematische

Mehr

Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka

Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka Automaten und formale Sprachen: Vorlesungsskript G. Brewka, A. Nittka Literatur: John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman, Einführung in die Automatentheorie, Formale Sprachen und Komplexitätstheorie,

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

Grundlagen der Künstlichen Intelligenz

Grundlagen der Künstlichen Intelligenz Grundlagen der Künstlichen Intelligenz 22. Constraint-Satisfaction-Probleme: Kantenkonsistenz Malte Helmert Universität Basel 14. April 2014 Constraint-Satisfaction-Probleme: Überblick Kapitelüberblick

Mehr

Sprachbeschreibung und Erweiterung

Sprachbeschreibung und Erweiterung Sprachbeschreibung und Erweiterung Worte, Sprachen, reguläre Ausdrücke, Automaten, BNF, Grammatik, Syntax- Diagramme, Spracherweiterungen do, for, break, switch Formale Beschreibung von Programmiersprachen

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik Informatik I WS 2012/13 Tutorium zur Vorlesung 1. Alexander Zietlow zietlow@informatik.uni-tuebingen.de Wilhelm-Schickard-Institut für Informatik Eberhard Karls Universität Tübingen 11.02.2013 1. 2. 1.

Mehr

Spezifikation und Test: Zusicherungen in Klassendiagrammen

Spezifikation und Test: Zusicherungen in Klassendiagrammen Spezifikation und Test: Zusicherungen in Klassendiagrammen Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 2 Ziele OCL, die Object Constraint Language, kennen lernen Lernen

Mehr

Übungen zur Vorlesung Verteilte Algorithmen II, Heiko Krumm, Universität Dortmund, FB Informatik

Übungen zur Vorlesung Verteilte Algorithmen II, Heiko Krumm, Universität Dortmund, FB Informatik Übung 4: Gegenseitiger Ausschluss (Ricart-Agrawala 1981) Konstanten: n >1 Anzahl der Prozesse; r Adresse des Prozesses, der initial das Token besitzt. Prozessparameter i sei die Adresse der aktuellen Prozessinstanz,

Mehr

Fragenkatalog Software Engineering I & II 25 Februar 1997 Bernd Thomas Ich habe mal eine kleine Liste der Fragen, die ich so in den Prufungsprotokollen gefunden habe, zusammengetragen. Im groen und ganzen

Mehr

Binäre lineare Optimierung mit K*BMDs p.1/42

Binäre lineare Optimierung mit K*BMDs p.1/42 Binäre lineare Optimierung mit K*BMDs Ralf Wimmer wimmer@informatik.uni-freiburg.de Institut für Informatik Albert-Ludwigs-Universität Freiburg Binäre lineare Optimierung mit K*BMDs p.1/42 Grundlagen Binäre

Mehr

Diskrete Mathematik für Informatiker

Diskrete Mathematik für Informatiker Diskrete Mathematik für Informatiker Markus Lohrey Universität Siegen Wintersemester 2014/2015 Lohrey (Universität Siegen) Diskrete Mathematik Wintersem. 2014/2015 1 / 344 Organisatorisches zur Vorlesung

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

Theoretische Informatik

Theoretische Informatik Theoretische Informatik für die Studiengänge Ingenieur-Informatik berufsbegleitendes Studium Lehramt Informatik (Sekundar- und Berufsschule) http://theo.cs.uni-magdeburg.de/lehre04s/ Lehrbeauftragter:

Mehr

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging.

Algorithmische Kernsprache. Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Algorithmische Kernsprache Zuweisung, einfache und bedingte Anweisung, Blöcke, Schleifen, return, debugging. Ausdrücke Anweisungen Ausdrücke bezeichnen einen Wert Kontext stellt Werte von Variablen Werte

Mehr

Semestralklausur zu Modellierung verteilter Systeme

Semestralklausur zu Modellierung verteilter Systeme Name: Vorname: Matr.Nr: Technische Universität München WS 2010/2011 Institut für Informatik Prof. Manfred Broy 09.02.2011 Semestralklausur zu Modellierung verteilter Systeme Allgemeine Hinweise: Schreiben

Mehr