2 ================================================= |
2 ================================================= |
3 |
3 |
4 (Note: Isabelle/jEdit shows a tree-view of the NEWS file in Sidekick.) |
4 (Note: Isabelle/jEdit shows a tree-view of the NEWS file in Sidekick.) |
5 |
5 |
6 |
6 |
7 New in this Isabelle version |
7 New in Isabelle2022 (October 2022) |
8 ---------------------------- |
8 ---------------------------------- |
9 |
9 |
10 *** General *** |
10 *** General *** |
11 |
|
12 * Old-style {* verbatim *} tokens have been discontinued (legacy feature |
|
13 since Isabelle2019). INCOMPATIBILITY, use \<open>cartouche\<close> syntax instead. |
|
14 |
|
15 * Session ROOT files support 'chapter_definition' entries (optional). |
|
16 This allows to associate additional information as follows: |
|
17 |
|
18 - "chapter_definition NAME (GROUPS)" to make all sessions that belong |
|
19 to this chapter members of the given groups |
|
20 |
|
21 - "chapter_definition NAME description TEXT" to provide a description |
|
22 for presentation purposes |
|
23 |
11 |
24 * The instantiation of schematic goals is now displayed explicitly as a |
12 * The instantiation of schematic goals is now displayed explicitly as a |
25 list of variable assignments. This works for proof state output, and at |
13 list of variable assignments. This works for proof state output, and at |
26 the end of a toplevel proof. In rare situations, a proof command or |
14 the end of a toplevel proof. In rare situations, a proof command or |
27 proof method may violate the intended goal discipline, by not producing |
15 proof method may violate the intended goal discipline, by not producing |
28 an instance of the original goal, but there is only a warning, no hard |
16 an instance of the original goal, but there is only a warning, no hard |
29 error. |
17 error. |
30 |
18 |
31 * System option "show_states" controls output of toplevel command states |
19 * Session ROOT files support 'chapter_definition' entries (optional). |
32 (notably proof states) in batch-builds; in interactive mode this is |
20 This allows to associate additional information as follows: |
33 always done on demand. The option is relevant for tools that operate on |
21 |
34 exported PIDE markup, e.g. document presentation or diagnostics. For |
22 - "chapter_definition NAME (GROUPS)" to make all sessions that belong |
35 example: |
23 to this chapter members of the given groups |
36 |
24 |
37 isabelle build -o show_states FOL-ex |
25 - "chapter_definition NAME description TEXT" to provide a description |
38 isabelle log -v -U FOL-ex |
26 for presentation purposes |
39 |
27 |
40 Option "show_states" is also the default for the configuration option |
28 * Old-style {* verbatim *} tokens have been discontinued (legacy feature |
41 "show_results" within the formal context. |
29 since Isabelle2019). INCOMPATIBILITY, use \<open>cartouche\<close> syntax instead. |
42 |
|
43 Note that printing intermediate states may cause considerable slowdown |
|
44 in building a session. |
|
45 |
30 |
46 |
31 |
47 *** Isabelle/jEdit Prover IDE *** |
32 *** Isabelle/jEdit Prover IDE *** |
48 |
33 |
49 * Command 'print_state' outputs a plain message ("writeln" instead of |
34 * Command 'print_state' outputs a plain message, i.e. "writeln" instead |
50 "state"). Thus it is displayed in the Output panel, even if the option |
35 of "state". Thus it is displayed in the Output panel, even if the option |
51 "editor_output_state" is disabled. |
36 "editor_output_state" is disabled. |
52 |
37 |
53 |
38 |
54 *** Isabelle/VSCode Prover IDE *** |
39 *** Isabelle/VSCode Prover IDE *** |
55 |
40 |
93 presented session. |
78 presented session. |
94 |
79 |
95 |
80 |
96 *** HOL *** |
81 *** HOL *** |
97 |
82 |
98 * HOL record: new simproc that sorts update expressions, guarded by |
83 * HOL record types: new simproc that sorts update expressions, guarded |
99 configuration option "record_sort_updates" (default: false). Some |
84 by configuration option "record_sort_updates" (default: false). Some |
100 examples are in theory "HOL-Examples.Records". |
85 examples are in theory "HOL-Examples.Records". |
101 |
86 |
102 * HOL-Algebra: Facts renamed to avoid fact name clashes on interpretation: |
87 * Meson: added support for polymorphic "using" facts. Minor |
103 |
|
104 is_ring ~> ring_axioms |
|
105 cring ~> cring_axioms |
|
106 R_def ~> R_m_def |
|
107 |
|
108 INCOMPATIBILITY. |
88 INCOMPATIBILITY. |
109 |
89 |
110 * Moved auxiliary computation constant "divmod_nat" to theory |
90 * Moved auxiliary computation constant "divmod_nat" to theory |
111 "Euclidean_Division". Minor INCOMPATIBILITY. |
91 "HOL.Euclidean_Division". Minor INCOMPATIBILITY. |
112 |
92 |
113 * Renamed attribute "arith_split" to "linarith_split". Minor |
93 * Renamed attribute "arith_split" to "linarith_split". Minor |
114 INCOMPATIBILITY. |
94 INCOMPATIBILITY. |
115 |
95 |
116 * Theory Char_ord: streamlined logical specifications. |
96 * Theory "HOL.Rings": rule split_of_bool_asm is not split any longer, |
117 Minor INCOMPATIBILITY. |
97 analogously to split_if_asm. INCOMPATIBILITY. |
118 |
|
119 * New Theory Code_Abstract_Char implements characters by target language |
|
120 integers, sacrificing pattern patching in exchange for dramatically |
|
121 increased performance for comparisons. |
|
122 |
|
123 * New theory HOL-Library.NList of fixed length lists. |
|
124 |
|
125 * Rule split_of_bool_asm is not split any longer, analogously to |
|
126 split_if_asm. INCOMPATIBILITY. |
|
127 |
98 |
128 * Theory "HOL.Bit_Operations": rule bit_0 is not default [simp] any |
99 * Theory "HOL.Bit_Operations": rule bit_0 is not default [simp] any |
129 longer. INCOMPATIBILITY. |
100 longer. INCOMPATIBILITY. |
130 |
101 |
131 * Streamlined primitive definitions of division and modulus on integers. |
102 * Streamlined primitive definitions of division and modulus on integers. |
212 image_mset_filter_mset_swap |
192 image_mset_filter_mset_swap |
213 monotone_multp_multp_image_mset |
193 monotone_multp_multp_image_mset |
214 monotone_on_multp_multp_image_mset |
194 monotone_on_multp_multp_image_mset |
215 multp_image_mset_image_msetD |
195 multp_image_mset_image_msetD |
216 |
196 |
217 * Theory "HOL-Library.Sublist": |
197 * Theory "HOL-Library.Sublist": added lemma map_mono_strict_suffix. |
218 - Added lemma map_mono_strict_suffix. |
198 |
219 |
199 * Theory "HOL-ex.Sum_of_Powers" has been deleted. The same material is |
220 * Theory "HOL-ex.Sum_of_Powers": |
200 in the AFP as Bernoulli. |
221 - Deleted. The same material is in the AFP as Bernoulli. |
201 |
222 |
202 * Session HOL-Algebra: some facts have been renamed to avoid fact name |
223 * Nitpick: To avoid technical issues, prefer non-JNI solvers to JNI solvers by |
203 clashes on interpretation: |
224 default. Minor INCOMPATIBILITY. |
204 |
|
205 is_ring ~> ring_axioms |
|
206 cring ~> cring_axioms |
|
207 R_def ~> R_m_def |
|
208 |
|
209 INCOMPATIBILITY. |
|
210 |
|
211 * Nitpick: To avoid technical issues, prefer non-JNI solvers to JNI |
|
212 solvers by default. Minor INCOMPATIBILITY. |
225 |
213 |
226 * Sledgehammer: |
214 * Sledgehammer: |
227 - Redesigned multithreading to provide more fine grained prover schedules. |
215 - Redesigned multithreading to provide more fine grained prover |
228 The binary option 'slice' has been replaced by a numeric value 'slices' |
216 schedules. The binary option 'slice' has been replaced by a numeric |
229 indicating the number of desired slices. Stronger provers can now be run by |
217 value 'slices' indicating the number of desired slices. Stronger |
230 more than one thread simultaneously. The new option 'max_proofs' controls |
218 provers can now be run by more than one thread simultaneously. The |
231 the number of proofs shown. INCOMPATIBILITY. |
219 new option 'max_proofs' controls the number of proofs shown. |
232 - Introduced sledgehammer_outcome data type and changed return type of ML |
220 INCOMPATIBILITY. |
233 function Sledgehammer.run_sledgehammer from "bool * (string * string list)" |
221 - Introduced sledgehammer_outcome data type and changed return type of |
234 to "bool * (sledgehammer_outcome * string)". The former value can be |
222 ML function Sledgehammer.run_sledgehammer from "bool * (string * |
235 recomputed with "apsnd (ATP_Util.map_prod |
223 string list)" to "bool * (sledgehammer_outcome * string)". The |
|
224 former value can be recomputed with "apsnd (ATP_Util.map_prod |
236 Sledgehammer.short_string_of_sledgehammer_outcome single)". |
225 Sledgehammer.short_string_of_sledgehammer_outcome single)". |
237 INCOMPATIBILITY. |
226 INCOMPATIBILITY. |
238 - Added support for TX0 and TX1 TPTP formats and $ite/$let expressions |
227 - Added support for TX0 and TX1 TPTP formats and $ite/$let expressions |
239 in TH0 and TH1. |
228 in TH0 and TH1. |
240 - Added support for cvc5. |
229 - Added support for cvc5. |
241 - Generate Isar proofs by default when and only when the one-liner proof |
230 - Generate Isar proofs by default when and only when the one-liner |
242 fails to replay and the Isar proof succeeds. |
231 proof fails to replay and the Isar proof succeeds. |
243 - Replaced option "sledgehammer_atp_dest_dir" by |
232 - Replaced option "sledgehammer_atp_dest_dir" by |
244 "sledgehammer_atp_problem_dest_dir", for problem files, and |
233 "sledgehammer_atp_problem_dest_dir", for problem files, and |
245 "sledgehammer_atp_proof_dest_dir", for proof files. Minor INCOMPATIBILITY. |
234 "sledgehammer_atp_proof_dest_dir", for proof files. Minor |
|
235 INCOMPATIBILITY. |
246 - Removed support for experimental prover 'z3_tptp'. |
236 - Removed support for experimental prover 'z3_tptp'. |
247 - The fastest successfully preplayed proof is always suggested. |
237 - The fastest successfully preplayed proof is always suggested. |
248 - All SMT solvers but Z3 now resort to suggest (smt (verit)) when no proof |
238 - All SMT solvers but Z3 now resort to suggest (smt (verit)) when no |
249 could be preplayed. |
239 proof could be preplayed. |
250 - Added new "some_preplayed" value to "expect" option to specify that some |
240 - Added new "some_preplayed" value to "expect" option to specify that |
251 successfully preplayed proof is expected. This is in contrast to the "some" |
241 some successfully preplayed proof is expected. This is in contrast |
252 value which doesn't specify whether preplay succeeds or not. |
242 to the "some" value which doesn't specify whether preplay succeeds |
|
243 or not. |
253 |
244 |
254 * Mirabelle: |
245 * Mirabelle: |
255 - Replaced sledgehammer option "keep" by |
246 - Replaced sledgehammer option "keep" by "keep_probs", for problems |
256 "keep_probs", for problems files, and |
247 files, and "keep_proofs" for proof files. Minor INCOMPATIBILITY. |
257 "keep_proofs" for proof files. Minor INCOMPATIBILITY. |
248 - Added option "-r INT" to randomize the goals with a given 64-bit |
258 - Added option "-r INT" to randomize the goals with a given 64-bit seed before |
249 seed before selection. |
259 selection. |
|
260 - Added option "-y" for a dry run. |
250 - Added option "-y" for a dry run. |
261 - Renamed run_action to run in Mirabelle.action record. Minor INCOMPATIBILITY. |
251 - Renamed run_action to run in Mirabelle.action record. Minor |
|
252 INCOMPATIBILITY. |
262 - Run the actions on goals before commands "unfolding" and "using". |
253 - Run the actions on goals before commands "unfolding" and "using". |
263 |
|
264 * Meson |
|
265 - Added support for polymorphic "using" facts. Minor INCOMPATIBILITY. |
|
266 |
254 |
267 * (Co)datatype package: |
255 * (Co)datatype package: |
268 - BNFs now require a strict cardinality bound (<o instead of \<le>o). |
256 - BNFs now require a strict cardinality bound (<o instead of \<le>o). |
269 Minor INCOMPATIBILITY for existing manual BNF declarations. |
257 Minor INCOMPATIBILITY for existing manual BNF declarations. |
270 - Lemma map_ident_strong is now generated for all BNFs. |
258 - Lemma map_ident_strong is now generated for all BNFs. |
271 |
259 |
272 * More ambitious minimization of case expressions in generated code. |
260 * More ambitious minimization of case expressions in generated code. |
273 |
261 |
274 * Code generation for Scala: type annotations in pattern bindings |
262 * Code generation for Scala: type annotations in pattern bindings are |
275 are printed in a way suitable for Scala 3. |
263 printed in a way suitable for Scala 3. |
276 |
264 |
277 |
265 |
278 *** ML *** |
266 *** ML *** |
279 |
267 |
280 * Type Bytes.T supports scalable byte strings, beyond the limit of |
268 * Type Bytes.T supports scalable byte strings, beyond the limit of |
292 compiler ("dotty") and a quite different source language (we are using |
280 compiler ("dotty") and a quite different source language (we are using |
293 the classic Java-style syntax, not the new Python-style syntax). |
281 the classic Java-style syntax, not the new Python-style syntax). |
294 Occasional INCOMPATIBILITY, see also the official Scala documentation |
282 Occasional INCOMPATIBILITY, see also the official Scala documentation |
295 https://docs.scala-lang.org/scala3/guides/migration/compatibility-intro.html |
283 https://docs.scala-lang.org/scala3/guides/migration/compatibility-intro.html |
296 |
284 |
297 * Command-line tool "isabelle log" has been refined to support multiple |
285 * External Isabelle tools implemented as .scala scripts are no longer |
298 sessions, and to match messages against regular expressions (using Java |
286 supported. INCOMPATIBILITY, instead provide a proper Isabelle/Scala |
299 Pattern syntax). |
287 module with etc/build.props and "services" for a suitable class instance |
|
288 of isabelle.Isabelle_Scala_Tools. For example, see |
|
289 $ISABELLE_HOME/etc/build.props and its isabelle.Tools, which defines the |
|
290 standard Isabelle tools. |
|
291 |
|
292 * The session build database now maintains an additional "uuid" column |
|
293 to identity the original build process uniquely. Thus other tools may |
|
294 dependent symbolically on a particular build instance. |
300 |
295 |
301 * Command-line tool "isabelle scala_project" supports Gradle as |
296 * Command-line tool "isabelle scala_project" supports Gradle as |
302 alternative to Maven: either option -G or -M needs to be specified |
297 alternative to Maven: either option -G or -M needs to be specified |
303 explicitly. This increases the chances that the Java/Scala IDE project |
298 explicitly. This increases the chances that the Java/Scala IDE project |
304 works properly. |
299 works properly. |
312 jars and sessions images may be uploaded as well, to avoid redundant |
307 jars and sessions images may be uploaded as well, to avoid redundant |
313 builds on the remote side. This tool requires a Mercurial clone of the |
308 builds on the remote side. This tool requires a Mercurial clone of the |
314 Isabelle repository: a regular download of the distribution will not |
309 Isabelle repository: a regular download of the distribution will not |
315 work! |
310 work! |
316 |
311 |
317 * The session build database now maintains an additional "uuid" column |
312 * Command-line tool "isabelle log" has been refined to support multiple |
318 to identity the original build process uniquely. Thus other tools may |
313 sessions, and to match messages against regular expressions (using Java |
319 dependent symbolically on a particular build instance. |
314 Pattern syntax). |
320 |
315 |
321 * External Isabelle tools implemented as .scala scripts are no longer |
316 * System option "show_states" controls output of toplevel command states |
322 supported. INCOMPATIBILITY, instead provide a proper Isabelle/Scala |
317 (notably proof states) in batch-builds; in interactive mode this is |
323 module with etc/build.props and "services" for a suitable class instance |
318 always done on demand. The option is relevant for tools that operate on |
324 of isabelle.Isabelle_Scala_Tools. For example, see |
319 exported PIDE markup, e.g. document presentation or diagnostics. For |
325 $ISABELLE_HOME/etc/build.props and its isabelle.Tools, which defines the |
320 example: |
326 standard Isabelle tools. |
321 |
|
322 isabelle build -o show_states FOL-ex |
|
323 isabelle log -v -U FOL-ex |
|
324 |
|
325 Option "show_states" is also the default for the configuration option |
|
326 "show_results" within the formal context. |
|
327 |
|
328 Note that printing intermediate states may cause considerable slowdown |
|
329 in building a session. |
327 |
330 |
328 |
331 |
329 |
332 |
330 New in Isabelle2021-1 (December 2021) |
333 New in Isabelle2021-1 (December 2021) |
331 ------------------------------------- |
334 ------------------------------------- |