35 INCOMPATIBILITY, need to adapt derivative scripts. Users may need to |
31 INCOMPATIBILITY, need to adapt derivative scripts. Users may need to |
36 purge installed copies of Isabelle executables and re-run "isabelle |
32 purge installed copies of Isabelle executables and re-run "isabelle |
37 install -p ...", or use symlinks. |
33 install -p ...", or use symlinks. |
38 |
34 |
39 * The default for ISABELLE_HOME_USER is now ~/.isabelle instead of the |
35 * The default for ISABELLE_HOME_USER is now ~/.isabelle instead of the |
40 old ~/isabelle, which was slightly non-standard and apt cause |
36 old ~/isabelle, which was slightly non-standard and apt to cause |
41 surprises on case-insensitive file-systems. |
37 surprises on case-insensitive file-systems (such as Mac OS). |
42 |
38 |
43 INCOMPATIBILITY, need to move existing ~/isabelle/etc, |
39 INCOMPATIBILITY, need to move existing ~/isabelle/etc, |
44 ~/isabelle/heaps, ~/isabelle/browser_info to the new place. Special |
40 ~/isabelle/heaps, ~/isabelle/browser_info to the new place. Special |
45 care is required when using older releases of Isabelle. Note that |
41 care is required when using older releases of Isabelle. Note that |
46 ISABELLE_HOME_USER can be changed in Isabelle/etc/settings of any |
42 ISABELLE_HOME_USER can be changed in Isabelle/etc/settings of any |
47 Isabelle distribution. |
43 Isabelle distribution, in order to use the new ~/.isabelle uniformly. |
48 |
44 |
49 * Proofs of fully specified statements are run in parallel on |
45 * Proofs of fully specified statements are run in parallel on |
50 multi-core systems. A speedup factor of 2-3 can be expected on a |
46 multi-core systems. A speedup factor of 2.5 to 3.2 can be expected on |
51 regular 4-core machine, if the initial heap space is made reasonably |
47 a regular 4-core machine, if the initial heap space is made reasonably |
52 large (cf. Poly/ML option -H). [Poly/ML 5.2.1 or later] |
48 large (cf. Poly/ML option -H). (Requires Poly/ML 5.2.1 or later.) |
53 |
49 |
54 * Generalized Isar history, with support for linear undo, direct state |
50 * The main reference manuals ("isar-ref", "implementation", and |
55 addressing etc. |
51 "system") have been updated and extended. Formally checked references |
56 |
52 as hyperlinks are now available uniformly. |
57 * Recovered hiding of consts, which was accidentally broken in |
53 |
58 Isabelle2007. Potential INCOMPATIBILITY, ``hide const c'' really |
|
59 makes c inaccessible; consider using ``hide (open) const c'' instead. |
|
60 |
|
61 * Removed exotic 'token_translation' command. INCOMPATIBILITY, use ML |
|
62 interface instead. |
|
63 |
|
64 * There is a new syntactic category "float_const" for signed decimal |
|
65 fractions (e.g. 123.45 or -123.45). |
|
66 |
|
67 * New prover for coherent logic (see src/Tools/coherent.ML). |
|
68 |
54 |
69 |
55 |
70 *** Pure *** |
56 *** Pure *** |
71 |
57 |
72 * Class declaration: sc. "base sort" must not be given in import list |
58 * Complete re-implementation of locales. INCOMPATIBILITY in several |
73 any longer but is inferred from the specification. Particularly in HOL, |
59 respects. The most important changes are listed below. See the |
74 write |
60 Tutorial on Locales ("locales" manual) for details. |
75 |
61 |
76 class foo = ... instead of class foo = type + ... |
62 - In locale expressions, instantiation replaces renaming. Parameters |
77 |
63 must be declared in a for clause. To aid compatibility with previous |
78 * Module moves in repository: |
64 parameter inheritance, in locale declarations, parameters that are not |
79 src/Pure/Tools/value.ML ~> src/Tools/ |
65 'touched' (instantiation position "_" or omitted) are implicitly added |
80 src/Pure/Tools/quickcheck.ML ~> src/Tools/ |
66 with their syntax at the beginning of the for clause. |
81 |
67 |
82 * Slightly more coherent Pure syntax, with updated documentation in |
68 - Syntax from abbreviations and definitions in locales is available in |
83 isar-ref manual. Removed locales meta_term_syntax and |
69 locale expressions and context elements. The latter is particularly |
84 meta_conjunction_syntax: TERM and &&& (formerly &&) are now permanent, |
70 useful in locale declarations. |
85 INCOMPATIBILITY in rare situations. |
71 |
86 |
72 - More flexible mechanisms to qualify names generated by locale |
87 * Goal-directed proof now enforces strict proof irrelevance wrt. sort |
73 expressions. Qualifiers (prefixes) may be specified in locale |
88 hypotheses. Sorts required in the course of reasoning need to be |
74 expressions, and can be marked as mandatory (syntax: "name!:") or |
89 covered by the constraints in the initial statement, completed by the |
75 optional (syntax "name?:"). The default depends for plain "name:" |
90 type instance information of the background theory. Non-trivial sort |
76 depends on the situation where a locale expression is used: in |
91 hypotheses, which rarely occur in practice, may be specified via |
77 commands 'locale' and 'sublocale' prefixes are optional, in |
92 vacuous propositions of the form SORT_CONSTRAINT('a::c). For example: |
78 'interpretation' and 'interpret' prefixes are mandatory. The old |
93 |
79 implicit qualifiers derived from the parameter names of a locale are |
94 lemma assumes "SORT_CONSTRAINT('a::empty)" shows False ... |
80 no longer generated. |
95 |
81 |
96 The result contains an implicit sort hypotheses as before -- |
82 - Command "sublocale l < e" replaces "interpretation l < e". The |
97 SORT_CONSTRAINT premises are eliminated as part of the canonical rule |
83 instantiation clause in "interpretation" and "interpret" (square |
98 normalization. |
84 brackets) is no longer available. Use locale expressions. |
99 |
85 |
100 * Changed defaults for unify configuration options: |
86 - When converting proof scripts, mandatory qualifiers in |
101 |
87 'interpretation' and 'interpret' should be retained by default, even |
102 unify_trace_bound = 50 (formerly 25) |
88 if this is an INCOMPATIBILITY compared to former behavior. In the |
103 unify_search_bound = 60 (formerly 30) |
89 worst case, use the "name?:" form for non-mandatory ones. Qualifiers |
104 |
90 in locale expressions range over a single locale instance only. |
105 * Different bookkeeping for code equations (INCOMPATIBILITY): |
91 |
106 |
92 - Dropped locale element "includes". This is a major INCOMPATIBILITY. |
107 a) On theory merge, the last set of code equations for a particular |
|
108 constant is taken (in accordance with the policy applied by other |
|
109 parts of the code generator framework). |
|
110 |
|
111 b) Code equations stemming from explicit declarations (e.g. code |
|
112 attribute) gain priority over default code equations stemming |
|
113 from definition, primrec, fun etc. |
|
114 |
|
115 * Global versions of theorems stemming from classes do not carry a |
|
116 parameter prefix any longer. INCOMPATIBILITY. |
|
117 |
|
118 * Dropped locale element "includes". This is a major INCOMPATIBILITY. |
|
119 In existing theorem specifications replace the includes element by the |
93 In existing theorem specifications replace the includes element by the |
120 respective context elements of the included locale, omitting those |
94 respective context elements of the included locale, omitting those |
121 that are already present in the theorem specification. Multiple |
95 that are already present in the theorem specification. Multiple |
122 assume elements of a locale should be replaced by a single one |
96 assume elements of a locale should be replaced by a single one |
123 involving the locale predicate. In the proof body, declarations (most |
97 involving the locale predicate. In the proof body, declarations (most |
127 If using "includes" in replacement of a target solely because the |
101 If using "includes" in replacement of a target solely because the |
128 parameter types in the theorem are not as general as in the target, |
102 parameter types in the theorem are not as general as in the target, |
129 consider declaring a new locale with additional type constraints on |
103 consider declaring a new locale with additional type constraints on |
130 the parameters (context element "constrains"). |
104 the parameters (context element "constrains"). |
131 |
105 |
132 * Dropped "locale (open)". INCOMPATIBILITY. |
106 - Discontinued "locale (open)". INCOMPATIBILITY. |
133 |
107 |
134 * Interpretation commands no longer attempt to simplify goal. |
108 - Locale interpretation commands no longer attempt to simplify goal. |
135 INCOMPATIBILITY: in rare situations the generated goal differs. Use |
109 INCOMPATIBILITY: in rare situations the generated goal differs. Use |
136 methods intro_locales and unfold_locales to clarify. |
110 methods intro_locales and unfold_locales to clarify. |
137 |
111 |
138 * Interpretation commands no longer accept interpretation attributes. |
112 - Locale interpretation commands no longer accept interpretation |
139 INCOMPATBILITY. |
113 attributes. INCOMPATIBILITY. |
140 |
114 |
141 * Complete re-implementation of locales. INCOMPATIBILITY. The most |
115 * Class declaration: so-called "base sort" must not be given in import |
142 important changes are listed below. See the Tutorial on Locales for |
116 list any longer, but is inferred from the specification. Particularly |
143 details. |
117 in HOL, write |
144 |
118 |
145 - In locale expressions, instantiation replaces renaming. Parameters |
119 class foo = ... |
146 must be declared in a for clause. To aid compatibility with previous |
120 |
147 parameter inheritance, in locale declarations, parameters that are not |
121 instead of |
148 'touched' (instantiation position "_" or omitted) are implicitly added |
122 |
149 with their syntax at the beginning of the for clause. |
123 class foo = type + ... |
150 |
124 |
151 - Syntax from abbreviations and definitions in locales is available in |
125 * Class target: global versions of theorems stemming do not carry a |
152 locale expressions and context elements. The latter is particularly |
126 parameter prefix any longer. INCOMPATIBILITY. |
153 useful in locale declarations. |
127 |
154 |
128 * Class 'instance' command no longer accepts attached definitions. |
155 - More flexible mechanisms to qualify names generated by locale |
129 INCOMPATIBILITY, use proper 'instantiation' target instead. |
156 expressions. Qualifiers (prefixes) may be specified in locale |
130 |
157 expressions, and can be marked as mandatory (syntax: "name!:") or |
131 * Recovered hiding of consts, which was accidentally broken in |
158 optional (syntax "name?:"). The default depends for plain "name:" |
132 Isabelle2007. Potential INCOMPATIBILITY, ``hide const c'' really |
159 depends on the situation where a locale expression is used: in |
133 makes c inaccessible; consider using ``hide (open) const c'' instead. |
160 commands 'locale' and 'sublocale' prefixes are optional, in |
134 |
161 'interpretation' and 'interpret' prefixes are mandatory. Old-style |
135 * Slightly more coherent Pure syntax, with updated documentation in |
162 implicit qualifiers derived from the parameter names of a locale are |
136 isar-ref manual. Removed locales meta_term_syntax and |
163 no longer generated. |
137 meta_conjunction_syntax: TERM and &&& (formerly &&) are now permanent, |
164 |
138 INCOMPATIBILITY in rare situations. Note that &&& should not be used |
165 - "sublocale l < e" replaces "interpretation l < e". The |
139 directly in regular applications. |
166 instantiation clause in "interpretation" and "interpret" (square |
140 |
167 brackets) is no longer available. Use locale expressions. |
141 * There is a new syntactic category "float_const" for signed decimal |
168 |
142 fractions (e.g. 123.45 or -123.45). |
169 - When converting proof scripts, be sure to mandatory qualifiers in |
143 |
170 'interpretation' and 'interpret' should be retained by default, even |
144 * Removed exotic 'token_translation' command. INCOMPATIBILITY, use ML |
171 if this is an INCOMPATIBILITY compared to former behaviour. |
145 interface with 'setup' command instead. |
172 Qualifiers in locale expressions range over a single locale instance |
146 |
173 only. |
147 * Command 'local_setup' is similar to 'setup', but operates on a local |
174 |
148 theory context. |
175 * Command 'instance': attached definitions no longer accepted. |
|
176 INCOMPATIBILITY, use proper 'instantiation' target. |
|
177 |
|
178 * Keyword 'code_exception' now named 'code_abort'. INCOMPATIBILITY. |
|
179 |
149 |
180 * The 'axiomatization' command now only works within a global theory |
150 * The 'axiomatization' command now only works within a global theory |
181 context. INCOMPATIBILITY. |
151 context. INCOMPATIBILITY. |
182 |
152 |
183 * New 'find_theorems' criterion "solves" matching theorems that |
153 * Goal-directed proof now enforces strict proof irrelevance wrt. sort |
184 directly solve the current goal. |
154 hypotheses. Sorts required in the course of reasoning need to be |
185 |
155 covered by the constraints in the initial statement, completed by the |
186 * Auto solve feature for main theorem statements (cf. option in Proof |
156 type instance information of the background theory. Non-trivial sort |
187 General Isabelle settings menu, disabled by default). Whenever a new |
157 hypotheses, which rarely occur in practice, may be specified via |
188 goal is stated, "find_theorems solves" is called; any theorems that |
158 vacuous propositions of the form SORT_CONSTRAINT('a::c). For example: |
189 could solve the lemma directly are listed as part of the goal state. |
159 |
|
160 lemma assumes "SORT_CONSTRAINT('a::empty)" shows False ... |
|
161 |
|
162 The result contains an implicit sort hypotheses as before -- |
|
163 SORT_CONSTRAINT premises are eliminated as part of the canonical rule |
|
164 normalization. |
|
165 |
|
166 * Generalized Isar history, with support for linear undo, direct state |
|
167 addressing etc. |
|
168 |
|
169 * Changed defaults for unify configuration options: |
|
170 |
|
171 unify_trace_bound = 50 (formerly 25) |
|
172 unify_search_bound = 60 (formerly 30) |
|
173 |
|
174 * Different bookkeeping for code equations (INCOMPATIBILITY): |
|
175 |
|
176 a) On theory merge, the last set of code equations for a particular |
|
177 constant is taken (in accordance with the policy applied by other |
|
178 parts of the code generator framework). |
|
179 |
|
180 b) Code equations stemming from explicit declarations (e.g. code |
|
181 attribute) gain priority over default code equations stemming |
|
182 from definition, primrec, fun etc. |
|
183 |
|
184 * Keyword 'code_exception' now named 'code_abort'. INCOMPATIBILITY. |
|
185 |
|
186 * Unified theorem tables for both code code generators. Thus [code |
|
187 func] has disappeared and only [code] remains. INCOMPATIBILITY. |
190 |
188 |
191 * Command 'find_consts' searches for constants based on type and name |
189 * Command 'find_consts' searches for constants based on type and name |
192 patterns, e.g. |
190 patterns, e.g. |
193 |
191 |
194 find_consts "_ => bool" |
192 find_consts "_ => bool" |
211 syntax just like the Isar command 'by'. |
216 syntax just like the Isar command 'by'. |
212 |
217 |
213 |
218 |
214 *** HOL *** |
219 *** HOL *** |
215 |
220 |
216 * Theory Library/Polynomial.thy defines an abstract type 'a poly of |
221 * Integrated main parts of former image HOL-Complex with HOL. Entry |
217 univariate polynomials with coefficients of type 'a. In addition to |
222 points Main and Complex_Main remain as before. |
218 the standard ring operations, it also supports div and mod. Code |
223 |
219 generation is also supported, using list-style constructors. |
224 * Logic image HOL-Plain provides a minimal HOL with the most important |
220 |
225 tools available (inductive, datatype, primrec, ...). This facilitates |
221 * Theory Library/Inner_Product.thy defines a class of real_inner for |
226 experimentation and tool development. Note that user applications |
222 real inner product spaces, with an overloaded operation inner :: 'a => |
227 (and library theories) should never refer to anything below theory |
223 'a => real. Class real_inner is a subclass of real_normed_vector from |
228 Main, as before. |
224 RealVector.thy. |
229 |
225 |
230 * Logic image HOL-Main stops at theory Main, and thus facilitates |
226 * Theory Library/Product_Vector.thy provides instances for the product |
231 experimentation due to shorter build times. |
227 type 'a * 'b of several classes from RealVector.thy and |
232 |
228 Inner_Product.thy. Definitions of addition, subtraction, scalar |
233 * Logic image HOL-NSA contains theories of nonstandard analysis which |
229 multiplication, norms, and inner products are included. |
234 were previously part of former HOL-Complex. Entry point Hyperreal |
230 |
235 remains valid, but theories formerly using Complex_Main should now use |
231 * Theory Library/Bit.thy defines the field "bit" of integers modulo 2. |
236 new entry point Hypercomplex. |
232 In addition to the field operations, numerals and case syntax are also |
237 |
233 supported. |
238 * Generic ATP manager for Sledgehammer, based on ML threads instead of |
234 |
239 Posix processes. Avoids potentially expensive forking of the ML |
235 * Theory Library/Diagonalize.thy provides constructive version of |
240 process. New thread-based implementation also works on non-Unix |
236 Cantor's first diagonalization argument. |
241 platforms (Cygwin). Provers are no longer hardwired, but defined |
237 |
242 within the theory via plain ML wrapper functions. Basic Sledgehammer |
238 * New predicate "strict_mono" classifies strict functions on partial orders. |
243 commands are covered in the isar-ref manual. |
239 With strict functions on linear orders, reasoning about (in)equalities is |
244 |
240 facilitated by theorems "strict_mono_eq", "strict_mono_less_eq" and "strict_mono_less". |
245 * Wrapper scripts for remote SystemOnTPTP service allows to use |
241 |
246 sledgehammer without local ATP installation (Vampire etc.). Other |
242 * Some set operations are now proper qualified constants with authentic syntax. |
247 provers may be included via suitable ML wrappers, see also |
243 INCOMPATIBILITY: |
248 src/HOL/ATP_Linkup.thy. |
|
249 |
|
250 * ATP selection (E/Vampire/Spass) is now via Proof General's settings |
|
251 menu. |
|
252 |
|
253 * The metis method no longer fails because the theorem is too trivial |
|
254 (contains the empty clause). |
|
255 |
|
256 * The metis method now fails in the usual manner, rather than raising |
|
257 an exception, if it determines that it cannot prove the theorem. |
|
258 |
|
259 * Method "coherent" implements a prover for coherent logic (see also |
|
260 src/Tools/coherent.ML). |
|
261 |
|
262 * Constants "undefined" and "default" replace "arbitrary". Usually |
|
263 "undefined" is the right choice to replace "arbitrary", though |
|
264 logically there is no difference. INCOMPATIBILITY. |
|
265 |
|
266 * Command "value" now integrates different evaluation mechanisms. The |
|
267 result of the first successful evaluation mechanism is printed. In |
|
268 square brackets a particular named evaluation mechanisms may be |
|
269 specified (currently, [SML], [code] or [nbe]). See further |
|
270 src/HOL/ex/Eval_Examples.thy. |
|
271 |
|
272 * Normalization by evaluation now allows non-leftlinear equations. |
|
273 Declare with attribute [code nbe]. |
|
274 |
|
275 * Methods "case_tac" and "induct_tac" now refer to the very same rules |
|
276 as the structured Isar versions "cases" and "induct", cf. the |
|
277 corresponding "cases" and "induct" attributes. Mutual induction rules |
|
278 are now presented as a list of individual projections |
|
279 (e.g. foo_bar.inducts for types foo and bar); the old format with |
|
280 explicit HOL conjunction is no longer supported. INCOMPATIBILITY, in |
|
281 rare situations a different rule is selected --- notably nested tuple |
|
282 elimination instead of former prod.exhaust: use explicit (case_tac t |
|
283 rule: prod.exhaust) here. |
|
284 |
|
285 * Attributes "cases", "induct", "coinduct" support "del" option. |
|
286 |
|
287 * Removed fact "case_split_thm", which duplicates "case_split". |
|
288 |
|
289 * The option datatype has been moved to a new theory Option. Renamed |
|
290 option_map to Option.map, and o2s to Option.set, INCOMPATIBILITY. |
|
291 |
|
292 * New predicate "strict_mono" classifies strict functions on partial |
|
293 orders. With strict functions on linear orders, reasoning about |
|
294 (in)equalities is facilitated by theorems "strict_mono_eq", |
|
295 "strict_mono_less_eq" and "strict_mono_less". |
|
296 |
|
297 * Some set operations are now proper qualified constants with |
|
298 authentic syntax. INCOMPATIBILITY: |
244 |
299 |
245 op Int ~> Set.Int |
300 op Int ~> Set.Int |
246 op Un ~> Set.Un |
301 op Un ~> Set.Un |
247 INTER ~> Set.INTER |
302 INTER ~> Set.INTER |
248 UNION ~> Set.UNION |
303 UNION ~> Set.UNION |
249 Inter ~> Set.Inter |
304 Inter ~> Set.Inter |
250 Union ~> Set.Union |
305 Union ~> Set.Union |
251 {} ~> Set.empty |
306 {} ~> Set.empty |
252 UNIV ~> Set.UNIV |
307 UNIV ~> Set.UNIV |
253 |
308 |
254 * Class complete_lattice with operations Inf, Sup, INFI, SUPR now in theory |
309 * Class complete_lattice with operations Inf, Sup, INFI, SUPR now in |
255 Set. |
310 theory Set. |
256 |
311 |
257 * Auxiliary class "itself" has disappeared -- classes without any parameter |
312 * Auxiliary class "itself" has disappeared -- classes without any |
258 are treated as expected by the 'class' command. |
313 parameter are treated as expected by the 'class' command. |
259 |
314 |
260 * Leibnitz's Series for Pi and the arcus tangens and logarithm series. |
315 * Leibnitz's Series for Pi and the arcus tangens and logarithm series. |
261 |
316 |
262 * Common decision procedures (Cooper, MIR, Ferrack, Approximation, Dense_Linear_Order) |
317 * Common decision procedures (Cooper, MIR, Ferrack, Approximation, |
263 now in directory HOL/Decision_Procs. |
318 Dense_Linear_Order) are now in directory HOL/Decision_Procs. |
264 |
319 |
265 * Theory HOL/Decision_Procs/Approximation.thy provides the new proof method |
320 * Theory src/HOL/Decision_Procs/Approximation provides the new proof |
266 "approximation". It proves formulas on real values by using interval arithmetic. |
321 method "approximation". It proves formulas on real values by using |
267 In the formulas are also the transcendental functions sin, cos, tan, atan, ln, |
322 interval arithmetic. In the formulas are also the transcendental |
268 exp and the constant pi are allowed. For examples see |
323 functions sin, cos, tan, atan, ln, exp and the constant pi are |
269 HOL/Descision_Procs/ex/Approximation_Ex.thy. |
324 allowed. For examples see |
|
325 src/HOL/Descision_Procs/ex/Approximation_Ex.thy. |
270 |
326 |
271 * Theory "Reflection" now resides in HOL/Library. |
327 * Theory "Reflection" now resides in HOL/Library. |
272 |
328 |
273 * Entry point to Word library now simply named "Word". INCOMPATIBILITY. |
329 * Entry point to Word library now simply named "Word". |
|
330 INCOMPATIBILITY. |
274 |
331 |
275 * Made source layout more coherent with logical distribution |
332 * Made source layout more coherent with logical distribution |
276 structure: |
333 structure: |
277 |
334 |
278 src/HOL/Library/RType.thy ~> src/HOL/Typerep.thy |
335 src/HOL/Library/RType.thy ~> src/HOL/Typerep.thy |
325 src/HOL/Library/Heap.thy ~> src/HOL/Imperative_HOL |
382 src/HOL/Library/Heap.thy ~> src/HOL/Imperative_HOL |
326 src/HOL/Library/Imperative_HOL.thy ~> src/HOL/Imperative_HOL |
383 src/HOL/Library/Imperative_HOL.thy ~> src/HOL/Imperative_HOL |
327 src/HOL/Library/Ref.thy ~> src/HOL/Imperative_HOL |
384 src/HOL/Library/Ref.thy ~> src/HOL/Imperative_HOL |
328 src/HOL/Library/Relational.thy ~> src/HOL/Imperative_HOL |
385 src/HOL/Library/Relational.thy ~> src/HOL/Imperative_HOL |
329 |
386 |
330 * If methods "eval" and "evaluation" encounter a structured proof state |
387 * If methods "eval" and "evaluation" encounter a structured proof |
331 with !!/==>, only the conclusion is evaluated to True (if possible), |
388 state with !!/==>, only the conclusion is evaluated to True (if |
332 avoiding strange error messages. |
389 possible), avoiding strange error messages. |
333 |
390 |
334 * Simplifier: simproc for let expressions now unfolds if bound variable |
391 * Method "sizechange" automates termination proofs using (a |
335 occurs at most once in let expression body. INCOMPATIBILITY. |
392 modification of) the size-change principle. Requires SAT solver. See |
336 |
393 src/HOL/ex/Termination.thy for examples. |
337 * New attribute "arith" for facts that should always be used automaticaly |
394 |
338 by arithmetic. It is intended to be used locally in proofs, eg |
395 * Simplifier: simproc for let expressions now unfolds if bound |
339 assumes [arith]: "x > 0" |
396 variable occurs at most once in let expression body. INCOMPATIBILITY. |
|
397 |
|
398 * Method "arith": Linear arithmetic now ignores all inequalities when |
|
399 fast_arith_neq_limit is exceeded, instead of giving up entirely. |
|
400 |
|
401 * New attribute "arith" for facts that should always be used |
|
402 automatically by arithmetic. It is intended to be used locally in |
|
403 proofs, e.g. |
|
404 |
|
405 assumes [arith]: "x > 0" |
|
406 |
340 Global usage is discouraged because of possible performance impact. |
407 Global usage is discouraged because of possible performance impact. |
341 |
408 |
342 * New classes "top" and "bot" with corresponding operations "top" and "bot" |
409 * New classes "top" and "bot" with corresponding operations "top" and |
343 in theory Orderings; instantiation of class "complete_lattice" requires |
410 "bot" in theory Orderings; instantiation of class "complete_lattice" |
344 instantiation of classes "top" and "bot". INCOMPATIBILITY. |
411 requires instantiation of classes "top" and "bot". INCOMPATIBILITY. |
345 |
412 |
346 * Changed definition lemma "less_fun_def" in order to provide an instance |
413 * Changed definition lemma "less_fun_def" in order to provide an |
347 for preorders on functions; use lemma "less_le" instead. INCOMPATIBILITY. |
414 instance for preorders on functions; use lemma "less_le" instead. |
348 |
415 INCOMPATIBILITY. |
349 * Unified theorem tables for both code code generators. Thus |
416 |
350 [code func] has disappeared and only [code] remains. INCOMPATIBILITY. |
417 * Theory Orderings: class "wellorder" moved here, with explicit |
351 |
418 induction rule "less_induct" as assumption. For instantiation of |
352 * Constants "undefined" and "default" replace "arbitrary". Usually |
419 "wellorder" by means of predicate "wf", use rule wf_wellorderI. |
353 "undefined" is the right choice to replace "arbitrary", though logically |
420 INCOMPATIBILITY. |
354 there is no difference. INCOMPATIBILITY. |
421 |
355 |
422 * Theory Orderings: added class "preorder" as superclass of "order". |
356 * Generic ATP manager for Sledgehammer, based on ML threads instead of |
|
357 Posix processes. Avoids potentially expensive forking of the ML |
|
358 process. New thread-based implementation also works on non-Unix |
|
359 platforms (Cygwin). Provers are no longer hardwired, but defined |
|
360 within the theory via plain ML wrapper functions. Basic Sledgehammer |
|
361 commands are covered in the isar-ref manual. |
|
362 |
|
363 * Wrapper scripts for remote SystemOnTPTP service allows to use |
|
364 sledgehammer without local ATP installation (Vampire etc.). Other |
|
365 provers may be included via suitable ML wrappers, see also |
|
366 src/HOL/ATP_Linkup.thy. |
|
367 |
|
368 * Normalization by evaluation now allows non-leftlinear equations. |
|
369 Declare with attribute [code nbe]. |
|
370 |
|
371 * Command "value" now integrates different evaluation |
|
372 mechanisms. The result of the first successful evaluation mechanism |
|
373 is printed. In square brackets a particular named evaluation |
|
374 mechanisms may be specified (currently, [SML], [code] or [nbe]). See |
|
375 further src/HOL/ex/Eval_Examples.thy. |
|
376 |
|
377 * New method "sizechange" to automate termination proofs using (a |
|
378 modification of) the size-change principle. Requires SAT solver. See |
|
379 src/HOL/ex/Termination.thy for examples. |
|
380 |
|
381 * HOL/Orderings: class "wellorder" moved here, with explicit induction |
|
382 rule "less_induct" as assumption. For instantiation of "wellorder" by |
|
383 means of predicate "wf", use rule wf_wellorderI. INCOMPATIBILITY. |
|
384 |
|
385 * HOL/Orderings: added class "preorder" as superclass of "order". |
|
386 INCOMPATIBILITY: Instantiation proofs for order, linorder |
423 INCOMPATIBILITY: Instantiation proofs for order, linorder |
387 etc. slightly changed. Some theorems named order_class.* now named |
424 etc. slightly changed. Some theorems named order_class.* now named |
388 preorder_class.*. |
425 preorder_class.*. |
389 |
426 |
390 * HOL/Relation: |
427 * Theory Relation: renamed "refl" to "refl_on", "reflexive" to "refl, |
391 Renamed "refl" to "refl_on", "reflexive" to "refl, "diag" to "Id_on". |
428 "diag" to "Id_on". |
392 |
429 |
393 * HOL/Finite_Set: added a new fold combinator of type |
430 * Theory Finite_Set: added a new fold combinator of type |
|
431 |
394 ('a => 'b => 'b) => 'b => 'a set => 'b |
432 ('a => 'b => 'b) => 'b => 'a set => 'b |
395 Occasionally this is more convenient than the old fold combinator which is |
433 |
396 now defined in terms of the new one and renamed to fold_image. |
434 Occasionally this is more convenient than the old fold combinator |
397 |
435 which is now defined in terms of the new one and renamed to |
398 * HOL/Ring_and_Field and HOL/OrderedGroup: The lemmas "group_simps" and |
436 fold_image. |
399 "ring_simps" have been replaced by "algebra_simps" (which can be extended with |
437 |
400 further lemmas!). At the moment both still exist but the former will disappear |
438 * Theories Ring_and_Field and OrderedGroup: The lemmas "group_simps" |
401 at some point. |
439 and "ring_simps" have been replaced by "algebra_simps" (which can be |
402 |
440 extended with further lemmas!). At the moment both still exist but |
403 * HOL/Power: Lemma power_Suc is now declared as a simp rule in class |
441 the former will disappear at some point. |
404 recpower. Type-specific simp rules for various recpower types have |
442 |
405 been removed. INCOMPATIBILITY. Rename old lemmas as follows: |
443 * Theory Power: Lemma power_Suc is now declared as a simp rule in |
|
444 class recpower. Type-specific simp rules for various recpower types |
|
445 have been removed. INCOMPATIBILITY, rename old lemmas as follows: |
406 |
446 |
407 rat_power_0 -> power_0 |
447 rat_power_0 -> power_0 |
408 rat_power_Suc -> power_Suc |
448 rat_power_Suc -> power_Suc |
409 realpow_0 -> power_0 |
449 realpow_0 -> power_0 |
410 realpow_Suc -> power_Suc |
450 realpow_Suc -> power_Suc |
411 complexpow_0 -> power_0 |
451 complexpow_0 -> power_0 |
412 complexpow_Suc -> power_Suc |
452 complexpow_Suc -> power_Suc |
413 power_poly_0 -> power_0 |
453 power_poly_0 -> power_0 |
414 power_poly_Suc -> power_Suc |
454 power_poly_Suc -> power_Suc |
415 |
455 |
416 * HOL/Ring_and_Field and HOL/Divides: Definition of "op dvd" has been |
456 * Theories Ring_and_Field and Divides: Definition of "op dvd" has been |
417 moved to separate class dvd in Ring_and_Field; a couple of lemmas on |
457 moved to separate class dvd in Ring_and_Field; a couple of lemmas on |
418 dvd has been generalized to class comm_semiring_1. Likewise a bunch |
458 dvd has been generalized to class comm_semiring_1. Likewise a bunch |
419 of lemmas from Divides has been generalized from nat to class |
459 of lemmas from Divides has been generalized from nat to class |
420 semiring_div. INCOMPATIBILITY. This involves the following theorem |
460 semiring_div. INCOMPATIBILITY. This involves the following theorem |
421 renames resulting from duplicate elimination: |
461 renames resulting from duplicate elimination: |
476 zdvd_0_right -> dvd_0_right |
516 zdvd_0_right -> dvd_0_right |
477 zdvd_0_left -> dvd_0_left_iff |
517 zdvd_0_left -> dvd_0_left_iff |
478 zdvd_1_left -> one_dvd |
518 zdvd_1_left -> one_dvd |
479 zminus_dvd_iff -> minus_dvd_iff |
519 zminus_dvd_iff -> minus_dvd_iff |
480 |
520 |
481 * HOL/Library/GCD: Curried operations gcd, lcm (for nat) and zgcd, |
521 * Theory Rational: 'Fract k 0' now equals '0'. INCOMPATIBILITY. |
|
522 |
|
523 * The real numbers offer decimal input syntax: 12.34 is translated |
|
524 into 1234/10^2. This translation is not reversed upon output. |
|
525 |
|
526 * Theory Library/Polynomial defines an abstract type 'a poly of |
|
527 univariate polynomials with coefficients of type 'a. In addition to |
|
528 the standard ring operations, it also supports div and mod. Code |
|
529 generation is also supported, using list-style constructors. |
|
530 |
|
531 * Theory Library/Inner_Product defines a class of real_inner for real |
|
532 inner product spaces, with an overloaded operation inner :: 'a => 'a |
|
533 => real. Class real_inner is a subclass of real_normed_vector from |
|
534 theory RealVector. |
|
535 |
|
536 * Theory Library/Product_Vector provides instances for the product |
|
537 type 'a * 'b of several classes from RealVector and Inner_Product. |
|
538 Definitions of addition, subtraction, scalar multiplication, norms, |
|
539 and inner products are included. |
|
540 |
|
541 * Theory Library/Bit defines the field "bit" of integers modulo 2. In |
|
542 addition to the field operations, numerals and case syntax are also |
|
543 supported. |
|
544 |
|
545 * Theory Library/Diagonalize provides constructive version of Cantor's |
|
546 first diagonalization argument. |
|
547 |
|
548 * Theory Library/GCD: Curried operations gcd, lcm (for nat) and zgcd, |
482 zlcm (for int); carried together from various gcd/lcm developements in |
549 zlcm (for int); carried together from various gcd/lcm developements in |
483 the HOL Distribution. zgcd and zlcm replace former igcd and ilcm; |
550 the HOL Distribution. Constants zgcd and zlcm replace former igcd and |
484 corresponding theorems renamed accordingly. INCOMPATIBILITY. To |
551 ilcm; corresponding theorems renamed accordingly. INCOMPATIBILITY, |
485 recover tupled syntax, use syntax declarations like: |
552 may recover tupled syntax as follows: |
486 |
553 |
487 hide (open) const gcd |
554 hide (open) const gcd |
488 abbreviation gcd where |
555 abbreviation gcd where |
489 "gcd == (%(a, b). GCD.gcd a b)" |
556 "gcd == (%(a, b). GCD.gcd a b)" |
490 notation (output) |
557 notation (output) |
491 GCD.gcd ("gcd '(_, _')") |
558 GCD.gcd ("gcd '(_, _')") |
492 |
559 |
493 (analogously for lcm, zgcd, zlcm). |
560 The same works for lcm, zgcd, zlcm. |
494 |
561 |
495 * HOL/Real/Rational: 'Fract k 0' now equals '0'. INCOMPATIBILITY. |
562 * Theory Library/Nat_Infinity: added addition, numeral syntax and more |
496 |
563 instantiations for algebraic structures. Removed some duplicate |
497 * The real numbers offer decimal input syntax: 12.34 is translated into |
564 theorems. Changes in simp rules. INCOMPATIBILITY. |
498 1234/10^2. This translation is not reversed upon output. |
565 |
499 |
566 * ML antiquotation @{code} takes a constant as argument and generates |
500 * New ML antiquotation @{code}: takes constant as argument, generates |
|
501 corresponding code in background and inserts name of the corresponding |
567 corresponding code in background and inserts name of the corresponding |
502 resulting ML value/function/datatype constructor binding in place. |
568 resulting ML value/function/datatype constructor binding in place. |
503 All occurrences of @{code} with a single ML block are generated |
569 All occurrences of @{code} with a single ML block are generated |
504 simultaneously. Provides a generic and safe interface for |
570 simultaneously. Provides a generic and safe interface for |
505 instrumentalizing code generation. See HOL/Decision_Procs/Ferrack for |
571 instrumentalizing code generation. See |
506 a more ambitious application. In future you ought refrain from ad-hoc |
572 src/HOL/Decision_Procs/Ferrack.thy for a more ambitious application. |
507 compiling generated SML code on the ML toplevel. Note that (for technical |
573 In future you ought to refrain from ad-hoc compiling generated SML |
508 reasons) @{code} cannot refer to constants for which user-defined |
574 code on the ML toplevel. Note that (for technical reasons) @{code} |
509 serializations are set. Refer to the corresponding ML counterpart |
575 cannot refer to constants for which user-defined serializations are |
510 directly in that cases. |
576 set. Refer to the corresponding ML counterpart directly in that |
511 |
577 cases. |
512 * Integrated image HOL-Complex with HOL. Entry points Main.thy and |
|
513 Complex_Main.thy remain as they are. |
|
514 |
|
515 * New image HOL-Plain provides a minimal HOL with the most important |
|
516 tools available (inductive, datatype, primrec, ...). By convention |
|
517 the corresponding theory Plain should be ancestor of every further |
|
518 (library) theory. Some library theories now have ancestor Plain |
|
519 (instead of Main), thus theory Main occasionally has to be imported |
|
520 explicitly. |
|
521 |
|
522 * The metis method now fails in the usual manner, rather than raising |
|
523 an exception, if it determines that it cannot prove the theorem. |
|
524 |
|
525 * The metis method no longer fails because the theorem is too trivial |
|
526 (contains the empty clause). |
|
527 |
|
528 * Methods "case_tac" and "induct_tac" now refer to the very same rules |
|
529 as the structured Isar versions "cases" and "induct", cf. the |
|
530 corresponding "cases" and "induct" attributes. Mutual induction rules |
|
531 are now presented as a list of individual projections |
|
532 (e.g. foo_bar.inducts for types foo and bar); the old format with |
|
533 explicit HOL conjunction is no longer supported. INCOMPATIBILITY, in |
|
534 rare situations a different rule is selected --- notably nested tuple |
|
535 elimination instead of former prod.exhaust: use explicit (case_tac t |
|
536 rule: prod.exhaust) here. |
|
537 |
|
538 * Attributes "cases", "induct", "coinduct" support "del" option. |
|
539 |
|
540 * Removed fact "case_split_thm", which duplicates "case_split". |
|
541 |
578 |
542 * Command 'rep_datatype': instead of theorem names the command now |
579 * Command 'rep_datatype': instead of theorem names the command now |
543 takes a list of terms denoting the constructors of the type to be |
580 takes a list of terms denoting the constructors of the type to be |
544 represented as datatype. The characteristic theorems have to be |
581 represented as datatype. The characteristic theorems have to be |
545 proven. INCOMPATIBILITY. Also observe that the following theorems |
582 proven. INCOMPATIBILITY. Also observe that the following theorems |
549 prod_induct ~> prod.induct |
586 prod_induct ~> prod.induct |
550 sum_induct ~> sum.induct |
587 sum_induct ~> sum.induct |
551 Suc_Suc_eq ~> nat.inject |
588 Suc_Suc_eq ~> nat.inject |
552 Suc_not_Zero Zero_not_Suc ~> nat.distinct |
589 Suc_not_Zero Zero_not_Suc ~> nat.distinct |
553 |
590 |
554 * The option datatype has been moved to a new theory HOL/Option.thy. |
|
555 Renamed option_map to Option.map, and o2s to Option.set. |
|
556 |
|
557 * Library/Nat_Infinity: added addition, numeral syntax and more |
|
558 instantiations for algebraic structures. Removed some duplicate |
|
559 theorems. Changes in simp rules. INCOMPATIBILITY. |
|
560 |
|
561 * ATP selection (E/Vampire/Spass) is now via Proof General's settings |
|
562 menu. |
|
563 |
|
564 * Linear arithmetic now ignores all inequalities when |
|
565 fast_arith_neq_limit is exceeded, instead of giving up entirely. |
|
566 |
|
567 |
591 |
568 *** HOL-Algebra *** |
592 *** HOL-Algebra *** |
569 |
593 |
570 * New locales for orders and lattices where the equivalence relation |
594 * New locales for orders and lattices where the equivalence relation |
571 is not restricted to equality. INCOMPATIBILITY: all order and lattice |
595 is not restricted to equality. INCOMPATIBILITY: all order and lattice |
572 locales use a record structure with field eq for the equivalence. |
596 locales use a record structure with field eq for the equivalence. |
573 |
597 |
574 * New theory of factorial domains. |
598 * New theory of factorial domains. |
575 |
599 |
576 * Units_l_inv and Units_r_inv are now simprules by default. |
600 * Units_l_inv and Units_r_inv are now simp rules by default. |
577 INCOMPATIBILITY. Simplifier proof that require deletion of l_inv |
601 INCOMPATIBILITY. Simplifier proof that require deletion of l_inv |
578 and/or r_inv will now also require deletion of these lemmas. |
602 and/or r_inv will now also require deletion of these lemmas. |
579 |
603 |
580 * Renamed the following theorems. INCOMPATIBILITY. |
604 * Renamed the following theorems, INCOMPATIBILITY: |
|
605 |
581 UpperD ~> Upper_memD |
606 UpperD ~> Upper_memD |
582 LowerD ~> Lower_memD |
607 LowerD ~> Lower_memD |
583 least_carrier ~> least_closed |
608 least_carrier ~> least_closed |
584 greatest_carrier ~> greatest_closed |
609 greatest_carrier ~> greatest_closed |
585 greatest_Lower_above ~> greatest_Lower_below |
610 greatest_Lower_above ~> greatest_Lower_below |
586 one_zero ~> carrier_one_zero |
611 one_zero ~> carrier_one_zero |
587 one_not_zero ~> carrier_one_not_zero (collision with assumption) |
612 one_not_zero ~> carrier_one_not_zero (collision with assumption) |
588 |
613 |
589 |
614 |
590 *** HOL-NSA *** |
|
591 |
|
592 * Created new image HOL-NSA, containing theories of nonstandard |
|
593 analysis which were previously part of HOL-Complex. Entry point |
|
594 Hyperreal.thy remains valid, but theories formerly using |
|
595 Complex_Main.thy should now use new entry point Hypercomplex.thy. |
|
596 |
|
597 |
|
598 *** ZF *** |
|
599 |
|
600 * Proof of Zorn's Lemma for partial orders. |
|
601 |
|
602 |
|
603 *** HOLCF *** |
615 *** HOLCF *** |
604 |
616 |
605 * Reimplemented the simplification procedure for proving continuity |
617 * Reimplemented the simplification procedure for proving continuity |
606 subgoals. The new simproc is extensible; users can declare additional |
618 subgoals. The new simproc is extensible; users can declare additional |
607 continuity introduction rules with the attribute [cont2cont]. |
619 continuity introduction rules with the attribute [cont2cont]. |
610 solving continuity subgoals on terms with lambda abstractions. In |
622 solving continuity subgoals on terms with lambda abstractions. In |
611 some rare cases the new simproc may fail to solve subgoals that the |
623 some rare cases the new simproc may fail to solve subgoals that the |
612 old one could solve, and "simp add: cont2cont_LAM" may be necessary. |
624 old one could solve, and "simp add: cont2cont_LAM" may be necessary. |
613 Potential INCOMPATIBILITY. |
625 Potential INCOMPATIBILITY. |
614 |
626 |
615 * The syntax of the fixrec package has changed. The specification |
627 * The syntax of the fixrec package now conforms to the general |
616 syntax now conforms in style to definition, primrec, function, etc. |
628 specification format of inductive, primrec, function, etc. See |
617 See HOLCF/ex/Fixrec_ex.thy for examples. INCOMPATIBILITY. |
629 src/HOLCF/ex/Fixrec_ex.thy for examples. INCOMPATIBILITY. |
|
630 |
|
631 |
|
632 *** ZF *** |
|
633 |
|
634 * Proof of Zorn's Lemma for partial orders. |
618 |
635 |
619 |
636 |
620 *** ML *** |
637 *** ML *** |
|
638 |
|
639 * Multithreading for Poly/ML 5.1/5.2 is no longer supported, only for |
|
640 Poly/ML 5.2.1 or later. Important note: the TimeLimit facility |
|
641 depends on multithreading, so timouts will not work before Poly/ML |
|
642 5.2.1! |
621 |
643 |
622 * High-level support for concurrent ML programming, see |
644 * High-level support for concurrent ML programming, see |
623 src/Pure/Cuncurrent. The data-oriented model of "future values" is |
645 src/Pure/Cuncurrent. The data-oriented model of "future values" is |
624 particularly convenient to organize independent functional |
646 particularly convenient to organize independent functional |
625 computations. The concept of "synchronized variables" provides a |
647 computations. The concept of "synchronized variables" provides a |
626 higher-order interface for components with shared state, avoiding the |
648 higher-order interface for components with shared state, avoiding the |
627 delicate details of mutexes and condition variables. [Poly/ML 5.2.1 |
649 delicate details of mutexes and condition variables. (Requires |
628 or later] |
650 Poly/ML 5.2.1 or later.) |
|
651 |
|
652 * ML bindings produced via Isar commands are stored within the Isar |
|
653 context (theory or proof). Consequently, commands like 'use' and 'ML' |
|
654 become thread-safe and work with undo as expected (concerning |
|
655 top-level bindings, not side-effects on global references). |
|
656 INCOMPATIBILITY, need to provide proper Isar context when invoking the |
|
657 compiler at runtime; really global bindings need to be given outside a |
|
658 theory. (Requires Poly/ML 5.2 or later.) |
|
659 |
|
660 * Command 'ML_prf' is analogous to 'ML' but works within a proof |
|
661 context. Top-level ML bindings are stored within the proof context in |
|
662 a purely sequential fashion, disregarding the nested proof structure. |
|
663 ML bindings introduced by 'ML_prf' are discarded at the end of the |
|
664 proof. (Requires Poly/ML 5.2 or later.) |
629 |
665 |
630 * Simplified ML attribute and method setup, cf. functions Attrib.setup |
666 * Simplified ML attribute and method setup, cf. functions Attrib.setup |
631 and Method.setup, as well as commands 'attribute_setup' and |
667 and Method.setup, as well as Isar commands 'attribute_setup' and |
632 'method_setup'. INCOMPATIBILITY for 'method_setup', need to simplify |
668 'method_setup'. INCOMPATIBILITY for 'method_setup', need to simplify |
633 existing code accordingly, or use plain 'setup' together with old |
669 existing code accordingly, or use plain 'setup' together with old |
634 Method.add_method. |
670 Method.add_method. |
635 |
671 |
636 * Simplified ML oracle interface Thm.add_oracle promotes 'a -> cterm |
672 * Simplified ML oracle interface Thm.add_oracle promotes 'a -> cterm |
638 name. The Isar command 'oracle' is now polymorphic, no argument type |
674 name. The Isar command 'oracle' is now polymorphic, no argument type |
639 is specified. INCOMPATIBILITY, need to simplify existing oracle code |
675 is specified. INCOMPATIBILITY, need to simplify existing oracle code |
640 accordingly. Note that extra performance may be gained by producing |
676 accordingly. Note that extra performance may be gained by producing |
641 the cterm carefully, avoiding slow Thm.cterm_of. |
677 the cterm carefully, avoiding slow Thm.cterm_of. |
642 |
678 |
643 * ML bindings produced via Isar commands are stored within the Isar |
679 * Simplified interface for defining document antiquotations via |
644 context (theory or proof). Consequently, commands like 'use' and 'ML' |
680 ThyOutput.antiquotation, ThyOutput.output, and optionally |
645 become thread-safe and work with undo as expected (concerning |
681 ThyOutput.maybe_pretty_source. INCOMPATIBILITY, need to simplify user |
646 top-level bindings, not side-effects on global references). |
682 antiquotations accordingly, see src/Pure/Thy/thy_output.ML for common |
647 INCOMPATIBILITY, need to provide proper Isar context when invoking the |
683 examples. |
648 compiler at runtime; really global bindings need to be given outside a |
|
649 theory. [Poly/ML 5.2 or later] |
|
650 |
|
651 * Command 'ML_prf' is analogous to 'ML' but works within a proof |
|
652 context. Top-level ML bindings are stored within the proof context in |
|
653 a purely sequential fashion, disregarding the nested proof structure. |
|
654 ML bindings introduced by 'ML_prf' are discarded at the end of the |
|
655 proof. [Poly/ML 5.2 or later] |
|
656 |
|
657 * Generic Toplevel.add_hook interface allows to analyze the result of |
|
658 transactions. E.g. see src/Pure/ProofGeneral/proof_general_pgip.ML |
|
659 for theorem dependency output of transactions resulting in a new |
|
660 theory state. |
|
661 |
684 |
662 * More systematic treatment of long names, abstract name bindings, and |
685 * More systematic treatment of long names, abstract name bindings, and |
663 name space operations. Basic operations on qualified names have been |
686 name space operations. Basic operations on qualified names have been |
664 move from structure NameSpace to Long_Name, e.g. Long_Name.base_name, |
687 move from structure NameSpace to Long_Name, e.g. Long_Name.base_name, |
665 Long_Name.append. Old type bstring has been mostly replaced by |
688 Long_Name.append. Old type bstring has been mostly replaced by |
666 abstract type binding (see structure Binding), which supports precise |
689 abstract type binding (see structure Binding), which supports precise |
667 qualification (by packages and local theory targets), as well as |
690 qualification by packages and local theory targets, as well as proper |
668 proper tracking of source positions. INCOMPATIBILITY, need to wrap |
691 tracking of source positions. INCOMPATIBILITY, need to wrap old |
669 old bstring values into Binding.name, or better pass through abstract |
692 bstring values into Binding.name, or better pass through abstract |
670 bindings everywhere. See further src/Pure/General/long_name.ML, |
693 bindings everywhere. See further src/Pure/General/long_name.ML, |
671 src/Pure/General/binding.ML and src/Pure/General/name_space.ML |
694 src/Pure/General/binding.ML and src/Pure/General/name_space.ML |
672 |
|
673 * Simplified interface for defining document antiquotations via |
|
674 ThyOutput.antiquotation, ThyOutput.output, and optionally |
|
675 ThyOutput.maybe_pretty_source. INCOMPATIBILITY, need to simplify user |
|
676 antiquotations accordingly, see src/Pure/Thy/thy_output.ML for common |
|
677 examples. |
|
678 |
695 |
679 * Result facts (from PureThy.note_thms, ProofContext.note_thms, |
696 * Result facts (from PureThy.note_thms, ProofContext.note_thms, |
680 LocalTheory.note etc.) now refer to the *full* internal name, not the |
697 LocalTheory.note etc.) now refer to the *full* internal name, not the |
681 bstring as before. INCOMPATIBILITY, not detected by ML type-checking! |
698 bstring as before. INCOMPATIBILITY, not detected by ML type-checking! |
682 |
|
683 * Rules and tactics that read instantiations (read_instantiate, |
|
684 res_inst_tac, thin_tac, subgoal_tac etc.) now demand a proper proof |
|
685 context, which is required for parsing and type-checking. Moreover, |
|
686 the variables are specified as plain indexnames, not string encodings |
|
687 thereof. INCOMPATIBILITY. |
|
688 |
699 |
689 * Disposed old type and term read functions (Sign.read_def_typ, |
700 * Disposed old type and term read functions (Sign.read_def_typ, |
690 Sign.read_typ, Sign.read_def_terms, Sign.read_term, |
701 Sign.read_typ, Sign.read_def_terms, Sign.read_term, |
691 Thm.read_def_cterms, Thm.read_cterm etc.). INCOMPATIBILITY, should |
702 Thm.read_def_cterms, Thm.read_cterm etc.). INCOMPATIBILITY, should |
692 use regular Syntax.read_typ, Syntax.read_term, Syntax.read_typ_global, |
703 use regular Syntax.read_typ, Syntax.read_term, Syntax.read_typ_global, |
697 the simpset or claset of an implicit theory (such as Addsimps, |
708 the simpset or claset of an implicit theory (such as Addsimps, |
698 Simp_tac, SIMPSET). INCOMPATIBILITY, should use @{simpset} etc. in |
709 Simp_tac, SIMPSET). INCOMPATIBILITY, should use @{simpset} etc. in |
699 embedded ML text, or local_simpset_of with a proper context passed as |
710 embedded ML text, or local_simpset_of with a proper context passed as |
700 explicit runtime argument. |
711 explicit runtime argument. |
701 |
712 |
702 * Antiquotations: block-structured compilation context indicated by |
713 * Rules and tactics that read instantiations (read_instantiate, |
|
714 res_inst_tac, thin_tac, subgoal_tac etc.) now demand a proper proof |
|
715 context, which is required for parsing and type-checking. Moreover, |
|
716 the variables are specified as plain indexnames, not string encodings |
|
717 thereof. INCOMPATIBILITY. |
|
718 |
|
719 * Generic Toplevel.add_hook interface allows to analyze the result of |
|
720 transactions. E.g. see src/Pure/ProofGeneral/proof_general_pgip.ML |
|
721 for theorem dependency output of transactions resulting in a new |
|
722 theory state. |
|
723 |
|
724 * ML antiquotations: block-structured compilation context indicated by |
703 \<lbrace> ... \<rbrace>; additional antiquotation forms: |
725 \<lbrace> ... \<rbrace>; additional antiquotation forms: |
704 |
726 |
|
727 @{binding name} - basic name binding |
705 @{let ?pat = term} - term abbreviation (HO matching) |
728 @{let ?pat = term} - term abbreviation (HO matching) |
706 @{note name = fact} - fact abbreviation |
729 @{note name = fact} - fact abbreviation |
707 @{thm fact} - singleton fact (with attributes) |
730 @{thm fact} - singleton fact (with attributes) |
708 @{thms fact} - general fact (with attributes) |
731 @{thms fact} - general fact (with attributes) |
709 @{lemma prop by method} - singleton goal |
732 @{lemma prop by method} - singleton goal |