doc-src/IsarRef/generic.tex
author wenzelm
Wed, 04 Aug 1999 18:20:24 +0200
changeset 7175 8263d0b50e12
parent 7167 0b2e3ef1d8f4
child 7315 76a39a3784b5
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7135
wenzelm
parents:
diff changeset
     1
7167
wenzelm
parents: 7141
diff changeset
     2
\chapter{Generic Tools and Packages}\label{ch:gen-tools}
wenzelm
parents: 7141
diff changeset
     3
wenzelm
parents: 7141
diff changeset
     4
\section{Basic proof methods and attributes}\label{sec:pure-meth}
wenzelm
parents: 7141
diff changeset
     5
wenzelm
parents: 7141
diff changeset
     6
\indexisarmeth{fail}\indexisarmeth{succeed}\indexisarmeth{$-$}\indexisarmeth{assumption}
wenzelm
parents: 7141
diff changeset
     7
\indexisarmeth{finish}\indexisarmeth{fold}\indexisarmeth{unfold}
wenzelm
parents: 7141
diff changeset
     8
\indexisarmeth{rule}\indexisarmeth{erule}
wenzelm
parents: 7141
diff changeset
     9
\begin{matharray}{rcl}
wenzelm
parents: 7141
diff changeset
    10
  fail & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    11
  succeed & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    12
  - & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    13
  assumption & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    14
  finish & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    15
  fold & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    16
  unfold & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    17
  rule & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    18
  erule^* & : & \isarmeth \\
wenzelm
parents: 7141
diff changeset
    19
\end{matharray}
wenzelm
parents: 7141
diff changeset
    20
wenzelm
parents: 7141
diff changeset
    21
\begin{rail}
wenzelm
parents: 7141
diff changeset
    22
  ('fold' | 'unfold' | 'rule' | 'erule') thmrefs
wenzelm
parents: 7141
diff changeset
    23
  ;
wenzelm
parents: 7141
diff changeset
    24
\end{rail}
wenzelm
parents: 7141
diff changeset
    25
wenzelm
parents: 7141
diff changeset
    26
\begin{descr}
wenzelm
parents: 7141
diff changeset
    27
\item [$ $]
wenzelm
parents: 7141
diff changeset
    28
\end{descr}
wenzelm
parents: 7141
diff changeset
    29
wenzelm
parents: 7141
diff changeset
    30
FIXME
wenzelm
parents: 7141
diff changeset
    31
wenzelm
parents: 7141
diff changeset
    32
%FIXME sort
wenzelm
parents: 7141
diff changeset
    33
%FIXME thmref (single)
wenzelm
parents: 7141
diff changeset
    34
%FIXME var vs. term
wenzelm
parents: 7141
diff changeset
    35
wenzelm
parents: 7141
diff changeset
    36
\indexisaratt{tag}\indexisaratt{untag}\indexisaratt{COMP}\indexisaratt{RS}
wenzelm
parents: 7141
diff changeset
    37
\indexisaratt{OF}\indexisaratt{where}\indexisaratt{of}\indexisaratt{standard}
wenzelm
parents: 7141
diff changeset
    38
\indexisaratt{elimify}\indexisaratt{transfer}\indexisaratt{export}
wenzelm
parents: 7141
diff changeset
    39
\begin{matharray}{rcl}
wenzelm
parents: 7141
diff changeset
    40
  tag & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    41
  untag & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    42
  COMP & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    43
  RS & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    44
  OF & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    45
  where & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    46
  of & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    47
  standard & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    48
  elimify & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    49
  transfer & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    50
  export & : & \isaratt \\
wenzelm
parents: 7141
diff changeset
    51
\end{matharray}
wenzelm
parents: 7141
diff changeset
    52
wenzelm
parents: 7141
diff changeset
    53
\begin{rail}
wenzelm
parents: 7141
diff changeset
    54
  ('tag' | 'untag') (nameref+)
wenzelm
parents: 7141
diff changeset
    55
  ;
7175
wenzelm
parents: 7167
diff changeset
    56
\end{rail}
wenzelm
parents: 7167
diff changeset
    57
wenzelm
parents: 7167
diff changeset
    58
\begin{rail}
7167
wenzelm
parents: 7141
diff changeset
    59
  ('COMP' | 'RS') nat? thmref
wenzelm
parents: 7141
diff changeset
    60
  ;
wenzelm
parents: 7141
diff changeset
    61
  'OF' thmrefs
wenzelm
parents: 7141
diff changeset
    62
  ;
7175
wenzelm
parents: 7167
diff changeset
    63
\end{rail}
wenzelm
parents: 7167
diff changeset
    64
wenzelm
parents: 7167
diff changeset
    65
\begin{rail}
wenzelm
parents: 7167
diff changeset
    66
  'where' (name '=' term * 'and')
7167
wenzelm
parents: 7141
diff changeset
    67
  ;
7175
wenzelm
parents: 7167
diff changeset
    68
  'of' (inst * ) ('concl' ':' (inst * ))?
7167
wenzelm
parents: 7141
diff changeset
    69
  ;
wenzelm
parents: 7141
diff changeset
    70
wenzelm
parents: 7141
diff changeset
    71
  inst: underscore | term
wenzelm
parents: 7141
diff changeset
    72
  ;
wenzelm
parents: 7141
diff changeset
    73
\end{rail}
wenzelm
parents: 7141
diff changeset
    74
wenzelm
parents: 7141
diff changeset
    75
\begin{descr}
wenzelm
parents: 7141
diff changeset
    76
\item [$ $]
wenzelm
parents: 7141
diff changeset
    77
\end{descr}
wenzelm
parents: 7141
diff changeset
    78
wenzelm
parents: 7141
diff changeset
    79
FIXME
7135
wenzelm
parents:
diff changeset
    80
wenzelm
parents:
diff changeset
    81
\section{Axiomatic Type Classes}\label{sec:axclass}
wenzelm
parents:
diff changeset
    82
wenzelm
parents:
diff changeset
    83
\indexisarcmd{axclass}\indexisarcmd{instance}
wenzelm
parents:
diff changeset
    84
\begin{matharray}{rcl}
wenzelm
parents:
diff changeset
    85
  \isarcmd{axclass} & : & \isartrans{theory}{theory} \\
wenzelm
parents:
diff changeset
    86
  \isarcmd{instance} & : & \isartrans{theory}{proof(prove)} \\
wenzelm
parents:
diff changeset
    87
\end{matharray}
wenzelm
parents:
diff changeset
    88
wenzelm
parents:
diff changeset
    89
Axiomatic type classes are provided by Isabelle/Pure as a purely
wenzelm
parents:
diff changeset
    90
\emph{definitional} interface to type classes (cf.~\S\ref{sec:classes}).  Thus
wenzelm
parents:
diff changeset
    91
any object logic may make use of this light-weight mechanism for abstract
wenzelm
parents:
diff changeset
    92
theories.  See \cite{Wenzel:1997:TPHOL} for more information.  There is also a
wenzelm
parents:
diff changeset
    93
tutorial on \emph{Using Axiomatic Type Classes in Isabelle} that is part of
wenzelm
parents:
diff changeset
    94
the standard Isabelle documentation.
wenzelm
parents:
diff changeset
    95
wenzelm
parents:
diff changeset
    96
\begin{rail}
wenzelm
parents:
diff changeset
    97
  'axclass' classdecl (axmdecl prop comment? +)
wenzelm
parents:
diff changeset
    98
  ;
wenzelm
parents:
diff changeset
    99
  'instance' (nameref '<' nameref | nameref '::' simplearity) comment?
wenzelm
parents:
diff changeset
   100
  ;
wenzelm
parents:
diff changeset
   101
\end{rail}
wenzelm
parents:
diff changeset
   102
7167
wenzelm
parents: 7141
diff changeset
   103
\begin{descr}
7135
wenzelm
parents:
diff changeset
   104
\item [$\isarkeyword{axclass}~$] FIXME
wenzelm
parents:
diff changeset
   105
\item [$\isarkeyword{instance}~c@1 < c@2$ and $\isarkeyword{instance}~c@1 <
wenzelm
parents:
diff changeset
   106
  c@2$] setup up a goal stating the class relation or type arity.  The proof
wenzelm
parents:
diff changeset
   107
  would usually proceed by the $expand_classes$ method, and then establish the
7141
a67dde8820c0 even more stuff;
wenzelm
parents: 7135
diff changeset
   108
  characteristic theorems of the type classes involved.  After finishing the
a67dde8820c0 even more stuff;
wenzelm
parents: 7135
diff changeset
   109
  proof the theory will be augmented by a type signature declaration
7135
wenzelm
parents:
diff changeset
   110
  corresponding to the resulting theorem.
7167
wenzelm
parents: 7141
diff changeset
   111
\end{descr}
7135
wenzelm
parents:
diff changeset
   112
wenzelm
parents:
diff changeset
   113
wenzelm
parents:
diff changeset
   114
wenzelm
parents:
diff changeset
   115
\section{The Simplifier}
wenzelm
parents:
diff changeset
   116
wenzelm
parents:
diff changeset
   117
\section{The Classical Reasoner}
wenzelm
parents:
diff changeset
   118
wenzelm
parents:
diff changeset
   119
wenzelm
parents:
diff changeset
   120
%\indexisarcmd{}
wenzelm
parents:
diff changeset
   121
%\begin{matharray}{rcl}
wenzelm
parents:
diff changeset
   122
%  \isarcmd{} & : & \isartrans{}{} \\
wenzelm
parents:
diff changeset
   123
%\end{matharray}
wenzelm
parents:
diff changeset
   124
wenzelm
parents:
diff changeset
   125
%\begin{rail}
wenzelm
parents:
diff changeset
   126
  
wenzelm
parents:
diff changeset
   127
%\end{rail}
wenzelm
parents:
diff changeset
   128
7167
wenzelm
parents: 7141
diff changeset
   129
%\begin{descr}
7135
wenzelm
parents:
diff changeset
   130
%\item [$ $]
7167
wenzelm
parents: 7141
diff changeset
   131
%\end{descr}
7135
wenzelm
parents:
diff changeset
   132
wenzelm
parents:
diff changeset
   133
wenzelm
parents:
diff changeset
   134
%%% Local Variables: 
wenzelm
parents:
diff changeset
   135
%%% mode: latex
wenzelm
parents:
diff changeset
   136
%%% TeX-master: "isar-ref"
wenzelm
parents:
diff changeset
   137
%%% End: