NEWS
changeset 25177 f9ced25685e0
parent 25163 f737a88a3248
child 25184 712ab7bd9512
equal deleted inserted replaced
25176:c5f80d70537e 25177:f9ced25685e0
   115 implicit parameters according to the locale context), and polymorphic
   115 implicit parameters according to the locale context), and polymorphic
   116 constants with qualified polymorphism (according to the class
   116 constants with qualified polymorphism (according to the class
   117 context).  Within the body context of a 'class' target, a separate
   117 context).  Within the body context of a 'class' target, a separate
   118 syntax layer ("user space type system") takes care of converting
   118 syntax layer ("user space type system") takes care of converting
   119 between global polymorphic consts and internal locale representation.
   119 between global polymorphic consts and internal locale representation.
   120 See HOL/ex/Classpackage.thy for examples (as well as main HOL).
   120 See src/HOL/ex/Classpackage.thy for examples (as well as main HOL).
   121 
   121 
   122 * Yet another code generator framework allows to generate executable
   122 * Yet another code generator framework allows to generate executable
   123 code for ML and Haskell (including Isabelle classes).  A short usage
   123 code for ML and Haskell (including Isabelle classes).  A short usage
   124 sketch:
   124 sketch:
   125 
   125 
   157       {(target) <and-list of class target syntax>}+
   157       {(target) <and-list of class target syntax>}+
   158         where class target syntax ::= <class name> {where {<classop> == <target syntax>}+}?
   158         where class target syntax ::= <class name> {where {<classop> == <target syntax>}+}?
   159 
   159 
   160 code_instance and code_class only apply to target Haskell.
   160 code_instance and code_class only apply to target Haskell.
   161 
   161 
   162 For example usage see HOL/ex/Codegenerator.thy and
   162 For example usage see src/HOL/ex/Codegenerator.thy and
   163 HOL/ex/Codegenerator_Pretty.thy.  A separate tutorial on code
   163 src/HOL/ex/Codegenerator_Pretty.thy.  A separate tutorial on code
   164 generation from Isabelle/HOL theories is available via "isatool doc
   164 generation from Isabelle/HOL theories is available via "isatool doc
   165 codegen".
   165 codegen".
   166 
   166 
   167 * Code generator: consts in 'consts_code' Isar commands are now
   167 * Code generator: consts in 'consts_code' Isar commands are now
   168 referred to by usual term syntax (including optional type
   168 referred to by usual term syntax (including optional type
   410 These specifications may be also used in a locale context.  Then the
   410 These specifications may be also used in a locale context.  Then the
   411 constants being introduced depend on certain fixed parameters, and the
   411 constants being introduced depend on certain fixed parameters, and the
   412 constant name is qualified by the locale base name.  An internal
   412 constant name is qualified by the locale base name.  An internal
   413 abbreviation takes care for convenient input and output, making the
   413 abbreviation takes care for convenient input and output, making the
   414 parameters implicit and using the original short name.  See also
   414 parameters implicit and using the original short name.  See also
   415 HOL/ex/Abstract_NAT.thy for an example of deriving polymorphic
   415 src/HOL/ex/Abstract_NAT.thy for an example of deriving polymorphic
   416 entities from a monomorphic theory.
   416 entities from a monomorphic theory.
   417 
   417 
   418 Presently, abbreviations are only available 'in' a target locale, but
   418 Presently, abbreviations are only available 'in' a target locale, but
   419 not inherited by general import expressions.  Also note that
   419 not inherited by general import expressions.  Also note that
   420 'abbreviation' may be used as a type-safe replacement for 'syntax' +
   420 'abbreviation' may be used as a type-safe replacement for 'syntax' +
   478 * Method "induct": improved internal context management to support
   478 * Method "induct": improved internal context management to support
   479 local fixes and defines on-the-fly. Thus explicit meta-level
   479 local fixes and defines on-the-fly. Thus explicit meta-level
   480 connectives !!  and ==> are rarely required anymore in inductive goals
   480 connectives !!  and ==> are rarely required anymore in inductive goals
   481 (using object-logic connectives for this purpose has been long
   481 (using object-logic connectives for this purpose has been long
   482 obsolete anyway). Common proof patterns are explained in
   482 obsolete anyway). Common proof patterns are explained in
   483 HOL/Induct/Common_Patterns.thy, see also HOL/Isar_examples/Puzzle.thy
   483 src/HOL/Induct/Common_Patterns.thy, see also
   484 and src/HOL/Lambda for realistic examples.
   484 src/HOL/Isar_examples/Puzzle.thy and src/HOL/Lambda for realistic
       
   485 examples.
   485 
   486 
   486 * Method "induct": improved handling of simultaneous goals. Instead of
   487 * Method "induct": improved handling of simultaneous goals. Instead of
   487 introducing object-level conjunction, the statement is now split into
   488 introducing object-level conjunction, the statement is now split into
   488 several conclusions, while the corresponding symbolic cases are nested
   489 several conclusions, while the corresponding symbolic cases are nested
   489 accordingly. INCOMPATIBILITY, proofs need to be structured explicitly,
   490 accordingly. INCOMPATIBILITY, proofs need to be structured explicitly,
   490 see HOL/Induct/Common_Patterns.thy, for example.
   491 see src/HOL/Induct/Common_Patterns.thy, for example.
   491 
   492 
   492 * Method "induct": mutual induction rules are now specified as a list
   493 * Method "induct": mutual induction rules are now specified as a list
   493 of rule sharing the same induction cases. HOL packages usually provide
   494 of rule sharing the same induction cases. HOL packages usually provide
   494 foo_bar.inducts for mutually defined items foo and bar (e.g. inductive
   495 foo_bar.inducts for mutually defined items foo and bar (e.g. inductive
   495 predicates/sets or datatypes). INCOMPATIBILITY, users need to specify
   496 predicates/sets or datatypes). INCOMPATIBILITY, users need to specify
   674     | rule_1: "... ==> p z_1 ... z_m t_1_1 ... t_1_n"
   675     | rule_1: "... ==> p z_1 ... z_m t_1_1 ... t_1_n"
   675     | ...
   676     | ...
   676 
   677 
   677   if the additional syntax "p ..." is required.
   678   if the additional syntax "p ..." is required.
   678 
   679 
   679   Numerous examples can be found in the subdirectories HOL/Auth, HOL/Bali,
   680   Numerous examples can be found in the subdirectories src/HOL/Auth,
   680   HOL/Induct, and HOL/MicroJava.
   681   src/HOL/Bali, src/HOL/Induct, and src/HOL/MicroJava.
   681 
   682 
   682   INCOMPATIBILITIES:
   683   INCOMPATIBILITIES:
   683 
   684 
   684   - Since declaration and definition of inductive sets or predicates
   685   - Since declaration and definition of inductive sets or predicates
   685     is no longer separated, abbreviations involving the newly
   686     is no longer separated, abbreviations involving the newly
   787 
   788 
   788 * New function listsum :: 'a list => 'a for arbitrary monoids.
   789 * New function listsum :: 'a list => 'a for arbitrary monoids.
   789 Special syntax: "SUM x <- xs. f x" (and latex variants)
   790 Special syntax: "SUM x <- xs. f x" (and latex variants)
   790 
   791 
   791 * New syntax for Haskell-like list comprehension (input only), eg.
   792 * New syntax for Haskell-like list comprehension (input only), eg.
   792 [(x,y). x <- xs, y <- ys, x ~= y], see also HOL/List.thy.
   793 [(x,y). x <- xs, y <- ys, x ~= y], see also src/HOL/List.thy.
   793 
   794 
   794 * The special syntax for function "filter" has changed from [x :
   795 * The special syntax for function "filter" has changed from [x :
   795 xs. P] to [x <- xs. P] to avoid an ambiguity caused by list
   796 xs. P] to [x <- xs. P] to avoid an ambiguity caused by list
   796 comprehension syntax, and for uniformity.  INCOMPATIBILITY.
   797 comprehension syntax, and for uniformity.  INCOMPATIBILITY.
   797 
   798 
   799 defined on nat only, as an abbreviation for [a..<Suc b]
   800 defined on nat only, as an abbreviation for [a..<Suc b]
   800 INCOMPATIBILITY.
   801 INCOMPATIBILITY.
   801 
   802 
   802 * Renamed lemma "set_take_whileD"  to "set_takeWhileD".
   803 * Renamed lemma "set_take_whileD"  to "set_takeWhileD".
   803 
   804 
   804 * New functions "sorted" and "sort" in HOL/List.thy.
   805 * New functions "sorted" and "sort" in src/HOL/List.thy.
   805 
   806 
   806 * Function "sgn" is now overloaded and available on int, real, complex
   807 * Function "sgn" is now overloaded and available on int, real, complex
   807 (and other numeric types), using class "sgn".  Two possible defs of
   808 (and other numeric types), using class "sgn".  Two possible defs of
   808 sgn are given as equational assumptions in the classes sgn_if and
   809 sgn are given as equational assumptions in the classes sgn_if and
   809 sgn_div_norm; ordered_idom now also inherits from sgn_if.
   810 sgn_div_norm; ordered_idom now also inherits from sgn_if.
   817 * Lemma collections ring_eq_simps, group_eq_simps and ring_distrib
   818 * Lemma collections ring_eq_simps, group_eq_simps and ring_distrib
   818 have been improved and renamed to ring_simps, group_simps and
   819 have been improved and renamed to ring_simps, group_simps and
   819 ring_distribs.  Removed lemmas field_xyz in theory Ring_and_Field
   820 ring_distribs.  Removed lemmas field_xyz in theory Ring_and_Field
   820 because they were subsumed by lemmas xyz.  INCOMPATIBILITY.
   821 because they were subsumed by lemmas xyz.  INCOMPATIBILITY.
   821 
   822 
   822 * Library/Commutative_Ring.thy: switched from recdef to function
   823 * Theory Library/Commutative_Ring: switched from recdef to function
   823 package; constants add, mul, pow now curried.  Infix syntax for
   824 package; constants add, mul, pow now curried.  Infix syntax for
   824 algebraic operations.
   825 algebraic operations.
   825 
   826 
   826 * More uniform lattice theory development in HOL.
   827 * More uniform lattice theory development in HOL.
   827 
   828 
  1001       of former Numeral.bin_pred and Numeral.bin_succ.
  1002       of former Numeral.bin_pred and Numeral.bin_succ.
  1002   - Use integer operations instead of bin_add, bin_mult and so on.
  1003   - Use integer operations instead of bin_add, bin_mult and so on.
  1003   - Numeral simplification theorems named Numeral.numeral_simps instead of Bin_simps.
  1004   - Numeral simplification theorems named Numeral.numeral_simps instead of Bin_simps.
  1004   - ML structure Bin_Simprocs now named Int_Numeral_Base_Simprocs.
  1005   - ML structure Bin_Simprocs now named Int_Numeral_Base_Simprocs.
  1005 
  1006 
  1006 See HOL/Integ/IntArith.thy for an example setup.
  1007 See src/HOL/Integ/IntArith.thy for an example setup.
  1007 
  1008 
  1008 * Command 'normal_form' computes the normal form of a
  1009 * Command 'normal_form' computes the normal form of a term that may
  1009 term that may contain free variables.  For example
  1010 contain free variables.  For example ``normal_form "rev [a, b, c]"''
  1010 ``normal_form "rev [a, b, c]"'' produces ``[b, c, a]'' (without proof).
  1011 produces ``[b, c, a]'' (without proof).  This command is suitable for
  1011 This command is suitable for heavy-duty computations because the functions
  1012 heavy-duty computations because the functions are compiled to ML
  1012 are compiled to ML first.  Correspondingly, a method ``normalization''
  1013 first.  Correspondingly, a method "normalization" is provided.  See
  1013 is provided.  See further HOL/ex/NormalForm.thy and Tools/nbe.ML.
  1014 further src/HOL/ex/NormalForm.thy and src/Tools/nbe.ML.
  1014 
  1015 
  1015 * Alternative iff syntax "A <-> B" for equality on bool (with priority
  1016 * Alternative iff syntax "A <-> B" for equality on bool (with priority
  1016 25 like -->); output depends on the "iff" print_mode, the default is
  1017 25 like -->); output depends on the "iff" print_mode, the default is
  1017 "A = B" (with priority 50).
  1018 "A = B" (with priority 50).
  1018 
  1019 
  1118 are as explained above. corr_thm is a theorem for I vs (f t) = I vs t,
  1119 are as explained above. corr_thm is a theorem for I vs (f t) = I vs t,
  1119 where f is supposed to be a computable function (in the sense of code
  1120 where f is supposed to be a computable function (in the sense of code
  1120 generattion). The method uses reify to compute s and xs as above then
  1121 generattion). The method uses reify to compute s and xs as above then
  1121 applies corr_thm and uses normalization by evaluation to "prove" f s =
  1122 applies corr_thm and uses normalization by evaluation to "prove" f s =
  1122 r and finally gets the theorem t = r, which is again applied to the
  1123 r and finally gets the theorem t = r, which is again applied to the
  1123 subgoal. An Example is available in HOL/ex/ReflectionEx.thy.
  1124 subgoal. An Example is available in src/HOL/ex/ReflectionEx.thy.
  1124 
  1125 
  1125 * Reflection: Automatic reification now handels binding, an example
  1126 * Reflection: Automatic reification now handels binding, an example is
  1126 is available in HOL/ex/ReflectionEx.thy
  1127 available in src/HOL/ex/ReflectionEx.thy
  1127 
  1128 
  1128 
  1129 
  1129 *** HOL-Complex ***
  1130 *** HOL-Complex ***
  1130 
  1131 
  1131 * Hyperreal: Functions root and sqrt are now defined on negative real
  1132 * Hyperreal: Functions root and sqrt are now defined on negative real
  1200 
  1201 
  1201 
  1202 
  1202 *** HOL-Nominal ***
  1203 *** HOL-Nominal ***
  1203 
  1204 
  1204 * Substantial, yet incomplete support for nominal datatypes (binding
  1205 * Substantial, yet incomplete support for nominal datatypes (binding
  1205 structures) based on HOL-Nominal logic.  See HOL/Nominal and
  1206 structures) based on HOL-Nominal logic.  See src/HOL/Nominal and
  1206 HOL/Nominal/Examples.  Prespective users should consult
  1207 src/HOL/Nominal/Examples.  Prospective users should consult
  1207 http://isabelle.in.tum.de/nominal/
  1208 http://isabelle.in.tum.de/nominal/
  1208 
  1209 
  1209 
  1210 
  1210 *** ML ***
  1211 *** ML ***
  1211 
  1212