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 $
5 % This file is a solution template for:
7 % - Talk at a conference/colloquium.
8 % - Talk length is about 20min.
13 % Copyright 2004 by Till Tantau <tantau@users.sourceforge.net>.
15 % In principle, this file can be redistributed and/or modified under
16 % the terms of the GNU Public License, version 2.
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
31 \setbeamercovered{transparent}
32 % or whatever (possibly just delete it)
35 %\usepackage{setspace} %for "\begin{onehalfspace}"
36 \usepackage[english]{babel}
39 \usepackage[utf8]{inputenc}
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.
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}$}}
50 \title[\isac: Computation \& Deduction] % (optional, use only with long paper titles)
51 {Integrating Computation and Deduction\\
54 \subtitle{Projektpraktikum: Introducing Isabelle's Contexts}
56 \author[Lehnfeld] % (optional, use only with lots of authors)
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
62 \institute % (optional, but mostly needed)
64 Vienna University of Technology\\
65 Institute of Computer Languages
67 % - Use the \inst command only if there are several affiliations.
68 % - Keep it simple, no one is interested in your street address.
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
76 % \subject{Theoretical Computer Science}
77 % This is only inserted into the PDF information catalog. Can be left
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:
86 % \pgfdeclareimage[height=0.5cm]{university-logo}{university-logo-filename}
87 % \logo{\pgfuseimage{university-logo}}
91 % Delete this, if you do not want the table of contents to pop up at
92 % the beginning of each subsection:
95 \begin{frame}<beamer>{Outline}
96 \tableofcontents[currentsection,currentsubsection]
101 % If you wish to uncover everything in a step-wise fashion, uncomment
102 % the following command:
104 %\beamerdefaultoverlayspecification{<+->}
113 \begin{frame}{Outline}
115 % You might wish to add the option [pausesections]
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
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.
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.
136 \section[Introduction]{Introduction}
137 \subsection[Isabelle \& \isac]{Isabelle and \isac}
139 \frametitle{Isabelle and \isac}
141 \item Computer Theorem Prover Isabelle
142 \item Math Learning Assistent \isac
146 \subsection[Computation \& Deduction]{Computation and Deduction in a Lucas-Interpreter}
148 \frametitle{Computation and Deduction in a Lucas-Interpreter}
149 \includegraphics[width=100mm]{overview.pdf}
152 \section[Contributions]{Contributions of the project}
153 \subsection[Contexts]{Introduction of Isabelle Contexts}
155 \frametitle{Introduction of Isabelle Contexts}
157 \item theories too general
158 \item not capable of type inference
159 \item replace function \texttt{parseNEW}
160 \item assumptions \& environment $\rightarrow$ context
165 \frametitle{Code Snippets: \texttt{parse}}
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;
175 fun parseNEW ctxt str = SOME (Syntax.read\_term ctxt str |> numbers\_to\_string)\\
176 \>\>\>handle \_ => NONE;
183 \frametitle{Code Snippets: context data}
186 xx\=xx\=xx\=xx\=\kill
187 datatype Isac\_Ctxt =\\
188 \>\>Env of term * term\\
191 structure ContextData = Proof\_Data\\
192 \>~(type T = Isac\_Ctxt list\\
193 \>\>fun init \_ = []);\\
196 \>fun insert\_ctxt data = ContextData.map (fn xs => distinct (data@xs));\\
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;\\
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 [] = [];\\
210 \>fun get\_assumptions ctxt = ContextData.get ctxt |> unpack\_asms;\\
211 \>fun get\_environments ctxt = ContextData.get ctxt |> unpack\_envs;\\
217 \subsection[Redesign]{Redesign of Type Inference in \isac}
219 \frametitle{Redesign of Type Inference in \isac}
221 \item use context type inference
222 \item parsing input (specification \& user input)
223 \item specification with polymorphic types
229 \frametitle{Lines of Code}
233 src/Provers/ & 8 k \\
234 src/Tools/ & 800 k \\
236 src/isac/Knowledge & 16 k \\
240 \subsection[Code Improvement]{Improvement of functional code}
242 \frametitle{Improvement of functional code}
245 \item code conventions
250 \frametitle{Combinators \& Code Conventions}
253 xx\=xx\=xx\=xx\=xx\=\kill
254 fun prep\_ori [] \_ \_ = ([], e\_ctxt)\\
255 \>| prep\_ori fmz thy pbt =\\
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;
272 \frametitle{Drop \tt{Check\_Elementwise}!}
275 %\begin{onehalfspace}
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}]$ \\
300 \subsection[Future Development]{Preparation of Future Development}
302 \frametitle{Preparation of Future Development}
304 \item logical data for Isabelle provers in contexts
305 \item \isac programming language more compact\\
306 $\rightarrow$ context built automatically
311 \frametitle{jedit demonstration}
315 \section[Problems]{Problems encountered in the project}
317 \frametitle{Problems encountered in the project}
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)