Userinterfaces für Computer Theorem Prover, Machbarkeits-Studie im ISAC-Projekt Bachelorarbeit Telematik Institut für Software Technologie Technische Universität Graz 21.06.2011
Outline 1 Ausgangssituation: das künftige Front-end Der Theoremprover Die Konzeption des s s Filestruktur im Übergangsstadium Das : und plugins 2 Projekt: Vorarbeiten für structured derivations (SD) Definition der Konfiguration des Projektes in der IDE Komponenten zur von SD 3 Zusammenfassung
Outline 1 Ausgangssituation: das künftige Front-end Der Theoremprover Die Konzeption des s s Filestruktur im Übergangsstadium Das : und plugins 2 Projekt: Vorarbeiten für structured derivations (SD) Definition der Konfiguration des Projektes in der IDE Komponenten zur von SD 3 Zusammenfassung
Der Theoremprover Anwendungen von Mechanisieren von Mathematik Theorien natürliche, reelle, komplexe Zahlen, Listen, Lattices,... Gröbner Basen, Integral/Differential, Taylorreihen,... High Order Logics, Logic of Computable Functions,... Math.Grundlagen für Softwaretechnologie Hoare Logic, Temporal Logic of Actions, Hoare for Java Theory for Unix file-system security, for state spaces,... Archive of Formal Proofs http://afp.sourceforge.net von in Entwicklungstools Boogie Verification Condition Generator πd.e Projekt: Unterstützung Domain-spezifischen CTPs Test Case Generators (TUG)? Isar, die Beweissprache von Demo Allgemeine Dreiecke Beweisteile asynchron interpretiert
Der Theoremprover Anwendungen von Mechanisieren von Mathematik Theorien natürliche, reelle, komplexe Zahlen, Listen, Lattices,... Gröbner Basen, Integral/Differential, Taylorreihen,... High Order Logics, Logic of Computable Functions,... Math.Grundlagen für Softwaretechnologie Hoare Logic, Temporal Logic of Actions, Hoare for Java Theory for Unix file-system security, for state spaces,... Archive of Formal Proofs http://afp.sourceforge.net von in Entwicklungstools Boogie Verification Condition Generator πd.e Projekt: Unterstützung Domain-spezifischen CTPs Test Case Generators (TUG)? Isar, die Beweissprache von Demo Allgemeine Dreiecke Beweisteile asynchron interpretiert
Der Theoremprover Anwendungen von Mechanisieren von Mathematik Theorien natürliche, reelle, komplexe Zahlen, Listen, Lattices,... Gröbner Basen, Integral/Differential, Taylorreihen,... High Order Logics, Logic of Computable Functions,... Math.Grundlagen für Softwaretechnologie Hoare Logic, Temporal Logic of Actions, Hoare for Java Theory for Unix file-system security, for state spaces,... Archive of Formal Proofs http://afp.sourceforge.net von in Entwicklungstools Boogie Verification Condition Generator πd.e Projekt: Unterstützung Domain-spezifischen CTPs Test Case Generators (TUG)? Isar, die Beweissprache von Demo Allgemeine Dreiecke Beweisteile asynchron interpretiert
Der Theoremprover Anwendungen von Mechanisieren von Mathematik Theorien natürliche, reelle, komplexe Zahlen, Listen, Lattices,... Gröbner Basen, Integral/Differential, Taylorreihen,... High Order Logics, Logic of Computable Functions,... Math.Grundlagen für Softwaretechnologie Hoare Logic, Temporal Logic of Actions, Hoare for Java Theory for Unix file-system security, for state spaces,... Archive of Formal Proofs http://afp.sourceforge.net von in Entwicklungstools Boogie Verification Condition Generator πd.e Projekt: Unterstützung Domain-spezifischen CTPs Test Case Generators (TUG)? Isar, die Beweissprache von Demo Allgemeine Dreiecke Beweisteile asynchron interpretiert
Der Theoremprover Anwendungen von Mechanisieren von Mathematik Theorien natürliche, reelle, komplexe Zahlen, Listen, Lattices,... Gröbner Basen, Integral/Differential, Taylorreihen,... High Order Logics, Logic of Computable Functions,... Math.Grundlagen für Softwaretechnologie Hoare Logic, Temporal Logic of Actions, Hoare for Java Theory for Unix file-system security, for state spaces,... Archive of Formal Proofs http://afp.sourceforge.net von in Entwicklungstools Boogie Verification Condition Generator πd.e Projekt: Unterstützung Domain-spezifischen CTPs Test Case Generators (TUG)? Isar, die Beweissprache von Demo Allgemeine Dreiecke Beweisteile asynchron interpretiert
Outline 1 Ausgangssituation: das künftige Front-end Der Theoremprover Die Konzeption des s s Filestruktur im Übergangsstadium Das : und plugins 2 Projekt: Vorarbeiten für structured derivations (SD) Definition der Konfiguration des Projektes in der IDE Komponenten zur von SD 3 Zusammenfassung
JVM Isar GUI Die Konzeption des s Isar API Scala internal protocol SML API structured Derivations (SD) Interpreter for SD
Kommunikationsprotokoll Scala SML Das Protokoll ist asynchron: verschiedene Teile eines Beweises werden in verschiedenen Threads interpretiert Die Threads werden von Scala- Actors verwaltet ( Actors von der Programmsprache Erlang übernommen) Das Protokoll hat kein API nach aussen: Der zielt auf konsistente Verwaltung großer, verteilter Theorie-Bibliotheken Anwendungsprogrammierer sollen nicht hier eingreifen, sondern Theorien erweitern! Grundsätzliches Problem für das Projekt SD!
Kommunikationsprotokoll Scala SML Das Protokoll ist asynchron: verschiedene Teile eines Beweises werden in verschiedenen Threads interpretiert Die Threads werden von Scala- Actors verwaltet ( Actors von der Programmsprache Erlang übernommen) Das Protokoll hat kein API nach aussen: Der zielt auf konsistente Verwaltung großer, verteilter Theorie-Bibliotheken Anwendungsprogrammierer sollen nicht hier eingreifen, sondern Theorien erweitern! Grundsätzliches Problem für das Projekt SD!
Kommunikationsprotokoll Scala SML Das Protokoll ist asynchron: verschiedene Teile eines Beweises werden in verschiedenen Threads interpretiert Die Threads werden von Scala- Actors verwaltet ( Actors von der Programmsprache Erlang übernommen) Das Protokoll hat kein API nach aussen: Der zielt auf konsistente Verwaltung großer, verteilter Theorie-Bibliotheken Anwendungsprogrammierer sollen nicht hier eingreifen, sondern Theorien erweitern! Grundsätzliches Problem für das Projekt SD!
Kommunikationsprotokoll Scala SML Das Protokoll ist asynchron: verschiedene Teile eines Beweises werden in verschiedenen Threads interpretiert Die Threads werden von Scala- Actors verwaltet ( Actors von der Programmsprache Erlang übernommen) Das Protokoll hat kein API nach aussen: Der zielt auf konsistente Verwaltung großer, verteilter Theorie-Bibliotheken Anwendungsprogrammierer sollen nicht hier eingreifen, sondern Theorien erweitern! Grundsätzliches Problem für das Projekt SD!
Kommunikationsprotokoll Scala SML Das Protokoll ist asynchron: verschiedene Teile eines Beweises werden in verschiedenen Threads interpretiert Die Threads werden von Scala- Actors verwaltet ( Actors von der Programmsprache Erlang übernommen) Das Protokoll hat kein API nach aussen: Der zielt auf konsistente Verwaltung großer, verteilter Theorie-Bibliotheken Anwendungsprogrammierer sollen nicht hier eingreifen, sondern Theorien erweitern! Grundsätzliches Problem für das Projekt SD!
Kommunikationsprotokoll Scala SML Das Protokoll ist asynchron: verschiedene Teile eines Beweises werden in verschiedenen Threads interpretiert Die Threads werden von Scala- Actors verwaltet ( Actors von der Programmsprache Erlang übernommen) Das Protokoll hat kein API nach aussen: Der zielt auf konsistente Verwaltung großer, verteilter Theorie-Bibliotheken Anwendungsprogrammierer sollen nicht hier eingreifen, sondern Theorien erweitern! Grundsätzliches Problem für das Projekt SD!
Outline 1 Ausgangssituation: das künftige Front-end Der Theoremprover Die Konzeption des s s Filestruktur im Übergangsstadium Das : und plugins 2 Projekt: Vorarbeiten für structured derivations (SD) Definition der Konfiguration des Projektes in der IDE Komponenten zur von SD 3 Zusammenfassung
$ find -name *.scala./src/pure/general/xml.scala./src/pure/general/linear_set.scala./src/pure/general/symbol.scala./src/pure/general/exn.scala./src/pure/general/position.scala./src/pure/general/scan.scala./src/pure/general/xml_data.scala./src/pure/general/yxml.scala./src/pure/general/markup.scala :./src/pure/general/sha1.scala./src/pure/general/timing.scala./src/pure/general/pretty.scala../src/pure/concurrent/volatile.scala./src/pure/concurrent/future.scala./src/pure/concurrent/simple_thread.scala../src/pure/thy/html.scala./src/pure/thy/completion.scala./src/pure/thy/thy_header.scala./src/pure/thy/thy_syntax.scala./src/pure/isac/isac.scala./src/pure/library.scala../src/pure/isar/keyword.scala./src/pure/isar/outer_syntax.scala./src/pure/isar/token.scala./src/pure/isar/parse.scala../src/pure/system/gui_setup.scala./src/pure/system/isabelle_system.scala./src/pure/general/timing.scala Files: *.scala
Outline 1 Ausgangssituation: das künftige Front-end Der Theoremprover Die Konzeption des s s Filestruktur im Übergangsstadium Das : und plugins 2 Projekt: Vorarbeiten für structured derivations (SD) Definition der Konfiguration des Projektes in der IDE Komponenten zur von SD 3 Zusammenfassung
Das : und plugins is a mature programmer s text editor with hundreds (counting the time developing plugins) of person-years of development behind it. Also: Die Funktionalität von wird über plugins bestimmt verwendet eine Reihe davon der Parser Sidekick Console für -Komponenten + Scala + Ml etc ist open source mit großer Community Anfragen an Mailinglisten von (ohne Scala-plugin!) und
Das : und plugins is a mature programmer s text editor with hundreds (counting the time developing plugins) of person-years of development behind it. Also: Die Funktionalität von wird über plugins bestimmt verwendet eine Reihe davon der Parser Sidekick Console für -Komponenten + Scala + Ml etc ist open source mit großer Community Anfragen an Mailinglisten von (ohne Scala-plugin!) und
Das : und plugins is a mature programmer s text editor with hundreds (counting the time developing plugins) of person-years of development behind it. Also: Die Funktionalität von wird über plugins bestimmt verwendet eine Reihe davon der Parser Sidekick Console für -Komponenten + Scala + Ml etc ist open source mit großer Community Anfragen an Mailinglisten von (ohne Scala-plugin!) und
Das : und plugins is a mature programmer s text editor with hundreds (counting the time developing plugins) of person-years of development behind it. Also: Die Funktionalität von wird über plugins bestimmt verwendet eine Reihe davon der Parser Sidekick Console für -Komponenten + Scala + Ml etc ist open source mit großer Community Anfragen an Mailinglisten von (ohne Scala-plugin!) und
Das : und plugins is a mature programmer s text editor with hundreds (counting the time developing plugins) of person-years of development behind it. Also: Die Funktionalität von wird über plugins bestimmt verwendet eine Reihe davon der Parser Sidekick Console für -Komponenten + Scala + Ml etc ist open source mit großer Community Anfragen an Mailinglisten von (ohne Scala-plugin!) und
Outline 1 Ausgangssituation: das künftige Front-end Der Theoremprover Die Konzeption des s s Filestruktur im Übergangsstadium Das : und plugins 2 Projekt: Vorarbeiten für structured derivations (SD) Definition der Konfiguration des Projektes in der IDE Komponenten zur von SD 3 Zusammenfassung
Definition der : Feasibility-Study zur Implementierung von structured derivations (SD) in. Die Implementierung soweit vorantreiben wie im gegebenen Studenausmaß möglich! Milestones: 1 Relevante Komponenten identifizieren und studieren 2 Installation der Standard-Komponenten 3 Entwicklungsumgebung vom -Team kopieren 4 Relevante Komponenten implementieren Plugin für SD zugehörigen Parser nicht vorgesehen: SD-Interpreter in Isar (SML)
Beispiel structured derivation (SD) Simplify (1 x) (x 2 + 1) + x 3 x 2 (1 x) (x 2 + 1) + x 3 x 2 {RewriteSet purify} (1 + 1 x) (x 2 + 1) + x 3 + 1 x 2 {RewriteSet simplify_pure} (1 + 1 x) (x 2 + 1) + x 3 + 1 x 2 {RewriteSet expand_poly_} 1 x 2 + 1 1 + ( 1 x x 2 + 1 x 1) + x 3 + 1 x 2... 1 + 1 x + 0 x 2 + 0 x 3... 1 + 1 x {RewriteSet reduce_012_} 1 + 1 x {RewriteSet beautify} 1 x
Outline 1 Ausgangssituation: das künftige Front-end Der Theoremprover Die Konzeption des s s Filestruktur im Übergangsstadium Das : und plugins 2 Projekt: Vorarbeiten für structured derivations (SD) Definition der Konfiguration des Projektes in der IDE Komponenten zur von SD 3 Zusammenfassung
Konfiguration in Mehrere Run-Konfigurationen sind praktisch: Start von + Plug-ins aus Exekution der fertig kompilierten.jar Exkution der eingebundenen Sources: zum Debuggen! Start von aus der Konsole Dementsprechend komplex sind die Konfigurations-Files: build.xml 102 LOCs project.xml 25 LOCs project.properties 85 LOCs build-impl.xml 708 LOCs (teilw. automatisch generiert)
Konfiguration in Mehrere Run-Konfigurationen sind praktisch: Start von + Plug-ins aus Exekution der fertig kompilierten.jar Exkution der eingebundenen Sources: zum Debuggen! Start von aus der Konsole Dementsprechend komplex sind die Konfigurations-Files: build.xml 102 LOCs project.xml 25 LOCs project.properties 85 LOCs build-impl.xml 708 LOCs (teilw. automatisch generiert)
Outline 1 Ausgangssituation: das künftige Front-end Der Theoremprover Die Konzeption des s s Filestruktur im Übergangsstadium Das : und plugins 2 Projekt: Vorarbeiten für structured derivations (SD) Definition der Konfiguration des Projektes in der IDE Komponenten zur von SD 3 Zusammenfassung
Die Konzeption des s JVM Main Buffer plugins.jar Sidekick Scalacons. Hyperlink... Pure.jar + SD Scala internal protocol SD.jar (test) (isac.jar)
-Plugin Aufbau: Ein Plugin besteht aus: Source-Files: Scala Property file XML-Files: glue code zwischen Java (Editor) und Scala (Plugin)
-Plugin Aufbau: Ein Plugin besteht aus: Source-Files: Scala Property file XML-Files: glue code zwischen Java (Editor) und Scala (Plugin)
-Plugin Aufbau: Ein Plugin besteht aus: Source-Files: Scala Property file XML-Files: glue code zwischen Java (Editor) und Scala (Plugin)
-Plugin Aufbau: Ein Plugin besteht aus: Source-Files: Scala Property file XML-Files: glue code zwischen Java (Editor) und Scala (Plugin)
src/tools/c$ ls -l * build.xml build/* contrib/* dist/* plugin/build.xml plugin/changes40.txt plugin/changes42.txt plugin/description.html plugin/isacactions.java plugin/isac.iml plugin/isac.java plugin/isacoptionpane.java plugin/isacplugin.java plugin/isactextarea.java plugin/isactoolpanel.java plugin/plugin plugin/readme.txt nbproject/* src/actions.xml src/changes40.txt src/changes42.txt src/description.html src/dockables.xml src/isacactions.scala src/isac.iml src/isacoptionpane.scala src/isacplugin.scala src/isac.props src/isac.scala src/isactextarea.scala src/isactoolpanel.scala src/manifest.mf src/readme.txt Sources des Plugins
Anforderungen an das Versuchs-Plugin Folgende Funktionalität wurde zu Testzwecken umgesetzt: Grundsätzlicher Aufbau eines GUIs Kopieren von Text zwischen den einzelnen Buffers Somit auch Zugriff auf andere Plugins! Ansatz für die Einbindung des SD-Parsers Zugriff auf -Pure: parsen von SD parallel zu /Isar DEMO
Anforderungen an das Versuchs-Plugin Folgende Funktionalität wurde zu Testzwecken umgesetzt: Grundsätzlicher Aufbau eines GUIs Kopieren von Text zwischen den einzelnen Buffers Somit auch Zugriff auf andere Plugins! Ansatz für die Einbindung des SD-Parsers Zugriff auf -Pure: parsen von SD parallel zu /Isar DEMO
Anforderungen an das Versuchs-Plugin Folgende Funktionalität wurde zu Testzwecken umgesetzt: Grundsätzlicher Aufbau eines GUIs Kopieren von Text zwischen den einzelnen Buffers Somit auch Zugriff auf andere Plugins! Ansatz für die Einbindung des SD-Parsers Zugriff auf -Pure: parsen von SD parallel zu /Isar DEMO
Anforderungen an das Versuchs-Plugin Folgende Funktionalität wurde zu Testzwecken umgesetzt: Grundsätzlicher Aufbau eines GUIs Kopieren von Text zwischen den einzelnen Buffers Somit auch Zugriff auf andere Plugins! Ansatz für die Einbindung des SD-Parsers Zugriff auf -Pure: parsen von SD parallel zu /Isar DEMO
Anforderungen an das Versuchs-Plugin Folgende Funktionalität wurde zu Testzwecken umgesetzt: Grundsätzlicher Aufbau eines GUIs Kopieren von Text zwischen den einzelnen Buffers Somit auch Zugriff auf andere Plugins! Ansatz für die Einbindung des SD-Parsers Zugriff auf -Pure: parsen von SD parallel zu /Isar DEMO
Anforderungen an das Versuchs-Plugin Folgende Funktionalität wurde zu Testzwecken umgesetzt: Grundsätzlicher Aufbau eines GUIs Kopieren von Text zwischen den einzelnen Buffers Somit auch Zugriff auf andere Plugins! Ansatz für die Einbindung des SD-Parsers Zugriff auf -Pure: parsen von SD parallel zu /Isar DEMO
Anforderungen an das Versuchs-Plugin Folgende Funktionalität wurde zu Testzwecken umgesetzt: Grundsätzlicher Aufbau eines GUIs Kopieren von Text zwischen den einzelnen Buffers Somit auch Zugriff auf andere Plugins! Ansatz für die Einbindung des SD-Parsers Zugriff auf -Pure: parsen von SD parallel zu /Isar DEMO
Zusammenfassung Folgende Milestones wurden erfolgreich abgeschlossen: 1 Relevante Komponenten dokumentiert 2 Installation der Standard-Komponenten: Mercurial Versioncontrol IDE Standard Bundle 3 Entwicklungsumgebung vom -Team kopieren -Sources vom Repository München (Java, Scala, ML) als Projekt definiert 4 Relevante Komponenten implementieren Plugin für SD Verbindung des Plugins zu zugehörigen Parser: nur ein Test in SML
Zusammenfassung Folgende Milestones wurden erfolgreich abgeschlossen: 1 Relevante Komponenten dokumentiert 2 Installation der Standard-Komponenten: Mercurial Versioncontrol IDE Standard Bundle 3 Entwicklungsumgebung vom -Team kopieren -Sources vom Repository München (Java, Scala, ML) als Projekt definiert 4 Relevante Komponenten implementieren Plugin für SD Verbindung des Plugins zu zugehörigen Parser: nur ein Test in SML
Zusammenfassung Folgende Milestones wurden erfolgreich abgeschlossen: 1 Relevante Komponenten dokumentiert 2 Installation der Standard-Komponenten: Mercurial Versioncontrol IDE Standard Bundle 3 Entwicklungsumgebung vom -Team kopieren -Sources vom Repository München (Java, Scala, ML) als Projekt definiert 4 Relevante Komponenten implementieren Plugin für SD Verbindung des Plugins zu zugehörigen Parser: nur ein Test in SML
Zusammenfassung Folgende Milestones wurden erfolgreich abgeschlossen: 1 Relevante Komponenten dokumentiert 2 Installation der Standard-Komponenten: Mercurial Versioncontrol IDE Standard Bundle 3 Entwicklungsumgebung vom -Team kopieren -Sources vom Repository München (Java, Scala, ML) als Projekt definiert 4 Relevante Komponenten implementieren Plugin für SD Verbindung des Plugins zu zugehörigen Parser: nur ein Test in SML
Zusammenfassung Aus Zeitgründen nicht möglich: ein komplettes SD-Plugin; dazu wäre auch ein Interpreter auf der ML-Seite nötig. + + + Voraussetzungen für künftige Entwicklung geschaffen: 1 für die von structured derivations in... 2... als Vorarbeit für als künftiges ISAC- 3 für Mitarbeit an künftiger von in Entwicklungswerkzeuge (Testcase-Generation etc).
Zusammenfassung Aus Zeitgründen nicht möglich: ein komplettes SD-Plugin; dazu wäre auch ein Interpreter auf der ML-Seite nötig. + + + Voraussetzungen für künftige Entwicklung geschaffen: 1 für die von structured derivations in... 2... als Vorarbeit für als künftiges ISAC- 3 für Mitarbeit an künftiger von in Entwicklungswerkzeuge (Testcase-Generation etc).
Zusammenfassung Aus Zeitgründen nicht möglich: ein komplettes SD-Plugin; dazu wäre auch ein Interpreter auf der ML-Seite nötig. + + + Voraussetzungen für künftige Entwicklung geschaffen: 1 für die von structured derivations in... 2... als Vorarbeit für als künftiges ISAC- 3 für Mitarbeit an künftiger von in Entwicklungswerkzeuge (Testcase-Generation etc).
Danke für die Aufmerksamkeit!