equal
deleted
inserted
replaced
22 also declares type arity $t :: (term, \dots, term) term$, making $t$ an |
22 also declares type arity $t :: (term, \dots, term) term$, making $t$ an |
23 actual HOL type constructor. |
23 actual HOL type constructor. |
24 \item [$\isarkeyword{typedef}~(\vec\alpha)t = A$] sets up a goal stating |
24 \item [$\isarkeyword{typedef}~(\vec\alpha)t = A$] sets up a goal stating |
25 non-emptiness of the set $A$. After finishing the proof, the theory will be |
25 non-emptiness of the set $A$. After finishing the proof, the theory will be |
26 augmented by a Gordon/HOL-style type definition. See \cite{isabelle-HOL} |
26 augmented by a Gordon/HOL-style type definition. See \cite{isabelle-HOL} |
27 for more information. Note that user-level work usually does not directly |
27 for more information. Note that user-level theories usually do not directly |
28 refer to the HOL $\isarkeyword{typedef}$ primitive, but uses more advanced |
28 refer to the HOL $\isarkeyword{typedef}$ primitive, but use more advanced |
29 packages such as $\isarkeyword{record}$ (see \S\ref{sec:record}) or |
29 packages such as $\isarkeyword{record}$ (see \S\ref{sec:record}) and |
30 $\isarkeyword{datatype}$ (see \S\ref{sec:datatype}). |
30 $\isarkeyword{datatype}$ (see \S\ref{sec:datatype}). |
31 \end{descr} |
31 \end{descr} |
32 |
32 |
33 |
33 |
34 \section{Records}\label{sec:record} |
34 \section{Records}\label{sec:record} |
49 |
49 |
50 \begin{descr} |
50 \begin{descr} |
51 \item [$\isarkeyword{record}~(\vec\alpha)t = \tau + \vec c :: \vec\sigma$] |
51 \item [$\isarkeyword{record}~(\vec\alpha)t = \tau + \vec c :: \vec\sigma$] |
52 defines extensible record type $(\vec\alpha)t$, derived from the optional |
52 defines extensible record type $(\vec\alpha)t$, derived from the optional |
53 parent record $\tau$ by adding new field components $\vec c :: \vec\sigma$. |
53 parent record $\tau$ by adding new field components $\vec c :: \vec\sigma$. |
|
54 See \cite{isabelle-HOL,NaraschewskiW-TPHOLs98} for more information only |
|
55 simply-typed extensible records. |
54 \end{descr} |
56 \end{descr} |
55 |
|
56 See \cite{isabelle-HOL,NaraschewskiW-TPHOLs98} for more information only |
|
57 simply-typed extensible records. |
|
58 |
57 |
59 |
58 |
60 \section{Datatypes}\label{sec:datatype} |
59 \section{Datatypes}\label{sec:datatype} |
61 |
60 |
62 \indexisarcmd{datatype}\indexisarcmd{rep-datatype} |
61 \indexisarcmd{datatype}\indexisarcmd{rep-datatype} |
84 ones, generating the standard infrastructure of derived concepts (primitive |
83 ones, generating the standard infrastructure of derived concepts (primitive |
85 recursion etc.). |
84 recursion etc.). |
86 \end{descr} |
85 \end{descr} |
87 |
86 |
88 See \cite{isabelle-HOL} for more details on datatypes. Note that the theory |
87 See \cite{isabelle-HOL} for more details on datatypes. Note that the theory |
89 syntax above has been slightly simplified over the old version. |
88 syntax above has been slightly simplified over the old version, usually |
|
89 requiring more quotes and less parentheses. |
90 |
90 |
91 |
91 |
92 \section{Recursive functions} |
92 \section{Recursive functions} |
93 |
93 |
94 \indexisarcmd{primrec}\indexisarcmd{recdef} |
94 \indexisarcmd{primrec}\indexisarcmd{recdef} |
111 datatypes. |
111 datatypes. |
112 \item [$\isarkeyword{recdef}$] defines general well-founded recursive |
112 \item [$\isarkeyword{recdef}$] defines general well-founded recursive |
113 functions (using the TFL package). |
113 functions (using the TFL package). |
114 \end{descr} |
114 \end{descr} |
115 |
115 |
116 See \cite{isabelle-HOL} for more information. |
116 See \cite{isabelle-HOL} for more information on both mechanisms. |
117 |
117 |
118 |
118 |
119 \section{(Co)Inductive sets} |
119 \section{(Co)Inductive sets} |
120 |
120 |
121 \indexisarcmd{inductive}\indexisarcmd{coinductive}\indexisarcmd{inductive-cases} |
121 \indexisarcmd{inductive}\indexisarcmd{coinductive}\indexisarcmd{inductive-cases} |
176 \item [$induct~insts~kind$] abbreviates method $rule~R$, where $R$ is the |
176 \item [$induct~insts~kind$] abbreviates method $rule~R$, where $R$ is the |
177 induction rule of the type/set/function specified by $kind$ and instantiated |
177 induction rule of the type/set/function specified by $kind$ and instantiated |
178 by $insts$. The latter either consists of pairs $P$ $x$ (induction |
178 by $insts$. The latter either consists of pairs $P$ $x$ (induction |
179 predicate and variable), where $P$ is optional. If $kind$ is omitted, the |
179 predicate and variable), where $P$ is optional. If $kind$ is omitted, the |
180 default is to pick a datatype induction rule according to the type of some |
180 default is to pick a datatype induction rule according to the type of some |
181 induction variable (at least one has to be given in that case). |
181 induction variable, which may not be omitted that case. |
182 \end{descr} |
182 \end{descr} |
183 |
183 |
184 |
184 |
185 %%% Local Variables: |
185 %%% Local Variables: |
186 %%% mode: latex |
186 %%% mode: latex |