doc-src/isac/msteger/bakk-presentation.tex
author Marco Steger <m.steger@student.tugraz.at>
Wed, 22 Jun 2011 19:48:14 +0200
branchdecompose-isar
changeset 42050 2b69a774afd5
parent 42048 6548da70f14e
child 42052 39d3f1dfbece
permissions -rw-r--r--
presentation: final version
neuper@41965
     1
% /usr/share/doc/latex-beamer/solutions/conference-talks/conference-ornate-20min.en.tex
neuper@41965
     2
neuper@41965
     3
\documentclass{beamer}
neuper@41965
     4
\mode<presentation>
neuper@41965
     5
{
neuper@41965
     6
  \usetheme{Hannover}
neuper@41965
     7
  \setbeamercovered{transparent}
neuper@41965
     8
}
neuper@41965
     9
\usepackage[english]{babel}
neuper@41965
    10
\usepackage[latin1]{inputenc}
neuper@41965
    11
\usepackage{times}
neuper@42042
    12
\usepackage{ngerman}
neuper@41965
    13
\usepackage[T1]{fontenc}
neuper@41965
    14
%\usepackage{graphicx}
neuper@41965
    15
neuper@41965
    16
\def\isac{${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}
neuper@41965
    17
\def\sisac{{\footnotesize${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}}
neuper@41965
    18
neuper@41965
    19
\title[Isabelle Frontend]
neuper@41965
    20
{Userinterfaces \\f\"ur Computer Theorem Prover,\\
neuper@42042
    21
	Machbarkeits-Studie im \isac-Projekt
neuper@41965
    22
}
neuper@41965
    23
\subtitle{Bachelorarbeit Telematik}
neuper@41965
    24
neuper@41965
    25
\author{Marco Steger}
neuper@41965
    26
\institute{Institut f\"ur Software Technologie\\
neuper@41965
    27
  Technische Universit\"at Graz}
neuper@41965
    28
m@42050
    29
\date{21.06.2011}
neuper@41965
    30
%\subject{Formal specification of math assistants}
neuper@41965
    31
% This is only inserted into the PDF information catalog
neuper@41965
    32
neuper@41965
    33
% Delete this, if you do not want the table of contents to pop up at
neuper@41965
    34
% the beginning of each subsection:
neuper@41965
    35
\AtBeginSubsection[]
neuper@41965
    36
{
neuper@41965
    37
  \begin{frame}<beamer>
neuper@41965
    38
    \frametitle{Outline}
neuper@41965
    39
    \tableofcontents[currentsection,currentsubsection]
neuper@41965
    40
  \end{frame}
neuper@41965
    41
}
neuper@41965
    42
neuper@41965
    43
neuper@41965
    44
% If you wish to uncover everything in a step-wise fashion, uncomment
neuper@41965
    45
% the following command: 
neuper@41965
    46
%\beamerdefaultoverlayspecification{<+->}
neuper@41965
    47
neuper@41965
    48
neuper@41965
    49
\begin{document}
neuper@41965
    50
\begin{frame}
neuper@41965
    51
  \titlepage
neuper@41965
    52
\end{frame}
neuper@41965
    53
neuper@41965
    54
\begin{frame}
neuper@41965
    55
  \frametitle{Outline}
neuper@41965
    56
  \tableofcontents
neuper@41965
    57
  % You might wish to add the option [pausesections]
neuper@41965
    58
\end{frame}
neuper@41965
    59
neuper@42046
    60
\section[Stutus quo]{Ausgangssituation: das k\"unftige Isabelle Front-end}
neuper@42046
    61
\subsection[Isabelle]{Der Theoremprover Isabelle}
neuper@41965
    62
\begin{frame}
neuper@41965
    63
  \frametitle{Der Theoremprover Isabelle}
neuper@41965
    64
\begin{itemize}
neuper@41965
    65
\item Anwendungen von Isabelle
neuper@41965
    66
  \begin{itemize}
neuper@41965
    67
  \item Mechanisieren von Mathematik Theorien
neuper@41965
    68
    \begin{itemize}
neuper@41965
    69
    \item nat\"urliche, reelle, komplexe Zahlen, Listen, Lattices, \dots
neuper@41965
    70
    \item Gr\"obner Basen, Integral/Differential, Taylorreihen, \dots          
neuper@41965
    71
    \item High Order Logics, Logic of Computable Functions, \dots
neuper@41965
    72
    \end{itemize}
neuper@42042
    73
\pause
neuper@41965
    74
  \item Math.Grundlagen f\"ur Softwaretechnologie
neuper@41965
    75
    \begin{itemize}
neuper@41965
    76
    \item Hoare Logic, Temporal Logic of Actions, Hoare for Java
neuper@41965
    77
    \item Theory for Unix file-system security, for state spaces, \dots
neuper@41965
    78
    \item Archive of Formal Proofs {\tiny\tt http://afp.sourceforge.net}
neuper@41965
    79
    \end{itemize}
neuper@41965
    80
  \end{itemize}
neuper@42042
    81
\pause
neuper@41965
    82
\item Integration von Isabelle in Entwicklungstools
neuper@41965
    83
  \begin{itemize}
neuper@41965
    84
  \item Boogie --- Verification Condition Generator
neuper@42042
    85
  \item $\mathbf{\pi}d.e$ Projekt: Unterst\"utzung Domain-spezifischen CTPs
neuper@42042
    86
  \item Test Case Generators (TUG) ?
neuper@41965
    87
  \end{itemize}
neuper@42042
    88
\pause
neuper@41965
    89
\item Isar, die Beweissprache von Isabelle
neuper@42042
    90
  \begin{itemize}
m@42050
    91
  %\item Demo $\sqrt{2}\not\in{\cal R}\;\;\;$ 
m@42050
    92
  \item Demo 'Allgemeine Dreiecke'
neuper@41965
    93
\pause
neuper@42042
    94
\alert{Beweisteile asynchron interpretiert}
neuper@41965
    95
  \end{itemize}
neuper@41965
    96
\end{itemize}
neuper@41965
    97
\end{frame}
neuper@41965
    98
neuper@42042
    99
\subsection[Scala-Layer]{Die Konzeption des Scala-Layers}
neuper@42042
   100
\begin{frame}\frametitle{Die Konzeption des Scala-Layers}
neuper@42046
   101
\begin{figure}
neuper@42046
   102
\begin{center}
neuper@42046
   103
\includegraphics[width=100mm]{fig-reuse-ml-scala-SD}
neuper@42046
   104
\end{center}
neuper@42046
   105
%\nocaptionrule\caption{Reuse of Isabelle/Isar's Scala API.}
neuper@42046
   106
\label{fig-reuse-ml-scala}
neuper@42046
   107
\end{figure}
neuper@42042
   108
\end{frame}
neuper@41965
   109
neuper@42042
   110
\begin{frame}\frametitle{Kommunikationsprotokoll \\Scala --- SML}
neuper@42042
   111
\begin{itemize}
neuper@42042
   112
\item Das Protokoll ist \textbf{asynchron}: \\
neuper@42042
   113
verschiedene Teile eines Beweises werden in verschiedenen Threads interpretiert
neuper@42042
   114
\pause
neuper@42042
   115
\item Die Threads werden von Scala-\textbf{``Actors''} verwaltet (``Actors'' von der Programmsprache Erlang \"ubernommen)
neuper@42042
   116
\pause
neuper@42042
   117
\item \alert{Das Protokoll hat \textbf{kein API} nach aussen:}\\
neuper@42042
   118
\pause
neuper@42042
   119
Der Scala-Layer zielt auf konsistente Verwaltung gro\3er, verteilter Theorie-Bibliotheken\\
neuper@42042
   120
\pause
neuper@42042
   121
Anwendungsprogrammierer sollen nicht hier eingreifen, sondern Isabelle Theorien erweitern\\
neuper@42042
   122
\pause
neuper@42042
   123
\alert{\textit{!~Grunds\"atzliches Problem f\"ur das Projekt ``SD''~!}}
neuper@42042
   124
\end{itemize}
neuper@42042
   125
\end{frame}
neuper@41965
   126
neuper@42042
   127
\subsection[Integration]{Isabelles Filestruktur im \"Ubergangsstadium}
m@42050
   128
<<<<<<< local
neuper@41965
   129
m@42050
   130
=======
m@42050
   131
>>>>>>> other
m@42050
   132
m@42050
   133
<<<<<<< local
m@42050
   134
%\begin{frame}\frametitle{Isabelle Files: *.jar}
m@42050
   135
%{\footnotesize
m@42050
   136
%----- for ``isabelle jedit \&''; contained in Isabelle\_bundle}\\
m@42050
   137
%{\tiny
m@42050
   138
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jedit.jar\\
m@42050
   139
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/LatestVersion.jar\\
m@42050
   140
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/SideKick.jar\\
m@42050
   141
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/Console.jar\\
m@42050
   142
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/Pure.jar \alert{$\;\;\;\;\;\;\;\;\;\;\;\Longleftarrow$ entry to SML}\\
m@42050
   143
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/Isac.jar\\
m@42050
   144
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/scala-compiler.jar\\
m@42050
   145
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/Isabelle-jEdit.jar\\
m@42050
   146
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/cobra.jar\\
m@42050
   147
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/js.jar\\
m@42050
   148
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/Hyperlinks.jar\\
m@42050
   149
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/scala-swing.jar\\
m@42050
   150
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/scala-library.jar\\
m@42050
   151
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/QuickNotepad.jar\\
m@42050
   152
%./contrib/jedit-4.3.2\_Isabelle-6d736d983d5c/jars/ErrorList.jar\\
m@42050
   153
%
m@42050
   154
%{\footnotesize
m@42050
   155
%----- scala system; contained in Isabelle\_bundle}\\
m@42050
   156
%./contrib/scala-2.8.1.final/misc/sbaz/scala-bazaars.jar\\
m@42050
   157
%./contrib/scala-2.8.1.final/misc/sbaz/sbaz-tests.jar\\
m@42050
   158
%./contrib/scala-2.8.1.final/misc/scala-devel/plugins/continuations.jar\\
m@42050
   159
%./contrib/scala-2.8.1.final/lib/scala-compiler.jar\\
m@42050
   160
%./contrib/scala-2.8.1.final/lib/scalap.jar\\
m@42050
   161
%./contrib/scala-2.8.1.final/lib/scala-swing.jar\\
m@42050
   162
%./contrib/scala-2.8.1.final/lib/scala-library.jar\\
m@42050
   163
%./contrib/scala-2.8.1.final/lib/jline.jar\\
m@42050
   164
%./contrib/scala-2.8.1.final/lib/scala-dbc.jar\\
m@42050
   165
%./contrib/scala-2.8.1.final/src/scala-library-src.jar\\
m@42050
   166
%./contrib/scala-2.8.1.final/src/scala-swing-src.jar\\
m@42050
   167
%./contrib/scala-2.8.1.final/src/scala-compiler-src.jar\\
m@42050
   168
%./contrib/scala-2.8.1.final/src/scala-dbc-src.jar\\
m@42050
   169
%./contrib/scala-2.8.1.final/src/sbaz-src.jar\\
m@42050
   170
%}
m@42050
   171
%\end{frame}
m@42050
   172
%
m@42050
   173
%\begin{frame}\frametitle{Isabelle Files: *.scala}
m@42050
   174
%{\tiny
m@42050
   175
%./src/Pure/General/xml.scala\\
m@42050
   176
%./src/Pure/General/linear\_set.scala\\
m@42050
   177
=======
neuper@42042
   178
\begin{frame}\frametitle{Isabelle Files: *.scala}
neuper@42042
   179
{\tiny
neuper@42048
   180
\textbf{\$ find -name ``*.scala''}\\
neuper@42042
   181
./src/Pure/General/xml.scala\\
neuper@42042
   182
./src/Pure/General/linear\_set.scala\\
m@42050
   183
>>>>>>> other
neuper@42048
   184
%./src/Pure/General/symbol.scala\\
neuper@42048
   185
%./src/Pure/General/exn.scala\\
neuper@42048
   186
%./src/Pure/General/position.scala\\
neuper@42048
   187
%./src/Pure/General/scan.scala\\
neuper@42048
   188
%./src/Pure/General/xml\_data.scala\\
neuper@42048
   189
%./src/Pure/General/yxml.scala\\
neuper@42048
   190
%./src/Pure/General/markup.scala\\
m@42050
   191
<<<<<<< local
m@42050
   192
=======
neuper@42048
   193
:\\
m@42050
   194
>>>>>>> other
neuper@42048
   195
%./src/Pure/General/sha1.scala\\
m@42050
   196
<<<<<<< local
m@42050
   197
%./src/Pure/General/timing.scala\\
m@42050
   198
%./src/Pure/General/pretty.scala\\
m@42050
   199
%.\\
m@42050
   200
%./src/Pure/Concurrent/volatile.scala\\
m@42050
   201
%./src/Pure/Concurrent/future.scala\\
m@42050
   202
%./src/Pure/Concurrent/simple\_thread.scala\\
m@42050
   203
%.\\
m@42050
   204
%./src/Pure/Thy/html.scala\\
m@42050
   205
%./src/Pure/Thy/completion.scala\\
m@42050
   206
%./src/Pure/Thy/thy\_header.scala\\
m@42050
   207
%./src/Pure/Thy/thy\_syntax.scala\\
m@42050
   208
%./src/Pure/Isac/isac.scala\\
m@42050
   209
%./src/Pure/library.scala\\
m@42050
   210
%.\\
m@42050
   211
%./src/Pure/Isar/keyword.scala\\
m@42050
   212
%./src/Pure/Isar/outer\_syntax.scala\\
m@42050
   213
%./src/Pure/Isar/token.scala\\
m@42050
   214
%./src/Pure/Isar/parse.scala\\
m@42050
   215
%.\\
m@42050
   216
%./src/Pure/System/gui\_setup.scala\\
m@42050
   217
%./src/Pure/System/isabelle\_system.scala\\
m@42050
   218
=======
neuper@42042
   219
./src/Pure/General/timing.scala\\
neuper@42042
   220
./src/Pure/General/pretty.scala\\
neuper@42042
   221
.\\
neuper@42042
   222
./src/Pure/Concurrent/volatile.scala\\
neuper@42042
   223
./src/Pure/Concurrent/future.scala\\
neuper@42042
   224
./src/Pure/Concurrent/simple\_thread.scala\\
neuper@42042
   225
.\\
neuper@42042
   226
./src/Pure/Thy/html.scala\\
neuper@42042
   227
./src/Pure/Thy/completion.scala\\
neuper@42042
   228
./src/Pure/Thy/thy\_header.scala\\
neuper@42042
   229
./src/Pure/Thy/thy\_syntax.scala\\
neuper@42042
   230
./src/Pure/Isac/isac.scala\\
neuper@42042
   231
./src/Pure/library.scala\\
neuper@42042
   232
.\\
neuper@42042
   233
./src/Pure/Isar/keyword.scala\\
neuper@42042
   234
./src/Pure/Isar/outer\_syntax.scala\\
neuper@42042
   235
./src/Pure/Isar/token.scala\\
neuper@42042
   236
./src/Pure/Isar/parse.scala\\
neuper@42042
   237
.\\
neuper@42042
   238
./src/Pure/System/gui\_setup.scala\\
neuper@42042
   239
./src/Pure/System/isabelle\_system.scala\\
m@42050
   240
>>>>>>> other
neuper@42048
   241
%./src/Pure/System/swing\_thread.scala\\
neuper@42048
   242
%./src/Pure/System/download.scala\\
neuper@42048
   243
%./src/Pure/System/session\_manager.scala\\
neuper@42048
   244
%./src/Pure/System/standard\_system.scala\\
neuper@42048
   245
%./src/Pure/System/isabelle\_syntax.scala\\
neuper@42048
   246
%./src/Pure/System/session.scala\\
neuper@42048
   247
%./src/Pure/System/platform.scala\\
neuper@42048
   248
%./src/Pure/System/cygwin.scala\\
m@42050
   249
<<<<<<< local
m@42050
   250
%./src/Pure/System/event\_bus.scala\\
m@42050
   251
%./src/Pure/System/isabelle\_process.scala\\
m@42050
   252
%.\\
m@42050
   253
%./src/Pure/PIDE/document.scala\\
m@42050
   254
%./src/Pure/PIDE/markup\_tree.scala\\
m@42050
   255
%./src/Pure/PIDE/text.scala\\
m@42050
   256
%./src/Pure/PIDE/command.scala\\
m@42050
   257
%./src/Pure/PIDE/isar\_document.scala
m@42050
   258
%}
m@42050
   259
%\end{frame}
m@42050
   260
=======
neuper@42048
   261
:\\
neuper@42042
   262
./src/Pure/System/event\_bus.scala\\
neuper@42042
   263
./src/Pure/System/isabelle\_process.scala\\
neuper@42042
   264
.\\
neuper@42042
   265
./src/Pure/PIDE/document.scala\\
neuper@42042
   266
./src/Pure/PIDE/markup\_tree.scala\\
neuper@42042
   267
./src/Pure/PIDE/text.scala\\
neuper@42042
   268
./src/Pure/PIDE/command.scala\\
neuper@42042
   269
./src/Pure/PIDE/isar\_document.scala
neuper@42042
   270
}
neuper@42042
   271
\end{frame}
m@42050
   272
>>>>>>> other
neuper@42042
   273
neuper@42042
   274
\begin{frame}\frametitle{*.scala --- *.ML}
neuper@42042
   275
{\footnotesize
neuper@42042
   276
isabisac\$ ls -l src/Pure/System/\\
neuper@42042
   277
-rw-r--r-- 1 msteger root  3987 2011-03-14 17:09 cygwin.scala\\
neuper@42042
   278
-rw-r--r-- 1 msteger root  1486 2011-03-14 17:09 download.scala\\
neuper@42042
   279
-rw-r--r-- 1 msteger root  1296 2011-03-14 17:09 event\_bus.scala\\
neuper@42042
   280
-rw-r--r-- 1 msteger root  1830 2011-03-14 17:09 gui\_setup.scala\\
neuper@42042
   281
-rw-r--r-- 1 msteger root  5722 2011-03-14 17:09 \alert{isabelle\_process}.\textbf{ML}\\
neuper@42042
   282
-rw-r--r-- 1 msteger root 1059 2011-03-14 17:09 \alert{isabelle\_process}.\textbf{scala}\\
neuper@42042
   283
-rw-r--r-- 1 msteger root  1659 2011-03-14 17:09 isabelle\_syntax.scala\\
neuper@42042
   284
-rw-r--r-- 1 msteger root  2087 2011-03-14 17:09 \alert{isabelle\_system}.\textbf{ML}\\
neuper@42042
   285
-rw-r--r-- 1 msteger root 1168 2011-03-14 17:09 \alert{isabelle\_system}.\textbf{scala}\\
neuper@42042
   286
-rw-r--r-- 1 msteger root  5935 2011-03-14 17:09 isar.ML\\
neuper@42042
   287
-rw-r--r-- 1 msteger root  1989 2011-03-14 17:09 platform.scala\\
neuper@42042
   288
-rw-r--r-- 1 msteger root  1427 2011-03-14 17:09 session\_manager.scala\\
neuper@42042
   289
-rw-r--r-- 1 msteger root  3833 2011-03-14 17:09 \alert{session}.\textbf{ML}\\
neuper@42042
   290
-rw-r--r-- 1 msteger root  9172 2011-03-14 17:09 \alert{session}.\textbf{scala}\\
neuper@42042
   291
-rw-r--r-- 1 msteger root  9086 2011-03-14 17:09 standard\_system.scala\\
neuper@42042
   292
-rw-r--r-- 1 msteger root  1643 2011-03-14 17:09 swing\_thread.scala\\
neuper@42042
   293
neuper@42042
   294
}
neuper@42042
   295
\end{frame}
neuper@42042
   296
neuper@42042
   297
\subsection[jEdit]{Das Frontend: jEdit und ``plugins''}
neuper@42042
   298
\begin{frame}\frametitle{Das Frontend: \\jEdit und ``plugins''}
neuper@42042
   299
\begin{itemize}
neuper@42042
   300
\item \textbf{jEdit} \textit{``is a mature programmer's text editor with hundreds (counting the time developing \textbf{plugins}) of person-years of development behind it.''}
neuper@42042
   301
\pause
neuper@42042
   302
\item Also: Die Funktionalit\"at von jEdit wird \"uber ``plugins'' bestimmt
neuper@42042
   303
\pause
neuper@42042
   304
\item Isabelle verwendet eine Reihe davon
neuper@42042
   305
  \begin{itemize}
neuper@42042
   306
  \item der Parser ``Sidekick''
neuper@42042
   307
  \item Console f\"ur jEdit-Komponenten
neuper@42042
   308
  \item + Scala
neuper@42042
   309
  \item + Ml
neuper@42042
   310
  \item etc
neuper@42042
   311
  \end{itemize}
neuper@42042
   312
\pause
neuper@42042
   313
\item jEdit ist ``open source'' mit gro\3er Community
neuper@42042
   314
\pause
neuper@42042
   315
\item Anfragen an Mailinglisten von jEdit (ohne Scala-plugin!) und Isabelle
neuper@42042
   316
\end{itemize}
neuper@42042
   317
\end{frame}
neuper@42042
   318
neuper@42046
   319
\section[Projektarbeit]{Projekt: Vorarbeiten f\"ur ``structured derivations'' (SD)}
neuper@42046
   320
\subsection[Aufgabenstellung]{Definition der Aufgabenstellung}
neuper@42046
   321
\begin{frame}\frametitle{Definition der Aufgabenstellung}
neuper@42048
   322
Aufgabenstellung: \\Feasibility-Study zur Implementierung von ``structured~derivations'' (SD) in Isabelle.\\
neuper@42046
   323
neuper@42046
   324
\textit{``Die Implementierung soweit vorantreiben wie im gegebenen Studenausma\3 m\"oglich~!''}\\
neuper@42046
   325
neuper@42046
   326
Milestones:
neuper@42046
   327
\begin{enumerate}
neuper@42046
   328
\item Relevante Isabelle Komponenten identifizieren und studieren
neuper@42046
   329
\item Installation der Standard-Komponenten
neuper@42046
   330
\item Entwicklungsumgebung vom Isabelle-Team kopieren
neuper@42046
   331
\item Relevante Komponenten implementieren
neuper@42046
   332
  \begin{itemize}
neuper@42046
   333
  \item jEdit Plugin f\"ur SD
neuper@42046
   334
  \item zugeh\"origen Parser
neuper@42046
   335
  \item nicht vorgesehen: SD-Interpreter in Isar (SML)
neuper@42046
   336
  \end{itemize}
neuper@42046
   337
\end{enumerate}
neuper@42046
   338
\end{frame}
neuper@42046
   339
neuper@42046
   340
%\subsection[Beispiel SD]{Beispiel ``structured derivation'' (SD)}
neuper@42042
   341
\begin{frame}\frametitle{Beispiel ``structured~derivation''~(SD)}
neuper@42042
   342
{\footnotesize
neuper@42042
   343
\begin{tabbing}
neuper@42042
   344
123,\=1234\=1234\=1234\=1234\=1234\=1234\=123\=\kill
neuper@42042
   345
\>$\bullet$\>Simplify $(1 - x) * (x ^ 2 + 1) + x ^ 3 - x ^ 2$\\
neuper@42042
   346
\>  \>$(1 - x) * (x ^ 2 + 1) + x ^ 3 - x ^ 2$\\
neuper@42042
   347
\>$\equiv$\>$\{ {\it RewriteSet}\;{\it purify}\}$\\
neuper@42042
   348
\>  \>$(1 + -1 * x) * (x ^ 2 + 1) + x ^ 3 + -1 * x ^ 2$\\
neuper@42042
   349
\>$\equiv$\>$\{{\it RewriteSet}\;{\it simplify\_pure}\}$\\
neuper@42042
   350
\>  \>$\bullet$\>$(1 + -1 * x) * (x ^ 2 + 1) + x ^ 3 + -1 * x ^ 2$\\
neuper@42042
   351
\>  \>$\equiv$\>$\{{\it RewriteSet}\;{\it expand\_poly\_}\}$ \\
neuper@42042
   352
\>  \>   \>$1 * x ^ 2 + 1 * 1 + (-1 * x * x ^ 2 + -1 * x * 1) + x ^ 3 +-1 * x ^ 2$\\
neuper@42042
   353
\>  \>$\equiv$\>\vdots\\
neuper@42042
   354
\>  \>  \>$1 + -1 * x + 0 * x ^ 2 + 0 * x ^ 3$\\
neuper@42042
   355
\>  \>$\equiv$\>$\{{\it RewriteSet}\;{\it reduce\_012\_}\}$  \\
neuper@42042
   356
\>  \>     \>$1 + -1 * x$\\
neuper@42042
   357
\>\dots\>$1 + -1 * x$\\
neuper@42042
   358
\>$\equiv$\>$\{{\it RewriteSet}\;{\it beautify}\}$\\
neuper@42042
   359
\>  \>$1-x$
neuper@42042
   360
\end{tabbing}
neuper@42042
   361
}
neuper@42042
   362
\end{frame}
neuper@42042
   363
neuper@42046
   364
\subsection[NetBeans]{Konfiguration des Projektes in der NetBeans IDE}
neuper@42046
   365
\begin{frame}\frametitle{Konfiguration in NetBeans}
neuper@42046
   366
Mehrere Run-Konfigurationen sind praktisch:
m@42043
   367
\begin{itemize}
neuper@42046
   368
\item Start von jEdit + Plug-ins aus NetBeans
neuper@42046
   369
  \begin{itemize}
neuper@42046
   370
  \item Exekution der fertig kompilierten jEdit.jar
neuper@42046
   371
  \item Exkution der eingebundenen jEdit Sources: \\zum Debuggen !
neuper@42046
   372
  \end{itemize}
neuper@42046
   373
\item Start von jEdit aus der Konsole
neuper@42046
   374
\end{itemize}
neuper@42046
   375
\vspace{0.2cm}   \pause
neuper@42046
   376
Dementsprechend komplex sind die Konfigurations-Files:
neuper@42046
   377
\begin{center}
neuper@42046
   378
\begin{tabular}{l r l}
neuper@42046
   379
build.xml          & 102 & LOCs\\
neuper@42046
   380
project.xml        & 25  & LOCs\\
neuper@42046
   381
project.properties & 85  & LOCs\\
neuper@42046
   382
build-impl.xml     & 708 & LOCs\\
neuper@42046
   383
                   &     & (teilw. automatisch generiert)\end{tabular}
neuper@42046
   384
\end{center}
neuper@42046
   385
\end{frame}
neuper@42046
   386
neuper@42046
   387
\subsection[Implementation]{Komponenten zur Implementation von SD}
neuper@42046
   388
neuper@42046
   389
\begin{frame}\frametitle{Die Konzeption des Scala-Layers}
neuper@42046
   390
\begin{figure}
neuper@42046
   391
\includegraphics[width=100mm]{fig-jedit-plugins-SD}
neuper@42046
   392
\label{Frontend des jEdit}
neuper@42046
   393
\end{figure}
neuper@42046
   394
\end{frame}
neuper@42046
   395
neuper@42046
   396
\begin{frame}\frametitle{jEdit-Plugin}
neuper@42046
   397
\begin{itemize}
neuper@42046
   398
\item Aufbau: Ein Plugin besteht aus:
m@42043
   399
\pause
m@42043
   400
	\begin{itemize}
m@42043
   401
	\item Source-Files: \textbf{Scala} 
m@42043
   402
	\pause
m@42043
   403
	\item Property file 
m@42043
   404
	\pause
neuper@42046
   405
	\item XML-Files: \textit{``glue code''} zwischen \textbf{Java} (Editor) und \textbf{Scala} (Plugin)
m@42043
   406
	\end{itemize}
neuper@42046
   407
%\pause
neuper@42046
   408
%\item Bestehendes Java-Plugin in Scala transferieren
neuper@42046
   409
%\pause
neuper@42046
   410
%\item Neue Ordnerstruktur in bestehende Isabelle-Ordner-Hierachie integrieren
m@42043
   411
\end{itemize}
m@42043
   412
\end{frame}
m@42043
   413
neuper@42048
   414
\begin{frame}\frametitle{Sources des jEdit Plugins}
neuper@42048
   415
{\tiny
neuper@42048
   416
src/Tools/jEditC\textbf{\$ ls -l *}\\
neuper@42048
   417
build.xml\\
neuper@42048
   418
%makedist\\
neuper@42048
   419
%manifest.mf\\
neuper@42048
   420
%README\_BUILD\\
neuper@42048
   421
\textbf{build/*}\\
neuper@42048
   422
\textbf{contrib/*}\\
neuper@42048
   423
\textbf{dist/*}\\
neuper@42048
   424
\textbf{plugin/}build.xml\\
neuper@42048
   425
\textbf{plugin/}changes40.txt\\
neuper@42048
   426
\textbf{plugin/}changes42.txt\\
neuper@42048
   427
\textbf{plugin/}description.html\\
neuper@42048
   428
\textbf{plugin/}IsacActions.java\\
neuper@42048
   429
\textbf{plugin/}Isac.iml\\
neuper@42048
   430
\textbf{plugin/}Isac.java\\
neuper@42048
   431
\textbf{plugin/}IsacOptionPane.java\\
neuper@42048
   432
\textbf{plugin/}IsacPlugin.java\\
neuper@42048
   433
\textbf{plugin/}IsacTextArea.java\\
neuper@42048
   434
\textbf{plugin/}IsacToolPanel.java\\
neuper@42048
   435
\textbf{plugin/}plugin\\
neuper@42048
   436
\textbf{plugin/}README.txt\\
neuper@42048
   437
\textbf{nbproject/*}\\
neuper@42048
   438
\textbf{src/}actions.xml\\
neuper@42048
   439
\textbf{src/}changes40.txt\\
neuper@42048
   440
\textbf{src/}changes42.txt\\
neuper@42048
   441
\textbf{src/}description.html\\
neuper@42048
   442
\textbf{src/}dockables.xml\\
neuper@42048
   443
\textbf{src/}IsacActions.scala\\
neuper@42048
   444
\textbf{src/}Isac.iml\\
neuper@42048
   445
\textbf{src/}IsacOptionPane.scala\\
neuper@42048
   446
\textbf{src/}IsacPlugin.scala\\
neuper@42048
   447
\textbf{src/}Isac.props\\
neuper@42048
   448
\textbf{src/}Isac.scala\\
neuper@42048
   449
\textbf{src/}IsacTextArea.scala\\
neuper@42048
   450
\textbf{src/}IsacToolPanel.scala\\
neuper@42048
   451
\textbf{src/}manifest.mf\\
neuper@42048
   452
\textbf{src/}README.txt\\
neuper@42048
   453
\textbf{src/}users-guide.xml
neuper@42048
   454
}
neuper@42048
   455
\end{frame}
neuper@42048
   456
m@42043
   457
\begin{frame}\frametitle{Anforderungen an das Versuchs-Plugin}
m@42043
   458
Folgende Funktionalit\"at wurde zu Testzwecken umgesetzt:
m@42043
   459
\pause
m@42043
   460
\begin{itemize}
m@42043
   461
	\item Grunds\"atzlicher Aufbau eines GUIs
m@42043
   462
	\pause
neuper@42046
   463
	\item Kopieren von Text zwischen den einzelnen Buffers
m@42043
   464
	\pause
m@42043
   465
		\begin{itemize}
m@42043
   466
		\item \alert{Somit auch Zugriff auf andere Plugins!}
m@42043
   467
		\end{itemize}
m@42043
   468
	\pause
m@42043
   469
	\item Ansatz f\"ur die Einbindung des SD-Parsers
m@42043
   470
	\pause
m@42043
   471
		\begin{itemize}
m@42043
   472
		\item Zugriff auf Isabelle-Pure: \alert{parsen von SD parallel zu Isabelle/Isar}
m@42043
   473
		\end{itemize}
m@42043
   474
	\pause
m@42043
   475
	\item \textit{DEMO}
m@42043
   476
\end{itemize}
m@42043
   477
\end{frame}
m@42043
   478
neuper@42046
   479
neuper@42048
   480
%\subsection[Parser]{Ein funktionaler Parser f\"ur SD (in SML)}
neuper@42042
   481
neuper@42042
   482
\section[Summary]{Zusammenfassung}
neuper@42042
   483
\begin{frame}\frametitle{Zusammenfassung}
neuper@42046
   484
Folgende Milestones wurden erfolgreich abgeschlossen:
neuper@42046
   485
\begin{enumerate}
m@42050
   486
\item Relevante Isabelle Komponenten dokumentiert
m@42050
   487
\pause
neuper@42046
   488
\item Installation der Standard-Komponenten:
neuper@42046
   489
  \begin{itemize}
neuper@42046
   490
  \item Mercurial Versioncontrol
neuper@42046
   491
  \item NetBeans IDE
neuper@42046
   492
  \item Standard Isabelle Bundle
neuper@42046
   493
  \end{itemize}
m@42050
   494
  \pause
neuper@42046
   495
\item Entwicklungsumgebung vom Isabelle-Team kopieren
neuper@42046
   496
  \begin{itemize}
neuper@42046
   497
  \item Isabelle-Sources vom Repository M\"unchen (Java, Scala, ML)
neuper@42046
   498
  \item jEdit als NetBeans Projekt definiert
neuper@42046
   499
  \end{itemize}
m@42050
   500
  \pause
neuper@42046
   501
\item Relevante Komponenten implementieren
neuper@42046
   502
  \begin{itemize}
neuper@42046
   503
  \item jEdit Plugin f\"ur SD
neuper@42046
   504
  \item Verbindung des Plugins zu Isabelle
neuper@42046
   505
  \item zugeh\"origen Parser: nur ein Test in SML
neuper@42046
   506
  \end{itemize}
neuper@42046
   507
\end{enumerate}
neuper@42046
   508
\end{frame}
neuper@42046
   509
neuper@42046
   510
\begin{frame}\frametitle{Zusammenfassung}
neuper@42046
   511
\pause
neuper@42046
   512
\alert{$\mathbf{- - -}$}\\
neuper@42046
   513
Aus Zeitgr\"unden nicht m\"oglich: ein komplettes SD-Plugin;\\
neuper@42046
   514
dazu w\"are auch ein Interpreter auf der ML-Seite n\"otig.\\
neuper@42046
   515
\vspace{0.3cm}
neuper@42046
   516
\alert{$\mathbf{+ + +}$}\\
m@42050
   517
\pause
neuper@42046
   518
Voraussetzungen f\"ur k\"unftige Entwicklung geschaffen:
neuper@42046
   519
\begin{enumerate}
neuper@42046
   520
\item f\"ur die Implementation von ``structured derivations'' in Isabelle \dots
neuper@42046
   521
\item \dots als Vorarbeit f\"ur jEdit als k\"unftiges \isac-Frontend
neuper@42046
   522
\item f\"ur Mitarbeit an k\"unftiger Integration von Isabelle in Entwicklungswerkzeuge (Testcase-Generation etc).
neuper@42046
   523
\end{enumerate}
neuper@42042
   524
\end{frame}
neuper@42042
   525
neuper@42042
   526
\begin{frame}\frametitle{}
neuper@42046
   527
\begin{center}
neuper@42046
   528
\LARGE{Danke f\"ur die Aufmerksamkeit !}
neuper@42046
   529
\end{center}
neuper@41965
   530
\end{frame}
neuper@41965
   531
neuper@41965
   532
\end{document}
neuper@41965
   533
neuper@41965
   534