doc-src/isac/mlehnfeld/projektbericht.tex
author Mathias Lehnfeld <e0726734@student.tuwien.ac.at>
Sun, 29 May 2011 18:21:04 +0200
branchdecompose-isar
changeset 42034 918b8bc80a2f
child 42035 c37929507c1d
permissions -rw-r--r--
report added
e0726734@42034
     1
\documentclass[a4paper,12pt]{article}
e0726734@42034
     2
e0726734@42034
     3
\usepackage[ngerman]{babel}
e0726734@42034
     4
\usepackage[utf8]{inputenc}
e0726734@42034
     5
e0726734@42034
     6
\def\isac{${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}
e0726734@42034
     7
\def\sisac{\footnotesize${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}
e0726734@42034
     8
e0726734@42034
     9
\begin{document}
e0726734@42034
    10
e0726734@42034
    11
\title{\Large {\bf Verbindung von 'Computation' und 'Deduction' im \isac{}-System}\\~\\
e0726734@42034
    12
	Projektpraktikum am Institut für Computersprachen, TU Wien}
e0726734@42034
    13
\author{Mathias Lehnfeld\\
e0726734@42034
    14
	{\tt mathias.lehnfeld@gmx.at}}
e0726734@42034
    15
\maketitle
e0726734@42034
    16
e0726734@42034
    17
\clearpage
e0726734@42034
    18
e0726734@42034
    19
e0726734@42034
    20
\section{Zur Aufgabenstellung}
e0726734@42034
    21
Das \sisac{}-Projekt entwickelt einen {\it math assistant} aufbauend auf den
e0726734@42034
    22
{\it theorem prover} Isabelle. Der Kern des \sisac{}-Systems ist ein
e0726734@42034
    23
{\it Lucas-Interpreter}, der automatisch Benutzerführung für schrittweises
e0726734@42034
    24
Problemlösen erzeugt: Der nächste Schritt wird von einem Programm
e0726734@42034
    25
berechnet ({\it computation}); {\it deduction} wird gefordert, wenn der Benutzer
e0726734@42034
    26
eine Formel eingibt (die Ableitbarkeit der Formel aus dem {\it context} ist
e0726734@42034
    27
zu beweisen).\\
e0726734@42034
    28
\\
e0726734@42034
    29
Die Aufgabenstellung im Rahmen des Projektpraktikums besteht darin, das
e0726734@42034
    30
in Isabelle verfügbare Konzept {\it context} in den Lucas-Interpreter
e0726734@42034
    31
einzubauen. Dies schließt grundlegende Design-Überlegungen ein, verlangt
e0726734@42034
    32
tiefes Eindringen in den umfangreichen Code von zwei Softwareprodukten,
e0726734@42034
    33
{\it Isabelle} und \sisac{} und bedeutet daher Zusammenarbeit mit den jeweiligen
e0726734@42034
    34
Entwicklerteams.\\
e0726734@42034
    35
\\
e0726734@42034
    36
Ein erfolgreicher Einbau der Isabelle-{\it context}s in den
e0726734@42034
    37
Lucas-Interpreter wird \sisac{}s Fähigkeit, Benutzereingaben zu
e0726734@42034
    38
interpretieren, wesentlich erweitern: {\it context}s stellen Isabelles
e0726734@42034
    39
automatischen Beweisern die notwendigen Daten bereit.
e0726734@42034
    40
e0726734@42034
    41
\clearpage
e0726734@42034
    42
e0726734@42034
    43
\section{Planung des Projektinhaltes}
e0726734@42034
    44
\subsection{Ist-Zustand vor dem Projekt}
e0726734@42034
    45
Das Isabelle Konzept der {\it context}s findet derzeit in \sisac{} noch keine Verwendung. Dadurch entstehen gewisse Einschränkungen bezüglich der Interpretation durch den Lucas-Interpreter, weil Rechenschritte nicht unter Berücksichtigung aller Faktoren ihres Kontexts betrachtet werden können. Derzeit werden Zusicherungen und Umgebungsdaten in einer \sisac{}-spezifischen Datenstruktur verwaltet, die Zugriffe auf Isabelles Prover nicht direkt unterstützen.
e0726734@42034
    46
e0726734@42034
    47
\subsection{Geplanter Soll-Zustand nach dem Projekt}
e0726734@42034
    48
\sisac{}s Lucas-Interpreter ist nun schlanker und nimmt Isabelles {\it context}s bei der Interpretation von Benutzereingaben in Anspruch. Spezifikationen werden mit Isabelles eigenen Datenstrukturen verwaltet. Zusicherungen und Typen von Variablen werden im Lucas-Interpreter in {\it context}s behandelt.
e0726734@42034
    49
e0726734@42034
    50
\clearpage
e0726734@42034
    51
e0726734@42034
    52
\section{Dokumentation der Meilensteine}
e0726734@42034
    53
e0726734@42034
    54
\subsection{Voraussetzungen zum Arbeitsbeginn schaffen}
e0726734@42034
    55
\begin{tabular}[t]{lll}
e0726734@42034
    56
    {\bf Datum} & {\bf Stunden} & {\bf Beschreibung} \\
e0726734@42034
    57
    10.02.2011 & 2:00 & Besprechung der Problemstellung \\
e0726734@42034
    58
    11.02.2011 & 1:30 & {\it context}s studieren, Isabelle/Mercurial Installation \\
e0726734@42034
    59
    18.02.2011 & 0:15 & meld/tortoisehg installieren \\
e0726734@42034
    60
    20.02.2011 & 1:00 & Projektbeschreibung, jedit Probleme \\
e0726734@42034
    61
    25.02.2011 & 1:00 & Ausarbeitung Meilensteine \\
e0726734@42034
    62
    26.02.2011 & 1:00 & Ausarbeitung Ist-/Soll-Zustand, {\it context}s studieren\\
e0726734@42034
    63
    28.02.2011 & 1:15 & Einführungsbeispiel {\it context}s \\
e0726734@42034
    64
    28.02.2011 & 1:15 & Projektplan erstellen, formatieren \\
e0726734@42034
    65
    01.03.2011 & 1:00 & Projektplan überarbeiten, Stundenlisten \\
e0726734@42034
    66
\end{tabular}
e0726734@42034
    67
e0726734@42034
    68
\subsection{\isac{} auf die letzte Isabelle-Release updaten}
e0726734@42034
    69
Die Arbeit mit den Isabelle {\it context}s wird Anfragen in isabelle-dev@
e0726734@42034
    70
erfordern. isabelle-dev@ beantwortet Fragen i.A. nur für die aktuelle
e0726734@42034
    71
Release. Überraschenderweise wurde vor zwei Wochen eine neue Release
e0726734@42034
    72
veröffentlicht. Daher muss auf diese vor Arbeitsbeginn upgedatet werden.\\
e0726734@42034
    73
\\
e0726734@42034
    74
\begin{tabular}[t]{lll}
e0726734@42034
    75
    {\bf Datum} & {\bf Stunden} & {\bf Beschreibung} \\
e0726734@42034
    76
    18.02.2011 & 2:45 & Anpassungen an Isabelle2011 \\
e0726734@42034
    77
    20.02.2011 & 2:45 & Update auf Isabelle2011, Fehlersuche \\
e0726734@42034
    78
    21.02.2011 & 6:30 & ... \\
e0726734@42034
    79
    25.02.2011 & 5:30 & ... \\
e0726734@42034
    80
    26.02.2011 & 4:30 & ... \\
e0726734@42034
    81
    03.03.2011 & 5:00 & ... \\
e0726734@42034
    82
    04.03.2011 & 6:00 & Tests reparieren \\
e0726734@42034
    83
\end{tabular}
e0726734@42034
    84
e0726734@42034
    85
\subsection{Parsen aus {\it context}s}
e0726734@42034
    86
Bisher nahm \sisac{} für jede Variable den Typ {\it real} an. Ab jetzt werden Variablen, Terme und Prädikate beim ersten Auftreten im {\it context} eingetragen. User-Input wird mithilfe des {\it context}s typgerecht geparst.\\
e0726734@42034
    87
\\
e0726734@42034
    88
\begin{tabular}[t]{lll}
e0726734@42034
    89
    {\bf Datum} & {\bf Stunden} & {\bf Beschreibung} \\
e0726734@42034
    90
    02.03.2011 & 1:30 & vorbereitendes Übungsbeispiel \\
e0726734@42034
    91
    03.03.2011 & 1:00 & ... \\
e0726734@42034
    92
    04.03.2011 & 5:00 & Funktion {\tt parseNEW} schreiben \\
e0726734@42034
    93
    05.03.2011 & 3:00 & Funktion {\tt vars} anpassen, {\tt declare\_constraints} neu \\
e0726734@42034
    94
    07.03.2011 & 8:45 & {\tt parseNEW}, Spezifikationen studieren \\
e0726734@42034
    95
    08.03.2011 & 6:00 & {\it context} in zentrale Datenstrukturen einbauen \\
e0726734@42034
    96
    09.03.2011 & 2:00 & Fehlersuche {\it context}-Integration \\
e0726734@42034
    97
\end{tabular}
e0726734@42034
    98
e0726734@42034
    99
\subsection{Spezifikationsphase mit {\it context}s}
e0726734@42034
   100
\sisac{} sah für die Spezifikation eine Datenstruktur vor, die interaktives Spezifizieren effizient unterstützt. Diese Datenstruktur ist nun durch {\it context}s ersetzt. Dadurch ist die bisherige Fixierung auf {\it real} aufgehoben und beliebige Typen werden fehlerfrei behandelt.\\
e0726734@42034
   101
\\
e0726734@42034
   102
\begin{tabular}[t]{lll}
e0726734@42034
   103
    {\bf Datum} & {\bf Stunden} & {\bf Beschreibung} \\
e0726734@42034
   104
    10.03.2011 & 2:30 & {\it context} in {\tt prep\_ori} und {\tt appl\_add} einbauen\\
e0726734@42034
   105
    11.03.2011 & 5:45 & {\tt appl\_add} überarbeiten \\
e0726734@42034
   106
    12.03.2011 & 5:15 & Fehlersuche \\
e0726734@42034
   107
    14.03.2011 & 2:00 & ... \\
e0726734@42034
   108
    16.03.2011 & 2:30 & ... \\
e0726734@42034
   109
    17.03.2011 & 1:45 & ... \\
e0726734@42034
   110
    18.03.2011 & 4:45 & ..., Optimierung \\
e0726734@42034
   111
    19.03.2011 & 5:30 & ... \\
e0726734@42034
   112
    21.03.2011 & 3:00 & Abschluss Spezifikationsphase \\
e0726734@42034
   113
\end{tabular}
e0726734@42034
   114
e0726734@42034
   115
\subsection{Lösungsphase mit {\it context}s}
e0726734@42034
   116
Der Lucas-Interpreter hatte Environment und Assertions (precondition, partiality conditions, etc) getrennt gespeichert. Nun sind Environment und Assertions im {\it context} vereint, der Interpreter einfacher und genereller.\\
e0726734@42034
   117
\\
e0726734@42034
   118
\begin{tabular}[t]{lll}
e0726734@42034
   119
    {\bf Datum} & {\bf Stunden} & {\bf Beschreibung} \\
e0726734@42034
   120
    22.03.2011 & 4:30 & {\it context} in Funktion {\tt solve} einbauen\\
e0726734@42034
   121
    23.03.2011 & 4:45 & Tests reparieren \\
e0726734@42034
   122
    24.03.2011 & 3:30 & ... \\
e0726734@42034
   123
    25.03.2011 & 2:00 & ... \\
e0726734@42034
   124
    03.04.2011 & 4:00 & ... \\
e0726734@42034
   125
    05.04.2011 & 8:00 & Optimierung \\
e0726734@42034
   126
    06.04.2011 & 7:15 & Lösung Exponentenoperator \\
e0726734@42034
   127
    07.03.2011 & 7:00 & ... \\
e0726734@42034
   128
    12.04.2011 & 3:30 & Projektbericht \\
e0726734@42034
   129
\end{tabular}
e0726734@42034
   130
e0726734@42034
   131
\section{Bericht zum Projektverlauf}
e0726734@42034
   132
e0726734@42034
   133
\subsection{Voraussetzungen zum Arbeitsbeginn schaffen}
e0726734@42034
   134
Die Größe der Projekte {\it Isabelle} und \sisac{} sowie deren Abgrenzung haben den Weg zu meinem schließlichen Verständnis der Aufgabenstellung etwas langwierig gestaltet. Die lange Vorbereitung hat sich aber positiv auf den weiteren Verlauf des Projektes ausgewirkt.
e0726734@42034
   135
e0726734@42034
   136
\subsection{\isac{} auf die letzte Isabelle-Release updaten}
e0726734@42034
   137
Da die Veröffentlichung der {\it Isabelle}-Version 2009-2 noch nicht lange zurück lag, kam {\it Isabelle2011} mit vielen grundlegenden Änderungen im System kurz vor Projektbeginn sehr überraschend. Die Mailingliste der Entwickler beantwortet nur Fragen zur aktuellen Release, weshalb ein entsprechendes Update von \sisac{} vor Arbeitsbeginn notwendig war.
e0726734@42034
   138
Dieser Arbeitsschritt beanspruchte wesentlich mehr Zeit als ursprünglich geplant. Als \sisac{} schließlich erfolgreich kompilierte funktionierte eine große Zahl der Tests nicht mehr. Dies machte die selbstständige Arbeit für mich vorerst unmöglich. Ich konnte jedoch in persönlicher Zusammenarbeit mit Walther Neuper meine Fähigkeiten einbringen.
e0726734@42034
   139
e0726734@42034
   140
\subsection{Parsen aus {\it context}s}
e0726734@42034
   141
In diesem Schritt konnte ich besonders Syntax und Funktionsweise von StandardML, die praktischen, {\it Isabelle}-eigenen Operatoren und die Arbeitsweise mit der Entwicklungsumgebung kennen lernen. Dieser Meilenstein konnte in recht kurzer Zeit abgeschlossen werden.
e0726734@42034
   142
e0726734@42034
   143
\subsection{Spezifikationsphase mit {\it context}s}
e0726734@42034
   144
Hier konnte ich sehr viel selbstständig arbeiten. Zu Beginn verlief alles völlig problemlos, die Suche nach einem bestimmten Fehler beanspruchte dann aber mit Abstand die meiste Zeit, hatte jedoch zur Folge, dass ich mich sehr intensiv mit dem System auseinandersetzen musste und damit einige Kernfunktionen kennen und verstehen lernte und teilweise sogar etwas optimieren konnte.
e0726734@42034
   145
Insgesamt verlief diese Phase trotz der langwierigen Fehlersuche entsprechend dem Zeitplan.
e0726734@42034
   146
e0726734@42034
   147
\subsection{Lösungsphase mit {\it context}s}
e0726734@42034
   148
Die Integration von {\it context}s in die Lösungsphase zur Ersetzung und Zusammenführung von Environment und Assertions konnte in enger Zusammenarbeit mit Herrn Neuper fertiggestellt werden. Der Code des Lucas-Interpreters ist jetzt sauberer und die Logik vereinfacht.
e0726734@42034
   149
e0726734@42034
   150
e0726734@42034
   151
\section{Abschließende Bemerkungen}
e0726734@42034
   152
Rückblickend betrachte ich das Projektpraktikum als sehr positive Erfahrung, da ich das Gefühl habe, etwas nicht Unwesentliches  zur Erweiterung von \sisac{} beigetragen zu haben. Die persönliche Zusammenarbeit mit Akademikern und auch die Verrichtung einer Arbeit, die nach Abschluss gebraucht und verwendet wird, ist eine Erfahrung, die ich im Verlauf meines Studiums leider erst einmal davor machen durfte.\\
e0726734@42034
   153
Der nicht zuletzt durch das überraschend notwendig gewordene Update bedingte zähe Verlauf bis ich endlich wirklich an der eigentlichen Aufgabenstellung arbeiten konnte war etwas ernüchternd, da ich gehofft hatte, das Praktikum bis spätestens Ende März abschließen zu können.\\
e0726734@42034
   154
Die Zusammenarbeit mit Herrn Neuper hat jedenfalls sehr gut funktioniert und aus meiner Sicht haben wir uns sehr gut verstanden. Das hat ein entspanntes Arbeitsklima ermöglicht.
e0726734@42034
   155
e0726734@42034
   156
\end{document}