krauss@21212: krauss@25092: \documentclass[a4paper,fleqn]{article} krauss@23003: krauss@21212: \usepackage{latexsym,graphicx} krauss@21212: \usepackage[refpage]{nomencl} haftmann@30209: \usepackage{../iman,../extra,../isar,../proof} haftmann@30209: \usepackage{../isabelle,../isabellesym} krauss@21212: \usepackage{style} krauss@23003: \usepackage{mathpartir} krauss@23003: \usepackage{amsthm} haftmann@30209: \usepackage{../pdfsetup} krauss@21212: krauss@21212: \newcommand{\cmd}[1]{\isacommand{#1}} krauss@21212: krauss@21212: \newcommand{\isasymINFIX}{\cmd{infix}} krauss@21212: \newcommand{\isasymLOCALE}{\cmd{locale}} krauss@21212: \newcommand{\isasymINCLUDES}{\cmd{includes}} krauss@21212: \newcommand{\isasymDATATYPE}{\cmd{datatype}} krauss@21212: \newcommand{\isasymDEFINES}{\cmd{defines}} krauss@21212: \newcommand{\isasymNOTES}{\cmd{notes}} krauss@21212: \newcommand{\isasymCLASS}{\cmd{class}} krauss@21212: \newcommand{\isasymINSTANCE}{\cmd{instance}} krauss@21212: \newcommand{\isasymLEMMA}{\cmd{lemma}} krauss@21212: \newcommand{\isasymPROOF}{\cmd{proof}} krauss@21212: \newcommand{\isasymQED}{\cmd{qed}} krauss@21212: \newcommand{\isasymFIX}{\cmd{fix}} krauss@21212: \newcommand{\isasymASSUME}{\cmd{assume}} krauss@21212: \newcommand{\isasymSHOW}{\cmd{show}} krauss@21212: \newcommand{\isasymNOTE}{\cmd{note}} krauss@21212: \newcommand{\isasymCODEGEN}{\cmd{code\_gen}} krauss@21212: \newcommand{\isasymPRINTCODETHMS}{\cmd{print\_codethms}} krauss@21212: \newcommand{\isasymFUN}{\cmd{fun}} krauss@21212: \newcommand{\isasymFUNCTION}{\cmd{function}} krauss@21212: \newcommand{\isasymPRIMREC}{\cmd{primrec}} krauss@21212: \newcommand{\isasymRECDEF}{\cmd{recdef}} krauss@21212: krauss@21212: \newcommand{\qt}[1]{``#1''} krauss@21212: \newcommand{\qtt}[1]{"{}{#1}"{}} krauss@21212: \newcommand{\qn}[1]{\emph{#1}} krauss@21212: \newcommand{\strong}[1]{{\bfseries #1}} krauss@21212: \newcommand{\fixme}[1][!]{\strong{FIXME: #1}} krauss@21212: krauss@23003: \newtheorem{exercise}{Exercise}{\bf}{\itshape} krauss@23003: %\newtheorem*{thmstar}{Theorem}{\bf}{\itshape} krauss@21212: krauss@21212: \hyphenation{Isabelle} krauss@21212: \hyphenation{Isar} krauss@21212: krauss@21212: \isadroptag{theory} krauss@23003: \title{Defining Recursive Functions in Isabelle/HOL} krauss@23003: \author{Alexander Krauss} krauss@21212: krauss@21212: \isabellestyle{tt} krauss@23188: \renewcommand{\isastyletxt}{\isastyletext}% use same formatting for txt and text krauss@21212: krauss@21212: \begin{document} krauss@21212: krauss@23805: \date{\ \\} krauss@21212: \maketitle krauss@21212: krauss@21212: \begin{abstract} krauss@21212: This tutorial describes the use of the new \emph{function} package, krauss@23003: which provides general recursive function definitions for Isabelle/HOL. krauss@23188: We start with very simple examples and then gradually move on to more krauss@23188: advanced topics such as manual termination proofs, nested recursion, krauss@23805: partiality, tail recursion and congruence rules. krauss@21212: \end{abstract} krauss@21212: krauss@23003: %\thispagestyle{empty}\clearpage krauss@21212: krauss@23003: %\pagenumbering{roman} krauss@23003: %\clearfirst krauss@21212: krauss@23003: \input{intro.tex} krauss@21212: \input{Thy/document/Functions.tex} krauss@23805: %\input{conclusion.tex} krauss@21212: krauss@21212: \begingroup krauss@21212: %\tocentry{\bibname} krauss@21212: \bibliographystyle{plain} \small\raggedright\frenchspacing haftmann@30209: \bibliography{../manual} krauss@21212: \endgroup krauss@21212: krauss@21212: \end{document} krauss@21212: krauss@21212: krauss@21212: %%% Local Variables: krauss@21212: %%% mode: latex krauss@21212: %%% TeX-master: t krauss@21212: %%% End: