doc-src/Exercises/isabelle.sty
author chaieb
Wed, 19 May 2004 11:23:59 +0200
changeset 14758 af3b71a46a1c
parent 13739 f5d0a66c8124
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:
13739
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     1
%%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     2
%% Author: Markus Wenzel, TU Muenchen
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     3
%% License: GPL (GNU GENERAL PUBLIC LICENSE)
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     4
%%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     5
%% macros for Isabelle generated LaTeX output
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     6
%%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     7
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     8
%%% Simple document preparation (based on theory token language and symbols)
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
     9
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    10
% isabelle environments
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    11
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    12
\newcommand{\isabellecontext}{UNKNOWN}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    13
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    14
\newcommand{\isastyle}{\small\tt\slshape}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    15
\newcommand{\isastyleminor}{\small\tt\slshape}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    16
\newcommand{\isastylescript}{\footnotesize\tt\slshape}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    17
\newcommand{\isastyletext}{\normalsize\rm}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    18
\newcommand{\isastyletxt}{\rm}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    19
\newcommand{\isastylecmt}{\rm}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    20
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    21
%symbol markup -- \emph achieves decent spacing via italic corrections
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    22
\newcommand{\isamath}[1]{\emph{$#1$}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    23
\newcommand{\isatext}[1]{\emph{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    24
\newcommand{\isascriptstyle}{\def\isamath##1{##1}\def\isatext##1{\mbox{\isastylescript##1}}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    25
\newcommand{\isactrlsub}[1]{\emph{\isascriptstyle${}\sb{#1}$}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    26
\newcommand{\isactrlsup}[1]{\emph{\isascriptstyle${}\sp{#1}$}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    27
\newcommand{\isactrlbold}[1]{{\bfseries\upshape\boldmath#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    28
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    29
\newdimen\isa@parindent\newdimen\isa@parskip
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    30
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    31
\newenvironment{isabellebody}{%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    32
\isamarkuptrue\par%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    33
\isa@parindent\parindent\parindent0pt%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    34
\isa@parskip\parskip\parskip0pt%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    35
\isastyle}{\par}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    36
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    37
\newenvironment{isabelle}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    38
{\begin{trivlist}\begin{isabellebody}\item\relax}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    39
{\end{isabellebody}\end{trivlist}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    40
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    41
\newcommand{\isa}[1]{\emph{\isastyleminor #1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    42
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    43
\newcommand{\isaindent}[1]{\hphantom{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    44
\newcommand{\isanewline}{\mbox{}\\\mbox{}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    45
\newcommand{\isadigit}[1]{#1}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    46
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    47
\chardef\isacharbang=`\!
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    48
\chardef\isachardoublequote=`\"
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    49
\chardef\isacharhash=`\#
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    50
\chardef\isachardollar=`\$
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    51
\chardef\isacharpercent=`\%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    52
\chardef\isacharampersand=`\&
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    53
\chardef\isacharprime=`\'
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    54
\chardef\isacharparenleft=`\(
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    55
\chardef\isacharparenright=`\)
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    56
\chardef\isacharasterisk=`\*
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    57
\chardef\isacharplus=`\+
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    58
\chardef\isacharcomma=`\,
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    59
\chardef\isacharminus=`\-
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    60
\chardef\isachardot=`\.
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    61
\chardef\isacharslash=`\/
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    62
\chardef\isacharcolon=`\:
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    63
\chardef\isacharsemicolon=`\;
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    64
\chardef\isacharless=`\<
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    65
\chardef\isacharequal=`\=
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    66
\chardef\isachargreater=`\>
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    67
\chardef\isacharquery=`\?
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    68
\chardef\isacharat=`\@
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    69
\chardef\isacharbrackleft=`\[
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    70
\chardef\isacharbackslash=`\\
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    71
\chardef\isacharbrackright=`\]
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    72
\chardef\isacharcircum=`\^
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    73
\chardef\isacharunderscore=`\_
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    74
\chardef\isacharbackquote=`\`
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    75
\chardef\isacharbraceleft=`\{
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    76
\chardef\isacharbar=`\|
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    77
\chardef\isacharbraceright=`\}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    78
\chardef\isachartilde=`\~
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    79
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    80
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    81
% keyword and section markup
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    82
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    83
\newcommand{\isakeywordcharunderscore}{\_}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    84
\newcommand{\isakeyword}[1]
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    85
{\emph{\bf\def\isachardot{.}\def\isacharunderscore{\isakeywordcharunderscore}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    86
\def\isacharbraceleft{\{}\def\isacharbraceright{\}}#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    87
\newcommand{\isacommand}[1]{\isakeyword{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    88
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    89
\newcommand{\isamarkupheader}[1]{\section{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    90
\newcommand{\isamarkupchapter}[1]{\chapter{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    91
\newcommand{\isamarkupsection}[1]{\section{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    92
\newcommand{\isamarkupsubsection}[1]{\subsection{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    93
\newcommand{\isamarkupsubsubsection}[1]{\subsubsection{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    94
\newcommand{\isamarkupsect}[1]{\section{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    95
\newcommand{\isamarkupsubsect}[1]{\subsection{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    96
\newcommand{\isamarkupsubsubsect}[1]{\subsubsection{#1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    97
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    98
\newif\ifisamarkup
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
    99
\newcommand{\isabeginpar}{\par\ifisamarkup\relax\else\medskip\fi}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   100
\newcommand{\isaendpar}{\par\medskip}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   101
\newenvironment{isapar}{\parindent\isa@parindent\parskip\isa@parskip\isabeginpar}{\isaendpar}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   102
\newenvironment{isamarkuptext}{\isastyletext\begin{isapar}}{\end{isapar}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   103
\newenvironment{isamarkuptxt}{\isastyletxt\begin{isapar}}{\end{isapar}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   104
\newcommand{\isamarkupcmt}[1]{{\isastylecmt--- #1}}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   105
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   106
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   107
% alternative styles
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   108
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   109
\newcommand{\isabellestyle}{}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   110
\def\isabellestyle#1{\csname isabellestyle#1\endcsname}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   111
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   112
\newcommand{\isabellestylett}{%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   113
\renewcommand{\isastyle}{\small\tt}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   114
\renewcommand{\isastyleminor}{\small\tt}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   115
\renewcommand{\isastylescript}{\footnotesize\tt}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   116
}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   117
\newcommand{\isabellestyleit}{%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   118
\renewcommand{\isastyle}{\small\it}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   119
\renewcommand{\isastyleminor}{\it}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   120
\renewcommand{\isastylescript}{\footnotesize\it}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   121
\renewcommand{\isakeywordcharunderscore}{\mbox{-}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   122
\renewcommand{\isacharbang}{\isamath{!}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   123
\renewcommand{\isachardoublequote}{}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   124
\renewcommand{\isacharhash}{\isamath{\#}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   125
\renewcommand{\isachardollar}{\isamath{\$}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   126
\renewcommand{\isacharpercent}{\isamath{\%}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   127
\renewcommand{\isacharampersand}{\isamath{\&}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   128
\renewcommand{\isacharprime}{\isamath{\mskip2mu{'}\mskip-2mu}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   129
\renewcommand{\isacharparenleft}{\isamath{(}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   130
\renewcommand{\isacharparenright}{\isamath{)}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   131
\renewcommand{\isacharasterisk}{\isamath{*}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   132
\renewcommand{\isacharplus}{\isamath{+}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   133
\renewcommand{\isacharcomma}{\isamath{\mathord,}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   134
\renewcommand{\isacharminus}{\isamath{-}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   135
\renewcommand{\isachardot}{\isamath{\mathord.}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   136
\renewcommand{\isacharslash}{\isamath{/}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   137
\renewcommand{\isacharcolon}{\isamath{\mathord:}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   138
\renewcommand{\isacharsemicolon}{\isamath{\mathord;}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   139
\renewcommand{\isacharless}{\isamath{<}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   140
\renewcommand{\isacharequal}{\isamath{=}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   141
\renewcommand{\isachargreater}{\isamath{>}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   142
\renewcommand{\isacharat}{\isamath{@}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   143
\renewcommand{\isacharbrackleft}{\isamath{[}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   144
\renewcommand{\isacharbrackright}{\isamath{]}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   145
\renewcommand{\isacharunderscore}{\mbox{-}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   146
\renewcommand{\isacharbraceleft}{\isamath{\{}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   147
\renewcommand{\isacharbar}{\isamath{\mid}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   148
\renewcommand{\isacharbraceright}{\isamath{\}}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   149
\renewcommand{\isachartilde}{\isamath{{}\sp{\sim}}}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   150
}
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   151
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   152
\newcommand{\isabellestylesl}{%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   153
\isabellestyleit%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   154
\renewcommand{\isastyle}{\small\sl}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   155
\renewcommand{\isastyleminor}{\sl}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   156
\renewcommand{\isastylescript}{\footnotesize\sl}%
f5d0a66c8124 exercise collection
kleing
parents:
diff changeset
   157
}