74 manual. |
74 manual. |
75 |
75 |
76 |
76 |
77 *** Pure *** |
77 *** Pure *** |
78 |
78 |
79 * Discontinued old "prems" fact, which used to refer to the accidental |
79 * Command 'definition' no longer exports the foundational "raw_def" |
80 collection of foundational premises in the context (already marked as |
80 into the user context. Minor INCOMPATIBILITY, may use the regular |
81 legacy since Isabelle2011). |
81 "def" result with attribute "abs_def" to imitate the old version. |
|
82 |
|
83 * Attribute "abs_def" turns an equation of the form "f x y == t" into |
|
84 "f == %x y. t", which ensures that "simp" or "unfold" steps always |
|
85 expand it. This also works for object-logic equality. (Formerly |
|
86 undocumented feature.) |
|
87 |
|
88 * Sort constraints are now propagated in simultaneous statements, just |
|
89 like type constraints. INCOMPATIBILITY in rare situations, where |
|
90 distinct sorts used to be assigned accidentally. For example: |
|
91 |
|
92 lemma "P (x::'a::foo)" and "Q (y::'a::bar)" -- "now illegal" |
|
93 |
|
94 lemma "P (x::'a)" and "Q (y::'a::bar)" |
|
95 -- "now uniform 'a::bar instead of default sort for first occurrence (!)" |
82 |
96 |
83 * Rule composition via attribute "OF" (or ML functions OF/MRS) is more |
97 * Rule composition via attribute "OF" (or ML functions OF/MRS) is more |
84 tolerant against multiple unifiers, as long as the final result is |
98 tolerant against multiple unifiers, as long as the final result is |
85 unique. (As before, rules are composed in canonical right-to-left |
99 unique. (As before, rules are composed in canonical right-to-left |
86 order to accommodate newly introduced premises.) |
100 order to accommodate newly introduced premises.) |
87 |
101 |
88 * Command 'definition' no longer exports the foundational "raw_def" |
|
89 into the user context. Minor INCOMPATIBILITY, may use the regular |
|
90 "def" result with attribute "abs_def" to imitate the old version. |
|
91 |
|
92 * Attribute "abs_def" turns an equation of the form "f x y == t" into |
|
93 "f == %x y. t", which ensures that "simp" or "unfold" steps always |
|
94 expand it. This also works for object-logic equality. (Formerly |
|
95 undocumented feature.) |
|
96 |
|
97 * Renamed some inner syntax categories: |
102 * Renamed some inner syntax categories: |
98 |
103 |
99 num ~> num_token |
104 num ~> num_token |
100 xnum ~> xnum_token |
105 xnum ~> xnum_token |
101 xstr ~> str_token |
106 xstr ~> str_token |
106 |
111 |
107 * Simplified configuration options for syntax ambiguity: see |
112 * Simplified configuration options for syntax ambiguity: see |
108 "syntax_ambiguity_warning" and "syntax_ambiguity_limit" in isar-ref |
113 "syntax_ambiguity_warning" and "syntax_ambiguity_limit" in isar-ref |
109 manual. Minor INCOMPATIBILITY. |
114 manual. Minor INCOMPATIBILITY. |
110 |
115 |
111 * Obsolete command 'types' has been discontinued. Use 'type_synonym' |
116 * Discontinued configuration option "syntax_positions": atomic terms |
112 instead. INCOMPATIBILITY. |
117 in parse trees are always annotated by position constraints. |
113 |
118 |
114 * Old code generator for SML and its commands 'code_module', |
119 * Old code generator for SML and its commands 'code_module', |
115 'code_library', 'consts_code', 'types_code' have been discontinued. |
120 'code_library', 'consts_code', 'types_code' have been discontinued. |
116 Use commands of the generic code generator instead. INCOMPATIBILITY. |
121 Use commands of the generic code generator instead. INCOMPATIBILITY. |
117 |
122 |
123 |
128 |
124 definition [code_abbrev]: "f = t" |
129 definition [code_abbrev]: "f = t" |
125 |
130 |
126 INCOMPATIBILITY. |
131 INCOMPATIBILITY. |
127 |
132 |
128 * Sort constraints are now propagated in simultaneous statements, just |
133 * Obsolete 'types' command has been discontinued. Use 'type_synonym' |
129 like type constraints. INCOMPATIBILITY in rare situations, where |
134 instead. INCOMPATIBILITY. |
130 distinct sorts used to be assigned accidentally. For example: |
135 |
131 |
136 * Discontinued old "prems" fact, which used to refer to the accidental |
132 lemma "P (x::'a::foo)" and "Q (y::'a::bar)" -- "now illegal" |
137 collection of foundational premises in the context (already marked as |
133 |
138 legacy since Isabelle2011). |
134 lemma "P (x::'a)" and "Q (y::'a::bar)" |
|
135 -- "now uniform 'a::bar instead of default sort for first occurrence (!)" |
|
136 |
|
137 * Discontinued configuration option "syntax_positions": atomic terms |
|
138 in parse trees are always annotated by position constraints. |
|
139 |
139 |
140 |
140 |
141 *** HOL *** |
141 *** HOL *** |
142 |
142 |
143 * Type 'a set is now a proper type constructor (just as before |
143 * Type 'a set is now a proper type constructor (just as before |
181 automatically support numerals now, so more simp rules and |
181 automatically support numerals now, so more simp rules and |
182 simprocs may now apply within the proof. |
182 simprocs may now apply within the proof. |
183 |
183 |
184 - Definitions and theorems using old constructors Pls/Min/Bit0/Bit1: |
184 - Definitions and theorems using old constructors Pls/Min/Bit0/Bit1: |
185 Redefine using other integer operations. |
185 Redefine using other integer operations. |
186 |
|
187 * Records: code generation can be switched off manually with |
|
188 declare [[record_coden = false]]. Default remains true. |
|
189 |
|
190 * New "case_product" attribute to generate a case rule doing multiple |
|
191 case distinctions at the same time. E.g. |
|
192 |
|
193 list.exhaust [case_product nat.exhaust] |
|
194 |
|
195 produces a rule which can be used to perform case distinction on both |
|
196 a list and a nat. |
|
197 |
186 |
198 * Transfer: New package intended to generalize the existing |
187 * Transfer: New package intended to generalize the existing |
199 "descending" method and related theorem attributes from the Quotient |
188 "descending" method and related theorem attributes from the Quotient |
200 package. (Not all functionality is implemented yet, but future |
189 package. (Not all functionality is implemented yet, but future |
201 development will focus on Transfer as an eventual replacement for the |
190 development will focus on Transfer as an eventual replacement for the |
334 |
323 |
335 * SMT: Renamed "smt_fixed" option to "smt_read_only_certificates". |
324 * SMT: Renamed "smt_fixed" option to "smt_read_only_certificates". |
336 |
325 |
337 * Command 'try0': Renamed from 'try_methods'. INCOMPATIBILITY. |
326 * Command 'try0': Renamed from 'try_methods'. INCOMPATIBILITY. |
338 |
327 |
|
328 * New "case_product" attribute to generate a case rule doing multiple |
|
329 case distinctions at the same time. E.g. |
|
330 |
|
331 list.exhaust [case_product nat.exhaust] |
|
332 |
|
333 produces a rule which can be used to perform case distinction on both |
|
334 a list and a nat. |
|
335 |
339 * New "eventually_elim" method as a generalized variant of the |
336 * New "eventually_elim" method as a generalized variant of the |
340 eventually_elim* rules. Supports structured proofs. |
337 eventually_elim* rules. Supports structured proofs. |
341 |
|
342 * 'datatype' specifications allow explicit sort constraints. |
|
343 |
338 |
344 * Typedef with implicit set definition is considered legacy. Use |
339 * Typedef with implicit set definition is considered legacy. Use |
345 "typedef (open)" form instead, which will eventually become the |
340 "typedef (open)" form instead, which will eventually become the |
346 default. |
341 default. |
|
342 |
|
343 * Record: code generation can be switched off manually with |
|
344 |
|
345 declare [[record_coden = false]] -- "default true" |
|
346 |
|
347 * Datatype: type parameters allow explicit sort constraints. |
347 |
348 |
348 * Concrete syntax for case expressions includes constraints for source |
349 * Concrete syntax for case expressions includes constraints for source |
349 positions, and thus produces Prover IDE markup for its bindings. |
350 positions, and thus produces Prover IDE markup for its bindings. |
350 INCOMPATIBILITY for old-style syntax translations that augment the |
351 INCOMPATIBILITY for old-style syntax translations that augment the |
351 pattern notation; e.g. see src/HOL/HOLCF/One.thy for translations of |
352 pattern notation; e.g. see src/HOL/HOLCF/One.thy for translations of |
514 fold_conv_foldr and fold_rev. |
515 fold_conv_foldr and fold_rev. |
515 |
516 |
516 * Congruence rules Option.map_cong and Option.bind_cong for recursion |
517 * Congruence rules Option.map_cong and Option.bind_cong for recursion |
517 through option types. |
518 through option types. |
518 |
519 |
|
520 * "Transitive_Closure.ntrancl": bounded transitive closure on |
|
521 relations. |
|
522 |
|
523 * Constant "Set.not_member" now qualified. INCOMPATIBILITY. |
|
524 |
|
525 * Theory Int: Discontinued many legacy theorems specific to type int. |
|
526 INCOMPATIBILITY, use the corresponding generic theorems instead. |
|
527 |
|
528 zminus_zminus ~> minus_minus |
|
529 zminus_0 ~> minus_zero |
|
530 zminus_zadd_distrib ~> minus_add_distrib |
|
531 zadd_commute ~> add_commute |
|
532 zadd_assoc ~> add_assoc |
|
533 zadd_left_commute ~> add_left_commute |
|
534 zadd_ac ~> add_ac |
|
535 zmult_ac ~> mult_ac |
|
536 zadd_0 ~> add_0_left |
|
537 zadd_0_right ~> add_0_right |
|
538 zadd_zminus_inverse2 ~> left_minus |
|
539 zmult_zminus ~> mult_minus_left |
|
540 zmult_commute ~> mult_commute |
|
541 zmult_assoc ~> mult_assoc |
|
542 zadd_zmult_distrib ~> left_distrib |
|
543 zadd_zmult_distrib2 ~> right_distrib |
|
544 zdiff_zmult_distrib ~> left_diff_distrib |
|
545 zdiff_zmult_distrib2 ~> right_diff_distrib |
|
546 zmult_1 ~> mult_1_left |
|
547 zmult_1_right ~> mult_1_right |
|
548 zle_refl ~> order_refl |
|
549 zle_trans ~> order_trans |
|
550 zle_antisym ~> order_antisym |
|
551 zle_linear ~> linorder_linear |
|
552 zless_linear ~> linorder_less_linear |
|
553 zadd_left_mono ~> add_left_mono |
|
554 zadd_strict_right_mono ~> add_strict_right_mono |
|
555 zadd_zless_mono ~> add_less_le_mono |
|
556 int_0_less_1 ~> zero_less_one |
|
557 int_0_neq_1 ~> zero_neq_one |
|
558 zless_le ~> less_le |
|
559 zpower_zadd_distrib ~> power_add |
|
560 zero_less_zpower_abs_iff ~> zero_less_power_abs_iff |
|
561 zero_le_zpower_abs ~> zero_le_power_abs |
|
562 |
|
563 * Theory Deriv: Renamed |
|
564 |
|
565 DERIV_nonneg_imp_nonincreasing ~> DERIV_nonneg_imp_nondecreasing |
|
566 |
|
567 * Theory Library/Multiset: Improved code generation of multisets. |
|
568 |
519 * Theory HOL/Library/Set_Algebras: Addition and multiplication on sets |
569 * Theory HOL/Library/Set_Algebras: Addition and multiplication on sets |
520 are expressed via type classes again. The special syntax |
570 are expressed via type classes again. The special syntax |
521 \<oplus>/\<otimes> has been replaced by plain +/*. Removed constant |
571 \<oplus>/\<otimes> has been replaced by plain +/*. Removed constant |
522 setsum_set, which is now subsumed by Big_Operators.setsum. |
572 setsum_set, which is now subsumed by Big_Operators.setsum. |
523 INCOMPATIBILITY. |
573 INCOMPATIBILITY. |
524 |
|
525 * New theory HOL/Library/DAList provides an abstract type for |
|
526 association lists with distinct keys. |
|
527 |
574 |
528 * Theory HOL/Library/Diagonalize has been removed. INCOMPATIBILITY, |
575 * Theory HOL/Library/Diagonalize has been removed. INCOMPATIBILITY, |
529 use theory HOL/Library/Nat_Bijection instead. |
576 use theory HOL/Library/Nat_Bijection instead. |
530 |
577 |
531 * Theory HOL/Library/RBT_Impl: Backing implementation of red-black |
578 * Theory HOL/Library/RBT_Impl: Backing implementation of red-black |
702 lapprox_rat_bottom, normalized_float, rapprox_posrat, |
749 lapprox_rat_bottom, normalized_float, rapprox_posrat, |
703 rapprox_posrat_le1, rapprox_rat, real_of_float_ge0_exp, |
750 rapprox_posrat_le1, rapprox_rat, real_of_float_ge0_exp, |
704 real_of_float_neg_exp, real_of_float_nge0_exp, round_down floor_fl, |
751 real_of_float_neg_exp, real_of_float_nge0_exp, round_down floor_fl, |
705 round_up, zero_le_float, zero_less_float |
752 round_up, zero_le_float, zero_less_float |
706 |
753 |
707 * "Transitive_Closure.ntrancl": bounded transitive closure on |
754 * New theory HOL/Library/DAList provides an abstract type for |
708 relations. |
755 association lists with distinct keys. |
709 |
|
710 * Constant "Set.not_member" now qualified. INCOMPATIBILITY. |
|
711 |
|
712 * Theory Int: Discontinued many legacy theorems specific to type int. |
|
713 INCOMPATIBILITY, use the corresponding generic theorems instead. |
|
714 |
|
715 zminus_zminus ~> minus_minus |
|
716 zminus_0 ~> minus_zero |
|
717 zminus_zadd_distrib ~> minus_add_distrib |
|
718 zadd_commute ~> add_commute |
|
719 zadd_assoc ~> add_assoc |
|
720 zadd_left_commute ~> add_left_commute |
|
721 zadd_ac ~> add_ac |
|
722 zmult_ac ~> mult_ac |
|
723 zadd_0 ~> add_0_left |
|
724 zadd_0_right ~> add_0_right |
|
725 zadd_zminus_inverse2 ~> left_minus |
|
726 zmult_zminus ~> mult_minus_left |
|
727 zmult_commute ~> mult_commute |
|
728 zmult_assoc ~> mult_assoc |
|
729 zadd_zmult_distrib ~> left_distrib |
|
730 zadd_zmult_distrib2 ~> right_distrib |
|
731 zdiff_zmult_distrib ~> left_diff_distrib |
|
732 zdiff_zmult_distrib2 ~> right_diff_distrib |
|
733 zmult_1 ~> mult_1_left |
|
734 zmult_1_right ~> mult_1_right |
|
735 zle_refl ~> order_refl |
|
736 zle_trans ~> order_trans |
|
737 zle_antisym ~> order_antisym |
|
738 zle_linear ~> linorder_linear |
|
739 zless_linear ~> linorder_less_linear |
|
740 zadd_left_mono ~> add_left_mono |
|
741 zadd_strict_right_mono ~> add_strict_right_mono |
|
742 zadd_zless_mono ~> add_less_le_mono |
|
743 int_0_less_1 ~> zero_less_one |
|
744 int_0_neq_1 ~> zero_neq_one |
|
745 zless_le ~> less_le |
|
746 zpower_zadd_distrib ~> power_add |
|
747 zero_less_zpower_abs_iff ~> zero_less_power_abs_iff |
|
748 zero_le_zpower_abs ~> zero_le_power_abs |
|
749 |
|
750 * Theory Deriv: Renamed |
|
751 |
|
752 DERIV_nonneg_imp_nonincreasing ~> DERIV_nonneg_imp_nondecreasing |
|
753 |
756 |
754 * Session HOL-Import: Re-implementation from scratch is faster, |
757 * Session HOL-Import: Re-implementation from scratch is faster, |
755 simpler, and more scalable. Requires a proof bundle, which is |
758 simpler, and more scalable. Requires a proof bundle, which is |
756 available as an external component. Discontinued old (and mostly |
759 available as an external component. Discontinued old (and mostly |
757 dead) Importer for HOL4 and HOL Light. INCOMPATIBILITY. |
760 dead) Importer for HOL4 and HOL Light. INCOMPATIBILITY. |
800 word_of_int_succ_hom ~> wi_hom_succ |
803 word_of_int_succ_hom ~> wi_hom_succ |
801 word_of_int_pred_hom ~> wi_hom_pred |
804 word_of_int_pred_hom ~> wi_hom_pred |
802 word_of_int_0_hom ~> word_0_wi |
805 word_of_int_0_hom ~> word_0_wi |
803 word_of_int_1_hom ~> word_1_wi |
806 word_of_int_1_hom ~> word_1_wi |
804 |
807 |
805 * Theory Library/Multiset: Improved code generation of multisets. |
|
806 |
|
807 * Session HOL-Word: New proof method "word_bitwise" for splitting |
808 * Session HOL-Word: New proof method "word_bitwise" for splitting |
808 machine word equalities and inequalities into logical circuits, |
809 machine word equalities and inequalities into logical circuits, |
809 defined in HOL/Word/WordBitwise.thy. Supports addition, subtraction, |
810 defined in HOL/Word/WordBitwise.thy. Supports addition, subtraction, |
810 multiplication, shifting by constants, bitwise operators and numeric |
811 multiplication, shifting by constants, bitwise operators and numeric |
811 constants. Requires fixed-length word types, not 'a word. Solves |
812 constants. Requires fixed-length word types, not 'a word. Solves |
814 HOL/Word/Examples/WordExamples.thy. |
815 HOL/Word/Examples/WordExamples.thy. |
815 |
816 |
816 * Session HOL-Probability: Introduced the type "'a measure" to |
817 * Session HOL-Probability: Introduced the type "'a measure" to |
817 represent measures, this replaces the records 'a algebra and 'a |
818 represent measures, this replaces the records 'a algebra and 'a |
818 measure_space. The locales based on subset_class now have two |
819 measure_space. The locales based on subset_class now have two |
819 locale-parameters the space \<Omega> and the set of measurable sets |
820 locale-parameters the space \<Omega> and the set of measurable sets M. |
820 M. The product of probability spaces uses now the same constant as |
821 The product of probability spaces uses now the same constant as the |
821 the finite product of sigma-finite measure spaces "PiM :: ('i => 'a) |
822 finite product of sigma-finite measure spaces "PiM :: ('i => 'a) |
822 measure". Most constants are defined now outside of locales and gain |
823 measure". Most constants are defined now outside of locales and gain |
823 an additional parameter, like null_sets, almost_eventually or \<mu>'. |
824 an additional parameter, like null_sets, almost_eventually or \<mu>'. |
824 Measure space constructions for distributions and densities now got |
825 Measure space constructions for distributions and densities now got |
825 their own constants distr and density. Instead of using locales to |
826 their own constants distr and density. Instead of using locales to |
826 describe measure spaces with a finite space, the measure count_space |
827 describe measure spaces with a finite space, the measure count_space |