NEWS
author oheimb
Fri, 24 Apr 1998 11:22:39 +0200
changeset 4824 df8fc4626a9e
parent 4806 79cc986bc4d7
child 4825 e4e56a1bcbe2
permissions -rw-r--r--
*** empty log message ***
     1 
     2 Isabelle NEWS -- history of user-visible changes
     3 ================================================
     4 
     5 New in Isabelle??? (FIXME)
     6 --------------------------
     7 
     8 * Rewrite rules for case distinctions can now be added permanently to the
     9   default simpset using Addsplits just like Addsimps. They can be removed via
    10   Delsplits just like Delsimps. Lower-case versions are also available.
    11   For applications see HOL below.
    12 
    13 * Changed wrapper mechanism for the classical reasoner now allows for selected
    14   deletion of wrappers, by introduction of names for wrapper functionals.
    15   This implies that addbefore, addSbefore, addaltern, and addSaltern now take
    16   a pair (name, tactic) as argument, and that adding two tactics with the same
    17   name overwrites the first one (emitting a warning).
    18   type wrapper = (int -> tactic) -> (int -> tactic)
    19   setWrapper, setSWrapper, compWrapper and compSWrapper are replaced by
    20   addWrapper, addSWrapper: claset * (string * wrapper) -> claset
    21   delWrapper, delSWrapper: claset *  string            -> claset
    22   getWrapper is renamed to appWrappers, getSWrapper to appSWrappers;
    23 
    24 * Inductive definitions now handle disjunctive premises correctly (HOL and ZF)
    25 
    26 
    27 *** HOL ***
    28 
    29 * new force_tac (and its derivations Force_tac, force) 
    30   combines rewriting and classical reasoning (and whatever other tools)
    31   similarly to auto_tac, but is aimed to solve the given subgoal totally.
    32 
    33 * added option_map_eq_Some to simpset(), option_map_eq_Some RS iffD1 to claset()
    34 * New directory HOL/UNITY: Chandy and Misra's UNITY formalism
    35 
    36 * split_all_tac is now much faster and fails if there is nothing to split
    37   split_all_tac has moved within claset() from usafe wrappers to safe wrappers,
    38   which means that !!-bound variables are splitted much more aggressively.
    39   If this splitting is not appropriate, use delSWrapper "split_all_tac".
    40 
    41 * added disj_not1 = "(~P | Q) = (P --> Q)" to the default simpset
    42 
    43 * HOL/Arithmetic: removed 'pred' (predecessor) function; and generalized
    44   some theorems about n-1
    45 
    46 * HOL/Relation: renamed the relational operatotr r^-1 "converse" instead of
    47   "inverse"
    48 
    49 * HOL/equalities: added many new laws involving unions, intersectinos,
    50   difference, etc.
    51 
    52 * recdef can now declare non-recursive functions, with {} supplied as the 
    53   well-founded relation
    54 
    55 * Simplifier:
    56 
    57  -The rule expand_if is now part of the default simpset. This means that
    58   the simplifier will eliminate all ocurrences of if-then-else in the
    59   conclusion of a goal. To prevent this, you can either remove expand_if
    60   completely from the default simpset by `Delsplits [expand_if]' or
    61   remove it in a specific call of the simplifier using
    62   `... delsplits [expand_if]'.
    63   You can also add/delete other case splitting rules to/from the default
    64   simpset: every datatype generates a suitable rule `split_t_case' (where t
    65   is the name of the datatype).
    66 
    67  -Asm_full_simp_tac is now more aggressive:
    68   1. It will sometimes reorient premises if that increases their power to
    69      simplify.
    70   2. It does no longer proceed strictly from left to right but may also
    71      rotate premises to achieve further simplification.
    72   For compatibility reasons there is now Asm_lr_simp_tac which is like the
    73   old Asm_full_simp_tac in that it does not rotate premises.
    74 
    75 * new theory Vimage (inverse image of a function, syntax f-``B);
    76 
    77 * many new identities for unions, intersections, etc.;
    78 
    79 
    80 New in Isabelle98 (January 1998)
    81 --------------------------------
    82 
    83 *** Overview of INCOMPATIBILITIES (see below for more details) ***
    84 
    85 * changed lexical syntax of terms / types: dots made part of long
    86 identifiers, e.g. "%x.x" no longer possible, should be "%x. x";
    87 
    88 * simpset (and claset) reference variable replaced by functions
    89 simpset / simpset_ref;
    90 
    91 * no longer supports theory aliases (via merge) and non-trivial
    92 implicit merge of thms' signatures;
    93 
    94 * most internal names of constants changed due to qualified names;
    95 
    96 * changed Pure/Sequence interface (see Pure/seq.ML);
    97 
    98 
    99 *** General Changes ***
   100 
   101 * hierachically structured name spaces (for consts, types, axms, thms
   102 etc.); new lexical class 'longid' (e.g. Foo.bar.x) may render much of
   103 old input syntactically incorrect (e.g. "%x.x"); COMPATIBILITY:
   104 isatool fixdots ensures space after dots (e.g. "%x. x"); set
   105 long_names for fully qualified output names; NOTE: ML programs
   106 (special tactics, packages etc.) referring to internal names may have
   107 to be adapted to cope with fully qualified names; in case of severe
   108 backward campatibility problems try setting 'global_names' at compile
   109 time to have enrything declared within a flat name space; one may also
   110 fine tune name declarations in theories via the 'global' and 'local'
   111 section;
   112 
   113 * reimplemented the implicit simpset and claset using the new anytype
   114 data filed in signatures; references simpset:simpset ref etc. are
   115 replaced by functions simpset:unit->simpset and
   116 simpset_ref:unit->simpset ref; COMPATIBILITY: use isatool fixclasimp
   117 to patch your ML files accordingly;
   118 
   119 * HTML output now includes theory graph data for display with Java
   120 applet or isatool browser; data generated automatically via isatool
   121 usedir (see -i option, ISABELLE_USEDIR_OPTIONS);
   122 
   123 * defs may now be conditional; improved rewrite_goals_tac to handle
   124 conditional equations;
   125 
   126 * defs now admits additional type arguments, using TYPE('a) syntax;
   127 
   128 * theory aliases via merge (e.g. M=A+B+C) no longer supported, always
   129 creates a new theory node; implicit merge of thms' signatures is
   130 restricted to 'trivial' ones; COMPATIBILITY: one may have to use
   131 transfer:theory->thm->thm in (rare) cases;
   132 
   133 * improved handling of draft signatures / theories; draft thms (and
   134 ctyps, cterms) are automatically promoted to real ones;
   135 
   136 * slightly changed interfaces for oracles: admit many per theory, named
   137 (e.g. oracle foo = mlfun), additional name argument for invoke_oracle;
   138 
   139 * print_goals: optional output of const types (set show_consts and
   140 show_types);
   141 
   142 * improved output of warnings (###) and errors (***);
   143 
   144 * subgoal_tac displays a warning if the new subgoal has type variables;
   145 
   146 * removed old README and Makefiles;
   147 
   148 * replaced print_goals_ref hook by print_current_goals_fn and result_error_fn;
   149 
   150 * removed obsolete init_pps and init_database;
   151 
   152 * deleted the obsolete tactical STATE, which was declared by
   153     fun STATE tacfun st = tacfun st st;
   154 
   155 * cd and use now support path variables, e.g. $ISABELLE_HOME, or ~
   156 (which abbreviates $HOME);
   157 
   158 * changed Pure/Sequence interface (see Pure/seq.ML); COMPATIBILITY:
   159 use isatool fixseq to adapt your ML programs (this works for fully
   160 qualified references to the Sequence structure only!);
   161 
   162 * use_thy no longer requires writable current directory; it always
   163 reloads .ML *and* .thy file, if either one is out of date;
   164 
   165 
   166 *** Classical Reasoner ***
   167 
   168 * Clarify_tac, clarify_tac, clarify_step_tac, Clarify_step_tac: new
   169 tactics that use classical reasoning to simplify a subgoal without
   170 splitting it into several subgoals;
   171 
   172 * Safe_tac: like safe_tac but uses the default claset;
   173 
   174 
   175 *** Simplifier ***
   176 
   177 * added simplification meta rules:
   178     (asm_)(full_)simplify: simpset -> thm -> thm;
   179 
   180 * simplifier.ML no longer part of Pure -- has to be loaded by object
   181 logics (again);
   182 
   183 * added prems argument to simplification procedures;
   184 
   185 * HOL, FOL, ZF: added infix function `addsplits':
   186   instead of `<simpset> setloop (split_tac <thms>)'
   187   you can simply write `<simpset> addsplits <thms>'
   188 
   189 
   190 *** Syntax ***
   191 
   192 * TYPE('a) syntax for type reflection terms;
   193 
   194 * no longer handles consts with name "" -- declare as 'syntax' instead;
   195 
   196 * pretty printer: changed order of mixfix annotation preference (again!);
   197 
   198 * Pure: fixed idt/idts vs. pttrn/pttrns syntactic categories;
   199 
   200 
   201 *** HOL ***
   202 
   203 * HOL: there is a new splitter `split_asm_tac' that can be used e.g. 
   204   with `addloop' of the simplifier to faciliate case splitting in premises.
   205 
   206 * HOL/TLA: Stephan Merz's formalization of Lamport's Temporal Logic of Actions;
   207 
   208 * HOL/Auth: new protocol proofs including some for the Internet
   209   protocol TLS;
   210 
   211 * HOL/Map: new theory of `maps' a la VDM;
   212 
   213 * HOL/simplifier: simplification procedures nat_cancel_sums for
   214 cancelling out common nat summands from =, <, <= (in)equalities, or
   215 differences; simplification procedures nat_cancel_factor for
   216 cancelling common factor from =, <, <= (in)equalities over natural
   217 sums; nat_cancel contains both kinds of procedures, it is installed by
   218 default in Arith.thy -- this COULD MAKE EXISTING PROOFS FAIL;
   219 
   220 * HOL/simplifier: terms of the form
   221   `? x. P1(x) & ... & Pn(x) & x=t & Q1(x) & ... Qn(x)'  (or t=x)
   222   are rewritten to
   223   `P1(t) & ... & Pn(t) & Q1(t) & ... Qn(t)',
   224   and those of the form
   225   `! x. P1(x) & ... & Pn(x) & x=t & Q1(x) & ... Qn(x) --> R(x)'  (or t=x)
   226   are rewritten to
   227   `P1(t) & ... & Pn(t) & Q1(t) & ... Qn(t) --> R(t)',
   228 
   229 * HOL/datatype
   230   Each datatype `t' now comes with a theorem `split_t_case' of the form
   231 
   232   P(t_case f1 ... fn x) =
   233      ( (!y1 ... ym1. x = C1 y1 ... ym1 --> P(f1 y1 ... ym1)) &
   234         ...
   235        (!y1 ... ymn. x = Cn y1 ... ymn --> P(f1 y1 ... ymn))
   236      )
   237 
   238   which can be added to a simpset via `addsplits'. The existing theorems
   239   expand_list_case and expand_option_case have been renamed to
   240   split_list_case and split_option_case.
   241 
   242   Additionally, there is a theorem `split_t_case_asm' of the form
   243 
   244   P(t_case f1 ... fn x) =
   245     ~( (? y1 ... ym1. x = C1 y1 ... ym1 & ~P(f1 y1 ... ym1)) |
   246         ...
   247        (? y1 ... ymn. x = Cn y1 ... ymn & ~P(f1 y1 ... ymn))
   248      )
   249 
   250   it be used with the new `split_asm_tac'.
   251 
   252 * HOL/Arithmetic:
   253   - `pred n' is automatically converted to `n-1'.
   254     Users are strongly encouraged not to use `pred' any longer,
   255     because it will disappear altogether at some point.
   256   - Users are strongly encouraged to write "0 < n" rather than
   257     "n ~= 0". Theorems and proof tools have been modified towards this
   258     `standard'.
   259 
   260 * HOL/Lists:
   261   the function "set_of_list" has been renamed "set" (and its theorems too);
   262   the function "nth" now takes its arguments in the reverse order and
   263   has acquired the infix notation "!" as in "xs!n".
   264 
   265 * HOL/Set: UNIV is now a constant and is no longer translated to Compl{};
   266 
   267 * HOL/Set: The operator (UN x.B x) now abbreviates (UN x:UNIV. B x) and its
   268   specialist theorems (like UN1_I) are gone.  Similarly for (INT x.B x);
   269 
   270 * HOL/record: extensible records with schematic structural subtyping
   271 (single inheritance); EXPERIMENTAL version demonstrating the encoding,
   272 still lacks various theorems and concrete record syntax;
   273 
   274 
   275 *** HOLCF ***
   276 
   277 * removed "axioms" and "generated by" sections;
   278 
   279 * replaced "ops" section by extended "consts" section, which is capable of
   280   handling the continuous function space "->" directly;
   281 
   282 * domain package:
   283   . proves theorems immediately and stores them in the theory,
   284   . creates hierachical name space,
   285   . now uses normal mixfix annotations (instead of cinfix...),
   286   . minor changes to some names and values (for consistency),
   287   . e.g. cases -> casedist, dists_eq -> dist_eqs, [take_lemma] -> take_lemmas,
   288   . separator between mutual domain defs: changed "," to "and",
   289   . improved handling of sort constraints;  now they have to
   290     appear on the left-hand side of the equations only;
   291 
   292 * fixed LAM <x,y,zs>.b syntax;
   293 
   294 * added extended adm_tac to simplifier in HOLCF -- can now discharge
   295 adm (%x. P (t x)), where P is chainfinite and t continuous;
   296 
   297 
   298 *** FOL and ZF ***
   299 
   300 * FOL: there is a new splitter `split_asm_tac' that can be used e.g. 
   301   with `addloop' of the simplifier to faciliate case splitting in premises.
   302 
   303 * qed_spec_mp, qed_goal_spec_mp, qed_goalw_spec_mp are available, as
   304 in HOL, they strip ALL and --> from proved theorems;
   305 
   306 
   307 
   308 New in Isabelle94-8 (May 1997)
   309 ------------------------------
   310 
   311 *** General Changes ***
   312 
   313 * new utilities to build / run / maintain Isabelle etc. (in parts
   314 still somewhat experimental); old Makefiles etc. still functional;
   315 
   316 * new 'Isabelle System Manual';
   317 
   318 * INSTALL text, together with ./configure and ./build scripts;
   319 
   320 * reimplemented type inference for greater efficiency, better error
   321 messages and clean internal interface;
   322 
   323 * prlim command for dealing with lots of subgoals (an easier way of
   324 setting goals_limit);
   325 
   326 
   327 *** Syntax ***
   328 
   329 * supports alternative (named) syntax tables (parser and pretty
   330 printer); internal interface is provided by add_modesyntax(_i);
   331 
   332 * Pure, FOL, ZF, HOL, HOLCF now support symbolic input and output; to
   333 be used in conjunction with the Isabelle symbol font; uses the
   334 "symbols" syntax table;
   335 
   336 * added token_translation interface (may translate name tokens in
   337 arbitrary ways, dependent on their type (free, bound, tfree, ...) and
   338 the current print_mode); IMPORTANT: user print translation functions
   339 are responsible for marking newly introduced bounds
   340 (Syntax.mark_boundT);
   341 
   342 * token translations for modes "xterm" and "xterm_color" that display
   343 names in bold, underline etc. or colors (which requires a color
   344 version of xterm);
   345 
   346 * infixes may now be declared with names independent of their syntax;
   347 
   348 * added typed_print_translation (like print_translation, but may
   349 access type of constant);
   350 
   351 
   352 *** Classical Reasoner ***
   353 
   354 Blast_tac: a new tactic!  It is often more powerful than fast_tac, but has
   355 some limitations.  Blast_tac...
   356   + ignores addss, addbefore, addafter; this restriction is intrinsic
   357   + ignores elimination rules that don't have the correct format
   358 	(the conclusion MUST be a formula variable)
   359   + ignores types, which can make HOL proofs fail
   360   + rules must not require higher-order unification, e.g. apply_type in ZF
   361     [message "Function Var's argument not a bound variable" relates to this]
   362   + its proof strategy is more general but can actually be slower
   363 
   364 * substitution with equality assumptions no longer permutes other
   365 assumptions;
   366 
   367 * minor changes in semantics of addafter (now called addaltern); renamed
   368 setwrapper to setWrapper and compwrapper to compWrapper; added safe wrapper
   369 (and access functions for it);
   370 
   371 * improved combination of classical reasoner and simplifier: 
   372   + functions for handling clasimpsets
   373   + improvement of addss: now the simplifier is called _after_ the
   374     safe steps.
   375   + safe variant of addss called addSss: uses safe simplifications
   376     _during_ the safe steps. It is more complete as it allows multiple 
   377     instantiations of unknowns (e.g. with slow_tac).
   378 
   379 *** Simplifier ***
   380 
   381 * added interface for simplification procedures (functions that
   382 produce *proven* rewrite rules on the fly, depending on current
   383 redex);
   384 
   385 * ordering on terms as parameter (used for ordered rewriting);
   386 
   387 * new functions delcongs, deleqcongs, and Delcongs. richer rep_ss;
   388 
   389 * the solver is now split into a safe and an unsafe part.
   390 This should be invisible for the normal user, except that the
   391 functions setsolver and addsolver have been renamed to setSolver and
   392 addSolver; added safe_asm_full_simp_tac;
   393 
   394 
   395 *** HOL ***
   396 
   397 * a generic induction tactic `induct_tac' which works for all datatypes and
   398 also for type `nat';
   399 
   400 * a generic case distinction tactic `exhaust_tac' which works for all
   401 datatypes and also for type `nat';
   402 
   403 * each datatype comes with a function `size';
   404 
   405 * patterns in case expressions allow tuple patterns as arguments to
   406 constructors, for example `case x of [] => ... | (x,y,z)#ps => ...';
   407 
   408 * primrec now also works with type nat;
   409 
   410 * recdef: a new declaration form, allows general recursive functions to be
   411 defined in theory files.  See HOL/ex/Fib, HOL/ex/Primes, HOL/Subst/Unify.
   412 
   413 * the constant for negation has been renamed from "not" to "Not" to
   414 harmonize with FOL, ZF, LK, etc.;
   415 
   416 * HOL/ex/LFilter theory of a corecursive "filter" functional for
   417 infinite lists;
   418 
   419 * HOL/Modelcheck demonstrates invocation of model checker oracle;
   420 
   421 * HOL/ex/Ring.thy declares cring_simp, which solves equational
   422 problems in commutative rings, using axiomatic type classes for + and *;
   423 
   424 * more examples in HOL/MiniML and HOL/Auth;
   425 
   426 * more default rewrite rules for quantifiers, union/intersection;
   427 
   428 * a new constant `arbitrary == @x.False';
   429 
   430 * HOLCF/IOA replaces old HOL/IOA;
   431 
   432 * HOLCF changes: derived all rules and arities 
   433   + axiomatic type classes instead of classes 
   434   + typedef instead of faking type definitions
   435   + eliminated the internal constants less_fun, less_cfun, UU_fun, UU_cfun etc.
   436   + new axclasses cpo, chfin, flat with flat < chfin < pcpo < cpo < po
   437   + eliminated the types void, one, tr
   438   + use unit lift and bool lift (with translations) instead of one and tr
   439   + eliminated blift from Lift3.thy (use Def instead of blift)
   440   all eliminated rules are derived as theorems --> no visible changes ;
   441 
   442 
   443 *** ZF ***
   444 
   445 * ZF now has Fast_tac, Simp_tac and Auto_tac.  Union_iff is a now a default
   446 rewrite rule; this may affect some proofs.  eq_cs is gone but can be put back
   447 as ZF_cs addSIs [equalityI];
   448 
   449 
   450 
   451 New in Isabelle94-7 (November 96)
   452 ---------------------------------
   453 
   454 * allowing negative levels (as offsets) in prlev and choplev;
   455 
   456 * super-linear speedup for large simplifications;
   457 
   458 * FOL, ZF and HOL now use miniscoping: rewriting pushes
   459 quantifications in as far as possible (COULD MAKE EXISTING PROOFS
   460 FAIL); can suppress it using the command Delsimps (ex_simps @
   461 all_simps); De Morgan laws are also now included, by default;
   462 
   463 * improved printing of ==>  :  ~:
   464 
   465 * new object-logic "Sequents" adds linear logic, while replacing LK
   466 and Modal (thanks to Sara Kalvala);
   467 
   468 * HOL/Auth: correctness proofs for authentication protocols;
   469 
   470 * HOL: new auto_tac combines rewriting and classical reasoning (many
   471 examples on HOL/Auth);
   472 
   473 * HOL: new command AddIffs for declaring theorems of the form P=Q to
   474 the rewriter and classical reasoner simultaneously;
   475 
   476 * function uresult no longer returns theorems in "standard" format;
   477 regain previous version by: val uresult = standard o uresult;
   478 
   479 
   480 
   481 New in Isabelle94-6
   482 -------------------
   483 
   484 * oracles -- these establish an interface between Isabelle and trusted
   485 external reasoners, which may deliver results as theorems;
   486 
   487 * proof objects (in particular record all uses of oracles);
   488 
   489 * Simp_tac, Fast_tac, etc. that refer to implicit simpset / claset;
   490 
   491 * "constdefs" section in theory files;
   492 
   493 * "primrec" section (HOL) no longer requires names;
   494 
   495 * internal type "tactic" now simply "thm -> thm Sequence.seq";
   496 
   497 
   498 
   499 New in Isabelle94-5
   500 -------------------
   501 
   502 * reduced space requirements;
   503 
   504 * automatic HTML generation from theories;
   505 
   506 * theory files no longer require "..." (quotes) around most types;
   507 
   508 * new examples, including two proofs of the Church-Rosser theorem;
   509 
   510 * non-curried (1994) version of HOL is no longer distributed;
   511 
   512 
   513 
   514 New in Isabelle94-4
   515 -------------------
   516 
   517 * greatly reduced space requirements;
   518 
   519 * theory files (.thy) no longer require \...\ escapes at line breaks;
   520 
   521 * searchable theorem database (see the section "Retrieving theorems" on 
   522 page 8 of the Reference Manual);
   523 
   524 * new examples, including Grabczewski's monumental case study of the
   525 Axiom of Choice;
   526 
   527 * The previous version of HOL renamed to Old_HOL;
   528 
   529 * The new version of HOL (previously called CHOL) uses a curried syntax 
   530 for functions.  Application looks like f a b instead of f(a,b);
   531 
   532 * Mutually recursive inductive definitions finally work in HOL;
   533 
   534 * In ZF, pattern-matching on tuples is now available in all abstractions and
   535 translates to the operator "split";
   536 
   537 
   538 
   539 New in Isabelle94-3
   540 -------------------
   541 
   542 * new infix operator, addss, allowing the classical reasoner to 
   543 perform simplification at each step of its search.  Example:
   544 	fast_tac (cs addss ss)
   545 
   546 * a new logic, CHOL, the same as HOL, but with a curried syntax 
   547 for functions.  Application looks like f a b instead of f(a,b).  Also pairs 
   548 look like (a,b) instead of <a,b>;
   549 
   550 * PLEASE NOTE: CHOL will eventually replace HOL!
   551 
   552 * In CHOL, pattern-matching on tuples is now available in all abstractions.
   553 It translates to the operator "split".  A new theory of integers is available;
   554 
   555 * In ZF, integer numerals now denote two's-complement binary integers.
   556 Arithmetic operations can be performed by rewriting.  See ZF/ex/Bin.ML;
   557 
   558 * Many new examples: I/O automata, Church-Rosser theorem, equivalents 
   559 of the Axiom of Choice;
   560 
   561 
   562 
   563 New in Isabelle94-2
   564 -------------------
   565 
   566 * Significantly faster resolution;  
   567 
   568 * the different sections in a .thy file can now be mixed and repeated
   569 freely;
   570 
   571 * Database of theorems for FOL, HOL and ZF.  New
   572 commands including qed, qed_goal and bind_thm store theorems in the database.
   573 
   574 * Simple database queries: return a named theorem (get_thm) or all theorems of
   575 a given theory (thms_of), or find out what theory a theorem was proved in
   576 (theory_of_thm);
   577 
   578 * Bugs fixed in the inductive definition and datatype packages;
   579 
   580 * The classical reasoner provides deepen_tac and depth_tac, making FOL_dup_cs
   581 and HOL_dup_cs obsolete;
   582 
   583 * Syntactic ambiguities caused by the new treatment of syntax in Isabelle94-1
   584 have been removed;
   585 
   586 * Simpler definition of function space in ZF;
   587 
   588 * new results about cardinal and ordinal arithmetic in ZF;
   589 
   590 * 'subtype' facility in HOL for introducing new types as subsets of existing
   591 types;
   592 
   593 
   594 $Id$