
e0726734@42027: % $Header: /cvsroot/latex-beamer/latex-beamer/solutions/conference-talks/conference-ornate-20min.en.tex,v 1.7 2007/01/28 20:48:23 tantau Exp $
e0726734@42027: 
e0726734@42027: \documentclass{beamer}
e0726734@42027: 
e0726734@42027: % This file is a solution template for:
e0726734@42027: 
e0726734@42027: % - Talk at a conference/colloquium.
e0726734@42027: % - Talk length is about 20min.
e0726734@42027: % - Style is ornate.
e0726734@42027: 
e0726734@42027: 
e0726734@42027: 
e0726734@42027: % Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>.
e0726734@42027: %
e0726734@42027: % In principle, this file can be redistributed and/or modified under
e0726734@42027: % the terms of the GNU Public License, version 2.
e0726734@42027: %
e0726734@42027: % However, this file is supposed to be a template to be modified
e0726734@42027: % for your own needs. For this reason, if you use this file as a
e0726734@42027: % template and not specifically distribute it as part of a another
e0726734@42027: % package/program, I grant the extra permission to freely copy and
e0726734@42027: % modify this file as you see fit and even to delete this copyright
e0726734@42027: % notice.
e0726734@42027: 
e0726734@42027: 
e0726734@42027: \mode<presentation>
e0726734@42027: {
e0726734@42027:   \usetheme{Hannover}
e0726734@42027:   % or ...
e0726734@42027: 
e0726734@42027:   \setbeamercovered{transparent}
e0726734@42027:   % or whatever (possibly just delete it)
e0726734@42027: }
e0726734@42027: 
neuper@42029: %\usepackage{setspace} %for "\begin{onehalfspace}"
e0726734@42027: \usepackage[english]{babel}
e0726734@42027: % or whatever
e0726734@42027: 
e0726734@42027: \usepackage[utf8]{inputenc}
e0726734@42027: % or whatever
e0726734@42027: 
e0726734@42027: \usepackage{times}
e0726734@42027: \usepackage[T1]{fontenc}
e0726734@42027: % Or whatever. Note that the encoding and the font should match. If T1
e0726734@42027: % does not look nice, try deleting the line with the fontenc.
e0726734@42027: 
e0726734@42027: \def\isac{${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}
e0726734@42027: \def\sisac{{\footnotesize${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}}
e0726734@42027: 
e0726734@42027: \title[\isac: Computation \& Deduction] % (optional, use only with long paper titles)
e0726734@42027: {Integrating Computation and Deduction\\
e0726734@42027:   in the \isac-System}
e0726734@42027: 
e0726734@42027: \subtitle{Projektpraktikum: Introducing Isabelle's Contexts}
e0726734@42027: 
e0726734@42030: \author[Lehnfeld] % (optional, use only with lots of authors)
e0726734@42030: {Mathias~Lehnfeld}
e0726734@42027: % - Give the names in the same order as the appear in the paper.
e0726734@42027: % - Use the \inst{?} command only if the authors have different
e0726734@42027: %   affiliation.
e0726734@42027: 
e0726734@42027: \institute % (optional, but mostly needed)
e0726734@42027: {
e0726734@42030:   Vienna University of Technology\\
e0726734@42030:   Institute of Computer Languages
e0726734@42027: }
e0726734@42027: % - Use the \inst command only if there are several affiliations.
e0726734@42027: % - Keep it simple, no one is interested in your street address.
e0726734@42027: 
e0726734@42027: % \date[CFP 2003] % (optional, should be abbreviation of conference name)
e0726734@42027: % {Conference on Fabulous Presentations, 2003}
e0726734@42027: % - Either use conference name or its abbreviation.
e0726734@42027: % - Not really informative to the audience, more for people (including
e0726734@42027: %   yourself) who are reading the slides online
e0726734@42027: 
e0726734@42027: % \subject{Theoretical Computer Science}
e0726734@42027: % This is only inserted into the PDF information catalog. Can be left
e0726734@42027: % out.
e0726734@42027: 
e0726734@42027: 
e0726734@42027: 
e0726734@42027: % If you have a file called "university-logo-filename.xxx", where xxx
e0726734@42027: % is a graphic format that can be processed by latex or pdflatex,
e0726734@42027: % resp., then you can add a logo as follows:
e0726734@42027: 
e0726734@42027: % \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
e0726734@42027: % \logo{\pgfuseimage{university-logo}}
e0726734@42027: 
e0726734@42027: 
e0726734@42027: 
e0726734@42027: % Delete this, if you do not want the table of contents to pop up at
e0726734@42027: % the beginning of each subsection:
e0726734@42027: \AtBeginSubsection[]
e0726734@42027: {
e0726734@42027:   \begin{frame}<beamer>{Outline}
e0726734@42027:     \tableofcontents[currentsection,currentsubsection]
e0726734@42027:   \end{frame}
e0726734@42027: }
e0726734@42027: 
e0726734@42027: 
e0726734@42027: % If you wish to uncover everything in a step-wise fashion, uncomment
e0726734@42027: % the following command:
e0726734@42027: 
e0726734@42027: %\beamerdefaultoverlayspecification{<+->}
e0726734@42027: 
e0726734@42027: 
e0726734@42027: \begin{document}
e0726734@42027: 
e0726734@42027: \begin{frame}
e0726734@42027:   \titlepage
e0726734@42027: \end{frame}
e0726734@42027: 
e0726734@42027: \begin{frame}{Outline}
e0726734@42027:   \tableofcontents
e0726734@42027:   % You might wish to add the option [pausesections]
e0726734@42027: \end{frame}
e0726734@42027: 
e0726734@42027: 
e0726734@42027: % Structuring a talk is a difficult task and the following structure
e0726734@42027: % may not be suitable. Here are some rules that apply for this
e0726734@42027: % solution:
e0726734@42027: 
e0726734@42027: % - Exactly two or three sections (other than the summary).
e0726734@42027: % - At *most* three subsections per section.
e0726734@42027: % - Talk about 30s to 2min per frame. So there should be between about
e0726734@42027: %   15 and 30 frames, all told.
e0726734@42027: 
e0726734@42027: % - A conference audience is likely to know very little of what you
e0726734@42027: %   are going to talk about. So *simplify*!
e0726734@42027: % - In a 20min talk, getting the main ideas across is hard
e0726734@42027: %   enough. Leave out details, even if it means being less precise than
e0726734@42027: %   you think necessary.
e0726734@42027: % - If you omit details that are vital to the proof/implementation,
e0726734@42027: %   just say so once. Everybody will be happy with that.
e0726734@42027: 
neuper@42033: \section[Introduction]{Introduction: Isabelle and \isac}
neuper@42033: %\subsection[Isabelle \& \isac]{Isabelle and \isac}
neuper@42028: \begin{frame}
neuper@42028:   \frametitle{Isabelle and \isac}
neuper@42033: The task of this ``Projektpraktikum'' (6 ECTS) was to
neuper@42033: \begin{itemize}
neuper@42033: \item study the concept of ``context'' in the theorem prover \textbf{Isabelle} from TU Munich
neuper@42033: \item study basic concepts of the math assistant \sisac{} from TU Graz
neuper@42033: \pause
neuper@42033: \item redesign \sisac{} with respect to contexts
neuper@42033:   \begin{itemize}
neuper@42033:   \item use contexts for type inference of user input
neuper@42033:   \item handle preconditions of specifications
neuper@42033:   \item clarify the transfer of context data from sub-programs to the calling program
neuper@42033:   \end{itemize}
neuper@42033: \pause
neuper@42033: \item introduce contexts to \sisac{} according to the new design
neuper@42033: \item use the coding standards of Isabelle2011 for new code.
neuper@42033: \end{itemize}
e0726734@42027: \end{frame}
e0726734@42027: 
neuper@42033: %\subsection[Computation \& Deduction]{Computation and Deduction in a Lucas-Interpreter}
neuper@42028: \begin{frame}
e0726734@42030:   \frametitle{Computation and Deduction in a Lucas-Interpreter}
e0726734@42030:     \includegraphics[width=100mm]{overview.pdf}
e0726734@42027: \end{frame}
e0726734@42027: 
neuper@42033: \section[Contributions]{Contributions of the project to \isac}
neuper@42033: \subsection[Contexts]{Isabelle's Contexts, advantages and use}
neuper@42028: \begin{frame}
neuper@42033:   \frametitle{Advantages of Isabelle's Contexts}
neuper@42033: Isabelle's context replaced theories because \dots:
neuper@42033: \begin{itemize}
neuper@42033: \item theories are static containers of \textit{all} logical data
neuper@42033: \item contexts are \textit{dynamic} containers of logical data:
neuper@42033:   \begin{itemize}
neuper@42033:   \item functions for storing and retrieving various logical data
neuper@42033:   \item functions for type inference
neuper@42033:   \item provide data for Isabelle's automated provers
neuper@42033:   \end{itemize}
neuper@42033: %\item e.g. theories have no direct functions for type inference
Walther@60658: %\item replace function \texttt{parse}
neuper@42033: %\item assumptions \& environment $\rightarrow$ context
neuper@42033: \item allow to conform with scopes for subprograms.
neuper@42033: \end{itemize}
e0726734@42027: \end{frame}
e0726734@42027: 
neuper@42028: \begin{frame}
neuper@42033:   \frametitle{Isabelle's context mechanism}
neuper@42033:     \texttt{\small{
e0726734@42030:       \begin{tabbing}
neuper@42033: xx\=xx\=in\=\kill
neuper@42033: %xx\=xx\=xx\=xx\=\kill
neuper@42033: %datatype Isac\_Ctxt =\\
neuper@42033: %\>\>Env of term * term\\
neuper@42033: %\>| Asm of term;\\
neuper@42033: %\\
neuper@42033: structure ContextData =  \alert{Proof\_Data}\\
neuper@42033: \>~(\alert{type T} = term list\\
neuper@42033: \>\>\alert{fun init \_} = []);\\
neuper@42033: \\
neuper@42033: %local\\
neuper@42033: %\>fun insert\_ctxt data = ContextData\alert{.map} (fn xs => distinct (data@xs));\\
neuper@42033: %in\\
neuper@42033: %\>fun insert\_assumptions asms = map (fn t => Asm t) asms |> insert\_ctxt;\\
neuper@42033: %\>fun insert\_environments envs = map (fn t => Env t) envs |> insert\_ctxt;\\
neuper@42033: %end\\
neuper@42033: fun insert\_assumptions asms = \\
e0726734@42037: \>\>\>ContextData\alert{.map} (fn xs => distinct (asms@xs));\\
neuper@42033: \\
neuper@42033: %local\\
neuper@42033: %\>fun unpack\_asms (Asm t::ts) = t::(unpack\_asms ts)\\
neuper@42033: %\>\>| unpack\_asms (Env \_::ts) = unpack\_asms ts\\
neuper@42033: %\>\>| unpack\_asms [] = [];\\
neuper@42033: %\>fun unpack\_envs (Env t::ts) = t::(unpack\_envs ts)\\
neuper@42033: %\>\>| unpack\_envs (Asm \_::ts) = unpack\_envs ts\\
neuper@42033: %\>\>| unpack\_envs [] = [];\\
neuper@42033: %in\\
neuper@42033: %\>fun get\_assumptions ctxt = ContextData.get ctxt |> unpack\_asms;\\
neuper@42033: %\>fun get\_environments ctxt = ContextData.get ctxt |> unpack\_envs;\\
neuper@42033: %end
neuper@42033: fun get\_assumptions ctxt = ContextData\alert{.get} ctxt;\\
neuper@42033: \\
neuper@42033: \\
neuper@42033: val declare\_constraints : \\
neuper@42033: \>\>\>term -> Proof.context -> Proof.context
e0726734@42031:       \end{tabbing}
e0726734@42031:     }}
e0726734@42031: \end{frame}
e0726734@42031: 
e0726734@42031: \begin{frame}
neuper@42033:   \frametitle{Usage of Contexts}
neuper@42033:     \texttt{\footnotesize{
e0726734@42031:       \begin{tabbing}
neuper@42033: xx\=xx\=xx\=xx\=xx\=\kill
neuper@42033: fun transfer\_asms\_from\_to from\_ctxt to\_ctxt =\\
neuper@42033: \>  let\\
neuper@42033: \>\>    val to\_vars = get\_assumptions to\_ctxt |> map vars |> flat\\
neuper@42033: \>\>    fun transfer [] to\_ctxt = to\_ctxt\\
neuper@42033: \>\>\>      | transfer (from\_asm::fas) to\_ctxt =\\
neuper@42033: \>\>\>\>\>          if inter op = (vars from\_asm) to\_vars = []\\
neuper@42033: \>\>\>\>\>         then transfer fas to\_ctxt\\
neuper@42033: \>\>\>\>\>          else transfer fas (insert\_assumptions [from\_asm] to\_ctxt)\\
neuper@42033: \>  in transfer (get\_assumptions from\_ctxt) to\_ctxt end\\
e0726734@42031: \\
neuper@42033: fun parse thy str =\\
neuper@42033: \>(let val t = (\alert{typ\_a2real} o numbers\_to\_string)\\
neuper@42033: \>\>\>\>(\alert{Syntax.read\_term\_global thy} str)\\
neuper@42033: \>\>in SOME (cterm\_of thy t) end)\\
neuper@42033: \>\>\>handle \_ => NONE;\\
e0726734@42031: \\
Walther@60658: fun parse ctxt str = \\
Walther@60658: \>\>\>(\alert{Syntax.read\_term ctxt} str |> numbers\_to\_string)\\
neuper@42033: \>\>\>handle \_ => NONE;
e0726734@42030:       \end{tabbing}
e0726734@42030:     }}
neuper@42033: 
neuper@42033: 
e0726734@42027: \end{frame}
e0726734@42027: 
neuper@42033: \subsection[Redesign]{Redesign of \isac{} using contexts}
neuper@42028: \begin{frame}
neuper@42033:   \frametitle{Redesign of \isac{} using contexts}
neuper@42033: \begin{center} DEMO \end{center}
e0726734@42030: \end{frame}
e0726734@42030: 
e0726734@42031: \begin{frame}
neuper@42033:   \frametitle{Deduction simplifies computation}
neuper@42033: \small{
neuper@42033: %\begin{onehalfspace}
neuper@42033: \begin{tabbing}
neuper@42033: xxx\=xxx\=\kill
neuper@42033:      \`$\mathit{(some)}\;\mathit{assumptions}$\\
neuper@42033: $\mathit{solve}\;(\frac{x}{x ^ 2 - 6 * x + 9} - \frac{1}{x ^ 2 - 3 * x} = \frac{1}{x}, x)$\\
neuper@42033: %     \`$x ^ 2 - 6 * x + 9\not=0\land x ^ 2 - 3 * x\not=0$\\
neuper@42033: %\>$\frac{x}{x ^ 2 - 6 * x + 9} - \frac{1}{x ^ 2 - 3 * x} = \frac{1}{x}$ \\ \\
neuper@42033: %\>$\frac{x}{x ^ 2 + -1 * (6 * x) + 9} + \frac{-1 * 1}{x ^ 2 + -1 * (3 * x)} = \frac{1}{x}$ \\ \\
neuper@42033: \>$\frac{3 + -1 * x + x ^ 2}{9 * x + -6 * x ^ 2 + x ^ 3} = \frac{1}{x}$ \\ 
neuper@42033:      \`$x\not=3\land x\not=0$\\
neuper@42033: \>$(3 + -1 * x + x ^ 2) * x = 1 * (9 * x + -6 * x ^ 2 + x ^ 3)$ \\
neuper@42033: \>$\mathit{solve}\;((3 + -1 * x + x ^ 2) * x = 1 * (9 * x + -6 * x ^ 2 + x ^ 3), x)$ \\
neuper@42033: %\>\>$(3 + -1 * x + x ^ 2) * x = 1 * (9 * x + -6 * x ^ 2 + x ^ 3)$ \\
neuper@42033: %\>\>$(3 + -1 * x + x ^ 2) * x - 1 * (9 * x + -6 * x ^ 2 + x ^ 3) = 0$ \\
neuper@42033: \>\>$(3 + -1 * x + x ^ 2) * x - (9 * x + -6 * x ^ 2 + x ^ 3) = 0$ \\
neuper@42033: \>\>$-6 * x + 5 * x ^ 2 = 0$ \\
neuper@42033: \>\>$\mathit{solve}\;(-6 * x + 5 * x ^ 2 = 0, x)$ \\
neuper@42033: \>\>$[x = 0, x = \frac{6}{5}]$ \\
neuper@42033:      \`$x = 0\land x = \frac{6}{5}$\\
neuper@42033: \>$[\alert{x = 0}, x = \frac{6}{5}]$ \\
neuper@42033:      \`\alert{$\mathit{Check\_Elementwise}\;\mathit{Assumptions}:x\not=0\land x = 0$}\\
neuper@42033: \>$[x = \frac{6}{5}]$ \\
neuper@42033: $[x = \frac{6}{5}]$
neuper@42033: \end{tabbing}
neuper@42033: }
neuper@42033: %\end{onehalfspace}
e0726734@42031: \end{frame}
e0726734@42031: 
neuper@42033: \begin{frame}
neuper@42033:   \frametitle{More ``deduction'', \\less ``computation''}
neuper@42033: \footnotesize{\tt
neuper@42033: \begin{tabbing}
neuper@42033: xx\=xx\=xx\=xx\=xx\=xx\=\kill
neuper@42033: Script Solve\_root\_equation (e\_e::bool) (v\_v::real) =      \\
neuper@42033: \> (let e\_e = ((Try (Rewrite\_Set norm\_equation False)) \@\@   \\
neuper@42033: \>\>\>            (Try (Rewrite\_Set Test\_simplify False))) e\_e; \\
neuper@42033: \>\>     (L\_L::bool list) =                                   \\
neuper@42033: \>\>\>            (SubProblem (Test',                           \\
neuper@42033: \>\>\>\>                         [linear,univariate,equation,test]\\
neuper@42033: \>\>\>\>                         [Test,solve\_linear])             \\
neuper@42033: \>\>\>\>                        [BOOL e\_e, REAL v\_v])             \\
neuper@42033: \>  in \alert{Check\_elementwise L\_L \{(v\_v::real). Assumptions\}})\\      
neuper@42033: \end{tabbing}
neuper@42033: }
neuper@42033: \small{
neuper@42033: ``Deductive'' part of Lucas-Interpretation relives the ``computational'' part: \alert{one statement becomes obsolete~!}
neuper@42033: }
neuper@42033: \end{frame}
neuper@42033: 
neuper@42033: 
neuper@42033: \begin{frame}
neuper@42033:   \frametitle{Redesign of \isac{} using contexts}
neuper@42033: Advantages of the redesign:
neuper@42033: \begin{itemize}
neuper@42033: \item type inference by \textit{local} contexts\\
neuper@42033: \pause
neuper@42033:      \alert{now user-input without type constraints~!}
neuper@42033: \pause
neuper@42033: \item consistent handling of logical data
neuper@42033:   \begin{itemize}
neuper@42033:   \item preconditions and partiality conditions in contexts
neuper@42033:   \item transfer of context data into subprograms clarified
neuper@42033:   \item transfer of context data from subprograms clarified
neuper@42033:   \end{itemize}
neuper@42033: \pause
neuper@42033:      \alert{now some statements become obsolete.}\\
neuper@42033: \end{itemize}
neuper@42033: \pause
neuper@42033: Now Lucas-interpretation shifts efforts from ``computation'' further to ``deduction''.
neuper@42033: \end{frame}
neuper@42033: 
neuper@42033: 
neuper@42033: 
e0726734@42030: \subsection[Code Improvement]{Improvement of functional code}
e0726734@42030: \begin{frame}
e0726734@42030:   \frametitle{Improvement of functional code}
e0726734@42030:   \begin{itemize}
neuper@42033:   \item \textbf{code conventions}: Isabelle2011 published coding standards first time
neuper@42033:   \item \textbf{combinators}: Isabelle2011 introduced a library containing the following combinators:
neuper@42033: \\\vspace{0.2cm}
neuper@42033: \tiny{\tt%
neuper@42033:   val |$>$ : 'a * ('a -$>$ 'b) -$>$ 'b\\
neuper@42033:   val |-$>$ : ('c * 'a) * ('c -$>$ 'a -$>$ 'b) -$>$ 'b\\
neuper@42033:   val |$>>$ : ('a * 'c) * ('a -$>$ 'b) -$>$ 'b * 'c\\
neuper@42033:   val ||$>$ : ('c * 'a) * ('a -$>$ 'b) -$>$ 'c * 'b\\
neuper@42033:   val ||$>>$ : ('c * 'a) * ('a -$>$ 'd * 'b) -$>$ ('c * 'd) * 'b\\
neuper@42033:   val \#$>$ : ('a -$>$ 'b) * ('b -$>$ 'c) -$>$ 'a -$>$ 'c\\
neuper@42033:   val \#-$>$ : ('a -$>$ 'c * 'b) * ('c -$>$ 'b -$>$ 'd) -$>$ 'a -$>$ 'd\\
neuper@42033:   val \#$>>$ : ('a -$>$ 'c * 'b) * ('c -$>$ 'd) -$>$ 'a -$>$ 'd * 'b\\
neuper@42033:   val \#\#$>$ : ('a -$>$ 'c * 'b) * ('b -$>$ 'd) -$>$ 'a -$>$ 'c * 'd\\
neuper@42033:   val \#\#$>>$ : ('a -$>$ 'c * 'b) * ('b -$>$ 'e * 'd) -$>$ 'a -$>$ ('c * 'e) * 'd\\
neuper@42033: }
e0726734@42030:   \end{itemize}
e0726734@42030: \end{frame}
e0726734@42030: 
e0726734@42030: \begin{frame}
neuper@42033:   \frametitle{Example with combinators}
neuper@42033:     \texttt{\footnotesize{
e0726734@42030:       \begin{tabbing}
neuper@42033: xx\=xx\=xx\=xx\=xx\=xx\=xx\=xx\=\kill
e0726734@42030: fun prep\_ori [] \_ \_ = ([], e\_ctxt)\\
e0726734@42030: \>| prep\_ori fmz thy pbt =\\
e0726734@42030: \>\>\>let\\
neuper@42033: \>\>\>\>val ctxt = ProofContext.init\_global thy \\
neuper@42033: \>\>\>\>\> |> fold declare\_constraints fmz\\
neuper@42033: \>\>\>\>val ori = \\
Walther@60658: \>\>\>\>\> map (add\_field thy pbt o split\_dts o (parse ctxt)) fmz\\
neuper@42033: \>\>\>\>\>\> |> add\_variants\\
e0726734@42030: \>\>\>\>val maxv = map fst ori |> max\\
e0726734@42030: \>\>\>\>val maxv = if maxv = 0 then 1 else maxv\\
e0726734@42030: \>\>\>\>val oris = coll\_variants ori\\
neuper@42033: \>\>\>\>\> |> map (replace\_0 maxv |> apfst)\\
neuper@42033: \>\>\>\>\> |> add\_id\\
neuper@42033: \>\>\>\>\> |> map flattup\\
e0726734@42030: \>\>\>in (oris, ctxt) end;
e0726734@42030:       \end{tabbing}
e0726734@42030:     }}
neuper@42033: \dots which probably can be further polished.
e0726734@42030: \end{frame}
e0726734@42030: 
neuper@42033: %\subsection[Future Development]{Preparation of Future Development}
neuper@42033: %\begin{frame}
neuper@42033: %  \frametitle{Preparation of Future Development}
neuper@42033: %
neuper@42033: %%  "Script Solve_root_equation (e_e::bool) (v_v::real) =       " ^
neuper@42033: %%  " (let e_e = ((Try (Rewrite_Set norm_equation False)) @@    " ^
neuper@42033: %%  "            (Try (Rewrite_Set Test_simplify False))) e_e;  " ^
neuper@42033: %%  "     (L_L::bool list) =                                    " ^
neuper@42033: %%  "            (SubProblem (Test',                            " ^
neuper@42033: %%  "                         [linear,univariate,equation,test]," ^
neuper@42033: %%  "                         [Test,solve_linear])              " ^
neuper@42033: %%  "                        [BOOL e_e, REAL v_v])              " ^
neuper@42033: %%  "  in Check_elementwise L_L {(v_v::real). Assumptions})     "
neuper@42033: %\end{frame}
neuper@42033: %
neuper@42033: %\begin{frame}
neuper@42033: %  \frametitle{Preparation of Future Development}
neuper@42033: %    \begin{itemize}
neuper@42033: %    \item logical data for Isabelle provers in contexts
neuper@42033: %    \item \isac{} programming language more compact\\
neuper@42033: %      $\rightarrow$ context built automatically
neuper@42033: %    \end{itemize}
neuper@42033: %\end{frame}
neuper@42029: 
e0726734@42031: 
neuper@42028: \section[Problems]{Problems encountered in the project}
neuper@42028: \begin{frame}
e0726734@42030:   \frametitle{Problems encountered in the project}
e0726734@42030:     \begin{itemize}
neuper@42033:     \item new Isabelle release in February 2011: update \sisac{} first
neuper@42033: \pause
neuper@42033:     \item lines of code (LOC) in Isabelle and \sisac{}\\ \vspace{0.2cm}
neuper@42033: \textit{
neuper@42033:     \begin{tabular}{lrl}
neuper@42033:       src/ & 1700 & $\,$k LOC\\
neuper@42033:       src/Pure/ & 70 & k LOC\\
neuper@42033:       src/Provers/ & 8 & k LOC\\
neuper@42033:       src/Tools/ & 800 & k LOC\\
neuper@42033:       src/Tools/isac/ & 37 & k LOC\\
neuper@42033:       src/Tools/isac/Knowledge & 16 & k LOC
neuper@42033:     \end{tabular}
neuper@42033: }
neuper@42033: \pause
e0726734@42031:     \item changes scattered throughout the code ($\rightarrow$ grep)
neuper@42033: \pause
neuper@42033:     \item documentation of Isabelle very ``technical'' (no API)
neuper@42033: \pause
neuper@42033:    \item documentation of \sisac{} not up to date
e0726734@42030:     \end{itemize}
e0726734@42027: \end{frame}
e0726734@42027: 
neuper@42033: %\begin{frame}
neuper@42033: %  \frametitle{Lines of Code}
neuper@42033: %    \begin{tabular}{lr}
neuper@42033: %      src/ & 1700 k \\
neuper@42033: %      src/Pure/ & 70 k \\
neuper@42033: %      src/Provers/ & 8 k \\
neuper@42033: %      src/Tools/ & 800 k \\
neuper@42033: %      src/Tools/isac/ & 37 k \\
neuper@42033: %      src/Tools/isac/Knowledge & 16 k \\
neuper@42033: %    \end{tabular}
neuper@42033: %\end{frame}
neuper@42033: 
neuper@42028: \section{Summary}
neuper@42028: \begin{frame}
e0726734@42030:   \frametitle{Summary}
neuper@42033: The project succeeded in all goals:
neuper@42033: \begin{itemize}
neuper@42033: \item implemented Isabelle's contexts in \sisac{} such that
neuper@42033: \item user input requires no type constraints anymore
neuper@42033: \item consistent logical data is prepared for Isabelle's provers
neuper@42033: \end{itemize}
neuper@42033: \pause
neuper@42033: The course of the project was close to the plan:
neuper@42033: \begin{itemize}
neuper@42033: \item faster in writing new code
neuper@42033: \item slower in integrating the code into \sisac
neuper@42033: \end{itemize}
neuper@42033: \pause
neuper@42033: The project provided essential prerequisites for further development of the Lucas-interpreter.
e0726734@42027: \end{frame}
e0726734@42027: 
e0726734@42027: \end{document}
e0726734@42027: 
e0726734@42027: 




