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