6 |
6 |
7 *** General *** |
7 *** General *** |
8 |
8 |
9 * The Isabelle/Isar Reference Manual (isar-ref) has been reorganized |
9 * The Isabelle/Isar Reference Manual (isar-ref) has been reorganized |
10 and updated, with formally checked references as hyperlinks. |
10 and updated, with formally checked references as hyperlinks. |
11 |
|
12 * Syntax: symbol \<chi> is now considered a letter. Potential |
|
13 INCOMPATIBILITY in identifier syntax etc. |
|
14 |
|
15 * Outer syntax: string tokens may contain arbitrary character codes |
|
16 specified via 3 decimal digits (as in SML). E.g. "foo\095bar" for |
|
17 "foo_bar". |
|
18 |
|
19 * Outer syntax: string tokens no longer admit escaped white space, |
|
20 which was an accidental (undocumented) feature. INCOMPATIBILITY, use |
|
21 white space directly. |
|
22 |
11 |
23 * Theory loader: use_thy (and similar operations) no longer set the |
12 * Theory loader: use_thy (and similar operations) no longer set the |
24 implicit ML context, which was occasionally hard to predict and in |
13 implicit ML context, which was occasionally hard to predict and in |
25 conflict with concurrency. INCOMPATIBILITY, use ML within Isar which |
14 conflict with concurrency. INCOMPATIBILITY, use ML within Isar which |
26 provides a proper context already. |
15 provides a proper context already. |
31 |
20 |
32 * Name space merge now observes canonical order, i.e. the second space |
21 * Name space merge now observes canonical order, i.e. the second space |
33 is inserted into the first one, while existing entries in the first |
22 is inserted into the first one, while existing entries in the first |
34 space take precedence. INCOMPATIBILITY in rare situations, may try to |
23 space take precedence. INCOMPATIBILITY in rare situations, may try to |
35 swap theory imports. |
24 swap theory imports. |
|
25 |
|
26 * Syntax: symbol \<chi> is now considered a letter. Potential |
|
27 INCOMPATIBILITY in identifier syntax etc. |
|
28 |
|
29 * Outer syntax: string tokens no longer admit escaped white space, |
|
30 which was an accidental (undocumented) feature. INCOMPATIBILITY, use |
|
31 white space without escapes. |
|
32 |
|
33 * Outer syntax: string tokens may contain arbitrary character codes |
|
34 specified via 3 decimal digits (as in SML). E.g. "foo\095bar" for |
|
35 "foo_bar". |
36 |
36 |
37 |
37 |
38 *** Pure *** |
38 *** Pure *** |
39 |
39 |
40 * Context-dependent token translations. Default setup reverts locally |
40 * Context-dependent token translations. Default setup reverts locally |
92 * Command 'setup': discontinued implicit version with ML reference. |
92 * Command 'setup': discontinued implicit version with ML reference. |
93 |
93 |
94 * Instantiation target allows for simultaneous specification of class |
94 * Instantiation target allows for simultaneous specification of class |
95 instance operations together with an instantiation proof. |
95 instance operations together with an instantiation proof. |
96 Type-checking phase allows to refer to class operations uniformly. |
96 Type-checking phase allows to refer to class operations uniformly. |
97 See HOL/Complex/Complex.thy for an Isar example and |
97 See src/HOL/Complex/Complex.thy for an Isar example and |
98 HOL/Library/Eval.thy for an ML example. |
98 src/HOL/Library/Eval.thy for an ML example. |
99 |
99 |
100 * Indexing of literal facts: be more serious about including only |
100 * Indexing of literal facts: be more serious about including only |
101 facts from the visible specification/proof context, but not the |
101 facts from the visible specification/proof context, but not the |
102 background context (locale etc.). Affects `prop` notation and method |
102 background context (locale etc.). Affects `prop` notation and method |
103 "fact". INCOMPATIBILITY: need to name facts explicitly in rare |
103 "fact". INCOMPATIBILITY: need to name facts explicitly in rare |
128 method (either a method name or a method name plus (optional) method |
128 method (either a method name or a method name plus (optional) method |
129 arguments in parentheses) and prints A just like @{prop A}. |
129 arguments in parentheses) and prints A just like @{prop A}. |
130 |
130 |
131 |
131 |
132 *** HOL *** |
132 *** HOL *** |
|
133 |
|
134 * New primrec package. Specification syntax conforms in style to |
|
135 definition/function/.... No separate induction rule is provided. The |
|
136 "primrec" command distinguishes old-style and new-style specifications |
|
137 by syntax. The former primrec package is now named OldPrimrecPackage. |
|
138 When adjusting theories, beware: constants stemming from new-style |
|
139 primrec specifications have authentic syntax. |
|
140 |
|
141 * Metis prover is now an order of magnitude faster, and also works |
|
142 with multithreading. |
|
143 |
|
144 * Metis: the maximum number of clauses that can be produced from a |
|
145 theorem is now given by the attribute max_clauses. Theorems that |
|
146 exceed this number are ignored, with a warning printed. |
|
147 |
|
148 * Sledgehammer no longer produces structured proofs by default. To |
|
149 enable, declare [[sledgehammer_full = true]]. Attributes |
|
150 reconstruction_modulus, reconstruction_sorts renamed |
|
151 sledgehammer_modulus, sledgehammer_sorts. INCOMPATIBILITY. |
|
152 |
|
153 * Method "induction_scheme" derives user-specified induction rules |
|
154 from well-founded induction and completeness of patterns. This factors |
|
155 out some operations that are done internally by the function package |
|
156 and makes them available separately. See |
|
157 src/HOL/ex/Induction_Scheme.thy for examples. |
|
158 |
|
159 * More flexible generation of measure functions for termination |
|
160 proofs: Measure functions can be declared by proving a rule of the |
|
161 form "is_measure f" and giving it the [measure_function] attribute. |
|
162 The "is_measure" predicate is logically meaningless (always true), and |
|
163 just guides the heuristic. To find suitable measure functions, the |
|
164 termination prover sets up the goal "is_measure ?f" of the appropriate |
|
165 type and generates all solutions by prolog-style backwards proof using |
|
166 the declared rules. |
|
167 |
|
168 This setup also deals with rules like |
|
169 |
|
170 "is_measure f ==> is_measure (list_size f)" |
|
171 |
|
172 which accommodates nested datatypes that recurse through lists. |
|
173 Similar rules are predeclared for products and option types. |
133 |
174 |
134 * Turned the type of sets "'a set" into an abbreviation for "'a => bool" |
175 * Turned the type of sets "'a set" into an abbreviation for "'a => bool" |
135 |
176 |
136 INCOMPATIBILITIES: |
177 INCOMPATIBILITIES: |
137 |
178 |
264 * Theorem Inductive.lfp_ordinal_induct generalized to complete |
305 * Theorem Inductive.lfp_ordinal_induct generalized to complete |
265 lattices. The form set-specific version is available as |
306 lattices. The form set-specific version is available as |
266 Inductive.lfp_ordinal_induct_set. |
307 Inductive.lfp_ordinal_induct_set. |
267 |
308 |
268 * Renamed theorems "power.simps" to "power_int.simps". |
309 * Renamed theorems "power.simps" to "power_int.simps". |
|
310 INCOMPATIBILITY. |
269 |
311 |
270 * Class semiring_div provides basic abstract properties of semirings |
312 * Class semiring_div provides basic abstract properties of semirings |
271 with division and modulo operations. Subsumes former class dvd_mod. |
313 with division and modulo operations. Subsumes former class dvd_mod. |
272 |
314 |
273 * Merged theories IntDef, Numeral and IntArith into unified theory |
315 * Merged theories IntDef, Numeral and IntArith into unified theory |
277 numbers rather than integers. INCOMPATIBILITY. |
319 numbers rather than integers. INCOMPATIBILITY. |
278 |
320 |
279 * New class "uminus" with operation "uminus" (split of from class |
321 * New class "uminus" with operation "uminus" (split of from class |
280 "minus" which now only has operation "minus", binary). |
322 "minus" which now only has operation "minus", binary). |
281 INCOMPATIBILITY. |
323 INCOMPATIBILITY. |
282 |
|
283 * New primrec package. Specification syntax conforms in style to |
|
284 definition/function/.... No separate induction rule is provided. The |
|
285 "primrec" command distinguishes old-style and new-style specifications |
|
286 by syntax. The former primrec package is now named OldPrimrecPackage. |
|
287 When adjusting theories, beware: constants stemming from new-style |
|
288 primrec specifications have authentic syntax. |
|
289 |
|
290 * Library/Multiset: {#a, b, c#} abbreviates {#a#} + {#b#} + {#c#}. |
|
291 |
|
292 * Library/ListVector: new theory of arithmetic vector operations. |
|
293 |
|
294 * Library/Order_Relation: new theory of various orderings as sets of |
|
295 pairs. Defines preorders, partial orders, linear orders and |
|
296 well-orders on sets and on types. |
|
297 |
324 |
298 * Constants "card", "internal_split", "option_map" now with authentic |
325 * Constants "card", "internal_split", "option_map" now with authentic |
299 syntax. INCOMPATIBILITY. |
326 syntax. INCOMPATIBILITY. |
300 |
327 |
301 * Definitions subset_def, psubset_def, set_diff_def, Compl_def, |
328 * Definitions subset_def, psubset_def, set_diff_def, Compl_def, |
303 sup_bool_def, Inf_bool_def, Sup_bool_def, inf_fun_def, sup_fun_def, |
330 sup_bool_def, Inf_bool_def, Sup_bool_def, inf_fun_def, sup_fun_def, |
304 Inf_fun_def, Sup_fun_def, inf_set_def, sup_set_def, Inf_set_def, |
331 Inf_fun_def, Sup_fun_def, inf_set_def, sup_set_def, Inf_set_def, |
305 Sup_set_def, le_def, less_def, option_map_def now with object |
332 Sup_set_def, le_def, less_def, option_map_def now with object |
306 equality. INCOMPATIBILITY. |
333 equality. INCOMPATIBILITY. |
307 |
334 |
308 * Method "induction_scheme" derives user-specified induction rules |
|
309 from well-founded induction and completeness of patterns. This factors |
|
310 out some operations that are done internally by the function package |
|
311 and makes them available separately. See "HOL/ex/Induction_Scheme.thy" |
|
312 for examples, |
|
313 |
|
314 * Records. Removed K_record, and replaced it by pure lambda term |
335 * Records. Removed K_record, and replaced it by pure lambda term |
315 %x. c. The simplifier setup is now more robust against eta expansion. |
336 %x. c. The simplifier setup is now more robust against eta expansion. |
316 INCOMPATIBILITY: in cases explicitly referring to K_record. |
337 INCOMPATIBILITY: in cases explicitly referring to K_record. |
317 |
338 |
318 * Metis prover is now an order of magnitude faster, and also works |
339 * Library/Multiset: {#a, b, c#} abbreviates {#a#} + {#b#} + {#c#}. |
319 with multithreading. |
340 |
320 |
341 * Library/ListVector: new theory of arithmetic vector operations. |
321 * Metis: the maximum number of clauses that can be produced from a |
342 |
322 theorem is now given by the attribute max_clauses. Theorems that |
343 * Library/Order_Relation: new theory of various orderings as sets of |
323 exceed this number are ignored, with a warning printed. |
344 pairs. Defines preorders, partial orders, linear orders and |
324 |
345 well-orders on sets and on types. |
325 * Sledgehammer no longer produces structured proofs by default. To |
|
326 enable, declare [[sledgehammer_full = true]]. Attributes |
|
327 reconstruction_modulus, reconstruction_sorts renamed |
|
328 sledgehammer_modulus, sledgehammer_sorts. INCOMPATIBILITY. |
|
329 |
|
330 * More flexible generation of measure functions for termination |
|
331 proofs: Measure functions can be declared by proving a rule of the |
|
332 form "is_measure f" and giving it the [measure_function] attribute. |
|
333 The "is_measure" predicate is logically meaningless (always true), and |
|
334 just guides the heuristic. To find suitable measure functions, the |
|
335 termination prover sets up the goal "is_measure ?f" of the appropriate |
|
336 type and generates all solutions by prolog-style backwards proof using |
|
337 the declared rules. |
|
338 |
|
339 This setup also deals with rules like |
|
340 |
|
341 "is_measure f ==> is_measure (list_size f)" |
|
342 |
|
343 which accomodates nested datatypes that recurse through lists. Similar |
|
344 rules are predeclared for products and option types. |
|
345 |
346 |
346 |
347 |
347 *** ZF *** |
348 *** ZF *** |
348 |
349 |
349 * Renamed some theories to allow to loading both ZF and HOL in the |
350 * Renamed some theories to allow to loading both ZF and HOL in the |
362 available, as trivial extension of Main_ZF. |
363 available, as trivial extension of Main_ZF. |
363 |
364 |
364 |
365 |
365 *** ML *** |
366 *** ML *** |
366 |
367 |
|
368 * ML within Isar: antiquotation @{const name} or @{const |
|
369 name(typargs)} produces statically-checked Const term. |
|
370 |
367 * Functor NamedThmsFun: data is available to the user as dynamic fact |
371 * Functor NamedThmsFun: data is available to the user as dynamic fact |
368 (of the same name). Removed obsolete print command. |
372 (of the same name). Removed obsolete print command. |
369 |
373 |
370 * Removed obsolete "use_legacy_bindings" function. INCOMPATIBILITY. |
374 * Removed obsolete "use_legacy_bindings" function. |
371 |
|
372 * ML within Isar: antiquotation @{const name} or @{const |
|
373 name(typargs)} produces statically-checked Const term. |
|
374 |
375 |
375 * The ``print mode'' is now a thread-local value derived from a global |
376 * The ``print mode'' is now a thread-local value derived from a global |
376 template (the former print_mode reference), thus access becomes |
377 template (the former print_mode reference), thus access becomes |
377 non-critical. The global print_mode reference is for session |
378 non-critical. The global print_mode reference is for session |
378 management only; user-code should use print_mode_value, |
379 management only; user-code should use print_mode_value, |
383 Do not use OS.Process.system etc. from the basis library! |
384 Do not use OS.Process.system etc. from the basis library! |
384 |
385 |
385 |
386 |
386 *** System *** |
387 *** System *** |
387 |
388 |
|
389 * Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs --- |
|
390 in accordance with Proof General 3.7, which prefers GNU emacs. |
|
391 |
|
392 * isatool tty runs Isabelle process with plain tty interaction; |
|
393 optional line editor may be specified via ISABELLE_LINE_EDITOR |
|
394 setting, the default settings attempt to locate "ledit" and "rlwrap". |
|
395 |
|
396 * isatool browser now works with Cygwin as well, using general |
|
397 "javapath" function defined in Isabelle process environment. |
|
398 |
388 * YXML notation provides a simple and efficient alternative to |
399 * YXML notation provides a simple and efficient alternative to |
389 standard XML transfer syntax. See src/Pure/General/yxml.ML and |
400 standard XML transfer syntax. See src/Pure/General/yxml.ML and |
390 isatool yxml as described in the Isabelle system manual. |
401 isatool yxml as described in the Isabelle system manual. |
|
402 |
|
403 * JVM class isabelle.IsabelleProcess (located in Isabelle/lib/classes) |
|
404 provides general wrapper for managing an Isabelle process in a robust |
|
405 fashion, with ``cooked'' output from stdin/stderr. |
|
406 |
|
407 * Rudimentary Isabelle plugin for jEdit (see Isabelle/lib/jedit), |
|
408 based on Isabelle/JVM process wrapper (see Isabelle/lib/classes). |
391 |
409 |
392 * Removed obsolete THIS_IS_ISABELLE_BUILD feature. NB: the documented |
410 * Removed obsolete THIS_IS_ISABELLE_BUILD feature. NB: the documented |
393 way of changing the user's settings is via |
411 way of changing the user's settings is via |
394 ISABELLE_HOME_USER/etc/settings, which is a fully featured bash |
412 ISABELLE_HOME_USER/etc/settings, which is a fully featured bash |
395 script. |
413 script. |
396 |
|
397 * Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs --- |
|
398 in accordance with Proof General 3.7, which prefers GNU emacs. |
|
399 |
414 |
400 * Multithreading.max_threads := 0 refers to the number of actual CPU |
415 * Multithreading.max_threads := 0 refers to the number of actual CPU |
401 cores of the underlying machine, which is a good starting point for |
416 cores of the underlying machine, which is a good starting point for |
402 optimal performance tuning. The corresponding usedir option -M allows |
417 optimal performance tuning. The corresponding usedir option -M allows |
403 "max" as an alias for "0". WARNING: does not work on certain versions |
418 "max" as an alias for "0". WARNING: does not work on certain versions |
404 of Mac OS (with Poly/ML 5.1). |
419 of Mac OS (with Poly/ML 5.1). |
405 |
420 |
406 * isatool tty runs Isabelle process with plain tty interaction; |
421 * isabelle-process: non-ML sessions are run with "nice", to reduce the |
407 optional line editor may be specified via ISABELLE_LINE_EDITOR |
422 adverse effect of Isabelle flooding interactive front-ends (notably |
408 setting, the default settings attempt to locate "ledit" and "rlwrap". |
423 ProofGeneral / XEmacs). |
409 |
|
410 * isatool browser now works with Cygwin as well, using general |
|
411 "javapath" function defined in Isabelle process environment. |
|
412 |
|
413 * isabelle-process: non-ML sessions are run with "nice", to prevent |
|
414 Isabelle from flooding interactive front-ends (notably ProofGeneral / |
|
415 XEmacs). |
|
416 |
|
417 * JVM class isabelle.IsabelleProcess (located in Isabelle/lib/classes) |
|
418 provides general wrapper for managing an Isabelle process in a robust |
|
419 fashion, with ``cooked'' output from stdin/stderr. |
|
420 |
|
421 * Rudimentary Isabelle plugin for jEdit (see Isabelle/lib/jedit), |
|
422 based on Isabelle/JVM process wrapper (see Isabelle/lib/classes). |
|
423 |
424 |
424 |
425 |
425 |
426 |
426 New in Isabelle2007 (November 2007) |
427 New in Isabelle2007 (November 2007) |
427 ----------------------------------- |
428 ----------------------------------- |