KIV-Beweise in Scala. 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 253 / 300
|
|
- Hede Weber
- vor 5 Jahren
- Abrufe
Transkript
1 KIV-Beweise in Scala 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 253 / 300
2 Scala und KIV Im zweiten Scala-Versuch wollen wir Beweise programmieren. Zunächst einen Aussagenlogik-Beweiser, dann einen für partielle Korrektheit. Für die Programmierung brauchen wir Teile des aktuellen KIV-Codes. Der KIV-Code ist recht gross (300KLoC) und hat sicher noch Bugs. Ihr müsst davon aber nur wenige Teile kennen. 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 254 / 300
3 Wiederholung: Syntax von Ausdrücken Ausdrücke e EXPR s (Σ, X ) der Sorte s S über der Signatur Σ und über den Variablen X sind rekursiv definiert durch x aus X s ist ein Ausdruck der Sorte s Sind e 1,..., e n Ausdrücke der Sorten s 1,..., s n und op : s 1,..., s n s, dann ist op(e 1,..., e n ) ein Ausdruck der Sorte s Bem.: Schreibe c statt c() für Konstanten (n = 0) Sind e 1, e 2 Ausdrücke der Sorte s, so ist e 1 = e 2 eine Formel (i. e. ein Ausdruck der Sorte bool) Ist ϕ eine Formel und x eine Variable, so sind x.ϕ und x.ϕ Formeln EXPR(Σ, X ) := s S EXPR s(σ, X ), For(Σ, X ) := EXPR bool (Σ, X ) Terme t T (Σ, X ) sind Ausdrücke ohne Quantoren und Gleichheit. 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 255 / 300
4 Scala und KIV: Ausdrücke Expressions sind ein freier Datentyp (hier leicht vereinfacht): package types sealed abstract class Expr // Operation case class Op(val name:string, val typ:type) extends Expr // Variable case class Xov(val name:string, val sort:type) extends Expr // Applikation case class Ap(val fct:expr, val termlist:list[expr]) extends Expr //Allquantor case class All(val vl:list[xov], val fma:expr) extends Expr //Existenzquantor case class Ex(val vl:list[xov], val fma:expr) extends Expr Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 256 / 300
5 Scala und KIV: Parsen Die rohen Konstuktoren All, Ap etc. machen keinen Typcheck Konstruktoren mit Typcheck sind mkap, mkall etc. Formeleingabe als z.b. mkall(list(x),op( true,... )) möglich In der Praxis nicht gemacht. Stattdessen Aufruf des Parsers Eingabe wie in KIV parser.scalaparse.parse expr( x. true ) (wie in KIV) parse seq(arg:string):seq (Sequenzen), parse spec(arg:string):spec (Spezifikationen) Um Ausdrücke und Sequenzen korrekt zu parsen (Mixfix-Notation!), muss KIV eine Spezifikation kennen : Das geht mit setcurrentspecsig(sp:spec):unit setcurrentspeclistsig(spl:list[spec]):unit 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 257 / 300
6 Scala und KIV: Pretty-Printing Die rohe Ausgabe von Formeln ist nur für Debugging relevant Normalerweise Ausgabe mit pretty-printer: printer.prettyprint.xpp(arg:any):string mit Sonderzeichen printer.prettyprint.pp(arg:any):string ASCII-Ausgabe Funktioniert für beliebiges Argument arg:spec, arg:expr, etc. Für Beweisbäume (gleich) ist das Ergebnis nur ** A TREE **. Es wird zusätzlich ein Baumfenster (wie in KIV) geöffnet. 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 258 / 300
7 Scala und KIV: Sequenzen und Bäume Sequenzen und Beweisbäume sind ebenfalls ein Datentyp: package types sealed abstract class Tree case class Seq(ant:List[Expr], suc:list[expr]) extends Tree case class Vtree(concl:Seq, subtr:list[tree]) extends Tree Regelbäume lassen sich graphisch (wie in KIV) anzeigen: Entweder per pretty-printer oder direkt mit printtree.painttree.pp painttree(t:tree):unit. 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 259 / 300
8 Scala und KIV: Aussagenlogische Regeln Es ist in KIV nicht erlaubt, beliebig Bäume zusammenzubauen Stattdessen: Es gibt vordefinierte Regelbäume für Aussagenlogik: system.basicrules.con r ist der Regelbaum für conjunction right Analog: dis r, equiv l, neg l, imp r, ax etc. Allerdings: Passen nur auf die erste Formel rechts/links (der Antezedent ist eine Liste von Formeln, keine Menge) Deshalb zusätzlich: leftrotate left, leftrotate right bzw. righttrotate left, righttrotate right zum Rotieren im ant bzw. suc. 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 260 / 300
9 Scala und KIV: Aufbau von Bäumen Beispielregel: $Γ $ϕ, $ $Γ $ψ, $ $Γ $ϕ $ψ, $ con r Regelbäume enthalten Metavariablen wie $ϕ, $ψ und $Γ, $ als Platzhalter für Formeln bzw. Formellisten. Metavariablen kommen in normalen Beweisen nicht vor. 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 261 / 300
10 Scala und KIV: Aufbau von Bäumen Gegeben ein bestehender Baum (am Anfang: eine Sequenz) so lassen sich Instanzen von Regeln anbauen. refine(tree:tree,i:int,rule:tree):tree wendet die Regel rule auf die i-te Prämisse P (1-basiert) des Baums tree an. Bei der Anwendung werden in ganz R die Metavariablen so durch die konkreten Formeln aus der Regel instanziert (ergibt I(rule)), so dass die Konklusion C der Regel zu P = I(C) wird. rule C P I(rule) P tree tree G G 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 262 / 300
11 Scala und KIV: Failures (1) refine wirft Error, falls der Baum nicht genug Prämissen hat, Test mit i > tree.premno. generated.treefuns.prem(tree,i) und generated.treefuns.prems(tree) ergeben die i-te Prämisse bzw. alle Prämissen eines tree (1-basiert) des Baums tree Eine Regel kann nicht anwendbar sein die Regelanwendung schlägt fehl = refine wirft die Standardexception Failure. Für con r. Wenn Sukzedent leer, oder erste Formel keine Konjunktion, schlägt refine fehl. 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 263 / 300
12 Scala und KIV: Failures (2) Fehlschläge sind ein Prinzip beim Beweisen: Regeln, Heuristiken, Simplifierregeln können alle fehlschlagen. spezielle Unterstützung: orl(scalaexpr1,scalaexpr2) wertet zunächst scalaexpr1 aus (z.b. ein refine). Falls das nicht fehlschlägt ist das auch das Ergebnis. Nur falls es fehlschlägt, wird auch scalaexpr2 ausgewertet und liefert das Ergebnis Gewolltes Fehlschlagen durch Aufruf von fail: (i.e. def fail = throw Failure) Bem: orl ist in scala als lazy Funktion realisiert. Erspart es überall zu Schreiben: try {scalaexpr1} catch {x:failure => scalaexpr2} 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 264 / 300
13 Scala und KIV: Generisches Matching Zu refine gibt es die Verallgmeinerung: mvmatch[s,t](pattern:t, concrete:t, toinst:s):s Stellt fest, ob die Metavariablen in pattern so instanziert werden können, dass concrete herauskommt. (ob pattern auf concrete matcht ) Falls das nicht fehlschlägt, werden die Metavariablen in toinst instanziert, und die Instanz ist das Ergebnis. Variante: mvmatchp(pattern:t, concrete:t):boolean macht einen Test, ob pattern auf concrete matcht. Nützliche Anwendung im Praktikumsversuch: val whilepat = parse seq( $Γ [while $ε do $α]$ϕ ) mvmatch(whilepat, seq, parse prog( $α)) 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 265 / 300
14 Programmierung eines VCG Für s Praktikum wollen wir einen VCG ( Verification Condition Generator ) für partielle Korrektheit programmieren Ein VCG reduziert Korrektheitsaussagen für Programme auf prädikatenlogische Goals (automatisch, wenn Invarianten gegeben sind). Es zeigt sich: Die Programmierung ist analog zum Aussagenlogischen Beweiser 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 266 / 300
15 Regeln für Hoare-Kalkül Die DL-Regeln für den Hoare-Kalkül sind analog zu den aussagenlogischen Regeln implementiert Sie enthalten Metavariablen für Programme $α,$β 2 Beispiele (vollständige Listen in der Praktikumsdoku): $Γ $ϕ $Γ [skip]$ϕ skip rule $Γ, $ε [$β] $ϕ $Γ, $ε [$α]$ϕ $Γ [if $ε then $α else $β]$ϕ if forward rule Es gibt kein Normalisieren wie in KIV: Die Regel compound rule muss selbst angewandt werden 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 267 / 300
16 Spezielle Regeln: besondere Regeln für den Versuch: while rule(inv:expr):tree liefert die while-regel mit eingefüllter konkreter Invariante INV $Γ Inv Inv, $ε [$α]inv Inv, $ε $ϕ $Γ [while $ε do $α]$ϕ (while rule Inv) prakt assign tactic(tree:tree,i:int):tree wendet die Zuweisungsregel mit passender Substitution auf die i-te Prämisse an (x0 neue Variable). x0 = $τ, $Γ ($ϕ) x0 $x $Γ [$x := $τ]$ϕ prakt assign tactic) 25. Juni 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 268 / 300
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.
MehrWas Sie schon immer über funktionale Programmierung wissen wollten, aber bisher nicht zu fragen wagten
Programmieren in PPL Was Sie schon immer über funktionale Programmierung wissen wollten, aber bisher nicht zu fragen wagten PPL at a glance KIV ist im wesentlichen in PPL programmiert PPL (proof programming
MehrSemantik 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
MehrNoethersche 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:...
MehrNoethersche Induktion
Noethersche Induktion 163 Motivation: noethersche Relationen Noethersche Relationen sind direkt verknüpft mit Terminierung: Wie kann man formal ausdrücken, dass die Schleife while test do prog anhält?
MehrDynamische Logik. A. Salwicki 1970 ( algorithmische Logik ), V.R. Pratt 1976, D. Harel 1977
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
MehrTheoretische 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.
MehrFormale Methoden der Softwaretechnik 1 Vorlesung vom : Grundlage von Isabelle
1 Formale Methoden der Softwaretechnik 1 Vorlesung vom 16.11.09: Grundlage von Isabelle Christoph Lüth, Lutz Schröder Universität Bremen Wintersemester 2009/10 2 Fahrplan Teil I: Grundlagen der Formalen
Mehr! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -
! 1. Erste Schritte! 2. Einfache Datentypen! 3. Anweisungen und Kontrollstrukturen! 4. Verifikation! 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation! Spezifikation: Angabe, was ein Programm
MehrTheorem 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
Mehrn 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays)
n 1. Erste Schritte n 2. Einfache Datentypen n 3. Anweisungen und Kontrollstrukturen n 4. Verifikation n 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation n Spezifikation: Angabe, was ein
MehrStrukturierte Spezifikation: Anreicherung um nichtrekursive und rekursive Definitionen
Strukturierte Spezifikation: Anreicherung um nichtrekursive und rekursive Definitionen 13. Mai 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 128 / 290 Strukturierte Spezifikationen
MehrFormale Systeme. Aussagenlogik: Sequenzenkalkül. Prof. Dr. Bernhard Beckert WS 2010/2011 KIT INSTITUT FÜR THEORETISCHE INFORMATIK
Formale Systeme Prof. Dr. Bernhard Beckert WS 2010/2011 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State of Baden-Württemberg and National Large-scale Research Center of the Helmholtz
MehrAusdrücke in Scala. Funktionale Programmierung. Christoph Knabe FB VI
Ausdrücke in Scala Funktionale Programmierung Christoph Knabe FB VI 17.10.2014 Inhalt Einfache Ausdrücke Infix-Notation für Methodenaufruf Sonderzeichen in Bezeichnern Schlüsselwörter Konstanten Variablen
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrPraktikum Funktionale Programmierung Teil 2: Typecheck und Transformation
Praktikum Funktionale Programmierung Teil 2: Typecheck und Transformation Dr. David Sabel Sommersemester 2015 Stand der Folien: SoSe 2015 Übersicht FP-PR Teil 2: Typecheck und Transformation Sommersemester
MehrPraktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom : Monaden als Berechnungsmuster
16:02:16 2017-01-17 1 [30] Praktische Informatik 3: Funktionale Programmierung Vorlesung 11 vom 10.01.2017: Monaden als Berechnungsmuster Christoph Lüth Universität Bremen Wintersemester 2016/17 Frohes
MehrFormale Systeme. Prof. Dr. Bernhard Beckert, WS 2016/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft
Formale Systeme Prof. Dr. Bernhard Beckert, WS 2016/2017 Aussagenlogik: Tableaukalku l KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK www.kit.edu KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft
MehrFormale Systeme. Prof. Dr. Bernhard Beckert, WS 2017/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft
Formale Systeme Prof. Dr. Bernhard Beckert, WS 2017/2018 Aussagenlogik: Tableaukalku l KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK www.kit.edu KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft
MehrLogik 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
MehrPraktische Informatik 3
Praktische Informatik 3 Christian Maeder WS 03/04 Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen Vorlesung vom 12.1.2004: Ein/Ausgabe in funktionalen Sprachen 3 Inhalt Wo ist das Problem?
MehrFormale Systeme. Prof. Dr. Bernhard Beckert. Winter 2008/2009. Fakultät für Informatik Universität Karlsruhe (TH)
Formale Systeme Prof. Dr. Bernhard Beckert Fakultät für Informatik Universität Karlsruhe (TH) Winter 2008/2009 Prof. Dr. Bernhard Beckert Formale Systeme Winter 2008/2009 1 / 22 Kalküle für die Aussagenlogik
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2016 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
Mehr4. Kontrollstrukturen Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt
4. Kontrollstrukturen Programmieren / Algorithmen und Datenstrukturen 1 Prof. Dr. Bernhard Humm FB Informatik, Hochschule Darmstadt 1 Kontrollfragen Variablen und Datentypen Was ist eine Variable? Was
MehrDie Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten.
4.5.5 Rekursive Typen Die Definition eines Typen kann rekursiv sein, d.h. Typ-Konstruktoren dürfen Elemente des zu definierenden Typ erhalten. datatype IntList = Nil Cons o f ( i n t IntList ) ; Damit
MehrEinführung in die Theoretische Informatik
Einführung in die Theoretische Informatik Maximilian Haslbeck Fabian Mitterwallner Georg Moser David Obwaller cbr.uibk.ac.at Zusammenfassung der letzten LVA Definition Eine Registermaschine (RM) R ist
Mehr{P} S {Q} {P} S {Q} {P} S {Q} Inhalt. Hoare-Kalkül. Hoare-Kalkül. Hoare-Tripel. Hoare-Tripel. Hoare-Tripel
Inhalt Hoare-Kalkül Formale Verifizierung Hoare-Kalkül while-sprache Terminierung Partielle / totale Korrektheit 4.0 Hoare-Kalkül entwickelt von C.A.R. (Tony) Hoare (britischer Informatiker), 1969 formales
MehrTemporallogik und parallele Programme. 2. Juli 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 269 / 304
Temporallogik und parallele Programme 2. Juli 2013 G. Schellhorn, D. Haneberg: Formale Methoden im Software Engineering 269 / 304 Softwaresysteme allgemein (1) Bisher: Sequentielle Programme Relationale
MehrIntuitionistische Lineare Logik
Lineare Logik Intuitionistische Lineare Logik Zusammenhang zur intuitionistischen Logik Termzuweisung und funktionale Interpretation Intuitionistische Lineare Logik Sinn und Zweck : Kontrolle über Ressourcen
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun
MehrVollständigkeit. Klassifikation von Operationen
Vollständigkeit Definition Konstruktormenge := mininale Menge von Operationen, mit denen man alle Elemente (=Instanzen) des ADT konstruieren kann. Für Stack ist das die Menge {create, push} Definition
MehrEinführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen
Teil IV Semantik imperativer Sprachen 201 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap.
MehrVerarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen:
Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen: take 1 0 ( f i l t e r ( fn x => x mod 2=0) nat ) ; val it =
MehrGrundlagen der Programmierung 3 A
Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Haskell, Typen, und Typberechnung Ziele: Haskells Typisierung Typisierungs-Regeln
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Überladung und Konversion in Haskell. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Sommersemester
MehrFormale Systeme. Prädikatenlogik 2. Stufe. Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK
Formale Systeme Prof. Dr. Bernhard Beckert WS 2009/2010 KIT INSTITUT FÜR THEORETISCHE INFORMATIK KIT University of the State of Baden-Württemberg and National Large-scale Research Center of the Helmholtz
MehrFormale 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
MehrTheoretische Informatik und Logik Übungsblatt 4 (SS 2017) Lösungen
Theoretische Informatik und Logik Übungsblatt 4 (SS 2017) en Aufgabe 4.1 Für jede der folge Formeln ist folges zu tun: Wenn die Formel gültig oder unerfüllbar ist, so beweisen Sie dies mit dem Tableau-Kalkül.
MehrWas bisher geschah Modellierung in Logiken: klassische Prädikatenlogik FOL(Σ, X) Spezialfall klassische Aussagenlogik AL(P)
Was bisher geschah Modellierung in Logiken: klassische Prädikatenlogik FOL(Σ, X) Spezialfall klassische Aussagenlogik AL(P) Syntax Semantik Signatur, Variablen Terme (induktive Definition, Baumform) Atome
Mehr1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 -
1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.4. Verifikation - 1 - 4. Verifikation Spezifikation: Angabe, was ein Programm tun
MehrFormale Systeme. Tableaukalku l (ohne Gleichheit) Prof. Dr. Bernhard Beckert, WS 2015/ KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK
Formale Systeme Prof. Dr. Bernhard Beckert, WS 2015/2016 Tableaukalku l (ohne Gleichheit) KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK KIT Universita t des Landes Baden-Wu rttemberg und nationales Forschungszentrum
Mehr2. Klausur Einführung in die Theoretische Informatik Seite 1 von Welche der folgenden Aussagen zur Aussagenlogik ist falsch?
2. Klausur Einführung in die Theoretische Informatik Seite 1 von 14 1. Welche der folgenden Aussagen zur Aussagenlogik ist falsch? A. Für jede Formel A existiert eine DNF D und eine KNF K, sodass A D K
MehrDer KIV-Kalkül Simplifier und Heuristiken
Der KIV-Kalkül Simplifier und Heuristiken 1 KIV-Kalkül: Überblick Versuch 1: basic rules, ab Versuch 2: KIV-Kalkül Sequenzenkalkül kennt keine Beweisstrukturierung: Lemmas + Regeln zum Anwenden von Lemmas
MehrDie abstrakte Klasse Expression:
Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const 501 Die abstrakte Klasse Expression: Expression abstract evaluate() Add Neg Const Leider (zum Glück?) lässt sich nicht die
MehrHow To Prove A Propositional Logic
Klausur Formale Systeme Fakultät für Informatik SS 2015 Prof. Dr. Bernhard Beckert 31. Juli 2015 Vorname: Matrikel-Nr.: Die Bearbeitungszeit beträgt 60 Minuten. A1 (10) A2 (8) A3 (6) A4 (7) A5 (9) A6 (11)
MehrKorrektheit und Hoare-Kalkül für Imperative Programme
Korrektheit und Hoare-Kalkül für Imperative Programme Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer SS 06 Ziele Partielle und totale Korrektheit kennen lernen Die Regeln des Hoare-Kalkül
MehrInformatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -
Informatik I - Programmierung Globalübung 11.11.2003 Hoare-Kalkül Thomas Weiler Fachgruppe Informatik RWTH Aachen T. Weiler, RWTH Aachen - 1 - Ariane 5 Die Ariane 5 ist das jüngste Modell der Trägerrakete
Mehr12 Abstrakte Klassen, finale Klassen und Interfaces
12 Abstrakte Klassen, finale Klassen und Interfaces Eine abstrakte Objekt-Methode ist eine Methode, für die keine Implementierung bereit gestellt wird. Eine Klasse, die abstrakte Objekt-Methoden enthält,
MehrParadigmen der Programmierung
SS 11 Prüfungsklausur 25.07.2011 Aufgabe 5 (6+9 = 15 Punkte) a) Bestimmen Sie jeweils den Typ der folgenden Haskell-Ausdrücke: ( 1, 2 :"3", 4 < 5) :: (Char, String, Bool) [(last, tail), (head, take 5)]
MehrGentzen-Kalküle. bestehen aus mehreren, recht komplexen Axiomen, und wenigen Schlußregel (für Aussagenlogik: nur einer, für Prädikatenlogik drei).
Gentzen-Kalküle Axiomatische Systeme ( Hilbert Kalküle ): bestehen aus mehreren, recht komplexen Axiomen, und wenigen Schlußregel (für Aussagenlogik: nur einer, für Prädikatenlogik drei). Probleme mit
MehrStatische Codeanalyse
Statische Codeanalyse SQMT WS 17/18 Pierre Kurzer, Serkan Topaloglu, Sebastian Voigt Gliederung Einführung: Was ist Statische Codeanalyse? Was kann alles überprüft werden und wofür? Was konnte Lint? Welche
MehrEinführung in Haskell
Einführung in Haskell Axel Stronzik 21. April 2008 1 / 43 Inhaltsverzeichnis 1 Allgemeines 2 / 43 Inhaltsverzeichnis 1 Allgemeines 2 Funktions- und Typdefinitionen 2 / 43 Inhaltsverzeichnis 1 Allgemeines
MehrFormale Techniken der Software-Entwicklung
Formale Techniken der Software-Entwicklung Matthias Hölzl, Christian Kroiß 15. April 2014 Sequenzenkalkül Kann man mit den Schlussregeln falsche Aussagen ableiten? Gibt es wahre Aussagen, die man nicht
MehrBeweisen mit Semantischen Tableaux
Beweisen mit Semantischen Tableaux Semantische Tableaux geben ein Beweisverfahren, mit dem ähnlich wie mit Resolution eine Formel dadurch bewiesen wird, dass ihre Negation als widersprüchlich abgeleitet
MehrAngewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
MehrVortrag. Vortrag im Rahmen der Master-Vorlesung Semantik von Programmiersprachen an der FH München, Fachbereich Informatik
Vortrag β- and η-conversion Vortrag im Rahmen der Master-Vorlesung Semantik von Programmiersprachen an der FH München, Fachbereich Informatik von Stefan Hertel (sh_ccbiker@gmx.de Thomas Wöllert (thomas@woellert.net
MehrGrundlagen der Logik
Grundlagen der Logik Denken Menschen logisch? Selektionsaufgabe nach Watson (1966): Gegeben sind vier Karten von denen jede auf der einen Seite mit einem Buchstaben, auf der anderen Seite mit einer Zahl
MehrKapitel 6. Programme mit Schleifen. Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt
Kapitel 6 Programme mit Schleifen Wir betrachten jetzt eine einfache imperative Programmiersprache IMP. IMP verfügt über zuweisbare Variablen, Konditionale und Schleifen, hat aber keine Prozeduren. IMP
MehrDer Sequenzenkalkül. Charakterisierung der logischen Schlussfolgerung: Sequenzenkalkül für die Prädikatenlogik
Theoretische Informatik: Logik, M. Lange, FB16, Uni Kassel: 4.6 Prädikatenlogik ohne Gleichheit Der Sequenzenkalkül 138 Der Sequenzenkalkül Charakterisierung der logischen Schlussfolgerung: Sequenzenkalkül
MehrWas 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
MehrFortgeschrittene Funktionale Programmierung
Fortgeschrittene Funktionale Programmierung 12. Vorlesung Janis Voigtländer Universität Bonn Wintersemester 2015/16 Motivation Auf http://www-ps.iai.uni-bonn.de/ft: 1 Motivation 1 Betrachtungen zu Polymorphie
MehrFormale Systeme. Prof. Dr. Bernhard Beckert, WS 2017/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft
Formale Systeme Prof. Dr. Bernhard Beckert, WS 2017/2018 Pra dikatenlogik: Tableaukalku l (ohne Gleichheit) KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK www.kit.edu KIT Die Forschungsuniversita t in der
MehrFormale Systeme. Prof. Dr. Bernhard Beckert, WS 2016/ KIT Die Forschungsuniversita t in der Helmholtz-Gemeinschaft
Formale Systeme Prof. Dr. Bernhard Beckert, WS 2016/2017 Pra dikatenlogik: Tableaukalku l (ohne Gleichheit) KIT I NSTITUT F U R T HEORETISCHE I NFORMATIK www.kit.edu KIT Die Forschungsuniversita t in der
MehrKlausur Formale Systeme Fakultät für Informatik SS 2017
Klausur Formale Systeme Fakultät für Informatik SS 2017 Prof. Dr. Bernhard Beckert 3. August 2017 Name: Vorname: Matrikel-Nr.: Die Bearbeitungszeit beträgt 60 Minuten. A1 (14) A2 (6) A3 (6) A4 (8) A5 (11)
MehrPraktikum Funktionale Programmierung Teil 1: Lexen und Parsen
Stand der Folien: SoSe 2011 Praktikum Funktionale Programmierung Teil 1: Lexen und Parsen Dr. David Sabel Sommersemester 2011 Übersicht FP-PR Teil 1: Lexen & Parsen Sommersemester 2011 D. Sabel 2/20 Übersicht
MehrLösungen zum Aufgabenblatt 10 Logik und modelltheoretische Semantik
Lösungen zum Aufgabenblatt 10 Logik und modelltheoretische Semantik Universität München, CIS, SS 2013 Hans Leiß Abgabetermin: Do, 4.7.2013, 16 Uhr, in meinem Postfach Aufgabe 10.1 Vereinfache die folgenden
MehrZusammenfassung. Definition. 1 (x i ) 1 i n Sequenz von Registern x i, die natürliche Zahlen beinhalten. 2 P ein Programm. Befehle: 1 x i := x i + 1
Zusammenfassung Zusammenfassung der letzten LVA Einführung in die Theoretische Informatik Christina Kohl Alexander Maringele Georg Moser Michael Schaper Manuel Schneckenreither Eine Registermaschine (RM)
MehrEinführung in die Logik (Vorkurs)
Einführung in die Logik (Vorkurs) Jürgen Koslowski 2014-04-07 Ein Beispiel Familie A will im kommenden Jahr eine Waschmaschine, ein Auto und ein Moped anschaffen. Aber falls Herr A seinen üblichen Bonus
MehrALP I. Funktionale Programmierung
ALP I Funktionale Programmierung Typ-Klassen und SS 2011 Überladung von Datentypen Funktionen sollen oft auf verschiedene Datentypen anwendbar sein, aber nicht auf beliebige Datentypen. Beispiel: Die (+)
MehrStratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:
Stratego/XT und ASF+SDF Meta-Environment Paul Weder Seminar Transformationen Datum: 20.01.2006 Gliederung Allgemeines ASF+SDF Meta-Environment Stratego/XT Zusammenfassung/Vergleich SDF (Syntax Definition
Mehr- Welche konkreten Invarianten müssen gelten? Berücksichtigen: Invarianten aus Modell und Implem.
234 Implementierung von Abstrakten Datentypen und Korrektheitskriterien Ziel: Zusammenhang zwischen Spezifikation (Modell!) und Implementierung(en) herstellen Spezifikation Implementierung abstraktes Modell?
MehrKlausur Formale Systeme Fakultät für Informatik SS Prof. Dr. Bernhard Beckert. 31. Juli Die Bearbeitungszeit beträgt 60 Minuten.
Name: Vorname: Klausur Formale Systeme Fakultät für Informatik Matrikel-Nr.: SS 2015 Prof. Dr. Bernhard Beckert 31. Juli 2015 Die Bearbeitungszeit beträgt 60 Minuten. A1 (10) A2 (8) A3 (6) A4 (7) A5 (9)
MehrHaskell, Typen, und Typberechnung. Grundlagen der Programmierung 3 A. Einige andere Programmiersprachen. Typisierung in Haskell
Haskell, Typen, und Typberechnung Grundlagen der Programmierung 3 A Typen, Typberechnung und Typcheck Prof. Dr. Manfred Schmidt-Schauß Ziele: Haskells Typisierung Typisierungs-Regeln Typ-Berechnung Milners
Mehr2 Theorie der semantischen Typen
2 Theorie der semantischen Typen 2 Theorie der semantischen Typen [ Dowty 83-97, Gamut 75-9, Partee 338-34] 2. Typen Eine mögliche Erweiterung von PL ist die Prädikatenlogik der 2. Stufe (PL2). In PL2
Mehr4.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
MehrGrundlegende Datentypen
Grundlegende Datentypen (Funktionale Programmierung) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 21:08 Grundlegende Datentypen 1/16 Typen in Haskell ist alles streng typisiert Haskell verfügt über
MehrEinführung in die Programmiertechnik
Einführung in die Programmiertechnik Verifikation 2 Vermeidung von Fehlern Verwendung geeigneter Werkzeuge Auswahl einer dem Problem angemessenen Programmiersprache Verwendung eines zuverlässigen Compilers
MehrKapitel 11. Prädikatenlogik Quantoren und logische Axiome
Kapitel 11 Prädikatenlogik Im Kapitel über Aussagenlogik haben wir die Eigenschaften der Booleschen Operationen untersucht. Jetzt wollen wir das als Prädikatenlogik bezeichnete System betrachten, das sich
MehrGrundlagen der Programmierung 2. Operationale Semantik
Grundlagen der Programmierung 2 Operationale Semantik Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 29. April 2009 Semantik von Programmiersprachen Semantik = Bedeutung
MehrMehrsortige Strukturen
Was bisher geschah Modellierung von Daten durch Mengen (Individuenbereiche), häufig zusammengesetzt durch Mengenoperationen, Zusammenhängen zwischen Individuen durch Relationen (auch Eigenschaften) Funktionen
MehrProgrammierung 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
MehrKlausur Formale Systeme Fakultät für Informatik WS 2015/2016
Klausur Formale Systeme Fakultät für Informatik WS 2015/2016 Prof. Dr. Bernhard Beckert 4. März 2016 Vorname: Name: Matrikel-Nr.: Platz-Nr.: Code: **Vorname** **Familienname** **Matr.-Nr.** **Hörsaal**
MehrWS 2012/2013. Robert Giegerich. 21. November 2012
WS 2012/2013 Robert AG Praktische Informatik 21. November 2012 Funktionen als Bürger erster Klasse Funktionen definieren kann man in jeder Programmiersprache. Eine funktionalen Programmiersprache erlaubt
MehrKonzepte von Programmiersprachen
Konzepte von Programmiersprachen Kapitel 3: Ausdrücke Phillip Heidegger Universität Freiburg, Deutschland SS 2009 Phillip Heidegger (Univ. Freiburg) Konzepte von Programmiersprachen KvP 1 / 17 Inhalt Let
MehrEinführung Funktionsweise von BLAST Praxis? BLAST. David Dueck
Funktionsweise von 12.07.2007 Funktionsweise von Was ist? Berkeley Lazy Abstraction Software Verification Tool statische Prüfung von Sicherheitseigenschaften Funktionsweise von Welches Problem löst? Einfachste
MehrGrundlegende Datentypen
Funktionale Programmierung Grundlegende Datentypen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 14.11.2017 15:37 Inhaltsverzeichnis Typen........................................
MehrSemantik 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
MehrProgrammieren in Java
Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1
MehrKorrektheit imperativer Algorithmen
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Abschnitt 9 Korrektheit imperativer Algorithmen Skript zur Vorlesung Einführung in die Programmierung im Wintersemester
MehrWozu formale Logik? Programmiersprachen Logik im Fingerhut. Formeln. Logik im Fingerhut (24. Januar 2005) Belegung und Interpretation
Wozu formale Logik? Logik im Fingerhut Studiengang Informatik Universität Bremen präzise Beschreibung von Aussagen über die Welt bzw. über verschiedene Welten Ziehen und Überprüfen von Schlussfolgerungen
MehrAbschnitt 11: Korrektheit von imperativen Programmen
Abschnitt 11: Korrektheit von imperativen Programmen 11. Korrektheit von imperativen Programmen 11.1 11.2Testen der Korrektheit in Java Peer Kröger (LMU München) in die Programmierung WS 16/17 931 / 961
MehrGenerizität, Abstraktion, Rekursion
Kapitel 17 Generizität, Abstraktion, Rekursion 17.1 Generische Klassen Fragen: was ist der Typ einer generischen Klasse? Kann man zwischen generischen Klassen Vererbung definieren? Kann man zwischen generischen
MehrZuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte
Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte while-statement erneut ausgeführt. Ist die Bedingung
MehrHASKELL KAPITEL 2.1. Notationen: Currying und das Lambda-Kalkül
HASKELL KAPITEL 2.1 Notationen: Currying und das Lambda-Kalkül Bisheriges (Ende VL-Teil 1) weite :: (Float,Float) ->Float weite (v0, phi) = (square(v0)/9.81) * sin(2 * phi) (10, 30 ) smaller ::(Integer,
MehrLabor Compilerbau. Jan Hladik. Sommersemester DHBW Stuttgart. Jan Hladik (DHBW Stuttgart) Labor Compilerbau Sommersemester / 20
Labor Compilerbau Jan Hladik DHBW Stuttgart Sommersemester 2017 Jan Hladik (DHBW Stuttgart) Labor Compilerbau Sommersemester 2017 1 / 20 Resolution in der Prädikatenlogik testet Erfüllbarkeit (indirekt
Mehr