NEWS
changeset 30845 9a887484de53
parent 30741 9e23e3ea7edd
child 30847 dd9a1662413b
equal deleted inserted replaced
30828:50c8f55cde7f 30845:9a887484de53
     1 Isabelle NEWS -- history user-relevant changes
     1 Isabelle NEWS -- history user-relevant changes
     2 ==============================================
     2 ==============================================
     3 
     3 
     4 New in this Isabelle version
     4 New in Isabelle2009 (April 2009)
     5 ----------------------------
     5 --------------------------------
     6 
     6 
     7 *** General ***
     7 *** General ***
     8 
       
     9 * The main reference manuals (isar-ref, implementation, system) have
       
    10 been updated and extended.  Formally checked references as hyperlinks
       
    11 are now available in uniform manner.
       
    12 
     8 
    13 * Simplified main Isabelle executables, with less surprises on
     9 * Simplified main Isabelle executables, with less surprises on
    14 case-insensitive file-systems (such as Mac OS).
    10 case-insensitive file-systems (such as Mac OS).
    15 
    11 
    16   - The main Isabelle tool wrapper is now called "isabelle" instead of
    12   - The main Isabelle tool wrapper is now called "isabelle" instead of
    35 INCOMPATIBILITY, need to adapt derivative scripts.  Users may need to
    31 INCOMPATIBILITY, need to adapt derivative scripts.  Users may need to
    36 purge installed copies of Isabelle executables and re-run "isabelle
    32 purge installed copies of Isabelle executables and re-run "isabelle
    37 install -p ...", or use symlinks.
    33 install -p ...", or use symlinks.
    38 
    34 
    39 * The default for ISABELLE_HOME_USER is now ~/.isabelle instead of the
    35 * The default for ISABELLE_HOME_USER is now ~/.isabelle instead of the
    40 old ~/isabelle, which was slightly non-standard and apt cause
    36 old ~/isabelle, which was slightly non-standard and apt to cause
    41 surprises on case-insensitive file-systems.
    37 surprises on case-insensitive file-systems (such as Mac OS).
    42 
    38 
    43 INCOMPATIBILITY, need to move existing ~/isabelle/etc,
    39 INCOMPATIBILITY, need to move existing ~/isabelle/etc,
    44 ~/isabelle/heaps, ~/isabelle/browser_info to the new place.  Special
    40 ~/isabelle/heaps, ~/isabelle/browser_info to the new place.  Special
    45 care is required when using older releases of Isabelle.  Note that
    41 care is required when using older releases of Isabelle.  Note that
    46 ISABELLE_HOME_USER can be changed in Isabelle/etc/settings of any
    42 ISABELLE_HOME_USER can be changed in Isabelle/etc/settings of any
    47 Isabelle distribution.
    43 Isabelle distribution, in order to use the new ~/.isabelle uniformly.
    48 
    44 
    49 * Proofs of fully specified statements are run in parallel on
    45 * Proofs of fully specified statements are run in parallel on
    50 multi-core systems.  A speedup factor of 2-3 can be expected on a
    46 multi-core systems.  A speedup factor of 2.5 to 3.2 can be expected on
    51 regular 4-core machine, if the initial heap space is made reasonably
    47 a regular 4-core machine, if the initial heap space is made reasonably
    52 large (cf. Poly/ML option -H).  [Poly/ML 5.2.1 or later]
    48 large (cf. Poly/ML option -H).  (Requires Poly/ML 5.2.1 or later.)
    53 
    49 
    54 * Generalized Isar history, with support for linear undo, direct state
    50 * The main reference manuals ("isar-ref", "implementation", and
    55 addressing etc.
    51 "system") have been updated and extended.  Formally checked references
    56 
    52 as hyperlinks are now available uniformly.
    57 * Recovered hiding of consts, which was accidentally broken in
    53 
    58 Isabelle2007.  Potential INCOMPATIBILITY, ``hide const c'' really
       
    59 makes c inaccessible; consider using ``hide (open) const c'' instead.
       
    60 
       
    61 * Removed exotic 'token_translation' command.  INCOMPATIBILITY, use ML
       
    62 interface instead.
       
    63 
       
    64 * There is a new syntactic category "float_const" for signed decimal
       
    65 fractions (e.g. 123.45 or -123.45).
       
    66 
       
    67 * New prover for coherent logic (see src/Tools/coherent.ML).
       
    68 
    54 
    69 
    55 
    70 *** Pure ***
    56 *** Pure ***
    71 
    57 
    72 * Class declaration: sc. "base sort" must not be given in import list
    58 * Complete re-implementation of locales.  INCOMPATIBILITY in several
    73 any longer but is inferred from the specification.  Particularly in HOL,
    59 respects.  The most important changes are listed below.  See the
    74 write
    60 Tutorial on Locales ("locales" manual) for details.
    75 
    61 
    76     class foo = ...     instead of      class foo = type + ...
    62 - In locale expressions, instantiation replaces renaming.  Parameters
    77 
    63 must be declared in a for clause.  To aid compatibility with previous
    78 * Module moves in repository:
    64 parameter inheritance, in locale declarations, parameters that are not
    79     src/Pure/Tools/value.ML ~> src/Tools/
    65 'touched' (instantiation position "_" or omitted) are implicitly added
    80     src/Pure/Tools/quickcheck.ML ~> src/Tools/
    66 with their syntax at the beginning of the for clause.
    81 
    67 
    82 * Slightly more coherent Pure syntax, with updated documentation in
    68 - Syntax from abbreviations and definitions in locales is available in
    83 isar-ref manual.  Removed locales meta_term_syntax and
    69 locale expressions and context elements.  The latter is particularly
    84 meta_conjunction_syntax: TERM and &&& (formerly &&) are now permanent,
    70 useful in locale declarations.
    85 INCOMPATIBILITY in rare situations.
    71 
    86 
    72 - More flexible mechanisms to qualify names generated by locale
    87 * Goal-directed proof now enforces strict proof irrelevance wrt. sort
    73 expressions.  Qualifiers (prefixes) may be specified in locale
    88 hypotheses.  Sorts required in the course of reasoning need to be
    74 expressions, and can be marked as mandatory (syntax: "name!:") or
    89 covered by the constraints in the initial statement, completed by the
    75 optional (syntax "name?:").  The default depends for plain "name:"
    90 type instance information of the background theory.  Non-trivial sort
    76 depends on the situation where a locale expression is used: in
    91 hypotheses, which rarely occur in practice, may be specified via
    77 commands 'locale' and 'sublocale' prefixes are optional, in
    92 vacuous propositions of the form SORT_CONSTRAINT('a::c).  For example:
    78 'interpretation' and 'interpret' prefixes are mandatory.  The old
    93 
    79 implicit qualifiers derived from the parameter names of a locale are
    94   lemma assumes "SORT_CONSTRAINT('a::empty)" shows False ...
    80 no longer generated.
    95 
    81 
    96 The result contains an implicit sort hypotheses as before --
    82 - Command "sublocale l < e" replaces "interpretation l < e".  The
    97 SORT_CONSTRAINT premises are eliminated as part of the canonical rule
    83 instantiation clause in "interpretation" and "interpret" (square
    98 normalization.
    84 brackets) is no longer available.  Use locale expressions.
    99 
    85 
   100 * Changed defaults for unify configuration options:
    86 - When converting proof scripts, mandatory qualifiers in
   101 
    87 'interpretation' and 'interpret' should be retained by default, even
   102   unify_trace_bound = 50 (formerly 25)
    88 if this is an INCOMPATIBILITY compared to former behavior.  In the
   103   unify_search_bound = 60 (formerly 30)
    89 worst case, use the "name?:" form for non-mandatory ones.  Qualifiers
   104 
    90 in locale expressions range over a single locale instance only.
   105 * Different bookkeeping for code equations (INCOMPATIBILITY):
    91 
   106 
    92 - Dropped locale element "includes".  This is a major INCOMPATIBILITY.
   107   a) On theory merge, the last set of code equations for a particular
       
   108      constant is taken (in accordance with the policy applied by other
       
   109      parts of the code generator framework).
       
   110 
       
   111   b) Code equations stemming from explicit declarations (e.g. code
       
   112      attribute) gain priority over default code equations stemming
       
   113      from definition, primrec, fun etc.
       
   114 
       
   115 * Global versions of theorems stemming from classes do not carry a
       
   116 parameter prefix any longer.  INCOMPATIBILITY.
       
   117 
       
   118 * Dropped locale element "includes".  This is a major INCOMPATIBILITY.
       
   119 In existing theorem specifications replace the includes element by the
    93 In existing theorem specifications replace the includes element by the
   120 respective context elements of the included locale, omitting those
    94 respective context elements of the included locale, omitting those
   121 that are already present in the theorem specification.  Multiple
    95 that are already present in the theorem specification.  Multiple
   122 assume elements of a locale should be replaced by a single one
    96 assume elements of a locale should be replaced by a single one
   123 involving the locale predicate.  In the proof body, declarations (most
    97 involving the locale predicate.  In the proof body, declarations (most
   127 If using "includes" in replacement of a target solely because the
   101 If using "includes" in replacement of a target solely because the
   128 parameter types in the theorem are not as general as in the target,
   102 parameter types in the theorem are not as general as in the target,
   129 consider declaring a new locale with additional type constraints on
   103 consider declaring a new locale with additional type constraints on
   130 the parameters (context element "constrains").
   104 the parameters (context element "constrains").
   131 
   105 
   132 * Dropped "locale (open)".  INCOMPATIBILITY.
   106 - Discontinued "locale (open)".  INCOMPATIBILITY.
   133 
   107 
   134 * Interpretation commands no longer attempt to simplify goal.
   108 - Locale interpretation commands no longer attempt to simplify goal.
   135 INCOMPATIBILITY: in rare situations the generated goal differs.  Use
   109 INCOMPATIBILITY: in rare situations the generated goal differs.  Use
   136 methods intro_locales and unfold_locales to clarify.
   110 methods intro_locales and unfold_locales to clarify.
   137 
   111 
   138 * Interpretation commands no longer accept interpretation attributes.
   112 - Locale interpretation commands no longer accept interpretation
   139 INCOMPATBILITY.
   113 attributes.  INCOMPATIBILITY.
   140 
   114 
   141 * Complete re-implementation of locales.  INCOMPATIBILITY.  The most
   115 * Class declaration: so-called "base sort" must not be given in import
   142 important changes are listed below.  See the Tutorial on Locales for
   116 list any longer, but is inferred from the specification.  Particularly
   143 details.
   117 in HOL, write
   144 
   118 
   145 - In locale expressions, instantiation replaces renaming.  Parameters
   119     class foo = ...
   146 must be declared in a for clause.  To aid compatibility with previous
   120 
   147 parameter inheritance, in locale declarations, parameters that are not
   121 instead of
   148 'touched' (instantiation position "_" or omitted) are implicitly added
   122 
   149 with their syntax at the beginning of the for clause.
   123     class foo = type + ...
   150 
   124 
   151 - Syntax from abbreviations and definitions in locales is available in
   125 * Class target: global versions of theorems stemming do not carry a
   152 locale expressions and context elements.  The latter is particularly
   126 parameter prefix any longer.  INCOMPATIBILITY.
   153 useful in locale declarations.
   127 
   154 
   128 * Class 'instance' command no longer accepts attached definitions.
   155 - More flexible mechanisms to qualify names generated by locale
   129 INCOMPATIBILITY, use proper 'instantiation' target instead.
   156 expressions.  Qualifiers (prefixes) may be specified in locale
   130 
   157 expressions, and can be marked as mandatory (syntax: "name!:") or
   131 * Recovered hiding of consts, which was accidentally broken in
   158 optional (syntax "name?:").  The default depends for plain "name:"
   132 Isabelle2007.  Potential INCOMPATIBILITY, ``hide const c'' really
   159 depends on the situation where a locale expression is used: in
   133 makes c inaccessible; consider using ``hide (open) const c'' instead.
   160 commands 'locale' and 'sublocale' prefixes are optional, in
   134 
   161 'interpretation' and 'interpret' prefixes are mandatory.  Old-style
   135 * Slightly more coherent Pure syntax, with updated documentation in
   162 implicit qualifiers derived from the parameter names of a locale are
   136 isar-ref manual.  Removed locales meta_term_syntax and
   163 no longer generated.
   137 meta_conjunction_syntax: TERM and &&& (formerly &&) are now permanent,
   164 
   138 INCOMPATIBILITY in rare situations.  Note that &&& should not be used
   165 - "sublocale l < e" replaces "interpretation l < e".  The
   139 directly in regular applications.
   166 instantiation clause in "interpretation" and "interpret" (square
   140 
   167 brackets) is no longer available.  Use locale expressions.
   141 * There is a new syntactic category "float_const" for signed decimal
   168 
   142 fractions (e.g. 123.45 or -123.45).
   169 - When converting proof scripts, be sure to mandatory qualifiers in
   143 
   170 'interpretation' and 'interpret' should be retained by default, even
   144 * Removed exotic 'token_translation' command.  INCOMPATIBILITY, use ML
   171 if this is an INCOMPATIBILITY compared to former behaviour.
   145 interface with 'setup' command instead.
   172 Qualifiers in locale expressions range over a single locale instance
   146 
   173 only.
   147 * Command 'local_setup' is similar to 'setup', but operates on a local
   174 
   148 theory context.
   175 * Command 'instance': attached definitions no longer accepted.
       
   176 INCOMPATIBILITY, use proper 'instantiation' target.
       
   177 
       
   178 * Keyword 'code_exception' now named 'code_abort'.  INCOMPATIBILITY.
       
   179 
   149 
   180 * The 'axiomatization' command now only works within a global theory
   150 * The 'axiomatization' command now only works within a global theory
   181 context.  INCOMPATIBILITY.
   151 context.  INCOMPATIBILITY.
   182 
   152 
   183 * New 'find_theorems' criterion "solves" matching theorems that
   153 * Goal-directed proof now enforces strict proof irrelevance wrt. sort
   184 directly solve the current goal.
   154 hypotheses.  Sorts required in the course of reasoning need to be
   185 
   155 covered by the constraints in the initial statement, completed by the
   186 * Auto solve feature for main theorem statements (cf. option in Proof
   156 type instance information of the background theory.  Non-trivial sort
   187 General Isabelle settings menu, disabled by default).  Whenever a new
   157 hypotheses, which rarely occur in practice, may be specified via
   188 goal is stated, "find_theorems solves" is called; any theorems that
   158 vacuous propositions of the form SORT_CONSTRAINT('a::c).  For example:
   189 could solve the lemma directly are listed as part of the goal state.
   159 
       
   160   lemma assumes "SORT_CONSTRAINT('a::empty)" shows False ...
       
   161 
       
   162 The result contains an implicit sort hypotheses as before --
       
   163 SORT_CONSTRAINT premises are eliminated as part of the canonical rule
       
   164 normalization.
       
   165 
       
   166 * Generalized Isar history, with support for linear undo, direct state
       
   167 addressing etc.
       
   168 
       
   169 * Changed defaults for unify configuration options:
       
   170 
       
   171   unify_trace_bound = 50 (formerly 25)
       
   172   unify_search_bound = 60 (formerly 30)
       
   173 
       
   174 * Different bookkeeping for code equations (INCOMPATIBILITY):
       
   175 
       
   176   a) On theory merge, the last set of code equations for a particular
       
   177      constant is taken (in accordance with the policy applied by other
       
   178      parts of the code generator framework).
       
   179 
       
   180   b) Code equations stemming from explicit declarations (e.g. code
       
   181      attribute) gain priority over default code equations stemming
       
   182      from definition, primrec, fun etc.
       
   183 
       
   184 * Keyword 'code_exception' now named 'code_abort'.  INCOMPATIBILITY.
       
   185 
       
   186 * Unified theorem tables for both code code generators.  Thus [code
       
   187 func] has disappeared and only [code] remains.  INCOMPATIBILITY.
   190 
   188 
   191 * Command 'find_consts' searches for constants based on type and name
   189 * Command 'find_consts' searches for constants based on type and name
   192 patterns, e.g.
   190 patterns, e.g.
   193 
   191 
   194     find_consts "_ => bool"
   192     find_consts "_ => bool"
   198 conjunctive and queries may be negated by prefixing them with a
   196 conjunctive and queries may be negated by prefixing them with a
   199 hyphen:
   197 hyphen:
   200 
   198 
   201     find_consts strict: "_ => bool" name: "Int" -"int => int"
   199     find_consts strict: "_ => bool" name: "Int" -"int => int"
   202 
   200 
   203 * Command 'local_setup' is similar to 'setup', but operates on a local
   201 * New 'find_theorems' criterion "solves" matches theorems that
   204 theory context.
   202 directly solve the current goal (modulo higher-order unification).
       
   203 
       
   204 * Auto solve feature for main theorem statements: whenever a new goal
       
   205 is stated, "find_theorems solves" is called; any theorems that could
       
   206 solve the lemma directly are listed as part of the goal state.
       
   207 Cf. associated options in Proof General Isabelle settings menu,
       
   208 enabled by default, with reasonable timeout for pathological cases of
       
   209 higher-order unification.
   205 
   210 
   206 
   211 
   207 *** Document preparation ***
   212 *** Document preparation ***
   208 
   213 
   209 * Antiquotation @{lemma} now imitates a regular terminal proof,
   214 * Antiquotation @{lemma} now imitates a regular terminal proof,
   211 syntax just like the Isar command 'by'.
   216 syntax just like the Isar command 'by'.
   212 
   217 
   213 
   218 
   214 *** HOL ***
   219 *** HOL ***
   215 
   220 
   216 * Theory Library/Polynomial.thy defines an abstract type 'a poly of
   221 * Integrated main parts of former image HOL-Complex with HOL.  Entry
   217 univariate polynomials with coefficients of type 'a.  In addition to
   222 points Main and Complex_Main remain as before.
   218 the standard ring operations, it also supports div and mod.  Code
   223 
   219 generation is also supported, using list-style constructors.
   224 * Logic image HOL-Plain provides a minimal HOL with the most important
   220 
   225 tools available (inductive, datatype, primrec, ...).  This facilitates
   221 * Theory Library/Inner_Product.thy defines a class of real_inner for
   226 experimentation and tool development.  Note that user applications
   222 real inner product spaces, with an overloaded operation inner :: 'a =>
   227 (and library theories) should never refer to anything below theory
   223 'a => real.  Class real_inner is a subclass of real_normed_vector from
   228 Main, as before.
   224 RealVector.thy.
   229 
   225 
   230 * Logic image HOL-Main stops at theory Main, and thus facilitates
   226 * Theory Library/Product_Vector.thy provides instances for the product
   231 experimentation due to shorter build times.
   227 type 'a * 'b of several classes from RealVector.thy and
   232 
   228 Inner_Product.thy.  Definitions of addition, subtraction, scalar
   233 * Logic image HOL-NSA contains theories of nonstandard analysis which
   229 multiplication, norms, and inner products are included.
   234 were previously part of former HOL-Complex.  Entry point Hyperreal
   230 
   235 remains valid, but theories formerly using Complex_Main should now use
   231 * Theory Library/Bit.thy defines the field "bit" of integers modulo 2.
   236 new entry point Hypercomplex.
   232 In addition to the field operations, numerals and case syntax are also
   237 
   233 supported.
   238 * Generic ATP manager for Sledgehammer, based on ML threads instead of
   234 
   239 Posix processes.  Avoids potentially expensive forking of the ML
   235 * Theory Library/Diagonalize.thy provides constructive version of
   240 process.  New thread-based implementation also works on non-Unix
   236 Cantor's first diagonalization argument.
   241 platforms (Cygwin).  Provers are no longer hardwired, but defined
   237 
   242 within the theory via plain ML wrapper functions.  Basic Sledgehammer
   238 * New predicate "strict_mono" classifies strict functions on partial orders.
   243 commands are covered in the isar-ref manual.
   239 With strict functions on linear orders, reasoning about (in)equalities is
   244 
   240 facilitated by theorems "strict_mono_eq", "strict_mono_less_eq" and "strict_mono_less".
   245 * Wrapper scripts for remote SystemOnTPTP service allows to use
   241 
   246 sledgehammer without local ATP installation (Vampire etc.). Other
   242 * Some set operations are now proper qualified constants with authentic syntax.
   247 provers may be included via suitable ML wrappers, see also
   243 INCOMPATIBILITY:
   248 src/HOL/ATP_Linkup.thy.
       
   249 
       
   250 * ATP selection (E/Vampire/Spass) is now via Proof General's settings
       
   251 menu.
       
   252 
       
   253 * The metis method no longer fails because the theorem is too trivial
       
   254 (contains the empty clause).
       
   255 
       
   256 * The metis method now fails in the usual manner, rather than raising
       
   257 an exception, if it determines that it cannot prove the theorem.
       
   258 
       
   259 * Method "coherent" implements a prover for coherent logic (see also
       
   260 src/Tools/coherent.ML).
       
   261 
       
   262 * Constants "undefined" and "default" replace "arbitrary".  Usually
       
   263 "undefined" is the right choice to replace "arbitrary", though
       
   264 logically there is no difference.  INCOMPATIBILITY.
       
   265 
       
   266 * Command "value" now integrates different evaluation mechanisms.  The
       
   267 result of the first successful evaluation mechanism is printed.  In
       
   268 square brackets a particular named evaluation mechanisms may be
       
   269 specified (currently, [SML], [code] or [nbe]).  See further
       
   270 src/HOL/ex/Eval_Examples.thy.
       
   271 
       
   272 * Normalization by evaluation now allows non-leftlinear equations.
       
   273 Declare with attribute [code nbe].
       
   274 
       
   275 * Methods "case_tac" and "induct_tac" now refer to the very same rules
       
   276 as the structured Isar versions "cases" and "induct", cf. the
       
   277 corresponding "cases" and "induct" attributes.  Mutual induction rules
       
   278 are now presented as a list of individual projections
       
   279 (e.g. foo_bar.inducts for types foo and bar); the old format with
       
   280 explicit HOL conjunction is no longer supported.  INCOMPATIBILITY, in
       
   281 rare situations a different rule is selected --- notably nested tuple
       
   282 elimination instead of former prod.exhaust: use explicit (case_tac t
       
   283 rule: prod.exhaust) here.
       
   284 
       
   285 * Attributes "cases", "induct", "coinduct" support "del" option.
       
   286 
       
   287 * Removed fact "case_split_thm", which duplicates "case_split".
       
   288 
       
   289 * The option datatype has been moved to a new theory Option.  Renamed
       
   290 option_map to Option.map, and o2s to Option.set, INCOMPATIBILITY.
       
   291 
       
   292 * New predicate "strict_mono" classifies strict functions on partial
       
   293 orders.  With strict functions on linear orders, reasoning about
       
   294 (in)equalities is facilitated by theorems "strict_mono_eq",
       
   295 "strict_mono_less_eq" and "strict_mono_less".
       
   296 
       
   297 * Some set operations are now proper qualified constants with
       
   298 authentic syntax.  INCOMPATIBILITY:
   244 
   299 
   245     op Int ~>   Set.Int
   300     op Int ~>   Set.Int
   246     op Un ~>    Set.Un
   301     op Un ~>    Set.Un
   247     INTER ~>    Set.INTER
   302     INTER ~>    Set.INTER
   248     UNION ~>    Set.UNION
   303     UNION ~>    Set.UNION
   249     Inter ~>    Set.Inter
   304     Inter ~>    Set.Inter
   250     Union ~>    Set.Union
   305     Union ~>    Set.Union
   251     {} ~>       Set.empty
   306     {} ~>       Set.empty
   252     UNIV ~>     Set.UNIV
   307     UNIV ~>     Set.UNIV
   253 
   308 
   254 * Class complete_lattice with operations Inf, Sup, INFI, SUPR now in theory
   309 * Class complete_lattice with operations Inf, Sup, INFI, SUPR now in
   255 Set.
   310 theory Set.
   256 
   311 
   257 * Auxiliary class "itself" has disappeared -- classes without any parameter
   312 * Auxiliary class "itself" has disappeared -- classes without any
   258 are treated as expected by the 'class' command.
   313 parameter are treated as expected by the 'class' command.
   259 
   314 
   260 * Leibnitz's Series for Pi and the arcus tangens and logarithm series.
   315 * Leibnitz's Series for Pi and the arcus tangens and logarithm series.
   261 
   316 
   262 * Common decision procedures (Cooper, MIR, Ferrack, Approximation, Dense_Linear_Order)
   317 * Common decision procedures (Cooper, MIR, Ferrack, Approximation,
   263 now in directory HOL/Decision_Procs.
   318 Dense_Linear_Order) are now in directory HOL/Decision_Procs.
   264 
   319 
   265 * Theory HOL/Decision_Procs/Approximation.thy provides the new proof method
   320 * Theory src/HOL/Decision_Procs/Approximation provides the new proof
   266 "approximation".  It proves formulas on real values by using interval arithmetic.
   321 method "approximation".  It proves formulas on real values by using
   267 In the formulas are also the transcendental functions sin, cos, tan, atan, ln,
   322 interval arithmetic.  In the formulas are also the transcendental
   268 exp and the constant pi are allowed. For examples see
   323 functions sin, cos, tan, atan, ln, exp and the constant pi are
   269 HOL/Descision_Procs/ex/Approximation_Ex.thy.
   324 allowed. For examples see
       
   325 src/HOL/Descision_Procs/ex/Approximation_Ex.thy.
   270 
   326 
   271 * Theory "Reflection" now resides in HOL/Library.
   327 * Theory "Reflection" now resides in HOL/Library.
   272 
   328 
   273 * Entry point to Word library now simply named "Word".  INCOMPATIBILITY.
   329 * Entry point to Word library now simply named "Word".
       
   330 INCOMPATIBILITY.
   274 
   331 
   275 * Made source layout more coherent with logical distribution
   332 * Made source layout more coherent with logical distribution
   276 structure:
   333 structure:
   277 
   334 
   278     src/HOL/Library/RType.thy ~> src/HOL/Typerep.thy
   335     src/HOL/Library/RType.thy ~> src/HOL/Typerep.thy
   325     src/HOL/Library/Heap.thy ~> src/HOL/Imperative_HOL
   382     src/HOL/Library/Heap.thy ~> src/HOL/Imperative_HOL
   326     src/HOL/Library/Imperative_HOL.thy ~> src/HOL/Imperative_HOL
   383     src/HOL/Library/Imperative_HOL.thy ~> src/HOL/Imperative_HOL
   327     src/HOL/Library/Ref.thy ~> src/HOL/Imperative_HOL
   384     src/HOL/Library/Ref.thy ~> src/HOL/Imperative_HOL
   328     src/HOL/Library/Relational.thy ~> src/HOL/Imperative_HOL
   385     src/HOL/Library/Relational.thy ~> src/HOL/Imperative_HOL
   329 
   386 
   330 * If methods "eval" and "evaluation" encounter a structured proof state
   387 * If methods "eval" and "evaluation" encounter a structured proof
   331 with !!/==>, only the conclusion is evaluated to True (if possible),
   388 state with !!/==>, only the conclusion is evaluated to True (if
   332 avoiding strange error messages.
   389 possible), avoiding strange error messages.
   333 
   390 
   334 * Simplifier: simproc for let expressions now unfolds if bound variable
   391 * Method "sizechange" automates termination proofs using (a
   335 occurs at most once in let expression body.  INCOMPATIBILITY.
   392 modification of) the size-change principle.  Requires SAT solver.  See
   336 
   393 src/HOL/ex/Termination.thy for examples.
   337 * New attribute "arith" for facts that should always be used automaticaly
   394 
   338 by arithmetic. It is intended to be used locally in proofs, eg
   395 * Simplifier: simproc for let expressions now unfolds if bound
   339 assumes [arith]: "x > 0"
   396 variable occurs at most once in let expression body.  INCOMPATIBILITY.
       
   397 
       
   398 * Method "arith": Linear arithmetic now ignores all inequalities when
       
   399 fast_arith_neq_limit is exceeded, instead of giving up entirely.
       
   400 
       
   401 * New attribute "arith" for facts that should always be used
       
   402 automatically by arithmetic. It is intended to be used locally in
       
   403 proofs, e.g.
       
   404 
       
   405   assumes [arith]: "x > 0"
       
   406 
   340 Global usage is discouraged because of possible performance impact.
   407 Global usage is discouraged because of possible performance impact.
   341 
   408 
   342 * New classes "top" and "bot" with corresponding operations "top" and "bot"
   409 * New classes "top" and "bot" with corresponding operations "top" and
   343 in theory Orderings;  instantiation of class "complete_lattice" requires
   410 "bot" in theory Orderings; instantiation of class "complete_lattice"
   344 instantiation of classes "top" and "bot".  INCOMPATIBILITY.
   411 requires instantiation of classes "top" and "bot".  INCOMPATIBILITY.
   345 
   412 
   346 * Changed definition lemma "less_fun_def" in order to provide an instance
   413 * Changed definition lemma "less_fun_def" in order to provide an
   347 for preorders on functions;  use lemma "less_le" instead.  INCOMPATIBILITY.
   414 instance for preorders on functions; use lemma "less_le" instead.
   348 
   415 INCOMPATIBILITY.
   349 * Unified theorem tables for both code code generators.  Thus
   416 
   350 [code func] has disappeared and only [code] remains.  INCOMPATIBILITY.
   417 * Theory Orderings: class "wellorder" moved here, with explicit
   351 
   418 induction rule "less_induct" as assumption.  For instantiation of
   352 * Constants "undefined" and "default" replace "arbitrary".  Usually
   419 "wellorder" by means of predicate "wf", use rule wf_wellorderI.
   353 "undefined" is the right choice to replace "arbitrary", though logically
   420 INCOMPATIBILITY.
   354 there is no difference.  INCOMPATIBILITY.
   421 
   355 
   422 * Theory Orderings: added class "preorder" as superclass of "order".
   356 * Generic ATP manager for Sledgehammer, based on ML threads instead of
       
   357 Posix processes.  Avoids potentially expensive forking of the ML
       
   358 process.  New thread-based implementation also works on non-Unix
       
   359 platforms (Cygwin).  Provers are no longer hardwired, but defined
       
   360 within the theory via plain ML wrapper functions.  Basic Sledgehammer
       
   361 commands are covered in the isar-ref manual.
       
   362 
       
   363 * Wrapper scripts for remote SystemOnTPTP service allows to use
       
   364 sledgehammer without local ATP installation (Vampire etc.). Other
       
   365 provers may be included via suitable ML wrappers, see also
       
   366 src/HOL/ATP_Linkup.thy.
       
   367 
       
   368 * Normalization by evaluation now allows non-leftlinear equations.
       
   369 Declare with attribute [code nbe].
       
   370 
       
   371 * Command "value" now integrates different evaluation
       
   372 mechanisms.  The result of the first successful evaluation mechanism
       
   373 is printed.  In square brackets a particular named evaluation
       
   374 mechanisms may be specified (currently, [SML], [code] or [nbe]).  See
       
   375 further src/HOL/ex/Eval_Examples.thy.
       
   376 
       
   377 * New method "sizechange" to automate termination proofs using (a
       
   378 modification of) the size-change principle. Requires SAT solver. See
       
   379 src/HOL/ex/Termination.thy for examples.
       
   380 
       
   381 * HOL/Orderings: class "wellorder" moved here, with explicit induction
       
   382 rule "less_induct" as assumption.  For instantiation of "wellorder" by
       
   383 means of predicate "wf", use rule wf_wellorderI.  INCOMPATIBILITY.
       
   384 
       
   385 * HOL/Orderings: added class "preorder" as superclass of "order".
       
   386 INCOMPATIBILITY: Instantiation proofs for order, linorder
   423 INCOMPATIBILITY: Instantiation proofs for order, linorder
   387 etc. slightly changed.  Some theorems named order_class.* now named
   424 etc. slightly changed.  Some theorems named order_class.* now named
   388 preorder_class.*.
   425 preorder_class.*.
   389 
   426 
   390 * HOL/Relation:
   427 * Theory Relation: renamed "refl" to "refl_on", "reflexive" to "refl,
   391 Renamed "refl" to "refl_on", "reflexive" to "refl, "diag" to "Id_on".
   428 "diag" to "Id_on".
   392 
   429 
   393 * HOL/Finite_Set: added a new fold combinator of type
   430 * Theory Finite_Set: added a new fold combinator of type
       
   431 
   394   ('a => 'b => 'b) => 'b => 'a set => 'b
   432   ('a => 'b => 'b) => 'b => 'a set => 'b
   395 Occasionally this is more convenient than the old fold combinator which is
   433 
   396 now defined in terms of the new one and renamed to fold_image.
   434 Occasionally this is more convenient than the old fold combinator
   397 
   435 which is now defined in terms of the new one and renamed to
   398 * HOL/Ring_and_Field and HOL/OrderedGroup: The lemmas "group_simps" and
   436 fold_image.
   399 "ring_simps" have been replaced by "algebra_simps" (which can be extended with
   437 
   400 further lemmas!). At the moment both still exist but the former will disappear
   438 * Theories Ring_and_Field and OrderedGroup: The lemmas "group_simps"
   401 at some point.
   439 and "ring_simps" have been replaced by "algebra_simps" (which can be
   402 
   440 extended with further lemmas!).  At the moment both still exist but
   403 * HOL/Power: Lemma power_Suc is now declared as a simp rule in class
   441 the former will disappear at some point.
   404 recpower.  Type-specific simp rules for various recpower types have
   442 
   405 been removed.  INCOMPATIBILITY.  Rename old lemmas as follows:
   443 * Theory Power: Lemma power_Suc is now declared as a simp rule in
       
   444 class recpower.  Type-specific simp rules for various recpower types
       
   445 have been removed.  INCOMPATIBILITY, rename old lemmas as follows:
   406 
   446 
   407 rat_power_0    -> power_0
   447 rat_power_0    -> power_0
   408 rat_power_Suc  -> power_Suc
   448 rat_power_Suc  -> power_Suc
   409 realpow_0      -> power_0
   449 realpow_0      -> power_0
   410 realpow_Suc    -> power_Suc
   450 realpow_Suc    -> power_Suc
   411 complexpow_0   -> power_0
   451 complexpow_0   -> power_0
   412 complexpow_Suc -> power_Suc
   452 complexpow_Suc -> power_Suc
   413 power_poly_0   -> power_0
   453 power_poly_0   -> power_0
   414 power_poly_Suc -> power_Suc
   454 power_poly_Suc -> power_Suc
   415 
   455 
   416 * HOL/Ring_and_Field and HOL/Divides: Definition of "op dvd" has been
   456 * Theories Ring_and_Field and Divides: Definition of "op dvd" has been
   417 moved to separate class dvd in Ring_and_Field; a couple of lemmas on
   457 moved to separate class dvd in Ring_and_Field; a couple of lemmas on
   418 dvd has been generalized to class comm_semiring_1.  Likewise a bunch
   458 dvd has been generalized to class comm_semiring_1.  Likewise a bunch
   419 of lemmas from Divides has been generalized from nat to class
   459 of lemmas from Divides has been generalized from nat to class
   420 semiring_div.  INCOMPATIBILITY.  This involves the following theorem
   460 semiring_div.  INCOMPATIBILITY.  This involves the following theorem
   421 renames resulting from duplicate elimination:
   461 renames resulting from duplicate elimination:
   426     DIVISION_BY_ZERO_DIV ~> div_by_0
   466     DIVISION_BY_ZERO_DIV ~> div_by_0
   427     DIVISION_BY_ZERO_MOD ~> mod_by_0
   467     DIVISION_BY_ZERO_MOD ~> mod_by_0
   428     mult_div ~>             div_mult_self2_is_id
   468     mult_div ~>             div_mult_self2_is_id
   429     mult_mod ~>             mod_mult_self2_is_0
   469     mult_mod ~>             mod_mult_self2_is_0
   430 
   470 
   431 * HOL/IntDiv: removed many lemmas that are instances of class-based
   471 * Theory IntDiv: removed many lemmas that are instances of class-based
   432 generalizations (from Divides and Ring_and_Field).
   472 generalizations (from Divides and Ring_and_Field).  INCOMPATIBILITY,
   433 INCOMPATIBILITY. Rename old lemmas as follows:
   473 rename old lemmas as follows:
   434 
   474 
   435 dvd_diff               -> nat_dvd_diff
   475 dvd_diff               -> nat_dvd_diff
   436 dvd_zminus_iff         -> dvd_minus_iff
   476 dvd_zminus_iff         -> dvd_minus_iff
   437 mod_add1_eq            -> mod_add_eq
   477 mod_add1_eq            -> mod_add_eq
   438 mod_mult1_eq           -> mod_mult_right_eq
   478 mod_mult1_eq           -> mod_mult_right_eq
   476 zdvd_0_right           -> dvd_0_right
   516 zdvd_0_right           -> dvd_0_right
   477 zdvd_0_left            -> dvd_0_left_iff
   517 zdvd_0_left            -> dvd_0_left_iff
   478 zdvd_1_left            -> one_dvd
   518 zdvd_1_left            -> one_dvd
   479 zminus_dvd_iff         -> minus_dvd_iff
   519 zminus_dvd_iff         -> minus_dvd_iff
   480 
   520 
   481 * HOL/Library/GCD: Curried operations gcd, lcm (for nat) and zgcd,
   521 * Theory Rational: 'Fract k 0' now equals '0'.  INCOMPATIBILITY.
       
   522 
       
   523 * The real numbers offer decimal input syntax: 12.34 is translated
       
   524 into 1234/10^2. This translation is not reversed upon output.
       
   525 
       
   526 * Theory Library/Polynomial defines an abstract type 'a poly of
       
   527 univariate polynomials with coefficients of type 'a.  In addition to
       
   528 the standard ring operations, it also supports div and mod.  Code
       
   529 generation is also supported, using list-style constructors.
       
   530 
       
   531 * Theory Library/Inner_Product defines a class of real_inner for real
       
   532 inner product spaces, with an overloaded operation inner :: 'a => 'a
       
   533 => real.  Class real_inner is a subclass of real_normed_vector from
       
   534 theory RealVector.
       
   535 
       
   536 * Theory Library/Product_Vector provides instances for the product
       
   537 type 'a * 'b of several classes from RealVector and Inner_Product.
       
   538 Definitions of addition, subtraction, scalar multiplication, norms,
       
   539 and inner products are included.
       
   540 
       
   541 * Theory Library/Bit defines the field "bit" of integers modulo 2.  In
       
   542 addition to the field operations, numerals and case syntax are also
       
   543 supported.
       
   544 
       
   545 * Theory Library/Diagonalize provides constructive version of Cantor's
       
   546 first diagonalization argument.
       
   547 
       
   548 * Theory Library/GCD: Curried operations gcd, lcm (for nat) and zgcd,
   482 zlcm (for int); carried together from various gcd/lcm developements in
   549 zlcm (for int); carried together from various gcd/lcm developements in
   483 the HOL Distribution.  zgcd and zlcm replace former igcd and ilcm;
   550 the HOL Distribution.  Constants zgcd and zlcm replace former igcd and
   484 corresponding theorems renamed accordingly.  INCOMPATIBILITY.  To
   551 ilcm; corresponding theorems renamed accordingly.  INCOMPATIBILITY,
   485 recover tupled syntax, use syntax declarations like:
   552 may recover tupled syntax as follows:
   486 
   553 
   487     hide (open) const gcd
   554     hide (open) const gcd
   488     abbreviation gcd where
   555     abbreviation gcd where
   489       "gcd == (%(a, b). GCD.gcd a b)"
   556       "gcd == (%(a, b). GCD.gcd a b)"
   490     notation (output)
   557     notation (output)
   491       GCD.gcd ("gcd '(_, _')")
   558       GCD.gcd ("gcd '(_, _')")
   492 
   559 
   493 (analogously for lcm, zgcd, zlcm).
   560 The same works for lcm, zgcd, zlcm.
   494 
   561 
   495 * HOL/Real/Rational: 'Fract k 0' now equals '0'.  INCOMPATIBILITY.
   562 * Theory Library/Nat_Infinity: added addition, numeral syntax and more
   496 
   563 instantiations for algebraic structures.  Removed some duplicate
   497 * The real numbers offer decimal input syntax: 12.34 is translated into
   564 theorems.  Changes in simp rules.  INCOMPATIBILITY.
   498   1234/10^2. This translation is not reversed upon output.
   565 
   499 
   566 * ML antiquotation @{code} takes a constant as argument and generates
   500 * New ML antiquotation @{code}: takes constant as argument, generates
       
   501 corresponding code in background and inserts name of the corresponding
   567 corresponding code in background and inserts name of the corresponding
   502 resulting ML value/function/datatype constructor binding in place.
   568 resulting ML value/function/datatype constructor binding in place.
   503 All occurrences of @{code} with a single ML block are generated
   569 All occurrences of @{code} with a single ML block are generated
   504 simultaneously.  Provides a generic and safe interface for
   570 simultaneously.  Provides a generic and safe interface for
   505 instrumentalizing code generation.  See HOL/Decision_Procs/Ferrack for
   571 instrumentalizing code generation.  See
   506 a more ambitious application.  In future you ought refrain from ad-hoc
   572 src/HOL/Decision_Procs/Ferrack.thy for a more ambitious application.
   507 compiling generated SML code on the ML toplevel.  Note that (for technical
   573 In future you ought to refrain from ad-hoc compiling generated SML
   508 reasons) @{code} cannot refer to constants for which user-defined
   574 code on the ML toplevel.  Note that (for technical reasons) @{code}
   509 serializations are set.  Refer to the corresponding ML counterpart
   575 cannot refer to constants for which user-defined serializations are
   510 directly in that cases.
   576 set.  Refer to the corresponding ML counterpart directly in that
   511 
   577 cases.
   512 * Integrated image HOL-Complex with HOL.  Entry points Main.thy and
       
   513 Complex_Main.thy remain as they are.
       
   514 
       
   515 * New image HOL-Plain provides a minimal HOL with the most important
       
   516 tools available (inductive, datatype, primrec, ...).  By convention
       
   517 the corresponding theory Plain should be ancestor of every further
       
   518 (library) theory.  Some library theories now have ancestor Plain
       
   519 (instead of Main), thus theory Main occasionally has to be imported
       
   520 explicitly.
       
   521 
       
   522 * The metis method now fails in the usual manner, rather than raising
       
   523 an exception, if it determines that it cannot prove the theorem.
       
   524 
       
   525 * The metis method no longer fails because the theorem is too trivial
       
   526 (contains the empty clause).
       
   527 
       
   528 * Methods "case_tac" and "induct_tac" now refer to the very same rules
       
   529 as the structured Isar versions "cases" and "induct", cf. the
       
   530 corresponding "cases" and "induct" attributes.  Mutual induction rules
       
   531 are now presented as a list of individual projections
       
   532 (e.g. foo_bar.inducts for types foo and bar); the old format with
       
   533 explicit HOL conjunction is no longer supported.  INCOMPATIBILITY, in
       
   534 rare situations a different rule is selected --- notably nested tuple
       
   535 elimination instead of former prod.exhaust: use explicit (case_tac t
       
   536 rule: prod.exhaust) here.
       
   537 
       
   538 * Attributes "cases", "induct", "coinduct" support "del" option.
       
   539 
       
   540 * Removed fact "case_split_thm", which duplicates "case_split".
       
   541 
   578 
   542 * Command 'rep_datatype': instead of theorem names the command now
   579 * Command 'rep_datatype': instead of theorem names the command now
   543 takes a list of terms denoting the constructors of the type to be
   580 takes a list of terms denoting the constructors of the type to be
   544 represented as datatype.  The characteristic theorems have to be
   581 represented as datatype.  The characteristic theorems have to be
   545 proven.  INCOMPATIBILITY.  Also observe that the following theorems
   582 proven.  INCOMPATIBILITY.  Also observe that the following theorems
   549     prod_induct                 ~> prod.induct
   586     prod_induct                 ~> prod.induct
   550     sum_induct                  ~> sum.induct
   587     sum_induct                  ~> sum.induct
   551     Suc_Suc_eq                  ~> nat.inject
   588     Suc_Suc_eq                  ~> nat.inject
   552     Suc_not_Zero Zero_not_Suc   ~> nat.distinct
   589     Suc_not_Zero Zero_not_Suc   ~> nat.distinct
   553 
   590 
   554 * The option datatype has been moved to a new theory HOL/Option.thy.
       
   555 Renamed option_map to Option.map, and o2s to Option.set.
       
   556 
       
   557 * Library/Nat_Infinity: added addition, numeral syntax and more
       
   558 instantiations for algebraic structures.  Removed some duplicate
       
   559 theorems.  Changes in simp rules.  INCOMPATIBILITY.
       
   560 
       
   561 * ATP selection (E/Vampire/Spass) is now via Proof General's settings
       
   562 menu.
       
   563 
       
   564 * Linear arithmetic now ignores all inequalities when
       
   565 fast_arith_neq_limit is exceeded, instead of giving up entirely.
       
   566 
       
   567 
   591 
   568 *** HOL-Algebra ***
   592 *** HOL-Algebra ***
   569 
   593 
   570 * New locales for orders and lattices where the equivalence relation
   594 * New locales for orders and lattices where the equivalence relation
   571 is not restricted to equality.  INCOMPATIBILITY: all order and lattice
   595 is not restricted to equality.  INCOMPATIBILITY: all order and lattice
   572 locales use a record structure with field eq for the equivalence.
   596 locales use a record structure with field eq for the equivalence.
   573 
   597 
   574 * New theory of factorial domains.
   598 * New theory of factorial domains.
   575 
   599 
   576 * Units_l_inv and Units_r_inv are now simprules by default.
   600 * Units_l_inv and Units_r_inv are now simp rules by default.
   577 INCOMPATIBILITY.  Simplifier proof that require deletion of l_inv
   601 INCOMPATIBILITY.  Simplifier proof that require deletion of l_inv
   578 and/or r_inv will now also require deletion of these lemmas.
   602 and/or r_inv will now also require deletion of these lemmas.
   579 
   603 
   580 * Renamed the following theorems.  INCOMPATIBILITY.
   604 * Renamed the following theorems, INCOMPATIBILITY:
       
   605 
   581 UpperD ~> Upper_memD
   606 UpperD ~> Upper_memD
   582 LowerD ~> Lower_memD
   607 LowerD ~> Lower_memD
   583 least_carrier ~> least_closed
   608 least_carrier ~> least_closed
   584 greatest_carrier ~> greatest_closed
   609 greatest_carrier ~> greatest_closed
   585 greatest_Lower_above ~> greatest_Lower_below
   610 greatest_Lower_above ~> greatest_Lower_below
   586 one_zero ~> carrier_one_zero
   611 one_zero ~> carrier_one_zero
   587 one_not_zero ~> carrier_one_not_zero  (collision with assumption)
   612 one_not_zero ~> carrier_one_not_zero  (collision with assumption)
   588 
   613 
   589 
   614 
   590 *** HOL-NSA ***
       
   591 
       
   592 * Created new image HOL-NSA, containing theories of nonstandard
       
   593 analysis which were previously part of HOL-Complex.  Entry point
       
   594 Hyperreal.thy remains valid, but theories formerly using
       
   595 Complex_Main.thy should now use new entry point Hypercomplex.thy.
       
   596 
       
   597 
       
   598 *** ZF ***
       
   599 
       
   600 * Proof of Zorn's Lemma for partial orders.
       
   601 
       
   602 
       
   603 *** HOLCF ***
   615 *** HOLCF ***
   604 
   616 
   605 * Reimplemented the simplification procedure for proving continuity
   617 * Reimplemented the simplification procedure for proving continuity
   606 subgoals.  The new simproc is extensible; users can declare additional
   618 subgoals.  The new simproc is extensible; users can declare additional
   607 continuity introduction rules with the attribute [cont2cont].
   619 continuity introduction rules with the attribute [cont2cont].
   610 solving continuity subgoals on terms with lambda abstractions.  In
   622 solving continuity subgoals on terms with lambda abstractions.  In
   611 some rare cases the new simproc may fail to solve subgoals that the
   623 some rare cases the new simproc may fail to solve subgoals that the
   612 old one could solve, and "simp add: cont2cont_LAM" may be necessary.
   624 old one could solve, and "simp add: cont2cont_LAM" may be necessary.
   613 Potential INCOMPATIBILITY.
   625 Potential INCOMPATIBILITY.
   614 
   626 
   615 * The syntax of the fixrec package has changed.  The specification
   627 * The syntax of the fixrec package now conforms to the general
   616 syntax now conforms in style to definition, primrec, function, etc.
   628 specification format of inductive, primrec, function, etc.  See
   617 See HOLCF/ex/Fixrec_ex.thy for examples.  INCOMPATIBILITY.
   629 src/HOLCF/ex/Fixrec_ex.thy for examples.  INCOMPATIBILITY.
       
   630 
       
   631 
       
   632 *** ZF ***
       
   633 
       
   634 * Proof of Zorn's Lemma for partial orders.
   618 
   635 
   619 
   636 
   620 *** ML ***
   637 *** ML ***
       
   638 
       
   639 * Multithreading for Poly/ML 5.1/5.2 is no longer supported, only for
       
   640 Poly/ML 5.2.1 or later.  Important note: the TimeLimit facility
       
   641 depends on multithreading, so timouts will not work before Poly/ML
       
   642 5.2.1!
   621 
   643 
   622 * High-level support for concurrent ML programming, see
   644 * High-level support for concurrent ML programming, see
   623 src/Pure/Cuncurrent.  The data-oriented model of "future values" is
   645 src/Pure/Cuncurrent.  The data-oriented model of "future values" is
   624 particularly convenient to organize independent functional
   646 particularly convenient to organize independent functional
   625 computations.  The concept of "synchronized variables" provides a
   647 computations.  The concept of "synchronized variables" provides a
   626 higher-order interface for components with shared state, avoiding the
   648 higher-order interface for components with shared state, avoiding the
   627 delicate details of mutexes and condition variables.  [Poly/ML 5.2.1
   649 delicate details of mutexes and condition variables.  (Requires
   628 or later]
   650 Poly/ML 5.2.1 or later.)
       
   651 
       
   652 * ML bindings produced via Isar commands are stored within the Isar
       
   653 context (theory or proof).  Consequently, commands like 'use' and 'ML'
       
   654 become thread-safe and work with undo as expected (concerning
       
   655 top-level bindings, not side-effects on global references).
       
   656 INCOMPATIBILITY, need to provide proper Isar context when invoking the
       
   657 compiler at runtime; really global bindings need to be given outside a
       
   658 theory.  (Requires Poly/ML 5.2 or later.)
       
   659 
       
   660 * Command 'ML_prf' is analogous to 'ML' but works within a proof
       
   661 context.  Top-level ML bindings are stored within the proof context in
       
   662 a purely sequential fashion, disregarding the nested proof structure.
       
   663 ML bindings introduced by 'ML_prf' are discarded at the end of the
       
   664 proof.  (Requires Poly/ML 5.2 or later.)
   629 
   665 
   630 * Simplified ML attribute and method setup, cf. functions Attrib.setup
   666 * Simplified ML attribute and method setup, cf. functions Attrib.setup
   631 and Method.setup, as well as commands 'attribute_setup' and
   667 and Method.setup, as well as Isar commands 'attribute_setup' and
   632 'method_setup'.  INCOMPATIBILITY for 'method_setup', need to simplify
   668 'method_setup'.  INCOMPATIBILITY for 'method_setup', need to simplify
   633 existing code accordingly, or use plain 'setup' together with old
   669 existing code accordingly, or use plain 'setup' together with old
   634 Method.add_method.
   670 Method.add_method.
   635 
   671 
   636 * Simplified ML oracle interface Thm.add_oracle promotes 'a -> cterm
   672 * Simplified ML oracle interface Thm.add_oracle promotes 'a -> cterm
   638 name.  The Isar command 'oracle' is now polymorphic, no argument type
   674 name.  The Isar command 'oracle' is now polymorphic, no argument type
   639 is specified.  INCOMPATIBILITY, need to simplify existing oracle code
   675 is specified.  INCOMPATIBILITY, need to simplify existing oracle code
   640 accordingly.  Note that extra performance may be gained by producing
   676 accordingly.  Note that extra performance may be gained by producing
   641 the cterm carefully, avoiding slow Thm.cterm_of.
   677 the cterm carefully, avoiding slow Thm.cterm_of.
   642 
   678 
   643 * ML bindings produced via Isar commands are stored within the Isar
   679 * Simplified interface for defining document antiquotations via
   644 context (theory or proof).  Consequently, commands like 'use' and 'ML'
   680 ThyOutput.antiquotation, ThyOutput.output, and optionally
   645 become thread-safe and work with undo as expected (concerning
   681 ThyOutput.maybe_pretty_source.  INCOMPATIBILITY, need to simplify user
   646 top-level bindings, not side-effects on global references).
   682 antiquotations accordingly, see src/Pure/Thy/thy_output.ML for common
   647 INCOMPATIBILITY, need to provide proper Isar context when invoking the
   683 examples.
   648 compiler at runtime; really global bindings need to be given outside a
       
   649 theory. [Poly/ML 5.2 or later]
       
   650 
       
   651 * Command 'ML_prf' is analogous to 'ML' but works within a proof
       
   652 context. Top-level ML bindings are stored within the proof context in
       
   653 a purely sequential fashion, disregarding the nested proof structure.
       
   654 ML bindings introduced by 'ML_prf' are discarded at the end of the
       
   655 proof.  [Poly/ML 5.2 or later]
       
   656 
       
   657 * Generic Toplevel.add_hook interface allows to analyze the result of
       
   658 transactions.  E.g. see src/Pure/ProofGeneral/proof_general_pgip.ML
       
   659 for theorem dependency output of transactions resulting in a new
       
   660 theory state.
       
   661 
   684 
   662 * More systematic treatment of long names, abstract name bindings, and
   685 * More systematic treatment of long names, abstract name bindings, and
   663 name space operations.  Basic operations on qualified names have been
   686 name space operations.  Basic operations on qualified names have been
   664 move from structure NameSpace to Long_Name, e.g. Long_Name.base_name,
   687 move from structure NameSpace to Long_Name, e.g. Long_Name.base_name,
   665 Long_Name.append.  Old type bstring has been mostly replaced by
   688 Long_Name.append.  Old type bstring has been mostly replaced by
   666 abstract type binding (see structure Binding), which supports precise
   689 abstract type binding (see structure Binding), which supports precise
   667 qualification (by packages and local theory targets), as well as
   690 qualification by packages and local theory targets, as well as proper
   668 proper tracking of source positions.  INCOMPATIBILITY, need to wrap
   691 tracking of source positions.  INCOMPATIBILITY, need to wrap old
   669 old bstring values into Binding.name, or better pass through abstract
   692 bstring values into Binding.name, or better pass through abstract
   670 bindings everywhere.  See further src/Pure/General/long_name.ML,
   693 bindings everywhere.  See further src/Pure/General/long_name.ML,
   671 src/Pure/General/binding.ML and src/Pure/General/name_space.ML
   694 src/Pure/General/binding.ML and src/Pure/General/name_space.ML
   672 
       
   673 * Simplified interface for defining document antiquotations via
       
   674 ThyOutput.antiquotation, ThyOutput.output, and optionally
       
   675 ThyOutput.maybe_pretty_source.  INCOMPATIBILITY, need to simplify user
       
   676 antiquotations accordingly, see src/Pure/Thy/thy_output.ML for common
       
   677 examples.
       
   678 
   695 
   679 * Result facts (from PureThy.note_thms, ProofContext.note_thms,
   696 * Result facts (from PureThy.note_thms, ProofContext.note_thms,
   680 LocalTheory.note etc.) now refer to the *full* internal name, not the
   697 LocalTheory.note etc.) now refer to the *full* internal name, not the
   681 bstring as before.  INCOMPATIBILITY, not detected by ML type-checking!
   698 bstring as before.  INCOMPATIBILITY, not detected by ML type-checking!
   682 
       
   683 * Rules and tactics that read instantiations (read_instantiate,
       
   684 res_inst_tac, thin_tac, subgoal_tac etc.) now demand a proper proof
       
   685 context, which is required for parsing and type-checking.  Moreover,
       
   686 the variables are specified as plain indexnames, not string encodings
       
   687 thereof.  INCOMPATIBILITY.
       
   688 
   699 
   689 * Disposed old type and term read functions (Sign.read_def_typ,
   700 * Disposed old type and term read functions (Sign.read_def_typ,
   690 Sign.read_typ, Sign.read_def_terms, Sign.read_term,
   701 Sign.read_typ, Sign.read_def_terms, Sign.read_term,
   691 Thm.read_def_cterms, Thm.read_cterm etc.).  INCOMPATIBILITY, should
   702 Thm.read_def_cterms, Thm.read_cterm etc.).  INCOMPATIBILITY, should
   692 use regular Syntax.read_typ, Syntax.read_term, Syntax.read_typ_global,
   703 use regular Syntax.read_typ, Syntax.read_term, Syntax.read_typ_global,
   697 the simpset or claset of an implicit theory (such as Addsimps,
   708 the simpset or claset of an implicit theory (such as Addsimps,
   698 Simp_tac, SIMPSET).  INCOMPATIBILITY, should use @{simpset} etc. in
   709 Simp_tac, SIMPSET).  INCOMPATIBILITY, should use @{simpset} etc. in
   699 embedded ML text, or local_simpset_of with a proper context passed as
   710 embedded ML text, or local_simpset_of with a proper context passed as
   700 explicit runtime argument.
   711 explicit runtime argument.
   701 
   712 
   702 * Antiquotations: block-structured compilation context indicated by
   713 * Rules and tactics that read instantiations (read_instantiate,
       
   714 res_inst_tac, thin_tac, subgoal_tac etc.) now demand a proper proof
       
   715 context, which is required for parsing and type-checking.  Moreover,
       
   716 the variables are specified as plain indexnames, not string encodings
       
   717 thereof.  INCOMPATIBILITY.
       
   718 
       
   719 * Generic Toplevel.add_hook interface allows to analyze the result of
       
   720 transactions.  E.g. see src/Pure/ProofGeneral/proof_general_pgip.ML
       
   721 for theorem dependency output of transactions resulting in a new
       
   722 theory state.
       
   723 
       
   724 * ML antiquotations: block-structured compilation context indicated by
   703 \<lbrace> ... \<rbrace>; additional antiquotation forms:
   725 \<lbrace> ... \<rbrace>; additional antiquotation forms:
   704 
   726 
       
   727   @{binding name}                         - basic name binding
   705   @{let ?pat = term}                      - term abbreviation (HO matching)
   728   @{let ?pat = term}                      - term abbreviation (HO matching)
   706   @{note name = fact}                     - fact abbreviation
   729   @{note name = fact}                     - fact abbreviation
   707   @{thm fact}                             - singleton fact (with attributes)
   730   @{thm fact}                             - singleton fact (with attributes)
   708   @{thms fact}                            - general fact (with attributes)
   731   @{thms fact}                            - general fact (with attributes)
   709   @{lemma prop by method}                 - singleton goal
   732   @{lemma prop by method}                 - singleton goal
   713   @{lemma (open) ...}                     - open derivation
   736   @{lemma (open) ...}                     - open derivation
   714 
   737 
   715 
   738 
   716 *** System ***
   739 *** System ***
   717 
   740 
   718 * Multithreading for Poly/ML 5.1/5.2 is no longer supported, only for
       
   719 Poly/ML 5.2.1 or later.
       
   720 
       
   721 * The Isabelle "emacs" tool provides a specific interface to invoke
   741 * The Isabelle "emacs" tool provides a specific interface to invoke
   722 Proof General / Emacs, with more explicit failure if that is not
   742 Proof General / Emacs, with more explicit failure if that is not
   723 installed (the old isabelle-interface script silently falls back on
   743 installed (the old isabelle-interface script silently falls back on
   724 isabelle-process).  The PROOFGENERAL_HOME setting determines the
   744 isabelle-process).  The PROOFGENERAL_HOME setting determines the
   725 installation location of the Proof General distribution.
   745 installation location of the Proof General distribution.
   727 * Isabelle/lib/classes/Pure.jar provides basic support to integrate
   747 * Isabelle/lib/classes/Pure.jar provides basic support to integrate
   728 the Isabelle process into a JVM/Scala application.  See
   748 the Isabelle process into a JVM/Scala application.  See
   729 Isabelle/lib/jedit/plugin for a minimal example.  (The obsolete Java
   749 Isabelle/lib/jedit/plugin for a minimal example.  (The obsolete Java
   730 process wrapper has been discontinued.)
   750 process wrapper has been discontinued.)
   731 
   751 
   732 * Status messages (with exact source position information) are
   752 * Added homegrown Isabelle font with unicode layout, see lib/fonts.
       
   753 
       
   754 * Various status messages (with exact source position information) are
   733 emitted, if proper markup print mode is enabled.  This allows
   755 emitted, if proper markup print mode is enabled.  This allows
   734 user-interface components to provide detailed feedback on internal
   756 user-interface components to provide detailed feedback on internal
   735 prover operations.
   757 prover operations.
   736 
       
   737 * Homegrown Isabelle font with unicode layout, see Isabelle/lib/fonts.
       
   738 
   758 
   739 
   759 
   740 
   760 
   741 New in Isabelle2008 (June 2008)
   761 New in Isabelle2008 (June 2008)
   742 -------------------------------
   762 -------------------------------