NEWS
changeset 27067 f8a7aff41acb
parent 27061 a057cb0d7d55
child 27104 791607529f6d
equal deleted inserted replaced
27066:dbf97292e5fd 27067:f8a7aff41acb
     6 
     6 
     7 *** General ***
     7 *** General ***
     8 
     8 
     9 * The Isabelle/Isar Reference Manual (isar-ref) has been reorganized
     9 * The Isabelle/Isar Reference Manual (isar-ref) has been reorganized
    10 and updated, with formally checked references as hyperlinks.
    10 and updated, with formally checked references as hyperlinks.
    11 
       
    12 * Syntax: symbol \<chi> is now considered a letter.  Potential
       
    13 INCOMPATIBILITY in identifier syntax etc.
       
    14 
       
    15 * Outer syntax: string tokens may contain arbitrary character codes
       
    16 specified via 3 decimal digits (as in SML).  E.g. "foo\095bar" for
       
    17 "foo_bar".
       
    18 
       
    19 * Outer syntax: string tokens no longer admit escaped white space,
       
    20 which was an accidental (undocumented) feature.  INCOMPATIBILITY, use
       
    21 white space directly.
       
    22 
    11 
    23 * Theory loader: use_thy (and similar operations) no longer set the
    12 * Theory loader: use_thy (and similar operations) no longer set the
    24 implicit ML context, which was occasionally hard to predict and in
    13 implicit ML context, which was occasionally hard to predict and in
    25 conflict with concurrency.  INCOMPATIBILITY, use ML within Isar which
    14 conflict with concurrency.  INCOMPATIBILITY, use ML within Isar which
    26 provides a proper context already.
    15 provides a proper context already.
    31 
    20 
    32 * Name space merge now observes canonical order, i.e. the second space
    21 * Name space merge now observes canonical order, i.e. the second space
    33 is inserted into the first one, while existing entries in the first
    22 is inserted into the first one, while existing entries in the first
    34 space take precedence.  INCOMPATIBILITY in rare situations, may try to
    23 space take precedence.  INCOMPATIBILITY in rare situations, may try to
    35 swap theory imports.
    24 swap theory imports.
       
    25 
       
    26 * Syntax: symbol \<chi> is now considered a letter.  Potential
       
    27 INCOMPATIBILITY in identifier syntax etc.
       
    28 
       
    29 * Outer syntax: string tokens no longer admit escaped white space,
       
    30 which was an accidental (undocumented) feature.  INCOMPATIBILITY, use
       
    31 white space without escapes.
       
    32 
       
    33 * Outer syntax: string tokens may contain arbitrary character codes
       
    34 specified via 3 decimal digits (as in SML).  E.g. "foo\095bar" for
       
    35 "foo_bar".
    36 
    36 
    37 
    37 
    38 *** Pure ***
    38 *** Pure ***
    39 
    39 
    40 * Context-dependent token translations.  Default setup reverts locally
    40 * Context-dependent token translations.  Default setup reverts locally
    92 * Command 'setup': discontinued implicit version with ML reference.
    92 * Command 'setup': discontinued implicit version with ML reference.
    93 
    93 
    94 * Instantiation target allows for simultaneous specification of class
    94 * Instantiation target allows for simultaneous specification of class
    95 instance operations together with an instantiation proof.
    95 instance operations together with an instantiation proof.
    96 Type-checking phase allows to refer to class operations uniformly.
    96 Type-checking phase allows to refer to class operations uniformly.
    97 See HOL/Complex/Complex.thy for an Isar example and
    97 See src/HOL/Complex/Complex.thy for an Isar example and
    98 HOL/Library/Eval.thy for an ML example.
    98 src/HOL/Library/Eval.thy for an ML example.
    99 
    99 
   100 * Indexing of literal facts: be more serious about including only
   100 * Indexing of literal facts: be more serious about including only
   101 facts from the visible specification/proof context, but not the
   101 facts from the visible specification/proof context, but not the
   102 background context (locale etc.).  Affects `prop` notation and method
   102 background context (locale etc.).  Affects `prop` notation and method
   103 "fact".  INCOMPATIBILITY: need to name facts explicitly in rare
   103 "fact".  INCOMPATIBILITY: need to name facts explicitly in rare
   128 method (either a method name or a method name plus (optional) method
   128 method (either a method name or a method name plus (optional) method
   129 arguments in parentheses) and prints A just like @{prop A}.
   129 arguments in parentheses) and prints A just like @{prop A}.
   130 
   130 
   131 
   131 
   132 *** HOL ***
   132 *** HOL ***
       
   133 
       
   134 * New primrec package.  Specification syntax conforms in style to
       
   135 definition/function/....  No separate induction rule is provided.  The
       
   136 "primrec" command distinguishes old-style and new-style specifications
       
   137 by syntax.  The former primrec package is now named OldPrimrecPackage.
       
   138 When adjusting theories, beware: constants stemming from new-style
       
   139 primrec specifications have authentic syntax.
       
   140 
       
   141 * Metis prover is now an order of magnitude faster, and also works
       
   142 with multithreading.
       
   143 
       
   144 * Metis: the maximum number of clauses that can be produced from a
       
   145 theorem is now given by the attribute max_clauses.  Theorems that
       
   146 exceed this number are ignored, with a warning printed.
       
   147 
       
   148 * Sledgehammer no longer produces structured proofs by default. To
       
   149 enable, declare [[sledgehammer_full = true]].  Attributes
       
   150 reconstruction_modulus, reconstruction_sorts renamed
       
   151 sledgehammer_modulus, sledgehammer_sorts.  INCOMPATIBILITY.
       
   152 
       
   153 * Method "induction_scheme" derives user-specified induction rules
       
   154 from well-founded induction and completeness of patterns. This factors
       
   155 out some operations that are done internally by the function package
       
   156 and makes them available separately.  See
       
   157 src/HOL/ex/Induction_Scheme.thy for examples.
       
   158 
       
   159 * More flexible generation of measure functions for termination
       
   160 proofs: Measure functions can be declared by proving a rule of the
       
   161 form "is_measure f" and giving it the [measure_function] attribute.
       
   162 The "is_measure" predicate is logically meaningless (always true), and
       
   163 just guides the heuristic.  To find suitable measure functions, the
       
   164 termination prover sets up the goal "is_measure ?f" of the appropriate
       
   165 type and generates all solutions by prolog-style backwards proof using
       
   166 the declared rules.
       
   167 
       
   168 This setup also deals with rules like 
       
   169 
       
   170   "is_measure f ==> is_measure (list_size f)"
       
   171 
       
   172 which accommodates nested datatypes that recurse through lists.
       
   173 Similar rules are predeclared for products and option types.
   133 
   174 
   134 * Turned the type of sets "'a set" into an abbreviation for "'a => bool"
   175 * Turned the type of sets "'a set" into an abbreviation for "'a => bool"
   135 
   176 
   136   INCOMPATIBILITIES:
   177   INCOMPATIBILITIES:
   137 
   178 
   197     rather than
   238     rather than
   198 
   239 
   199       T1 => ... => Tn => U set
   240       T1 => ... => Tn => U set
   200 
   241 
   201 * Merged theories Wellfounded_Recursion, Accessible_Part and
   242 * Merged theories Wellfounded_Recursion, Accessible_Part and
   202 Wellfounded_Relations to "Wellfounded.thy".
   243 Wellfounded_Relations to theory Wellfounded.
   203 
   244 
   204 * Explicit class "eq" for executable equality.  INCOMPATIBILITY.
   245 * Explicit class "eq" for executable equality.  INCOMPATIBILITY.
   205 
   246 
   206 * Class finite no longer treats UNIV as class parameter.  Use class
   247 * Class finite no longer treats UNIV as class parameter.  Use class
   207 enum from theory Library/Enum instead to achieve a similar effect.
   248 enum from theory Library/Enum instead to achieve a similar effect.
   264 * Theorem Inductive.lfp_ordinal_induct generalized to complete
   305 * Theorem Inductive.lfp_ordinal_induct generalized to complete
   265 lattices.  The form set-specific version is available as
   306 lattices.  The form set-specific version is available as
   266 Inductive.lfp_ordinal_induct_set.
   307 Inductive.lfp_ordinal_induct_set.
   267 
   308 
   268 * Renamed theorems "power.simps" to "power_int.simps".
   309 * Renamed theorems "power.simps" to "power_int.simps".
       
   310 INCOMPATIBILITY.
   269 
   311 
   270 * Class semiring_div provides basic abstract properties of semirings
   312 * Class semiring_div provides basic abstract properties of semirings
   271 with division and modulo operations.  Subsumes former class dvd_mod.
   313 with division and modulo operations.  Subsumes former class dvd_mod.
   272 
   314 
   273 * Merged theories IntDef, Numeral and IntArith into unified theory
   315 * Merged theories IntDef, Numeral and IntArith into unified theory
   277 numbers rather than integers.  INCOMPATIBILITY.
   319 numbers rather than integers.  INCOMPATIBILITY.
   278 
   320 
   279 * New class "uminus" with operation "uminus" (split of from class
   321 * New class "uminus" with operation "uminus" (split of from class
   280 "minus" which now only has operation "minus", binary).
   322 "minus" which now only has operation "minus", binary).
   281 INCOMPATIBILITY.
   323 INCOMPATIBILITY.
   282 
       
   283 * New primrec package.  Specification syntax conforms in style to
       
   284 definition/function/....  No separate induction rule is provided.  The
       
   285 "primrec" command distinguishes old-style and new-style specifications
       
   286 by syntax.  The former primrec package is now named OldPrimrecPackage.
       
   287 When adjusting theories, beware: constants stemming from new-style
       
   288 primrec specifications have authentic syntax.
       
   289 
       
   290 * Library/Multiset: {#a, b, c#} abbreviates {#a#} + {#b#} + {#c#}.
       
   291 
       
   292 * Library/ListVector: new theory of arithmetic vector operations.
       
   293 
       
   294 * Library/Order_Relation: new theory of various orderings as sets of
       
   295 pairs.  Defines preorders, partial orders, linear orders and
       
   296 well-orders on sets and on types.
       
   297 
   324 
   298 * Constants "card", "internal_split", "option_map" now with authentic
   325 * Constants "card", "internal_split", "option_map" now with authentic
   299 syntax.  INCOMPATIBILITY.
   326 syntax.  INCOMPATIBILITY.
   300 
   327 
   301 * Definitions subset_def, psubset_def, set_diff_def, Compl_def,
   328 * Definitions subset_def, psubset_def, set_diff_def, Compl_def,
   303 sup_bool_def, Inf_bool_def, Sup_bool_def, inf_fun_def, sup_fun_def,
   330 sup_bool_def, Inf_bool_def, Sup_bool_def, inf_fun_def, sup_fun_def,
   304 Inf_fun_def, Sup_fun_def, inf_set_def, sup_set_def, Inf_set_def,
   331 Inf_fun_def, Sup_fun_def, inf_set_def, sup_set_def, Inf_set_def,
   305 Sup_set_def, le_def, less_def, option_map_def now with object
   332 Sup_set_def, le_def, less_def, option_map_def now with object
   306 equality.  INCOMPATIBILITY.
   333 equality.  INCOMPATIBILITY.
   307 
   334 
   308 * Method "induction_scheme" derives user-specified induction rules
       
   309 from well-founded induction and completeness of patterns. This factors
       
   310 out some operations that are done internally by the function package
       
   311 and makes them available separately. See "HOL/ex/Induction_Scheme.thy"
       
   312 for examples,
       
   313 
       
   314 * Records. Removed K_record, and replaced it by pure lambda term
   335 * Records. Removed K_record, and replaced it by pure lambda term
   315 %x. c. The simplifier setup is now more robust against eta expansion.
   336 %x. c. The simplifier setup is now more robust against eta expansion.
   316 INCOMPATIBILITY: in cases explicitly referring to K_record.
   337 INCOMPATIBILITY: in cases explicitly referring to K_record.
   317 
   338 
   318 * Metis prover is now an order of magnitude faster, and also works
   339 * Library/Multiset: {#a, b, c#} abbreviates {#a#} + {#b#} + {#c#}.
   319 with multithreading.
   340 
   320 
   341 * Library/ListVector: new theory of arithmetic vector operations.
   321 * Metis: the maximum number of clauses that can be produced from a
   342 
   322 theorem is now given by the attribute max_clauses. Theorems that
   343 * Library/Order_Relation: new theory of various orderings as sets of
   323 exceed this number are ignored, with a warning printed.
   344 pairs.  Defines preorders, partial orders, linear orders and
   324 
   345 well-orders on sets and on types.
   325 * Sledgehammer no longer produces structured proofs by default. To
       
   326 enable, declare [[sledgehammer_full = true]]. Attributes
       
   327 reconstruction_modulus, reconstruction_sorts renamed
       
   328 sledgehammer_modulus, sledgehammer_sorts.  INCOMPATIBILITY.
       
   329 
       
   330 * More flexible generation of measure functions for termination
       
   331 proofs: Measure functions can be declared by proving a rule of the
       
   332 form "is_measure f" and giving it the [measure_function] attribute.
       
   333 The "is_measure" predicate is logically meaningless (always true), and
       
   334 just guides the heuristic.  To find suitable measure functions, the
       
   335 termination prover sets up the goal "is_measure ?f" of the appropriate
       
   336 type and generates all solutions by prolog-style backwards proof using
       
   337 the declared rules.
       
   338 
       
   339 This setup also deals with rules like 
       
   340 
       
   341   "is_measure f ==> is_measure (list_size f)"
       
   342 
       
   343 which accomodates nested datatypes that recurse through lists. Similar
       
   344 rules are predeclared for products and option types.
       
   345 
   346 
   346 
   347 
   347 *** ZF ***
   348 *** ZF ***
   348 
   349 
   349 * Renamed some theories to allow to loading both ZF and HOL in the
   350 * Renamed some theories to allow to loading both ZF and HOL in the
   362 available, as trivial extension of Main_ZF.
   363 available, as trivial extension of Main_ZF.
   363 
   364 
   364 
   365 
   365 *** ML ***
   366 *** ML ***
   366 
   367 
       
   368 * ML within Isar: antiquotation @{const name} or @{const
       
   369 name(typargs)} produces statically-checked Const term.
       
   370 
   367 * Functor NamedThmsFun: data is available to the user as dynamic fact
   371 * Functor NamedThmsFun: data is available to the user as dynamic fact
   368 (of the same name).  Removed obsolete print command.
   372 (of the same name).  Removed obsolete print command.
   369 
   373 
   370 * Removed obsolete "use_legacy_bindings" function.  INCOMPATIBILITY.
   374 * Removed obsolete "use_legacy_bindings" function.
   371 
       
   372 * ML within Isar: antiquotation @{const name} or @{const
       
   373 name(typargs)} produces statically-checked Const term.
       
   374 
   375 
   375 * The ``print mode'' is now a thread-local value derived from a global
   376 * The ``print mode'' is now a thread-local value derived from a global
   376 template (the former print_mode reference), thus access becomes
   377 template (the former print_mode reference), thus access becomes
   377 non-critical.  The global print_mode reference is for session
   378 non-critical.  The global print_mode reference is for session
   378 management only; user-code should use print_mode_value,
   379 management only; user-code should use print_mode_value,
   383 Do not use OS.Process.system etc. from the basis library!
   384 Do not use OS.Process.system etc. from the basis library!
   384 
   385 
   385 
   386 
   386 *** System ***
   387 *** System ***
   387 
   388 
       
   389 * Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs ---
       
   390 in accordance with Proof General 3.7, which prefers GNU emacs.
       
   391 
       
   392 * isatool tty runs Isabelle process with plain tty interaction;
       
   393 optional line editor may be specified via ISABELLE_LINE_EDITOR
       
   394 setting, the default settings attempt to locate "ledit" and "rlwrap".
       
   395 
       
   396 * isatool browser now works with Cygwin as well, using general
       
   397 "javapath" function defined in Isabelle process environment.
       
   398 
   388 * YXML notation provides a simple and efficient alternative to
   399 * YXML notation provides a simple and efficient alternative to
   389 standard XML transfer syntax.  See src/Pure/General/yxml.ML and
   400 standard XML transfer syntax.  See src/Pure/General/yxml.ML and
   390 isatool yxml as described in the Isabelle system manual.
   401 isatool yxml as described in the Isabelle system manual.
       
   402 
       
   403 * JVM class isabelle.IsabelleProcess (located in Isabelle/lib/classes)
       
   404 provides general wrapper for managing an Isabelle process in a robust
       
   405 fashion, with ``cooked'' output from stdin/stderr.
       
   406 
       
   407 * Rudimentary Isabelle plugin for jEdit (see Isabelle/lib/jedit),
       
   408 based on Isabelle/JVM process wrapper (see Isabelle/lib/classes).
   391 
   409 
   392 * Removed obsolete THIS_IS_ISABELLE_BUILD feature.  NB: the documented
   410 * Removed obsolete THIS_IS_ISABELLE_BUILD feature.  NB: the documented
   393 way of changing the user's settings is via
   411 way of changing the user's settings is via
   394 ISABELLE_HOME_USER/etc/settings, which is a fully featured bash
   412 ISABELLE_HOME_USER/etc/settings, which is a fully featured bash
   395 script.
   413 script.
   396 
       
   397 * Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs ---
       
   398 in accordance with Proof General 3.7, which prefers GNU emacs.
       
   399 
   414 
   400 * Multithreading.max_threads := 0 refers to the number of actual CPU
   415 * Multithreading.max_threads := 0 refers to the number of actual CPU
   401 cores of the underlying machine, which is a good starting point for
   416 cores of the underlying machine, which is a good starting point for
   402 optimal performance tuning.  The corresponding usedir option -M allows
   417 optimal performance tuning.  The corresponding usedir option -M allows
   403 "max" as an alias for "0".  WARNING: does not work on certain versions
   418 "max" as an alias for "0".  WARNING: does not work on certain versions
   404 of Mac OS (with Poly/ML 5.1).
   419 of Mac OS (with Poly/ML 5.1).
   405 
   420 
   406 * isatool tty runs Isabelle process with plain tty interaction;
   421 * isabelle-process: non-ML sessions are run with "nice", to reduce the
   407 optional line editor may be specified via ISABELLE_LINE_EDITOR
   422 adverse effect of Isabelle flooding interactive front-ends (notably
   408 setting, the default settings attempt to locate "ledit" and "rlwrap".
   423 ProofGeneral / XEmacs).
   409 
       
   410 * isatool browser now works with Cygwin as well, using general
       
   411 "javapath" function defined in Isabelle process environment.
       
   412 
       
   413 * isabelle-process: non-ML sessions are run with "nice", to prevent
       
   414 Isabelle from flooding interactive front-ends (notably ProofGeneral /
       
   415 XEmacs).
       
   416 
       
   417 * JVM class isabelle.IsabelleProcess (located in Isabelle/lib/classes)
       
   418 provides general wrapper for managing an Isabelle process in a robust
       
   419 fashion, with ``cooked'' output from stdin/stderr.
       
   420 
       
   421 * Rudimentary Isabelle plugin for jEdit (see Isabelle/lib/jedit),
       
   422 based on Isabelle/JVM process wrapper (see Isabelle/lib/classes).
       
   423 
   424 
   424 
   425 
   425 
   426 
   426 New in Isabelle2007 (November 2007)
   427 New in Isabelle2007 (November 2007)
   427 -----------------------------------
   428 -----------------------------------