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 |