ProgTutorial/Intro.thy
changeset 295 24c68350d059
parent 293 0a567f923b42
child 298 8057d65607eb
equal deleted inserted replaced
294:ee9d53fbb56b 295:24c68350d059
     3 begin
     3 begin
     4 
     4 
     5 chapter {* Introduction *}
     5 chapter {* Introduction *}
     6 
     6 
     7 text {*
     7 text {*
       
     8    \begin{flushright}
       
     9   {\em
       
    10   ``My thesis is that programming is not at the bottom of the intellectual \\
       
    11   pyramid, but at the top. It's creative design of the highest order. It \\
       
    12   isn't monkey or donkey work; rather, as Edsger Dijkstra famously \\
       
    13   claimed, it's amongst the hardest intellectual tasks ever attempted.''} \\[1ex]
       
    14   Richard Bornat, In Defence of Programming \cite{Bornat-lecture}
       
    15   \end{flushright}
       
    16 
       
    17   \medskip
     8   If your next project requires you to program on the ML-level of Isabelle,
    18   If your next project requires you to program on the ML-level of Isabelle,
     9   then this tutorial is for you. It will guide you through the first steps of
    19   then this tutorial is for you. It will guide you through the first steps of
    10   Isabelle programming, and also explain tricks of the trade. The best way to
    20   Isabelle programming, and also explain tricks of the trade. The best way to
    11   get to know the ML-level of Isabelle is by experimenting with the many code
    21   get to know the ML-level of Isabelle is by experimenting with the many code
    12   examples included in the tutorial. The code is as far as possible checked
    22   examples included in the tutorial. The code is as far as possible checked
    25   writing theories and proofs. We also assume that readers are familiar with
    35   writing theories and proofs. We also assume that readers are familiar with
    26   the functional programming language ML, the language in which most of
    36   the functional programming language ML, the language in which most of
    27   Isabelle is implemented. If you are unfamiliar with either of these two
    37   Isabelle is implemented. If you are unfamiliar with either of these two
    28   subjects, you should first work through the Isabelle/HOL tutorial
    38   subjects, you should first work through the Isabelle/HOL tutorial
    29   \cite{isa-tutorial} or Paulson's book on ML \cite{paulson-ml2}.
    39   \cite{isa-tutorial} or Paulson's book on ML \cite{paulson-ml2}.
    30 
       
    31 *}
    40 *}
    32 
    41 
    33 section {* Existing Documentation *}
    42 section {* Existing Documentation *}
    34 
    43 
    35 text {*
    44 text {*
    36   
       
    37   The following documentation about Isabelle programming already exists (and is
    45   The following documentation about Isabelle programming already exists (and is
    38   part of the distribution of Isabelle):
    46   part of the distribution of Isabelle):
    39 
    47 
    40   \begin{description}
    48   \begin{description}
    41   \item[The Isabelle/Isar Implementation Manual] describes Isabelle
    49   \item[The Isabelle/Isar Implementation Manual] describes Isabelle
    66   it is often also necessary to track the change history of a file or
    74   it is often also necessary to track the change history of a file or
    67   files. The Mercurial repository\footnote{\url{http://isabelle.in.tum.de/repos/isabelle/}} 
    75   files. The Mercurial repository\footnote{\url{http://isabelle.in.tum.de/repos/isabelle/}} 
    68   for Isabelle  provides convenient interfaces to query the history of
    76   for Isabelle  provides convenient interfaces to query the history of
    69   files and ``change sets''.
    77   files and ``change sets''.
    70   \end{description}
    78   \end{description}
    71 
       
    72 
       
    73 *}
    79 *}
    74 
    80 
    75 section {* Typographic Conventions *}
    81 section {* Typographic Conventions *}
    76 
    82 
    77 text {*
    83 text {*
    78 
       
    79   All ML-code in this tutorial is typeset in shaded boxes, like the following 
    84   All ML-code in this tutorial is typeset in shaded boxes, like the following 
    80   ML-expression:
    85   ML-expression:
    81 
    86 
    82   \begin{isabelle}
    87   \begin{isabelle}
    83   \begin{graybox}
    88   \begin{graybox}
   158   is no problem with updating your code after submission. At the moment
   163   is no problem with updating your code after submission. At the moment
   159   developers are not as diligent with checking their code against the AFP than
   164   developers are not as diligent with checking their code against the AFP than
   160   with checking agains the distribution, but generally problems will be caught
   165   with checking agains the distribution, but generally problems will be caught
   161   and the developer, who caused them, is expected to fix them. So also
   166   and the developer, who caused them, is expected to fix them. So also
   162   in this case code maintenance is done for you. 
   167   in this case code maintenance is done for you. 
   163 
       
   164 *}
   168 *}
   165 
   169 
   166 section {* Some Naming Conventions in the Isabelle Sources *}
   170 section {* Some Naming Conventions in the Isabelle Sources *}
   167 
   171 
   168 text {*
   172 text {*
   225   This document is still in the process of being written! All of the
   229   This document is still in the process of being written! All of the
   226   text is still under construction. Sections and 
   230   text is still under construction. Sections and 
   227   chapters that are under \underline{heavy} construction are marked 
   231   chapters that are under \underline{heavy} construction are marked 
   228   with TBD.}
   232   with TBD.}
   229 
   233 
   230   
       
   231   \vfill
   234   \vfill
   232   This document was compiled with:\\
   235   This document was compiled with:\\
   233   \input{version}\\
   236   \input{version}\\
   234   \input{pversion}
   237   \input{pversion}
   235 *}
   238 *}