doc-src/TutorialI/isabelle.sty
author chaieb
Wed, 19 May 2004 11:23:59 +0200
changeset 14758 af3b71a46a1c
parent 14732 967db86e853c
child 14981 e73f8140af78
permissions -rw-r--r--
A new implementation for presburger arithmetic following the one suggested in technical report Chaieb Amine and Tobias Nipkow. It is generic an smaller. the tactic has also changed and allows the abstaction over fuction occurences whose type is nat or int.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
     1
%%
9845
1206c7615a47 updated;
wenzelm
parents: 9812
diff changeset
     2
%% Author: Markus Wenzel, TU Muenchen
1206c7615a47 updated;
wenzelm
parents: 9812
diff changeset
     3
%% License: GPL (GNU GENERAL PUBLIC LICENSE)
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
     4
%%
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
     5
%% macros for Isabelle generated LaTeX output
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
     6
%%
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
     7
9924
3370f6aa3200 updated;
wenzelm
parents: 9845
diff changeset
     8
%%% Simple document preparation (based on theory token language and symbols)
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
     9
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    10
% isabelle environments
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    11
9924
3370f6aa3200 updated;
wenzelm
parents: 9845
diff changeset
    12
\newcommand{\isabellecontext}{UNKNOWN}
3370f6aa3200 updated;
wenzelm
parents: 9845
diff changeset
    13
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    14
\newcommand{\isastyle}{\small\tt\slshape}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    15
\newcommand{\isastyleminor}{\small\tt\slshape}
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
    16
\newcommand{\isastylescript}{\footnotesize\tt\slshape}
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    17
\newcommand{\isastyletext}{\normalsize\rm}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    18
\newcommand{\isastyletxt}{\rm}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    19
\newcommand{\isastylecmt}{\rm}
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    20
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
    21
%symbol markup -- \emph achieves decent spacing via italic corrections
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
    22
\newcommand{\isamath}[1]{\emph{$#1$}}
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
    23
\newcommand{\isatext}[1]{\emph{#1}}
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
    24
\newcommand{\isascriptstyle}{\def\isamath##1{##1}\def\isatext##1{\mbox{\isastylescript##1}}}
10267
325ead6d9457 updated;
wenzelm
parents: 10226
diff changeset
    25
\newcommand{\isactrlsub}[1]{\emph{\isascriptstyle${}\sb{#1}$}}
325ead6d9457 updated;
wenzelm
parents: 10226
diff changeset
    26
\newcommand{\isactrlsup}[1]{\emph{\isascriptstyle${}\sp{#1}$}}
14245
c0272df4775b auto update
paulson
parents: 13963
diff changeset
    27
\newcommand{\isactrlisub}[1]{\emph{\isascriptstyle${}\sb{#1}$}}
c0272df4775b auto update
paulson
parents: 13963
diff changeset
    28
\newcommand{\isactrlisup}[1]{\emph{\isascriptstyle${}\sp{#1}$}}
14732
967db86e853c auto update
paulson
parents: 14353
diff changeset
    29
\newcommand{\isactrlbsub}{\emph\bgroup\begin{math}{}\sb\bgroup\mbox\bgroup\isastylescript}
967db86e853c auto update
paulson
parents: 14353
diff changeset
    30
\newcommand{\isactrlesub}{\egroup\egroup\end{math}\egroup}
967db86e853c auto update
paulson
parents: 14353
diff changeset
    31
\newcommand{\isactrlbsup}{\emph\bgroup\begin{math}{}\sp\bgroup\mbox\bgroup\isastylescript}
967db86e853c auto update
paulson
parents: 14353
diff changeset
    32
\newcommand{\isactrlesup}{\egroup\egroup\end{math}\egroup}
11610
99103cef5f29 updated;
wenzelm
parents: 10950
diff changeset
    33
\newcommand{\isactrlbold}[1]{{\bfseries\upshape\boldmath#1}}
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
    34
14342
6e564092d72d auto update
paulson
parents: 14245
diff changeset
    35
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    36
\newdimen\isa@parindent\newdimen\isa@parskip
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    37
9717
699de91b15e2 updated;
wenzelm
parents: 9698
diff changeset
    38
\newenvironment{isabellebody}{%
11866
fbd097aec213 updated;
wenzelm
parents: 11610
diff changeset
    39
\isamarkuptrue\par%
9717
699de91b15e2 updated;
wenzelm
parents: 9698
diff changeset
    40
\isa@parindent\parindent\parindent0pt%
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    41
\isa@parskip\parskip\parskip0pt%
10471
040de0b97b72 updated;
wenzelm
parents: 10424
diff changeset
    42
\isastyle}{\par}
9717
699de91b15e2 updated;
wenzelm
parents: 9698
diff changeset
    43
699de91b15e2 updated;
wenzelm
parents: 9698
diff changeset
    44
\newenvironment{isabelle}
10424
17491b8c7732 updated;
wenzelm
parents: 10267
diff changeset
    45
{\begin{trivlist}\begin{isabellebody}\item\relax}
17491b8c7732 updated;
wenzelm
parents: 10267
diff changeset
    46
{\end{isabellebody}\end{trivlist}}
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    47
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    48
\newcommand{\isa}[1]{\emph{\isastyleminor #1}}
8771
026f37a86ea7 *** empty log message ***
nipkow
parents: 8751
diff changeset
    49
10950
aa788fcb75a5 updated;
wenzelm
parents: 10839
diff changeset
    50
\newcommand{\isaindent}[1]{\hphantom{#1}}
13963
ba7aa8c426ad new version
paulson
parents: 11866
diff changeset
    51
\newcommand{\isanewline}{\mbox{}\par\mbox{}}
14353
79f9fbef9106 Added lemmas to Ring_and_Field with slightly modified simplification rules
paulson
parents: 14342
diff changeset
    52
\newcommand{\isasep}{} % override with e.g. \renewcommand{\isasep}{\vspace{1ex}}
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    53
\newcommand{\isadigit}[1]{#1}
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    54
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    55
\chardef\isacharbang=`\!
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    56
\chardef\isachardoublequote=`\"
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    57
\chardef\isacharhash=`\#
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    58
\chardef\isachardollar=`\$
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    59
\chardef\isacharpercent=`\%
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    60
\chardef\isacharampersand=`\&
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    61
\chardef\isacharprime=`\'
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    62
\chardef\isacharparenleft=`\(
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    63
\chardef\isacharparenright=`\)
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    64
\chardef\isacharasterisk=`\*
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    65
\chardef\isacharplus=`\+
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    66
\chardef\isacharcomma=`\,
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    67
\chardef\isacharminus=`\-
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    68
\chardef\isachardot=`\.
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    69
\chardef\isacharslash=`\/
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    70
\chardef\isacharcolon=`\:
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    71
\chardef\isacharsemicolon=`\;
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    72
\chardef\isacharless=`\<
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    73
\chardef\isacharequal=`\=
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    74
\chardef\isachargreater=`\>
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    75
\chardef\isacharquery=`\?
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    76
\chardef\isacharat=`\@
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    77
\chardef\isacharbrackleft=`\[
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    78
\chardef\isacharbackslash=`\\
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    79
\chardef\isacharbrackright=`\]
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    80
\chardef\isacharcircum=`\^
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    81
\chardef\isacharunderscore=`\_
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    82
\chardef\isacharbackquote=`\`
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    83
\chardef\isacharbraceleft=`\{
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    84
\chardef\isacharbar=`\|
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    85
\chardef\isacharbraceright=`\}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    86
\chardef\isachartilde=`\~
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    87
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    88
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    89
% keyword and section markup
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    90
9717
699de91b15e2 updated;
wenzelm
parents: 9698
diff changeset
    91
\newcommand{\isakeywordcharunderscore}{\_}
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    92
\newcommand{\isakeyword}[1]
9717
699de91b15e2 updated;
wenzelm
parents: 9698
diff changeset
    93
{\emph{\bf\def\isachardot{.}\def\isacharunderscore{\isakeywordcharunderscore}%
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    94
\def\isacharbraceleft{\{}\def\isacharbraceright{\}}#1}}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
    95
\newcommand{\isacommand}[1]{\isakeyword{#1}}
8751
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    96
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    97
\newcommand{\isamarkupheader}[1]{\section{#1}}
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    98
\newcommand{\isamarkupchapter}[1]{\chapter{#1}}
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
    99
\newcommand{\isamarkupsection}[1]{\section{#1}}
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
   100
\newcommand{\isamarkupsubsection}[1]{\subsection{#1}}
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
   101
\newcommand{\isamarkupsubsubsection}[1]{\subsubsection{#1}}
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
   102
\newcommand{\isamarkupsect}[1]{\section{#1}}
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
   103
\newcommand{\isamarkupsubsect}[1]{\subsection{#1}}
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
   104
\newcommand{\isamarkupsubsubsect}[1]{\subsubsection{#1}}
9ed0548177fb *** empty log message ***
nipkow
parents:
diff changeset
   105
11866
fbd097aec213 updated;
wenzelm
parents: 11610
diff changeset
   106
\newif\ifisamarkup
fbd097aec213 updated;
wenzelm
parents: 11610
diff changeset
   107
\newcommand{\isabeginpar}{\par\ifisamarkup\relax\else\medskip\fi}
10589
b2d1b393b750 *** empty log message ***
wenzelm
parents: 10471
diff changeset
   108
\newcommand{\isaendpar}{\par\medskip}
b2d1b393b750 *** empty log message ***
wenzelm
parents: 10471
diff changeset
   109
\newenvironment{isapar}{\parindent\isa@parindent\parskip\isa@parskip\isabeginpar}{\isaendpar}
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   110
\newenvironment{isamarkuptext}{\isastyletext\begin{isapar}}{\end{isapar}}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   111
\newenvironment{isamarkuptxt}{\isastyletxt\begin{isapar}}{\end{isapar}}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   112
\newcommand{\isamarkupcmt}[1]{{\isastylecmt--- #1}}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   113
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   114
10037
0d2a6feeb634 updated;
wenzelm
parents: 9992
diff changeset
   115
% alternative styles
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   116
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   117
\newcommand{\isabellestyle}{}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   118
\def\isabellestyle#1{\csname isabellestyle#1\endcsname}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   119
10037
0d2a6feeb634 updated;
wenzelm
parents: 9992
diff changeset
   120
\newcommand{\isabellestylett}{%
0d2a6feeb634 updated;
wenzelm
parents: 9992
diff changeset
   121
\renewcommand{\isastyle}{\small\tt}%
10211
1bece7f35762 updated;
wenzelm
parents: 10132
diff changeset
   122
\renewcommand{\isastyleminor}{\small\tt}%
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   123
\renewcommand{\isastylescript}{\footnotesize\tt}%
10037
0d2a6feeb634 updated;
wenzelm
parents: 9992
diff changeset
   124
}
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   125
\newcommand{\isabellestyleit}{%
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   126
\renewcommand{\isastyle}{\small\it}%
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   127
\renewcommand{\isastyleminor}{\it}%
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   128
\renewcommand{\isastylescript}{\footnotesize\it}%
9812
87ba969d069c updated;
wenzelm
parents: 9717
diff changeset
   129
\renewcommand{\isakeywordcharunderscore}{\mbox{-}}%
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   130
\renewcommand{\isacharbang}{\isamath{!}}%
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   131
\renewcommand{\isachardoublequote}{}%
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   132
\renewcommand{\isacharhash}{\isamath{\#}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   133
\renewcommand{\isachardollar}{\isamath{\$}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   134
\renewcommand{\isacharpercent}{\isamath{\%}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   135
\renewcommand{\isacharampersand}{\isamath{\&}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   136
\renewcommand{\isacharprime}{\isamath{\mskip2mu{'}\mskip-2mu}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   137
\renewcommand{\isacharparenleft}{\isamath{(}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   138
\renewcommand{\isacharparenright}{\isamath{)}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   139
\renewcommand{\isacharasterisk}{\isamath{*}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   140
\renewcommand{\isacharplus}{\isamath{+}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   141
\renewcommand{\isacharcomma}{\isamath{\mathord,}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   142
\renewcommand{\isacharminus}{\isamath{-}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   143
\renewcommand{\isachardot}{\isamath{\mathord.}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   144
\renewcommand{\isacharslash}{\isamath{/}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   145
\renewcommand{\isacharcolon}{\isamath{\mathord:}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   146
\renewcommand{\isacharsemicolon}{\isamath{\mathord;}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   147
\renewcommand{\isacharless}{\isamath{<}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   148
\renewcommand{\isacharequal}{\isamath{=}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   149
\renewcommand{\isachargreater}{\isamath{>}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   150
\renewcommand{\isacharat}{\isamath{@}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   151
\renewcommand{\isacharbrackleft}{\isamath{[}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   152
\renewcommand{\isacharbrackright}{\isamath{]}}%
9812
87ba969d069c updated;
wenzelm
parents: 9717
diff changeset
   153
\renewcommand{\isacharunderscore}{\mbox{-}}%
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   154
\renewcommand{\isacharbraceleft}{\isamath{\{}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   155
\renewcommand{\isacharbar}{\isamath{\mid}}%
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   156
\renewcommand{\isacharbraceright}{\isamath{\}}}%
10267
325ead6d9457 updated;
wenzelm
parents: 10226
diff changeset
   157
\renewcommand{\isachartilde}{\isamath{{}\sp{\sim}}}%
9673
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   158
}
1b2d4f995b13 updated;
wenzelm
parents: 8824
diff changeset
   159
9992
4281ccea43f0 *** empty log message ***
nipkow
parents: 9924
diff changeset
   160
\newcommand{\isabellestylesl}{%
4281ccea43f0 *** empty log message ***
nipkow
parents: 9924
diff changeset
   161
\isabellestyleit%
4281ccea43f0 *** empty log message ***
nipkow
parents: 9924
diff changeset
   162
\renewcommand{\isastyle}{\small\sl}%
4281ccea43f0 *** empty log message ***
nipkow
parents: 9924
diff changeset
   163
\renewcommand{\isastyleminor}{\sl}%
10226
2c0ad01ddaf7 updated;
wenzelm
parents: 10211
diff changeset
   164
\renewcommand{\isastylescript}{\footnotesize\sl}%
9992
4281ccea43f0 *** empty log message ***
nipkow
parents: 9924
diff changeset
   165
}