doc-src/IsarRef/isar-ref.tex
author wenzelm
Wed, 10 Jan 2001 20:18:55 +0100
changeset 10858 479dad7b3b41
parent 10685 8cb1d80f10de
child 11100 34d58b1818f4
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     1
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     2
%% $Id$
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     3
7836
7a9270282fd3 a4paper;
wenzelm
parents: 7532
diff changeset
     4
\documentclass[12pt,a4paper,fleqn]{report}
9695
ec7d7f877712 proper setup of iman.sty/extra.sty/ttbox.sty;
wenzelm
parents: 9658
diff changeset
     5
\usepackage{latexsym,graphicx,../iman,../extra,../ttbox,../proof,../rail,../railsetup,../isar,../pdfsetup}
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     6
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     7
\title{\includegraphics[scale=0.5]{isabelle_isar} \\[4ex] The Isabelle/Isar Reference Manual}
7050
c70d3402fef5 checkpoint;
wenzelm
parents: 7046
diff changeset
     8
\author{\emph{Markus Wenzel} \\ TU M\"unchen}
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
     9
7050
c70d3402fef5 checkpoint;
wenzelm
parents: 7046
diff changeset
    10
\makeindex
c70d3402fef5 checkpoint;
wenzelm
parents: 7046
diff changeset
    11
9658
97d6d0a72d35 tuned \isastyle;
wenzelm
parents: 9600
diff changeset
    12
\newcommand{\isastyle}{\small\tt\slshape}
97d6d0a72d35 tuned \isastyle;
wenzelm
parents: 9600
diff changeset
    13
\newcommand{\isa}[1]{\emph{\isastyle #1}}
10208
2b284ef75049 tuned syms;
wenzelm
parents: 10160
diff changeset
    14
\newcommand{\isamath}[1]{\emph{$#1$}}
2b284ef75049 tuned syms;
wenzelm
parents: 10160
diff changeset
    15
\newcommand{\isasymColon}{\isamath{\mathrel{::}}}
2b284ef75049 tuned syms;
wenzelm
parents: 10160
diff changeset
    16
\newcommand{\isasymRightarrow}{\isamath{\Rightarrow}}
10639
f902346264e9 harpoons;
wenzelm
parents: 10240
diff changeset
    17
\newcommand{\isasymleftharpoondown}{\isamath{\leftharpoondown}}
f902346264e9 harpoons;
wenzelm
parents: 10240
diff changeset
    18
\newcommand{\isasymrightharpoonup}{\isamath{\rightharpoonup}}
f902346264e9 harpoons;
wenzelm
parents: 10240
diff changeset
    19
\newcommand{\isasymrightleftharpoons}{\isamath{\rightleftharpoons}}
10685
8cb1d80f10de \isasymequiv;
wenzelm
parents: 10639
diff changeset
    20
\newcommand{\isasymequiv}{\isamath{\equiv}}
9204
e865dda0313e tuned rail setup;
wenzelm
parents: 8896
diff changeset
    21
e865dda0313e tuned rail setup;
wenzelm
parents: 8896
diff changeset
    22
\railterm{percent,ppercent,underscore,lbrace,rbrace,atsign}
7167
wenzelm
parents: 7135
diff changeset
    23
\railterm{ident,longident,symident,var,textvar,typefree,typevar,nat,string,verbatim,keyword}
8596
wenzelm
parents: 8594
diff changeset
    24
\railterm{name,nameref,text,type,term,prop,atom}
7134
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    25
8594
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    26
\railalias{ident}{\railtoken{ident}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    27
\railalias{longident}{\railtoken{longident}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    28
\railalias{symident}{\railtoken{symident}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    29
\railalias{var}{\railtoken{var}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    30
\railalias{textvar}{\railtoken{textvar}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    31
\railalias{typefree}{\railtoken{typefree}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    32
\railalias{typevar}{\railtoken{typevar}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    33
\railalias{nat}{\railtoken{nat}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    34
\railalias{string}{\railtoken{string}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    35
\railalias{verbatim}{\railtoken{verbatim}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    36
\railalias{keyword}{\railtoken{keyword}}
d2e2a3df6871 rail token vs. terminal;
wenzelm
parents: 8547
diff changeset
    37
7134
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    38
\railalias{name}{\railqtoken{name}}
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    39
\railalias{nameref}{\railqtoken{nameref}}
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    40
\railalias{text}{\railqtoken{text}}
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    41
\railalias{type}{\railqtoken{type}}
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    42
\railalias{term}{\railqtoken{term}}
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    43
\railalias{prop}{\railqtoken{prop}}
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    44
\railalias{atom}{\railqtoken{atom}}
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    45
7895
7c492d8bc8e3 updated;
wenzelm
parents: 7836
diff changeset
    46
\newcommand{\drv}{\mathrel{\vdash}}
7c492d8bc8e3 updated;
wenzelm
parents: 7836
diff changeset
    47
\newcommand{\edrv}{\mathop{\drv}\nolimits}
7974
34245feb6e82 improved;
wenzelm
parents: 7895
diff changeset
    48
\newcommand{\Or}{\mathrel{\;|\;}}
7895
7c492d8bc8e3 updated;
wenzelm
parents: 7836
diff changeset
    49
10858
wenzelm
parents: 10685
diff changeset
    50
\renewcommand{\vec}[1]{\overline{#1}}
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    51
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    52
\setcounter{secnumdepth}{2} \setcounter{tocdepth}{2}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    53
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    54
\pagestyle{headings}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    55
\sloppy
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    56
\binperiod     %%%treat . like a binary operator
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    57
7134
320b412e5800 more stuff;
wenzelm
parents: 7050
diff changeset
    58
\renewcommand{\phi}{\varphi}
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    59
10240
wenzelm
parents: 10208
diff changeset
    60
%\includeonly{}
7895
7c492d8bc8e3 updated;
wenzelm
parents: 7836
diff changeset
    61
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    62
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    63
\begin{document}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    64
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    65
\underscoreoff
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    66
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    67
\maketitle 
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    68
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
    69
\begin{abstract}
7167
wenzelm
parents: 7135
diff changeset
    70
  \emph{Intelligible semi-automated reasoning} (\emph{Isar}) is a generic
wenzelm
parents: 7135
diff changeset
    71
  approach to readable formal proof documents.  It sets out to bridge the
wenzelm
parents: 7135
diff changeset
    72
  semantic gap between any internal notions of proof based on primitive
wenzelm
parents: 7135
diff changeset
    73
  inferences and tactics, and an appropriate level of abstraction for
wenzelm
parents: 7135
diff changeset
    74
  user-level work.  The Isar formal proof language has been designed to
wenzelm
parents: 7135
diff changeset
    75
  satisfy quite contradictory requirements, being both ``declarative'' and
wenzelm
parents: 7135
diff changeset
    76
  immediately ``executable'', by virtue of the \emph{Isar/VM} interpreter.
wenzelm
parents: 7135
diff changeset
    77
  
10160
wenzelm
parents: 9695
diff changeset
    78
  The Isabelle/Isar system provides an interpreter for the Isar formal proof
wenzelm
parents: 9695
diff changeset
    79
  language.  The input may consist either of proper document constructors, or
wenzelm
parents: 9695
diff changeset
    80
  improper auxiliary commands (for diagnostics, exploration etc.).  Proof
wenzelm
parents: 9695
diff changeset
    81
  texts consisting of proper elements only admit a purely static reading, thus
wenzelm
parents: 9695
diff changeset
    82
  being intelligible later without requiring dynamic replay that is so typical
wenzelm
parents: 9695
diff changeset
    83
  for traditional proof scripts.  Any of the Isabelle/Isar commands may be
wenzelm
parents: 9695
diff changeset
    84
  executed in single-steps, so basically the interpreter has a proof text
wenzelm
parents: 9695
diff changeset
    85
  debugger already built-in.
7167
wenzelm
parents: 7135
diff changeset
    86
  
8509
wenzelm
parents: 7988
diff changeset
    87
  Employing the Isar instantiation of \emph{Proof~General}, a generic Emacs
wenzelm
parents: 7988
diff changeset
    88
  interface for interactive proof assistants, we arrive at a reasonable
wenzelm
parents: 7988
diff changeset
    89
  environment for \emph{live document editing}.  Thus proof texts may be
8547
wenzelm
parents: 8514
diff changeset
    90
  developed incrementally by issuing proof commands, including forward and
wenzelm
parents: 8514
diff changeset
    91
  backward tracing of partial documents; intermediate states may be inspected
wenzelm
parents: 8514
diff changeset
    92
  by diagnostic commands.
7167
wenzelm
parents: 7135
diff changeset
    93
  
7335
abba35b98892 draft release;
wenzelm
parents: 7297
diff changeset
    94
  The Isar subsystem is tightly integrated into the Isabelle/Pure meta-logic
abba35b98892 draft release;
wenzelm
parents: 7297
diff changeset
    95
  implementation.  Theories, theorems, proof procedures etc.\ may be used
7895
7c492d8bc8e3 updated;
wenzelm
parents: 7836
diff changeset
    96
  interchangeably between classic Isabelle proof scripts and Isabelle/Isar
10160
wenzelm
parents: 9695
diff changeset
    97
  documents.  Even more, Isar provides a set of emulation commands and methods
wenzelm
parents: 9695
diff changeset
    98
  for simulating traditional tactic scripts within new-style theory documents.
wenzelm
parents: 9695
diff changeset
    99
  
wenzelm
parents: 9695
diff changeset
   100
  The Isar framework is as generic as Isabelle, able to support a wide range
wenzelm
parents: 9695
diff changeset
   101
  of object-logics.  Currently, the end-user working environment is most
wenzelm
parents: 9695
diff changeset
   102
  complete for Isabelle/HOL.
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   103
\end{abstract}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   104
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   105
\pagenumbering{roman} \tableofcontents \clearfirst
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   106
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   107
%FIXME
9600
a585662e6490 some more refs;
wenzelm
parents: 9204
diff changeset
   108
\nocite{Aspinall:2000:eProof}
a585662e6490 some more refs;
wenzelm
parents: 9204
diff changeset
   109
\nocite{Bauer-Wenzel:2000:HB}
a585662e6490 some more refs;
wenzelm
parents: 9204
diff changeset
   110
\nocite{Harrison:1996:MizarHOL}
a585662e6490 some more refs;
wenzelm
parents: 9204
diff changeset
   111
\nocite{Muzalewski:Mizar}
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   112
\nocite{Rudnicki:1992:MizarOverview}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   113
\nocite{Rudnicki:1992:MizarOverview}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   114
\nocite{Syme:1997:DECLARE}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   115
\nocite{Syme:1998:thesis}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   116
\nocite{Syme:1999:TPHOL}
9600
a585662e6490 some more refs;
wenzelm
parents: 9204
diff changeset
   117
\nocite{Trybulec:1993:MizarFeatures}
a585662e6490 some more refs;
wenzelm
parents: 9204
diff changeset
   118
\nocite{Wiedijk:1999:Mizar}
a585662e6490 some more refs;
wenzelm
parents: 9204
diff changeset
   119
\nocite{Wiedijk:2000:MV}
7988
wenzelm
parents: 7981
diff changeset
   120
\nocite{Zammit:1999:TPHOL}
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   121
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   122
\include{intro}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   123
\include{basics}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   124
\include{syntax}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   125
\include{pure}
7135
wenzelm
parents: 7134
diff changeset
   126
\include{generic}
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   127
\include{hol}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   128
7895
7c492d8bc8e3 updated;
wenzelm
parents: 7836
diff changeset
   129
\appendix
7c492d8bc8e3 updated;
wenzelm
parents: 7836
diff changeset
   130
\include{refcard}
9600
a585662e6490 some more refs;
wenzelm
parents: 9204
diff changeset
   131
\include{conversion}
7895
7c492d8bc8e3 updated;
wenzelm
parents: 7836
diff changeset
   132
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   133
\begingroup
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   134
  \bibliographystyle{plain} \small\raggedright\frenchspacing
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   135
  \bibliography{../manual}
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   136
\endgroup
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   137
8828
5be2d1745c61 improved indexing;
wenzelm
parents: 8596
diff changeset
   138
\printindex
7046
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   139
9f755ff43cff skeleton only;
wenzelm
parents:
diff changeset
   140
\end{document}