NEWS
changeset 37351 f34699c3e98e
parent 37313 52dc576f1759
child 37352 c4f393759c59
equal deleted inserted replaced
37343:c333da19fe67 37351:f34699c3e98e
     3 
     3 
     4 New in Isabelle2009-2 (June 2010)
     4 New in Isabelle2009-2 (June 2010)
     5 ---------------------------------
     5 ---------------------------------
     6 
     6 
     7 *** General ***
     7 *** General ***
     8 
       
     9 * Schematic theorem statements need to be explicitly markup as such,
       
    10 via commands 'schematic_lemma', 'schematic_theorem',
       
    11 'schematic_corollary'.  Thus the relevance of the proof is made
       
    12 syntactically clear, which impacts performance in a parallel or
       
    13 asynchronous interactive environment.  Minor INCOMPATIBILITY.
       
    14 
     8 
    15 * Authentic syntax for *all* logical entities (type classes, type
     9 * Authentic syntax for *all* logical entities (type classes, type
    16 constructors, term constants): provides simple and robust
    10 constructors, term constants): provides simple and robust
    17 correspondence between formal entities and concrete syntax.  Within
    11 correspondence between formal entities and concrete syntax.  Within
    18 the parse tree / AST representations, "constants" are decorated by
    12 the parse tree / AST representations, "constants" are decorated by
    67 * Concrete syntax may be attached to local entities without a proof
    61 * Concrete syntax may be attached to local entities without a proof
    68 body, too.  This works via regular mixfix annotations for 'fix',
    62 body, too.  This works via regular mixfix annotations for 'fix',
    69 'def', 'obtain' etc. or via the explicit 'write' command, which is
    63 'def', 'obtain' etc. or via the explicit 'write' command, which is
    70 similar to the 'notation' command in theory specifications.
    64 similar to the 'notation' command in theory specifications.
    71 
    65 
    72 * Use of cumulative prems via "!" in some proof methods has been
       
    73 discontinued (legacy feature).
       
    74 
       
    75 * References 'trace_simp' and 'debug_simp' have been replaced by
       
    76 configuration options stored in the context. Enabling tracing (the
       
    77 case of debugging is similar) in proofs works via
       
    78 
       
    79   using [[trace_simp = true]]
       
    80 
       
    81 Tracing is then active for all invocations of the simplifier in
       
    82 subsequent goal refinement steps. Tracing may also still be enabled or
       
    83 disabled via the ProofGeneral settings menu.
       
    84 
       
    85 * Separate commands 'hide_class', 'hide_type', 'hide_const',
       
    86 'hide_fact' replace the former 'hide' KIND command.  Minor
       
    87 INCOMPATIBILITY.
       
    88 
       
    89 * Improved parallelism of proof term normalization: usedir -p2 -q0 is
       
    90 more efficient than combinations with -q1 or -q2.
       
    91 
       
    92 
       
    93 *** Pure ***
       
    94 
       
    95 * Predicates of locales introduced by classes carry a mandatory
       
    96 "class" prefix.  INCOMPATIBILITY.
       
    97 
       
    98 * Command 'code_reflect' allows to incorporate generated ML code into
       
    99 runtime environment; replaces immature code_datatype antiquotation.
       
   100 INCOMPATIBILITY.
       
   101 
       
   102 * Empty class specifications observe default sort.  INCOMPATIBILITY.
       
   103 
       
   104 * Old 'axclass' command has been discontinued.  Use 'class' instead.
       
   105 INCOMPATIBILITY.
       
   106 
       
   107 * Code generator: simple concept for abstract datatypes obeying
       
   108 invariants.
       
   109 
       
   110 * Local theory specifications may depend on extra type variables that
       
   111 are not present in the result type -- arguments TYPE('a) :: 'a itself
       
   112 are added internally.  For example:
       
   113 
       
   114   definition unitary :: bool where "unitary = (ALL (x::'a) y. x = y)"
       
   115 
       
   116 * Code generator: details of internal data cache have no impact on the
       
   117 user space functionality any longer.
       
   118 
       
   119 * Methods unfold_locales and intro_locales ignore non-locale subgoals.
       
   120 This is more appropriate for interpretations with 'where'.
       
   121 INCOMPATIBILITY.
       
   122 
       
   123 * Discontinued unnamed infix syntax (legacy feature for many years) --
    66 * Discontinued unnamed infix syntax (legacy feature for many years) --
   124 need to specify constant name and syntax separately.  Internal ML
    67 need to specify constant name and syntax separately.  Internal ML
   125 datatype constructors have been renamed from InfixName to Infix etc.
    68 datatype constructors have been renamed from InfixName to Infix etc.
   126 Minor INCOMPATIBILITY.
    69 Minor INCOMPATIBILITY.
   127 
    70 
       
    71 * Schematic theorem statements need to be explicitly markup as such,
       
    72 via commands 'schematic_lemma', 'schematic_theorem',
       
    73 'schematic_corollary'.  Thus the relevance of the proof is made
       
    74 syntactically clear, which impacts performance in a parallel or
       
    75 asynchronous interactive environment.  Minor INCOMPATIBILITY.
       
    76 
       
    77 * Use of cumulative prems via "!" in some proof methods has been
       
    78 discontinued (old legacy feature).
       
    79 
       
    80 * References 'trace_simp' and 'debug_simp' have been replaced by
       
    81 configuration options stored in the context. Enabling tracing (the
       
    82 case of debugging is similar) in proofs works via
       
    83 
       
    84   using [[trace_simp = true]]
       
    85 
       
    86 Tracing is then active for all invocations of the simplifier in
       
    87 subsequent goal refinement steps. Tracing may also still be enabled or
       
    88 disabled via the ProofGeneral settings menu.
       
    89 
       
    90 * Separate commands 'hide_class', 'hide_type', 'hide_const',
       
    91 'hide_fact' replace the former 'hide' KIND command.  Minor
       
    92 INCOMPATIBILITY.
       
    93 
       
    94 * Improved parallelism of proof term normalization: usedir -p2 -q0 is
       
    95 more efficient than combinations with -q1 or -q2.
       
    96 
       
    97 
       
    98 *** Pure ***
       
    99 
       
   100 * Proofterms record type-class reasoning explicitly, using the
       
   101 "unconstrain" operation internally.  This eliminates all sort
       
   102 constraints from a theorem and proof, introducing explicit
       
   103 OFCLASS-premises.  On the proof term level, this operation is
       
   104 automatically applied at theorem boundaries, such that closed proofs
       
   105 are always free of sort constraints.  INCOMPATIBILITY for tools that
       
   106 inspect proof terms.
       
   107 
       
   108 * Local theory specifications may depend on extra type variables that
       
   109 are not present in the result type -- arguments TYPE('a) :: 'a itself
       
   110 are added internally.  For example:
       
   111 
       
   112   definition unitary :: bool where "unitary = (ALL (x::'a) y. x = y)"
       
   113 
       
   114 * Predicates of locales introduced by classes carry a mandatory
       
   115 "class" prefix.  INCOMPATIBILITY.
       
   116 
       
   117 * Vacuous class specifications observe default sort.  INCOMPATIBILITY.
       
   118 
       
   119 * Old 'axclass' command has been discontinued.  INCOMPATIBILITY, use
       
   120 'class' instead.
       
   121 
       
   122 * Command 'code_reflect' allows to incorporate generated ML code into
       
   123 runtime environment; replaces immature code_datatype antiquotation.
       
   124 INCOMPATIBILITY.
       
   125 
       
   126 * Code generator: simple concept for abstract datatypes obeying
       
   127 invariants.
       
   128 
       
   129 * Code generator: details of internal data cache have no impact on the
       
   130 user space functionality any longer.
       
   131 
       
   132 * Methods "unfold_locales" and "intro_locales" ignore non-locale
       
   133 subgoals.  This is more appropriate for interpretations with 'where'.
       
   134 INCOMPATIBILITY.
       
   135 
   128 * Command 'example_proof' opens an empty proof body.  This allows to
   136 * Command 'example_proof' opens an empty proof body.  This allows to
   129 experiment with Isar, without producing any persistent result.
   137 experiment with Isar, without producing any persistent result.
   130 
   138 
   131 * Commands 'type_notation' and 'no_type_notation' declare type syntax
   139 * Commands 'type_notation' and 'no_type_notation' declare type syntax
   132 within a local theory context, with explicit checking of the
   140 within a local theory context, with explicit checking of the
   137 assumptions, which is not possible in Isabelle/Pure.
   145 assumptions, which is not possible in Isabelle/Pure.
   138 
   146 
   139 * Command 'defaultsort' has been renamed to 'default_sort', it works
   147 * Command 'defaultsort' has been renamed to 'default_sort', it works
   140 within a local theory context.  Minor INCOMPATIBILITY.
   148 within a local theory context.  Minor INCOMPATIBILITY.
   141 
   149 
   142 * Raw axioms/defs may no longer carry sort constraints, and raw defs
       
   143 may no longer carry premises. User-level specifications are
       
   144 transformed accordingly by Thm.add_axiom/add_def.
       
   145 
       
   146 * Proof terms: Type substitutions on proof constants now use canonical
       
   147 order of type variables.  INCOMPATIBILITY for tools working with proof
       
   148 terms.
       
   149 
       
   150 * New operation Thm.unconstrainT eliminates all sort constraints from
       
   151 a theorem and proof, introducing explicit OFCLASS-premises. On the
       
   152 proof term level, this operation is automatically applied at PThm
       
   153 boundaries, such that closed proofs are always free of sort
       
   154 constraints. The old (axiomatic) unconstrain operation has been
       
   155 discontinued.  INCOMPATIBILITY for tools working with proof terms.
       
   156 
       
   157 
   150 
   158 *** HOL ***
   151 *** HOL ***
       
   152 
       
   153 * Command 'typedef' now works within a local theory context -- without
       
   154 introducing dependencies on parameters or assumptions, which is not
       
   155 possible in Isabelle/Pure/HOL.  Note that the logical environment may
       
   156 contain multiple interpretations of local typedefs (with different
       
   157 non-emptiness proofs), even in a global theory context.
       
   158 
       
   159 * New package for quotient types.  Commands 'quotient_type' and
       
   160 'quotient_definition' may be used for defining types and constants by
       
   161 quotient constructions.  An example is the type of integers created by
       
   162 quotienting pairs of natural numbers:
       
   163   
       
   164   fun
       
   165     intrel :: "(nat * nat) => (nat * nat) => bool" 
       
   166   where
       
   167     "intrel (x, y) (u, v) = (x + v = u + y)"
       
   168 
       
   169   quotient_type int = "nat × nat" / intrel
       
   170     by (auto simp add: equivp_def expand_fun_eq)
       
   171   
       
   172   quotient_definition
       
   173     "0::int" is "(0::nat, 0::nat)"
       
   174 
       
   175 The method "lifting" can be used to lift of theorems from the
       
   176 underlying "raw" type to the quotient type.  The example
       
   177 src/HOL/Quotient_Examples/FSet.thy includes such a quotient
       
   178 construction and provides a reasoning infrastructure for finite sets.
       
   179 
       
   180 * Renamed Library/Quotient.thy to Library/Quotient_Type.thy to avoid
       
   181 clash with new theory Quotient in Main HOL.
       
   182 
       
   183 * Moved the SMT binding into the main HOL session, eliminating
       
   184 separate HOL-SMT session.
   159 
   185 
   160 * List membership infix mem operation is only an input abbreviation.
   186 * List membership infix mem operation is only an input abbreviation.
   161 INCOMPATIBILITY.
   187 INCOMPATIBILITY.
   162 
   188 
   163 * Theory Library/Word.thy has been removed.  Use library Word/Word.thy
   189 * Theory Library/Word.thy has been removed.  Use library Word/Word.thy
   175 
   201 
   176 * Dropped normalizing_semiring etc; use the facts in semiring classes
   202 * Dropped normalizing_semiring etc; use the facts in semiring classes
   177 instead.  INCOMPATIBILITY.
   203 instead.  INCOMPATIBILITY.
   178 
   204 
   179 * Dropped several real-specific versions of lemmas about floor and
   205 * Dropped several real-specific versions of lemmas about floor and
   180 ceiling; use the generic lemmas from Archimedean_Field.thy instead.
   206 ceiling; use the generic lemmas from theory "Archimedean_Field"
   181 INCOMPATIBILITY.
   207 instead.  INCOMPATIBILITY.
   182 
   208 
   183   floor_number_of_eq         ~> floor_number_of
   209   floor_number_of_eq         ~> floor_number_of
   184   le_floor_eq_number_of      ~> number_of_le_floor
   210   le_floor_eq_number_of      ~> number_of_le_floor
   185   le_floor_eq_zero           ~> zero_le_floor
   211   le_floor_eq_zero           ~> zero_le_floor
   186   le_floor_eq_one            ~> one_le_floor
   212   le_floor_eq_one            ~> one_le_floor
   216 
   242 
   217 * Library theory "RBT" renamed to "RBT_Impl"; new library theory "RBT"
   243 * Library theory "RBT" renamed to "RBT_Impl"; new library theory "RBT"
   218 provides abstract red-black tree type which is backed by "RBT_Impl" as
   244 provides abstract red-black tree type which is backed by "RBT_Impl" as
   219 implementation.  INCOMPATIBILTY.
   245 implementation.  INCOMPATIBILTY.
   220 
   246 
   221 * Command 'typedef' now works within a local theory context -- without
       
   222 introducing dependencies on parameters or assumptions, which is not
       
   223 possible in Isabelle/Pure/HOL.  Note that the logical environment may
       
   224 contain multiple interpretations of local typedefs (with different
       
   225 non-emptiness proofs), even in a global theory context.
       
   226 
       
   227 * Theory Library/Coinductive_List has been removed -- superseded by
   247 * Theory Library/Coinductive_List has been removed -- superseded by
   228 AFP/thys/Coinductive.
   248 AFP/thys/Coinductive.
   229 
   249 
   230 * Theory PReal, including the type "preal" and related operations, has
   250 * Theory PReal, including the type "preal" and related operations, has
   231 been removed.  INCOMPATIBILITY.
   251 been removed.  INCOMPATIBILITY.
   232 
   252 
   233 * Split off theory Big_Operators containing setsum, setprod, Inf_fin,
   253 * Split off theory "Big_Operators" containing setsum, setprod,
   234 Sup_fin, Min, Max from theory Finite_Set.  INCOMPATIBILITY.
   254 Inf_fin, Sup_fin, Min, Max from theory Finite_Set.  INCOMPATIBILITY.
   235 
   255 
   236 * Theory "Rational" renamed to "Rat", for consistency with "Nat",
   256 * Theory "Rational" renamed to "Rat", for consistency with "Nat",
   237 "Int" etc.  INCOMPATIBILITY.
   257 "Int" etc.  INCOMPATIBILITY.
   238 
   258 
   239 * Constant Rat.normalize needs to be qualified.  Minor
   259 * Constant Rat.normalize needs to be qualified.  INCOMPATIBILITY.
   240 INCOMPATIBILITY.
       
   241 
   260 
   242 * New set of rules "ac_simps" provides combined assoc / commute
   261 * New set of rules "ac_simps" provides combined assoc / commute
   243 rewrites for all interpretations of the appropriate generic locales.
   262 rewrites for all interpretations of the appropriate generic locales.
   244 
   263 
   245 * Renamed theory "OrderedGroup" to "Groups" and split theory
   264 * Renamed theory "OrderedGroup" to "Groups" and split theory
   293     ordered_semiring_1                  ~> linordered_semiring_1
   312     ordered_semiring_1                  ~> linordered_semiring_1
   294     ordered_semiring_1_strict           ~> linordered_semiring_1_strict
   313     ordered_semiring_1_strict           ~> linordered_semiring_1_strict
   295     ordered_semiring_strict             ~> linordered_semiring_strict
   314     ordered_semiring_strict             ~> linordered_semiring_strict
   296 
   315 
   297   The following slightly odd type classes have been moved to a
   316   The following slightly odd type classes have been moved to a
   298   separate theory Library/Lattice_Algebras.thy:
   317   separate theory Library/Lattice_Algebras:
   299 
   318 
   300     lordered_ab_group_add               ~> lattice_ab_group_add
   319     lordered_ab_group_add               ~> lattice_ab_group_add
   301     lordered_ab_group_add_abs           ~> lattice_ab_group_add_abs
   320     lordered_ab_group_add_abs           ~> lattice_ab_group_add_abs
   302     lordered_ab_group_add_meet          ~> semilattice_inf_ab_group_add
   321     lordered_ab_group_add_meet          ~> semilattice_inf_ab_group_add
   303     lordered_ab_group_add_join          ~> semilattice_sup_ab_group_add
   322     lordered_ab_group_add_join          ~> semilattice_sup_ab_group_add
   333   inter_INTER_fold_inter        ~> inf_INFI_fold_inf
   352   inter_INTER_fold_inter        ~> inf_INFI_fold_inf
   334   union_UNION_fold_union        ~> sup_SUPR_fold_sup
   353   union_UNION_fold_union        ~> sup_SUPR_fold_sup
   335   INTER_fold_inter              ~> INFI_fold_inf
   354   INTER_fold_inter              ~> INFI_fold_inf
   336   UNION_fold_union              ~> SUPR_fold_sup
   355   UNION_fold_union              ~> SUPR_fold_sup
   337 
   356 
   338 * Theory Complete_Lattice: lemmas top_def and bot_def have been
   357 * Theory "Complete_Lattice": lemmas top_def and bot_def have been
   339 replaced by the more convenient lemmas Inf_empty and Sup_empty.
   358 replaced by the more convenient lemmas Inf_empty and Sup_empty.
   340 Dropped lemmas Inf_insert_simp and Sup_insert_simp, which are subsumed
   359 Dropped lemmas Inf_insert_simp and Sup_insert_simp, which are subsumed
   341 by Inf_insert and Sup_insert.  Lemmas Inf_UNIV and Sup_UNIV replace
   360 by Inf_insert and Sup_insert.  Lemmas Inf_UNIV and Sup_UNIV replace
   342 former Inf_Univ and Sup_Univ.  Lemmas inf_top_right and sup_bot_right
   361 former Inf_Univ and Sup_Univ.  Lemmas inf_top_right and sup_bot_right
   343 subsume inf_top and sup_bot respectively.  INCOMPATIBILITY.
   362 subsume inf_top and sup_bot respectively.  INCOMPATIBILITY.
   344 
   363 
   345 * HOLogic.strip_psplit: types are returned in syntactic order, similar
       
   346 to other strip and tuple operations.  INCOMPATIBILITY.
       
   347 
       
   348 * Reorganized theory Multiset: swapped notation of pointwise and
   364 * Reorganized theory Multiset: swapped notation of pointwise and
   349 multiset order:
   365 multiset order:
       
   366 
   350   - pointwise ordering is instance of class order with standard syntax
   367   - pointwise ordering is instance of class order with standard syntax
   351     <= and <;
   368     <= and <;
   352   - multiset ordering has syntax <=# and <#; partial order properties
   369   - multiset ordering has syntax <=# and <#; partial order properties
   353     are provided by means of interpretation with prefix
   370     are provided by means of interpretation with prefix
   354     multiset_order;
   371     multiset_order;
   355   - less duplication, less historical organization of sections,
   372   - less duplication, less historical organization of sections,
   356     conversion from associations lists to multisets, rudimentary code
   373     conversion from associations lists to multisets, rudimentary code
   357     generation;
   374     generation;
   358   - use insert_DiffM2 [symmetric] instead of elem_imp_eq_diff_union,
   375   - use insert_DiffM2 [symmetric] instead of elem_imp_eq_diff_union,
   359     if needed.
   376     if needed.
       
   377 
   360 Renamed:
   378 Renamed:
   361   multiset_eq_conv_count_eq -> multiset_ext_iff
   379 
   362   multi_count_ext -> multiset_ext
   380   multiset_eq_conv_count_eq  ~>  multiset_ext_iff
   363   diff_union_inverse2 -> diff_union_cancelR
   381   multi_count_ext  ~>  multiset_ext
       
   382   diff_union_inverse2  ~>  diff_union_cancelR
       
   383 
   364 INCOMPATIBILITY.
   384 INCOMPATIBILITY.
   365 
   385 
   366 * Theory Permutation: replaced local "remove" by List.remove1.
   386 * Theory Permutation: replaced local "remove" by List.remove1.
   367 
   387 
   368 * Code generation: ML and OCaml code is decorated with signatures.
   388 * Code generation: ML and OCaml code is decorated with signatures.
   369 
   389 
   370 * Theory List: added transpose.
   390 * Theory List: added transpose.
   371 
       
   372 * Renamed Library/Quotient.thy to Library/Quotient_Type.thy to avoid
       
   373 clash with new theory Quotient in Main HOL.
       
   374 
   391 
   375 * Library/Nat_Bijection.thy is a collection of bijective functions
   392 * Library/Nat_Bijection.thy is a collection of bijective functions
   376 between nat and other types, which supersedes the older libraries
   393 between nat and other types, which supersedes the older libraries
   377 Library/Nat_Int_Bij.thy and HOLCF/NatIso.thy.  INCOMPATIBILITY.
   394 Library/Nat_Int_Bij.thy and HOLCF/NatIso.thy.  INCOMPATIBILITY.
   378 
   395 
   450     "SAT4J_Light".  INCOMPATIBILITY.
   467     "SAT4J_Light".  INCOMPATIBILITY.
   451   - Removed "skolemize", "uncurry", "sym_break", "flatten_prop",
   468   - Removed "skolemize", "uncurry", "sym_break", "flatten_prop",
   452     "sharing_depth", and "show_skolems" options.  INCOMPATIBILITY.
   469     "sharing_depth", and "show_skolems" options.  INCOMPATIBILITY.
   453   - Removed "nitpick_intro" attribute.  INCOMPATIBILITY.
   470   - Removed "nitpick_intro" attribute.  INCOMPATIBILITY.
   454 
   471 
   455 * Moved the SMT binding into the HOL image.
       
   456 
       
   457 
   472 
   458 *** HOLCF ***
   473 *** HOLCF ***
   459 
   474 
   460 * Variable names in lemmas generated by the domain package have
   475 * Variable names in lemmas generated by the domain package have
   461 changed; the naming scheme is now consistent with the HOL datatype
   476 changed; the naming scheme is now consistent with the HOL datatype
   467 be reformulated in terms of "foo_take", INCOMPATIBILITY.
   482 be reformulated in terms of "foo_take", INCOMPATIBILITY.
   468 
   483 
   469 * Most definedness lemmas generated by the domain package (previously
   484 * Most definedness lemmas generated by the domain package (previously
   470 of the form "x ~= UU ==> foo$x ~= UU") now have an if-and-only-if form
   485 of the form "x ~= UU ==> foo$x ~= UU") now have an if-and-only-if form
   471 like "foo$x = UU <-> x = UU", which works better as a simp rule.
   486 like "foo$x = UU <-> x = UU", which works better as a simp rule.
   472 Proof scripts that used definedness lemmas as intro rules may break,
   487 Proofs that used definedness lemmas as intro rules may break,
   473 potential INCOMPATIBILITY.
   488 potential INCOMPATIBILITY.
   474 
   489 
   475 * Induction and casedist rules generated by the domain package now
   490 * Induction and casedist rules generated by the domain package now
   476 declare proper case_names (one called "bottom", and one named for each
   491 declare proper case_names (one called "bottom", and one named for each
   477 constructor).  INCOMPATIBILITY.
   492 constructor).  INCOMPATIBILITY.
   510 * The constants cpair, cfst, and csnd have been removed in favor of
   525 * The constants cpair, cfst, and csnd have been removed in favor of
   511 Pair, fst, and snd from Isabelle/HOL, INCOMPATIBILITY.
   526 Pair, fst, and snd from Isabelle/HOL, INCOMPATIBILITY.
   512 
   527 
   513 
   528 
   514 *** ML ***
   529 *** ML ***
       
   530 
       
   531 * Antiquotations for basic formal entities:
       
   532 
       
   533     @{class NAME}         -- type class
       
   534     @{class_syntax NAME}  -- syntax representation of the above
       
   535 
       
   536     @{type_name NAME}     -- logical type
       
   537     @{type_abbrev NAME}   -- type abbreviation
       
   538     @{nonterminal NAME}   -- type of concrete syntactic category
       
   539     @{type_syntax NAME}   -- syntax representation of any of the above
       
   540 
       
   541     @{const_name NAME}    -- logical constant (INCOMPATIBILITY)
       
   542     @{const_abbrev NAME}  -- abbreviated constant
       
   543     @{const_syntax NAME}  -- syntax representation of any of the above
       
   544 
       
   545 * Antiquotation @{syntax_const NAME} ensures that NAME refers to a raw
       
   546 syntax constant (cf. 'syntax' command).
       
   547 
       
   548 * Antiquotation @{make_string} inlines a function to print arbitrary
       
   549 values similar to the ML toplevel.  The result is compiler dependent
       
   550 and may fall back on "?" in certain situations.
       
   551 
       
   552 * Diagnostic commands 'ML_val' and 'ML_command' may refer to
       
   553 antiquotations @{Isar.state} and @{Isar.goal}.  This replaces impure
       
   554 Isar.state() and Isar.goal(), which belong to the old TTY loop and do
       
   555 not work with the asynchronous Isar document model.
       
   556 
       
   557 * Configuration options now admit dynamic default values, depending on
       
   558 the context or even global references.
       
   559 
       
   560 * SHA1.digest digests strings according to SHA-1 (see RFC 3174).  It
       
   561 uses an efficient external library if available (for Poly/ML).
   515 
   562 
   516 * Renamed some important ML structures, while keeping the old names
   563 * Renamed some important ML structures, while keeping the old names
   517 for some time as aliases within the structure Legacy:
   564 for some time as aliases within the structure Legacy:
   518 
   565 
   519   OuterKeyword  ~>  Keyword
   566   OuterKeyword  ~>  Keyword
   539 * Discontinued old TheoryDataFun with its copy/init operation -- data
   586 * Discontinued old TheoryDataFun with its copy/init operation -- data
   540 needs to be pure.  Functor Theory_Data_PP retains the traditional
   587 needs to be pure.  Functor Theory_Data_PP retains the traditional
   541 Pretty.pp argument to merge, which is absent in the standard
   588 Pretty.pp argument to merge, which is absent in the standard
   542 Theory_Data version.
   589 Theory_Data version.
   543 
   590 
   544 * Antiquotations for basic formal entities:
       
   545 
       
   546     @{class NAME}         -- type class
       
   547     @{class_syntax NAME}  -- syntax representation of the above
       
   548 
       
   549     @{type_name NAME}     -- logical type
       
   550     @{type_abbrev NAME}   -- type abbreviation
       
   551     @{nonterminal NAME}   -- type of concrete syntactic category
       
   552     @{type_syntax NAME}   -- syntax representation of any of the above
       
   553 
       
   554     @{const_name NAME}    -- logical constant (INCOMPATIBILITY)
       
   555     @{const_abbrev NAME}  -- abbreviated constant
       
   556     @{const_syntax NAME}  -- syntax representation of any of the above
       
   557 
       
   558 * Antiquotation @{syntax_const NAME} ensures that NAME refers to a raw
       
   559 syntax constant (cf. 'syntax' command).
       
   560 
       
   561 * Antiquotation @{make_string} inlines a function to print arbitrary
       
   562 values similar to the ML toplevel.  The result is compiler dependent
       
   563 and may fall back on "?" in certain situations.
       
   564 
       
   565 * Diagnostic commands 'ML_val' and 'ML_command' may refer to
       
   566 antiquotations @{Isar.state} and @{Isar.goal}.  This replaces impure
       
   567 Isar.state() and Isar.goal(), which belong to the old TTY loop and do
       
   568 not work with the asynchronous Isar document model.
       
   569 
       
   570 * Sorts.certify_sort and derived "cert" operations for types and terms
   591 * Sorts.certify_sort and derived "cert" operations for types and terms
   571 no longer minimize sorts.  Thus certification at the boundary of the
   592 no longer minimize sorts.  Thus certification at the boundary of the
   572 inference kernel becomes invariant under addition of class relations,
   593 inference kernel becomes invariant under addition of class relations,
   573 which is an important monotonicity principle.  Sorts are now minimized
   594 which is an important monotonicity principle.  Sorts are now minimized
   574 in the syntax layer only, at the boundary between the end-user and the
   595 in the syntax layer only, at the boundary between the end-user and the
   584 
   605 
   585 * Renamed varify/unvarify operations to varify_global/unvarify_global
   606 * Renamed varify/unvarify operations to varify_global/unvarify_global
   586 to emphasize that these only work in a global situation (which is
   607 to emphasize that these only work in a global situation (which is
   587 quite rare).
   608 quite rare).
   588 
   609 
   589 * Configuration options now admit dynamic default values, depending on
       
   590 the context or even global references.
       
   591 
       
   592 * SHA1.digest digests strings according to SHA-1 (see RFC 3174).  It
       
   593 uses an efficient external library if available (for Poly/ML).
       
   594 
       
   595 * Curried take and drop in library.ML; negative length is interpreted
   610 * Curried take and drop in library.ML; negative length is interpreted
   596 as infinity (as in chop).  Subtle INCOMPATIBILITY.
   611 as infinity (as in chop).  Subtle INCOMPATIBILITY.
       
   612 
       
   613 * Proof terms: type substitutions on proof constants now use canonical
       
   614 order of type variables.  INCOMPATIBILITY for tools working with proof
       
   615 terms.
       
   616 
       
   617 * Raw axioms/defs may no longer carry sort constraints, and raw defs
       
   618 may no longer carry premises.  User-level specifications are
       
   619 transformed accordingly by Thm.add_axiom/add_def.
   597 
   620 
   598 
   621 
   599 *** System ***
   622 *** System ***
   600 
   623 
   601 * Discontinued special HOL_USEDIR_OPTIONS for the main HOL image;
   624 * Discontinued special HOL_USEDIR_OPTIONS for the main HOL image;