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