equal
deleted
inserted
replaced
152 |
152 |
153 \indexisarcmd{axclass}\indexisarcmd{instance} |
153 \indexisarcmd{axclass}\indexisarcmd{instance} |
154 \begin{matharray}{rcl} |
154 \begin{matharray}{rcl} |
155 \isarcmd{axclass} & : & \isartrans{theory}{theory} \\ |
155 \isarcmd{axclass} & : & \isartrans{theory}{theory} \\ |
156 \isarcmd{instance} & : & \isartrans{theory}{proof(prove)} \\ |
156 \isarcmd{instance} & : & \isartrans{theory}{proof(prove)} \\ |
|
157 expand_classes & : & \isarmeth \\ |
157 \end{matharray} |
158 \end{matharray} |
158 |
159 |
159 Axiomatic type classes are provided by Isabelle/Pure as a purely |
160 Axiomatic type classes are provided by Isabelle/Pure as a purely |
160 \emph{definitional} interface to type classes (cf.~\S\ref{sec:classes}). Thus |
161 \emph{definitional} interface to type classes (cf.~\S\ref{sec:classes}). Thus |
161 any object logic may make use of this light-weight mechanism for abstract |
162 any object logic may make use of this light-weight mechanism for abstract |
176 c@2$] setup up a goal stating the class relation or type arity. The proof |
177 c@2$] setup up a goal stating the class relation or type arity. The proof |
177 would usually proceed by the $expand_classes$ method, and then establish the |
178 would usually proceed by the $expand_classes$ method, and then establish the |
178 characteristic theorems of the type classes involved. After finishing the |
179 characteristic theorems of the type classes involved. After finishing the |
179 proof the theory will be augmented by a type signature declaration |
180 proof the theory will be augmented by a type signature declaration |
180 corresponding to the resulting theorem. |
181 corresponding to the resulting theorem. |
181 \end{descr} |
182 \item [Method $expand_classes$] iteratively expands the class introduction |
182 |
183 rules |
|
184 \end{descr} |
|
185 |
|
186 See theory \texttt{HOL/Isar_examples/Group} for a simple example of using |
|
187 axiomatic type classes, including instantiation proofs. |
183 |
188 |
184 |
189 |
185 \section{The Simplifier} |
190 \section{The Simplifier} |
186 |
191 |
187 \subsection{Simplification methods} |
192 \subsection{Simplification methods} |
192 asm_simp & : & \isarmeth \\ |
197 asm_simp & : & \isarmeth \\ |
193 simp & : & \isaratt \\ |
198 simp & : & \isaratt \\ |
194 \end{matharray} |
199 \end{matharray} |
195 |
200 |
196 \begin{rail} |
201 \begin{rail} |
197 'simp' (simpmod+)? |
202 'simp' (simpmod * ) |
198 ; |
203 ; |
199 |
204 |
200 simpmod: ('add' | 'del' | 'only' | 'other') ':' thmrefs |
205 simpmod: ('add' | 'del' | 'only' | 'other') ':' thmrefs |
201 ; |
206 ; |
202 \end{rail} |
207 \end{rail} |
|
208 |
|
209 FIXME |
203 |
210 |
204 |
211 |
205 \subsection{Forward simplification} |
212 \subsection{Forward simplification} |
206 |
213 |
207 \indexisaratt{simplify}\indexisaratt{asm_simplify}\indexisaratt{full_simplify}\indexisaratt{asm_full_simplify} |
214 \indexisaratt{simplify}\indexisaratt{asm_simplify}\indexisaratt{full_simplify}\indexisaratt{asm_full_simplify} |