src/Doc/isac/msteger/official_docu/Doku.tex
changeset 52107 f8845fc8f38d
parent 52056 f5d9bceb4dc0
equal deleted inserted replaced
52106:7f3760f39bdc 52107:f8845fc8f38d
     1 \chapter{Definition der Aufgabenstellung}
       
     2 \section{Detaillierte Beschreibung der Aufgabenstellung}
       
     3 Zu Beginn des Projekts wurden einige Vorgaben und Ziele des Projektes erarbeitet und im Laufe des Projekts etwas angepasst. Es wurde bewusst auf eine zu einschr\"ankende Aufgabenstellung verzichtet, da Entwicklungen und Erarbeitungen von verschiedenen Umsetzungsstrategien erw\"unscht war. 
       
     4 
       
     5 Hauptaugenmerk war dabei auf die Erstellung eines jEdit-Plugins, dass die Verarbeitung von Back's Structured Derivations m\"oglich machen soll, gelegt worden. Mit anderen Worten, es sollte so viel Plugin-Code, wie im begrenzten Projektzeitraum m\"oglich, implementiert werden.
       
     6 
       
     7 Weiters sollte eine Projektstruktur aufgebaut werden, die die Initialisierungsarbeiten von weiterf\"uhrende bzw. nachfolgende Projekten erleichtert und somit verk\"urzt. Dabei sollte darauf geachtet werden, dass die vom Isabelleteam bereits verwendete Projekthierarchie soweit wie m\"oglich \"ubernommen bzw. erweitert wird.
       
     8 Die nachfolgende Auflistung soll die wichtigsten Tasks nochmals zusammenfassen:
       
     9 \begin{enumerate}
       
    10 \item Relevante Isabelle Komponenten identifizieren und studieren
       
    11 \item Installation der Standard-Komponenten
       
    12 \item Entwicklungsumgebung vom Isabelle-Team kopieren
       
    13 \item Relevante Komponenten implementieren
       
    14   \begin{itemize}
       
    15   \item jEdit Plugin f\"ur SD
       
    16   \item zugeh\"origen Parser
       
    17   \item nicht vorgesehen: SD-Interpreter in Isar (SML)
       
    18   \end{itemize}
       
    19 \end{enumerate}
       
    20 
       
    21 \chapter{Beleuchtung der Projekt-relevanten Technologien}
       
    22 Dieses Kapitel soll die vielen unterschiedlichen Technologien, die im Rahmen dieser Arbeit verwendet oder zumindest ber\"uhrt wurden, beleuchten und dem Leser helfen, nachfolgende Zusammenh\"ange zu verstehen. Nat\"urlich kann in keines der folgenden Themen sehr tief eingestiegen werden. Viel mehr sollen die nachfolgenden Ausf\"uhrungen einen groben \"Uberblick \"uber die einzelnen Technologien geben.
       
    23 \section{Back's Structured Derivations}
       
    24 Wie in der Aufgabenstellung bereits beschrieben, war die Erstellung eines Structured Derivation Plugins das Hauptziel dieser Arbeit. Aus diesem Grund wird in diesem Absatz kurz auf die von Prof. Ralph-Johan Back einf\"uhrten Structured Derivations eingegangen und dessen Eigenschaften bzw. Zusammenh\"ange beschrieben.
       
    25 
       
    26 Das nachfolgende Beispiel zeigt ein einfaches Beispiel, wie eine Formel mittels SD dargestellt bzw. umgeformt werden kann:
       
    27 
       
    28 %{\footnotesize
       
    29 \begin{tabbing}
       
    30 123,\=1234\=1234\=1234\=1234\=1234\=1234\=123\=\kill
       
    31 \>$\bullet$\>Simplify $(1 - x) * (x ^ 2 + 1) + x ^ 3 - x ^ 2$\\
       
    32 \>  \>$(1 - x) * (x ^ 2 + 1) + x ^ 3 - x ^ 2$\\
       
    33 \>$\equiv$\>$\{ {\it RewriteSet}\;{\it purify}\}$\\
       
    34 \>  \>$(1 + -1 * x) * (x ^ 2 + 1) + x ^ 3 + -1 * x ^ 2$\\
       
    35 \>$\equiv$\>$\{{\it RewriteSet}\;{\it simplify\_pure}\}$\\
       
    36 \>  \>$\bullet$\>$(1 + -1 * x) * (x ^ 2 + 1) + x ^ 3 + -1 * x ^ 2$\\
       
    37 \>  \>$\equiv$\>$\{{\it RewriteSet}\;{\it expand\_poly\_}\}$ \\
       
    38 \>  \>   \>$1 * x ^ 2 + 1 * 1 + (-1 * x * x ^ 2 + -1 * x * 1) + x ^ 3 +-1 * x ^ 2$\\
       
    39 \>  \>$\equiv$\>\vdots\\
       
    40 \>  \>  \>$1 + -1 * x + 0 * x ^ 2 + 0 * x ^ 3$\\
       
    41 \>  \>$\equiv$\>$\{{\it RewriteSet}\;{\it reduce\_012\_}\}$  \\
       
    42 \>  \>     \>$1 + -1 * x$\\
       
    43 \>\dots\>$1 + -1 * x$\\
       
    44 \>$\equiv$\>$\{{\it RewriteSet}\;{\it beautify}\}$\\
       
    45 \>  \>$1-x$
       
    46 \end{tabbing}
       
    47 %}
       
    48 
       
    49 Dieses Beispiel kann wie folgt interpretiert werden:
       
    50 \begin{enumerate}
       
    51 \item Die erste Zeile ist als Angabe bzw. Ausgangspunkt der Berechnung zu verstehen.
       
    52 \item Nun folgt der eigentliche Ablauf einer Umformung mittels SD: Mit der Formel in der zweiten Zeile beginnt die Berechnung.
       
    53 \item Die n\"achste Zeile gibt nun an, wie die Formel aus der direkt dar\"uberliegenden Zeile umgeformt bzw. aufbereitet wird. Es ist also eine Beschreibung bzw. die passende Rechenregel, um von der Ausgangsformel auf die nachfolgende Formel schlie{\ss}en zu k\"onnen.
       
    54 \item Aus dieser Rechenvorschrift ergibt sich die Formel in der n\"achsten Zeile.
       
    55 \item Dieser Ablauf wiederholt sich und zieht sich \"uber die weiteren Berechnungen.
       
    56 \end{enumerate}
       
    57 
       
    58 Back liefert mit SD eine sehr gute Darstellungs- und Verbarbeitungs-Richtlinie, die einerseits dem Leser/Anwender hilft, da durch die Regel- bzw. Beschreibungs-Zeile klar gestellt wird, wie der letzte Berechnungsschritt durchgef\"uhrt wurde. Andererseits bringt SD auch f\"ur den Programmierer einen klaren Vorteil, da \"uber die vorgestellten Sonderzeichen das Parsen von \textit{SD-Code} vereinfacht bzw. direkt (ohne extra Schl\"usselw\"orter einf\"uhren zu m\"ussen) m\"oglich ist.
       
    59 
       
    60 \section{Der Texteditor jEdit}\label{jEdit}
       
    61 %     http://www.jedit.org/
       
    62 %     http://de.wikipedia.org/wiki/JEdit
       
    63 %     http://www.chip.de/downloads/jEdit_19235021.html
       
    64 %
       
    65 jEdit ist ein in Java geschriebener und als Open-Source-Projekt erh\"altlicher Texteditor, der vor allem durch sein sehr gut entwickeltes und ebenso einfaches Plugin-Management-System sehr effektiv eingesetzt werden kann. Solche Plugins k\"{o}nnen direkt in jEdit installiert oder durch manuelles Hinzuf\"{u}gen eines Plugin-Paketes genutzt werden. Dadurch ist dieser Editor sehr flexibel in der Anwendung und kann den eigenen Bed\"{u}rfnissen perfekt angepasst werden.
       
    66 Diese Umst\"ande sind wohl auch der Grund, warum sich die Entwickler von Isabelle f\"ur diesen Editor entschieden haben. Hierbei ist zu erw\"{a}hnen, dass hier eine etwas modifizierte bzw. an Isabelle angepasste Version verwendet wird. Es empfiehlt sich daher, immer die aktuelle Version des Isabelle-jEdit-Editors (zB. aus dem Bundle erh\"{a}ltlich auf der Isabelle-Homepage) zu verwenden, da hier diverse Voreinstellungen vorgenommen wurden. In weiterer Folge wird mit jEdit immer diese modifizierte Version des Editors in Verbindung gebracht, da die Verwendung der Grundversion aus oben genannten Gr\"{u}nden nicht zu empfehlen bzw. sinnvoll ist.
       
    67 Weiters sollte noch erw\"ahnt werden, dass es rund um jEdit einen sehr guten Support via Mailinglist gibt und man wirklich rasch Hilfestellung bekommen kann.
       
    68 
       
    69 \subsection{Das Plugin-System}
       
    70 % http://jedit.org/users-guide/writing-plugins-part.html
       
    71 Wie im vorigen Abschnitt bereits erw\"ahnt, ist es sehr einfach und bequem m\"oglich, geeignete Plugins zu installieren bzw. zu verwenden. Es stehen bereits sehr viele verschiedenste Plugins auf der jEdit-Homepage zur Verf\"{u}gung. Diese werden ebenfalls als Open-Source-Projekte angeboten und es bietet sich daher an, bereits verf\"ugbare und funktionierende Plugins als Teil eines neuen Plugins zu verwenden und gegebenenfalls kleine Modifikationen oder Erweiterungen an den Plugins durchzuf\"{u}hren. Im Beispiel von Isabelle wurden unter anderem die Plugins \textit{Sidekick} und \textit{Konsole} verwendet. Dabei ist es m\"oglich, dass Java-Plugins mit Scala-Plugins kombiniert werden, da diese auch problemlos miteinander kommunizieren k\"{o}nnen.
       
    72 jEdit bietet einen Plugin-Manager an, mit dem sich sehr einfach bereits installierte Plugins verwalten und updaten lassen und es ist auch m\"{o}glich, neue Plugins direkt zu installieren.
       
    73 Weiters bietet sich die M\"oglichkeit, selbst implementierte Plugins direkt zu den bereits vorhandenen jEdit-Plugins hizuzuf\"{u}gen. Dazu muss das erzeugte "Plugin".jar Paket ledigich in den jars-Ordner verschoben werden. Beim Start von jEdit wird das neue Plugin automatisch erkannt und hinzugef\"{u}gt. Man muss aber darauf achten, dass \"{A}nderungen nur nach einem Neustart von jEdit \"{u}bernommen werden.
       
    74 
       
    75 
       
    76 \subsection{Pluginstruktur}
       
    77 Ein solches jEdit-Plugin muss nat\"{u}rlich ein gewisses Design umsetzen, um von jEdit korrekt ausgef\"{u}hrt werden zu k\"{o}nnen. Grunds\"{a}tzlich besteht ein solches Plugin aus den eigentlichen Sourcefiles und einigen XML- und Property-Datein. 
       
    78 Ein m\"{o}glicher Aufbau kann dem Beispiel-Plugin "QuickNotepad"\footnote{http://jedit.org/users-guide/writing-plugins-part.html}, das auf der jEdit-Homepage zu finden ist, entnommen bzw. als Ausgangspunkt f\"{u}r die Entwicklung eines eigenen Plugins herangezogen werden. Weitere Informationen k\"{o}nnen auch dem Paper "Userinterfaces for Computer Theorem Provers" entnommen werden. 
       
    79 
       
    80 \section{Isabelle}
       
    81 Isabelle ist einer der f\"{u}hrenden CTPs und an dessen Weiterentwicklung wird st\"{a}ndig gearbeitet. Der letzte gro{\ss}e Schritt betraf den Umstieg von reinem ML auf die "Mischsprache" Scala(mit funktionalen sowie imperativen Sprachanteilen). Weiters wurde der in die Jahre gekommene Proof General und der damit in Verbindung stehende Editor Emacs durch den vielseitigen Editor jEdit ersetzt. Dadurch ergeben sich auch f\"{u}r das laufende \sisac-Projekt an der TU Graz neue M\"{o}glichkeiten. Wichtig im Zusammenhang mit dieser Beschreibung ist zu erw\"{a}hnen, dass hier in weiterer Folge nur noch f\"{u}r jEdit bzw. Scala relevante Teile von Isabelle behandelt und beschrieben werden. Weiters ist wichtig zu wissen, dass f\"{u}r die bereits bestehende Struktur rund um Isablle-jEdit zwei Isabelle-Pakete zum Einsatz kommen. Auf diese Pakete soll in den n\"{a}chsten Passagen eingegangen werden.
       
    82 
       
    83 \subsection{Isabelle-Pure}
       
    84 In diesem Plugin ist der eigentliche CTP-Teil von Isabelle verpackt. Das bedeutet im weiteren Sinn, dass es hier keine grafische Verarbeitung der Daten gibt, sondern der Zugriff von aussen erforderich ist, um den CTP mit Daten zu versorgen und diese nach deren Verabreitung in Isabelle-Pure auszuwerten. Also ist nur hier eine Schnittstelle zum eigentlichen Proofer m\"{o}glich und deshalb ist dieses Plugin f\"{u}r das \sisac-Projekt von zentraler Bedeutung. Standardm\"{a}{\ss}ig ist bereits ein Pure.jar-Paket f\"{u}r jEdit vorhanden. Um SD umsetzten zu k\"{o}nnen, muss hier eine Schnittstelle zu Isabelle-Pure implementiert werden. Nach diesem Schritt kann das Plugin Pure.jar neu gebaut werden. 
       
    85 Eine Auflistung der f\"ur das Isabelle-Pure-Packet ben\"otigten Scala-Source-Filles kann Anhang B.2 entnommen werden.
       
    86 
       
    87 \subsection{Isabelle-jEdit}
       
    88 Dieser Teil von Isabelle repr\"{a}sentiert das Frontend in jEdit. Hier wird also die grafische Aufbereitung der von Isabelle-Pure berechneten Daten \"{u}bernommen. Dieses Plugin zeigt sehr sch\"{o}n, wie bereits bestehende Plugins weiter genutzt und erweitert werden k\"{o}nnen.
       
    89 An diesem Plugin wird von Seiten der Isabelle-Entwickler sehr stark weitergearbeitet. Darum sollten hier wohl nicht zu viele, am besten nat\"{u}rlich keine \"{A}nderungen, vorgenommen werden. Der Umstand, dass sich einzelne Plugins ganz einfach in einem anderen mitverwenden lassen, macht es m\"{o}glich, dass das \sisac-Plugin sehr einfach, im Idealfall von Seiten der Isabelle-Entwickler, in das Isabelle-jEdit-Plugin integriert werden kann.
       
    90 
       
    91 \subsection{Paketstruktur von Isabelle}
       
    92 Durch die Komplexit\"{a}t des Isabelle-Entwicklungs-Aufbaus soll hier eine Auflistung aller relevanten jar-Pakete erfolgen. Alle Pakete befinden sich innerhalb der Ordnerstruktur von ISABELLE\_HOME. Darum wird ab hier immer von diesem Verzeichnis ausgegangen.
       
    93 Die nachfolgende Auflistung zeigt alle Pakete, die f\"{u}r SD bzw. {\sisac} von Bedeutung sind und und wo diese zu finden sind.
       
    94  
       
    95 
       
    96 \begin{itemize}
       
    97 \item \textit{contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars:} \textbf{Isabelle-jEdit.jar, Pure.jar, SideKick.jar, ...} Der Ordner contrib ist in der Repository-Version nicht vorhanden! Dieser kann dem Isabelle-Bundle  entnommen werden. Hier befinden sich alle ben\"{o}tigten Zusatztools f\"{u}r Isabelle und darunter eben auch jEdit. In dem oben angef\"{u}hrten Ordner liegen alle Plugins bzw. dorthin werden alle Plugins kopiert, die zusammen mit jEdit gestartet werden sollen. 
       
    98 \item \textit{lib/classes:} \textbf{isabelle-scala.jar, pure.jar;} Standardm\"{a}{\ss}ig ist dieser Ordner nicht vorhanden. Erst durch Erzeugen der angef\"{u}hrten jar's werden dieser Ordner und die Pakete erstellt.
       
    99 \item \textit{src/Tools/jEdit/dist/jars:} \textbf{Isabelle-jEdit.jar, Pure.jar, SideKick.jar, jedit.jar, ...} 
       
   100 \item \textit{src/Tools/jEditC/dist/jars:} \textbf{Isabelle-jEdit.jar, Pure.jar, SideKick.jar, jedit.jar, ...} Diese beiden obigen Verzeichnisse sind, wie man an der sehr \"{a}hnlichen Pfadstruktur erkennen kann, \"{a}quivalent, wobei der zweite Pfad zum \sisac-Entwicklungsverzeichnis geh\"{o}rt. Hier sind die f\"{u}r das Isabelle-jEdit- bzw. \sisac-Plugin ben\"{o}tigten Plugins und Pakete plus das erzeugte Plugin zu finden.
       
   101 \item \textit{src/Tools/jEditC/contrib/jEdit/build/jars:} \textbf{Isabelle-jEdit.jar, Pure.jar, SideKick.jar, jedit.jar, ...} Diesen Aufbau ben\"{o}tigt man nur, wenn man das jEdit-Isac-Projekt direkt in NetBeans debuggen m\"{o}chte. Man erkennt, dass in diesem Verzeichnis der vollst\"{a}ndige Quellcode von jEdit plus allen Plugins, die zusammen mit jEdit gestartet werden sollen, hier zu finden sind. Wie aber bereits erw\"{a}hnt, ist vom direkten Debuggen generell abzuraten bzw. sollte dies nur f\"ur schwer nachvollziebare Abl\"aufe ohne Isabelle-Beteiligung angewendet werden. 
       
   102 \end{itemize} 
       
   103 
       
   104 Siehe dazu auch Anhang B. Dort sind alle relevanten jar-Pakete noch einmal aufgearbeitet und entsprechend gruppiert.
       
   105 
       
   106 \section{Die Programmiersprache Scala}
       
   107 Urspr\"{u}nglich wurde Isabelle rein in ML entwickelt. Erst vor ein paar Jahren wurde mit der \"{U}bersetzung von einigen Teilen in Scala begonnen. Grund genug, sich hier kurz diese neue und sehr vielseitige Sprache etwas genauer anzusehen.
       
   108 
       
   109 \subsection{Grundlage der Sprache}
       
   110 Scala ist eine objektorientierte Sprache, die sehr \"{a}hnlich zu Java aufgebaut wurde. Dadurch wird die Einarbeitung in diese Programmiersprache f\"{u}r Java-Programmierer sehr vereinfacht. Neben den Vorteilen einer objektorientierten Sprache deckt Scala aber auch die Bed\"{u}rfnisse der funktionalen Programmierung ab. Dies, und vorallem auch das von Erlang \"ubernommene und sehr gut umgesetzte Actorprinzip, sind wohl die Hauptgr\"unde, warum sich das Isabelle-Entwicklungsteam f\"{u}r diese Sprache entschieden hat. Wie bereits erw\"{a}hnt, ist Scala sehr \"{a}hnlich aufgebaut wie Java und hat nebenbei noch den gro{\ss}en Vorteil, dass Scala-Executables in der JVM (Java virtual Machine) ausf\"{u}hrbar sind. Dadurch ist die Plattformunabh\"{a}ngigkeit garantiert und es besteht ein direkter Zusammenhang zwischen Scala und Java der auch bei der jEdit-Plugin-Entwicklung ausgenutzt bzw. verwendet wird.
       
   111 
       
   112 Dieser direkte Zusammenhang zwischen Java und Scala soll anhand der Grafik-Bibliotheken Swing gezeigt bzw. die Vorteile, die daraus resultieren, beleuchtet werden.
       
   113 
       
   114 Beide Sprachen stellen diese Grafik-Bibliotheken zur Verf\"{u}gung (und darin auch eigene Shapes und Funktionalit\"{a}t). Es ist jedoch m\"{o}glich, Java-Bibliotheken, wie eben Java-Swing in Scala zu verwenden. Ein JButton(Java) kann zum Beispiel mittels \textit{import javax.swing.JButton} in Scala eingebunden und damit sofort verwendet werden. Auch Scala stellt in seiner Swing-Bibliothek einen Button zur Verf\"{u}gung: \textit{scala.swing.Button}. Es wird nahezu dieselbe Funktionalit\"{a}t angeboten und teilweise die Erzeugung bzw. Verwendung vereinfacht. Man kann sich nun fragen, warum sich die Scala-Entwickler einerseits die M\"{u}he gemacht haben, die Verwendung Java-Swing, wie in Java selbst, m\"{o}glich zu machen und andererseits mit Scala-Swing eine nahezu idente Alternative geschaffen haben. 
       
   115 
       
   116 Die Antwort darauf zeigt, wie die Objektorientiertheit von Scala in vielen Bereichen ausgenutzt wurde, um die Sprache mit Funktionalit\"{a}t auszur\"{u}sten, denn es wurde kein neues Konzept f\"{u}r diese Grafikklassen entworfen, sondern Wrapper-Objekte/ Methoden/Klassen erstellt, die das Arbeiten mit diesen Grafikkomponenten erleichtern soll. 
       
   117 Ein Letztes Problem bleibt noch: Es ist zwar sehr einfach ein Java-Swing-Objekt an einen Scala-Swing-Container (zb. Frame) anzubinden, da eine Konvertierung einer Java-Komponente in ein Scala-\"{a}quivalent problemlos m\"{o}glich ist. Jedoch ist oft auch die Konvertierung einer Scala- in eine Java-Komponente n\"{o}tig. Dies kann ganz einfach mittels \textit(peer)-Befehl der Komponente erreicht werden.
       
   118 
       
   119 Das angef\"{u}hrte Beispiel soll zeigen, wie vielseitig Scala sein kann und welch enormes Potenzial in dieser noch sehr jungen Sprache steckt. Nat\"{u}rlich gibt es dazu eine sehr gut aufgebaute Entwickler-Homepage\footnote{http://www.scala-lang.org/}, die Tutorials, Plugin f\"{u}r diverse IDEs und weitere n\"{u}tzliche Hilfestellungen f\"{u}r Scala-Neulinge bereitstellt.
       
   120 
       
   121 \subsection{Scala, Java und jEdit}
       
   122 Wie im letzten Abschnitt bereits beschrieben, kommen bei jEdit Java- sowie auch Scala-Komponenten zum Einsatz bzw. werden sogar zu logischen Einheiten kombiniert. So ist zum Beispiel jEdit selbst rein in Java geschrieben und das Plugin Isabelle-jEdit rein in Scala. Trotzdem gibt es \"{u}berhaupt kein Problem, diese beiden jar-File miteinander bzw. ineinander in der JVM zu nutzen. Es geht sogar so weit, dass es m\"{o}glich ist, dass das Plugin Isabelle-jEdit bereits vorhandene und rein in Java geschriebene Plugins erweitert und nutzt. Dieses Zusammenspiel zwischen Objekten aus zwei verschiedenen Sprachen ist doch recht au\ss ergew\"{o}hnlich und kann bzw. sollte nat\"{u}rlich auch f\"{u}r SD bzw. {\sisac} ausgenutzt werden!
       
   123 
       
   124 \subsection{Der Isabelle-Scala-Layer}
       
   125 Es sollten nun die Grundlegenden Eigenschaften von Scala bekannt sein. Die Einf\"uhrung des Scala-Layers ab Isabelle-Version 2009 war ein grosser Schritt f\"ur das Isabelle Projekt. Das Scala-Actor-Konzept erm\"oglicht die asynchrone Verarbeitung von einzelnen Beweisteilen und ist einer der massgeblichen Gr\"unde f\"ur die Einf\"uhrung des Scala-Layer. 
       
   126 
       
   127 Dieser Absatz sollen nun die Eigenschaften des Scala-Layers und die damit verbundenen Chancen f\"ur das Isac- bzw. SD-Projektes 
       
   128 erarbeitet werden. 
       
   129 
       
   130 \begin{figure}
       
   131 \begin{center}
       
   132 \includegraphics[width=100mm]{../fig-reuse-ml-scala-SD}
       
   133 \end{center}
       
   134 \label{fig-reuse-ml-scala}
       
   135 \end{figure}
       
   136 
       
   137 Der Scala-Layer verbindet die Java Virtual Maschine (JVM) und den in Standart-ML (SML) geschriebenen Isabelle-Kern. Dabei wird ein internes Protokoll verwendet, dass den Datenaustausch zwischen jEdit und Isabelle/Isar erm\"oglicht. Dieses Protokoll ist im Moment noch (bewusst) ohne API ausgef\"uhrt. Aus diesem Grund musste eine Schnittstelle definiert werden, um den Datenaustausch des SD-Plugins (JVM) mit dem SD-Interpreter m\"oglich zu machen. Siehe dazu den Absatz "Verbindung zum Isabelle-Pure Plugin herstellen". Man kann aus diesem Umstand ableiten, dass die Isabelle-Entwickler mit diesem eingezogenen Scala-Layer und dem damit verbundenen internen Protokoll, auf eine konsistente Verwaltung der Theorie-Bibliotheken abzielen. Mit anderen Worten wird dem Anwendungsprogrammierer der direkte Zugriff auf die Isabelle/Isar-Komponente verwehrt. Der Anwender sollte hier also nicht angreifen sonder die Isabelle-Theorien entsprechend erweitern.
       
   138 
       
   139 \chapter{Konfiguration und Implementation der Komponenten}
       
   140 Dieses Kapitel soll nun anhand der bereits gewonnen Erkenntnise illustrieren, wie die Entwicklungsumgebung vom Isabelle-Team kopiert wurde und wie wichtigsten Schritte zum SD-Plugin f\"{u}r jEdit wahrscheinlich aussehen werden. Wobei einige Schritte parallel und dadurch nat\"{u}rlich sehr gut im Team umgesetzt werden k\"{o}nnen. Eine genaue Aufstellung aller beteiligten Files k\"onnen dem Anhang D entnommen werden.
       
   141 
       
   142 \section{Konfiguration des Netbeans Projektes}
       
   143 Um in k\"unftigen Entwicklungsvorhaben effizient kooperieren zu k\"onnen, wurde das Netbeans-Projekt genau nach den Vorgaben des Isabelle-Teams konfiguriert. 
       
   144 
       
   145 \begin{enumerate}
       
   146 \item Konfigurations-Files von Netbeans in ``Files''-View; beeinflussen sich gegenseitig
       
   147   \begin{enumerate}
       
   148   \item build.xml (aus template erzeugt, keine automatischen Ver\"anderunen)
       
   149   \item nbproject/build-impl.xml (z.T. automatische Ver\"anderunen)
       
   150   \item nbproject/project.xml (z.T. automatische Ver\"anderunen)
       
   151   \item TODO
       
   152   \end{enumerate}
       
   153 \item Sacla-plugin installieren laut http://wiki.netbeans.org/Scala69, 
       
   154   \begin{enumerate}
       
   155   \item von ``Install with NetBeasn 6.9''
       
   156   \item nach /usr/local/netbeans.../plugins/scala
       
   157   \end{enumerate}
       
   158 \item Scala-plugin installiert in NetBeans
       
   159   \begin{enumerate}
       
   160   \item Men\"u $>$ Tools $>$ Plugins $>$ Downloaded $>$ Add Plugins 
       
   161   \item alle Files von /usr/local/netbeans.../plugins/scala/
       
   162   \item Fenster zeigt alle ausgew\"alten Files
       
   163   \item $<$Install$>$ calls Wizzard $<$Next$>$ probably accept Warning
       
   164   \item Funktionstest: Men\"ue $>$ Files $>$ New Project: zeigt Scala als ``Categories''
       
   165   \end{enumerate}
       
   166 \item Neues Projekt ``isac-jedit'' konfigurieren
       
   167   \begin{enumerate}
       
   168   \item Men\"u $>$ Open Project (weil schon aus dem Repository die notwendigen Files vorhanden sind)
       
   169   \item /src/Tools/jeditC: Reference Problems, weil jEdit folgende Plugins braucht
       
   170   \item Funktionskontrolle: ``Projects''-View zeigt das neue Projekt
       
   171   \item Die Konfigurations-Files sind v\"ollig getrennt von anderen Projekten
       
   172   \item Referenz-Probleme beheben; das zeigt auch eventuell fehlende Files
       
   173     \begin{enumerate}
       
   174     \item ``Projects''-View $>$ rightMouse $>$ Resolve Reference Problems: Fenster zeigt dieListe der fehlenden Dateien; $<$Next$>$
       
   175     \item Files holen aus ``Tools'' $>$ Libraries: \"uber Filebrowser aus dem Isabelle\_bundle holen contrib/jEdit---/jars
       
   176     \item ``New Library'' 
       
   177       \begin{enumerate}
       
   178       \item Cobra-renderer: cobra.jar
       
   179       \item Console:  Console.jar
       
   180       \item ErrorList: ErrorList.jar
       
   181       \item Hyperlinks: Hyperlinks.jar
       
   182       \item Isabelle-Pure: Pure.jar
       
   183       \item Rhino-JavaScript: js.jar
       
   184       \item Scala-compiler: scala-compiler.jar
       
   185       \item SideKick: SideKick.jar
       
   186       \end{enumerate}
       
   187     \item Funktions-Kontrollen 
       
   188       \begin{enumerate}
       
   189       \item das kleine gelbe Warndreieck im ``Projects''-View ist verschwunden
       
   190       \item im ``Projects''-View 2 Ordner: ``src'' und ``Libraries''
       
   191       \end{enumerate}
       
   192     \end{enumerate}
       
   193   \item jEdit-Paket zum ``isac-jedit''-Projekt hinzuf\"ugen
       
   194     \begin{enumerate}
       
   195     \item ``Project''-View $>$ rightMouse $>$ Add Jar/Folder: Filebrowser
       
   196     \item /contrib/jedit.../jedit.jar
       
   197     \item Funktions-Kontrolle: ist in ``Projects''/Libraries/jedit.jar
       
   198     \end{enumerate}
       
   199   \item Das neue Projekt ``isac-jedit'' zum Hauptprojekt machen: ``Project''-View $>$ rightMouse $>$ Set as Main Project; Funktions-Kontrolle: der Projektname ist boldface.
       
   200   \end{enumerate}
       
   201 \item Ab nun wird die Konfiguration \"uber ``trial and error'' zu Ende gef\"uhrt
       
   202   \begin{enumerate}
       
   203   \item Men\"u $>$ Build Main 
       
   204     \begin{enumerate}
       
   205     \item Wenn: Target ``Isac-impl.jar'' does not exist in the project ``isac-jedit''. It is used from target ``debug''
       
   206       \begin{enumerate}
       
   207       \item Versuch
       
   208         \begin{itemize}
       
   209         \item build-impl.xml l\"oschen
       
   210         \item NetBeans neu starten, stellt build-impl.xml automatisch aus build.xml wieder her
       
   211         \item \dots hat in diesem Fall nicht geholfen
       
   212        \end{itemize}
       
   213       \item Versuch zur Vermutung: Projekt wurde umbenannt von ``Isac'' in ``isac-jedit'', und das machte build.xml inkonsistent
       
   214         \begin{itemize}
       
   215         \item in build.xml query-replace ``Isac'' in ``isac-jedit''
       
   216         \item TODO?
       
   217         \item 
       
   218         \end{itemize}
       
   219       \end{enumerate}
       
   220     \item Wenn: Problem: failed to create tsk or type scalac
       
   221       \begin{enumerate}
       
   222       \item Versuch: Pfad zum Scala bekanntgeben
       
   223         \begin{itemize}
       
   224         \item /usr/local/netbeans-6.9.1/etc/netbeans.conf: netbeans\_default\_options= richtigen Scala-Pfad setzen
       
   225         \item build-impl.xml l\"oschen
       
   226         \item NetBeans neu starten.
       
   227         \end{itemize}
       
   228       \end{enumerate}
       
   229     \item Wenn Fehler: ``/usr/local/isabisac/src/Tools/jEditC/\${project.jEdit}/modes does not exist''
       
   230       \begin{enumerate}
       
   231       \item grep -r "project.jEdit" *
       
   232       \item nbproject/project.properties:project.jEdit=contrib/jEdit
       
   233       \item TODO?
       
   234       \end{enumerate}
       
   235     \end{enumerate}
       
   236   \end{enumerate}
       
   237 \item error in project files, not in build.xml etc (1)
       
   238   \begin{enumerate}
       
   239   \item follow link to testSD.scala:22
       
   240   \item val str1: String = isabelle.Isac.parse(``Testdaten aus dem Parser!'')\\
       
   241         val str1: String = ``TEST'' //isabelle.Isac.parse(``Testdaten aus dem Parser!'')\\
       
   242   \item build once again ... successful\\
       
   243   \item watch in console what is being copied and compare build.xml, 
       
   244           $<$target name=''-pre-jar''$>$
       
   245           $<$target name=''-post-jar''$>$
       
   246   \item essential: a new Pure.jar has been generated, which has been extended with a new class ``Isac''; this class has been defined in scr/Pure/Isac/isac.scala
       
   247   \item restore ``val str1: String = isabelle.Isac.parse(``Testdaten aus dem Parser!'')" requires new Pure.jar at the right place \dots
       
   248   \item \dots the shellscript bin/testSD\_jedit creates this new Pure.jar
       
   249   \end{enumerate}
       
   250 \item error in bin/testSD
       
   251   \begin{enumerate}
       
   252   \item look at error messages, eg. src/Pure/: no such file or directory \dots
       
   253   \item \dots means that the script has not been started from $\approx\approx$ --- this behaviour shall be improved a.s.a.p.
       
   254   \item function test: \\
       
   255         \#\#\#\\
       
   256         \#\#\# Building Isabelle/Scala layer\\
       
   257         \#\#\#\\
       
   258   \item 
       
   259   \item 
       
   260   \end{enumerate}
       
   261 $<$ $>$
       
   262 Men\"u $>$  $>$ $>$  $>$ $>$  $>$
       
   263 ``Project''-View $>$ rightMouse $>$ $>$  $>$ $>$  $>$
       
   264 \item 
       
   265   \begin{enumerate}
       
   266   \item 
       
   267     \begin{enumerate}
       
   268     \item 
       
   269       \begin{itemize}
       
   270       \item 
       
   271         \begin{itemize}
       
   272         \item 
       
   273         \item 
       
   274         \item 
       
   275         \end{itemize}
       
   276       \item 
       
   277       \item 
       
   278       \end{itemize}
       
   279     \item 
       
   280     \item 
       
   281     \end{enumerate}
       
   282   \item 
       
   283   \item 
       
   284   \end{enumerate}
       
   285 \item 
       
   286   \begin{enumerate}
       
   287   \item 
       
   288     \begin{enumerate}
       
   289     \item 
       
   290       \begin{itemize}
       
   291       \item 
       
   292         \begin{itemize}
       
   293         \item 
       
   294         \item 
       
   295         \item 
       
   296         \end{itemize}
       
   297       \item 
       
   298       \item 
       
   299       \end{itemize}
       
   300     \item 
       
   301     \item 
       
   302     \end{enumerate}
       
   303   \item 
       
   304   \item 
       
   305   \end{enumerate}
       
   306 \end{enumerate}
       
   307 
       
   308 
       
   309 \section{Implementation der jEdit Komponenten}
       
   310 
       
   311 \subsection{Erstellen des Plugin-Ger\"{u}sts}
       
   312 Hier gilt es, erstmal den Umfang der gew\"{u}nschten Anforderungen an das Plugin so genau wie m\"{o}glich zu identifizieren. Hat man eine sehr genaue Vorstellung, wie das GUI des Plugins aussehen wird und welche Zusatz-Features angeboten werden sollen, so kann man gezielt unter den bereits bestehenden Plugins f\"{u}r jEdit nach n\"{u}tzlichen Plugins suchen, die in das SD-Plugin (m\"{o}glicherweise durch kleine Modifikationen) integriert werden k\"{o}nnen. Dies spart einerseits sehr viel Zeit und ist nebenbei genau die Art von Programmierung, die durch die offnene Plugin-Struktur von jEdit gef\"{o}rdert wird. 
       
   313 
       
   314 Hat man nun die Planung abgeschlossen und m\"{o}glicherweise n\"{u}tzliche Plugins gefunden, kann mit der Programmierung des GUIs begonnen werden. Man sollte hier beachten, dass man von Beginn an festlegt, ob mit Scala- oder Java-Swing Komponenten gearbeitet werden soll. Es ist zwar m\"{o}glich, beide Formen zu mischen, doch aus Klarheitsgr\"{u}nden sollte man sich f\"{u}r eine Art entscheiden. Wobei hier die Empfehlung im Moment eher noch Richtung Java-Swing geht, da man hier eigentlich f\"{u}r jede Art von Problem bzw. Aufgabe bereits HowTo's im Web finden kann. Da bei Scala-Swing nur Wrapper auf die Java-Swing-Libraries gesetzt wurden, entsteht dadurch auch keinerlei Performance-Verlust.
       
   315 
       
   316 Es existiert bereits ein beispielhaftes Plugin am \sisac-Repository. Da der grunds\"{a}tzliche Aufbau eines jEdit-Plugins soweit umgesetzt wurde und bereits lauff\"{a}hig ist, sollte man dieses wohl als Ausgangspunkt verwenden. Die direkte Verwendung eines Isabelle-Klons ist wohl zu Beginn nicht zu empfehlen bzw. sollte meiner Meinung nach die Integration von Isac in Isabelle bzw. die Verwachsung der beiden Plugins das Fernziel sein und dadurch w\"{u}rde der Klon-Vorgang wohl eher Probleme schaffen als sie zu l\"{o}sen.
       
   317 
       
   318 \subsection{Erzeugung des Plugins}
       
   319 Hat man die Planung des Plugin-Ger\"{u}sts abgeschlossen und die eigentliche Implementationsphase begonnen, kann dieses Plugin getestet bzw. erzeugt und via jEdit ausgef\"{u}hrt werden. Dazu muss zuerst das jar-File erzeugt und danach in den jEdit-Pluginsordner verschoben werden. Die Erzeugung kann nat\"{u}rlich direkt mittels NetBeans durchgef\"{u}hrt werden. Doch es ist auch m\"{o}glich dies via Kommandline durchzuf\"{u}hren. Folgende Schritte illustrieren wie die Erzeugung und der Kopiervorgang des Plugins durchgef\"{u}hrt werden k\"{o}nnen(Ausschnitt aus dem Skript isac\_jedit, Anhang C):
       
   320 \begin{enumerate}
       
   321 \item Das Plugin kann mittels Kommandline folgenderma{\ss}en erstellt werden: \\ \textit{cd ISABELLE\_HOME/src/Tools/isac/jEdit} $\rightarrow$ \textit{ant jar}
       
   322 \item Nun kann das das neue Plugin ganz einfach kopiert werden \textit{cp contrib/jEdit/build/ // jars/Isac.jar ../../../../contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/}
       
   323 \item jEdit ausf\"{u}hren und testen
       
   324 \end{enumerate}
       
   325 
       
   326 \subsection{Verbindung zum Isabelle-Pure Plugin herstellen}
       
   327 Der n\"{a}chste Schritt sieht nun die Versorgung des GUIs mit Daten vor. Da das jEdit-Plugin selbst nicht rechnen/interpretieren kann, m\"{u}ssen Daten an den Isabelle-Kern, also das Isabelle-Pure-Plugin weitergegeben werden. Dort k\"{o}nnen die Daten verwertet und aufbereitet zur\"{u}ck an das Frontend gereicht werden. 
       
   328 
       
   329 \begin{figure}
       
   330 \begin{center}
       
   331 \includegraphics[width=100mm]{../fig-jedit-plugins-SD}
       
   332 \end{center}
       
   333 \label{fig-jedit-plugins-SD}
       
   334 \end{figure}
       
   335 
       
   336 Um diesen Schritt setzen zu k\"{o}nnen, muss eine Schnittstelle zwischen dem Kern von Isabelle, Isabelle-Pure und dem Plugin hergestellt werden. Dazu muss zun\"{a}chst Pure.jar leicht modifiziert, danach neu erstellt und zuletzt zu den restlichen jEdit-Plugins hinzugef\"{u}gt werden. Dies wurde auf der aktuellen Version am Repository bereits erledigt. Folgende Schritte wurden dazu gesetzt und sind wieder n\"{o}tig, da sicher weitere Modifikationen an der Datei Pure.jar n\"{o}tig sein werden.
       
   337 
       
   338 
       
   339 \begin{enumerate}
       
   340 \item Um den \sisac-Teil im Isabelle-Pure genau abzugrenzen, wurde ein Ordner \textit{Isac} angelegt und ein Testfile \textit{isac.scala} erstellt.
       
   341 \item Nun muss diese File nat\"{u}rlich dem Make-Skript \textit{ISABELLE\_HOME/src/Pure/build-jars} hizugef\"{u}gt werden, um beim Erzeugen des jar-Files mitverpackt zu werden.
       
   342 \item Nun kann Pure.jar mittels Kommandline erstellt werden: \textit{cd /src/Pure} $\rightarrow$ \textit{../../bin/isabelle env ./build-jars}
       
   343 \item Nun kann das das neue Plugin ganz einfach kopiert werden \textit{cp ../../lib/classes/Pure.jar ../../contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/}
       
   344 \item jEdit ausf\"{u}hren und testen
       
   345 \end{enumerate}
       
   346 Alle die oben angef\"{u}hrten Punkte, sowie das Erzeugen und Kopieren des Plugins selbst, werden vom Script isac\_jedit erledigt.
       
   347 Das Skript kann dem Anhang C entnommen werden.
       
   348 
       
   349 \section{Umsetzung des SD-Parsers}
       
   350 Aus diversen Gr\"{u}nden wurde dieser Punkt im Zuge dieser Projektarbeit nicht mehr umgesetzt sonder nach hinten verschoben. Jedoch gibt es bereits eine Version des Parsers in ML und diese kann in einigen Arbeitsstunden in Zusammenarbeit mit Herrn Neuper in Scala \"{u}bersetzt und eingesetzt werden.
       
   351 
       
   352 Es ist bereits ein Parser in ML im Isabelle-Verzeichnis vorhanden, \textit{src/Pure/isar/ parse.ML}. Hier werden sogannte "parse combinators" verwendet. Dasselbe wird in n\"{a}chster Zeit von Seiten des Isabelle-Team auch f\"{u}r den Scala-Parse implementiert. Dadurch lassen sich hieraus auch wichtige Erkenntnisse gewinnen und dies spricht ebenfalls f\"{u}r die Verschiebung dieses Milestones nach hinten. 
       
   353 
       
   354 
       
   355 \chapter{Ausblick: Von SD- zum \isac-Plugin}
       
   356 Die obigen Schritte sind n\"{o}tig, um das vorl\"{a}ufige Plugin SD umzusetzen. Nat\"{u}rlich beginnt danach die spannende Arbeit erst so richtig. Ist erst mal ein funktionierender SD-Parser vorhanden, kann dieser immer weiter verbessert und verfeinert werden, bis man auch damit beginnen kann, ihn f\"{u}r das \sisac-Projekt zu nutzen. 
       
   357 
       
   358 Daneben kann an der Weiterentwicklung des GUIs gearbeitet werden und die ersten Schritte zur Ann\"{a}herung an das Isabelle-Plugin k\"{o}nnen hier erfolgen. 
       
   359 
       
   360 \chapter{Zusammenfassung und R\"{u}ckblick}
       
   361 Zusammenfassend wird nun ein \"Uberblick gegeben, welche Milestones erledigt wurden und welche nicht; Details dazu finden sich in Anhang A. %TODO
       
   362 Abschlie{\ss}end gebe ich einen R\"uckblick auf meine pers\"onlichen Erfahrungen aus dieser Bakkalaureats-Arbeit.
       
   363 
       
   364 \section{Zusammenfassung}
       
   365 Folgende Milestones wurden erfolgreich abgeschlossen:
       
   366 \begin{enumerate}
       
   367 \item Relevante Isabelle Komponenten dokumentiert
       
   368 
       
   369 \item Installation der Standard-Komponenten:
       
   370   \begin{itemize}
       
   371   \item Mercurial Versioncontrol
       
   372   \item NetBeans IDE
       
   373   \item Standard Isabelle Bundle
       
   374   \end{itemize}
       
   375   
       
   376 \item Entwicklungsumgebung vom Isabelle-Team kopieren
       
   377   \begin{itemize}
       
   378   \item Isabelle-Sources vom Repository M\"unchen (Java, Scala, ML)
       
   379   \item jEdit als NetBeans Projekt definiert
       
   380   \end{itemize}
       
   381   
       
   382 \item Relevante Komponenten implementieren
       
   383   \begin{itemize}
       
   384   \item jEdit Plugin f\"ur SD
       
   385   \item Verbindung des Plugins zu Isabelle
       
   386   \item zugeh\"origen Parser: nur ein Test in SML
       
   387   \end{itemize}
       
   388 \end{enumerate}
       
   389 
       
   390 \noindent Aus Zeitgr\"unden war {\em nicht} m\"oglich, ein komplettes SD-Plugin zu implementieren; dazu w\"are auch ein Interpreter f\"ur SD auf der ML-Seite n\"otig gewesen.
       
   391 
       
   392 \paragraph{Voraussetzungen f\"ur k\"unftige Entwicklung} geschaffen:
       
   393 \begin{enumerate}
       
   394 \item f\"ur die Implementation von ``structured derivations'' in Isabelle \dots
       
   395 \item \dots als Vorarbeit f\"ur jEdit als k\"unftiges \isac-Frontend
       
   396 \item f\"ur Mitarbeit an k\"unftiger Integration von Isabelle in Entwicklungswerkzeuge (Testcase-Generation etc).
       
   397 \end{enumerate}
       
   398 
       
   399 \section{R\"uckblick}
       
   400 Isabelle ist ein sehr gro\ss es Softwarepacket mit mehreren Millionen LOC. Daher gestaltete sich die Einarbeitungsphase sehr schwierig und kostet sehr viel Zeit. Erschwerend kam hinzu, dass ich von Beginn an mit mehreren, f\"{u}r mich noch ganz neue, Technologien arbeiten musste. Diese Herausforderungen schon zu Beginn machten die Arbeit an \sisac{ }von Beginn an spannend. Hier ist mir vorallem die gemeinsam mit meinem Betreuer Herrn Walther Neuper durchgef\"{u}hrte Installationsarbeit von Isabelle in Erinnerung geblieben. Nie zuvor hatte ich f\"{u}r eine Installation von Software so lange gebraucht - eine ganz neue, wichtige Erfahrung.
       
   401 
       
   402 Einer der bedeutensten Milesteine war r\"{u}ckblickend wohl, die Verzeichnisstruktur von Isabelle grunds\"atzlich verstanden zu haben. Bei einem Softwarepacket von dieser Gr\"{o}{\ss}e war es wichtig zu wissen, wo man Files suchen/modifizieren/einf\"{u}gen muss, um den gew\"{u}nschten Effekt erreichen zu k\"onnen.
       
   403 
       
   404 Der n\"achste wichtige Schritt war das bereits teilweise bestehende NetBeansprojekt lauff\"ahig zu machen und mir damit zum ersten mal selbst das jEdit-Isabelle-Plugin erzeugen zu k\"onnen. Dies war ein sehr bedeutsamer Schritt, da ich hier zum einen NetBeans und dessen Konfiguration besser kennenlernen konnte und zum anderen sehr viel \"{u}ber die Pluginstruktur eines jEdit-Plugins lernen konnte. Zu Beginn machte mir hier der Mix aus Scala-, Java-, XML- und diversen Config-Files Probleme.
       
   405 
       
   406 Bis jetzt hatte ich eigentlich noch nicht wirklich mit der Programmierung des Plugins begonnen doch es waren schon zig Arbeitsstunden rein f\"{u}r Einarbeitungs- und Vorbereitungsaufgaben verstrichen - wieder eine neue Erfahrung f\"{u}r mich. Nach einigen Test- bzw. Beispielprogrammen um die Sprache Scala etwas kennenzulernen, begann die wohl spannenste Phase im Projektverlauf. Das in Java geschriebene Beispielplugin "Quick-Notepad" wurde in Scala \"{u}bersetzt und etwas abge\"andert. 
       
   407 
       
   408 Der letzte wirklich bedeutende Schritt war Herstellung der Verbindung zwischen Isabelle-Pure und \sisac. Dieser Punkt ist sehr wichtig, da ohne diese Schnittstelle die Planung des SD-Parser nicht m\"oglich gewesen w\"are. Der letzte Schritt, also die Implementation des SD-Parsers wurde aufgeschoben, da es derzeit seitens des Isabelle-Teams ebenfalls Bestrebungen gibt, einen neuen Scala-Parser zu designen und wir von diesen Erkenntnissen mit Sicherheit in der Zunkft profitieren k\"onnen.
       
   409 
       
   410 %Abschlie{\ss}end m\"ochte ich mich bei meinem Betreuer Herrn Walther Neuper sehr herzlich f\"{u}r die gute Betreuung und die spannenden Entwicklungsstuden bedanken. Es war eine sehr lehrreiche und interessante Projektarbeit!
       
   411 
       
   412 %\chapter{Milestones und Arbeitsprotokolle}
       
   413 %\section{Inhaltliche Voraussetzungen erarbeitet: beendet am 27.09.2010} 
       
   414 %\begin{itemize}
       
   415 %\item Kenntnis der Grundlagen und Anwendung von CTP: beendet am 03.08.2010 
       
   416 %\item Charakteristika der Programmsprache Scala: beendet am 27.09.2010
       
   417 %\item Scala Actors: beendet am 12.08.2010
       
   418 %\end{itemize}
       
   419 %\begin{tabular}{|p{2cm}|p{8cm}|p{2cm}|}
       
   420 %\hline
       
   421 %Datum & T\"atigkeit & Einheiten \\ \hline
       
   422 %12.07.2010 & Meeting: erste Besprechung und Erkl\"{a}rungen zu Isabelle, Isac und CTPs & 2 \\ \hline
       
   423 %15.07.2010 & Recherche \"{u}ber Isabelle und CTPs & 3 \\ \hline
       
   424 %20.07.2010 & Meeting: Besprechen der grunds\"{a}tzlichen Vorgangsweise und Ziele & 1 \\ \hline
       
   425 %23.07.2010 & Isabelle: Ziele, Techniken (ML) und Zusammenh\"{a}nge mit Isac abkl\"{a}ren & 1 \\ \hline 
       
   426 %30.07.2010 & Ende der Einarbeitungstage: weitere Vorgensweise \"{u}ber Backs 'structured derivations'; Begriffserkl\"{a}rung & 3 \\ \hline
       
   427 %01.08.2010 & Recherche: Buch f\"{u}r Scala & 2 \\ \hline
       
   428 %03.08.2010 & Isabelle bestehende Technologie studieren & 4 \\ \hline
       
   429 %05.08.2010 & Einarbeiten in Scala: Unterschiede zu Java indentifizieren & 1  \\ \hline
       
   430 %06.08.2010 & Einarbeiten in Scala: Unterschiede zu Java indentifizieren, erste Beispielfiles & 4 \\ \hline
       
   431 %08.08.2010 & Einarbeiten in Scala: funktionale Seite von Scala & 2 \\ \hline
       
   432 %09.08.2010 & Einarbeiten in Scala: Testfiles mit Scala-Swing & 5 \\ \hline
       
   433 %12.08.2010 & Studieren von Papers zu Scala Actors & 3 \\ \hline
       
   434 %24.09.2010 & Scala: Arbeiten mit Klassen und Schnittstellen & 3 \\ \hline
       
   435 %25.09.2010 & Scala: Experimente mit Java in Scala-Source & 6 \\ \hline
       
   436 %27.09.2010 & Scala: Testfiles zu "Funktional vs Imperativ" & 4 \\ \hline \hline
       
   437 % & Anzahl der Einheiten & 44 \\
       
   438 %\hline
       
   439 %\end{tabular}
       
   440 %
       
   441 %
       
   442 %\section{Technische Voraussetzungen hergestellt: beendet am 02.08.2010}
       
   443 %\begin{itemize}
       
   444 %\item Isabelle installiert, Filestruktur bekannt: beendet am 02.08.2010
       
   445 %\item Scala in NetBeans eingebunden: beendet am 22.07.2010
       
   446 %\item Mercurial installiert und einrichten des Repositories: beendet am 19.07.2010 
       
   447 %\end{itemize}
       
   448 %\begin{tabular}{|p{2cm}|p{8cm}|p{2cm}|}
       
   449 %\hline
       
   450 %Datum & T\"atigkeit & Einheiten \\ \hline
       
   451 %19.07.2010 & Beginn der Installationsarbeiten: Repo klonen und testen & 6 \\ \hline
       
   452 %20.07.2010 & Installationsarbeiten, Einarbeiten in Filestruktur & 7 \\ \hline
       
   453 %21.07.2010 & Einarbeiten in Filestruktur & 6 \\ \hline
       
   454 %22.07.2010 & Vorbereitungen: NetBeans, JDK und Scala installieren. Scala in NetBeans integrieren & 8 \\ \hline
       
   455 %23.07.2010 & Isabelle-jEdit-Plugin mittels NetBeans ausf\"{u}hren: testen & 5 \\ \hline 
       
   456 %27.07.2010 & Isabelle-jEdit-Plugin: \"{a}nderungen an der Projektstruktur & 7 \\ \hline
       
   457 %28.07.2010 & Experimente mit Isabelle-jEdit-Plugin & 6 \\ \hline
       
   458 %29.07.2010 & Identifikations der Parse-Einstiegsstelle & 5 \\ \hline
       
   459 %30.07.2010 & Experimente mit Isabelle-jEdit-Plugin, Besprechung \"{u}ber Erfahrungen mit Filestruktur & 4 \\ \hline
       
   460 %02.08.2010 & Installationen und einrichten des Repos auf meinen Laptop & 6 \\ \hline \hline
       
   461 % & Anzahl der Einheiten & 60 \\
       
   462 %\hline
       
   463 %\end{tabular}
       
   464 %
       
   465 %\section{NetBeans-Projekt aufgesetzt: beendet am 02.08.2010} 
       
   466 %\begin{itemize}
       
   467 %\item Grundlegende Projektstruktur f\"ur ISAC hergestellt: beendet am 02.08.2010
       
   468 %\item jEdit-Plugin: XML-Files f\"{u}r ISAC vorbereitet: beendet am 22.07.2010
       
   469 %\item jEdit-Plugin: Source files geschrieben: beendet am 19.07.2010 
       
   470 %\end{itemize}
       
   471 %\begin{tabular}{|p{2cm}|p{8cm}|p{2cm}|}
       
   472 %\hline
       
   473 %Datum & T\"atigkeit & Einheiten \\ \hline
       
   474 %10.08.2010 & Projektstruktur anlegen, build.xml anpassen & 7 \\ \hline
       
   475 %11.08.2010 & jEdit-Plugin-Struktur studieren: Howto durcharbeiten & 5 \\ \hline
       
   476 %21.08.2010 & bestehende jEdit-Plugins (Java) durcharbeiten & 3 \\ \hline
       
   477 %22.08.2010 & Kopieren des Isabelle-jEdit-Plugins, Umarbeiten f\"{u}r ISAC & 3 \\ \hline
       
   478 %24.08.2010 & Umarbeiten des Isabelle-Plugins f\"{u}r ISAC & 6 \\ \hline 
       
   479 %26.08.2010 & Problem mit Isabelle-Umgebungsvariable: Suche nach L\"{o}sungen & 3 \\ \hline
       
   480 %28.08.2010 & Recherchen zum Umgebungsvariable-Problem, Arbeiten mit den Isabelle-Shell-Skripts & 2 \\ \hline
       
   481 %29.08.2010 & Experimente mit den Path-Varialbe der jvm & 3 \\ \hline
       
   482 %30.08.2010 & Isabelle-jEdit-Plugin endlich vollst\"{a}ndig lauff\"{a}hig gebracht & 4 \\ \hline
       
   483 %01.09.2010 & Arbeiten an der jEdit-ISAC-Projektstruktur & 3 \\ \hline
       
   484 %04.09.2010 & Umarbeiten des Isabelle-Plugins f\"{u}r ISAC & 5 \\ \hline 
       
   485 %20.09.2010 & Einrichten des Laptops f\"{u}r Isabelle-Isac & 4 \\ \hline 
       
   486 %22.09.2010 & Meeting: Fortschrittsbericht, kurze Einf\"{u}hrung f\"{u}r Mitstreiter & 3 \\ \hline
       
   487 %
       
   488 %29.09.2010 & Neue Vorgehensweise: QuickNotepad-Plugin(QN) wird in Scala \"{u}bersetzt und f\"{u}r ISAC entsprechend angepasst: Arbeit an den XML-Files & 4 \\ \hline 
       
   489 %30.09.2010 & QN: Start mit \"{u}bersetzten der Sourcefiles & 5 \\ \hline
       
   490 %02.10.2010 & QN: \"{U}bersetzten der Sourcefiles & 6 \\ \hline
       
   491 %04.10.2010 & QN: \"{U}bersetzten der Sourcefiles: Problem bei Interface & 3 \\ \hline
       
   492 %05.10.2010 & QN: QN vollst\"andig in Scala \"{u}bersetzt, testen & 2 \\ \hline \hline
       
   493 % & Anzahl der Einheiten & 71 \\
       
   494 %\hline
       
   495 %\end{tabular}
       
   496 %
       
   497 %\section{Experimentelle Parser implementiert: beendet am 04.03.2011} 
       
   498 %\begin{itemize}
       
   499 %\item Experimente mit dem SideKick-Parser abgeschlossen: beendet am 03.02.2011
       
   500 %\item Verbindung zu Isabelle-Pure hergestellt: beendet am 04.03.2011
       
   501 %\item Implementierung des Scala-Parsers: aufgeschoben
       
   502 %\end{itemize}
       
   503 %\begin{tabular}{|p{2cm}|p{8cm}|p{2cm}|}
       
   504 %\hline
       
   505 %Datum & T\"atigkeit & Einheiten \\ \hline
       
   506 %28.01.2011 & Testen des SideKick-Parsers im Isabelle-Plugin & 2 \\ \hline
       
   507 %29.01.2011 & Leichte Modifikationen des SideKick-Parsers im Isabelle-Plugin & 1 \\ \hline
       
   508 %08.02.2011 & Besprechung zum Abschluss der praktischen Arbeiten & 1 \\ \hline
       
   509 %16.02.2011 & Erstellen des Isabelle-Pur jar-Files & 1 \\ \hline
       
   510 %19.02.2011 & Behebung des Problems mit den Umgebungsvariablen & 1 \\ \hline
       
   511 %03.03.2011 & Erzeugung des Pure.jar Package m\"{o}glich & 2 \\ \hline
       
   512 %04.04.2011 & Verbindung zwischen Plugin und Isabelle-Pure hergestellt und getestet  & 3 \\ \hline
       
   513 %08.04.2011 & Besprechung: Implementierung des experimentellen Parsers wird nicht mehr durchgef\"{u}hrt & 1 \\ \hline \hline
       
   514 % & Anzahl der Einheiten & 12 \\
       
   515 %\hline
       
   516 %\end{tabular}
       
   517 %
       
   518 %\section{Verfassen der Dokumentation und abschliesende Arbeiten: beendet am TO.DO.2011}
       
   519 %\begin{itemize}
       
   520 %\item Bacc.-Protokoll fertiggestellt: beendet am 01.03.2011
       
   521 %\item Dokumentation: erste Version fertiggestellt: beendet am 28.04.2011
       
   522 %\item Dokumentation abgeschlossen: beendet am TO.DO.2011 
       
   523 %\end{itemize}
       
   524 %\begin{tabular}{|p{2cm}|p{8cm}|p{2cm}|}
       
   525 %\hline
       
   526 %Datum & T\"atigkeit & Einheiten \\ \hline
       
   527 %01.03.2011 & Besprechung zum Ablauf der Dokumentationsarbeiten: Protokoll und Dokumentation & 1 \\ \hline
       
   528 %01.03.2011 & Erstellen des Protokolls & 2 \\ \hline
       
   529 %08.03.2011 & Besprechung zur Doku und zur Schnittstelle zu Isabelle-Pure & 1 \\ \hline
       
   530 %17.03.2011 & Dokumentation schreiben & 2 \\ \hline
       
   531 %19.03.2011 & Dokumentation schreiben & 3 \\ \hline
       
   532 %24.04.2011 & Dokumentation schreiben & 2 \\ \hline
       
   533 %25.04.2011 & Dokumentation schreiben & 4 \\ \hline
       
   534 %27.04.2011 & Dokumentation schreiben & 2 \\ \hline
       
   535 %28.04.2011 & Dokumentation: Fertigstellen der ersten Version & 3 \\ \hline \hline
       
   536 % & Anzahl der Einheiten & 20 \\
       
   537 %\hline
       
   538 %\end{tabular}
       
   539 %
       
   540 %\section{Pr\"asentation der Arbeit im IST-Seminar }% am ..(*)...}