doc-src/isac/mlehnfeld/presentation.tex
author Mathias Lehnfeld <e0726734@student.tuwien.ac.at>
Sat, 28 May 2011 21:41:12 +0200
branchdecompose-isar
changeset 42031 95abe93a41d2
parent 42030 bc8a1d08f0a4
child 42032 6e3504221cac
permissions -rw-r--r--
presentation extended
     1 % $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 $
     2 
     3 \documentclass{beamer}
     4 
     5 % This file is a solution template for:
     6 
     7 % - Talk at a conference/colloquium.
     8 % - Talk length is about 20min.
     9 % - Style is ornate.
    10 
    11 
    12 
    13 % Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>.
    14 %
    15 % In principle, this file can be redistributed and/or modified under
    16 % the terms of the GNU Public License, version 2.
    17 %
    18 % However, this file is supposed to be a template to be modified
    19 % for your own needs. For this reason, if you use this file as a
    20 % template and not specifically distribute it as part of a another
    21 % package/program, I grant the extra permission to freely copy and
    22 % modify this file as you see fit and even to delete this copyright
    23 % notice.
    24 
    25 
    26 \mode<presentation>
    27 {
    28   \usetheme{Hannover}
    29   % or ...
    30 
    31   \setbeamercovered{transparent}
    32   % or whatever (possibly just delete it)
    33 }
    34 
    35 %\usepackage{setspace} %for "\begin{onehalfspace}"
    36 \usepackage[english]{babel}
    37 % or whatever
    38 
    39 \usepackage[utf8]{inputenc}
    40 % or whatever
    41 
    42 \usepackage{times}
    43 \usepackage[T1]{fontenc}
    44 % Or whatever. Note that the encoding and the font should match. If T1
    45 % does not look nice, try deleting the line with the fontenc.
    46 
    47 \def\isac{${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}
    48 \def\sisac{{\footnotesize${\cal I}\mkern-2mu{\cal S}\mkern-5mu{\cal AC}$}}
    49 
    50 \title[\isac: Computation \& Deduction] % (optional, use only with long paper titles)
    51 {Integrating Computation and Deduction\\
    52   in the \isac-System}
    53 
    54 \subtitle{Projektpraktikum: Introducing Isabelle's Contexts}
    55 
    56 \author[Lehnfeld] % (optional, use only with lots of authors)
    57 {Mathias~Lehnfeld}
    58 % - Give the names in the same order as the appear in the paper.
    59 % - Use the \inst{?} command only if the authors have different
    60 %   affiliation.
    61 
    62 \institute % (optional, but mostly needed)
    63 {
    64   Vienna University of Technology\\
    65   Institute of Computer Languages
    66 }
    67 % - Use the \inst command only if there are several affiliations.
    68 % - Keep it simple, no one is interested in your street address.
    69 
    70 % \date[CFP 2003] % (optional, should be abbreviation of conference name)
    71 % {Conference on Fabulous Presentations, 2003}
    72 % - Either use conference name or its abbreviation.
    73 % - Not really informative to the audience, more for people (including
    74 %   yourself) who are reading the slides online
    75 
    76 % \subject{Theoretical Computer Science}
    77 % This is only inserted into the PDF information catalog. Can be left
    78 % out.
    79 
    80 
    81 
    82 % If you have a file called "university-logo-filename.xxx", where xxx
    83 % is a graphic format that can be processed by latex or pdflatex,
    84 % resp., then you can add a logo as follows:
    85 
    86 % \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
    87 % \logo{\pgfuseimage{university-logo}}
    88 
    89 
    90 
    91 % Delete this, if you do not want the table of contents to pop up at
    92 % the beginning of each subsection:
    93 \AtBeginSubsection[]
    94 {
    95   \begin{frame}<beamer>{Outline}
    96     \tableofcontents[currentsection,currentsubsection]
    97   \end{frame}
    98 }
    99 
   100 
   101 % If you wish to uncover everything in a step-wise fashion, uncomment
   102 % the following command:
   103 
   104 %\beamerdefaultoverlayspecification{<+->}
   105 
   106 
   107 \begin{document}
   108 
   109 \begin{frame}
   110   \titlepage
   111 \end{frame}
   112 
   113 \begin{frame}{Outline}
   114   \tableofcontents
   115   % You might wish to add the option [pausesections]
   116 \end{frame}
   117 
   118 
   119 % Structuring a talk is a difficult task and the following structure
   120 % may not be suitable. Here are some rules that apply for this
   121 % solution:
   122 
   123 % - Exactly two or three sections (other than the summary).
   124 % - At *most* three subsections per section.
   125 % - Talk about 30s to 2min per frame. So there should be between about
   126 %   15 and 30 frames, all told.
   127 
   128 % - A conference audience is likely to know very little of what you
   129 %   are going to talk about. So *simplify*!
   130 % - In a 20min talk, getting the main ideas across is hard
   131 %   enough. Leave out details, even if it means being less precise than
   132 %   you think necessary.
   133 % - If you omit details that are vital to the proof/implementation,
   134 %   just say so once. Everybody will be happy with that.
   135 
   136 \section[Introduction]{Introduction}
   137 \subsection[Isabelle \& \isac]{Isabelle and \isac}
   138 \begin{frame}
   139   \frametitle{Isabelle and \isac}
   140     \begin{itemize}
   141     \item Computer Theorem Prover Isabelle
   142     \item Math Learning Assistent \isac
   143     \end{itemize}
   144 \end{frame}
   145 
   146 \subsection[Computation \& Deduction]{Computation and Deduction in a Lucas-Interpreter}
   147 \begin{frame}
   148   \frametitle{Computation and Deduction in a Lucas-Interpreter}
   149     \includegraphics[width=100mm]{overview.pdf}
   150 \end{frame}
   151 
   152 \section[Contributions]{Contributions of the project}
   153 \subsection[Contexts]{Introduction of Isabelle Contexts}
   154 \begin{frame}
   155   \frametitle{Introduction of Isabelle Contexts}
   156     \begin{itemize}
   157     \item theories too general
   158     \item not capable of type inference
   159     \item replace function \texttt{parseNEW}
   160     \item assumptions \& environment $\rightarrow$ context
   161     \end{itemize}
   162 \end{frame}
   163 
   164 \begin{frame}
   165   \frametitle{Code Snippets: \texttt{parse}}
   166     \texttt{\tiny{
   167       \begin{tabbing}
   168 xx\=xx\=xx\=xx\=\kill
   169 fun parse thy str =\\
   170 \>(let val t = (typ\_a2real o numbers\_to\_string)\\
   171 \>\>\>\>(Syntax.read\_term\_global thy str)\\
   172 \>\>in SOME (cterm\_of thy t) end)\\
   173 \>\>\>handle \_ => NONE;
   174 \\~\\~\\
   175 fun parseNEW ctxt str = SOME (Syntax.read\_term ctxt str |> numbers\_to\_string)\\
   176 \>\>\>handle \_ => NONE;
   177       \end{tabbing}
   178     }}
   179 \end{frame}
   180 
   181 
   182 \begin{frame}
   183   \frametitle{Code Snippets: context data}
   184     \texttt{\tiny{
   185       \begin{tabbing}
   186 xx\=xx\=xx\=xx\=\kill
   187 datatype Isac\_Ctxt =\\
   188 \>\>Env of term * term\\
   189 \>| Asm of term;\\
   190 \\
   191 structure ContextData = Proof\_Data\\
   192 \>~(type T = Isac\_Ctxt list\\
   193 \>\>fun init \_ = []);\\
   194 \\
   195 local\\
   196 \>fun insert\_ctxt data = ContextData.map (fn xs => distinct (data@xs));\\
   197 in\\
   198 \>fun insert\_assumptions asms = map (fn t => Asm t) asms |> insert\_ctxt;\\
   199 \>fun insert\_environments envs = map (fn t => Env t) envs |> insert\_ctxt;\\
   200 end\\
   201 \\
   202 local\\
   203 \>fun unpack\_asms (Asm t::ts) = t::(unpack\_asms ts)\\
   204 \>\>| unpack\_asms (Env \_::ts) = unpack\_asms ts\\
   205 \>\>| unpack\_asms [] = [];\\
   206 \>fun unpack\_envs (Env t::ts) = t::(unpack\_envs ts)\\
   207 \>\>| unpack\_envs (Asm \_::ts) = unpack\_envs ts\\
   208 \>\>| unpack\_envs [] = [];\\
   209 in\\
   210 \>fun get\_assumptions ctxt = ContextData.get ctxt |> unpack\_asms;\\
   211 \>fun get\_environments ctxt = ContextData.get ctxt |> unpack\_envs;\\
   212 end
   213       \end{tabbing}
   214     }}
   215 \end{frame}
   216 
   217 \subsection[Redesign]{Redesign of Type Inference in \isac}
   218 \begin{frame}
   219   \frametitle{Redesign of Type Inference in \isac}
   220     \begin{itemize}
   221     \item use context type inference
   222     \item parsing input (specification \& user input)
   223     \item specification with polymorphic types
   224     \item etc.
   225     \end{itemize}
   226 \end{frame}
   227 
   228 \begin{frame}
   229   \frametitle{Lines of Code}
   230     \begin{tabular}{lr}
   231       src/ & 1700 k \\
   232       src/Pure/ & 70 k \\
   233       src/Provers/ & 8 k \\
   234       src/Tools/ & 800 k \\
   235       src/isac/ & 37 k \\
   236       src/isac/Knowledge & 16 k \\
   237     \end{tabular}
   238 \end{frame}
   239 
   240 \subsection[Code Improvement]{Improvement of functional code}
   241 \begin{frame}
   242   \frametitle{Improvement of functional code}
   243   \begin{itemize}
   244   \item combinators
   245   \item code conventions
   246   \end{itemize}
   247 \end{frame}
   248 
   249 \begin{frame}
   250   \frametitle{Combinators \& Code Conventions}
   251     \texttt{\tiny{
   252       \begin{tabbing}
   253 xx\=xx\=xx\=xx\=xx\=\kill
   254 fun prep\_ori [] \_ \_ = ([], e\_ctxt)\\
   255 \>| prep\_ori fmz thy pbt =\\
   256 \>\>\>let\\
   257 \>\>\>\>val ctxt = ProofContext.init\_global thy |> fold declare\_constraints fmz\\
   258 \>\>\>\>val ori = map (add\_field thy pbt o split\_dts o the o parseNEW ctxt) fmz\\
   259 \>\>\>\>\>|> add\_variants\\
   260 \>\>\>\>val maxv = map fst ori |> max\\
   261 \>\>\>\>val maxv = if maxv = 0 then 1 else maxv\\
   262 \>\>\>\>val oris = coll\_variants ori\\
   263 \>\>\>\>\>|> map (replace\_0 maxv |> apfst)\\
   264 \>\>\>\>\>|> add\_id\\
   265 \>\>\>\>\>|> map flattup\\
   266 \>\>\>in (oris, ctxt) end;
   267       \end{tabbing}
   268     }}
   269 \end{frame}
   270 
   271 \begin{frame}
   272   \frametitle{Drop \tt{Check\_Elementwise}!}
   273 
   274 \small{
   275 %\begin{onehalfspace}
   276 \begin{tabbing}
   277 xxx\=xxx\=\kill
   278 $\mathit{solve}\;(\frac{x}{x ^ 2 - 6 * x + 9} - \frac{1}{x ^ 2 - 3 * x} = \frac{1}{x}, x)$\\ \\
   279 \>$\frac{x}{x ^ 2 - 6 * x + 9} - \frac{1}{x ^ 2 - 3 * x} = \frac{1}{x}$ \\ \\
   280 \>$\frac{x}{x ^ 2 + -1 * (6 * x) + 9} + \frac{-1 * 1}{x ^ 2 + -1 * (3 * x)} = \frac{1}{x}$ \\ \\
   281 %\>$\frac{3 + -1 * x + x ^ 2}{9 * x + -6 * x ^ 2 + x ^ 3} = \frac{1}{x}$ \\ \\
   282 \>$(3 + -1 * x + x ^ 2) * x = 1 * (9 * x + -6 * x ^ 2 + x ^ 3)$ \\
   283 \>$\mathit{solve}\;((3 + -1 * x + x ^ 2) * x = 1 * (9 * x + -6 * x ^ 2 + x ^ 3), x)$ \\
   284 \>\>$(3 + -1 * x + x ^ 2) * x = 1 * (9 * x + -6 * x ^ 2 + x ^ 3)$ \\
   285 %\>\>$(3 + -1 * x + x ^ 2) * x - 1 * (9 * x + -6 * x ^ 2 + x ^ 3) = 0$ \\
   286 \>\>$(3 + -1 * x + x ^ 2) * x - (9 * x + -6 * x ^ 2 + x ^ 3) = 0$ \\
   287 \>\>$-6 * x + 5 * x ^ 2 = 0$ \\
   288 \>\>$\mathit{solve}\;(-6 * x + 5 * x ^ 2 = 0, x)$ \\
   289 \>\>$[x = 0, x = \frac{6}{5}]$ \\
   290 \>$[x = 0, x = \frac{6}{5}]$ \\
   291                                           \`\alert{$\mathit{Check\_Elementwise}\;\mathit{Assumptions}$}\\
   292 \>$[x = \frac{6}{5}]$ \\
   293 $[x = \frac{6}{5}]$
   294 \end{tabbing}
   295 }
   296 %\end{onehalfspace}
   297 
   298 \end{frame}
   299 
   300 \subsection[Future Development]{Preparation of Future Development}
   301 \begin{frame}
   302   \frametitle{Preparation of Future Development}
   303     \begin{itemize}
   304     \item logical data for Isabelle provers in contexts
   305     \item \isac programming language more compact\\
   306       $\rightarrow$ context built automatically
   307     \end{itemize}
   308 \end{frame}
   309 
   310 \begin{frame}
   311   \frametitle{jedit demonstration}
   312   DEMO
   313 \end{frame}
   314 
   315 \section[Problems]{Problems encountered in the project}
   316 \begin{frame}
   317   \frametitle{Problems encountered in the project}
   318     \begin{itemize}
   319     \item publication of new Isabelle release
   320     \item amount of code in Isabelle and \isac
   321     \item changes scattered throughout the code ($\rightarrow$ grep)
   322     \end{itemize}
   323 \end{frame}
   324 
   325 \section{Summary}
   326 \begin{frame}
   327   \frametitle{Summary}
   328 TODO
   329 \end{frame}
   330 
   331 \end{document}
   332 
   333