
%% $Id$

\documentclass[12pt,a4paper,fleqn]{report}
\usepackage{latexsym,graphicx}
\usepackage{listings}
\usepackage[refpage]{nomencl}
\usepackage{../../iman,../../extra,../../isar,../../proof}
\usepackage{Thy/document/isabelle,Thy/document/isabellesym}
\usepackage{style}
\usepackage{Thy/document/pdfsetup}

\newcommand{\cmd}[1]{\isacommand{#1}}

\newcommand{\isasymINFIX}{\cmd{infix}}
\newcommand{\isasymLOCALE}{\cmd{locale}}
\newcommand{\isasymINCLUDES}{\cmd{includes}}
\newcommand{\isasymDATATYPE}{\cmd{datatype}}
\newcommand{\isasymAXCLASS}{\cmd{axclass}}
\newcommand{\isasymFIXES}{\cmd{fixes}}
\newcommand{\isasymASSUMES}{\cmd{assumes}}
\newcommand{\isasymDEFINES}{\cmd{defines}}
\newcommand{\isasymNOTES}{\cmd{notes}}
\newcommand{\isasymSHOWS}{\cmd{shows}}
\newcommand{\isasymCLASS}{\cmd{class}}
\newcommand{\isasymINSTANCE}{\cmd{instance}}
\newcommand{\isasymLEMMA}{\cmd{lemma}}
\newcommand{\isasymPROOF}{\cmd{proof}}
\newcommand{\isasymQED}{\cmd{qed}}
\newcommand{\isasymFIX}{\cmd{fix}}
\newcommand{\isasymASSUME}{\cmd{assume}}
\newcommand{\isasymSHOW}{\cmd{show}}
\newcommand{\isasymNOTE}{\cmd{note}}
\newcommand{\isasymEXPORTCODE}{\cmd{export\_code}}
\newcommand{\isasymCODEDATATYPE}{\cmd{code\_datatype}}
\newcommand{\isasymCODECONST}{\cmd{code\_const}}
\newcommand{\isasymCODETYPE}{\cmd{code\_type}}
\newcommand{\isasymCODECLASS}{\cmd{code\_class}}
\newcommand{\isasymCODEINSTANCE}{\cmd{code\_instance}}
\newcommand{\isasymCODERESERVED}{\cmd{code\_reserved}}
\newcommand{\isasymCODEMODULENAME}{\cmd{code\_modulename}}
\newcommand{\isasymCODEMODULEPROLOG}{\cmd{code\_moduleprolog}}
\newcommand{\isasymCODEAXIOMS}{\cmd{code\_axioms}}
\newcommand{\isasymCODEABSTYPE}{\cmd{code\_abstype}}
\newcommand{\isasymPRINTCODESETUP}{\cmd{print\_codesetup}}
\newcommand{\isasymPRINTCLASSES}{\cmd{print\_classes}}
\newcommand{\isasymCODETHMS}{\cmd{code\_thms}}
\newcommand{\isasymCODEDEPS}{\cmd{code\_deps}}
\newcommand{\isasymFUN}{\cmd{fun}}
\newcommand{\isasymFUNCTION}{\cmd{function}}
\newcommand{\isasymPRIMREC}{\cmd{primrec}}
\newcommand{\isasymCONSTDEFS}{\cmd{constdefs}}
\newcommand{\isasymRECDEF}{\cmd{recdef}}

\isakeeptag{tt}
\renewcommand{\isatagtt}{\isabellestyle{tt}\isastyle}
\renewcommand{\endisatagtt}{\isabellestyle{it}\isastyle}

\newcommand{\qt}[1]{``#1''}
\newcommand{\qtt}[1]{"{}{#1}"{}}
\newcommand{\qn}[1]{\emph{#1}}
\newcommand{\strong}[1]{{\bfseries #1}}
\newcommand{\fixme}[1][!]{\strong{FIXME: #1}}

\lstset{basicstyle=\scriptsize\ttfamily,keywordstyle=\itshape,commentstyle=\itshape\sffamily,frame=single}
\newcommand{\lstsml}[1]{\lstset{language=ML}\lstinputlisting{#1}}
\newcommand{\lsthaskell}[1]{\lstset{language=Haskell}\lstinputlisting{#1}}

\hyphenation{Isabelle}
\hyphenation{Isar}

\isadroptag{theory}
\title{\includegraphics[scale=0.5]{isabelle_isar}
  \\[4ex] Code generation from Isabelle/HOL theories}
\author{\emph{Florian Haftmann}}


\begin{document}

\maketitle

\begin{abstract}
  This tutorial gives a motivation-driven introduction
  to a generic code generator framework in Isabelle
  for generating executable code in functional
  programming languages from logical specifications.
\end{abstract}

\thispagestyle{empty}\clearpage

\pagenumbering{roman}
\clearfirst

\input{Thy/document/Codegen.tex}

\begingroup
%\tocentry{\bibname}
\bibliographystyle{plain} \small\raggedright\frenchspacing
\bibliography{../../manual}
\endgroup

\end{document}


%%% Local Variables: 
%%% mode: latex
%%% TeX-master: t
%%% End: 
