47269
|
1 |
Isabelle is a generic system for
|
|
2 |
implementing logical formalisms, and Isabelle/HOL is the specialization
|
|
3 |
of Isabelle for HOL, which abbreviates Higher-Order Logic. We introduce
|
|
4 |
HOL step by step following the equation
|
|
5 |
\[ \mbox{HOL} = \mbox{Functional Programming} + \mbox{Logic}. \]
|
52782
|
6 |
We assume that the reader is used to logical and set theoretic notation
|
|
7 |
and is familiar with the basic concepts of functional programming.
|
|
8 |
\ifsem
|
|
9 |
Open-minded readers have been known to pick up functional
|
|
10 |
programming through the wealth of examples in \autoref{sec:FP}
|
|
11 |
and \autoref{sec:CaseStudyExp}.
|
|
12 |
\fi
|
47269
|
13 |
|
|
14 |
\autoref{sec:FP} introduces HOL as a functional programming language and
|
|
15 |
explains how to write simple inductive proofs of mostly equational properties
|
|
16 |
of recursive functions.
|
52782
|
17 |
\ifsem
|
47269
|
18 |
\autoref{sec:CaseStudyExp} contains a
|
|
19 |
little case study: arithmetic and boolean expressions, their evaluation,
|
|
20 |
optimization and compilation.
|
52782
|
21 |
\fi
|
47269
|
22 |
\autoref{ch:Logic} introduces the rest of HOL: the
|
|
23 |
language of formulas beyond equality, automatic proof tools, single
|
|
24 |
step proofs, and inductive definitions, an essential specification construct.
|
|
25 |
\autoref{ch:Isar} introduces Isar, Isabelle's language for writing structured
|
|
26 |
proofs.
|
|
27 |
|
|
28 |
%Further material (slides, demos etc) can be found online at
|
|
29 |
%\url{http://www.in.tum.de/~nipkow}.
|
|
30 |
|
|
31 |
% Relics:
|
|
32 |
% We aim to minimise the amount of background knowledge of logic we expect
|
|
33 |
% from the reader
|
|
34 |
% We have focussed on the core material
|
|
35 |
% in the intersection of computation and logic.
|
|
36 |
|
|
37 |
This introduction to the core of Isabelle is intentionally concrete and
|
|
38 |
example-based: we concentrate on examples that illustrate the typical cases;
|
|
39 |
we do not explain the general case if it can be inferred from the examples.
|
52782
|
40 |
We cover the essentials (from a functional programming point of view) as
|
|
41 |
quickly and compactly as possible.
|
|
42 |
\ifsem
|
|
43 |
After all, this book is primarily about semantics.
|
|
44 |
\fi
|
|
45 |
|
47269
|
46 |
For a comprehensive treatment of all things Isabelle we recommend the
|
|
47 |
\emph{Isabelle/Isar Reference Manual}~\cite{IsarRef}, which comes with the
|
|
48 |
Isabelle distribution.
|
47546
|
49 |
The tutorial by Nipkow, Paulson and Wenzel~\cite{LNCS2283} (in its updated version that comes with the Isabelle distribution) is still recommended for the wealth of examples and material, but its proof style is outdated. In particular it fails to cover the structured proof language Isar.
|
|
50 |
|
52782
|
51 |
%This introduction to Isabelle has grown out of many years of teaching
|
|
52 |
%Isabelle courses.
|
|
53 |
|
|
54 |
\ifsem\else
|
|
55 |
If you want to apply what you have learned about Isabelle we recommend you
|
|
56 |
donwload and read the book
|
|
57 |
\href{http://www.in.tum.de/~nipkow/Concrete/}{Concrete
|
|
58 |
Semantics}~\cite{ConcreteSemantics}, a guided tour of the wonderful world of
|
|
59 |
programming langage semantics formalised in Isabelle. In fact,
|
|
60 |
\emph{Programming and Proving in Isabelle/HOL} constitutes part~I of
|
|
61 |
\href{http://www.in.tum.de/~nipkow/Concrete/}{Concrete Semantics}. The web
|
|
62 |
pages for \href{http://www.in.tum.de/~nipkow/Concrete/}{Concrete Semantics}
|
|
63 |
also provide a set of \LaTeX-based slides for teaching \emph{Programming and
|
|
64 |
Proving in Isabelle/HOL}.
|
|
65 |
\fi
|
47546
|
66 |
|
|
67 |
\paragraph{Acknowledgements}
|
52782
|
68 |
\ifsem We \else I \fi wish to thank the following people for their comments:
|
47546
|
69 |
Florian Haftmann, Ren\'{e} Thiemann and Christian Sternagel. |