NEWS
changeset 25129 de54445dc82c
parent 25127 afb5e602ce9d
child 25142 57c717b9dd59
equal deleted inserted replaced
25128:962e4f4142fa 25129:de54445dc82c
   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