| 20948 |      1 | 
 | 
|  |      2 | %% $Id$
 | 
|  |      3 | 
 | 
|  |      4 | \documentclass[12pt,a4paper,fleqn]{report}
 | 
|  |      5 | \usepackage{latexsym,graphicx}
 | 
| 21058 |      6 | \usepackage{listings}
 | 
| 20948 |      7 | \usepackage[refpage]{nomencl}
 | 
|  |      8 | \usepackage{../../iman,../../extra,../../isar,../../proof}
 | 
|  |      9 | \usepackage{Thy/document/isabelle,Thy/document/isabellesym}
 | 
|  |     10 | \usepackage{style}
 | 
|  |     11 | \usepackage{Thy/document/pdfsetup}
 | 
|  |     12 | 
 | 
|  |     13 | \newcommand{\cmd}[1]{\isacommand{#1}}
 | 
|  |     14 | 
 | 
|  |     15 | \newcommand{\isasymINFIX}{\cmd{infix}}
 | 
|  |     16 | \newcommand{\isasymLOCALE}{\cmd{locale}}
 | 
|  |     17 | \newcommand{\isasymINCLUDES}{\cmd{includes}}
 | 
|  |     18 | \newcommand{\isasymDATATYPE}{\cmd{datatype}}
 | 
|  |     19 | \newcommand{\isasymAXCLASS}{\cmd{axclass}}
 | 
|  |     20 | \newcommand{\isasymFIXES}{\cmd{fixes}}
 | 
|  |     21 | \newcommand{\isasymASSUMES}{\cmd{assumes}}
 | 
|  |     22 | \newcommand{\isasymDEFINES}{\cmd{defines}}
 | 
|  |     23 | \newcommand{\isasymNOTES}{\cmd{notes}}
 | 
|  |     24 | \newcommand{\isasymSHOWS}{\cmd{shows}}
 | 
|  |     25 | \newcommand{\isasymCLASS}{\cmd{class}}
 | 
|  |     26 | \newcommand{\isasymINSTANCE}{\cmd{instance}}
 | 
|  |     27 | \newcommand{\isasymLEMMA}{\cmd{lemma}}
 | 
|  |     28 | \newcommand{\isasymPROOF}{\cmd{proof}}
 | 
|  |     29 | \newcommand{\isasymQED}{\cmd{qed}}
 | 
|  |     30 | \newcommand{\isasymFIX}{\cmd{fix}}
 | 
|  |     31 | \newcommand{\isasymASSUME}{\cmd{assume}}
 | 
|  |     32 | \newcommand{\isasymSHOW}{\cmd{show}}
 | 
|  |     33 | \newcommand{\isasymNOTE}{\cmd{note}}
 | 
|  |     34 | \newcommand{\isasymIN}{\cmd{in}}
 | 
| 21058 |     35 | \newcommand{\isasymCODEGEN}{\cmd{code\_gen}}
 | 
| 22550 |     36 | \newcommand{\isasymCODEDATATYPE}{\cmd{code\_datatype}}
 | 
| 21146 |     37 | \newcommand{\isasymCODECONST}{\cmd{code\_const}}
 | 
|  |     38 | \newcommand{\isasymCODETYPE}{\cmd{code\_type}}
 | 
|  |     39 | \newcommand{\isasymCODECLASS}{\cmd{code\_class}}
 | 
|  |     40 | \newcommand{\isasymCODEINSTANCE}{\cmd{code\_instance}}
 | 
|  |     41 | \newcommand{\isasymCODERESERVED}{\cmd{code\_reserved}}
 | 
|  |     42 | \newcommand{\isasymCODEMODULENAME}{\cmd{code\_modulename}}
 | 
|  |     43 | \newcommand{\isasymCODEMODULEPROLOG}{\cmd{code\_moduleprolog}}
 | 
| 21190 |     44 | \newcommand{\isasymCODEAXIOMS}{\cmd{code\_axioms}}
 | 
|  |     45 | \newcommand{\isasymCODEABSTYPE}{\cmd{code\_abstype}}
 | 
| 22291 |     46 | \newcommand{\isasymPRINTCODESETUP}{\cmd{print\_codesetup}}
 | 
| 22798 |     47 | \newcommand{\isasymPRINTCLASSES}{\cmd{print\_classes}}
 | 
| 22291 |     48 | \newcommand{\isasymCODETHMS}{\cmd{code\_thms}}
 | 
| 22550 |     49 | \newcommand{\isasymCODEDEPS}{\cmd{code\_deps}}
 | 
| 21058 |     50 | \newcommand{\isasymFUN}{\cmd{fun}}
 | 
|  |     51 | \newcommand{\isasymFUNCTION}{\cmd{function}}
 | 
|  |     52 | \newcommand{\isasymPRIMREC}{\cmd{primrec}}
 | 
|  |     53 | \newcommand{\isasymRECDEF}{\cmd{recdef}}
 | 
| 20948 |     54 | 
 | 
| 21322 |     55 | \isakeeptag{tt}
 | 
|  |     56 | \renewcommand{\isatagtt}{\isabellestyle{tt}\isastyle}
 | 
|  |     57 | \renewcommand{\endisatagtt}{\isabellestyle{it}\isastyle}
 | 
|  |     58 | 
 | 
| 20948 |     59 | \newcommand{\qt}[1]{``#1''}
 | 
|  |     60 | \newcommand{\qtt}[1]{"{}{#1}"{}}
 | 
|  |     61 | \newcommand{\qn}[1]{\emph{#1}}
 | 
|  |     62 | \newcommand{\strong}[1]{{\bfseries #1}}
 | 
|  |     63 | \newcommand{\fixme}[1][!]{\strong{FIXME: #1}}
 | 
|  |     64 | 
 | 
| 21322 |     65 | \lstset{basicstyle=\scriptsize\ttfamily,keywordstyle=\itshape,commentstyle=\itshape\sffamily,frame=single}
 | 
| 21058 |     66 | \newcommand{\lstsml}[1]{\lstset{language=ML}\lstinputlisting{#1}}
 | 
|  |     67 | \newcommand{\lsthaskell}[1]{\lstset{language=Haskell}\lstinputlisting{#1}}
 | 
|  |     68 | 
 | 
| 20948 |     69 | \hyphenation{Isabelle}
 | 
|  |     70 | \hyphenation{Isar}
 | 
|  |     71 | 
 | 
|  |     72 | \isadroptag{theory}
 | 
|  |     73 | \title{\includegraphics[scale=0.5]{isabelle_isar}
 | 
| 21222 |     74 |   \\[4ex] Code generation from Isabelle/HOL theories}
 | 
| 20948 |     75 | \author{\emph{Florian Haftmann}}
 | 
|  |     76 | 
 | 
|  |     77 | 
 | 
|  |     78 | \begin{document}
 | 
|  |     79 | 
 | 
|  |     80 | \maketitle
 | 
|  |     81 | 
 | 
|  |     82 | \begin{abstract}
 | 
| 21058 |     83 |   This tutorial gives a motivation-driven introduction
 | 
|  |     84 |   to a generic code generator framework in Isabelle
 | 
|  |     85 |   for generating executable code in functional
 | 
|  |     86 |   programming languages from logical specifications.
 | 
| 20948 |     87 | \end{abstract}
 | 
|  |     88 | 
 | 
|  |     89 | \thispagestyle{empty}\clearpage
 | 
|  |     90 | 
 | 
|  |     91 | \pagenumbering{roman}
 | 
|  |     92 | \clearfirst
 | 
|  |     93 | 
 | 
|  |     94 | \input{Thy/document/Codegen.tex}
 | 
|  |     95 | 
 | 
|  |     96 | \begingroup
 | 
|  |     97 | %\tocentry{\bibname}
 | 
|  |     98 | \bibliographystyle{plain} \small\raggedright\frenchspacing
 | 
|  |     99 | \bibliography{../../manual}
 | 
|  |    100 | \endgroup
 | 
|  |    101 | 
 | 
|  |    102 | \end{document}
 | 
|  |    103 | 
 | 
|  |    104 | 
 | 
|  |    105 | %%% Local Variables: 
 | 
|  |    106 | %%% mode: latex
 | 
|  |    107 | %%% TeX-master: t
 | 
|  |    108 | %%% End: 
 |