doc-src/IsarRef/Thy/document/Introduction.tex
author blanchet
Mon, 19 Apr 2010 18:14:45 +0200
changeset 36230 43d10a494c91
parent 30242 aea5d7fa7ef5
child 40406 313a24b66a8d
permissions -rw-r--r--
added warning about inconsistent context to Metis; it makes more sense here than in Sledgehammer, because Sledgehammer is unsound and there's no point in having people panicking about the consistency of their context when their context is in fact consistent
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
27035
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     1
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     2
\begin{isabellebody}%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     3
\def\isabellecontext{Introduction}%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     4
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     5
\isadelimtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     6
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     7
\endisadelimtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     8
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
     9
\isatagtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    10
\isacommand{theory}\isamarkupfalse%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    11
\ Introduction\isanewline
27052
5c48cecb981b updated generated file;
wenzelm
parents: 27042
diff changeset
    12
\isakeyword{imports}\ Main\isanewline
27035
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    13
\isakeyword{begin}%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    14
\endisatagtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    15
{\isafoldtheory}%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    16
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    17
\isadelimtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    18
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    19
\endisadelimtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    20
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    21
\isamarkupchapter{Introduction%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    22
}
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    23
\isamarkuptrue%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    24
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    25
\isamarkupsection{Overview%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    26
}
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    27
\isamarkuptrue%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    28
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    29
\begin{isamarkuptext}%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    30
The \emph{Isabelle} system essentially provides a generic
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    31
  infrastructure for building deductive systems (programmed in
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    32
  Standard ML), with a special focus on interactive theorem proving in
29746
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    33
  higher-order logics.  Many years ago, even end-users would refer to
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    34
  certain ML functions (goal commands, tactics, tacticals etc.) to
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    35
  pursue their everyday theorem proving tasks.
27035
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    36
  
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    37
  In contrast \emph{Isar} provides an interpreted language environment
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    38
  of its own, which has been specifically tailored for the needs of
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    39
  theory and proof development.  Compared to raw ML, the Isabelle/Isar
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    40
  top-level provides a more robust and comfortable development
29746
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    41
  platform, with proper support for theory development graphs, managed
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    42
  transactions with unlimited undo etc.  The Isabelle/Isar version of
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    43
  the \emph{Proof~General} user interface
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    44
  \cite{proofgeneral,Aspinall:TACAS:2000} provides a decent front-end
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    45
  for interactive theory and proof development in this advanced
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    46
  theorem proving environment, even though it is somewhat biased
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    47
  towards old-style proof scripts.
27035
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    48
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    49
  \medskip Apart from the technical advances over bare-bones ML
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    50
  programming, the main purpose of the Isar language is to provide a
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    51
  conceptually different view on machine-checked proofs
29746
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    52
  \cite{Wenzel:1999:TPHOL,Wenzel-PhD}.  \emph{Isar} stands for
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    53
  \emph{Intelligible semi-automated reasoning}.  Drawing from both the
27035
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    54
  traditions of informal mathematical proof texts and high-level
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    55
  programming languages, Isar offers a versatile environment for
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    56
  structured formal proof documents.  Thus properly written Isar
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    57
  proofs become accessible to a broader audience than unstructured
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    58
  tactic scripts (which typically only provide operational information
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    59
  for the machine).  Writing human-readable proof texts certainly
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    60
  requires some additional efforts by the writer to achieve a good
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    61
  presentation, both of formal and informal parts of the text.  On the
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    62
  other hand, human-readable formal texts gain some value in their own
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    63
  right, independently of the mechanic proof-checking process.
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    64
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    65
  Despite its grand design of structured proof texts, Isar is able to
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    66
  assimilate the old tactical style as an ``improper'' sub-language.
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    67
  This provides an easy upgrade path for existing tactic scripts, as
29746
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    68
  well as some means for interactive experimentation and debugging of
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    69
  structured proofs.  Isabelle/Isar supports a broad range of proof
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    70
  styles, both readable and unreadable ones.
27035
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    71
29717
51ed69c9422b updated generated files;
wenzelm
parents: 28505
diff changeset
    72
  \medskip The generic Isabelle/Isar framework (see
29746
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    73
  \chref{ch:isar-framework}) works reasonably well for any Isabelle
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    74
  object-logic that conforms to the natural deduction view of the
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    75
  Isabelle/Pure framework.  Specific language elements introduced by
533c27b43ee1 updated generated files;
wenzelm
parents: 29717
diff changeset
    76
  the major object-logics are described in \chref{ch:hol}
27057
ecbe1afe800b updated generated file;
wenzelm
parents: 27052
diff changeset
    77
  (Isabelle/HOL), \chref{ch:holcf} (Isabelle/HOLCF), and \chref{ch:zf}
ecbe1afe800b updated generated file;
wenzelm
parents: 27052
diff changeset
    78
  (Isabelle/ZF).  The main language elements are already provided by
ecbe1afe800b updated generated file;
wenzelm
parents: 27052
diff changeset
    79
  the Isabelle/Pure framework. Nevertheless, examples given in the
ecbe1afe800b updated generated file;
wenzelm
parents: 27052
diff changeset
    80
  generic parts will usually refer to Isabelle/HOL as well.
27042
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    81
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    82
  \medskip Isar commands may be either \emph{proper} document
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    83
  constructors, or \emph{improper commands}.  Some proof methods and
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    84
  attributes introduced later are classified as improper as well.
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    85
  Improper Isar language elements, which are marked by ``\isa{{\isachardoublequote}\isactrlsup {\isacharasterisk}{\isachardoublequote}}'' in the subsequent chapters; they are often helpful
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    86
  when developing proof documents, but their use is discouraged for
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    87
  the final human-readable outcome.  Typical examples are diagnostic
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    88
  commands that print terms or theorems according to the current
8fcf19f2168b updated generated file;
wenzelm
parents: 27036
diff changeset
    89
  context; other commands emulate old-style tactical theorem proving.%
27035
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    90
\end{isamarkuptext}%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    91
\isamarkuptrue%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    92
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    93
\isadelimtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    94
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    95
\endisadelimtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    96
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    97
\isatagtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    98
\isacommand{end}\isamarkupfalse%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
    99
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   100
\endisatagtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   101
{\isafoldtheory}%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   102
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   103
\isadelimtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   104
%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   105
\endisadelimtheory
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   106
\isanewline
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   107
\end{isabellebody}%
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   108
%%% Local Variables:
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   109
%%% mode: latex
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   110
%%% TeX-master: "root"
d038a2ba87f6 renamed theory "intro" to "Introduction";
wenzelm
parents:
diff changeset
   111
%%% End: