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