NEWS
changeset 47856 57d1df2f2a0f
parent 47855 1246d847b8c1
child 47866 2cc26ddd8298
child 47887 4e9c06c194d9
equal deleted inserted replaced
47855:1246d847b8c1 47856:57d1df2f2a0f
    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