107 |
107 |
108 |
108 |
109 |
109 |
110 *** Pure *** |
110 *** Pure *** |
111 |
111 |
112 * Class-context aware syntax for class target ("user space type system"): |
|
113 Local operations in class context (fixes, definitions, axiomatizations, |
|
114 abbreviations) are identified with their global counterparts during reading and |
|
115 printing of terms. Practically, this allows to use the same syntax for |
|
116 both local *and* global operations. Syntax declarations referring directly to |
|
117 local fixes, definitions, axiomatizations and abbreviations are applied to their |
|
118 global counterparts instead (but explicit notation declarations still are local); |
|
119 the special treatment of \<^loc> in local syntax declarations has been abandoned. |
|
120 INCOMPATIBILITY. Most affected theories shall work after the following |
|
121 purgatory: |
|
122 |
|
123 perl -i -pe 's/\\<\^loc>//g;' THYFILENAME1 THYFILENAME2 ... |
|
124 |
|
125 Current limitations: |
|
126 - printing of local abbreviations sometimes yields unexpected results. |
|
127 - some facilities (e.g. attribute of, legacy tac-methods) still do not use |
|
128 canonical interfaces for printing and reading terms. |
|
129 |
|
130 * Code generator: consts in 'consts_code' Isar commands are now |
|
131 referred to by usual term syntax (including optional type |
|
132 annotations). |
|
133 |
|
134 * Code generator: basic definitions (from 'definition', 'constdefs', |
|
135 or primitive 'instance' definitions) are added automatically to the |
|
136 table of defining equations. Primitive defs are not used as defining |
|
137 equations by default any longer. Defining equations are now definitly |
|
138 restricted to meta "==" and object equality "=". |
|
139 |
|
140 * The 'class' package offers a combination of axclass and locale to |
112 * The 'class' package offers a combination of axclass and locale to |
141 achieve Haskell-like type classes in Isabelle. See |
113 achieve Haskell-like type classes in Isabelle. Definitions and |
142 HOL/ex/Classpackage.thy for examples. |
114 theorems within a class context produce both relative results (with |
|
115 implicit parameters according to the locale context), and polymorphic |
|
116 constants with qualified polymorphism (according to the class |
|
117 context). Within the body context of a 'class' target, a separate |
|
118 syntax layer ("user space type system") takes care of converting |
|
119 between global polymorphic consts and internal locale representation. |
|
120 See HOL/ex/Classpackage.thy for examples (as well as main HOL). |
143 |
121 |
144 * Yet another code generator framework allows to generate executable |
122 * Yet another code generator framework allows to generate executable |
145 code for ML and Haskell (including Isabelle classes). A short usage |
123 code for ML and Haskell (including Isabelle classes). A short usage |
146 sketch: |
124 sketch: |
147 |
125 |
183 |
161 |
184 For example usage see HOL/ex/Codegenerator.thy and |
162 For example usage see HOL/ex/Codegenerator.thy and |
185 HOL/ex/Codegenerator_Pretty.thy. A separate tutorial on code |
163 HOL/ex/Codegenerator_Pretty.thy. A separate tutorial on code |
186 generation from Isabelle/HOL theories is available via "isatool doc |
164 generation from Isabelle/HOL theories is available via "isatool doc |
187 codegen". |
165 codegen". |
|
166 |
|
167 * Code generator: consts in 'consts_code' Isar commands are now |
|
168 referred to by usual term syntax (including optional type |
|
169 annotations). |
|
170 |
|
171 * Code generator: basic definitions (from 'definition', 'constdefs', |
|
172 or primitive 'instance' definitions) are added automatically to the |
|
173 table of defining equations. Primitive defs are not used as defining |
|
174 equations by default any longer. Defining equations are now definitly |
|
175 restricted to meta "==" and object equality "=". |
188 |
176 |
189 * Command 'no_translations' removes translation rules from theory |
177 * Command 'no_translations' removes translation rules from theory |
190 syntax. |
178 syntax. |
191 |
179 |
192 * Overloaded definitions are now actually checked for acyclic |
180 * Overloaded definitions are now actually checked for acyclic |
560 default; use '!' option for full details. |
548 default; use '!' option for full details. |
561 |
549 |
562 |
550 |
563 *** HOL *** |
551 *** HOL *** |
564 |
552 |
565 * localized monotonicity predicate in theory "Orderings"; |
553 * Method "metis" proves goals by applying the Metis general-purpose |
566 integrated lemmas max_of_mono and min_of_mono with this predicate. |
554 resolution prover (see also http://gilith.com/software/metis/). |
|
555 Examples are in the directory MetisExamples. WARNING: the |
|
556 Isabelle/HOL-Metis integration does not yet work properly with |
|
557 multi-threading. |
|
558 |
|
559 * Command 'sledgehammer' invokes external automatic theorem provers as |
|
560 background processes. It generates calls to the "metis" method if |
|
561 successful. These can be pasted into the proof. Users do not have to |
|
562 wait for the automatic provers to return. WARNING: does not really |
|
563 work with multi-threading. |
|
564 |
|
565 * Localized monotonicity predicate in theory "Orderings"; integrated |
|
566 lemmas max_of_mono and min_of_mono with this predicate. |
567 INCOMPATIBILITY. |
567 INCOMPATIBILITY. |
568 |
568 |
569 * class "div" now inherits from class "times" rather than "type". |
569 * Class "div" now inherits from class "times" rather than "type". |
570 INCOMPATIBILITY. |
570 INCOMPATIBILITY. |
571 |
571 |
572 * New "auto_quickcheck" feature tests outermost goal statements for |
572 * New "auto_quickcheck" feature tests outermost goal statements for |
573 potential counter-examples. Controlled by ML references |
573 potential counter-examples. Controlled by ML references |
574 auto_quickcheck (default true) and auto_quickcheck_time_limit (default |
574 auto_quickcheck (default true) and auto_quickcheck_time_limit (default |
575 5000 milliseconds). |
575 5000 milliseconds). Fails silently if statements is outside of |
|
576 executable fragment, or any other codgenerator problem occurs. |
576 |
577 |
577 * Internal reorganisation of `size' of datatypes: size theorems |
578 * Internal reorganisation of `size' of datatypes: size theorems |
578 "foo.size" are no longer subsumed by "foo.simps" (but are still |
579 "foo.size" are no longer subsumed by "foo.simps" (but are still |
579 simplification rules by default!); theorems "prod.size" now named |
580 simplification rules by default!); theorems "prod.size" now named |
580 "*.size" |
581 "*.size" |
592 with new class dense_linear_order. |
593 with new class dense_linear_order. |
593 |
594 |
594 * HOL/Finite_Set: "name-space" locales Lattice, Distrib_lattice, |
595 * HOL/Finite_Set: "name-space" locales Lattice, Distrib_lattice, |
595 Linorder etc. have disappeared; operations defined in terms of |
596 Linorder etc. have disappeared; operations defined in terms of |
596 fold_set now are named Inf_fin, Sup_fin. INCOMPATIBILITY. |
597 fold_set now are named Inf_fin, Sup_fin. INCOMPATIBILITY. |
|
598 |
|
599 * HOL/Nat: neq0_conv no longer declared as iff. INCOMPATIBILITY. |
597 |
600 |
598 * HOL-Word: New extensive library and type for generic, fixed size |
601 * HOL-Word: New extensive library and type for generic, fixed size |
599 machine words, with arithemtic, bit-wise, shifting and rotating |
602 machine words, with arithemtic, bit-wise, shifting and rotating |
600 operations, reflection into int, nat, and bool lists, automation for |
603 operations, reflection into int, nat, and bool lists, automation for |
601 linear arithmetic (by automatic reflection into nat or int), including |
604 linear arithmetic (by automatic reflection into nat or int), including |
721 rule) before the above elimination rule is applicable. |
724 rule) before the above elimination rule is applicable. |
722 |
725 |
723 - The elimination or case analysis rules for (mutually) inductive |
726 - The elimination or case analysis rules for (mutually) inductive |
724 sets or predicates are now called "p_1.cases" ... "p_k.cases". The |
727 sets or predicates are now called "p_1.cases" ... "p_k.cases". The |
725 list of rules "p_1_..._p_k.elims" is no longer available. |
728 list of rules "p_1_..._p_k.elims" is no longer available. |
726 |
|
727 * Method "metis" proves goals by applying the Metis general-purpose |
|
728 resolution prover. Examples are in the directory MetisExamples. See |
|
729 also http://gilith.com/software/metis/ |
|
730 |
|
731 WARNING: the Isabelle/HOL-Metis integration does not yet work properly |
|
732 with multi-threading. |
|
733 |
|
734 * Command 'sledgehammer' invokes external automatic theorem provers as |
|
735 background processes. It generates calls to the "metis" method if |
|
736 successful. These can be pasted into the proof. Users do not have to |
|
737 wait for the automatic provers to return. |
|
738 |
729 |
739 * Case-expressions allow arbitrary constructor-patterns (including |
730 * Case-expressions allow arbitrary constructor-patterns (including |
740 "_") and take their order into account, like in functional |
731 "_") and take their order into account, like in functional |
741 programming. Internally, this is translated into nested |
732 programming. Internally, this is translated into nested |
742 case-expressions; missing cases are added and mapped to the predefined |
733 case-expressions; missing cases are added and mapped to the predefined |