4 \documentclass[12pt,a4paper,fleqn]{report}
5 \usepackage{latexsym,graphicx}
7 \usepackage[refpage]{nomencl}
8 \usepackage{../../iman,../../extra,../../isar,../../proof}
9 \usepackage{Thy/document/isabelle,Thy/document/isabellesym}
11 \usepackage{Thy/document/pdfsetup}
13 \newcommand{\cmd}[1]{\isacommand{#1}}
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}}
35 \newcommand{\isasymEXPORTCODE}{\cmd{export\_code}}
36 \newcommand{\isasymCODEDATATYPE}{\cmd{code\_datatype}}
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}}
44 \newcommand{\isasymCODEAXIOMS}{\cmd{code\_axioms}}
45 \newcommand{\isasymCODEABSTYPE}{\cmd{code\_abstype}}
46 \newcommand{\isasymPRINTCODESETUP}{\cmd{print\_codesetup}}
47 \newcommand{\isasymPRINTCLASSES}{\cmd{print\_classes}}
48 \newcommand{\isasymCODETHMS}{\cmd{code\_thms}}
49 \newcommand{\isasymCODEDEPS}{\cmd{code\_deps}}
50 \newcommand{\isasymFUN}{\cmd{fun}}
51 \newcommand{\isasymFUNCTION}{\cmd{function}}
52 \newcommand{\isasymPRIMREC}{\cmd{primrec}}
53 \newcommand{\isasymRECDEF}{\cmd{recdef}}
56 \renewcommand{\isatagtt}{\isabellestyle{tt}\isastyle}
57 \renewcommand{\endisatagtt}{\isabellestyle{it}\isastyle}
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}}
65 \lstset{basicstyle=\scriptsize\ttfamily,keywordstyle=\itshape,commentstyle=\itshape\sffamily,frame=single}
66 \newcommand{\lstsml}[1]{\lstset{language=ML}\lstinputlisting{#1}}
67 \newcommand{\lsthaskell}[1]{\lstset{language=Haskell}\lstinputlisting{#1}}
69 \hyphenation{Isabelle}
73 \title{\includegraphics[scale=0.5]{isabelle_isar}
74 \\[4ex] Code generation from Isabelle/HOL theories}
75 \author{\emph{Florian Haftmann}}
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.
89 \thispagestyle{empty}\clearpage
94 \input{Thy/document/Codegen.tex}
98 \bibliographystyle{plain} \small\raggedright\frenchspacing
99 \bibliography{../../manual}