author | blanchet |
Mon, 06 Jun 2011 20:36:35 +0200 | |
changeset 43206 | 831d28439b3a |
parent 42897 | 6bc8a6dcb3e0 |
child 43228 | 2ed2f092e990 |
permissions | -rw-r--r-- |
5363 | 1 |
Isabelle NEWS -- history user-relevant changes |
2 |
============================================== |
|
2553 | 3 |
|
41651 | 4 |
New in this Isabelle version |
5 |
---------------------------- |
|
6 |
||
41703
d27950860514
parallelization of nested Isar proofs is subject to Goal.parallel_proofs_threshold;
wenzelm
parents:
41685
diff
changeset
|
7 |
*** General *** |
d27950860514
parallelization of nested Isar proofs is subject to Goal.parallel_proofs_threshold;
wenzelm
parents:
41685
diff
changeset
|
8 |
|
41955
703ea96b13c6
files are identified via SHA1 digests -- discontinued ISABELLE_FILE_IDENT;
wenzelm
parents:
41952
diff
changeset
|
9 |
* Theory loader: source files are identified by content via SHA1 |
703ea96b13c6
files are identified via SHA1 digests -- discontinued ISABELLE_FILE_IDENT;
wenzelm
parents:
41952
diff
changeset
|
10 |
digests. Discontinued former path/modtime identification and optional |
703ea96b13c6
files are identified via SHA1 digests -- discontinued ISABELLE_FILE_IDENT;
wenzelm
parents:
41952
diff
changeset
|
11 |
ISABELLE_FILE_IDENT plugin scripts. |
703ea96b13c6
files are identified via SHA1 digests -- discontinued ISABELLE_FILE_IDENT;
wenzelm
parents:
41952
diff
changeset
|
12 |
|
41703
d27950860514
parallelization of nested Isar proofs is subject to Goal.parallel_proofs_threshold;
wenzelm
parents:
41685
diff
changeset
|
13 |
* Parallelization of nested Isar proofs is subject to |
d27950860514
parallelization of nested Isar proofs is subject to Goal.parallel_proofs_threshold;
wenzelm
parents:
41685
diff
changeset
|
14 |
Goal.parallel_proofs_threshold (default 100). See also isabelle |
d27950860514
parallelization of nested Isar proofs is subject to Goal.parallel_proofs_threshold;
wenzelm
parents:
41685
diff
changeset
|
15 |
usedir option -Q. |
d27950860514
parallelization of nested Isar proofs is subject to Goal.parallel_proofs_threshold;
wenzelm
parents:
41685
diff
changeset
|
16 |
|
41718
05514b09bb4b
discontinued support for Poly/ML 5.2, which was the last version without proper multithreading and TimeLimit implementation;
wenzelm
parents:
41703
diff
changeset
|
17 |
* Discontinued support for Poly/ML 5.2, which was the last version |
05514b09bb4b
discontinued support for Poly/ML 5.2, which was the last version without proper multithreading and TimeLimit implementation;
wenzelm
parents:
41703
diff
changeset
|
18 |
without proper multithreading and TimeLimit implementation. |
05514b09bb4b
discontinued support for Poly/ML 5.2, which was the last version without proper multithreading and TimeLimit implementation;
wenzelm
parents:
41703
diff
changeset
|
19 |
|
41734
d92cc39097e6
discontinued obsolete lib/scripts/polyml-platform;
wenzelm
parents:
41728
diff
changeset
|
20 |
* Discontinued old lib/scripts/polyml-platform, which has been |
d92cc39097e6
discontinued obsolete lib/scripts/polyml-platform;
wenzelm
parents:
41728
diff
changeset
|
21 |
obsolete since Isabelle2009-2. |
d92cc39097e6
discontinued obsolete lib/scripts/polyml-platform;
wenzelm
parents:
41728
diff
changeset
|
22 |
|
41886 | 23 |
* Theory loader: source files are exclusively located via the master |
24 |
directory of each theory node (where the .thy file itself resides). |
|
25 |
The global load path (such as src/HOL/Library) is has been |
|
26 |
discontinued. INCOMPATIBILITY. |
|
27 |
||
41950
134131d519c0
clarified ISABELLE_CSDP setting (formerly CSDP_EXE);
wenzelm
parents:
41944
diff
changeset
|
28 |
* Various optional external tools are referenced more robustly and |
41952
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
29 |
uniformly by explicit Isabelle settings as follows: |
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
30 |
|
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
31 |
ISABELLE_CSDP (formerly CSDP_EXE) |
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
32 |
ISABELLE_GHC (formerly EXEC_GHC or GHC_PATH) |
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
33 |
ISABELLE_OCAML (formerly EXEC_OCAML) |
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
34 |
ISABELLE_SWIPL (formerly EXEC_SWIPL) |
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
35 |
ISABELLE_YAP (formerly EXEC_YAP) |
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
36 |
|
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
37 |
Note that automated detection from the file-system or search path has |
c7297638599b
cleanup of former settings GHC_PATH, EXEC_GHC, EXEC_OCAML, EXEC_SWIPL, EXEC_YAP -- discontinued implicit detection;
wenzelm
parents:
41950
diff
changeset
|
38 |
been discontinued. INCOMPATIBILITY. |
41950
134131d519c0
clarified ISABELLE_CSDP setting (formerly CSDP_EXE);
wenzelm
parents:
41944
diff
changeset
|
39 |
|
42669
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
40 |
* Name space: former unsynchronized references are now proper |
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
41 |
configuration options, with more conventional names: |
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
42 |
|
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
43 |
long_names ~> names_long |
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
44 |
short_names ~> names_short |
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
45 |
unique_names ~> names_unique |
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
46 |
|
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
47 |
Minor INCOMPATIBILITY, need to declare options in context like this: |
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
48 |
|
04dfffda5671
more conventional naming scheme: names_long, names_short, names_unique;
wenzelm
parents:
42658
diff
changeset
|
49 |
declare [[names_unique = false]] |
42358
b47d41d9f4b5
Name_Space: proper configuration options long_names, short_names, unique_names instead of former unsynchronized references;
wenzelm
parents:
42290
diff
changeset
|
50 |
|
42502 | 51 |
* Literal facts `prop` may contain dummy patterns, e.g. `_ = _`. Note |
52 |
that the result needs to be unique, which means fact specifications |
|
53 |
may have to be refined after enriching a proof context. |
|
54 |
||
42633 | 55 |
* Isabelle/Isar reference manual provides more formal references in |
56 |
syntax diagrams. |
|
57 |
||
41703
d27950860514
parallelization of nested Isar proofs is subject to Goal.parallel_proofs_threshold;
wenzelm
parents:
41685
diff
changeset
|
58 |
|
41727
ab3f6d76fb23
available_provers ~> supported_provers (for clarity)
blanchet
parents:
41703
diff
changeset
|
59 |
*** HOL *** |
ab3f6d76fb23
available_provers ~> supported_provers (for clarity)
blanchet
parents:
41703
diff
changeset
|
60 |
|
42874 | 61 |
* Finite_Set.thy: more coherent development of fold_set locales: |
62 |
||
63 |
locale fun_left_comm ~> locale comp_fun_commute |
|
64 |
locale fun_left_comm_idem ~> locale comp_fun_idem |
|
65 |
||
66 |
Both use point-free characterisation; interpretation proofs may need adjustment. |
|
67 |
INCOMPATIBILITY. |
|
68 |
||
42843 | 69 |
* Code generation: |
70 |
- theory Library/Code_Char_ord provides native ordering of characters |
|
71 |
in the target language. |
|
72 |
||
42815 | 73 |
* Declare ext [intro] by default. Rare INCOMPATIBILITY. |
74 |
||
41792
ff3cb0c418b7
renamed "nitpick\_def" to "nitpick_unfold" to reflect its new semantics
blanchet
parents:
41734
diff
changeset
|
75 |
* Nitpick: |
41877 | 76 |
- Added "need" and "total_consts" options. |
41993
bd6296de1432
reintroduced "show_skolems" option -- useful when too many Skolems are displayed
blanchet
parents:
41955
diff
changeset
|
77 |
- Reintroduced "show_skolems" option by popular demand. |
41792
ff3cb0c418b7
renamed "nitpick\_def" to "nitpick_unfold" to reflect its new semantics
blanchet
parents:
41734
diff
changeset
|
78 |
- Renamed attribute: nitpick_def ~> nitpick_unfold. |
ff3cb0c418b7
renamed "nitpick\_def" to "nitpick_unfold" to reflect its new semantics
blanchet
parents:
41734
diff
changeset
|
79 |
INCOMPATIBILITY. |
ff3cb0c418b7
renamed "nitpick\_def" to "nitpick_unfold" to reflect its new semantics
blanchet
parents:
41734
diff
changeset
|
80 |
|
41727
ab3f6d76fb23
available_provers ~> supported_provers (for clarity)
blanchet
parents:
41703
diff
changeset
|
81 |
* Sledgehammer: |
41792
ff3cb0c418b7
renamed "nitpick\_def" to "nitpick_unfold" to reflect its new semantics
blanchet
parents:
41734
diff
changeset
|
82 |
- sledgehammer available_provers ~> sledgehammer supported_provers |
41727
ab3f6d76fb23
available_provers ~> supported_provers (for clarity)
blanchet
parents:
41703
diff
changeset
|
83 |
INCOMPATIBILITY. |
42582 | 84 |
- Added support for SNARK and ToFoF-E on SystemOnTPTP and for simply typed |
85 |
TPTP problems (TFF). |
|
42740
31334a7b109d
renamed "max_mono_instances" to "max_new_mono_instances" and changed its semantics accordingly
blanchet
parents:
42724
diff
changeset
|
86 |
- Added "type_sys", "max_mono_iters", and "max_new_mono_instances" options. |
41727
ab3f6d76fb23
available_provers ~> supported_provers (for clarity)
blanchet
parents:
41703
diff
changeset
|
87 |
|
43206
831d28439b3a
marked "metisF" as legacy -- nobody uses it or needs it
blanchet
parents:
42897
diff
changeset
|
88 |
* Metis: |
831d28439b3a
marked "metisF" as legacy -- nobody uses it or needs it
blanchet
parents:
42897
diff
changeset
|
89 |
- Obsoleted "metisF" -- use "metis" instead. |
831d28439b3a
marked "metisF" as legacy -- nobody uses it or needs it
blanchet
parents:
42897
diff
changeset
|
90 |
|
41999
3c029ef9e0f2
added "simp:", "intro:", and "elim:" to "try" command
blanchet
parents:
41993
diff
changeset
|
91 |
* "try": |
3c029ef9e0f2
added "simp:", "intro:", and "elim:" to "try" command
blanchet
parents:
41993
diff
changeset
|
92 |
- Added "simp:", "intro:", and "elim:" options. |
3c029ef9e0f2
added "simp:", "intro:", and "elim:" to "try" command
blanchet
parents:
41993
diff
changeset
|
93 |
|
42160 | 94 |
* Quickcheck: |
95 |
- Added "eval" option to evaluate terms for the found counterexample |
|
96 |
(currently only supported by the default (exhaustive) tester) |
|
97 |
- Added post-processing of terms to obtain readable counterexamples |
|
98 |
(currently only supported by the default (exhaustive) tester) |
|
99 |
||
41846
b368a7aee46a
removed support for tail-recursion from function package (now implemented by partial_function)
krauss
parents:
41792
diff
changeset
|
100 |
* Function package: discontinued option "tailrec". |
b368a7aee46a
removed support for tail-recursion from function package (now implemented by partial_function)
krauss
parents:
41792
diff
changeset
|
101 |
INCOMPATIBILITY. Use partial_function instead. |
b368a7aee46a
removed support for tail-recursion from function package (now implemented by partial_function)
krauss
parents:
41792
diff
changeset
|
102 |
|
42149 | 103 |
* HOL-Probability: |
104 |
- Caratheodory's extension lemma is now proved for ring_of_sets. |
|
105 |
- Infinite products of probability measures are now available. |
|
106 |
- Use extended reals instead of positive extended reals. |
|
107 |
INCOMPATIBILITY. |
|
41727
ab3f6d76fb23
available_provers ~> supported_provers (for clarity)
blanchet
parents:
41703
diff
changeset
|
108 |
|
42484 | 109 |
|
41685
e29ea98a76ce
term style 'isub': ad-hoc subscripting of variables that end with digits (x1, x23, ...)
krauss
parents:
41667
diff
changeset
|
110 |
*** Document preparation *** |
e29ea98a76ce
term style 'isub': ad-hoc subscripting of variables that end with digits (x1, x23, ...)
krauss
parents:
41667
diff
changeset
|
111 |
|
42706 | 112 |
* Antiquotation @{rail} layouts railroad syntax diagrams, see also |
113 |
isar-ref manual. |
|
42633 | 114 |
|
42514 | 115 |
* Localized \isabellestyle switch can be used within blocks or groups |
116 |
like this: |
|
117 |
||
118 |
\isabellestyle{it} %preferred default |
|
119 |
{\isabellestylett @{text "typewriter stuff"}} |
|
120 |
||
41685
e29ea98a76ce
term style 'isub': ad-hoc subscripting of variables that end with digits (x1, x23, ...)
krauss
parents:
41667
diff
changeset
|
121 |
* New term style "isub" as ad-hoc conversion of variables x1, y23 into |
e29ea98a76ce
term style 'isub': ad-hoc subscripting of variables that end with digits (x1, x23, ...)
krauss
parents:
41667
diff
changeset
|
122 |
subscripted form x\<^isub>1, y\<^isub>2\<^isub>3. |
41651 | 123 |
|
42484 | 124 |
* Predefined LaTeX macros for Isabelle symbols \<bind> and \<then> |
125 |
(e.g. see ~~/src/HOL/Library/Monad_Syntax.thy). |
|
126 |
||
41651 | 127 |
|
41944
b97091ae583a
Path.print is the official way to show file-system paths to users -- note that Path.implode often indicates violation of the abstract datatype;
wenzelm
parents:
41886
diff
changeset
|
128 |
*** ML *** |
b97091ae583a
Path.print is the official way to show file-system paths to users -- note that Path.implode often indicates violation of the abstract datatype;
wenzelm
parents:
41886
diff
changeset
|
129 |
|
42897 | 130 |
* Isabelle_Process.is_active allows tools to check if the official |
131 |
process wrapper is running (Isabelle/Scala/jEdit) or the old TTY loop |
|
132 |
(better known as Proof General). |
|
133 |
||
42360 | 134 |
* Structure Proof_Context follows standard naming scheme. Old |
135 |
ProofContext is still available for some time as legacy alias. |
|
136 |
||
42015
7b6e72a1b7dd
NEWS: structure Timing provides various operations for timing;
wenzelm
parents:
41999
diff
changeset
|
137 |
* Structure Timing provides various operations for timing; supersedes |
7b6e72a1b7dd
NEWS: structure Timing provides various operations for timing;
wenzelm
parents:
41999
diff
changeset
|
138 |
former start_timing/end_timing etc. |
7b6e72a1b7dd
NEWS: structure Timing provides various operations for timing;
wenzelm
parents:
41999
diff
changeset
|
139 |
|
41944
b97091ae583a
Path.print is the official way to show file-system paths to users -- note that Path.implode often indicates violation of the abstract datatype;
wenzelm
parents:
41886
diff
changeset
|
140 |
* Path.print is the official way to show file-system paths to users |
b97091ae583a
Path.print is the official way to show file-system paths to users -- note that Path.implode often indicates violation of the abstract datatype;
wenzelm
parents:
41886
diff
changeset
|
141 |
(including quotes etc.). |
b97091ae583a
Path.print is the official way to show file-system paths to users -- note that Path.implode often indicates violation of the abstract datatype;
wenzelm
parents:
41886
diff
changeset
|
142 |
|
42056
160a630b2c7e
enable inner syntax source positions by default (controlled via configuration option);
wenzelm
parents:
42015
diff
changeset
|
143 |
* Inner syntax: identifiers in parse trees of generic categories |
160a630b2c7e
enable inner syntax source positions by default (controlled via configuration option);
wenzelm
parents:
42015
diff
changeset
|
144 |
"logic", "aprop", "idt" etc. carry position information (disguised as |
160a630b2c7e
enable inner syntax source positions by default (controlled via configuration option);
wenzelm
parents:
42015
diff
changeset
|
145 |
type constraints). Occasional INCOMPATIBILITY with non-compliant |
42057
3eba96ff3d3e
more selective strip_positions in case patterns -- reactivate translations based on "case _ of _" in HOL and special patterns in HOLCF;
wenzelm
parents:
42056
diff
changeset
|
146 |
translations that choke on unexpected type constraints. Positions can |
3eba96ff3d3e
more selective strip_positions in case patterns -- reactivate translations based on "case _ of _" in HOL and special patterns in HOLCF;
wenzelm
parents:
42056
diff
changeset
|
147 |
be stripped in ML translations via Syntax.strip_positions / |
3eba96ff3d3e
more selective strip_positions in case patterns -- reactivate translations based on "case _ of _" in HOL and special patterns in HOLCF;
wenzelm
parents:
42056
diff
changeset
|
148 |
Syntax.strip_positions_ast, or via the syntax constant |
3eba96ff3d3e
more selective strip_positions in case patterns -- reactivate translations based on "case _ of _" in HOL and special patterns in HOLCF;
wenzelm
parents:
42056
diff
changeset
|
149 |
"_strip_positions" within parse trees. As last resort, positions can |
3eba96ff3d3e
more selective strip_positions in case patterns -- reactivate translations based on "case _ of _" in HOL and special patterns in HOLCF;
wenzelm
parents:
42056
diff
changeset
|
150 |
be disabled via the configuration option Syntax.positions, which is |
3eba96ff3d3e
more selective strip_positions in case patterns -- reactivate translations based on "case _ of _" in HOL and special patterns in HOLCF;
wenzelm
parents:
42056
diff
changeset
|
151 |
called "syntax_positions" in Isar attribute syntax. |
42056
160a630b2c7e
enable inner syntax source positions by default (controlled via configuration option);
wenzelm
parents:
42015
diff
changeset
|
152 |
|
42290
b1f544c84040
discontinued special treatment of structure Lexicon;
wenzelm
parents:
42284
diff
changeset
|
153 |
* Discontinued special status of various ML structures that contribute |
b1f544c84040
discontinued special treatment of structure Lexicon;
wenzelm
parents:
42284
diff
changeset
|
154 |
to structure Syntax (Ast, Lexicon, Mixfix, Parser, Printer etc.): less |
b1f544c84040
discontinued special treatment of structure Lexicon;
wenzelm
parents:
42284
diff
changeset
|
155 |
pervasive content, no inclusion in structure Syntax. INCOMPATIBILITY, |
b1f544c84040
discontinued special treatment of structure Lexicon;
wenzelm
parents:
42284
diff
changeset
|
156 |
refer directly to Ast.Constant, Lexicon.is_identifier, |
b1f544c84040
discontinued special treatment of structure Lexicon;
wenzelm
parents:
42284
diff
changeset
|
157 |
Syntax_Trans.mk_binder_tr etc. |
42224
578a51fae383
discontinued special treatment of structure Ast: no pervasive content, no inclusion in structure Syntax;
wenzelm
parents:
42180
diff
changeset
|
158 |
|
42247
12fe41a92cd5
typed_print_translation: discontinued show_sorts argument;
wenzelm
parents:
42239
diff
changeset
|
159 |
* Typed print translation: discontinued show_sorts argument, which is |
12fe41a92cd5
typed_print_translation: discontinued show_sorts argument;
wenzelm
parents:
42239
diff
changeset
|
160 |
already available via context of "advanced" translation. |
12fe41a92cd5
typed_print_translation: discontinued show_sorts argument;
wenzelm
parents:
42239
diff
changeset
|
161 |
|
42370 | 162 |
* Refined PARALLEL_GOALS tactical: degrades gracefully for schematic |
163 |
goal states; body tactic needs to address all subgoals uniformly. |
|
164 |
||
42403
38b29c9fc742
slightly more special eq_list/eq_set, with shortcut involving pointer_eq;
wenzelm
parents:
42370
diff
changeset
|
165 |
* Slightly more special eq_list/eq_set, with shortcut involving |
38b29c9fc742
slightly more special eq_list/eq_set, with shortcut involving pointer_eq;
wenzelm
parents:
42370
diff
changeset
|
166 |
pointer equality (assumes that eq relation is reflexive). |
38b29c9fc742
slightly more special eq_list/eq_set, with shortcut involving pointer_eq;
wenzelm
parents:
42370
diff
changeset
|
167 |
|
42793 | 168 |
* Classical tactics use proper Proof.context instead of historic types |
169 |
claset/clasimpset. Old-style declarations like addIs, addEs, addDs |
|
170 |
operate directly on Proof.context. Raw type claset retains its use as |
|
171 |
snapshot of the classical context, which can be recovered via |
|
172 |
(put_claset HOL_cs) etc. Type clasimpset has been discontinued. |
|
173 |
INCOMPATIBILITY, classical tactics and derived proof methods require |
|
174 |
proper Proof.context. |
|
175 |
||
41944
b97091ae583a
Path.print is the official way to show file-system paths to users -- note that Path.implode often indicates violation of the abstract datatype;
wenzelm
parents:
41886
diff
changeset
|
176 |
|
41703
d27950860514
parallelization of nested Isar proofs is subject to Goal.parallel_proofs_threshold;
wenzelm
parents:
41685
diff
changeset
|
177 |
|
41512 | 178 |
New in Isabelle2011 (January 2011) |
179 |
---------------------------------- |
|
37383 | 180 |
|
37536
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
181 |
*** General *** |
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
182 |
|
41573 | 183 |
* Experimental Prover IDE based on Isabelle/Scala and jEdit (see |
41612 | 184 |
src/Tools/jEdit). This also serves as IDE for Isabelle/ML, with |
185 |
useful tooltips and hyperlinks produced from its static analysis. The |
|
186 |
bundled component provides an executable Isabelle tool that can be run |
|
187 |
like this: |
|
188 |
||
189 |
Isabelle2011/bin/isabelle jedit |
|
41573 | 190 |
|
40948 | 191 |
* Significantly improved Isabelle/Isar implementation manual. |
192 |
||
41594 | 193 |
* System settings: ISABELLE_HOME_USER now includes ISABELLE_IDENTIFIER |
41595 | 194 |
(and thus refers to something like $HOME/.isabelle/Isabelle2011), |
41594 | 195 |
while the default heap location within that directory lacks that extra |
196 |
suffix. This isolates multiple Isabelle installations from each |
|
197 |
other, avoiding problems with old settings in new versions. |
|
198 |
INCOMPATIBILITY, need to copy/upgrade old user settings manually. |
|
199 |
||
40947 | 200 |
* Source files are always encoded as UTF-8, instead of old-fashioned |
201 |
ISO-Latin-1. INCOMPATIBILITY. Isabelle LaTeX documents might require |
|
40948 | 202 |
the following package declarations: |
40947 | 203 |
|
204 |
\usepackage[utf8]{inputenc} |
|
205 |
\usepackage{textcomp} |
|
206 |
||
41440 | 207 |
* Explicit treatment of UTF-8 sequences as Isabelle symbols, such that |
37536
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
208 |
a Unicode character is treated as a single symbol, not a sequence of |
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
209 |
non-ASCII bytes as before. Since Isabelle/ML string literals may |
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
210 |
contain symbols without further backslash escapes, Unicode can now be |
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
211 |
used here as well. Recall that Symbol.explode in ML provides a |
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
212 |
consistent view on symbols, while raw explode (or String.explode) |
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
213 |
merely give a byte-oriented representation. |
c62aa9281101
explicit treatment of UTF8 sequences as Isabelle symbols;
wenzelm
parents:
37484
diff
changeset
|
214 |
|
41594 | 215 |
* Theory loader: source files are primarily located via the master |
216 |
directory of each theory node (where the .thy file itself resides). |
|
217 |
The global load path is still partially available as legacy feature. |
|
218 |
Minor INCOMPATIBILITY due to subtle change in file lookup: use |
|
219 |
explicit paths, relatively to the theory. |
|
38135
2b9bfa0b44f1
theory loading: only the master source file is looked-up in the implicit load path;
wenzelm
parents:
38110
diff
changeset
|
220 |
|
37939
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
wenzelm
parents:
37868
diff
changeset
|
221 |
* Special treatment of ML file names has been discontinued. |
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
wenzelm
parents:
37868
diff
changeset
|
222 |
Historically, optional extensions .ML or .sml were added on demand -- |
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
wenzelm
parents:
37868
diff
changeset
|
223 |
at the cost of clarity of file dependencies. Recall that Isabelle/ML |
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
wenzelm
parents:
37868
diff
changeset
|
224 |
files exclusively use the .ML extension. Minor INCOMPATIBILTY. |
965537d86fcc
discontinued special treatment of ML files -- no longer complete extensions on demand;
wenzelm
parents:
37868
diff
changeset
|
225 |
|
38980
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
226 |
* Various options that affect pretty printing etc. are now properly |
38767
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
wenzelm
parents:
38708
diff
changeset
|
227 |
handled within the context via configuration options, instead of |
40879
ca132ef44944
configuration option "show_abbrevs" supersedes print mode "no_abbrevs", with inverted meaning;
wenzelm
parents:
40878
diff
changeset
|
228 |
unsynchronized references or print modes. There are both ML Config.T |
ca132ef44944
configuration option "show_abbrevs" supersedes print mode "no_abbrevs", with inverted meaning;
wenzelm
parents:
40878
diff
changeset
|
229 |
entities and Isar declaration attributes to access these. |
38767
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
wenzelm
parents:
38708
diff
changeset
|
230 |
|
39125
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
wenzelm
parents:
39105
diff
changeset
|
231 |
ML (Config.T) Isar (attribute) |
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
wenzelm
parents:
39105
diff
changeset
|
232 |
|
39128
93a7365fb4ee
turned eta_contract into proper configuration option;
wenzelm
parents:
39126
diff
changeset
|
233 |
eta_contract eta_contract |
39137
ccb53edd59f0
turned show_brackets into proper configuration option;
wenzelm
parents:
39134
diff
changeset
|
234 |
show_brackets show_brackets |
39134
917b4b6ba3d2
turned show_sorts/show_types into proper configuration options;
wenzelm
parents:
39128
diff
changeset
|
235 |
show_sorts show_sorts |
917b4b6ba3d2
turned show_sorts/show_types into proper configuration options;
wenzelm
parents:
39128
diff
changeset
|
236 |
show_types show_types |
39126
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
wenzelm
parents:
39125
diff
changeset
|
237 |
show_question_marks show_question_marks |
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
wenzelm
parents:
39125
diff
changeset
|
238 |
show_consts show_consts |
40879
ca132ef44944
configuration option "show_abbrevs" supersedes print mode "no_abbrevs", with inverted meaning;
wenzelm
parents:
40878
diff
changeset
|
239 |
show_abbrevs show_abbrevs |
39126
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
wenzelm
parents:
39125
diff
changeset
|
240 |
|
41379 | 241 |
Syntax.ast_trace syntax_ast_trace |
242 |
Syntax.ast_stat syntax_ast_stat |
|
39126
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
wenzelm
parents:
39125
diff
changeset
|
243 |
Syntax.ambiguity_level syntax_ambiguity_level |
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
wenzelm
parents:
39125
diff
changeset
|
244 |
|
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
wenzelm
parents:
39125
diff
changeset
|
245 |
Goal_Display.goals_limit goals_limit |
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
wenzelm
parents:
39125
diff
changeset
|
246 |
Goal_Display.show_main_goal show_main_goal |
ee117c5b3b75
configuration options Syntax.ambiguity_enabled (inverse of former Syntax.ambiguity_is_error), Syntax.ambiguity_level (with Isar attribute "syntax_ambiguity_level"), Syntax.ambiguity_limit;
wenzelm
parents:
39125
diff
changeset
|
247 |
|
41379 | 248 |
Method.rule_trace rule_trace |
249 |
||
39125
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
wenzelm
parents:
39105
diff
changeset
|
250 |
Thy_Output.display thy_output_display |
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
wenzelm
parents:
39105
diff
changeset
|
251 |
Thy_Output.quotes thy_output_quotes |
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
wenzelm
parents:
39105
diff
changeset
|
252 |
Thy_Output.indent thy_output_indent |
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
wenzelm
parents:
39105
diff
changeset
|
253 |
Thy_Output.source thy_output_source |
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
wenzelm
parents:
39105
diff
changeset
|
254 |
Thy_Output.break thy_output_break |
f45d332a90e3
pretty_goals: turned some global references and function arguments into configuration options (goals_limit = 10, goals_total = true, show_main_goal = false) depending on the context;
wenzelm
parents:
39105
diff
changeset
|
255 |
|
41440 | 256 |
Note that corresponding "..._default" references in ML may only be |
38767
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
wenzelm
parents:
38708
diff
changeset
|
257 |
changed globally at the ROOT session setup, but *not* within a theory. |
40879
ca132ef44944
configuration option "show_abbrevs" supersedes print mode "no_abbrevs", with inverted meaning;
wenzelm
parents:
40878
diff
changeset
|
258 |
The option "show_abbrevs" supersedes the former print mode |
ca132ef44944
configuration option "show_abbrevs" supersedes print mode "no_abbrevs", with inverted meaning;
wenzelm
parents:
40878
diff
changeset
|
259 |
"no_abbrevs" with inverted meaning. |
38767
d8da44a8dd25
proper context for various Thy_Output options, via official configuration options in ML and Isar;
wenzelm
parents:
38708
diff
changeset
|
260 |
|
40878
7695e4de4d86
renamed trace_simp to simp_trace, and debug_simp to simp_debug;
wenzelm
parents:
40866
diff
changeset
|
261 |
* More systematic naming of some configuration options. |
41294 | 262 |
INCOMPATIBILITY. |
40878
7695e4de4d86
renamed trace_simp to simp_trace, and debug_simp to simp_debug;
wenzelm
parents:
40866
diff
changeset
|
263 |
|
7695e4de4d86
renamed trace_simp to simp_trace, and debug_simp to simp_debug;
wenzelm
parents:
40866
diff
changeset
|
264 |
trace_simp ~> simp_trace |
7695e4de4d86
renamed trace_simp to simp_trace, and debug_simp to simp_debug;
wenzelm
parents:
40866
diff
changeset
|
265 |
debug_simp ~> simp_debug |
7695e4de4d86
renamed trace_simp to simp_trace, and debug_simp to simp_debug;
wenzelm
parents:
40866
diff
changeset
|
266 |
|
40291 | 267 |
* Support for real valued configuration options, using simplistic |
268 |
floating-point notation that coincides with the inner syntax for |
|
269 |
float_token. |
|
270 |
||
41594 | 271 |
* Support for real valued preferences (with approximative PGIP type): |
272 |
front-ends need to accept "pgint" values in float notation. |
|
273 |
INCOMPATIBILITY. |
|
41573 | 274 |
|
275 |
* The IsabelleText font now includes Cyrillic, Hebrew, Arabic from |
|
276 |
DejaVu Sans. |
|
277 |
||
41594 | 278 |
* Discontinued support for Poly/ML 5.0 and 5.1 versions. |
279 |
||
40948 | 280 |
|
281 |
*** Pure *** |
|
282 |
||
41249
26f12f98f50a
Command 'type_synonym' (with single argument) supersedes 'types' (legacy feature);
wenzelm
parents:
41229
diff
changeset
|
283 |
* Command 'type_synonym' (with single argument) replaces somewhat |
26f12f98f50a
Command 'type_synonym' (with single argument) supersedes 'types' (legacy feature);
wenzelm
parents:
41229
diff
changeset
|
284 |
outdated 'types', which is still available as legacy feature for some |
26f12f98f50a
Command 'type_synonym' (with single argument) supersedes 'types' (legacy feature);
wenzelm
parents:
41229
diff
changeset
|
285 |
time. |
26f12f98f50a
Command 'type_synonym' (with single argument) supersedes 'types' (legacy feature);
wenzelm
parents:
41229
diff
changeset
|
286 |
|
26f12f98f50a
Command 'type_synonym' (with single argument) supersedes 'types' (legacy feature);
wenzelm
parents:
41229
diff
changeset
|
287 |
* Command 'nonterminal' (with 'and' separated list of arguments) |
26f12f98f50a
Command 'type_synonym' (with single argument) supersedes 'types' (legacy feature);
wenzelm
parents:
41229
diff
changeset
|
288 |
replaces somewhat outdated 'nonterminals'. INCOMPATIBILITY. |
41229
d797baa3d57c
replaced command 'nonterminals' by slightly modernized version 'nonterminal';
wenzelm
parents:
41228
diff
changeset
|
289 |
|
40965
54b6c9e1c157
command 'notepad' replaces former 'example_proof';
wenzelm
parents:
40959
diff
changeset
|
290 |
* Command 'notepad' replaces former 'example_proof' for |
41020 | 291 |
experimentation in Isar without any result. INCOMPATIBILITY. |
40965
54b6c9e1c157
command 'notepad' replaces former 'example_proof';
wenzelm
parents:
40959
diff
changeset
|
292 |
|
41435 | 293 |
* Locale interpretation commands 'interpret' and 'sublocale' accept |
294 |
lists of equations to map definitions in a locale to appropriate |
|
295 |
entities in the context of the interpretation. The 'interpretation' |
|
296 |
command already provided this functionality. |
|
297 |
||
41594 | 298 |
* Diagnostic command 'print_dependencies' prints the locale instances |
299 |
that would be activated if the specified expression was interpreted in |
|
300 |
the current context. Variant "print_dependencies!" assumes a context |
|
301 |
without interpretations. |
|
38110 | 302 |
|
303 |
* Diagnostic command 'print_interps' prints interpretations in proofs |
|
304 |
in addition to interpretations in theories. |
|
305 |
||
38708
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
wenzelm
parents:
38656
diff
changeset
|
306 |
* Discontinued obsolete 'global' and 'local' commands to manipulate |
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
wenzelm
parents:
38656
diff
changeset
|
307 |
the theory name space. Rare INCOMPATIBILITY. The ML functions |
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
wenzelm
parents:
38656
diff
changeset
|
308 |
Sign.root_path and Sign.local_path may be applied directly where this |
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
wenzelm
parents:
38656
diff
changeset
|
309 |
feature is still required for historical reasons. |
8915e3ce8655
discontinued obsolete 'global' and 'local' commands;
wenzelm
parents:
38656
diff
changeset
|
310 |
|
40948 | 311 |
* Discontinued obsolete 'constdefs' command. INCOMPATIBILITY, use |
39215 | 312 |
'definition' instead. |
313 |
||
41574 | 314 |
* The "prems" fact, which refers to the accidental collection of |
315 |
foundational premises in the context, is now explicitly marked as |
|
41594 | 316 |
legacy feature and will be discontinued soon. Consider using "assms" |
317 |
of the head statement or reference facts by explicit names. |
|
41574 | 318 |
|
40801 | 319 |
* Document antiquotations @{class} and @{type} print classes and type |
320 |
constructors. |
|
321 |
||
322 |
* Document antiquotation @{file} checks file/directory entries within |
|
323 |
the local file system. |
|
39305
d4fa19eb0822
'class' and 'type' are now antiquoations by default
haftmann
parents:
39277
diff
changeset
|
324 |
|
38110 | 325 |
|
37387
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
haftmann
parents:
37383
diff
changeset
|
326 |
*** HOL *** |
3581483cca6c
qualified types "+" and nat; qualified constants Ball, Bex, Suc, curry; modernized some specifications
haftmann
parents:
37383
diff
changeset
|
327 |
|
41594 | 328 |
* Coercive subtyping: functions can be declared as coercions and type |
329 |
inference will add them as necessary upon input of a term. Theory |
|
330 |
Complex_Main declares real :: nat => real and real :: int => real as |
|
331 |
coercions. A coercion function f is declared like this: |
|
40939
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
332 |
|
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
333 |
declare [[coercion f]] |
40866 | 334 |
|
41571 | 335 |
To lift coercions through type constructors (e.g. from nat => real to |
40866 | 336 |
nat list => real list), map functions can be declared, e.g. |
337 |
||
40939
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
338 |
declare [[coercion_map map]] |
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
339 |
|
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
340 |
Currently coercion inference is activated only in theories including |
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
341 |
real numbers, i.e. descendants of Complex_Main. This is controlled by |
41020 | 342 |
the configuration option "coercion_enabled", e.g. it can be enabled in |
40939
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
343 |
other theories like this: |
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
344 |
|
2c150063cd4d
setup subtyping/coercions once in HOL.thy, but enable it only later via configuration option;
wenzelm
parents:
40927
diff
changeset
|
345 |
declare [[coercion_enabled]] |
40866 | 346 |
|
41571 | 347 |
* Command 'partial_function' provides basic support for recursive |
348 |
function definitions over complete partial orders. Concrete instances |
|
40183 | 349 |
are provided for i) the option type, ii) tail recursion on arbitrary |
41571 | 350 |
types, and iii) the heap monad of Imperative_HOL. See |
351 |
src/HOL/ex/Fundefs.thy and src/HOL/Imperative_HOL/ex/Linked_Lists.thy |
|
352 |
for examples. |
|
40183 | 353 |
|
41571 | 354 |
* Function package: f.psimps rules are no longer implicitly declared |
355 |
as [simp]. INCOMPATIBILITY. |
|
41398 | 356 |
|
357 |
* Datatype package: theorems generated for executable equality (class |
|
41571 | 358 |
"eq") carry proper names and are treated as default code equations. |
359 |
||
41594 | 360 |
* Inductive package: now offers command 'inductive_simps' to |
361 |
automatically derive instantiated and simplified equations for |
|
362 |
inductive predicates, similar to 'inductive_cases'. |
|
363 |
||
41571 | 364 |
* Command 'enriched_type' allows to register properties of the |
365 |
functorial structure of types. |
|
39771 | 366 |
|
39644 | 367 |
* Improved infrastructure for term evaluation using code generator |
368 |
techniques, in particular static evaluation conversions. |
|
369 |
||
41594 | 370 |
* Code generator: Scala (2.8 or higher) has been added to the target |
371 |
languages. |
|
372 |
||
41398 | 373 |
* Code generator: globbing constant expressions "*" and "Theory.*" |
374 |
have been replaced by the more idiomatic "_" and "Theory._". |
|
375 |
INCOMPATIBILITY. |
|
376 |
||
377 |
* Code generator: export_code without explicit file declaration prints |
|
378 |
to standard output. INCOMPATIBILITY. |
|
379 |
||
380 |
* Code generator: do not print function definitions for case |
|
381 |
combinators any longer. |
|
382 |
||
41594 | 383 |
* Code generator: simplification with rules determined with |
41571 | 384 |
src/Tools/Code/code_simp.ML and method "code_simp". |
385 |
||
41594 | 386 |
* Code generator for records: more idiomatic representation of record |
40948 | 387 |
types. Warning: records are not covered by ancient SML code |
388 |
generation any longer. INCOMPATIBILITY. In cases of need, a suitable |
|
389 |
rep_datatype declaration helps to succeed then: |
|
38537 | 390 |
|
391 |
record 'a foo = ... |
|
392 |
... |
|
393 |
rep_datatype foo_ext ... |
|
38535 | 394 |
|
41594 | 395 |
* Records: logical foundation type for records does not carry a |
396 |
'_type' suffix any longer (obsolete due to authentic syntax). |
|
397 |
INCOMPATIBILITY. |
|
398 |
||
41398 | 399 |
* Quickcheck now by default uses exhaustive testing instead of random |
41571 | 400 |
testing. Random testing can be invoked by "quickcheck [random]", |
401 |
exhaustive testing by "quickcheck [exhaustive]". |
|
41398 | 402 |
|
403 |
* Quickcheck instantiates polymorphic types with small finite |
|
404 |
datatypes by default. This enables a simple execution mechanism to |
|
405 |
handle quantifiers and function equality over the finite datatypes. |
|
406 |
||
41571 | 407 |
* Quickcheck random generator has been renamed from "code" to |
408 |
"random". INCOMPATIBILITY. |
|
41398 | 409 |
|
410 |
* Quickcheck now has a configurable time limit which is set to 30 |
|
411 |
seconds by default. This can be changed by adding [timeout = n] to the |
|
412 |
quickcheck command. The time limit for Auto Quickcheck is still set |
|
413 |
independently. |
|
38461 | 414 |
|
415 |
* Quickcheck in locales considers interpretations of that locale for |
|
416 |
counter example search. |
|
417 |
||
40059
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
418 |
* Sledgehammer: |
41571 | 419 |
- Added "smt" and "remote_smt" provers based on the "smt" proof |
420 |
method. See the Sledgehammer manual for details ("isabelle doc |
|
421 |
sledgehammer"). |
|
40059
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
422 |
- Renamed commands: |
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
423 |
sledgehammer atp_info ~> sledgehammer running_provers |
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
424 |
sledgehammer atp_kill ~> sledgehammer kill_provers |
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
425 |
sledgehammer available_atps ~> sledgehammer available_provers |
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
426 |
INCOMPATIBILITY. |
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
427 |
- Renamed options: |
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
428 |
sledgehammer [atps = ...] ~> sledgehammer [provers = ...] |
40062 | 429 |
sledgehammer [atp = ...] ~> sledgehammer [prover = ...] |
40341
03156257040f
standardize on seconds for Nitpick and Sledgehammer timeouts
blanchet
parents:
40318
diff
changeset
|
430 |
sledgehammer [timeout = 77 s] ~> sledgehammer [timeout = 77] |
03156257040f
standardize on seconds for Nitpick and Sledgehammer timeouts
blanchet
parents:
40318
diff
changeset
|
431 |
(and "ms" and "min" are no longer supported) |
03156257040f
standardize on seconds for Nitpick and Sledgehammer timeouts
blanchet
parents:
40318
diff
changeset
|
432 |
INCOMPATIBILITY. |
03156257040f
standardize on seconds for Nitpick and Sledgehammer timeouts
blanchet
parents:
40318
diff
changeset
|
433 |
|
03156257040f
standardize on seconds for Nitpick and Sledgehammer timeouts
blanchet
parents:
40318
diff
changeset
|
434 |
* Nitpick: |
03156257040f
standardize on seconds for Nitpick and Sledgehammer timeouts
blanchet
parents:
40318
diff
changeset
|
435 |
- Renamed options: |
03156257040f
standardize on seconds for Nitpick and Sledgehammer timeouts
blanchet
parents:
40318
diff
changeset
|
436 |
nitpick [timeout = 77 s] ~> nitpick [timeout = 77] |
03156257040f
standardize on seconds for Nitpick and Sledgehammer timeouts
blanchet
parents:
40318
diff
changeset
|
437 |
nitpick [tac_timeout = 777 ms] ~> nitpick [tac_timeout = 0.777] |
40059
6ad9081665db
use consistent terminology in Sledgehammer: "prover = ATP or SMT solver or ..."
blanchet
parents:
39993
diff
changeset
|
438 |
INCOMPATIBILITY. |
40725 | 439 |
- Added support for partial quotient types. |
440 |
- Added local versions of the "Nitpick.register_xxx" functions. |
|
441 |
- Added "whack" option. |
|
442 |
- Allow registration of quotient types as codatatypes. |
|
443 |
- Improved "merge_type_vars" option to merge more types. |
|
444 |
- Removed unsound "fast_descrs" option. |
|
445 |
- Added custom symmetry breaking for datatypes, making it possible to reach |
|
446 |
higher cardinalities. |
|
447 |
- Prevent the expansion of too large definitions. |
|
39957
2f2d90cc31a2
document latest changes to Meson/Metis/Sledgehammer
blanchet
parents:
39910
diff
changeset
|
448 |
|
41571 | 449 |
* Proof methods "metis" and "meson" now have configuration options |
450 |
"meson_trace", "metis_trace", and "metis_verbose" that can be enabled |
|
451 |
to diagnose these tools. E.g. |
|
452 |
||
453 |
using [[metis_trace = true]] |
|
454 |
||
41398 | 455 |
* Auto Solve: Renamed "Auto Solve Direct". The tool is now available |
456 |
manually as command 'solve_direct'. |
|
457 |
||
41601 | 458 |
* The default SMT solver Z3 must be enabled explicitly (due to |
459 |
licensing issues) by setting the environment variable |
|
41603 | 460 |
Z3_NON_COMMERCIAL in etc/settings of the component, for example. For |
461 |
commercial applications, the SMT solver CVC3 is provided as fall-back; |
|
462 |
changing the SMT solver is done via the configuration option |
|
463 |
"smt_solver". |
|
41432
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
464 |
|
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
465 |
* Remote SMT solvers need to be referred to by the "remote_" prefix, |
41571 | 466 |
i.e. "remote_cvc3" and "remote_z3". |
467 |
||
468 |
* Added basic SMT support for datatypes, records, and typedefs using |
|
469 |
the oracle mode (no proofs). Direct support of pairs has been dropped |
|
470 |
in exchange (pass theorems fst_conv snd_conv pair_collapse to the SMT |
|
471 |
support for a similar behavior). Minor INCOMPATIBILITY. |
|
41432
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
472 |
|
40162
7f58a9a843c2
joined setup of SMT solvers in one place; turned Z3-specific options into SMT options (renamed configuration options from z3_* to smt_*); more detailed SMT exception; improved SMT filter interface
boehmes
parents:
40128
diff
changeset
|
473 |
* Changed SMT configuration options: |
7f58a9a843c2
joined setup of SMT solvers in one place; turned Z3-specific options into SMT options (renamed configuration options from z3_* to smt_*); more detailed SMT exception; improved SMT filter interface
boehmes
parents:
40128
diff
changeset
|
474 |
- Renamed: |
41432
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
475 |
z3_proofs ~> smt_oracle (with inverted meaning) |
40162
7f58a9a843c2
joined setup of SMT solvers in one place; turned Z3-specific options into SMT options (renamed configuration options from z3_* to smt_*); more detailed SMT exception; improved SMT filter interface
boehmes
parents:
40128
diff
changeset
|
476 |
z3_trace_assms ~> smt_trace_used_facts |
7f58a9a843c2
joined setup of SMT solvers in one place; turned Z3-specific options into SMT options (renamed configuration options from z3_* to smt_*); more detailed SMT exception; improved SMT filter interface
boehmes
parents:
40128
diff
changeset
|
477 |
INCOMPATIBILITY. |
7f58a9a843c2
joined setup of SMT solvers in one place; turned Z3-specific options into SMT options (renamed configuration options from z3_* to smt_*); more detailed SMT exception; improved SMT filter interface
boehmes
parents:
40128
diff
changeset
|
478 |
- Added: |
40424
7550b2cba1cb
better modularization: moved SMT configuration options and diagnostics as well as SMT failure and exception into separate structures (both of which are loaded first and consequently are available to other SMT structures)
boehmes
parents:
40388
diff
changeset
|
479 |
smt_verbose |
41432
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
480 |
smt_random_seed |
40424
7550b2cba1cb
better modularization: moved SMT configuration options and diagnostics as well as SMT failure and exception into separate structures (both of which are loaded first and consequently are available to other SMT structures)
boehmes
parents:
40388
diff
changeset
|
481 |
smt_datatypes |
41432
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
482 |
smt_infer_triggers |
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
483 |
smt_monomorph_limit |
40162
7f58a9a843c2
joined setup of SMT solvers in one place; turned Z3-specific options into SMT options (renamed configuration options from z3_* to smt_*); more detailed SMT exception; improved SMT filter interface
boehmes
parents:
40128
diff
changeset
|
484 |
cvc3_options |
41432
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
485 |
remote_cvc3_options |
3214c39777ab
differentiate between local and remote SMT solvers (e.g., "z3" vs. "remote_z3");
boehmes
parents:
41430
diff
changeset
|
486 |
remote_z3_options |
40162
7f58a9a843c2
joined setup of SMT solvers in one place; turned Z3-specific options into SMT options (renamed configuration options from z3_* to smt_*); more detailed SMT exception; improved SMT filter interface
boehmes
parents:
40128
diff
changeset
|
487 |
yices_options |
39957
2f2d90cc31a2
document latest changes to Meson/Metis/Sledgehammer
blanchet
parents:
39910
diff
changeset
|
488 |
|
40948 | 489 |
* Boogie output files (.b2i files) need to be declared in the theory |
490 |
header. |
|
40580
0592d3a39c08
require the b2i file ending in the boogie_open command (for consistency with the theory header)
boehmes
parents:
40424
diff
changeset
|
491 |
|
41594 | 492 |
* Simplification procedure "list_to_set_comprehension" rewrites list |
493 |
comprehensions applied to List.set to set comprehensions. Occasional |
|
494 |
INCOMPATIBILITY, may be deactivated like this: |
|
495 |
||
496 |
declare [[simproc del: list_to_set_comprehension]] |
|
497 |
||
41573 | 498 |
* Removed old version of primrec package. INCOMPATIBILITY. |
41398 | 499 |
|
500 |
* Removed simplifier congruence rule of "prod_case", as has for long |
|
501 |
been the case with "split". INCOMPATIBILITY. |
|
502 |
||
503 |
* String.literal is a type, but not a datatype. INCOMPATIBILITY. |
|
504 |
||
40388
cb9fd7dd641c
abolished obscure goal variant of [split_format] -- unused (cf. d1c14898fd04), unrelated to '(complete)' variant, and not at all canonical
krauss
parents:
40387
diff
changeset
|
505 |
* Removed [split_format ... and ... and ...] version of |
cb9fd7dd641c
abolished obscure goal variant of [split_format] -- unused (cf. d1c14898fd04), unrelated to '(complete)' variant, and not at all canonical
krauss
parents:
40387
diff
changeset
|
506 |
[split_format]. Potential INCOMPATIBILITY. |
cb9fd7dd641c
abolished obscure goal variant of [split_format] -- unused (cf. d1c14898fd04), unrelated to '(complete)' variant, and not at all canonical
krauss
parents:
40387
diff
changeset
|
507 |
|
41571 | 508 |
* Predicate "sorted" now defined inductively, with nice induction |
509 |
rules. INCOMPATIBILITY: former sorted.simps now named sorted_simps. |
|
41398 | 510 |
|
511 |
* Constant "contents" renamed to "the_elem", to free the generic name |
|
512 |
contents for other uses. INCOMPATIBILITY. |
|
513 |
||
514 |
* Renamed class eq and constant eq (for code generation) to class |
|
515 |
equal and constant equal, plus renaming of related facts and various |
|
516 |
tuning. INCOMPATIBILITY. |
|
517 |
||
518 |
* Dropped type classes mult_mono and mult_mono1. INCOMPATIBILITY. |
|
519 |
||
41571 | 520 |
* Removed output syntax "'a ~=> 'b" for "'a => 'b option". |
521 |
INCOMPATIBILITY. |
|
41398 | 522 |
|
523 |
* Renamed theory Fset to Cset, type Fset.fset to Cset.set, in order to |
|
524 |
avoid confusion with finite sets. INCOMPATIBILITY. |
|
525 |
||
526 |
* Abandoned locales equiv, congruent and congruent2 for equivalence |
|
527 |
relations. INCOMPATIBILITY: use equivI rather than equiv_intro (same |
|
528 |
for congruent(2)). |
|
529 |
||
530 |
* Some previously unqualified names have been qualified: |
|
531 |
||
532 |
types |
|
533 |
bool ~> HOL.bool |
|
534 |
nat ~> Nat.nat |
|
535 |
||
536 |
constants |
|
537 |
Trueprop ~> HOL.Trueprop |
|
538 |
True ~> HOL.True |
|
539 |
False ~> HOL.False |
|
540 |
op & ~> HOL.conj |
|
541 |
op | ~> HOL.disj |
|
542 |
op --> ~> HOL.implies |
|
543 |
op = ~> HOL.eq |
|
544 |
Not ~> HOL.Not |
|
545 |
The ~> HOL.The |
|
546 |
All ~> HOL.All |
|
547 |
Ex ~> HOL.Ex |
|
548 |
Ex1 ~> HOL.Ex1 |
|
549 |
Let ~> HOL.Let |
|
550 |
If ~> HOL.If |
|
551 |
Ball ~> Set.Ball |
|
552 |
Bex ~> Set.Bex |
|
553 |
Suc ~> Nat.Suc |
|
554 |
Pair ~> Product_Type.Pair |
|
555 |
fst ~> Product_Type.fst |
|
556 |
snd ~> Product_Type.snd |
|
557 |
curry ~> Product_Type.curry |
|
558 |
op : ~> Set.member |
|
559 |
Collect ~> Set.Collect |
|
560 |
||
561 |
INCOMPATIBILITY. |
|
562 |
||
563 |
* More canonical naming convention for some fundamental definitions: |
|
564 |
||
565 |
bot_bool_eq ~> bot_bool_def |
|
566 |
top_bool_eq ~> top_bool_def |
|
567 |
inf_bool_eq ~> inf_bool_def |
|
568 |
sup_bool_eq ~> sup_bool_def |
|
569 |
bot_fun_eq ~> bot_fun_def |
|
570 |
top_fun_eq ~> top_fun_def |
|
571 |
inf_fun_eq ~> inf_fun_def |
|
572 |
sup_fun_eq ~> sup_fun_def |
|
573 |
||
574 |
INCOMPATIBILITY. |
|
575 |
||
576 |
* More stylized fact names: |
|
577 |
||
578 |
expand_fun_eq ~> fun_eq_iff |
|
579 |
expand_set_eq ~> set_eq_iff |
|
580 |
set_ext ~> set_eqI |
|
581 |
nat_number ~> eval_nat_numeral |
|
582 |
||
583 |
INCOMPATIBILITY. |
|
584 |
||
41571 | 585 |
* Refactoring of code-generation specific operations in theory List: |
41398 | 586 |
|
587 |
constants |
|
588 |
null ~> List.null |
|
589 |
||
590 |
facts |
|
591 |
mem_iff ~> member_def |
|
592 |
null_empty ~> null_def |
|
593 |
||
594 |
INCOMPATIBILITY. Note that these were not supposed to be used |
|
595 |
regularly unless for striking reasons; their main purpose was code |
|
596 |
generation. |
|
597 |
||
598 |
Various operations from the Haskell prelude are used for generating |
|
599 |
Haskell code. |
|
600 |
||
41571 | 601 |
* Term "bij f" is now an abbreviation of "bij_betw f UNIV UNIV". Term |
602 |
"surj f" is now an abbreviation of "range f = UNIV". The theorems |
|
603 |
bij_def and surj_def are unchanged. INCOMPATIBILITY. |
|
41398 | 604 |
|
605 |
* Abolished some non-alphabetic type names: "prod" and "sum" replace |
|
606 |
"*" and "+" respectively. INCOMPATIBILITY. |
|
607 |
||
608 |
* Name "Plus" of disjoint sum operator "<+>" is now hidden. Write |
|
41571 | 609 |
"Sum_Type.Plus" instead. |
41398 | 610 |
|
611 |
* Constant "split" has been merged with constant "prod_case"; names of |
|
612 |
ML functions, facts etc. involving split have been retained so far, |
|
613 |
though. INCOMPATIBILITY. |
|
614 |
||
615 |
* Dropped old infix syntax "_ mem _" for List.member; use "_ : set _" |
|
616 |
instead. INCOMPATIBILITY. |
|
617 |
||
41571 | 618 |
* Removed lemma "Option.is_none_none" which duplicates "is_none_def". |
41398 | 619 |
INCOMPATIBILITY. |
620 |
||
41594 | 621 |
* Former theory Library/Enum is now part of the HOL-Main image. |
622 |
INCOMPATIBILITY: all constants of the Enum theory now have to be |
|
623 |
referred to by its qualified name. |
|
624 |
||
625 |
enum ~> Enum.enum |
|
626 |
nlists ~> Enum.nlists |
|
627 |
product ~> Enum.product |
|
628 |
||
629 |
* Theory Library/Monad_Syntax provides do-syntax for monad types. |
|
630 |
Syntax in Library/State_Monad has been changed to avoid ambiguities. |
|
631 |
INCOMPATIBILITY. |
|
632 |
||
633 |
* Theory Library/SetsAndFunctions has been split into |
|
634 |
Library/Function_Algebras and Library/Set_Algebras; canonical names |
|
635 |
for instance definitions for functions; various improvements. |
|
636 |
INCOMPATIBILITY. |
|
637 |
||
638 |
* Theory Library/Multiset provides stable quicksort implementation of |
|
639 |
sort_key. |
|
640 |
||
641 |
* Theory Library/Multiset: renamed empty_idemp ~> empty_neutral. |
|
642 |
INCOMPATIBILITY. |
|
643 |
||
644 |
* Session Multivariate_Analysis: introduced a type class for euclidean |
|
645 |
space. Most theorems are now stated in terms of euclidean spaces |
|
646 |
instead of finite cartesian products. |
|
647 |
||
648 |
types |
|
649 |
real ^ 'n ~> 'a::real_vector |
|
650 |
~> 'a::euclidean_space |
|
651 |
~> 'a::ordered_euclidean_space |
|
652 |
(depends on your needs) |
|
653 |
||
654 |
constants |
|
655 |
_ $ _ ~> _ $$ _ |
|
656 |
\<chi> x. _ ~> \<chi>\<chi> x. _ |
|
657 |
CARD('n) ~> DIM('a) |
|
658 |
||
659 |
Also note that the indices are now natural numbers and not from some |
|
660 |
finite type. Finite cartesian products of euclidean spaces, products |
|
661 |
of euclidean spaces the real and complex numbers are instantiated to |
|
662 |
be euclidean_spaces. INCOMPATIBILITY. |
|
663 |
||
664 |
* Session Probability: introduced pextreal as positive extended real |
|
665 |
numbers. Use pextreal as value for measures. Introduce the |
|
666 |
Radon-Nikodym derivative, product spaces and Fubini's theorem for |
|
667 |
arbitrary sigma finite measures. Introduces Lebesgue measure based on |
|
668 |
the integral in Multivariate Analysis. INCOMPATIBILITY. |
|
669 |
||
670 |
* Session Imperative_HOL: revamped, corrected dozens of inadequacies. |
|
671 |
INCOMPATIBILITY. |
|
672 |
||
673 |
* Session SPARK (with image HOL-SPARK) provides commands to load and |
|
674 |
prove verification conditions generated by the SPARK Ada program |
|
675 |
verifier. See also src/HOL/SPARK and src/HOL/SPARK/Examples. |
|
41567 | 676 |
|
40621 | 677 |
|
41433
1b8ff770f02c
Abelian group facts obtained from group facts via interpretation (sublocale).
ballarin
parents:
41432
diff
changeset
|
678 |
*** HOL-Algebra *** |
1b8ff770f02c
Abelian group facts obtained from group facts via interpretation (sublocale).
ballarin
parents:
41432
diff
changeset
|
679 |
|
1b8ff770f02c
Abelian group facts obtained from group facts via interpretation (sublocale).
ballarin
parents:
41432
diff
changeset
|
680 |
* Theorems for additive ring operations (locale abelian_monoid and |
1b8ff770f02c
Abelian group facts obtained from group facts via interpretation (sublocale).
ballarin
parents:
41432
diff
changeset
|
681 |
descendants) are generated by interpretation from their multiplicative |
41434
710cdb9e0d17
Documentation for 'interpret' and 'sublocale' with mixins.
ballarin
parents:
41433
diff
changeset
|
682 |
counterparts. Names (in particular theorem names) have the mandatory |
710cdb9e0d17
Documentation for 'interpret' and 'sublocale' with mixins.
ballarin
parents:
41433
diff
changeset
|
683 |
qualifier 'add'. Previous theorem names are redeclared for |
710cdb9e0d17
Documentation for 'interpret' and 'sublocale' with mixins.
ballarin
parents:
41433
diff
changeset
|
684 |
compatibility. |
710cdb9e0d17
Documentation for 'interpret' and 'sublocale' with mixins.
ballarin
parents:
41433
diff
changeset
|
685 |
|
41571 | 686 |
* Structure "int_ring" is now an abbreviation (previously a |
41434
710cdb9e0d17
Documentation for 'interpret' and 'sublocale' with mixins.
ballarin
parents:
41433
diff
changeset
|
687 |
definition). This fits more natural with advanced interpretations. |
41433
1b8ff770f02c
Abelian group facts obtained from group facts via interpretation (sublocale).
ballarin
parents:
41432
diff
changeset
|
688 |
|
1b8ff770f02c
Abelian group facts obtained from group facts via interpretation (sublocale).
ballarin
parents:
41432
diff
changeset
|
689 |
|
40621 | 690 |
*** HOLCF *** |
691 |
||
692 |
* The domain package now runs in definitional mode by default: The |
|
41571 | 693 |
former command 'new_domain' is now called 'domain'. To use the domain |
40621 | 694 |
package in its original axiomatic mode, use 'domain (unsafe)'. |
695 |
INCOMPATIBILITY. |
|
696 |
||
41571 | 697 |
* The new class "domain" is now the default sort. Class "predomain" |
698 |
is an unpointed version of "domain". Theories can be updated by |
|
699 |
replacing sort annotations as shown below. INCOMPATIBILITY. |
|
40621 | 700 |
|
701 |
'a::type ~> 'a::countable |
|
702 |
'a::cpo ~> 'a::predomain |
|
703 |
'a::pcpo ~> 'a::domain |
|
704 |
||
41571 | 705 |
* The old type class "rep" has been superseded by class "domain". |
40621 | 706 |
Accordingly, users of the definitional package must remove any |
41571 | 707 |
"default_sort rep" declarations. INCOMPATIBILITY. |
40621 | 708 |
|
41401 | 709 |
* The domain package (definitional mode) now supports unpointed |
710 |
predomain argument types, as long as they are marked 'lazy'. (Strict |
|
41571 | 711 |
arguments must be in class "domain".) For example, the following |
41401 | 712 |
domain definition now works: |
713 |
||
714 |
domain natlist = nil | cons (lazy "nat discr") (lazy "natlist") |
|
715 |
||
716 |
* Theory HOLCF/Library/HOL_Cpo provides cpo and predomain class |
|
41571 | 717 |
instances for types from main HOL: bool, nat, int, char, 'a + 'b, |
718 |
'a option, and 'a list. Additionally, it configures fixrec and the |
|
719 |
domain package to work with these types. For example: |
|
41401 | 720 |
|
721 |
fixrec isInl :: "('a + 'b) u -> tr" |
|
722 |
where "isInl$(up$(Inl x)) = TT" | "isInl$(up$(Inr y)) = FF" |
|
723 |
||
724 |
domain V = VFun (lazy "V -> V") | VCon (lazy "nat") (lazy "V list") |
|
725 |
||
41571 | 726 |
* The "(permissive)" option of fixrec has been replaced with a |
727 |
per-equation "(unchecked)" option. See |
|
728 |
src/HOL/HOLCF/Tutorial/Fixrec_ex.thy for examples. INCOMPATIBILITY. |
|
729 |
||
730 |
* The "bifinite" class no longer fixes a constant "approx"; the class |
|
731 |
now just asserts that such a function exists. INCOMPATIBILITY. |
|
732 |
||
733 |
* Former type "alg_defl" has been renamed to "defl". HOLCF no longer |
|
41287
029a6fc1bfb8
type 'defl' takes a type parameter again (cf. b525988432e9)
huffman
parents:
41286
diff
changeset
|
734 |
defines an embedding of type 'a defl into udom by default; instances |
41571 | 735 |
of "bifinite" and "domain" classes are available in |
736 |
src/HOL/HOLCF/Library/Defl_Bifinite.thy. |
|
737 |
||
738 |
* The syntax "REP('a)" has been replaced with "DEFL('a)". |
|
739 |
||
740 |
* The predicate "directed" has been removed. INCOMPATIBILITY. |
|
741 |
||
742 |
* The type class "finite_po" has been removed. INCOMPATIBILITY. |
|
743 |
||
744 |
* The function "cprod_map" has been renamed to "prod_map". |
|
41401 | 745 |
INCOMPATIBILITY. |
746 |
||
747 |
* The monadic bind operator on each powerdomain has new binder syntax |
|
41571 | 748 |
similar to sets, e.g. "\<Union>\<sharp>x\<in>xs. t" represents |
749 |
"upper_bind\<cdot>xs\<cdot>(\<Lambda> x. t)". |
|
41401 | 750 |
|
751 |
* The infix syntax for binary union on each powerdomain has changed |
|
41571 | 752 |
from e.g. "+\<sharp>" to "\<union>\<sharp>", for consistency with set |
753 |
syntax. INCOMPATIBILITY. |
|
754 |
||
755 |
* The constant "UU" has been renamed to "bottom". The syntax "UU" is |
|
41429
cf5f025bc3c7
renamed constant 'UU' to 'bottom', keeping 'UU' as alternative input syntax;
huffman
parents:
41414
diff
changeset
|
756 |
still supported as an input translation. |
cf5f025bc3c7
renamed constant 'UU' to 'bottom', keeping 'UU' as alternative input syntax;
huffman
parents:
41414
diff
changeset
|
757 |
|
40621 | 758 |
* Renamed some theorems (the original names are also still available). |
41571 | 759 |
|
40621 | 760 |
expand_fun_below ~> fun_below_iff |
761 |
below_fun_ext ~> fun_belowI |
|
762 |
expand_cfun_eq ~> cfun_eq_iff |
|
763 |
ext_cfun ~> cfun_eqI |
|
764 |
expand_cfun_below ~> cfun_below_iff |
|
765 |
below_cfun_ext ~> cfun_belowI |
|
766 |
cont2cont_Rep_CFun ~> cont2cont_APP |
|
767 |
||
768 |
* The Abs and Rep functions for various types have changed names. |
|
40948 | 769 |
Related theorem names have also changed to match. INCOMPATIBILITY. |
41571 | 770 |
|
40621 | 771 |
Rep_CFun ~> Rep_cfun |
772 |
Abs_CFun ~> Abs_cfun |
|
773 |
Rep_Sprod ~> Rep_sprod |
|
774 |
Abs_Sprod ~> Abs_sprod |
|
775 |
Rep_Ssum ~> Rep_ssum |
|
776 |
Abs_Ssum ~> Abs_ssum |
|
777 |
||
778 |
* Lemmas with names of the form *_defined_iff or *_strict_iff have |
|
41571 | 779 |
been renamed to *_bottom_iff. INCOMPATIBILITY. |
40621 | 780 |
|
781 |
* Various changes to bisimulation/coinduction with domain package: |
|
41571 | 782 |
|
783 |
- Definitions of "bisim" constants no longer mention definedness. |
|
784 |
- With mutual recursion, "bisim" predicate is now curried. |
|
40621 | 785 |
- With mutual recursion, each type gets a separate coind theorem. |
786 |
- Variable names in bisim_def and coinduct rules have changed. |
|
41571 | 787 |
|
40621 | 788 |
INCOMPATIBILITY. |
789 |
||
41571 | 790 |
* Case combinators generated by the domain package for type "foo" are |
791 |
now named "foo_case" instead of "foo_when". INCOMPATIBILITY. |
|
40621 | 792 |
|
40771 | 793 |
* Several theorems have been renamed to more accurately reflect the |
41571 | 794 |
names of constants and types involved. INCOMPATIBILITY. |
795 |
||
40771 | 796 |
thelub_const ~> lub_const |
797 |
lub_const ~> is_lub_const |
|
798 |
thelubI ~> lub_eqI |
|
799 |
is_lub_lub ~> is_lubD2 |
|
800 |
lubI ~> is_lub_lub |
|
801 |
unique_lub ~> is_lub_unique |
|
802 |
is_ub_lub ~> is_lub_rangeD1 |
|
803 |
lub_bin_chain ~> is_lub_bin_chain |
|
41030
ff7d177128ef
rename lub_fun -> is_lub_fun, thelub_fun -> lub_fun
huffman
parents:
40965
diff
changeset
|
804 |
lub_fun ~> is_lub_fun |
ff7d177128ef
rename lub_fun -> is_lub_fun, thelub_fun -> lub_fun
huffman
parents:
40965
diff
changeset
|
805 |
thelub_fun ~> lub_fun |
41031 | 806 |
thelub_cfun ~> lub_cfun |
40771 | 807 |
thelub_Pair ~> lub_Pair |
808 |
lub_cprod ~> is_lub_prod |
|
809 |
thelub_cprod ~> lub_prod |
|
810 |
minimal_cprod ~> minimal_prod |
|
811 |
inst_cprod_pcpo ~> inst_prod_pcpo |
|
41430
1aa23e9f2c87
change some lemma names containing 'UU' to 'bottom'
huffman
parents:
41429
diff
changeset
|
812 |
UU_I ~> bottomI |
1aa23e9f2c87
change some lemma names containing 'UU' to 'bottom'
huffman
parents:
41429
diff
changeset
|
813 |
compact_UU ~> compact_bottom |
1aa23e9f2c87
change some lemma names containing 'UU' to 'bottom'
huffman
parents:
41429
diff
changeset
|
814 |
deflation_UU ~> deflation_bottom |
1aa23e9f2c87
change some lemma names containing 'UU' to 'bottom'
huffman
parents:
41429
diff
changeset
|
815 |
finite_deflation_UU ~> finite_deflation_bottom |
40771 | 816 |
|
41571 | 817 |
* Many legacy theorem names have been discontinued. INCOMPATIBILITY. |
818 |
||
40621 | 819 |
sq_ord_less_eq_trans ~> below_eq_trans |
820 |
sq_ord_eq_less_trans ~> eq_below_trans |
|
821 |
refl_less ~> below_refl |
|
822 |
trans_less ~> below_trans |
|
823 |
antisym_less ~> below_antisym |
|
824 |
antisym_less_inverse ~> po_eq_conv [THEN iffD1] |
|
825 |
box_less ~> box_below |
|
826 |
rev_trans_less ~> rev_below_trans |
|
827 |
not_less2not_eq ~> not_below2not_eq |
|
828 |
less_UU_iff ~> below_UU_iff |
|
829 |
flat_less_iff ~> flat_below_iff |
|
830 |
adm_less ~> adm_below |
|
831 |
adm_not_less ~> adm_not_below |
|
832 |
adm_compact_not_less ~> adm_compact_not_below |
|
833 |
less_fun_def ~> below_fun_def |
|
834 |
expand_fun_less ~> fun_below_iff |
|
835 |
less_fun_ext ~> fun_belowI |
|
836 |
less_discr_def ~> below_discr_def |
|
837 |
discr_less_eq ~> discr_below_eq |
|
838 |
less_unit_def ~> below_unit_def |
|
839 |
less_cprod_def ~> below_prod_def |
|
840 |
prod_lessI ~> prod_belowI |
|
841 |
Pair_less_iff ~> Pair_below_iff |
|
842 |
fst_less_iff ~> fst_below_iff |
|
843 |
snd_less_iff ~> snd_below_iff |
|
844 |
expand_cfun_less ~> cfun_below_iff |
|
845 |
less_cfun_ext ~> cfun_belowI |
|
846 |
injection_less ~> injection_below |
|
847 |
less_up_def ~> below_up_def |
|
848 |
not_Iup_less ~> not_Iup_below |
|
849 |
Iup_less ~> Iup_below |
|
850 |
up_less ~> up_below |
|
851 |
Def_inject_less_eq ~> Def_below_Def |
|
852 |
Def_less_is_eq ~> Def_below_iff |
|
853 |
spair_less_iff ~> spair_below_iff |
|
854 |
less_sprod ~> below_sprod |
|
855 |
spair_less ~> spair_below |
|
856 |
sfst_less_iff ~> sfst_below_iff |
|
857 |
ssnd_less_iff ~> ssnd_below_iff |
|
858 |
fix_least_less ~> fix_least_below |
|
859 |
dist_less_one ~> dist_below_one |
|
860 |
less_ONE ~> below_ONE |
|
861 |
ONE_less_iff ~> ONE_below_iff |
|
862 |
less_sinlD ~> below_sinlD |
|
863 |
less_sinrD ~> below_sinrD |
|
864 |
||
865 |
||
40948 | 866 |
*** FOL and ZF *** |
38522 | 867 |
|
41310 | 868 |
* All constant names are now qualified internally and use proper |
869 |
identifiers, e.g. "IFOL.eq" instead of "op =". INCOMPATIBILITY. |
|
870 |
||
38522 | 871 |
|
37868
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
wenzelm
parents:
37820
diff
changeset
|
872 |
*** ML *** |
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
wenzelm
parents:
37820
diff
changeset
|
873 |
|
41594 | 874 |
* Antiquotation @{assert} inlines a function bool -> unit that raises |
875 |
Fail if the argument is false. Due to inlining the source position of |
|
876 |
failed assertions is included in the error output. |
|
877 |
||
878 |
* Discontinued antiquotation @{theory_ref}, which is obsolete since ML |
|
879 |
text is in practice always evaluated with a stable theory checkpoint. |
|
880 |
Minor INCOMPATIBILITY, use (Theory.check_thy @{theory}) instead. |
|
881 |
||
882 |
* Antiquotation @{theory A} refers to theory A from the ancestry of |
|
883 |
the current context, not any accidental theory loader state as before. |
|
884 |
Potential INCOMPATIBILITY, subtle change in semantics. |
|
41228
e1fce873b814
renamed structure MetaSimplifier to raw_Simplifer, to emphasize its meaning;
wenzelm
parents:
41079
diff
changeset
|
885 |
|
40956 | 886 |
* Syntax.pretty_priority (default 0) configures the required priority |
887 |
of pretty-printed output and thus affects insertion of parentheses. |
|
888 |
||
40959 | 889 |
* Syntax.default_root (default "any") configures the inner syntax |
890 |
category (nonterminal symbol) for parsing of terms. |
|
891 |
||
40722
441260986b63
make two copies (!) of Library.UnequalLengths coincide with ListPair.UnequalLengths;
wenzelm
parents:
40712
diff
changeset
|
892 |
* Former exception Library.UnequalLengths now coincides with |
441260986b63
make two copies (!) of Library.UnequalLengths coincide with ListPair.UnequalLengths;
wenzelm
parents:
40712
diff
changeset
|
893 |
ListPair.UnequalLengths. |
441260986b63
make two copies (!) of Library.UnequalLengths coincide with ListPair.UnequalLengths;
wenzelm
parents:
40712
diff
changeset
|
894 |
|
41594 | 895 |
* Renamed structure MetaSimplifier to Raw_Simplifier. Note that the |
896 |
main functionality is provided by structure Simplifier. |
|
897 |
||
40627
becf5d5187cc
renamed raw "explode" function to "raw_explode" to emphasize its meaning;
wenzelm
parents:
40624
diff
changeset
|
898 |
* Renamed raw "explode" function to "raw_explode" to emphasize its |
becf5d5187cc
renamed raw "explode" function to "raw_explode" to emphasize its meaning;
wenzelm
parents:
40624
diff
changeset
|
899 |
meaning. Note that internally to Isabelle, Symbol.explode is used in |
becf5d5187cc
renamed raw "explode" function to "raw_explode" to emphasize its meaning;
wenzelm
parents:
40624
diff
changeset
|
900 |
almost all situations. |
becf5d5187cc
renamed raw "explode" function to "raw_explode" to emphasize its meaning;
wenzelm
parents:
40624
diff
changeset
|
901 |
|
40318
035b2afbeb2e
discontinued obsolete function sys_error and exception SYS_ERROR;
wenzelm
parents:
40295
diff
changeset
|
902 |
* Discontinued obsolete function sys_error and exception SYS_ERROR. |
035b2afbeb2e
discontinued obsolete function sys_error and exception SYS_ERROR;
wenzelm
parents:
40295
diff
changeset
|
903 |
See implementation manual for further details on exceptions in |
035b2afbeb2e
discontinued obsolete function sys_error and exception SYS_ERROR;
wenzelm
parents:
40295
diff
changeset
|
904 |
Isabelle/ML. |
035b2afbeb2e
discontinued obsolete function sys_error and exception SYS_ERROR;
wenzelm
parents:
40295
diff
changeset
|
905 |
|
39616
8052101883c3
renamed setmp_noncritical to Unsynchronized.setmp to emphasize its meaning;
wenzelm
parents:
39557
diff
changeset
|
906 |
* Renamed setmp_noncritical to Unsynchronized.setmp to emphasize its |
8052101883c3
renamed setmp_noncritical to Unsynchronized.setmp to emphasize its meaning;
wenzelm
parents:
39557
diff
changeset
|
907 |
meaning. |
8052101883c3
renamed setmp_noncritical to Unsynchronized.setmp to emphasize its meaning;
wenzelm
parents:
39557
diff
changeset
|
908 |
|
39557
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
wenzelm
parents:
39513
diff
changeset
|
909 |
* Renamed structure PureThy to Pure_Thy and moved most of its |
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
wenzelm
parents:
39513
diff
changeset
|
910 |
operations to structure Global_Theory, to emphasize that this is |
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
wenzelm
parents:
39513
diff
changeset
|
911 |
rarely-used global-only stuff. |
fe5722fce758
renamed structure PureThy to Pure_Thy and moved most content to Global_Theory, to emphasize that this is global-only;
wenzelm
parents:
39513
diff
changeset
|
912 |
|
39513
fce2202892c4
discontinued Output.debug, which belongs to early PGIP experiments (b6788dbd2ef9) and causes just too many problems (like spamming the message channel if it is used by more than one module);
wenzelm
parents:
39308
diff
changeset
|
913 |
* Discontinued Output.debug. Minor INCOMPATIBILITY, use plain writeln |
fce2202892c4
discontinued Output.debug, which belongs to early PGIP experiments (b6788dbd2ef9) and causes just too many problems (like spamming the message channel if it is used by more than one module);
wenzelm
parents:
39308
diff
changeset
|
914 |
instead (or tracing for high-volume output). |
fce2202892c4
discontinued Output.debug, which belongs to early PGIP experiments (b6788dbd2ef9) and causes just too many problems (like spamming the message channel if it is used by more than one module);
wenzelm
parents:
39308
diff
changeset
|
915 |
|
38980
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
916 |
* Configuration option show_question_marks only affects regular pretty |
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
917 |
printing of types and terms, not raw Term.string_of_vname. |
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
918 |
|
39164
e7e12555e763
ML_Context.thm and ML_Context.thms no longer pervasive;
wenzelm
parents:
39154
diff
changeset
|
919 |
* ML_Context.thm and ML_Context.thms are no longer pervasive. Rare |
e7e12555e763
ML_Context.thm and ML_Context.thms no longer pervasive;
wenzelm
parents:
39154
diff
changeset
|
920 |
INCOMPATIBILITY, superseded by static antiquotations @{thm} and |
e7e12555e763
ML_Context.thm and ML_Context.thms no longer pervasive;
wenzelm
parents:
39154
diff
changeset
|
921 |
@{thms} for most purposes. |
e7e12555e763
ML_Context.thm and ML_Context.thms no longer pervasive;
wenzelm
parents:
39154
diff
changeset
|
922 |
|
41594 | 923 |
* ML structure Unsynchronized is never opened, not even in Isar |
38980
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
924 |
interaction mode as before. Old Unsynchronized.set etc. have been |
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
925 |
discontinued -- use plain := instead. This should be *rare* anyway, |
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
926 |
since modern tools always work via official context data, notably |
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
927 |
configuration options. |
af73cf0dc31f
turned show_question_marks into proper configuration option;
wenzelm
parents:
38864
diff
changeset
|
928 |
|
39239 | 929 |
* Parallel and asynchronous execution requires special care concerning |
930 |
interrupts. Structure Exn provides some convenience functions that |
|
931 |
avoid working directly with raw Interrupt. User code must not absorb |
|
932 |
interrupts -- intermediate handling (for cleanup etc.) needs to be |
|
933 |
followed by re-raising of the original exception. Another common |
|
934 |
source of mistakes are "handle _" patterns, which make the meaning of |
|
935 |
the program subject to physical effects of the environment. |
|
936 |
||
37868
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
wenzelm
parents:
37820
diff
changeset
|
937 |
|
59eed00bfd8e
ML antiquotations @{theory} and @{theory_ref} refer to the theory ancestry, not any accidental theory loader state;
wenzelm
parents:
37820
diff
changeset
|
938 |
|
37144 | 939 |
New in Isabelle2009-2 (June 2010) |
940 |
--------------------------------- |
|
33993 | 941 |
|
35260 | 942 |
*** General *** |
943 |
||
35436 | 944 |
* Authentic syntax for *all* logical entities (type classes, type |
945 |
constructors, term constants): provides simple and robust |
|
946 |
correspondence between formal entities and concrete syntax. Within |
|
947 |
the parse tree / AST representations, "constants" are decorated by |
|
948 |
their category (class, type, const) and spelled out explicitly with |
|
949 |
their full internal name. |
|
950 |
||
951 |
Substantial INCOMPATIBILITY concerning low-level syntax declarations |
|
952 |
and translations (translation rules and translation functions in ML). |
|
953 |
Some hints on upgrading: |
|
35260 | 954 |
|
955 |
- Many existing uses of 'syntax' and 'translations' can be replaced |
|
35436 | 956 |
by more modern 'type_notation', 'notation' and 'abbreviation', |
957 |
which are independent of this issue. |
|
35260 | 958 |
|
959 |
- 'translations' require markup within the AST; the term syntax |
|
960 |
provides the following special forms: |
|
961 |
||
962 |
CONST c -- produces syntax version of constant c from context |
|
35261 | 963 |
XCONST c -- literally c, checked as constant from context |
964 |
c -- literally c, if declared by 'syntax' |
|
965 |
||
966 |
Plain identifiers are treated as AST variables -- occasionally the |
|
967 |
system indicates accidental variables via the error "rhs contains |
|
968 |
extra variables". |
|
35260 | 969 |
|
35436 | 970 |
Type classes and type constructors are marked according to their |
971 |
concrete syntax. Some old translations rules need to be written |
|
972 |
for the "type" category, using type constructor application |
|
973 |
instead of pseudo-term application of the default category |
|
974 |
"logic". |
|
975 |
||
35260 | 976 |
- 'parse_translation' etc. in ML may use the following |
977 |
antiquotations: |
|
978 |
||
35436 | 979 |
@{class_syntax c} -- type class c within parse tree / AST |
980 |
@{term_syntax c} -- type constructor c within parse tree / AST |
|
35260 | 981 |
@{const_syntax c} -- ML version of "CONST c" above |
982 |
@{syntax_const c} -- literally c (checked wrt. 'syntax' declarations) |
|
983 |
||
35436 | 984 |
- Literal types within 'typed_print_translations', i.e. those *not* |
985 |
represented as pseudo-terms are represented verbatim. Use @{class |
|
986 |
c} or @{type_name c} here instead of the above syntax |
|
987 |
antiquotations. |
|
988 |
||
35260 | 989 |
Note that old non-authentic syntax was based on unqualified base |
35436 | 990 |
names, so all of the above "constant" names would coincide. Recall |
991 |
that 'print_syntax' and ML_command "set Syntax.trace_ast" help to |
|
992 |
diagnose syntax problems. |
|
35260 | 993 |
|
35351
7425aece4ee3
allow general mixfix syntax for type constructors;
wenzelm
parents:
35306
diff
changeset
|
994 |
* Type constructors admit general mixfix syntax, not just infix. |
7425aece4ee3
allow general mixfix syntax for type constructors;
wenzelm
parents:
35306
diff
changeset
|
995 |
|
36508
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
wenzelm
parents:
36461
diff
changeset
|
996 |
* Concrete syntax may be attached to local entities without a proof |
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
wenzelm
parents:
36461
diff
changeset
|
997 |
body, too. This works via regular mixfix annotations for 'fix', |
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
wenzelm
parents:
36461
diff
changeset
|
998 |
'def', 'obtain' etc. or via the explicit 'write' command, which is |
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
wenzelm
parents:
36461
diff
changeset
|
999 |
similar to the 'notation' command in theory specifications. |
03d2a2d0ee4a
allow concrete syntax for local entities within a proof body, either via regular mixfix annotations to 'fix' etc. or the separate 'write' command;
wenzelm
parents:
36461
diff
changeset
|
1000 |
|
37351 | 1001 |
* Discontinued unnamed infix syntax (legacy feature for many years) -- |
1002 |
need to specify constant name and syntax separately. Internal ML |
|
1003 |
datatype constructors have been renamed from InfixName to Infix etc. |
|
1004 |
Minor INCOMPATIBILITY. |
|
1005 |
||
1006 |
* Schematic theorem statements need to be explicitly markup as such, |
|
1007 |
via commands 'schematic_lemma', 'schematic_theorem', |
|
1008 |
'schematic_corollary'. Thus the relevance of the proof is made |
|
1009 |
syntactically clear, which impacts performance in a parallel or |
|
1010 |
asynchronous interactive environment. Minor INCOMPATIBILITY. |
|
1011 |
||
35613 | 1012 |
* Use of cumulative prems via "!" in some proof methods has been |
37351 | 1013 |
discontinued (old legacy feature). |
35613 | 1014 |
|
35979
12bb31230550
replaced references 'trace_simp' and 'debug_simp' by configuration options stored in the context
boehmes
parents:
35845
diff
changeset
|
1015 |
* References 'trace_simp' and 'debug_simp' have been replaced by |
36857 | 1016 |
configuration options stored in the context. Enabling tracing (the |
1017 |
case of debugging is similar) in proofs works via |
|
1018 |
||
1019 |
using [[trace_simp = true]] |
|
1020 |
||
1021 |
Tracing is then active for all invocations of the simplifier in |
|
1022 |
subsequent goal refinement steps. Tracing may also still be enabled or |
|
40780
1cabd6f4a718
recovered Isabelle2009-2 NEWS -- published part is read-only;
wenzelm
parents:
40771
diff
changeset
|
1023 |
disabled via the ProofGeneral settings menu. |
35979
12bb31230550
replaced references 'trace_simp' and 'debug_simp' by configuration options stored in the context
boehmes
parents:
35845
diff
changeset
|
1024 |
|
36177
8e0770d2e499
separate commands 'hide_class', 'hide_type', 'hide_const', 'hide_fact';
wenzelm
parents:
36162
diff
changeset
|
1025 |
* Separate commands 'hide_class', 'hide_type', 'hide_const', |
8e0770d2e499
separate commands 'hide_class', 'hide_type', 'hide_const', 'hide_fact';
wenzelm
parents:
36162
diff
changeset
|
1026 |
'hide_fact' replace the former 'hide' KIND command. Minor |
8e0770d2e499
separate commands 'hide_class', 'hide_type', 'hide_const', 'hide_fact';
wenzelm
parents:
36162
diff
changeset
|
1027 |
INCOMPATIBILITY. |
8e0770d2e499
separate commands 'hide_class', 'hide_type', 'hide_const', 'hide_fact';
wenzelm
parents:
36162
diff
changeset
|
1028 |
|
37298
1f3ca94ccb84
improved parallelism of proof term normalization;
wenzelm
parents:
37273
diff
changeset
|
1029 |
* Improved parallelism of proof term normalization: usedir -p2 -q0 is |
1f3ca94ccb84
improved parallelism of proof term normalization;
wenzelm
parents:
37273
diff
changeset
|
1030 |
more efficient than combinations with -q1 or -q2. |
1f3ca94ccb84
improved parallelism of proof term normalization;
wenzelm
parents:
37273
diff
changeset
|
1031 |
|
35260 | 1032 |
|
34170
254ac75e4c38
reduced code generator cache to the baremost minimum; corrected spelling
haftmann
parents:
34076
diff
changeset
|
1033 |
*** Pure *** |
254ac75e4c38
reduced code generator cache to the baremost minimum; corrected spelling
haftmann
parents:
34076
diff
changeset
|
1034 |
|
37351 | 1035 |
* Proofterms record type-class reasoning explicitly, using the |
1036 |
"unconstrain" operation internally. This eliminates all sort |
|
1037 |
constraints from a theorem and proof, introducing explicit |
|
1038 |
OFCLASS-premises. On the proof term level, this operation is |
|
1039 |
automatically applied at theorem boundaries, such that closed proofs |
|
1040 |
are always free of sort constraints. INCOMPATIBILITY for tools that |
|
1041 |
inspect proof terms. |
|
36147
b43b22f63665
theory RBT with abstract type of red-black trees backed by implementation RBT_Impl
haftmann
parents:
36096
diff
changeset
|
1042 |
|
35765
09e238561460
local theory specifications handle hidden polymorphism implicitly;
wenzelm
parents:
35763
diff
changeset
|
1043 |
* Local theory specifications may depend on extra type variables that |
09e238561460
local theory specifications handle hidden polymorphism implicitly;
wenzelm
parents:
35763
diff
changeset
|
1044 |
are not present in the result type -- arguments TYPE('a) :: 'a itself |
09e238561460
local theory specifications handle hidden polymorphism implicitly;
wenzelm
parents:
35763
diff
changeset
|
1045 |
are added internally. For example: |
09e238561460
local theory specifications handle hidden polymorphism implicitly;
wenzelm
parents:
35763
diff
changeset
|
1046 |
|
09e238561460
local theory specifications handle hidden polymorphism implicitly;
wenzelm
parents:
35763
diff
changeset
|
1047 |
definition unitary :: bool where "unitary = (ALL (x::'a) y. x = y)" |
09e238561460
local theory specifications handle hidden polymorphism implicitly;
wenzelm
parents:
35763
diff
changeset
|
1048 |
|
37351 | 1049 |
* Predicates of locales introduced by classes carry a mandatory |
1050 |
"class" prefix. INCOMPATIBILITY. |
|
1051 |
||
1052 |
* Vacuous class specifications observe default sort. INCOMPATIBILITY. |
|
1053 |
||
1054 |
* Old 'axclass' command has been discontinued. INCOMPATIBILITY, use |
|
1055 |
'class' instead. |
|
1056 |
||
1057 |
* Command 'code_reflect' allows to incorporate generated ML code into |
|
1058 |
runtime environment; replaces immature code_datatype antiquotation. |
|
1059 |
INCOMPATIBILITY. |
|
1060 |
||
1061 |
* Code generator: simple concept for abstract datatypes obeying |
|
1062 |
invariants. |
|
1063 |
||
36857 | 1064 |
* Code generator: details of internal data cache have no impact on the |
1065 |
user space functionality any longer. |
|
1066 |
||
37351 | 1067 |
* Methods "unfold_locales" and "intro_locales" ignore non-locale |
1068 |
subgoals. This is more appropriate for interpretations with 'where'. |
|
36857 | 1069 |
INCOMPATIBILITY. |
34170
254ac75e4c38
reduced code generator cache to the baremost minimum; corrected spelling
haftmann
parents:
34076
diff
changeset
|
1070 |
|
36356
5ab0f8859f9f
command 'example_proof' opens an empty proof body;
wenzelm
parents:
36348
diff
changeset
|
1071 |
* Command 'example_proof' opens an empty proof body. This allows to |
5ab0f8859f9f
command 'example_proof' opens an empty proof body;
wenzelm
parents:
36348
diff
changeset
|
1072 |
experiment with Isar, without producing any persistent result. |
5ab0f8859f9f
command 'example_proof' opens an empty proof body;
wenzelm
parents:
36348
diff
changeset
|
1073 |
|
35413 | 1074 |
* Commands 'type_notation' and 'no_type_notation' declare type syntax |
1075 |
within a local theory context, with explicit checking of the |
|
1076 |
constructors involved (in contrast to the raw 'syntax' versions). |
|
1077 |
||
36178
0e5c133b48b6
keep localized 'types' as regular non-old-style version -- 'type_abbrev' as 'type' just causes too many problems, e.g. clash with "type" in translations or "type:" argument syntax;
wenzelm
parents:
36177
diff
changeset
|
1078 |
* Commands 'types' and 'typedecl' now work within a local theory |
0e5c133b48b6
keep localized 'types' as regular non-old-style version -- 'type_abbrev' as 'type' just causes too many problems, e.g. clash with "type" in translations or "type:" argument syntax;
wenzelm
parents:
36177
diff
changeset
|
1079 |
context -- without introducing dependencies on parameters or |
0e5c133b48b6
keep localized 'types' as regular non-old-style version -- 'type_abbrev' as 'type' just causes too many problems, e.g. clash with "type" in translations or "type:" argument syntax;
wenzelm
parents:
36177
diff
changeset
|
1080 |
assumptions, which is not possible in Isabelle/Pure. |
35681 | 1081 |
|
36857 | 1082 |
* Command 'defaultsort' has been renamed to 'default_sort', it works |
1083 |
within a local theory context. Minor INCOMPATIBILITY. |
|
36454
f2b5bcc61a8c
command 'defaultsort' is renamed to 'default_sort', it works within a local theory context;
wenzelm
parents:
36446
diff
changeset
|
1084 |
|
34170
254ac75e4c38
reduced code generator cache to the baremost minimum; corrected spelling
haftmann
parents:
34076
diff
changeset
|
1085 |
|
33993 | 1086 |
*** HOL *** |
1087 |
||
37351 | 1088 |
* Command 'typedef' now works within a local theory context -- without |
1089 |
introducing dependencies on parameters or assumptions, which is not |
|
1090 |
possible in Isabelle/Pure/HOL. Note that the logical environment may |
|
1091 |
contain multiple interpretations of local typedefs (with different |
|
1092 |
non-emptiness proofs), even in a global theory context. |
|
1093 |
||
1094 |
* New package for quotient types. Commands 'quotient_type' and |
|
1095 |
'quotient_definition' may be used for defining types and constants by |
|
1096 |
quotient constructions. An example is the type of integers created by |
|
1097 |
quotienting pairs of natural numbers: |
|
37380 | 1098 |
|
37351 | 1099 |
fun |
37380 | 1100 |
intrel :: "(nat * nat) => (nat * nat) => bool" |
37351 | 1101 |
where |
1102 |
"intrel (x, y) (u, v) = (x + v = u + y)" |
|
1103 |
||
37380 | 1104 |
quotient_type int = "nat * nat" / intrel |
37351 | 1105 |
by (auto simp add: equivp_def expand_fun_eq) |
37380 | 1106 |
|
37351 | 1107 |
quotient_definition |
1108 |
"0::int" is "(0::nat, 0::nat)" |
|
1109 |
||
1110 |
The method "lifting" can be used to lift of theorems from the |
|
1111 |
underlying "raw" type to the quotient type. The example |
|
1112 |
src/HOL/Quotient_Examples/FSet.thy includes such a quotient |
|
1113 |
construction and provides a reasoning infrastructure for finite sets. |
|
1114 |
||
1115 |
* Renamed Library/Quotient.thy to Library/Quotient_Type.thy to avoid |
|
1116 |
clash with new theory Quotient in Main HOL. |
|
1117 |
||
1118 |
* Moved the SMT binding into the main HOL session, eliminating |
|
1119 |
separate HOL-SMT session. |
|
1120 |
||
37020 | 1121 |
* List membership infix mem operation is only an input abbreviation. |
1122 |
INCOMPATIBILITY. |
|
1123 |
||
37144 | 1124 |
* Theory Library/Word.thy has been removed. Use library Word/Word.thy |
1125 |
for future developements; former Library/Word.thy is still present in |
|
1126 |
the AFP entry RSAPPS. |
|
36963
9a017146675f
dropped old Library/Word.thy and toy example ex/Adder.thy
haftmann
parents:
36953
diff
changeset
|
1127 |
|
36857 | 1128 |
* Theorem Int.int_induct renamed to Int.int_of_nat_induct and is no |
1129 |
longer shadowed. INCOMPATIBILITY. |
|
36808
cbeb3484fa07
theorem Presburger.int_induct has been renamed to Int.int_bidirectional_induct
haftmann
parents:
36714
diff
changeset
|
1130 |
|
36836
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
huffman
parents:
36830
diff
changeset
|
1131 |
* Dropped theorem duplicate comp_arith; use semiring_norm instead. |
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
huffman
parents:
36830
diff
changeset
|
1132 |
INCOMPATIBILITY. |
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
huffman
parents:
36830
diff
changeset
|
1133 |
|
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
huffman
parents:
36830
diff
changeset
|
1134 |
* Dropped theorem RealPow.real_sq_order; use power2_le_imp_le instead. |
49156805321c
removed lemma real_sq_order; use power2_le_imp_le instead
huffman
parents:
36830
diff
changeset
|
1135 |
INCOMPATIBILITY. |
36714 | 1136 |
|
36857 | 1137 |
* Dropped normalizing_semiring etc; use the facts in semiring classes |
1138 |
instead. INCOMPATIBILITY. |
|
1139 |
||
36979
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1140 |
* Dropped several real-specific versions of lemmas about floor and |
37351 | 1141 |
ceiling; use the generic lemmas from theory "Archimedean_Field" |
1142 |
instead. INCOMPATIBILITY. |
|
36979
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1143 |
|
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1144 |
floor_number_of_eq ~> floor_number_of |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1145 |
le_floor_eq_number_of ~> number_of_le_floor |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1146 |
le_floor_eq_zero ~> zero_le_floor |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1147 |
le_floor_eq_one ~> one_le_floor |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1148 |
floor_less_eq_number_of ~> floor_less_number_of |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1149 |
floor_less_eq_zero ~> floor_less_zero |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1150 |
floor_less_eq_one ~> floor_less_one |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1151 |
less_floor_eq_number_of ~> number_of_less_floor |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1152 |
less_floor_eq_zero ~> zero_less_floor |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1153 |
less_floor_eq_one ~> one_less_floor |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1154 |
floor_le_eq_number_of ~> floor_le_number_of |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1155 |
floor_le_eq_zero ~> floor_le_zero |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1156 |
floor_le_eq_one ~> floor_le_one |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1157 |
floor_subtract_number_of ~> floor_diff_number_of |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1158 |
floor_subtract_one ~> floor_diff_one |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1159 |
ceiling_number_of_eq ~> ceiling_number_of |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1160 |
ceiling_le_eq_number_of ~> ceiling_le_number_of |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1161 |
ceiling_le_zero_eq ~> ceiling_le_zero |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1162 |
ceiling_le_eq_one ~> ceiling_le_one |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1163 |
less_ceiling_eq_number_of ~> number_of_less_ceiling |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1164 |
less_ceiling_eq_zero ~> zero_less_ceiling |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1165 |
less_ceiling_eq_one ~> one_less_ceiling |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1166 |
ceiling_less_eq_number_of ~> ceiling_less_number_of |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1167 |
ceiling_less_eq_zero ~> ceiling_less_zero |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1168 |
ceiling_less_eq_one ~> ceiling_less_one |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1169 |
le_ceiling_eq_number_of ~> number_of_le_ceiling |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1170 |
le_ceiling_eq_zero ~> zero_le_ceiling |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1171 |
le_ceiling_eq_one ~> one_le_ceiling |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1172 |
ceiling_subtract_number_of ~> ceiling_diff_number_of |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1173 |
ceiling_subtract_one ~> ceiling_diff_one |
da7c06ab3169
remove several redundant lemmas about floor and ceiling
huffman
parents:
36972
diff
changeset
|
1174 |
|
37144 | 1175 |
* Theory "Finite_Set": various folding_XXX locales facilitate the |
36857 | 1176 |
application of the various fold combinators on finite sets. |
1177 |
||
1178 |
* Library theory "RBT" renamed to "RBT_Impl"; new library theory "RBT" |
|
1179 |
provides abstract red-black tree type which is backed by "RBT_Impl" as |
|
1180 |
implementation. INCOMPATIBILTY. |
|
36147
b43b22f63665
theory RBT with abstract type of red-black trees backed by implementation RBT_Impl
haftmann
parents:
36096
diff
changeset
|
1181 |
|
36830 | 1182 |
* Theory Library/Coinductive_List has been removed -- superseded by |
35763
765f8adf10f9
removed obsolete HOL/Library/Coinductive_List.thy, superceded by thys/Coinductive/Coinductive_List.thy in AFP/f2f5727b77d0;
wenzelm
parents:
35745
diff
changeset
|
1183 |
AFP/thys/Coinductive. |
765f8adf10f9
removed obsolete HOL/Library/Coinductive_List.thy, superceded by thys/Coinductive/Coinductive_List.thy in AFP/f2f5727b77d0;
wenzelm
parents:
35745
diff
changeset
|
1184 |
|
36829 | 1185 |
* Theory PReal, including the type "preal" and related operations, has |
1186 |
been removed. INCOMPATIBILITY. |
|
1187 |
||
37380 | 1188 |
* Real: new development using Cauchy Sequences. |
1189 |
||
37351 | 1190 |
* Split off theory "Big_Operators" containing setsum, setprod, |
1191 |
Inf_fin, Sup_fin, Min, Max from theory Finite_Set. INCOMPATIBILITY. |
|
36857 | 1192 |
|
1193 |
* Theory "Rational" renamed to "Rat", for consistency with "Nat", |
|
1194 |
"Int" etc. INCOMPATIBILITY. |
|
1195 |
||
37351 | 1196 |
* Constant Rat.normalize needs to be qualified. INCOMPATIBILITY. |
37143 | 1197 |
|
36857 | 1198 |
* New set of rules "ac_simps" provides combined assoc / commute |
1199 |
rewrites for all interpretations of the appropriate generic locales. |
|
1200 |
||
1201 |
* Renamed theory "OrderedGroup" to "Groups" and split theory |
|
1202 |
"Ring_and_Field" into theories "Rings" and "Fields"; for more |
|
1203 |
appropriate and more consistent names suitable for name prefixes |
|
1204 |
within the HOL theories. INCOMPATIBILITY. |
|
35050
9f841f20dca6
renamed OrderedGroup to Groups; split theory Ring_and_Field into Rings Fields
haftmann
parents:
35042
diff
changeset
|
1205 |
|
35084 | 1206 |
* Some generic constants have been put to appropriate theories: |
36857 | 1207 |
- less_eq, less: Orderings |
1208 |
- zero, one, plus, minus, uminus, times, abs, sgn: Groups |
|
1209 |
- inverse, divide: Rings |
|
35084 | 1210 |
INCOMPATIBILITY. |
1211 |
||
36857 | 1212 |
* More consistent naming of type classes involving orderings (and |
1213 |
lattices): |
|
35027
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1214 |
|
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1215 |
lower_semilattice ~> semilattice_inf |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1216 |
upper_semilattice ~> semilattice_sup |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1217 |
|
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1218 |
dense_linear_order ~> dense_linorder |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1219 |
|
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1220 |
pordered_ab_group_add ~> ordered_ab_group_add |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1221 |
pordered_ab_group_add_abs ~> ordered_ab_group_add_abs |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1222 |
pordered_ab_semigroup_add ~> ordered_ab_semigroup_add |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1223 |
pordered_ab_semigroup_add_imp_le ~> ordered_ab_semigroup_add_imp_le |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1224 |
pordered_cancel_ab_semigroup_add ~> ordered_cancel_ab_semigroup_add |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1225 |
pordered_cancel_comm_semiring ~> ordered_cancel_comm_semiring |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1226 |
pordered_cancel_semiring ~> ordered_cancel_semiring |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1227 |
pordered_comm_monoid_add ~> ordered_comm_monoid_add |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1228 |
pordered_comm_ring ~> ordered_comm_ring |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1229 |
pordered_comm_semiring ~> ordered_comm_semiring |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1230 |
pordered_ring ~> ordered_ring |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1231 |
pordered_ring_abs ~> ordered_ring_abs |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1232 |
pordered_semiring ~> ordered_semiring |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1233 |
|
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1234 |
ordered_ab_group_add ~> linordered_ab_group_add |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1235 |
ordered_ab_semigroup_add ~> linordered_ab_semigroup_add |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1236 |
ordered_cancel_ab_semigroup_add ~> linordered_cancel_ab_semigroup_add |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1237 |
ordered_comm_semiring_strict ~> linordered_comm_semiring_strict |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1238 |
ordered_field ~> linordered_field |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1239 |
ordered_field_no_lb ~> linordered_field_no_lb |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1240 |
ordered_field_no_ub ~> linordered_field_no_ub |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1241 |
ordered_field_dense_linear_order ~> dense_linordered_field |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1242 |
ordered_idom ~> linordered_idom |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1243 |
ordered_ring ~> linordered_ring |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1244 |
ordered_ring_le_cancel_factor ~> linordered_ring_le_cancel_factor |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1245 |
ordered_ring_less_cancel_factor ~> linordered_ring_less_cancel_factor |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1246 |
ordered_ring_strict ~> linordered_ring_strict |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1247 |
ordered_semidom ~> linordered_semidom |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1248 |
ordered_semiring ~> linordered_semiring |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1249 |
ordered_semiring_1 ~> linordered_semiring_1 |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1250 |
ordered_semiring_1_strict ~> linordered_semiring_1_strict |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1251 |
ordered_semiring_strict ~> linordered_semiring_strict |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1252 |
|
36857 | 1253 |
The following slightly odd type classes have been moved to a |
37351 | 1254 |
separate theory Library/Lattice_Algebras: |
35032
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
haftmann
parents:
35027
diff
changeset
|
1255 |
|
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
haftmann
parents:
35027
diff
changeset
|
1256 |
lordered_ab_group_add ~> lattice_ab_group_add |
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
haftmann
parents:
35027
diff
changeset
|
1257 |
lordered_ab_group_add_abs ~> lattice_ab_group_add_abs |
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
haftmann
parents:
35027
diff
changeset
|
1258 |
lordered_ab_group_add_meet ~> semilattice_inf_ab_group_add |
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
haftmann
parents:
35027
diff
changeset
|
1259 |
lordered_ab_group_add_join ~> semilattice_sup_ab_group_add |
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
haftmann
parents:
35027
diff
changeset
|
1260 |
lordered_ring ~> lattice_ring |
7efe662e41b4
separate library theory for type classes combining lattices with various algebraic structures
haftmann
parents:
35027
diff
changeset
|
1261 |
|
35027
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1262 |
INCOMPATIBILITY. |
ed7d12bcf8f8
more consistent naming of type classes involving orderings (and lattices) -- c.f. NEWS
haftmann
parents:
34974
diff
changeset
|
1263 |
|
36416 | 1264 |
* Refined field classes: |
36857 | 1265 |
- classes division_ring_inverse_zero, field_inverse_zero, |
1266 |
linordered_field_inverse_zero include rule inverse 0 = 0 -- |
|
1267 |
subsumes former division_by_zero class; |
|
1268 |
- numerous lemmas have been ported from field to division_ring. |
|
1269 |
INCOMPATIBILITY. |
|
36416 | 1270 |
|
1271 |
* Refined algebra theorem collections: |
|
36857 | 1272 |
- dropped theorem group group_simps, use algebra_simps instead; |
1273 |
- dropped theorem group ring_simps, use field_simps instead; |
|
1274 |
- proper theorem collection field_simps subsumes former theorem |
|
1275 |
groups field_eq_simps and field_simps; |
|
1276 |
- dropped lemma eq_minus_self_iff which is a duplicate for |
|
1277 |
equal_neg_zero. |
|
1278 |
INCOMPATIBILITY. |
|
35009 | 1279 |
|
1280 |
* Theory Finite_Set and List: some lemmas have been generalized from |
|
34076
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
wenzelm
parents:
34062
diff
changeset
|
1281 |
sets to lattices: |
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
wenzelm
parents:
34062
diff
changeset
|
1282 |
|
34007
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1283 |
fun_left_comm_idem_inter ~> fun_left_comm_idem_inf |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1284 |
fun_left_comm_idem_union ~> fun_left_comm_idem_sup |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1285 |
inter_Inter_fold_inter ~> inf_Inf_fold_inf |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1286 |
union_Union_fold_union ~> sup_Sup_fold_sup |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1287 |
Inter_fold_inter ~> Inf_fold_inf |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1288 |
Union_fold_union ~> Sup_fold_sup |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1289 |
inter_INTER_fold_inter ~> inf_INFI_fold_inf |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1290 |
union_UNION_fold_union ~> sup_SUPR_fold_sup |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1291 |
INTER_fold_inter ~> INFI_fold_inf |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1292 |
UNION_fold_union ~> SUPR_fold_sup |
aea892559fc5
tuned lattices theory fragements; generlized some lemmas from sets to lattices
haftmann
parents:
33994
diff
changeset
|
1293 |
|
37351 | 1294 |
* Theory "Complete_Lattice": lemmas top_def and bot_def have been |
36416 | 1295 |
replaced by the more convenient lemmas Inf_empty and Sup_empty. |
1296 |
Dropped lemmas Inf_insert_simp and Sup_insert_simp, which are subsumed |
|
1297 |
by Inf_insert and Sup_insert. Lemmas Inf_UNIV and Sup_UNIV replace |
|
1298 |
former Inf_Univ and Sup_Univ. Lemmas inf_top_right and sup_bot_right |
|
1299 |
subsume inf_top and sup_bot respectively. INCOMPATIBILITY. |
|
1300 |
||
36857 | 1301 |
* Reorganized theory Multiset: swapped notation of pointwise and |
1302 |
multiset order: |
|
37351 | 1303 |
|
36857 | 1304 |
- pointwise ordering is instance of class order with standard syntax |
1305 |
<= and <; |
|
1306 |
- multiset ordering has syntax <=# and <#; partial order properties |
|
1307 |
are provided by means of interpretation with prefix |
|
1308 |
multiset_order; |
|
1309 |
- less duplication, less historical organization of sections, |
|
1310 |
conversion from associations lists to multisets, rudimentary code |
|
1311 |
generation; |
|
1312 |
- use insert_DiffM2 [symmetric] instead of elem_imp_eq_diff_union, |
|
1313 |
if needed. |
|
37351 | 1314 |
|
36903 | 1315 |
Renamed: |
37351 | 1316 |
|
1317 |
multiset_eq_conv_count_eq ~> multiset_ext_iff |
|
1318 |
multi_count_ext ~> multiset_ext |
|
1319 |
diff_union_inverse2 ~> diff_union_cancelR |
|
1320 |
||
36857 | 1321 |
INCOMPATIBILITY. |
36416 | 1322 |
|
36903 | 1323 |
* Theory Permutation: replaced local "remove" by List.remove1. |
1324 |
||
36416 | 1325 |
* Code generation: ML and OCaml code is decorated with signatures. |
1326 |
||
35009 | 1327 |
* Theory List: added transpose. |
1328 |
||
35810 | 1329 |
* Library/Nat_Bijection.thy is a collection of bijective functions |
1330 |
between nat and other types, which supersedes the older libraries |
|
1331 |
Library/Nat_Int_Bij.thy and HOLCF/NatIso.thy. INCOMPATIBILITY. |
|
1332 |
||
1333 |
Constants: |
|
1334 |
Nat_Int_Bij.nat2_to_nat ~> prod_encode |
|
1335 |
Nat_Int_Bij.nat_to_nat2 ~> prod_decode |
|
1336 |
Nat_Int_Bij.int_to_nat_bij ~> int_encode |
|
1337 |
Nat_Int_Bij.nat_to_int_bij ~> int_decode |
|
1338 |
Countable.pair_encode ~> prod_encode |
|
1339 |
NatIso.prod2nat ~> prod_encode |
|
1340 |
NatIso.nat2prod ~> prod_decode |
|
1341 |
NatIso.sum2nat ~> sum_encode |
|
1342 |
NatIso.nat2sum ~> sum_decode |
|
1343 |
NatIso.list2nat ~> list_encode |
|
1344 |
NatIso.nat2list ~> list_decode |
|
1345 |
NatIso.set2nat ~> set_encode |
|
1346 |
NatIso.nat2set ~> set_decode |
|
1347 |
||
1348 |
Lemmas: |
|
1349 |
Nat_Int_Bij.bij_nat_to_int_bij ~> bij_int_decode |
|
1350 |
Nat_Int_Bij.nat2_to_nat_inj ~> inj_prod_encode |
|
1351 |
Nat_Int_Bij.nat2_to_nat_surj ~> surj_prod_encode |
|
1352 |
Nat_Int_Bij.nat_to_nat2_inj ~> inj_prod_decode |
|
1353 |
Nat_Int_Bij.nat_to_nat2_surj ~> surj_prod_decode |
|
1354 |
Nat_Int_Bij.i2n_n2i_id ~> int_encode_inverse |
|
1355 |
Nat_Int_Bij.n2i_i2n_id ~> int_decode_inverse |
|
1356 |
Nat_Int_Bij.surj_nat_to_int_bij ~> surj_int_encode |
|
1357 |
Nat_Int_Bij.surj_int_to_nat_bij ~> surj_int_decode |
|
1358 |
Nat_Int_Bij.inj_nat_to_int_bij ~> inj_int_encode |
|
1359 |
Nat_Int_Bij.inj_int_to_nat_bij ~> inj_int_decode |
|
1360 |
Nat_Int_Bij.bij_nat_to_int_bij ~> bij_int_encode |
|
1361 |
Nat_Int_Bij.bij_int_to_nat_bij ~> bij_int_decode |
|
1362 |
||
36929 | 1363 |
* Sledgehammer: |
1364 |
- Renamed ATP commands: |
|
1365 |
atp_info ~> sledgehammer running_atps |
|
1366 |
atp_kill ~> sledgehammer kill_atps |
|
1367 |
atp_messages ~> sledgehammer messages |
|
1368 |
atp_minimize ~> sledgehammer minimize |
|
1369 |
print_atps ~> sledgehammer available_atps |
|
1370 |
INCOMPATIBILITY. |
|
1371 |
- Added user's manual ("isabelle doc sledgehammer"). |
|
1372 |
- Added option syntax and "sledgehammer_params" to customize |
|
1373 |
Sledgehammer's behavior. See the manual for details. |
|
1374 |
- Modified the Isar proof reconstruction code so that it produces |
|
1375 |
direct proofs rather than proofs by contradiction. (This feature |
|
1376 |
is still experimental.) |
|
1377 |
- Made Isar proof reconstruction work for SPASS, remote ATPs, and in |
|
1378 |
full-typed mode. |
|
1379 |
- Added support for TPTP syntax for SPASS via the "spass_tptp" ATP. |
|
1380 |
||
36928 | 1381 |
* Nitpick: |
1382 |
- Added and implemented "binary_ints" and "bits" options. |
|
1383 |
- Added "std" option and implemented support for nonstandard models. |
|
1384 |
- Added and implemented "finitize" option to improve the precision |
|
1385 |
of infinite datatypes based on a monotonicity analysis. |
|
1386 |
- Added support for quotient types. |
|
1387 |
- Added support for "specification" and "ax_specification" |
|
1388 |
constructs. |
|
1389 |
- Added support for local definitions (for "function" and |
|
1390 |
"termination" proofs). |
|
1391 |
- Added support for term postprocessors. |
|
1392 |
- Optimized "Multiset.multiset" and "FinFun.finfun". |
|
1393 |
- Improved efficiency of "destroy_constrs" optimization. |
|
1394 |
- Fixed soundness bugs related to "destroy_constrs" optimization and |
|
1395 |
record getters. |
|
37272 | 1396 |
- Fixed soundness bug related to higher-order constructors. |
1397 |
- Fixed soundness bug when "full_descrs" is enabled. |
|
36928 | 1398 |
- Improved precision of set constructs. |
37260
dde817e6dfb1
added "atoms" option to Nitpick (request from Karlsruhe) + wrap Refute. functions to "nitpick_util.ML"
blanchet
parents:
37158
diff
changeset
|
1399 |
- Added "atoms" option. |
36928 | 1400 |
- Added cache to speed up repeated Kodkod invocations on the same |
1401 |
problems. |
|
1402 |
- Renamed "MiniSatJNI", "zChaffJNI", "BerkMinAlloy", and |
|
1403 |
"SAT4JLight" to "MiniSat_JNI", "zChaff_JNI", "BerkMin_Alloy", and |
|
1404 |
"SAT4J_Light". INCOMPATIBILITY. |
|
1405 |
- Removed "skolemize", "uncurry", "sym_break", "flatten_prop", |
|
1406 |
"sharing_depth", and "show_skolems" options. INCOMPATIBILITY. |
|
37264
8b931fb51cc6
removed "nitpick_intro" attribute -- Nitpick noew uses Spec_Rules instead
blanchet
parents:
37260
diff
changeset
|
1407 |
- Removed "nitpick_intro" attribute. INCOMPATIBILITY. |
36928 | 1408 |
|
37361
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1409 |
* Method "induct" now takes instantiations of the form t, where t is not |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1410 |
a variable, as a shorthand for "x == t", where x is a fresh variable. |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1411 |
If this is not intended, t has to be enclosed in parentheses. |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1412 |
By default, the equalities generated by definitional instantiations |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1413 |
are pre-simplified, which may cause parameters of inductive cases |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1414 |
to disappear, or may even delete some of the inductive cases. |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1415 |
Use "induct (no_simp)" instead of "induct" to restore the old |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1416 |
behaviour. The (no_simp) option is also understood by the "cases" |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1417 |
and "nominal_induct" methods, which now perform pre-simplification, too. |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1418 |
INCOMPATIBILITY. |
250f487b3034
Documented changes in induct, cases, and nominal_induct method.
berghofe
parents:
37352
diff
changeset
|
1419 |
|
33993 | 1420 |
|
36828 | 1421 |
*** HOLCF *** |
1422 |
||
1423 |
* Variable names in lemmas generated by the domain package have |
|
1424 |
changed; the naming scheme is now consistent with the HOL datatype |
|
1425 |
package. Some proof scripts may be affected, INCOMPATIBILITY. |
|
1426 |
||
1427 |
* The domain package no longer defines the function "foo_copy" for |
|
1428 |
recursive domain "foo". The reach lemma is now stated directly in |
|
1429 |
terms of "foo_take". Lemmas and proofs that mention "foo_copy" must |
|
1430 |
be reformulated in terms of "foo_take", INCOMPATIBILITY. |
|
1431 |
||
1432 |
* Most definedness lemmas generated by the domain package (previously |
|
1433 |
of the form "x ~= UU ==> foo$x ~= UU") now have an if-and-only-if form |
|
1434 |
like "foo$x = UU <-> x = UU", which works better as a simp rule. |
|
37351 | 1435 |
Proofs that used definedness lemmas as intro rules may break, |
36828 | 1436 |
potential INCOMPATIBILITY. |
1437 |
||
1438 |
* Induction and casedist rules generated by the domain package now |
|
1439 |
declare proper case_names (one called "bottom", and one named for each |
|
1440 |
constructor). INCOMPATIBILITY. |
|
1441 |
||
1442 |
* For mutually-recursive domains, separate "reach" and "take_lemma" |
|
1443 |
rules are generated for each domain, INCOMPATIBILITY. |
|
1444 |
||
1445 |
foo_bar.reach ~> foo.reach bar.reach |
|
1446 |
foo_bar.take_lemmas ~> foo.take_lemma bar.take_lemma |
|
1447 |
||
1448 |
* Some lemmas generated by the domain package have been renamed for |
|
1449 |
consistency with the datatype package, INCOMPATIBILITY. |
|
1450 |
||
1451 |
foo.ind ~> foo.induct |
|
1452 |
foo.finite_ind ~> foo.finite_induct |
|
1453 |
foo.coind ~> foo.coinduct |
|
1454 |
foo.casedist ~> foo.exhaust |
|
1455 |
foo.exhaust ~> foo.nchotomy |
|
1456 |
||
1457 |
* For consistency with other definition packages, the fixrec package |
|
1458 |
now generates qualified theorem names, INCOMPATIBILITY. |
|
1459 |
||
1460 |
foo_simps ~> foo.simps |
|
1461 |
foo_unfold ~> foo.unfold |
|
1462 |
foo_induct ~> foo.induct |
|
1463 |
||
37087 | 1464 |
* The "fixrec_simp" attribute has been removed. The "fixrec_simp" |
1465 |
method and internal fixrec proofs now use the default simpset instead. |
|
1466 |
INCOMPATIBILITY. |
|
1467 |
||
36828 | 1468 |
* The "contlub" predicate has been removed. Proof scripts should use |
1469 |
lemma contI2 in place of monocontlub2cont, INCOMPATIBILITY. |
|
1470 |
||
1471 |
* The "admw" predicate has been removed, INCOMPATIBILITY. |
|
1472 |
||
1473 |
* The constants cpair, cfst, and csnd have been removed in favor of |
|
1474 |
Pair, fst, and snd from Isabelle/HOL, INCOMPATIBILITY. |
|
1475 |
||
1476 |
||
33993 | 1477 |
*** ML *** |
1478 |
||
37351 | 1479 |
* Antiquotations for basic formal entities: |
1480 |
||
1481 |
@{class NAME} -- type class |
|
1482 |
@{class_syntax NAME} -- syntax representation of the above |
|
1483 |
||
1484 |
@{type_name NAME} -- logical type |
|
1485 |
@{type_abbrev NAME} -- type abbreviation |
|
1486 |
@{nonterminal NAME} -- type of concrete syntactic category |
|
1487 |
@{type_syntax NAME} -- syntax representation of any of the above |
|
1488 |
||
1489 |
@{const_name NAME} -- logical constant (INCOMPATIBILITY) |
|
1490 |
@{const_abbrev NAME} -- abbreviated constant |
|
1491 |
@{const_syntax NAME} -- syntax representation of any of the above |
|
1492 |
||
1493 |
* Antiquotation @{syntax_const NAME} ensures that NAME refers to a raw |
|
1494 |
syntax constant (cf. 'syntax' command). |
|
1495 |
||
1496 |
* Antiquotation @{make_string} inlines a function to print arbitrary |
|
1497 |
values similar to the ML toplevel. The result is compiler dependent |
|
1498 |
and may fall back on "?" in certain situations. |
|
1499 |
||
1500 |
* Diagnostic commands 'ML_val' and 'ML_command' may refer to |
|
1501 |
antiquotations @{Isar.state} and @{Isar.goal}. This replaces impure |
|
1502 |
Isar.state() and Isar.goal(), which belong to the old TTY loop and do |
|
1503 |
not work with the asynchronous Isar document model. |
|
1504 |
||
1505 |
* Configuration options now admit dynamic default values, depending on |
|
1506 |
the context or even global references. |
|
1507 |
||
1508 |
* SHA1.digest digests strings according to SHA-1 (see RFC 3174). It |
|
1509 |
uses an efficient external library if available (for Poly/ML). |
|
1510 |
||
37144 | 1511 |
* Renamed some important ML structures, while keeping the old names |
1512 |
for some time as aliases within the structure Legacy: |
|
1513 |
||
1514 |
OuterKeyword ~> Keyword |
|
1515 |
OuterLex ~> Token |
|
1516 |
OuterParse ~> Parse |
|
1517 |
OuterSyntax ~> Outer_Syntax |
|
37216
3165bc303f66
modernized some structure names, keeping a few legacy aliases;
wenzelm
parents:
37158
diff
changeset
|
1518 |
PrintMode ~> Print_Mode |
37144 | 1519 |
SpecParse ~> Parse_Spec |
37216
3165bc303f66
modernized some structure names, keeping a few legacy aliases;
wenzelm
parents:
37158
diff
changeset
|
1520 |
ThyInfo ~> Thy_Info |
3165bc303f66
modernized some structure names, keeping a few legacy aliases;
wenzelm
parents:
37158
diff
changeset
|
1521 |
ThyLoad ~> Thy_Load |
3165bc303f66
modernized some structure names, keeping a few legacy aliases;
wenzelm
parents:
37158
diff
changeset
|
1522 |
ThyOutput ~> Thy_Output |
37145
01aa36932739
renamed structure TypeInfer to Type_Infer, keeping the old name as legacy alias for some time;
wenzelm
parents:
37144
diff
changeset
|
1523 |
TypeInfer ~> Type_Infer |
37144 | 1524 |
|
1525 |
Note that "open Legacy" simplifies porting of sources, but forgetting |
|
1526 |
to remove it again will complicate porting again in the future. |
|
1527 |
||
1528 |
* Most operations that refer to a global context are named |
|
1529 |
accordingly, e.g. Simplifier.global_context or |
|
1530 |
ProofContext.init_global. There are some situations where a global |
|
1531 |
context actually works, but under normal circumstances one needs to |
|
1532 |
pass the proper local context through the code! |
|
1533 |
||
1534 |
* Discontinued old TheoryDataFun with its copy/init operation -- data |
|
1535 |
needs to be pure. Functor Theory_Data_PP retains the traditional |
|
1536 |
Pretty.pp argument to merge, which is absent in the standard |
|
1537 |
Theory_Data version. |
|
36429
9d6b3be996d4
monotonic sort certification: sorts are no longer minimized at the kernel boundary, only when reading input from the end-user;
wenzelm
parents:
36416
diff
changeset
|
1538 |
|
37144 | 1539 |
* Sorts.certify_sort and derived "cert" operations for types and terms |
1540 |
no longer minimize sorts. Thus certification at the boundary of the |
|
1541 |
inference kernel becomes invariant under addition of class relations, |
|
1542 |
which is an important monotonicity principle. Sorts are now minimized |
|
1543 |
in the syntax layer only, at the boundary between the end-user and the |
|
1544 |
system. Subtle INCOMPATIBILITY, may have to use Sign.minimize_sort |
|
1545 |
explicitly in rare situations. |
|
1546 |
||
35021
c839a4c670c6
renamed old-style Drule.standard to Drule.export_without_context, to emphasize that this is in no way a standard operation;
wenzelm
parents:
35009
diff
changeset
|
1547 |
* Renamed old-style Drule.standard to Drule.export_without_context, to |
c839a4c670c6
renamed old-style Drule.standard to Drule.export_without_context, to emphasize that this is in no way a standard operation;
wenzelm
parents:
35009
diff
changeset
|
1548 |
emphasize that this is in no way a standard operation. |
c839a4c670c6
renamed old-style Drule.standard to Drule.export_without_context, to emphasize that this is in no way a standard operation;
wenzelm
parents:
35009
diff
changeset
|
1549 |
INCOMPATIBILITY. |
c839a4c670c6
renamed old-style Drule.standard to Drule.export_without_context, to emphasize that this is in no way a standard operation;
wenzelm
parents:
35009
diff
changeset
|
1550 |
|
34076
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
wenzelm
parents:
34062
diff
changeset
|
1551 |
* Subgoal.FOCUS (and variants): resulting goal state is normalized as |
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
wenzelm
parents:
34062
diff
changeset
|
1552 |
usual for resolution. Rare INCOMPATIBILITY. |
e3daf3c07381
Subgoal.FOCUS (and variants): resulting goal state is normalized as usual for resolution;
wenzelm
parents:
34062
diff
changeset
|
1553 |
|
35845
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
wenzelm
parents:
35810
diff
changeset
|
1554 |
* Renamed varify/unvarify operations to varify_global/unvarify_global |
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
wenzelm
parents:
35810
diff
changeset
|
1555 |
to emphasize that these only work in a global situation (which is |
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
wenzelm
parents:
35810
diff
changeset
|
1556 |
quite rare). |
e5980f0ad025
renamed varify/unvarify operations to varify_global/unvarify_global to emphasize that these only work in a global situation;
wenzelm
parents:
35810
diff
changeset
|
1557 |
|
37144 | 1558 |
* Curried take and drop in library.ML; negative length is interpreted |
1559 |
as infinity (as in chop). Subtle INCOMPATIBILITY. |
|
36961 | 1560 |
|
37351 | 1561 |
* Proof terms: type substitutions on proof constants now use canonical |
1562 |
order of type variables. INCOMPATIBILITY for tools working with proof |
|
1563 |
terms. |
|
1564 |
||
1565 |
* Raw axioms/defs may no longer carry sort constraints, and raw defs |
|
1566 |
may no longer carry premises. User-level specifications are |
|
1567 |
transformed accordingly by Thm.add_axiom/add_def. |
|
1568 |
||
33993 | 1569 |
|
34238 | 1570 |
*** System *** |
1571 |
||
1572 |
* Discontinued special HOL_USEDIR_OPTIONS for the main HOL image; |
|
1573 |
ISABELLE_USEDIR_OPTIONS applies uniformly to all sessions. Note that |
|
1574 |
proof terms are enabled unconditionally in the new HOL-Proofs image. |
|
1575 |
||
34255
2dd2547acb41
discontinued old ISABELLE and ISATOOL environment settings;
wenzelm
parents:
34238
diff
changeset
|
1576 |
* Discontinued old ISABELLE and ISATOOL environment settings (legacy |
2dd2547acb41
discontinued old ISABELLE and ISATOOL environment settings;
wenzelm
parents:
34238
diff
changeset
|
1577 |
feature since Isabelle2009). Use ISABELLE_PROCESS and ISABELLE_TOOL, |
2dd2547acb41
discontinued old ISABELLE and ISATOOL environment settings;
wenzelm
parents:
34238
diff
changeset
|
1578 |
respectively. |
2dd2547acb41
discontinued old ISABELLE and ISATOOL environment settings;
wenzelm
parents:
34238
diff
changeset
|
1579 |
|
36201
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
wenzelm
parents:
36178
diff
changeset
|
1580 |
* Old lib/scripts/polyml-platform is superseded by the |
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
wenzelm
parents:
36178
diff
changeset
|
1581 |
ISABELLE_PLATFORM setting variable, which defaults to the 32 bit |
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
wenzelm
parents:
36178
diff
changeset
|
1582 |
variant, even on a 64 bit machine. The following example setting |
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
wenzelm
parents:
36178
diff
changeset
|
1583 |
prefers 64 bit if available: |
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
wenzelm
parents:
36178
diff
changeset
|
1584 |
|
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
wenzelm
parents:
36178
diff
changeset
|
1585 |
ML_PLATFORM="${ISABELLE_PLATFORM64:-$ISABELLE_PLATFORM}" |
07d4f74abd12
polyml-platform script is superseded by ISABELLE_PLATFORM;
wenzelm
parents:
36178
diff
changeset
|
1586 |
|
37218 | 1587 |
* The preliminary Isabelle/jEdit application demonstrates the emerging |
1588 |
Isabelle/Scala layer for advanced prover interaction and integration. |
|
1589 |
See src/Tools/jEdit or "isabelle jedit" provided by the properly built |
|
1590 |
component. |
|
1591 |
||
37375 | 1592 |
* "IsabelleText" is a Unicode font derived from Bitstream Vera Mono |
1593 |
and Bluesky TeX fonts. It provides the usual Isabelle symbols, |
|
1594 |
similar to the default assignment of the document preparation system |
|
1595 |
(cf. isabellesym.sty). The Isabelle/Scala class Isabelle_System |
|
1596 |
provides some operations for direct access to the font without asking |
|
1597 |
the user for manual installation. |
|
1598 |
||
34238 | 1599 |
|
33993 | 1600 |
|
33842 | 1601 |
New in Isabelle2009-1 (December 2009) |
1602 |
------------------------------------- |
|
30904 | 1603 |
|
31547 | 1604 |
*** General *** |
1605 |
||
1606 |
* Discontinued old form of "escaped symbols" such as \\<forall>. Only |
|
1607 |
one backslash should be used, even in ML sources. |
|
1608 |
||
1609 |
||
30951
a6e26a248f03
formal declaration of undefined parameters after class instantiation
haftmann
parents:
30949
diff
changeset
|
1610 |
*** Pure *** |
a6e26a248f03
formal declaration of undefined parameters after class instantiation
haftmann
parents:
30949
diff
changeset
|
1611 |
|
32846
29941e925c82
News entry: inheritance of mixins; print_interps.
ballarin
parents:
32775
diff
changeset
|
1612 |
* Locale interpretation propagates mixins along the locale hierarchy. |
29941e925c82
News entry: inheritance of mixins; print_interps.
ballarin
parents:
32775
diff
changeset
|
1613 |
The currently only available mixins are the equations used to map |
29941e925c82
News entry: inheritance of mixins; print_interps.
ballarin
parents:
32775
diff
changeset
|
1614 |
local definitions to terms of the target domain of an interpretation. |
29941e925c82
News entry: inheritance of mixins; print_interps.
ballarin
parents:
32775
diff
changeset
|
1615 |
|
33842 | 1616 |
* Reactivated diagnostic command 'print_interps'. Use "print_interps |
1617 |
loc" to print all interpretations of locale "loc" in the theory. |
|
1618 |
Interpretations in proofs are not shown. |
|
32846
29941e925c82
News entry: inheritance of mixins; print_interps.
ballarin
parents:
32775
diff
changeset
|
1619 |
|
32983 | 1620 |
* Thoroughly revised locales tutorial. New section on conditional |
1621 |
interpretation. |
|
1622 |
||
33843 | 1623 |
* On instantiation of classes, remaining undefined class parameters |
1624 |
are formally declared. INCOMPATIBILITY. |
|
1625 |
||
30951
a6e26a248f03
formal declaration of undefined parameters after class instantiation
haftmann
parents:
30949
diff
changeset
|
1626 |
|
33842 | 1627 |
*** Document preparation *** |
1628 |
||
1629 |
* New generalized style concept for printing terms: @{foo (style) ...} |
|
1630 |
instead of @{foo_style style ...} (old form is still retained for |
|
1631 |
backward compatibility). Styles can be also applied for |
|
1632 |
antiquotations prop, term_type and typeof. |
|
32891 | 1633 |
|
1634 |
||
30930 | 1635 |
*** HOL *** |
1636 |
||
33842 | 1637 |
* New proof method "smt" for a combination of first-order logic with |
1638 |
equality, linear and nonlinear (natural/integer/real) arithmetic, and |
|
1639 |
fixed-size bitvectors; there is also basic support for higher-order |
|
1640 |
features (esp. lambda abstractions). It is an incomplete decision |
|
1641 |
procedure based on external SMT solvers using the oracle mechanism; |
|
1642 |
for the SMT solver Z3, this method is proof-producing. Certificates |
|
1643 |
are provided to avoid calling the external solvers solely for |
|
1644 |
re-checking proofs. Due to a remote SMT service there is no need for |
|
1645 |
installing SMT solvers locally. See src/HOL/SMT. |
|
1646 |
||
1647 |
* New commands to load and prove verification conditions generated by |
|
1648 |
the Boogie program verifier or derived systems (e.g. the Verifying C |
|
1649 |
Compiler (VCC) or Spec#). See src/HOL/Boogie. |
|
1650 |
||
1651 |
* New counterexample generator tool 'nitpick' based on the Kodkod |
|
1652 |
relational model finder. See src/HOL/Tools/Nitpick and |
|
1653 |
src/HOL/Nitpick_Examples. |
|
1654 |
||
33860 | 1655 |
* New commands 'code_pred' and 'values' to invoke the predicate |
1656 |
compiler and to enumerate values of inductive predicates. |
|
1657 |
||
1658 |
* A tabled implementation of the reflexive transitive closure. |
|
1659 |
||
1660 |
* New implementation of quickcheck uses generic code generator; |
|
1661 |
default generators are provided for all suitable HOL types, records |
|
1662 |
and datatypes. Old quickcheck can be re-activated importing theory |
|
1663 |
Library/SML_Quickcheck. |
|
1664 |
||
33843 | 1665 |
* New testing tool Mirabelle for automated proof tools. Applies |
1666 |
several tools and tactics like sledgehammer, metis, or quickcheck, to |
|
1667 |
every proof step in a theory. To be used in batch mode via the |
|
1668 |
"mirabelle" utility. |
|
1669 |
||
1670 |
* New proof method "sos" (sum of squares) for nonlinear real |
|
1671 |
arithmetic (originally due to John Harison). It requires theory |
|
1672 |
Library/Sum_Of_Squares. It is not a complete decision procedure but |
|
1673 |
works well in practice on quantifier-free real arithmetic with +, -, |
|
1674 |
*, ^, =, <= and <, i.e. boolean combinations of equalities and |
|
1675 |
inequalities between polynomials. It makes use of external |
|
1676 |
semidefinite programming solvers. Method "sos" generates a |
|
1677 |
certificate that can be pasted into the proof thus avoiding the need |
|
1678 |
to call an external tool every time the proof is checked. See |
|
1679 |
src/HOL/Library/Sum_Of_Squares. |
|
1680 |
||
1681 |
* New method "linarith" invokes existing linear arithmetic decision |
|
1682 |
procedure only. |
|
1683 |
||
1684 |
* New command 'atp_minimal' reduces result produced by Sledgehammer. |
|
1685 |
||
1686 |
* New Sledgehammer option "Full Types" in Proof General settings menu. |
|
1687 |
Causes full type information to be output to the ATPs. This slows |
|
1688 |
ATPs down considerably but eliminates a source of unsound "proofs" |
|
1689 |
that fail later. |
|
1690 |
||
1691 |
* New method "metisFT": A version of metis that uses full type |
|
1692 |
information in order to avoid failures of proof reconstruction. |
|
1693 |
||
1694 |
* New evaluator "approximate" approximates an real valued term using |
|
1695 |
the same method as the approximation method. |
|
1696 |
||
1697 |
* Method "approximate" now supports arithmetic expressions as |
|
1698 |
boundaries of intervals and implements interval splitting and Taylor |
|
1699 |
series expansion. |
|
1700 |
||
1701 |
* ML antiquotation @{code_datatype} inserts definition of a datatype |
|
1702 |
generated by the code generator; e.g. see src/HOL/Predicate.thy. |
|
1703 |
||
33860 | 1704 |
* New theory SupInf of the supremum and infimum operators for sets of |
1705 |
reals. |
|
1706 |
||
1707 |
* New theory Probability, which contains a development of measure |
|
1708 |
theory, eventually leading to Lebesgue integration and probability. |
|
1709 |
||
1710 |
* Extended Multivariate Analysis to include derivation and Brouwer's |
|
1711 |
fixpoint theorem. |
|
33843 | 1712 |
|
33842 | 1713 |
* Reorganization of number theory, INCOMPATIBILITY: |
33873 | 1714 |
- new number theory development for nat and int, in theories Divides |
1715 |
and GCD as well as in new session Number_Theory |
|
1716 |
- some constants and facts now suffixed with _nat and _int |
|
1717 |
accordingly |
|
1718 |
- former session NumberTheory now named Old_Number_Theory, including |
|
1719 |
theories Legacy_GCD and Primes (prefer Number_Theory if possible) |
|
33842 | 1720 |
- moved theory Pocklington from src/HOL/Library to |
1721 |
src/HOL/Old_Number_Theory |
|
32479 | 1722 |
|
33873 | 1723 |
* Theory GCD includes functions Gcd/GCD and Lcm/LCM for the gcd and |
1724 |
lcm of finite and infinite sets. It is shown that they form a complete |
|
32600 | 1725 |
lattice. |
1726 |
||
1727 |
* Class semiring_div requires superclass no_zero_divisors and proof of |
|
1728 |
div_mult_mult1; theorems div_mult_mult1, div_mult_mult2, |
|
1729 |
div_mult_mult1_if, div_mult_mult1 and div_mult_mult2 have been |
|
1730 |
generalized to class semiring_div, subsuming former theorems |
|
1731 |
zdiv_zmult_zmult1, zdiv_zmult_zmult1_if, zdiv_zmult_zmult1 and |
|
1732 |
zdiv_zmult_zmult2. div_mult_mult1 is now [simp] by default. |
|
1733 |
INCOMPATIBILITY. |
|
1734 |
||
32588
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
haftmann
parents:
32485
diff
changeset
|
1735 |
* Refinements to lattice classes and sets: |
32064 | 1736 |
- less default intro/elim rules in locale variant, more default |
1737 |
intro/elim rules in class variant: more uniformity |
|
33842 | 1738 |
- lemma ge_sup_conv renamed to le_sup_iff, in accordance with |
1739 |
le_inf_iff |
|
1740 |
- dropped lemma alias inf_ACI for inf_aci (same for sup_ACI and |
|
1741 |
sup_aci) |
|
32064 | 1742 |
- renamed ACI to inf_sup_aci |
32600 | 1743 |
- new class "boolean_algebra" |
33842 | 1744 |
- class "complete_lattice" moved to separate theory |
33860 | 1745 |
"Complete_Lattice"; corresponding constants (and abbreviations) |
33842 | 1746 |
renamed and with authentic syntax: |
33860 | 1747 |
Set.Inf ~> Complete_Lattice.Inf |
1748 |
Set.Sup ~> Complete_Lattice.Sup |
|
1749 |
Set.INFI ~> Complete_Lattice.INFI |
|
1750 |
Set.SUPR ~> Complete_Lattice.SUPR |
|
1751 |
Set.Inter ~> Complete_Lattice.Inter |
|
1752 |
Set.Union ~> Complete_Lattice.Union |
|
1753 |
Set.INTER ~> Complete_Lattice.INTER |
|
1754 |
Set.UNION ~> Complete_Lattice.UNION |
|
32600 | 1755 |
- authentic syntax for |
1756 |
Set.Pow |
|
1757 |
Set.image |
|
32588
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
haftmann
parents:
32485
diff
changeset
|
1758 |
- mere abbreviations: |
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
haftmann
parents:
32485
diff
changeset
|
1759 |
Set.empty (for bot) |
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
haftmann
parents:
32485
diff
changeset
|
1760 |
Set.UNIV (for top) |
33860 | 1761 |
Set.inter (for inf, formerly Set.Int) |
1762 |
Set.union (for sup, formerly Set.Un) |
|
32588
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
haftmann
parents:
32485
diff
changeset
|
1763 |
Complete_Lattice.Inter (for Inf) |
5e06a1634e55
Inter and Union are mere abbreviations for Inf and Sup; tuned
haftmann
parents:
32485
diff
changeset
|
1764 |
Complete_Lattice.Union (for Sup) |
32606
b5c3a8a75772
INTER and UNION are mere abbreviations for INFI and SUPR
haftmann
parents:
32600
diff
changeset
|
1765 |
Complete_Lattice.INTER (for INFI) |
b5c3a8a75772
INTER and UNION are mere abbreviations for INFI and SUPR
haftmann
parents:
32600
diff
changeset
|
1766 |
Complete_Lattice.UNION (for SUPR) |
32600 | 1767 |
- object-logic definitions as far as appropriate |
32217 | 1768 |
|
32691 | 1769 |
INCOMPATIBILITY. Care is required when theorems Int_subset_iff or |
33842 | 1770 |
Un_subset_iff are explicitly deleted as default simp rules; then also |
1771 |
their lattice counterparts le_inf_iff and le_sup_iff have to be |
|
32691 | 1772 |
deleted to achieve the desired effect. |
32064 | 1773 |
|
33842 | 1774 |
* Rules inf_absorb1, inf_absorb2, sup_absorb1, sup_absorb2 are no simp |
1775 |
rules by default any longer; the same applies to min_max.inf_absorb1 |
|
1776 |
etc. INCOMPATIBILITY. |
|
1777 |
||
1778 |
* Rules sup_Int_eq and sup_Un_eq are no longer declared as |
|
1779 |
pred_set_conv by default. INCOMPATIBILITY. |
|
1780 |
||
1781 |
* Power operations on relations and functions are now one dedicated |
|
32706 | 1782 |
constant "compow" with infix syntax "^^". Power operation on |
31547 | 1783 |
multiplicative monoids retains syntax "^" and is now defined generic |
1784 |
in class power. INCOMPATIBILITY. |
|
1785 |
||
33842 | 1786 |
* Relation composition "R O S" now has a more standard argument order: |
1787 |
"R O S = {(x, z). EX y. (x, y) : R & (y, z) : S}". INCOMPATIBILITY, |
|
1788 |
rewrite propositions with "S O R" --> "R O S". Proofs may occasionally |
|
1789 |
break, since the O_assoc rule was not rewritten like this. Fix using |
|
1790 |
O_assoc[symmetric]. The same applies to the curried version "R OO S". |
|
32427 | 1791 |
|
33057 | 1792 |
* Function "Inv" is renamed to "inv_into" and function "inv" is now an |
33842 | 1793 |
abbreviation for "inv_into UNIV". Lemmas are renamed accordingly. |
32988 | 1794 |
INCOMPATIBILITY. |
1795 |
||
33860 | 1796 |
* Most rules produced by inductive and datatype package have mandatory |
1797 |
prefixes. INCOMPATIBILITY. |
|
31790 | 1798 |
|
33842 | 1799 |
* Changed "DERIV_intros" to a dynamic fact, which can be augmented by |
1800 |
the attribute of the same name. Each of the theorems in the list |
|
1801 |
DERIV_intros assumes composition with an additional function and |
|
1802 |
matches a variable to the derivative, which has to be solved by the |
|
1803 |
Simplifier. Hence (auto intro!: DERIV_intros) computes the derivative |
|
33873 | 1804 |
of most elementary terms. Former Maclauren.DERIV_tac and |
1805 |
Maclauren.deriv_tac should be replaced by (auto intro!: DERIV_intros). |
|
1806 |
INCOMPATIBILITY. |
|
33860 | 1807 |
|
1808 |
* Code generator attributes follow the usual underscore convention: |
|
1809 |
code_unfold replaces code unfold |
|
1810 |
code_post replaces code post |
|
1811 |
etc. |
|
1812 |
INCOMPATIBILITY. |
|
31900 | 1813 |
|
33471 | 1814 |
* Renamed methods: |
1815 |
sizechange -> size_change |
|
1816 |
induct_scheme -> induction_schema |
|
33860 | 1817 |
INCOMPATIBILITY. |
33673 | 1818 |
|
33843 | 1819 |
* Discontinued abbreviation "arbitrary" of constant "undefined". |
1820 |
INCOMPATIBILITY, use "undefined" directly. |
|
1821 |
||
33860 | 1822 |
* Renamed theorems: |
1823 |
Suc_eq_add_numeral_1 -> Suc_eq_plus1 |
|
1824 |
Suc_eq_add_numeral_1_left -> Suc_eq_plus1_left |
|
1825 |
Suc_plus1 -> Suc_eq_plus1 |
|
1826 |
*anti_sym -> *antisym* |
|
1827 |
vector_less_eq_def -> vector_le_def |
|
1828 |
INCOMPATIBILITY. |
|
1829 |
||
1830 |
* Added theorem List.map_map as [simp]. Removed List.map_compose. |
|
1831 |
INCOMPATIBILITY. |
|
1832 |
||
1833 |
* Removed predicate "M hassize n" (<--> card M = n & finite M). |
|
1834 |
INCOMPATIBILITY. |
|
1835 |
||
31812 | 1836 |
|
33825 | 1837 |
*** HOLCF *** |
1838 |
||
33842 | 1839 |
* Theory Representable defines a class "rep" of domains that are |
1840 |
representable (via an ep-pair) in the universal domain type "udom". |
|
33825 | 1841 |
Instances are provided for all type constructors defined in HOLCF. |
1842 |
||
1843 |
* The 'new_domain' command is a purely definitional version of the |
|
1844 |
domain package, for representable domains. Syntax is identical to the |
|
1845 |
old domain package. The 'new_domain' package also supports indirect |
|
1846 |
recursion using previously-defined type constructors. See |
|
33842 | 1847 |
src/HOLCF/ex/New_Domain.thy for examples. |
1848 |
||
1849 |
* Method "fixrec_simp" unfolds one step of a fixrec-defined constant |
|
33825 | 1850 |
on the left-hand side of an equation, and then performs |
1851 |
simplification. Rewriting is done using rules declared with the |
|
33842 | 1852 |
"fixrec_simp" attribute. The "fixrec_simp" method is intended as a |
1853 |
replacement for "fixpat"; see src/HOLCF/ex/Fixrec_ex.thy for examples. |
|
33825 | 1854 |
|
1855 |
* The pattern-match compiler in 'fixrec' can now handle constructors |
|
1856 |
with HOL function types. Pattern-match combinators for the Pair |
|
1857 |
constructor are pre-configured. |
|
1858 |
||
1859 |
* The 'fixrec' package now produces better fixed-point induction rules |
|
1860 |
for mutually-recursive definitions: Induction rules have conclusions |
|
1861 |
of the form "P foo bar" instead of "P <foo, bar>". |
|
1862 |
||
1863 |
* The constant "sq_le" (with infix syntax "<<" or "\<sqsubseteq>") has |
|
1864 |
been renamed to "below". The name "below" now replaces "less" in many |
|
33842 | 1865 |
theorem names. (Legacy theorem names using "less" are still supported |
1866 |
as well.) |
|
33825 | 1867 |
|
1868 |
* The 'fixrec' package now supports "bottom patterns". Bottom |
|
1869 |
patterns can be used to generate strictness rules, or to make |
|
1870 |
functions more strict (much like the bang-patterns supported by the |
|
33873 | 1871 |
Glasgow Haskell Compiler). See src/HOLCF/ex/Fixrec_ex.thy for |
1872 |
examples. |
|
33825 | 1873 |
|
1874 |
||
31304 | 1875 |
*** ML *** |
1876 |
||
33843 | 1877 |
* Support for Poly/ML 5.3.0, with improved reporting of compiler |
1878 |
errors and run-time exceptions, including detailed source positions. |
|
1879 |
||
1880 |
* Structure Name_Space (formerly NameSpace) now manages uniquely |
|
1881 |
identified entries, with some additional information such as source |
|
1882 |
position, logical grouping etc. |
|
1883 |
||
33524
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
wenzelm
parents:
33472
diff
changeset
|
1884 |
* Theory and context data is now introduced by the simplified and |
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
wenzelm
parents:
33472
diff
changeset
|
1885 |
modernized functors Theory_Data, Proof_Data, Generic_Data. Data needs |
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
wenzelm
parents:
33472
diff
changeset
|
1886 |
to be pure, but the old TheoryDataFun for mutable data (with explicit |
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
wenzelm
parents:
33472
diff
changeset
|
1887 |
copy operation) is still available for some time. |
a08e6c1cbc04
updated functor Theory_Data, Proof_Data, Generic_Data;
wenzelm
parents:
33472
diff
changeset
|
1888 |
|
32742 | 1889 |
* Structure Synchronized (cf. src/Pure/Concurrent/synchronized.ML) |
1890 |
provides a high-level programming interface to synchronized state |
|
1891 |
variables with atomic update. This works via pure function |
|
1892 |
application within a critical section -- its runtime should be as |
|
1893 |
short as possible; beware of deadlocks if critical code is nested, |
|
1894 |
either directly or indirectly via other synchronized variables! |
|
1895 |
||
1896 |
* Structure Unsynchronized (cf. src/Pure/ML-Systems/unsynchronized.ML) |
|
1897 |
wraps raw ML references, explicitly indicating their non-thread-safe |
|
1898 |
behaviour. The Isar toplevel keeps this structure open, to |
|
1899 |
accommodate Proof General as well as quick and dirty interactive |
|
1900 |
experiments with references. |
|
1901 |
||
32365 | 1902 |
* PARALLEL_CHOICE and PARALLEL_GOALS provide basic support for |
1903 |
parallel tactical reasoning. |
|
1904 |
||
32427 | 1905 |
* Tacticals Subgoal.FOCUS, Subgoal.FOCUS_PREMS, Subgoal.FOCUS_PARAMS |
1906 |
are similar to SUBPROOF, but are slightly more flexible: only the |
|
1907 |
specified parts of the subgoal are imported into the context, and the |
|
1908 |
body tactic may introduce new subgoals and schematic variables. |
|
1909 |
||
1910 |
* Old tactical METAHYPS, which does not observe the proof context, has |
|
1911 |
been renamed to Old_Goals.METAHYPS and awaits deletion. Use SUBPROOF |
|
1912 |
or Subgoal.FOCUS etc. |
|
32216 | 1913 |
|
31971
8c1b845ed105
renamed functor TableFun to Table, and GraphFun to Graph;
wenzelm
parents:
31901
diff
changeset
|
1914 |
* Renamed functor TableFun to Table, and GraphFun to Graph. (Since |
8c1b845ed105
renamed functor TableFun to Table, and GraphFun to Graph;
wenzelm
parents:
31901
diff
changeset
|
1915 |
functors have their own ML name space there is no point to mark them |
8c1b845ed105
renamed functor TableFun to Table, and GraphFun to Graph;
wenzelm
parents:
31901
diff
changeset
|
1916 |
separately.) Minor INCOMPATIBILITY. |
8c1b845ed105
renamed functor TableFun to Table, and GraphFun to Graph;
wenzelm
parents:
31901
diff
changeset
|
1917 |
|
31901 | 1918 |
* Renamed NamedThmsFun to Named_Thms. INCOMPATIBILITY. |
1919 |
||
33842 | 1920 |
* Renamed several structures FooBar to Foo_Bar. Occasional, |
1921 |
INCOMPATIBILITY. |
|
1922 |
||
33843 | 1923 |
* Operations of structure Skip_Proof no longer require quick_and_dirty |
1924 |
mode, which avoids critical setmp. |
|
1925 |
||
31306
a74ee84288a0
eliminated old Attrib.add_attributes (and Attrib.syntax);
wenzelm
parents:
31304
diff
changeset
|
1926 |
* Eliminated old Attrib.add_attributes, Method.add_methods and related |
33842 | 1927 |
combinators for "args". INCOMPATIBILITY, need to use simplified |
31306
a74ee84288a0
eliminated old Attrib.add_attributes (and Attrib.syntax);
wenzelm
parents:
31304
diff
changeset
|
1928 |
Attrib/Method.setup introduced in Isabelle2009. |
31304 | 1929 |
|
32151
2f65c45c2e7e
Proper context for simpset_of, claset_of, clasimpset_of.
wenzelm
parents:
32136
diff
changeset
|
1930 |
* Proper context for simpset_of, claset_of, clasimpset_of. May fall |
2f65c45c2e7e
Proper context for simpset_of, claset_of, clasimpset_of.
wenzelm
parents:
32136
diff
changeset
|
1931 |
back on global_simpset_of, global_claset_of, global_clasimpset_of as |
2f65c45c2e7e
Proper context for simpset_of, claset_of, clasimpset_of.
wenzelm
parents:
32136
diff
changeset
|
1932 |
last resort. INCOMPATIBILITY. |
2f65c45c2e7e
Proper context for simpset_of, claset_of, clasimpset_of.
wenzelm
parents:
32136
diff
changeset
|
1933 |
|
32092
6a5995438266
Display.pretty_thm now requires a proper context;
wenzelm
parents:
32079
diff
changeset
|
1934 |
* Display.pretty_thm now requires a proper context (cf. former |
6a5995438266
Display.pretty_thm now requires a proper context;
wenzelm
parents:
32079
diff
changeset
|
1935 |
ProofContext.pretty_thm). May fall back on Display.pretty_thm_global |
6a5995438266
Display.pretty_thm now requires a proper context;
wenzelm
parents:
32079
diff
changeset
|
1936 |
or even Display.pretty_thm_without_context as last resort. |
6a5995438266
Display.pretty_thm now requires a proper context;
wenzelm
parents:
32079
diff
changeset
|
1937 |
INCOMPATIBILITY. |
6a5995438266
Display.pretty_thm now requires a proper context;
wenzelm
parents:
32079
diff
changeset
|
1938 |
|
32433 | 1939 |
* Discontinued Display.pretty_ctyp/cterm etc. INCOMPATIBILITY, use |
1940 |
Syntax.pretty_typ/term directly, preferably with proper context |
|
1941 |
instead of global theory. |
|
1942 |
||
31304 | 1943 |
|
31308 | 1944 |
*** System *** |
1945 |
||
33842 | 1946 |
* Further fine tuning of parallel proof checking, scales up to 8 cores |
1947 |
(max. speedup factor 5.0). See also Goal.parallel_proofs in ML and |
|
1948 |
usedir option -q. |
|
1949 |
||
32326 | 1950 |
* Support for additional "Isabelle components" via etc/components, see |
1951 |
also the system manual. |
|
1952 |
||
1953 |
* The isabelle makeall tool now operates on all components with |
|
1954 |
IsaMakefile, not just hardwired "logics". |
|
1955 |
||
33842 | 1956 |
* Removed "compress" option from isabelle-process and isabelle usedir; |
1957 |
this is always enabled. |
|
33818 | 1958 |
|
31308 | 1959 |
* Discontinued support for Poly/ML 4.x versions. |
1960 |
||
33842 | 1961 |
* Isabelle tool "wwwfind" provides web interface for 'find_theorems' |
1962 |
on a given logic image. This requires the lighttpd webserver and is |
|
1963 |
currently supported on Linux only. |
|
32061
11f8ee55662d
parallel_proofs: more fine-grained control with optional parallel checking of nested Isar proofs;
wenzelm
parents:
31997
diff
changeset
|
1964 |
|
31308 | 1965 |
|
31304 | 1966 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
1967 |
New in Isabelle2009 (April 2009) |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
1968 |
-------------------------------- |
27104
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
1969 |
|
27599 | 1970 |
*** General *** |
1971 |
||
28504
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1972 |
* Simplified main Isabelle executables, with less surprises on |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1973 |
case-insensitive file-systems (such as Mac OS). |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1974 |
|
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1975 |
- The main Isabelle tool wrapper is now called "isabelle" instead of |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1976 |
"isatool." |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1977 |
|
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1978 |
- The former "isabelle" alias for "isabelle-process" has been |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1979 |
removed (should rarely occur to regular users). |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1980 |
|
28915
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents:
28914
diff
changeset
|
1981 |
- The former "isabelle-interface" and its alias "Isabelle" have been |
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents:
28914
diff
changeset
|
1982 |
removed (interfaces are now regular Isabelle tools). |
28504
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1983 |
|
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1984 |
Within scripts and make files, the Isabelle environment variables |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1985 |
ISABELLE_TOOL and ISABELLE_PROCESS replace old ISATOOL and ISABELLE, |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1986 |
respectively. (The latter are still available as legacy feature.) |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1987 |
|
28915
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents:
28914
diff
changeset
|
1988 |
The old isabelle-interface wrapper could react in confusing ways if |
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents:
28914
diff
changeset
|
1989 |
the interface was uninstalled or changed otherwise. Individual |
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents:
28914
diff
changeset
|
1990 |
interface tool configuration is now more explicit, see also the |
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents:
28914
diff
changeset
|
1991 |
Isabelle system manual. In particular, Proof General is now available |
0642cbb60c98
removed obsolete isabelle-interface executable and ISABELLE_INTERFACE setting;
wenzelm
parents:
28914
diff
changeset
|
1992 |
via "isabelle emacs". |
28504
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1993 |
|
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1994 |
INCOMPATIBILITY, need to adapt derivative scripts. Users may need to |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1995 |
purge installed copies of Isabelle executables and re-run "isabelle |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1996 |
install -p ...", or use symlinks. |
7ad7d7d6df47
simplified main Isabelle executables: removed Isabelle and isabelle (replaced by isabelle-process), renamed isatool to isabelle;
wenzelm
parents:
28475
diff
changeset
|
1997 |
|
28914
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents:
28856
diff
changeset
|
1998 |
* The default for ISABELLE_HOME_USER is now ~/.isabelle instead of the |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
1999 |
old ~/isabelle, which was slightly non-standard and apt to cause |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2000 |
surprises on case-insensitive file-systems (such as Mac OS). |
28914
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents:
28856
diff
changeset
|
2001 |
|
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents:
28856
diff
changeset
|
2002 |
INCOMPATIBILITY, need to move existing ~/isabelle/etc, |
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents:
28856
diff
changeset
|
2003 |
~/isabelle/heaps, ~/isabelle/browser_info to the new place. Special |
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents:
28856
diff
changeset
|
2004 |
care is required when using older releases of Isabelle. Note that |
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents:
28856
diff
changeset
|
2005 |
ISABELLE_HOME_USER can be changed in Isabelle/etc/settings of any |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2006 |
Isabelle distribution, in order to use the new ~/.isabelle uniformly. |
28914
f993cbffc42a
default for ISABELLE_HOME_USER is now ~/.isabelle instead of ~/isabelle;
wenzelm
parents:
28856
diff
changeset
|
2007 |
|
29161
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
2008 |
* Proofs of fully specified statements are run in parallel on |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2009 |
multi-core systems. A speedup factor of 2.5 to 3.2 can be expected on |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2010 |
a regular 4-core machine, if the initial heap space is made reasonably |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2011 |
large (cf. Poly/ML option -H). (Requires Poly/ML 5.2.1 or later.) |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2012 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2013 |
* The main reference manuals ("isar-ref", "implementation", and |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2014 |
"system") have been updated and extended. Formally checked references |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2015 |
as hyperlinks are now available uniformly. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2016 |
|
30163
faf95eb3f375
* New prover for coherent logic (see src/Tools/coherent.ML).
wenzelm
parents:
30106
diff
changeset
|
2017 |
|
27599 | 2018 |
*** Pure *** |
2019 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2020 |
* Complete re-implementation of locales. INCOMPATIBILITY in several |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2021 |
respects. The most important changes are listed below. See the |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2022 |
Tutorial on Locales ("locales" manual) for details. |
29253 | 2023 |
|
2024 |
- In locale expressions, instantiation replaces renaming. Parameters |
|
2025 |
must be declared in a for clause. To aid compatibility with previous |
|
2026 |
parameter inheritance, in locale declarations, parameters that are not |
|
2027 |
'touched' (instantiation position "_" or omitted) are implicitly added |
|
2028 |
with their syntax at the beginning of the for clause. |
|
2029 |
||
2030 |
- Syntax from abbreviations and definitions in locales is available in |
|
2031 |
locale expressions and context elements. The latter is particularly |
|
2032 |
useful in locale declarations. |
|
2033 |
||
2034 |
- More flexible mechanisms to qualify names generated by locale |
|
2035 |
expressions. Qualifiers (prefixes) may be specified in locale |
|
30728
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
wenzelm
parents:
30706
diff
changeset
|
2036 |
expressions, and can be marked as mandatory (syntax: "name!:") or |
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
wenzelm
parents:
30706
diff
changeset
|
2037 |
optional (syntax "name?:"). The default depends for plain "name:" |
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
wenzelm
parents:
30706
diff
changeset
|
2038 |
depends on the situation where a locale expression is used: in |
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
wenzelm
parents:
30706
diff
changeset
|
2039 |
commands 'locale' and 'sublocale' prefixes are optional, in |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2040 |
'interpretation' and 'interpret' prefixes are mandatory. The old |
30728
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
wenzelm
parents:
30706
diff
changeset
|
2041 |
implicit qualifiers derived from the parameter names of a locale are |
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
wenzelm
parents:
30706
diff
changeset
|
2042 |
no longer generated. |
30106 | 2043 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2044 |
- Command "sublocale l < e" replaces "interpretation l < e". The |
30106 | 2045 |
instantiation clause in "interpretation" and "interpret" (square |
2046 |
brackets) is no longer available. Use locale expressions. |
|
29253 | 2047 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2048 |
- When converting proof scripts, mandatory qualifiers in |
30728
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
wenzelm
parents:
30706
diff
changeset
|
2049 |
'interpretation' and 'interpret' should be retained by default, even |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2050 |
if this is an INCOMPATIBILITY compared to former behavior. In the |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2051 |
worst case, use the "name?:" form for non-mandatory ones. Qualifiers |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2052 |
in locale expressions range over a single locale instance only. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2053 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2054 |
- Dropped locale element "includes". This is a major INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2055 |
In existing theorem specifications replace the includes element by the |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2056 |
respective context elements of the included locale, omitting those |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2057 |
that are already present in the theorem specification. Multiple |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2058 |
assume elements of a locale should be replaced by a single one |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2059 |
involving the locale predicate. In the proof body, declarations (most |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2060 |
notably theorems) may be regained by interpreting the respective |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2061 |
locales in the proof context as required (command "interpret"). |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2062 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2063 |
If using "includes" in replacement of a target solely because the |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2064 |
parameter types in the theorem are not as general as in the target, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2065 |
consider declaring a new locale with additional type constraints on |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2066 |
the parameters (context element "constrains"). |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2067 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2068 |
- Discontinued "locale (open)". INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2069 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2070 |
- Locale interpretation commands no longer attempt to simplify goal. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2071 |
INCOMPATIBILITY: in rare situations the generated goal differs. Use |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2072 |
methods intro_locales and unfold_locales to clarify. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2073 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2074 |
- Locale interpretation commands no longer accept interpretation |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2075 |
attributes. INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2076 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2077 |
* Class declaration: so-called "base sort" must not be given in import |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2078 |
list any longer, but is inferred from the specification. Particularly |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2079 |
in HOL, write |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2080 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2081 |
class foo = ... |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2082 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2083 |
instead of |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2084 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2085 |
class foo = type + ... |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2086 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2087 |
* Class target: global versions of theorems stemming do not carry a |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2088 |
parameter prefix any longer. INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2089 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2090 |
* Class 'instance' command no longer accepts attached definitions. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2091 |
INCOMPATIBILITY, use proper 'instantiation' target instead. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2092 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2093 |
* Recovered hiding of consts, which was accidentally broken in |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2094 |
Isabelle2007. Potential INCOMPATIBILITY, ``hide const c'' really |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2095 |
makes c inaccessible; consider using ``hide (open) const c'' instead. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2096 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2097 |
* Slightly more coherent Pure syntax, with updated documentation in |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2098 |
isar-ref manual. Removed locales meta_term_syntax and |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2099 |
meta_conjunction_syntax: TERM and &&& (formerly &&) are now permanent, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2100 |
INCOMPATIBILITY in rare situations. Note that &&& should not be used |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2101 |
directly in regular applications. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2102 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2103 |
* There is a new syntactic category "float_const" for signed decimal |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2104 |
fractions (e.g. 123.45 or -123.45). |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2105 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2106 |
* Removed exotic 'token_translation' command. INCOMPATIBILITY, use ML |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2107 |
interface with 'setup' command instead. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2108 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2109 |
* Command 'local_setup' is similar to 'setup', but operates on a local |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2110 |
theory context. |
27104
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2111 |
|
28114 | 2112 |
* The 'axiomatization' command now only works within a global theory |
2113 |
context. INCOMPATIBILITY. |
|
2114 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2115 |
* Goal-directed proof now enforces strict proof irrelevance wrt. sort |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2116 |
hypotheses. Sorts required in the course of reasoning need to be |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2117 |
covered by the constraints in the initial statement, completed by the |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2118 |
type instance information of the background theory. Non-trivial sort |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2119 |
hypotheses, which rarely occur in practice, may be specified via |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2120 |
vacuous propositions of the form SORT_CONSTRAINT('a::c). For example: |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2121 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2122 |
lemma assumes "SORT_CONSTRAINT('a::empty)" shows False ... |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2123 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2124 |
The result contains an implicit sort hypotheses as before -- |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2125 |
SORT_CONSTRAINT premises are eliminated as part of the canonical rule |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2126 |
normalization. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2127 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2128 |
* Generalized Isar history, with support for linear undo, direct state |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2129 |
addressing etc. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2130 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2131 |
* Changed defaults for unify configuration options: |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2132 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2133 |
unify_trace_bound = 50 (formerly 25) |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2134 |
unify_search_bound = 60 (formerly 30) |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2135 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2136 |
* Different bookkeeping for code equations (INCOMPATIBILITY): |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2137 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2138 |
a) On theory merge, the last set of code equations for a particular |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2139 |
constant is taken (in accordance with the policy applied by other |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2140 |
parts of the code generator framework). |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2141 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2142 |
b) Code equations stemming from explicit declarations (e.g. code |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2143 |
attribute) gain priority over default code equations stemming |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2144 |
from definition, primrec, fun etc. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2145 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2146 |
* Keyword 'code_exception' now named 'code_abort'. INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2147 |
|
30965 | 2148 |
* Unified theorem tables for both code generators. Thus [code |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2149 |
func] has disappeared and only [code] remains. INCOMPATIBILITY. |
30577 | 2150 |
|
2151 |
* Command 'find_consts' searches for constants based on type and name |
|
2152 |
patterns, e.g. |
|
29883 | 2153 |
|
2154 |
find_consts "_ => bool" |
|
2155 |
||
30106 | 2156 |
By default, matching is against subtypes, but it may be restricted to |
30728
f0aeca99b5d9
interpretation/interpret: prefixes are mandatory by default;
wenzelm
parents:
30706
diff
changeset
|
2157 |
the whole type. Searching by name is possible. Multiple queries are |
30106 | 2158 |
conjunctive and queries may be negated by prefixing them with a |
2159 |
hyphen: |
|
29883 | 2160 |
|
2161 |
find_consts strict: "_ => bool" name: "Int" -"int => int" |
|
29861
3c348f5873f3
updated NEWS etc with "solves" criterion and auto_solves
kleing
parents:
29823
diff
changeset
|
2162 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2163 |
* New 'find_theorems' criterion "solves" matches theorems that |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2164 |
directly solve the current goal (modulo higher-order unification). |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2165 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2166 |
* Auto solve feature for main theorem statements: whenever a new goal |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2167 |
is stated, "find_theorems solves" is called; any theorems that could |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2168 |
solve the lemma directly are listed as part of the goal state. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2169 |
Cf. associated options in Proof General Isabelle settings menu, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2170 |
enabled by default, with reasonable timeout for pathological cases of |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2171 |
higher-order unification. |
30415
9501af91c4a3
Instead of giving up entirely, arith now ignores all inequalities when there are too many.
webertj
parents:
30399
diff
changeset
|
2172 |
|
27104
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2173 |
|
27381 | 2174 |
*** Document preparation *** |
2175 |
||
2176 |
* Antiquotation @{lemma} now imitates a regular terminal proof, |
|
27392 | 2177 |
demanding keyword 'by' and supporting the full method expression |
27519
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2178 |
syntax just like the Isar command 'by'. |
27381 | 2179 |
|
2180 |
||
27104
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2181 |
*** HOL *** |
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2182 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2183 |
* Integrated main parts of former image HOL-Complex with HOL. Entry |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2184 |
points Main and Complex_Main remain as before. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2185 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2186 |
* Logic image HOL-Plain provides a minimal HOL with the most important |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2187 |
tools available (inductive, datatype, primrec, ...). This facilitates |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2188 |
experimentation and tool development. Note that user applications |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2189 |
(and library theories) should never refer to anything below theory |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2190 |
Main, as before. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2191 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2192 |
* Logic image HOL-Main stops at theory Main, and thus facilitates |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2193 |
experimentation due to shorter build times. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2194 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2195 |
* Logic image HOL-NSA contains theories of nonstandard analysis which |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2196 |
were previously part of former HOL-Complex. Entry point Hyperreal |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2197 |
remains valid, but theories formerly using Complex_Main should now use |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2198 |
new entry point Hypercomplex. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2199 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2200 |
* Generic ATP manager for Sledgehammer, based on ML threads instead of |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2201 |
Posix processes. Avoids potentially expensive forking of the ML |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2202 |
process. New thread-based implementation also works on non-Unix |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2203 |
platforms (Cygwin). Provers are no longer hardwired, but defined |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2204 |
within the theory via plain ML wrapper functions. Basic Sledgehammer |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2205 |
commands are covered in the isar-ref manual. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2206 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2207 |
* Wrapper scripts for remote SystemOnTPTP service allows to use |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2208 |
sledgehammer without local ATP installation (Vampire etc.). Other |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2209 |
provers may be included via suitable ML wrappers, see also |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2210 |
src/HOL/ATP_Linkup.thy. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2211 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2212 |
* ATP selection (E/Vampire/Spass) is now via Proof General's settings |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2213 |
menu. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2214 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2215 |
* The metis method no longer fails because the theorem is too trivial |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2216 |
(contains the empty clause). |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2217 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2218 |
* The metis method now fails in the usual manner, rather than raising |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2219 |
an exception, if it determines that it cannot prove the theorem. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2220 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2221 |
* Method "coherent" implements a prover for coherent logic (see also |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2222 |
src/Tools/coherent.ML). |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2223 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2224 |
* Constants "undefined" and "default" replace "arbitrary". Usually |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2225 |
"undefined" is the right choice to replace "arbitrary", though |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2226 |
logically there is no difference. INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2227 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2228 |
* Command "value" now integrates different evaluation mechanisms. The |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2229 |
result of the first successful evaluation mechanism is printed. In |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2230 |
square brackets a particular named evaluation mechanisms may be |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2231 |
specified (currently, [SML], [code] or [nbe]). See further |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2232 |
src/HOL/ex/Eval_Examples.thy. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2233 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2234 |
* Normalization by evaluation now allows non-leftlinear equations. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2235 |
Declare with attribute [code nbe]. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2236 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2237 |
* Methods "case_tac" and "induct_tac" now refer to the very same rules |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2238 |
as the structured Isar versions "cases" and "induct", cf. the |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2239 |
corresponding "cases" and "induct" attributes. Mutual induction rules |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2240 |
are now presented as a list of individual projections |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2241 |
(e.g. foo_bar.inducts for types foo and bar); the old format with |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2242 |
explicit HOL conjunction is no longer supported. INCOMPATIBILITY, in |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2243 |
rare situations a different rule is selected --- notably nested tuple |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2244 |
elimination instead of former prod.exhaust: use explicit (case_tac t |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2245 |
rule: prod.exhaust) here. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2246 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2247 |
* Attributes "cases", "induct", "coinduct" support "del" option. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2248 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2249 |
* Removed fact "case_split_thm", which duplicates "case_split". |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2250 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2251 |
* The option datatype has been moved to a new theory Option. Renamed |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2252 |
option_map to Option.map, and o2s to Option.set, INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2253 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2254 |
* New predicate "strict_mono" classifies strict functions on partial |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2255 |
orders. With strict functions on linear orders, reasoning about |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2256 |
(in)equalities is facilitated by theorems "strict_mono_eq", |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2257 |
"strict_mono_less_eq" and "strict_mono_less". |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2258 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2259 |
* Some set operations are now proper qualified constants with |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2260 |
authentic syntax. INCOMPATIBILITY: |
30304
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2261 |
|
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2262 |
op Int ~> Set.Int |
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2263 |
op Un ~> Set.Un |
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2264 |
INTER ~> Set.INTER |
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2265 |
UNION ~> Set.UNION |
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2266 |
Inter ~> Set.Inter |
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2267 |
Union ~> Set.Union |
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2268 |
{} ~> Set.empty |
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2269 |
UNIV ~> Set.UNIV |
d8e4cd2ac2a1
set operations Int, Un, INTER, UNION, Inter, Union, empty, UNIV are now proper qualified constants with authentic syntax
haftmann
parents:
30085
diff
changeset
|
2270 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2271 |
* Class complete_lattice with operations Inf, Sup, INFI, SUPR now in |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2272 |
theory Set. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2273 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2274 |
* Auxiliary class "itself" has disappeared -- classes without any |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2275 |
parameter are treated as expected by the 'class' command. |
29797 | 2276 |
|
29823
0ab754d13ccd
session Reflecion renamed to Decision_Procs, moved Dense_Linear_Order there
haftmann
parents:
29810
diff
changeset
|
2277 |
* Leibnitz's Series for Pi and the arcus tangens and logarithm series. |
0ab754d13ccd
session Reflecion renamed to Decision_Procs, moved Dense_Linear_Order there
haftmann
parents:
29810
diff
changeset
|
2278 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2279 |
* Common decision procedures (Cooper, MIR, Ferrack, Approximation, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2280 |
Dense_Linear_Order) are now in directory HOL/Decision_Procs. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2281 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2282 |
* Theory src/HOL/Decision_Procs/Approximation provides the new proof |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2283 |
method "approximation". It proves formulas on real values by using |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2284 |
interval arithmetic. In the formulas are also the transcendental |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2285 |
functions sin, cos, tan, atan, ln, exp and the constant pi are |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2286 |
allowed. For examples see |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2287 |
src/HOL/Descision_Procs/ex/Approximation_Ex.thy. |
29823
0ab754d13ccd
session Reflecion renamed to Decision_Procs, moved Dense_Linear_Order there
haftmann
parents:
29810
diff
changeset
|
2288 |
|
0ab754d13ccd
session Reflecion renamed to Decision_Procs, moved Dense_Linear_Order there
haftmann
parents:
29810
diff
changeset
|
2289 |
* Theory "Reflection" now resides in HOL/Library. |
29650 | 2290 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2291 |
* Entry point to Word library now simply named "Word". |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2292 |
INCOMPATIBILITY. |
29628 | 2293 |
|
29197
6d4cb27ed19c
adapted HOL source structure to distribution layout
haftmann
parents:
29182
diff
changeset
|
2294 |
* Made source layout more coherent with logical distribution |
6d4cb27ed19c
adapted HOL source structure to distribution layout
haftmann
parents:
29182
diff
changeset
|
2295 |
structure: |
28952
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2296 |
|
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2297 |
src/HOL/Library/RType.thy ~> src/HOL/Typerep.thy |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2298 |
src/HOL/Library/Code_Message.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2299 |
src/HOL/Library/GCD.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2300 |
src/HOL/Library/Order_Relation.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2301 |
src/HOL/Library/Parity.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2302 |
src/HOL/Library/Univ_Poly.thy ~> src/HOL/ |
30176
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2303 |
src/HOL/Real/ContNotDenum.thy ~> src/HOL/Library/ |
28952
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2304 |
src/HOL/Real/Lubs.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2305 |
src/HOL/Real/PReal.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2306 |
src/HOL/Real/Rational.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2307 |
src/HOL/Real/RComplete.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2308 |
src/HOL/Real/RealDef.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2309 |
src/HOL/Real/RealPow.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2310 |
src/HOL/Real/Real.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2311 |
src/HOL/Complex/Complex_Main.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2312 |
src/HOL/Complex/Complex.thy ~> src/HOL/ |
30176
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2313 |
src/HOL/Complex/FrechetDeriv.thy ~> src/HOL/Library/ |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2314 |
src/HOL/Complex/Fundamental_Theorem_Algebra.thy ~> src/HOL/Library/ |
28952
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2315 |
src/HOL/Hyperreal/Deriv.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2316 |
src/HOL/Hyperreal/Fact.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2317 |
src/HOL/Hyperreal/Integration.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2318 |
src/HOL/Hyperreal/Lim.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2319 |
src/HOL/Hyperreal/Ln.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2320 |
src/HOL/Hyperreal/Log.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2321 |
src/HOL/Hyperreal/MacLaurin.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2322 |
src/HOL/Hyperreal/NthRoot.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2323 |
src/HOL/Hyperreal/Series.thy ~> src/HOL/ |
29197
6d4cb27ed19c
adapted HOL source structure to distribution layout
haftmann
parents:
29182
diff
changeset
|
2324 |
src/HOL/Hyperreal/SEQ.thy ~> src/HOL/ |
28952
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2325 |
src/HOL/Hyperreal/Taylor.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2326 |
src/HOL/Hyperreal/Transcendental.thy ~> src/HOL/ |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2327 |
src/HOL/Real/Float ~> src/HOL/Library/ |
29197
6d4cb27ed19c
adapted HOL source structure to distribution layout
haftmann
parents:
29182
diff
changeset
|
2328 |
src/HOL/Real/HahnBanach ~> src/HOL/HahnBanach |
6d4cb27ed19c
adapted HOL source structure to distribution layout
haftmann
parents:
29182
diff
changeset
|
2329 |
src/HOL/Real/RealVector.thy ~> src/HOL/ |
28952
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2330 |
|
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2331 |
src/HOL/arith_data.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2332 |
src/HOL/hologic.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2333 |
src/HOL/simpdata.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2334 |
src/HOL/int_arith1.ML ~> src/HOL/Tools/int_arith.ML |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2335 |
src/HOL/int_factor_simprocs.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2336 |
src/HOL/nat_simprocs.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2337 |
src/HOL/Real/float_arith.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2338 |
src/HOL/Real/float_syntax.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2339 |
src/HOL/Real/rat_arith.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2340 |
src/HOL/Real/real_arith.ML ~> src/HOL/Tools |
15a4b2cf8c34
made repository layout more coherent with logical distribution structure; stripped some $Id$s
haftmann
parents:
28915
diff
changeset
|
2341 |
|
29398 | 2342 |
src/HOL/Library/Array.thy ~> src/HOL/Imperative_HOL |
2343 |
src/HOL/Library/Heap_Monad.thy ~> src/HOL/Imperative_HOL |
|
2344 |
src/HOL/Library/Heap.thy ~> src/HOL/Imperative_HOL |
|
2345 |
src/HOL/Library/Imperative_HOL.thy ~> src/HOL/Imperative_HOL |
|
2346 |
src/HOL/Library/Ref.thy ~> src/HOL/Imperative_HOL |
|
2347 |
src/HOL/Library/Relational.thy ~> src/HOL/Imperative_HOL |
|
2348 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2349 |
* If methods "eval" and "evaluation" encounter a structured proof |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2350 |
state with !!/==>, only the conclusion is evaluated to True (if |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2351 |
possible), avoiding strange error messages. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2352 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2353 |
* Method "sizechange" automates termination proofs using (a |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2354 |
modification of) the size-change principle. Requires SAT solver. See |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2355 |
src/HOL/ex/Termination.thy for examples. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2356 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2357 |
* Simplifier: simproc for let expressions now unfolds if bound |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2358 |
variable occurs at most once in let expression body. INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2359 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2360 |
* Method "arith": Linear arithmetic now ignores all inequalities when |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2361 |
fast_arith_neq_limit is exceeded, instead of giving up entirely. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2362 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2363 |
* New attribute "arith" for facts that should always be used |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2364 |
automatically by arithmetic. It is intended to be used locally in |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2365 |
proofs, e.g. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2366 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2367 |
assumes [arith]: "x > 0" |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2368 |
|
30706 | 2369 |
Global usage is discouraged because of possible performance impact. |
2370 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2371 |
* New classes "top" and "bot" with corresponding operations "top" and |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2372 |
"bot" in theory Orderings; instantiation of class "complete_lattice" |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2373 |
requires instantiation of classes "top" and "bot". INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2374 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2375 |
* Changed definition lemma "less_fun_def" in order to provide an |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2376 |
instance for preorders on functions; use lemma "less_le" instead. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2377 |
INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2378 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2379 |
* Theory Orderings: class "wellorder" moved here, with explicit |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2380 |
induction rule "less_induct" as assumption. For instantiation of |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2381 |
"wellorder" by means of predicate "wf", use rule wf_wellorderI. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2382 |
INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2383 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2384 |
* Theory Orderings: added class "preorder" as superclass of "order". |
27793 | 2385 |
INCOMPATIBILITY: Instantiation proofs for order, linorder |
2386 |
etc. slightly changed. Some theorems named order_class.* now named |
|
2387 |
preorder_class.*. |
|
2388 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2389 |
* Theory Relation: renamed "refl" to "refl_on", "reflexive" to "refl, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2390 |
"diag" to "Id_on". |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2391 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2392 |
* Theory Finite_Set: added a new fold combinator of type |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2393 |
|
28855 | 2394 |
('a => 'b => 'b) => 'b => 'a set => 'b |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2395 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2396 |
Occasionally this is more convenient than the old fold combinator |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2397 |
which is now defined in terms of the new one and renamed to |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2398 |
fold_image. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2399 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2400 |
* Theories Ring_and_Field and OrderedGroup: The lemmas "group_simps" |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2401 |
and "ring_simps" have been replaced by "algebra_simps" (which can be |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2402 |
extended with further lemmas!). At the moment both still exist but |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2403 |
the former will disappear at some point. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2404 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2405 |
* Theory Power: Lemma power_Suc is now declared as a simp rule in |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2406 |
class recpower. Type-specific simp rules for various recpower types |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2407 |
have been removed. INCOMPATIBILITY, rename old lemmas as follows: |
30273
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2408 |
|
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2409 |
rat_power_0 -> power_0 |
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2410 |
rat_power_Suc -> power_Suc |
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2411 |
realpow_0 -> power_0 |
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2412 |
realpow_Suc -> power_Suc |
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2413 |
complexpow_0 -> power_0 |
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2414 |
complexpow_Suc -> power_Suc |
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2415 |
power_poly_0 -> power_0 |
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2416 |
power_poly_Suc -> power_Suc |
ecd6f0ca62ea
declare power_Suc [simp]; remove redundant type-specific versions of power_Suc
huffman
parents:
30250
diff
changeset
|
2417 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2418 |
* Theories Ring_and_Field and Divides: Definition of "op dvd" has been |
27793 | 2419 |
moved to separate class dvd in Ring_and_Field; a couple of lemmas on |
2420 |
dvd has been generalized to class comm_semiring_1. Likewise a bunch |
|
2421 |
of lemmas from Divides has been generalized from nat to class |
|
2422 |
semiring_div. INCOMPATIBILITY. This involves the following theorem |
|
2423 |
renames resulting from duplicate elimination: |
|
27651
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2424 |
|
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2425 |
dvd_def_mod ~> dvd_eq_mod_eq_0 |
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2426 |
zero_dvd_iff ~> dvd_0_left_iff |
28559 | 2427 |
dvd_0 ~> dvd_0_right |
27651
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2428 |
DIVISION_BY_ZERO_DIV ~> div_by_0 |
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2429 |
DIVISION_BY_ZERO_MOD ~> mod_by_0 |
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2430 |
mult_div ~> div_mult_self2_is_id |
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2431 |
mult_mod ~> mod_mult_self2_is_0 |
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2432 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2433 |
* Theory IntDiv: removed many lemmas that are instances of class-based |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2434 |
generalizations (from Divides and Ring_and_Field). INCOMPATIBILITY, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2435 |
rename old lemmas as follows: |
30044 | 2436 |
|
2437 |
dvd_diff -> nat_dvd_diff |
|
2438 |
dvd_zminus_iff -> dvd_minus_iff |
|
30224 | 2439 |
mod_add1_eq -> mod_add_eq |
2440 |
mod_mult1_eq -> mod_mult_right_eq |
|
2441 |
mod_mult1_eq' -> mod_mult_left_eq |
|
2442 |
mod_mult_distrib_mod -> mod_mult_eq |
|
30044 | 2443 |
nat_mod_add_left_eq -> mod_add_left_eq |
2444 |
nat_mod_add_right_eq -> mod_add_right_eq |
|
2445 |
nat_mod_div_trivial -> mod_div_trivial |
|
2446 |
nat_mod_mod_trivial -> mod_mod_trivial |
|
2447 |
zdiv_zadd_self1 -> div_add_self1 |
|
2448 |
zdiv_zadd_self2 -> div_add_self2 |
|
30181 | 2449 |
zdiv_zmult_self1 -> div_mult_self2_is_id |
30044 | 2450 |
zdiv_zmult_self2 -> div_mult_self1_is_id |
2451 |
zdvd_triv_left -> dvd_triv_left |
|
2452 |
zdvd_triv_right -> dvd_triv_right |
|
2453 |
zdvd_zmult_cancel_disj -> dvd_mult_cancel_left |
|
30085 | 2454 |
zmod_eq0_zdvd_iff -> dvd_eq_mod_eq_0[symmetric] |
30044 | 2455 |
zmod_zadd_left_eq -> mod_add_left_eq |
2456 |
zmod_zadd_right_eq -> mod_add_right_eq |
|
2457 |
zmod_zadd_self1 -> mod_add_self1 |
|
2458 |
zmod_zadd_self2 -> mod_add_self2 |
|
30224 | 2459 |
zmod_zadd1_eq -> mod_add_eq |
30044 | 2460 |
zmod_zdiff1_eq -> mod_diff_eq |
2461 |
zmod_zdvd_zmod -> mod_mod_cancel |
|
2462 |
zmod_zmod_cancel -> mod_mod_cancel |
|
2463 |
zmod_zmult_self1 -> mod_mult_self2_is_0 |
|
2464 |
zmod_zmult_self2 -> mod_mult_self1_is_0 |
|
2465 |
zmod_1 -> mod_by_1 |
|
2466 |
zdiv_1 -> div_by_1 |
|
2467 |
zdvd_abs1 -> abs_dvd_iff |
|
2468 |
zdvd_abs2 -> dvd_abs_iff |
|
2469 |
zdvd_refl -> dvd_refl |
|
2470 |
zdvd_trans -> dvd_trans |
|
2471 |
zdvd_zadd -> dvd_add |
|
2472 |
zdvd_zdiff -> dvd_diff |
|
2473 |
zdvd_zminus_iff -> dvd_minus_iff |
|
2474 |
zdvd_zminus2_iff -> minus_dvd_iff |
|
2475 |
zdvd_zmultD -> dvd_mult_right |
|
2476 |
zdvd_zmultD2 -> dvd_mult_left |
|
2477 |
zdvd_zmult_mono -> mult_dvd_mono |
|
2478 |
zdvd_0_right -> dvd_0_right |
|
2479 |
zdvd_0_left -> dvd_0_left_iff |
|
2480 |
zdvd_1_left -> one_dvd |
|
2481 |
zminus_dvd_iff -> minus_dvd_iff |
|
2482 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2483 |
* Theory Rational: 'Fract k 0' now equals '0'. INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2484 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2485 |
* The real numbers offer decimal input syntax: 12.34 is translated |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2486 |
into 1234/10^2. This translation is not reversed upon output. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2487 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2488 |
* Theory Library/Polynomial defines an abstract type 'a poly of |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2489 |
univariate polynomials with coefficients of type 'a. In addition to |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2490 |
the standard ring operations, it also supports div and mod. Code |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2491 |
generation is also supported, using list-style constructors. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2492 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2493 |
* Theory Library/Inner_Product defines a class of real_inner for real |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2494 |
inner product spaces, with an overloaded operation inner :: 'a => 'a |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2495 |
=> real. Class real_inner is a subclass of real_normed_vector from |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2496 |
theory RealVector. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2497 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2498 |
* Theory Library/Product_Vector provides instances for the product |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2499 |
type 'a * 'b of several classes from RealVector and Inner_Product. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2500 |
Definitions of addition, subtraction, scalar multiplication, norms, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2501 |
and inner products are included. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2502 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2503 |
* Theory Library/Bit defines the field "bit" of integers modulo 2. In |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2504 |
addition to the field operations, numerals and case syntax are also |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2505 |
supported. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2506 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2507 |
* Theory Library/Diagonalize provides constructive version of Cantor's |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2508 |
first diagonalization argument. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2509 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2510 |
* Theory Library/GCD: Curried operations gcd, lcm (for nat) and zgcd, |
27599 | 2511 |
zlcm (for int); carried together from various gcd/lcm developements in |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2512 |
the HOL Distribution. Constants zgcd and zlcm replace former igcd and |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2513 |
ilcm; corresponding theorems renamed accordingly. INCOMPATIBILITY, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2514 |
may recover tupled syntax as follows: |
27556 | 2515 |
|
2516 |
hide (open) const gcd |
|
2517 |
abbreviation gcd where |
|
2518 |
"gcd == (%(a, b). GCD.gcd a b)" |
|
2519 |
notation (output) |
|
2520 |
GCD.gcd ("gcd '(_, _')") |
|
2521 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2522 |
The same works for lcm, zgcd, zlcm. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2523 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2524 |
* Theory Library/Nat_Infinity: added addition, numeral syntax and more |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2525 |
instantiations for algebraic structures. Removed some duplicate |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2526 |
theorems. Changes in simp rules. INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2527 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2528 |
* ML antiquotation @{code} takes a constant as argument and generates |
27651
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2529 |
corresponding code in background and inserts name of the corresponding |
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2530 |
resulting ML value/function/datatype constructor binding in place. |
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2531 |
All occurrences of @{code} with a single ML block are generated |
16a26996c30e
moved op dvd to theory Ring_and_Field; generalized a couple of lemmas
haftmann
parents:
27599
diff
changeset
|
2532 |
simultaneously. Provides a generic and safe interface for |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2533 |
instrumentalizing code generation. See |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2534 |
src/HOL/Decision_Procs/Ferrack.thy for a more ambitious application. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2535 |
In future you ought to refrain from ad-hoc compiling generated SML |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2536 |
code on the ML toplevel. Note that (for technical reasons) @{code} |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2537 |
cannot refer to constants for which user-defined serializations are |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2538 |
set. Refer to the corresponding ML counterpart directly in that |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2539 |
cases. |
27122 | 2540 |
|
2541 |
* Command 'rep_datatype': instead of theorem names the command now |
|
2542 |
takes a list of terms denoting the constructors of the type to be |
|
2543 |
represented as datatype. The characteristic theorems have to be |
|
2544 |
proven. INCOMPATIBILITY. Also observe that the following theorems |
|
2545 |
have disappeared in favour of existing ones: |
|
2546 |
||
27104
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2547 |
unit_induct ~> unit.induct |
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2548 |
prod_induct ~> prod.induct |
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2549 |
sum_induct ~> sum.induct |
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2550 |
Suc_Suc_eq ~> nat.inject |
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2551 |
Suc_not_Zero Zero_not_Suc ~> nat.distinct |
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2552 |
|
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2553 |
|
27696 | 2554 |
*** HOL-Algebra *** |
2555 |
||
27713
95b36bfe7fc4
New locales for orders and lattices where the equivalence relation is not restricted to equality.
ballarin
parents:
27704
diff
changeset
|
2556 |
* New locales for orders and lattices where the equivalence relation |
30106 | 2557 |
is not restricted to equality. INCOMPATIBILITY: all order and lattice |
2558 |
locales use a record structure with field eq for the equivalence. |
|
27713
95b36bfe7fc4
New locales for orders and lattices where the equivalence relation is not restricted to equality.
ballarin
parents:
27704
diff
changeset
|
2559 |
|
95b36bfe7fc4
New locales for orders and lattices where the equivalence relation is not restricted to equality.
ballarin
parents:
27704
diff
changeset
|
2560 |
* New theory of factorial domains. |
95b36bfe7fc4
New locales for orders and lattices where the equivalence relation is not restricted to equality.
ballarin
parents:
27704
diff
changeset
|
2561 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2562 |
* Units_l_inv and Units_r_inv are now simp rules by default. |
27696 | 2563 |
INCOMPATIBILITY. Simplifier proof that require deletion of l_inv |
2564 |
and/or r_inv will now also require deletion of these lemmas. |
|
2565 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2566 |
* Renamed the following theorems, INCOMPATIBILITY: |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2567 |
|
27696 | 2568 |
UpperD ~> Upper_memD |
2569 |
LowerD ~> Lower_memD |
|
2570 |
least_carrier ~> least_closed |
|
2571 |
greatest_carrier ~> greatest_closed |
|
2572 |
greatest_Lower_above ~> greatest_Lower_below |
|
27717
21bbd410ba04
Generalised polynomial lemmas from cring to ring.
ballarin
parents:
27713
diff
changeset
|
2573 |
one_zero ~> carrier_one_zero |
21bbd410ba04
Generalised polynomial lemmas from cring to ring.
ballarin
parents:
27713
diff
changeset
|
2574 |
one_not_zero ~> carrier_one_not_zero (collision with assumption) |
27696 | 2575 |
|
27793 | 2576 |
|
30849 | 2577 |
*** HOL-Nominal *** |
2578 |
||
30855 | 2579 |
* Nominal datatypes can now contain type-variables. |
2580 |
||
2581 |
* Commands 'nominal_inductive' and 'equivariance' work with local |
|
2582 |
theory targets. |
|
2583 |
||
2584 |
* Nominal primrec can now works with local theory targets and its |
|
2585 |
specification syntax now conforms to the general format as seen in |
|
2586 |
'inductive' etc. |
|
2587 |
||
2588 |
* Method "perm_simp" honours the standard simplifier attributes |
|
2589 |
(no_asm), (no_asm_use) etc. |
|
2590 |
||
2591 |
* The new predicate #* is defined like freshness, except that on the |
|
2592 |
left hand side can be a set or list of atoms. |
|
2593 |
||
2594 |
* Experimental command 'nominal_inductive2' derives strong induction |
|
2595 |
principles for inductive definitions. In contrast to |
|
2596 |
'nominal_inductive', which can only deal with a fixed number of |
|
2597 |
binders, it can deal with arbitrary expressions standing for sets of |
|
2598 |
atoms to be avoided. The only inductive definition we have at the |
|
2599 |
moment that needs this generalisation is the typing rule for Lets in |
|
2600 |
the algorithm W: |
|
2601 |
||
2602 |
Gamma |- t1 : T1 (x,close Gamma T1)::Gamma |- t2 : T2 x#Gamma |
|
2603 |
----------------------------------------------------------------- |
|
2604 |
Gamma |- Let x be t1 in t2 : T2 |
|
2605 |
||
2606 |
In this rule one wants to avoid all the binders that are introduced by |
|
2607 |
"close Gamma T1". We are looking for other examples where this |
|
2608 |
feature might be useful. Please let us know. |
|
30849 | 2609 |
|
2610 |
||
30176
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2611 |
*** HOLCF *** |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2612 |
|
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2613 |
* Reimplemented the simplification procedure for proving continuity |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2614 |
subgoals. The new simproc is extensible; users can declare additional |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2615 |
continuity introduction rules with the attribute [cont2cont]. |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2616 |
|
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2617 |
* The continuity simproc now uses a different introduction rule for |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2618 |
solving continuity subgoals on terms with lambda abstractions. In |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2619 |
some rare cases the new simproc may fail to solve subgoals that the |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2620 |
old one could solve, and "simp add: cont2cont_LAM" may be necessary. |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2621 |
Potential INCOMPATIBILITY. |
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2622 |
|
30847 | 2623 |
* Command 'fixrec': specification syntax now conforms to the general |
30855 | 2624 |
format as seen in 'inductive' etc. See src/HOLCF/ex/Fixrec_ex.thy for |
2625 |
examples. INCOMPATIBILITY. |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2626 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2627 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2628 |
*** ZF *** |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2629 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2630 |
* Proof of Zorn's Lemma for partial orders. |
30176
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2631 |
|
78610979b3c6
add news for HOLCF; fixed some typos and inaccuracies
huffman
parents:
30163
diff
changeset
|
2632 |
|
27246
df85326af57c
* Rules and tactics that read instantiations now demand a proper context;
wenzelm
parents:
27200
diff
changeset
|
2633 |
*** ML *** |
28088
723735f2d73a
* Name bindings in higher specification mechanisms;
wenzelm
parents:
28085
diff
changeset
|
2634 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2635 |
* Multithreading for Poly/ML 5.1/5.2 is no longer supported, only for |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2636 |
Poly/ML 5.2.1 or later. Important note: the TimeLimit facility |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2637 |
depends on multithreading, so timouts will not work before Poly/ML |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2638 |
5.2.1! |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2639 |
|
29161
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
2640 |
* High-level support for concurrent ML programming, see |
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
2641 |
src/Pure/Cuncurrent. The data-oriented model of "future values" is |
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
2642 |
particularly convenient to organize independent functional |
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
2643 |
computations. The concept of "synchronized variables" provides a |
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
2644 |
higher-order interface for components with shared state, avoiding the |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2645 |
delicate details of mutexes and condition variables. (Requires |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2646 |
Poly/ML 5.2.1 or later.) |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2647 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2648 |
* ML bindings produced via Isar commands are stored within the Isar |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2649 |
context (theory or proof). Consequently, commands like 'use' and 'ML' |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2650 |
become thread-safe and work with undo as expected (concerning |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2651 |
top-level bindings, not side-effects on global references). |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2652 |
INCOMPATIBILITY, need to provide proper Isar context when invoking the |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2653 |
compiler at runtime; really global bindings need to be given outside a |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2654 |
theory. (Requires Poly/ML 5.2 or later.) |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2655 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2656 |
* Command 'ML_prf' is analogous to 'ML' but works within a proof |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2657 |
context. Top-level ML bindings are stored within the proof context in |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2658 |
a purely sequential fashion, disregarding the nested proof structure. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2659 |
ML bindings introduced by 'ML_prf' are discarded at the end of the |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2660 |
proof. (Requires Poly/ML 5.2 or later.) |
29161
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
2661 |
|
30530 | 2662 |
* Simplified ML attribute and method setup, cf. functions Attrib.setup |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2663 |
and Method.setup, as well as Isar commands 'attribute_setup' and |
30547 | 2664 |
'method_setup'. INCOMPATIBILITY for 'method_setup', need to simplify |
2665 |
existing code accordingly, or use plain 'setup' together with old |
|
2666 |
Method.add_method. |
|
30530 | 2667 |
|
28294 | 2668 |
* Simplified ML oracle interface Thm.add_oracle promotes 'a -> cterm |
2669 |
to 'a -> thm, while results are always tagged with an authentic oracle |
|
2670 |
name. The Isar command 'oracle' is now polymorphic, no argument type |
|
2671 |
is specified. INCOMPATIBILITY, need to simplify existing oracle code |
|
2672 |
accordingly. Note that extra performance may be gained by producing |
|
2673 |
the cterm carefully, avoiding slow Thm.cterm_of. |
|
2674 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2675 |
* Simplified interface for defining document antiquotations via |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2676 |
ThyOutput.antiquotation, ThyOutput.output, and optionally |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2677 |
ThyOutput.maybe_pretty_source. INCOMPATIBILITY, need to simplify user |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2678 |
antiquotations accordingly, see src/Pure/Thy/thy_output.ML for common |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2679 |
examples. |
28099
fb16a07d6580
* Generic Toplevel.add_hook interface allows to analyze the result of
wenzelm
parents:
28089
diff
changeset
|
2680 |
|
30395
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
wenzelm
parents:
30326
diff
changeset
|
2681 |
* More systematic treatment of long names, abstract name bindings, and |
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
wenzelm
parents:
30326
diff
changeset
|
2682 |
name space operations. Basic operations on qualified names have been |
30399 | 2683 |
move from structure NameSpace to Long_Name, e.g. Long_Name.base_name, |
30395
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
wenzelm
parents:
30326
diff
changeset
|
2684 |
Long_Name.append. Old type bstring has been mostly replaced by |
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
wenzelm
parents:
30326
diff
changeset
|
2685 |
abstract type binding (see structure Binding), which supports precise |
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2686 |
qualification by packages and local theory targets, as well as proper |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2687 |
tracking of source positions. INCOMPATIBILITY, need to wrap old |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2688 |
bstring values into Binding.name, or better pass through abstract |
30399 | 2689 |
bindings everywhere. See further src/Pure/General/long_name.ML, |
30395
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
wenzelm
parents:
30326
diff
changeset
|
2690 |
src/Pure/General/binding.ML and src/Pure/General/name_space.ML |
f3103bd2b167
* More systematic treatment of long names, abstract name bindings, and name space operations.
wenzelm
parents:
30326
diff
changeset
|
2691 |
|
28089
66ae1926482a
* Result facts now refer to the *full* internal name;
wenzelm
parents:
28088
diff
changeset
|
2692 |
* Result facts (from PureThy.note_thms, ProofContext.note_thms, |
66ae1926482a
* Result facts now refer to the *full* internal name;
wenzelm
parents:
28088
diff
changeset
|
2693 |
LocalTheory.note etc.) now refer to the *full* internal name, not the |
66ae1926482a
* Result facts now refer to the *full* internal name;
wenzelm
parents:
28088
diff
changeset
|
2694 |
bstring as before. INCOMPATIBILITY, not detected by ML type-checking! |
66ae1926482a
* Result facts now refer to the *full* internal name;
wenzelm
parents:
28088
diff
changeset
|
2695 |
|
27287 | 2696 |
* Disposed old type and term read functions (Sign.read_def_typ, |
2697 |
Sign.read_typ, Sign.read_def_terms, Sign.read_term, |
|
2698 |
Thm.read_def_cterms, Thm.read_cterm etc.). INCOMPATIBILITY, should |
|
2699 |
use regular Syntax.read_typ, Syntax.read_term, Syntax.read_typ_global, |
|
27269 | 2700 |
Syntax.read_term_global etc.; see also OldGoals.read_term as last |
2701 |
resort for legacy applications. |
|
2702 |
||
30609
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
wenzelm
parents:
30577
diff
changeset
|
2703 |
* Disposed old declarations, tactics, tactic combinators that refer to |
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
wenzelm
parents:
30577
diff
changeset
|
2704 |
the simpset or claset of an implicit theory (such as Addsimps, |
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
wenzelm
parents:
30577
diff
changeset
|
2705 |
Simp_tac, SIMPSET). INCOMPATIBILITY, should use @{simpset} etc. in |
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
wenzelm
parents:
30577
diff
changeset
|
2706 |
embedded ML text, or local_simpset_of with a proper context passed as |
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
wenzelm
parents:
30577
diff
changeset
|
2707 |
explicit runtime argument. |
983e8b6e4e69
Disposed old declarations, tactics, tactic combinators that refer to the simpset or claset of an implicit theory;
wenzelm
parents:
30577
diff
changeset
|
2708 |
|
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2709 |
* Rules and tactics that read instantiations (read_instantiate, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2710 |
res_inst_tac, thin_tac, subgoal_tac etc.) now demand a proper proof |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2711 |
context, which is required for parsing and type-checking. Moreover, |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2712 |
the variables are specified as plain indexnames, not string encodings |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2713 |
thereof. INCOMPATIBILITY. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2714 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2715 |
* Generic Toplevel.add_hook interface allows to analyze the result of |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2716 |
transactions. E.g. see src/Pure/ProofGeneral/proof_general_pgip.ML |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2717 |
for theorem dependency output of transactions resulting in a new |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2718 |
theory state. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2719 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2720 |
* ML antiquotations: block-structured compilation context indicated by |
27391 | 2721 |
\<lbrace> ... \<rbrace>; additional antiquotation forms: |
2722 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2723 |
@{binding name} - basic name binding |
27519
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2724 |
@{let ?pat = term} - term abbreviation (HO matching) |
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2725 |
@{note name = fact} - fact abbreviation |
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2726 |
@{thm fact} - singleton fact (with attributes) |
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2727 |
@{thms fact} - general fact (with attributes) |
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2728 |
@{lemma prop by method} - singleton goal |
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2729 |
@{lemma prop by meth1 meth2} - singleton goal |
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2730 |
@{lemma prop1 ... propN by method} - general goal |
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2731 |
@{lemma prop1 ... propN by meth1 meth2} - general goal |
59b54d80d2ae
slightly improved @{lemma} (both for latex and ML);
wenzelm
parents:
27485
diff
changeset
|
2732 |
@{lemma (open) ...} - open derivation |
27380 | 2733 |
|
27246
df85326af57c
* Rules and tactics that read instantiations now demand a proper context;
wenzelm
parents:
27200
diff
changeset
|
2734 |
|
27979 | 2735 |
*** System *** |
2736 |
||
28248 | 2737 |
* The Isabelle "emacs" tool provides a specific interface to invoke |
2738 |
Proof General / Emacs, with more explicit failure if that is not |
|
2739 |
installed (the old isabelle-interface script silently falls back on |
|
2740 |
isabelle-process). The PROOFGENERAL_HOME setting determines the |
|
2741 |
installation location of the Proof General distribution. |
|
2742 |
||
27979 | 2743 |
* Isabelle/lib/classes/Pure.jar provides basic support to integrate |
2744 |
the Isabelle process into a JVM/Scala application. See |
|
2745 |
Isabelle/lib/jedit/plugin for a minimal example. (The obsolete Java |
|
2746 |
process wrapper has been discontinued.) |
|
2747 |
||
30845
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2748 |
* Added homegrown Isabelle font with unicode layout, see lib/fonts. |
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2749 |
|
9a887484de53
misc cleanup and rearrangements for Isabelle2009 release;
wenzelm
parents:
30741
diff
changeset
|
2750 |
* Various status messages (with exact source position information) are |
27979 | 2751 |
emitted, if proper markup print mode is enabled. This allows |
2752 |
user-interface components to provide detailed feedback on internal |
|
2753 |
prover operations. |
|
2754 |
||
2755 |
||
27143 | 2756 |
|
27008 | 2757 |
New in Isabelle2008 (June 2008) |
2758 |
------------------------------- |
|
25464
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
wenzelm
parents:
25459
diff
changeset
|
2759 |
|
25522 | 2760 |
*** General *** |
2761 |
||
27061 | 2762 |
* The Isabelle/Isar Reference Manual (isar-ref) has been reorganized |
2763 |
and updated, with formally checked references as hyperlinks. |
|
2764 |
||
25994 | 2765 |
* Theory loader: use_thy (and similar operations) no longer set the |
2766 |
implicit ML context, which was occasionally hard to predict and in |
|
2767 |
conflict with concurrency. INCOMPATIBILITY, use ML within Isar which |
|
2768 |
provides a proper context already. |
|
2769 |
||
26323
73efc70edeef
theory loader: discontinued *attached* ML scripts;
wenzelm
parents:
26315
diff
changeset
|
2770 |
* Theory loader: old-style ML proof scripts being *attached* to a thy |
73efc70edeef
theory loader: discontinued *attached* ML scripts;
wenzelm
parents:
26315
diff
changeset
|
2771 |
file are no longer supported. INCOMPATIBILITY, regular 'uses' and |
73efc70edeef
theory loader: discontinued *attached* ML scripts;
wenzelm
parents:
26315
diff
changeset
|
2772 |
'use' within a theory file will do the job. |
73efc70edeef
theory loader: discontinued *attached* ML scripts;
wenzelm
parents:
26315
diff
changeset
|
2773 |
|
26650 | 2774 |
* Name space merge now observes canonical order, i.e. the second space |
2775 |
is inserted into the first one, while existing entries in the first |
|
26659 | 2776 |
space take precedence. INCOMPATIBILITY in rare situations, may try to |
26650 | 2777 |
swap theory imports. |
2778 |
||
27067 | 2779 |
* Syntax: symbol \<chi> is now considered a letter. Potential |
2780 |
INCOMPATIBILITY in identifier syntax etc. |
|
2781 |
||
2782 |
* Outer syntax: string tokens no longer admit escaped white space, |
|
2783 |
which was an accidental (undocumented) feature. INCOMPATIBILITY, use |
|
2784 |
white space without escapes. |
|
2785 |
||
2786 |
* Outer syntax: string tokens may contain arbitrary character codes |
|
2787 |
specified via 3 decimal digits (as in SML). E.g. "foo\095bar" for |
|
2788 |
"foo_bar". |
|
2789 |
||
25522 | 2790 |
|
25502 | 2791 |
*** Pure *** |
2792 |
||
26718 | 2793 |
* Context-dependent token translations. Default setup reverts locally |
2794 |
fixed variables, and adds hilite markup for undeclared frees. |
|
2795 |
||
26681 | 2796 |
* Unused theorems can be found using the new command 'unused_thms'. |
2797 |
There are three ways of invoking it: |
|
2798 |
||
2799 |
(1) unused_thms |
|
2800 |
Only finds unused theorems in the current theory. |
|
2801 |
||
2802 |
(2) unused_thms thy_1 ... thy_n - |
|
2803 |
Finds unused theorems in the current theory and all of its ancestors, |
|
2804 |
excluding the theories thy_1 ... thy_n and all of their ancestors. |
|
2805 |
||
2806 |
(3) unused_thms thy_1 ... thy_n - thy'_1 ... thy'_m |
|
2807 |
Finds unused theorems in the theories thy'_1 ... thy'_m and all of |
|
2808 |
their ancestors, excluding the theories thy_1 ... thy_n and all of |
|
2809 |
their ancestors. |
|
2810 |
||
26718 | 2811 |
In order to increase the readability of the list produced by |
2812 |
unused_thms, theorems that have been created by a particular instance |
|
26874 | 2813 |
of a theory command such as 'inductive' or 'function' are considered |
2814 |
to belong to the same "group", meaning that if at least one theorem in |
|
26718 | 2815 |
this group is used, the other theorems in the same group are no longer |
2816 |
reported as unused. Moreover, if all theorems in the group are |
|
2817 |
unused, only one theorem in the group is displayed. |
|
2818 |
||
2819 |
Note that proof objects have to be switched on in order for |
|
2820 |
unused_thms to work properly (i.e. !proofs must be >= 1, which is |
|
26874 | 2821 |
usually the case when using Proof General with the default settings). |
26681 | 2822 |
|
26650 | 2823 |
* Authentic naming of facts disallows ad-hoc overwriting of previous |
2824 |
theorems within the same name space. INCOMPATIBILITY, need to remove |
|
2825 |
duplicate fact bindings, or even accidental fact duplications. Note |
|
2826 |
that tools may maintain dynamically scoped facts systematically, using |
|
2827 |
PureThy.add_thms_dynamic. |
|
2828 |
||
26660 | 2829 |
* Command 'hide' now allows to hide from "fact" name space as well. |
2830 |
||
26496
49ae9456eba9
purely functional setup of claset/simpset/clasimpset;
wenzelm
parents:
26495
diff
changeset
|
2831 |
* Eliminated destructive theorem database, simpset, claset, and |
49ae9456eba9
purely functional setup of claset/simpset/clasimpset;
wenzelm
parents:
26495
diff
changeset
|
2832 |
clasimpset. Potential INCOMPATIBILITY, really need to observe linear |
49ae9456eba9
purely functional setup of claset/simpset/clasimpset;
wenzelm
parents:
26495
diff
changeset
|
2833 |
update of theories within ML code. |
26479 | 2834 |
|
26955
ebbaa935eae0
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory.
wenzelm
parents:
26925
diff
changeset
|
2835 |
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory. |
ebbaa935eae0
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory.
wenzelm
parents:
26925
diff
changeset
|
2836 |
INCOMPATIBILITY, object-logics depending on former Pure require |
ebbaa935eae0
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory.
wenzelm
parents:
26925
diff
changeset
|
2837 |
additional setup PureThy.old_appl_syntax_setup; object-logics |
ebbaa935eae0
* Eliminated theory ProtoPure and CPure, leaving just one Pure theory.
wenzelm
parents:
26925
diff
changeset
|
2838 |
depending on former CPure need to refer to Pure. |
26650 | 2839 |
|
26495 | 2840 |
* Commands 'use' and 'ML' are now purely functional, operating on |
26479 | 2841 |
theory/local_theory. Removed former 'ML_setup' (on theory), use 'ML' |
2842 |
instead. Added 'ML_val' as mere diagnostic replacement for 'ML'. |
|
2843 |
INCOMPATIBILITY. |
|
2844 |
||
26874 | 2845 |
* Command 'setup': discontinued implicit version with ML reference. |
26434 | 2846 |
|
25970
9053fd546501
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs here;
wenzelm
parents:
25961
diff
changeset
|
2847 |
* Instantiation target allows for simultaneous specification of class |
9053fd546501
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs here;
wenzelm
parents:
25961
diff
changeset
|
2848 |
instance operations together with an instantiation proof. |
9053fd546501
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs here;
wenzelm
parents:
25961
diff
changeset
|
2849 |
Type-checking phase allows to refer to class operations uniformly. |
27067 | 2850 |
See src/HOL/Complex/Complex.thy for an Isar example and |
2851 |
src/HOL/Library/Eval.thy for an ML example. |
|
25502 | 2852 |
|
26201
d3363a854708
indexing literal facts: exclude background context;
wenzelm
parents:
26197
diff
changeset
|
2853 |
* Indexing of literal facts: be more serious about including only |
d3363a854708
indexing literal facts: exclude background context;
wenzelm
parents:
26197
diff
changeset
|
2854 |
facts from the visible specification/proof context, but not the |
d3363a854708
indexing literal facts: exclude background context;
wenzelm
parents:
26197
diff
changeset
|
2855 |
background context (locale etc.). Affects `prop` notation and method |
d3363a854708
indexing literal facts: exclude background context;
wenzelm
parents:
26197
diff
changeset
|
2856 |
"fact". INCOMPATIBILITY: need to name facts explicitly in rare |
d3363a854708
indexing literal facts: exclude background context;
wenzelm
parents:
26197
diff
changeset
|
2857 |
situations. |
d3363a854708
indexing literal facts: exclude background context;
wenzelm
parents:
26197
diff
changeset
|
2858 |
|
26925
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
wenzelm
parents:
26920
diff
changeset
|
2859 |
* Method "cases", "induct", "coinduct": removed obsolete/undocumented |
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
wenzelm
parents:
26920
diff
changeset
|
2860 |
"(open)" option, which used to expose internal bound variables to the |
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
wenzelm
parents:
26920
diff
changeset
|
2861 |
proof text. |
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
wenzelm
parents:
26920
diff
changeset
|
2862 |
|
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
wenzelm
parents:
26920
diff
changeset
|
2863 |
* Isar statements: removed obsolete case "rule_context". |
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
wenzelm
parents:
26920
diff
changeset
|
2864 |
INCOMPATIBILITY, better use explicit fixes/assumes. |
ce964f0df281
* Method "cases", "induct", "coinduct": removed obsolete "(open)" option;
wenzelm
parents:
26920
diff
changeset
|
2865 |
|
26874 | 2866 |
* Locale proofs: default proof step now includes 'unfold_locales'; |
2867 |
hence 'proof' without argument may be used to unfold locale |
|
2868 |
predicates. |
|
26765 | 2869 |
|
2870 |
||
26762 | 2871 |
*** Document preparation *** |
2872 |
||
26914 | 2873 |
* Simplified pdfsetup.sty: color/hyperref is used unconditionally for |
2874 |
both pdf and dvi (hyperlinks usually work in xdvi as well); removed |
|
2875 |
obsolete thumbpdf setup (contemporary PDF viewers do this on the |
|
2876 |
spot); renamed link color from "darkblue" to "linkcolor" (default |
|
26920 | 2877 |
value unchanged, can be redefined via \definecolor); no longer sets |
2878 |
"a4paper" option (unnecessary or even intrusive). |
|
26914 | 2879 |
|
27008 | 2880 |
* Antiquotation @{lemma A method} proves proposition A by the given |
2881 |
method (either a method name or a method name plus (optional) method |
|
2882 |
arguments in parentheses) and prints A just like @{prop A}. |
|
26762 | 2883 |
|
2884 |
||
25464
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
wenzelm
parents:
25459
diff
changeset
|
2885 |
*** HOL *** |
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
wenzelm
parents:
25459
diff
changeset
|
2886 |
|
27067 | 2887 |
* New primrec package. Specification syntax conforms in style to |
2888 |
definition/function/.... No separate induction rule is provided. The |
|
2889 |
"primrec" command distinguishes old-style and new-style specifications |
|
2890 |
by syntax. The former primrec package is now named OldPrimrecPackage. |
|
2891 |
When adjusting theories, beware: constants stemming from new-style |
|
2892 |
primrec specifications have authentic syntax. |
|
2893 |
||
2894 |
* Metis prover is now an order of magnitude faster, and also works |
|
2895 |
with multithreading. |
|
2896 |
||
2897 |
* Metis: the maximum number of clauses that can be produced from a |
|
2898 |
theorem is now given by the attribute max_clauses. Theorems that |
|
2899 |
exceed this number are ignored, with a warning printed. |
|
2900 |
||
2901 |
* Sledgehammer no longer produces structured proofs by default. To |
|
2902 |
enable, declare [[sledgehammer_full = true]]. Attributes |
|
2903 |
reconstruction_modulus, reconstruction_sorts renamed |
|
2904 |
sledgehammer_modulus, sledgehammer_sorts. INCOMPATIBILITY. |
|
2905 |
||
27104
791607529f6d
rep_datatype command now takes list of constructors as input arguments
haftmann
parents:
27067
diff
changeset
|
2906 |
* Method "induct_scheme" derives user-specified induction rules |
27067 | 2907 |
from well-founded induction and completeness of patterns. This factors |
2908 |
out some operations that are done internally by the function package |
|
2909 |
and makes them available separately. See |
|
2910 |
src/HOL/ex/Induction_Scheme.thy for examples. |
|
2911 |
||
2912 |
* More flexible generation of measure functions for termination |
|
2913 |
proofs: Measure functions can be declared by proving a rule of the |
|
2914 |
form "is_measure f" and giving it the [measure_function] attribute. |
|
2915 |
The "is_measure" predicate is logically meaningless (always true), and |
|
2916 |
just guides the heuristic. To find suitable measure functions, the |
|
2917 |
termination prover sets up the goal "is_measure ?f" of the appropriate |
|
2918 |
type and generates all solutions by prolog-style backwards proof using |
|
2919 |
the declared rules. |
|
2920 |
||
2921 |
This setup also deals with rules like |
|
2922 |
||
2923 |
"is_measure f ==> is_measure (list_size f)" |
|
2924 |
||
2925 |
which accommodates nested datatypes that recurse through lists. |
|
2926 |
Similar rules are predeclared for products and option types. |
|
2927 |
||
26964
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2928 |
* Turned the type of sets "'a set" into an abbreviation for "'a => bool" |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2929 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2930 |
INCOMPATIBILITIES: |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2931 |
|
27008 | 2932 |
- Definitions of overloaded constants on sets have to be replaced by |
2933 |
definitions on => and bool. |
|
26964
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2934 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2935 |
- Some definitions of overloaded operators on sets can now be proved |
27008 | 2936 |
using the definitions of the operators on => and bool. Therefore, |
2937 |
the following theorems have been renamed: |
|
26964
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2938 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2939 |
subset_def -> subset_eq |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2940 |
psubset_def -> psubset_eq |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2941 |
set_diff_def -> set_diff_eq |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2942 |
Compl_def -> Compl_eq |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2943 |
Sup_set_def -> Sup_set_eq |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2944 |
Inf_set_def -> Inf_set_eq |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2945 |
sup_set_def -> sup_set_eq |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2946 |
inf_set_def -> inf_set_eq |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2947 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2948 |
- Due to the incompleteness of the HO unification algorithm, some |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2949 |
rules such as subst may require manual instantiation, if some of |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2950 |
the unknowns in the rule is a set. |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2951 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2952 |
- Higher order unification and forward proofs: |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2953 |
The proof pattern |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2954 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2955 |
have "P (S::'a set)" <...> |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2956 |
then have "EX S. P S" .. |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2957 |
|
27008 | 2958 |
no longer works (due to the incompleteness of the HO unification |
2959 |
algorithm) and must be replaced by the pattern |
|
26964
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2960 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2961 |
have "EX S. P S" |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2962 |
proof |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2963 |
show "P S" <...> |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2964 |
qed |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2965 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2966 |
- Calculational reasoning with subst (or similar rules): |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2967 |
The proof pattern |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2968 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2969 |
have "P (S::'a set)" <...> |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2970 |
also have "S = T" <...> |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2971 |
finally have "P T" . |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2972 |
|
27008 | 2973 |
no longer works (for similar reasons as the previous example) and |
2974 |
must be replaced by something like |
|
26964
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2975 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2976 |
have "P (S::'a set)" <...> |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2977 |
moreover have "S = T" <...> |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2978 |
ultimately have "P T" by simp |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2979 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2980 |
- Tactics or packages written in ML code: |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2981 |
Code performing pattern matching on types via |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2982 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2983 |
Type ("set", [T]) => ... |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2984 |
|
27008 | 2985 |
must be rewritten. Moreover, functions like strip_type or |
2986 |
binder_types no longer return the right value when applied to a |
|
2987 |
type of the form |
|
26964
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2988 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2989 |
T1 => ... => Tn => U => bool |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2990 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2991 |
rather than |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2992 |
|
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2993 |
T1 => ... => Tn => U set |
df1f238a05f7
Added entry explaining incompatibilities introduced by replacing sets by predicates.
berghofe
parents:
26955
diff
changeset
|
2994 |
|
26874 | 2995 |
* Merged theories Wellfounded_Recursion, Accessible_Part and |
27067 | 2996 |
Wellfounded_Relations to theory Wellfounded. |
26748
4d51ddd6aa5c
Merged theories about wellfoundedness into one: Wellfounded.thy
krauss
parents:
26724
diff
changeset
|
2997 |
|
26513 | 2998 |
* Explicit class "eq" for executable equality. INCOMPATIBILITY. |
2999 |
||
26874 | 3000 |
* Class finite no longer treats UNIV as class parameter. Use class |
3001 |
enum from theory Library/Enum instead to achieve a similar effect. |
|
26445 | 3002 |
INCOMPATIBILITY. |
3003 |
||
26874 | 3004 |
* Theory List: rule list_induct2 now has explicitly named cases "Nil" |
3005 |
and "Cons". INCOMPATIBILITY. |
|
3006 |
||
26422
d5883907c514
HOL (and FOL): renamed variables in rules imp_elim and swap;
wenzelm
parents:
26401
diff
changeset
|
3007 |
* HOL (and FOL): renamed variables in rules imp_elim and swap. |
d5883907c514
HOL (and FOL): renamed variables in rules imp_elim and swap;
wenzelm
parents:
26401
diff
changeset
|
3008 |
Potential INCOMPATIBILITY. |
d5883907c514
HOL (and FOL): renamed variables in rules imp_elim and swap;
wenzelm
parents:
26401
diff
changeset
|
3009 |
|
26874 | 3010 |
* Theory Product_Type: duplicated lemmas split_Pair_apply and |
3011 |
injective_fst_snd removed, use split_eta and prod_eqI instead. |
|
3012 |
Renamed upd_fst to apfst and upd_snd to apsnd. INCOMPATIBILITY. |
|
26355 | 3013 |
|
26335
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3014 |
* Theory Nat: removed redundant lemmas that merely duplicate lemmas of |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3015 |
the same name in theory Orderings: |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3016 |
|
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3017 |
less_trans |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3018 |
less_linear |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3019 |
le_imp_less_or_eq |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3020 |
le_less_trans |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3021 |
less_le_trans |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3022 |
less_not_sym |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3023 |
less_asym |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3024 |
|
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3025 |
Renamed less_imp_le to less_imp_le_nat, and less_irrefl to |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3026 |
less_irrefl_nat. Potential INCOMPATIBILITY due to more general types |
961bbcc9d85b
removed redundant Nat.less_not_sym, Nat.less_asym;
wenzelm
parents:
26333
diff
changeset
|
3027 |
and different variable names. |
26315
cb3badaa192e
removed redundant less_trans, less_linear, le_imp_less_or_eq, le_less_trans, less_le_trans (cf. Orderings.thy);
wenzelm
parents:
26231
diff
changeset
|
3028 |
|
26231 | 3029 |
* Library/Option_ord.thy: Canonical order on option type. |
3030 |
||
27008 | 3031 |
* Library/RBT.thy: Red-black trees, an efficient implementation of |
3032 |
finite maps. |
|
26197 | 3033 |
|
26231 | 3034 |
* Library/Countable.thy: Type class for countable types. |
3035 |
||
26180
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3036 |
* Theory Int: The representation of numerals has changed. The infix |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3037 |
operator BIT and the bit datatype with constructors B0 and B1 have |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3038 |
disappeared. INCOMPATIBILITY, use "Int.Bit0 x" and "Int.Bit1 y" in |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3039 |
place of "x BIT bit.B0" and "y BIT bit.B1", respectively. Theorems |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3040 |
involving BIT, B0, or B1 have been renamed with "Bit0" or "Bit1" |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3041 |
accordingly. |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3042 |
|
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3043 |
* Theory Nat: definition of <= and < on natural numbers no longer |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3044 |
depend on well-founded relations. INCOMPATIBILITY. Definitions |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3045 |
le_def and less_def have disappeared. Consider lemmas not_less |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3046 |
[symmetric, where ?'a = nat] and less_eq [symmetric] instead. |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3047 |
|
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3048 |
* Theory Finite_Set: locales ACf, ACe, ACIf, ACIfSL and ACIfSLlin |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3049 |
(whose purpose mainly is for various fold_set functionals) have been |
26874 | 3050 |
abandoned in favor of the existing algebraic classes |
26180
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3051 |
ab_semigroup_mult, comm_monoid_mult, ab_semigroup_idem_mult, |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3052 |
lower_semilattice (resp. upper_semilattice) and linorder. |
26139 | 3053 |
INCOMPATIBILITY. |
26041
c2e15e65165f
locales ACf, ACIf, ACIfSL and ACIfSLlin have been abandoned in favour of the existing algebraic classes ab_semigroup_mult, ab_semigroup_idem_mult, lower_semilattice (resp. uper_semilattice) and linorder
haftmann
parents:
26013
diff
changeset
|
3054 |
|
26180
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3055 |
* Theory Transitive_Closure: induct and cases rules now declare proper |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3056 |
case_names ("base" and "step"). INCOMPATIBILITY. |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3057 |
|
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3058 |
* Theorem Inductive.lfp_ordinal_induct generalized to complete |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3059 |
lattices. The form set-specific version is available as |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3060 |
Inductive.lfp_ordinal_induct_set. |
26013
8764a1f1253b
Theorem Inductive.lfp_ordinal_induct generalized to complete lattices
haftmann
parents:
26006
diff
changeset
|
3061 |
|
26874 | 3062 |
* Renamed theorems "power.simps" to "power_int.simps". |
27067 | 3063 |
INCOMPATIBILITY. |
25961 | 3064 |
|
26180
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3065 |
* Class semiring_div provides basic abstract properties of semirings |
25942 | 3066 |
with division and modulo operations. Subsumes former class dvd_mod. |
3067 |
||
26180
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3068 |
* Merged theories IntDef, Numeral and IntArith into unified theory |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3069 |
Int. INCOMPATIBILITY. |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3070 |
|
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3071 |
* Theory Library/Code_Index: type "index" now represents natural |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3072 |
numbers rather than integers. INCOMPATIBILITY. |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3073 |
|
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3074 |
* New class "uminus" with operation "uminus" (split of from class |
cc85eaab20f6
Transitive_Closure: induct and cases rules now declare proper case_names;
wenzelm
parents:
26139
diff
changeset
|
3075 |
"minus" which now only has operation "minus", binary). |
25919
8b1c0d434824
joined theories IntDef, Numeral, IntArith to theory Int
haftmann
parents:
25900
diff
changeset
|
3076 |
INCOMPATIBILITY. |
8b1c0d434824
joined theories IntDef, Numeral, IntArith to theory Int
haftmann
parents:
25900
diff
changeset
|
3077 |
|
25522 | 3078 |
* Constants "card", "internal_split", "option_map" now with authentic |
25919
8b1c0d434824
joined theories IntDef, Numeral, IntArith to theory Int
haftmann
parents:
25900
diff
changeset
|
3079 |
syntax. INCOMPATIBILITY. |
25522 | 3080 |
|
3081 |
* Definitions subset_def, psubset_def, set_diff_def, Compl_def, |
|
3082 |
le_bool_def, less_bool_def, le_fun_def, less_fun_def, inf_bool_def, |
|
3083 |
sup_bool_def, Inf_bool_def, Sup_bool_def, inf_fun_def, sup_fun_def, |
|
3084 |
Inf_fun_def, Sup_fun_def, inf_set_def, sup_set_def, Inf_set_def, |
|
3085 |
Sup_set_def, le_def, less_def, option_map_def now with object |
|
25919
8b1c0d434824
joined theories IntDef, Numeral, IntArith to theory Int
haftmann
parents:
25900
diff
changeset
|
3086 |
equality. INCOMPATIBILITY. |
25464
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
wenzelm
parents:
25459
diff
changeset
|
3087 |
|
25705 | 3088 |
* Records. Removed K_record, and replaced it by pure lambda term |
25726
9728f319ffc6
* Metis prover an order of magnitude faster, works with multithreading.
wenzelm
parents:
25712
diff
changeset
|
3089 |
%x. c. The simplifier setup is now more robust against eta expansion. |
25705 | 3090 |
INCOMPATIBILITY: in cases explicitly referring to K_record. |
25464
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
wenzelm
parents:
25459
diff
changeset
|
3091 |
|
27067 | 3092 |
* Library/Multiset: {#a, b, c#} abbreviates {#a#} + {#b#} + {#c#}. |
3093 |
||
3094 |
* Library/ListVector: new theory of arithmetic vector operations. |
|
3095 |
||
3096 |
* Library/Order_Relation: new theory of various orderings as sets of |
|
3097 |
pairs. Defines preorders, partial orders, linear orders and |
|
3098 |
well-orders on sets and on types. |
|
26877 | 3099 |
|
25726
9728f319ffc6
* Metis prover an order of magnitude faster, works with multithreading.
wenzelm
parents:
25712
diff
changeset
|
3100 |
|
26197 | 3101 |
*** ZF *** |
3102 |
||
26874 | 3103 |
* Renamed some theories to allow to loading both ZF and HOL in the |
3104 |
same session: |
|
3105 |
||
3106 |
Datatype -> Datatype_ZF |
|
3107 |
Inductive -> Inductive_ZF |
|
3108 |
Int -> Int_ZF |
|
3109 |
IntDiv -> IntDiv_ZF |
|
3110 |
Nat -> Nat_ZF |
|
3111 |
List -> List_ZF |
|
3112 |
Main -> Main_ZF |
|
3113 |
||
3114 |
INCOMPATIBILITY: ZF theories that import individual theories below |
|
3115 |
Main might need to be adapted. Regular theory Main is still |
|
3116 |
available, as trivial extension of Main_ZF. |
|
26197 | 3117 |
|
3118 |
||
25737
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3119 |
*** ML *** |
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3120 |
|
27067 | 3121 |
* ML within Isar: antiquotation @{const name} or @{const |
3122 |
name(typargs)} produces statically-checked Const term. |
|
3123 |
||
26401
e7a94081dce7
Functor NamedThmsFun: data is available to the user as dynamic fact;
wenzelm
parents:
26387
diff
changeset
|
3124 |
* Functor NamedThmsFun: data is available to the user as dynamic fact |
26724
ff6ff3a9010e
NamedThmsFun: removed obsolete print command -- facts are accesible via dynamic name;
wenzelm
parents:
26718
diff
changeset
|
3125 |
(of the same name). Removed obsolete print command. |
26401
e7a94081dce7
Functor NamedThmsFun: data is available to the user as dynamic fact;
wenzelm
parents:
26387
diff
changeset
|
3126 |
|
27067 | 3127 |
* Removed obsolete "use_legacy_bindings" function. |
26188 | 3128 |
|
25737
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3129 |
* The ``print mode'' is now a thread-local value derived from a global |
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3130 |
template (the former print_mode reference), thus access becomes |
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3131 |
non-critical. The global print_mode reference is for session |
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3132 |
management only; user-code should use print_mode_value, |
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3133 |
print_mode_active, PrintMode.setmp etc. INCOMPATIBILITY. |
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3134 |
|
26874 | 3135 |
* Functions system/system_out provide a robust way to invoke external |
29161
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
3136 |
shell commands, with propagation of interrupts (requires Poly/ML |
9903e84a9c9c
* Proofs of are run in parallel on multi-core systems;
wenzelm
parents:
29145
diff
changeset
|
3137 |
5.2.1). Do not use OS.Process.system etc. from the basis library! |
26222
edf6473ac9e9
* system/system_out provides a robust way to invoke external shell
wenzelm
parents:
26218
diff
changeset
|
3138 |
|
25737
84c92fc48e36
``print mode'' is now a thread-local value derived from a global template;
wenzelm
parents:
25726
diff
changeset
|
3139 |
|
25626
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
wenzelm
parents:
25609
diff
changeset
|
3140 |
*** System *** |
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
wenzelm
parents:
25609
diff
changeset
|
3141 |
|
25971 | 3142 |
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs --- |
3143 |
in accordance with Proof General 3.7, which prefers GNU emacs. |
|
25970
9053fd546501
* Default settings: PROOFGENERAL_OPTIONS no longer impose xemacs here;
wenzelm
parents:
25961
diff
changeset
|
3144 |
|
25626
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
wenzelm
parents:
25609
diff
changeset
|
3145 |
* isatool tty runs Isabelle process with plain tty interaction; |
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
wenzelm
parents:
25609
diff
changeset
|
3146 |
optional line editor may be specified via ISABELLE_LINE_EDITOR |
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
wenzelm
parents:
25609
diff
changeset
|
3147 |
setting, the default settings attempt to locate "ledit" and "rlwrap". |
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
wenzelm
parents:
25609
diff
changeset
|
3148 |
|
25651 | 3149 |
* isatool browser now works with Cygwin as well, using general |
3150 |
"javapath" function defined in Isabelle process environment. |
|
3151 |
||
27067 | 3152 |
* YXML notation provides a simple and efficient alternative to |
3153 |
standard XML transfer syntax. See src/Pure/General/yxml.ML and |
|
3154 |
isatool yxml as described in the Isabelle system manual. |
|
25651 | 3155 |
|
25652 | 3156 |
* JVM class isabelle.IsabelleProcess (located in Isabelle/lib/classes) |
25651 | 3157 |
provides general wrapper for managing an Isabelle process in a robust |
3158 |
fashion, with ``cooked'' output from stdin/stderr. |
|
3159 |
||
25855 | 3160 |
* Rudimentary Isabelle plugin for jEdit (see Isabelle/lib/jedit), |
3161 |
based on Isabelle/JVM process wrapper (see Isabelle/lib/classes). |
|
3162 |
||
27067 | 3163 |
* Removed obsolete THIS_IS_ISABELLE_BUILD feature. NB: the documented |
3164 |
way of changing the user's settings is via |
|
3165 |
ISABELLE_HOME_USER/etc/settings, which is a fully featured bash |
|
3166 |
script. |
|
3167 |
||
3168 |
* Multithreading.max_threads := 0 refers to the number of actual CPU |
|
3169 |
cores of the underlying machine, which is a good starting point for |
|
3170 |
optimal performance tuning. The corresponding usedir option -M allows |
|
3171 |
"max" as an alias for "0". WARNING: does not work on certain versions |
|
3172 |
of Mac OS (with Poly/ML 5.1). |
|
3173 |
||
3174 |
* isabelle-process: non-ML sessions are run with "nice", to reduce the |
|
3175 |
adverse effect of Isabelle flooding interactive front-ends (notably |
|
3176 |
ProofGeneral / XEmacs). |
|
3177 |
||
25626
3000965b1fdf
* isatool tty runs Isabelle process with plain tty interaction;
wenzelm
parents:
25609
diff
changeset
|
3178 |
|
25464
0ca80ce89001
moved new NEWS from Isabelle2007 to this Isabelle version'';
wenzelm
parents:
25459
diff
changeset
|
3179 |
|
25429 | 3180 |
New in Isabelle2007 (November 2007) |
3181 |
----------------------------------- |
|
17754
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
wenzelm
parents:
17725
diff
changeset
|
3182 |
|
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
wenzelm
parents:
17725
diff
changeset
|
3183 |
*** General *** |
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
wenzelm
parents:
17725
diff
changeset
|
3184 |
|
22826 | 3185 |
* More uniform information about legacy features, notably a |
3186 |
warning/error of "Legacy feature: ...", depending on the state of the |
|
23367 | 3187 |
tolerate_legacy_features flag (default true). FUTURE INCOMPATIBILITY: |
3188 |
legacy features will disappear eventually. |
|
22826 | 3189 |
|
17918
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3190 |
* Theory syntax: the header format ``theory A = B + C:'' has been |
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3191 |
discontinued in favour of ``theory A imports B C begin''. Use isatool |
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3192 |
fixheaders to convert existing theory files. INCOMPATIBILITY. |
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3193 |
|
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3194 |
* Theory syntax: the old non-Isar theory file format has been |
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3195 |
discontinued altogether. Note that ML proof scripts may still be used |
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3196 |
with Isar theories; migration is usually quite simple with the ML |
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3197 |
function use_legacy_bindings. INCOMPATIBILITY. |
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3198 |
|
22871 | 3199 |
* Theory syntax: some popular names (e.g. 'class', 'declaration', |
3200 |
'fun', 'help', 'if') are now keywords. INCOMPATIBILITY, use double |
|
3201 |
quotes. |
|
19814
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
wenzelm
parents:
19783
diff
changeset
|
3202 |
|
23888
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3203 |
* Theory loader: be more serious about observing the static theory |
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3204 |
header specifications (including optional directories), but not the |
24172
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3205 |
accidental file locations of previously successful loads. The strict |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3206 |
update policy of former update_thy is now already performed by |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3207 |
use_thy, so the former has been removed; use_thys updates several |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3208 |
theories simultaneously, just as 'imports' within a theory header |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3209 |
specification, but without merging the results. Potential |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3210 |
INCOMPATIBILITY: may need to refine theory headers and commands |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3211 |
ROOT.ML which depend on load order. |
23888
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3212 |
|
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3213 |
* Theory loader: optional support for content-based file |
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3214 |
identification, instead of the traditional scheme of full physical |
23889 | 3215 |
path plus date stamp; configured by the ISABELLE_FILE_IDENT setting |
23888
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3216 |
(cf. the system manual). The new scheme allows to work with |
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3217 |
non-finished theories in persistent session images, such that source |
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3218 |
files may be moved later on without requiring reloads. |
babe337cce2d
* Theory loader: be more serious about observing the static theory header specifications;
wenzelm
parents:
23881
diff
changeset
|
3219 |
|
24187
8bdf5ca5871f
* Theory loader: old-style ML proof scripts are considered a legacy feature;
wenzelm
parents:
24172
diff
changeset
|
3220 |
* Theory loader: old-style ML proof scripts being *attached* to a thy |
8bdf5ca5871f
* Theory loader: old-style ML proof scripts are considered a legacy feature;
wenzelm
parents:
24172
diff
changeset
|
3221 |
file (with the same base name as the theory) are considered a legacy |
24800 | 3222 |
feature, which will disappear eventually. Even now, the theory loader |
3223 |
no longer maintains dependencies on such files. |
|
3224 |
||
3225 |
* Syntax: the scope for resolving ambiguities via type-inference is |
|
3226 |
now limited to individual terms, instead of whole simultaneous |
|
24234
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
wenzelm
parents:
24213
diff
changeset
|
3227 |
specifications as before. This greatly reduces the complexity of the |
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
wenzelm
parents:
24213
diff
changeset
|
3228 |
syntax module and improves flexibility by separating parsing and |
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
wenzelm
parents:
24213
diff
changeset
|
3229 |
type-checking. INCOMPATIBILITY: additional type-constraints (explicit |
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
wenzelm
parents:
24213
diff
changeset
|
3230 |
'fixes' etc.) are required in rare situations. |
4714e04fb8e9
* Syntax: scope for resolving ambiguities via type-inference is now limited to individual terms;
wenzelm
parents:
24213
diff
changeset
|
3231 |
|
25034 | 3232 |
* Syntax: constants introduced by new-style packages ('definition', |
3233 |
'abbreviation' etc.) are passed through the syntax module in |
|
3234 |
``authentic mode''. This means that associated mixfix annotations |
|
3235 |
really stick to such constants, independently of potential name space |
|
3236 |
ambiguities introduced later on. INCOMPATIBILITY: constants in parse |
|
3237 |
trees are represented slightly differently, may need to adapt syntax |
|
3238 |
translations accordingly. Use CONST marker in 'translations' and |
|
3239 |
@{const_syntax} antiquotation in 'parse_translation' etc. |
|
3240 |
||
17981
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
3241 |
* Legacy goal package: reduced interface to the bare minimum required |
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
3242 |
to keep existing proof scripts running. Most other user-level |
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
3243 |
functions are now part of the OldGoals structure, which is *not* open |
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
3244 |
by default (consider isatool expandshort before open OldGoals). |
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
3245 |
Removed top_sg, prin, printyp, pprint_term/typ altogether, because |
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
3246 |
these tend to cause confusion about the actual goal (!) context being |
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
3247 |
used here, which is not necessarily the same as the_context(). |
17918
93e26302733e
* Theory syntax: discontinued non-Isar format and old Isar headers;
wenzelm
parents:
17890
diff
changeset
|
3248 |
|
23379
d0e3f790bd73
updated 'find_theorems' -- moved ProofGeneral specifics to ProofGeneral/CHANGES;
wenzelm
parents:
23377
diff
changeset
|
3249 |
* Command 'find_theorems': supports "*" wild-card in "name:" |
d0e3f790bd73
updated 'find_theorems' -- moved ProofGeneral specifics to ProofGeneral/CHANGES;
wenzelm
parents:
23377
diff
changeset
|
3250 |
criterion; "with_dups" option. Certain ProofGeneral versions might |
d0e3f790bd73
updated 'find_theorems' -- moved ProofGeneral specifics to ProofGeneral/CHANGES;
wenzelm
parents:
23377
diff
changeset
|
3251 |
support a specific search form (see ProofGeneral/CHANGES). |
22965 | 3252 |
|
20370 | 3253 |
* The ``prems limit'' option (cf. ProofContext.prems_limit) is now -1 |
3254 |
by default, which means that "prems" (and also "fixed variables") are |
|
3255 |
suppressed from proof state output. Note that the ProofGeneral |
|
3256 |
settings mechanism allows to change and save options persistently, but |
|
3257 |
older versions of Isabelle will fail to start up if a negative prems |
|
3258 |
limit is imposed. |
|
3259 |
||
21308
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
wenzelm
parents:
21265
diff
changeset
|
3260 |
* Local theory targets may be specified by non-nested blocks of |
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
wenzelm
parents:
21265
diff
changeset
|
3261 |
``context/locale/class ... begin'' followed by ``end''. The body may |
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
wenzelm
parents:
21265
diff
changeset
|
3262 |
contain definitions, theorems etc., including any derived mechanism |
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
wenzelm
parents:
21265
diff
changeset
|
3263 |
that has been implemented on top of these primitives. This concept |
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
wenzelm
parents:
21265
diff
changeset
|
3264 |
generalizes the existing ``theorem (in ...)'' towards more versatility |
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
wenzelm
parents:
21265
diff
changeset
|
3265 |
and scalability. |
73883a528b26
* Local theory targets ``context/locale/class ... begin'' followed by ``end''.
wenzelm
parents:
21265
diff
changeset
|
3266 |
|
21960
0574f192b78a
* Proof General: proper undo of final 'end'; discontinued Isabelle/classic;
wenzelm
parents:
21896
diff
changeset
|
3267 |
* Proof General interface: proper undo of final 'end' command; |
0574f192b78a
* Proof General: proper undo of final 'end'; discontinued Isabelle/classic;
wenzelm
parents:
21896
diff
changeset
|
3268 |
discontinued Isabelle/classic mode (ML proof scripts). |
0574f192b78a
* Proof General: proper undo of final 'end'; discontinued Isabelle/classic;
wenzelm
parents:
21896
diff
changeset
|
3269 |
|
17754
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
wenzelm
parents:
17725
diff
changeset
|
3270 |
|
17865 | 3271 |
*** Document preparation *** |
3272 |
||
21717 | 3273 |
* Added antiquotation @{theory name} which prints the given name, |
3274 |
after checking that it refers to a valid ancestor theory in the |
|
3275 |
current context. |
|
21339 | 3276 |
|
17869 | 3277 |
* Added antiquotations @{ML_type text} and @{ML_struct text} which |
3278 |
check the given source text as ML type/structure, printing verbatim. |
|
17865 | 3279 |
|
21717 | 3280 |
* Added antiquotation @{abbrev "c args"} which prints the abbreviation |
3281 |
"c args == rhs" given in the current context. (Any number of |
|
21735 | 3282 |
arguments may be given on the LHS.) |
21717 | 3283 |
|
3284 |
||
17779 | 3285 |
*** Pure *** |
3286 |
||
24800 | 3287 |
* The 'class' package offers a combination of axclass and locale to |
25129 | 3288 |
achieve Haskell-like type classes in Isabelle. Definitions and |
3289 |
theorems within a class context produce both relative results (with |
|
3290 |
implicit parameters according to the locale context), and polymorphic |
|
3291 |
constants with qualified polymorphism (according to the class |
|
3292 |
context). Within the body context of a 'class' target, a separate |
|
3293 |
syntax layer ("user space type system") takes care of converting |
|
3294 |
between global polymorphic consts and internal locale representation. |
|
25177 | 3295 |
See src/HOL/ex/Classpackage.thy for examples (as well as main HOL). |
25184 | 3296 |
"isatool doc classes" provides a tutorial. |
20807 | 3297 |
|
25199 | 3298 |
* Generic code generator framework allows to generate executable |
24800 | 3299 |
code for ML and Haskell (including Isabelle classes). A short usage |
3300 |
sketch: |
|
20188
8b22026445af
added notes on class_package.ML and codegen_package.ML
haftmann
parents:
20169
diff
changeset
|
3301 |
|
8b22026445af
added notes on class_package.ML and codegen_package.ML
haftmann
parents:
20169
diff
changeset
|
3302 |
internal compilation: |
25199 | 3303 |
export_code <list of constants (term syntax)> in SML |
20453
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3304 |
writing SML code to a file: |
25199 | 3305 |
export_code <list of constants (term syntax)> in SML <filename> |
22735 | 3306 |
writing OCaml code to a file: |
25199 | 3307 |
export_code <list of constants (term syntax)> in OCaml <filename> |
20188
8b22026445af
added notes on class_package.ML and codegen_package.ML
haftmann
parents:
20169
diff
changeset
|
3308 |
writing Haskell code to a bunch of files: |
25199 | 3309 |
export_code <list of constants (term syntax)> in Haskell <filename> |
3310 |
||
3311 |
evaluating closed propositions to True/False using code generation: |
|
25184 | 3312 |
method ``eval'' |
3313 |
||
3314 |
Reasonable default setup of framework in HOL. |
|
20453
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3315 |
|
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3316 |
Theorem attributs for selecting and transforming function equations theorems: |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3317 |
|
22845 | 3318 |
[code fun]: select a theorem as function equation for a specific constant |
3319 |
[code fun del]: deselect a theorem as function equation for a specific constant |
|
3320 |
[code inline]: select an equation theorem for unfolding (inlining) in place |
|
3321 |
[code inline del]: deselect an equation theorem for unfolding (inlining) in place |
|
20453
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3322 |
|
22735 | 3323 |
User-defined serializations (target in {SML, OCaml, Haskell}): |
20453
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3324 |
|
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3325 |
code_const <and-list of constants (term syntax)> |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3326 |
{(target) <and-list of const target syntax>}+ |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3327 |
|
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3328 |
code_type <and-list of type constructors> |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3329 |
{(target) <and-list of type target syntax>}+ |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3330 |
|
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3331 |
code_instance <and-list of instances> |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3332 |
{(target)}+ |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3333 |
where instance ::= <type constructor> :: <class> |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3334 |
|
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3335 |
code_class <and_list of classes> |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3336 |
{(target) <and-list of class target syntax>}+ |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3337 |
where class target syntax ::= <class name> {where {<classop> == <target syntax>}+}? |
855f07fabd76
final syntax for some Isar code generator keywords
haftmann
parents:
20375
diff
changeset
|
3338 |
|
25199 | 3339 |
code_instance and code_class only are effective to target Haskell. |
22735 | 3340 |
|
25177 | 3341 |
For example usage see src/HOL/ex/Codegenerator.thy and |
3342 |
src/HOL/ex/Codegenerator_Pretty.thy. A separate tutorial on code |
|
24800 | 3343 |
generation from Isabelle/HOL theories is available via "isatool doc |
3344 |
codegen". |
|
20188
8b22026445af
added notes on class_package.ML and codegen_package.ML
haftmann
parents:
20169
diff
changeset
|
3345 |
|
25129 | 3346 |
* Code generator: consts in 'consts_code' Isar commands are now |
3347 |
referred to by usual term syntax (including optional type |
|
3348 |
annotations). |
|
3349 |
||
19254 | 3350 |
* Command 'no_translations' removes translation rules from theory |
3351 |
syntax. |
|
3352 |
||
19625
285771cec083
* Pure: overloaded definitions are now actually checked for acyclic dependencies;
wenzelm
parents:
19587
diff
changeset
|
3353 |
* Overloaded definitions are now actually checked for acyclic |
19714 | 3354 |
dependencies. The overloading scheme is slightly more general than |
3355 |
that of Haskell98, although Isabelle does not demand an exact |
|
3356 |
correspondence to type class and instance declarations. |
|
3357 |
INCOMPATIBILITY, use ``defs (unchecked overloaded)'' to admit more |
|
3358 |
exotic versions of overloading -- at the discretion of the user! |
|
19711 | 3359 |
|
3360 |
Polymorphic constants are represented via type arguments, i.e. the |
|
3361 |
instantiation that matches an instance against the most general |
|
3362 |
declaration given in the signature. For example, with the declaration |
|
3363 |
c :: 'a => 'a => 'a, an instance c :: nat => nat => nat is represented |
|
3364 |
as c(nat). Overloading is essentially simultaneous structural |
|
3365 |
recursion over such type arguments. Incomplete specification patterns |
|
19714 | 3366 |
impose global constraints on all occurrences, e.g. c('a * 'a) on the |
19715 | 3367 |
LHS means that more general c('a * 'b) will be disallowed on any RHS. |
19714 | 3368 |
Command 'print_theory' outputs the normalized system of recursive |
3369 |
equations, see section "definitions". |
|
19625
285771cec083
* Pure: overloaded definitions are now actually checked for acyclic dependencies;
wenzelm
parents:
19587
diff
changeset
|
3370 |
|
24086 | 3371 |
* Configuration options are maintained within the theory or proof |
3372 |
context (with name and type bool/int/string), providing a very simple |
|
3373 |
interface to a poor-man's version of general context data. Tools may |
|
24110
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3374 |
declare options in ML (e.g. using Attrib.config_int) and then refer to |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3375 |
these values using Config.get etc. Users may change options via an |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3376 |
associated attribute of the same name. This form of context |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3377 |
declaration works particularly well with commands 'declare' or |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3378 |
'using', for example ``declare [[foo = 42]]''. Thus it has become |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3379 |
very easy to avoid global references, which would not observe Isar |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3380 |
toplevel undo/redo and fail to work with multithreading. |
24086 | 3381 |
|
24172
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3382 |
Various global ML references of Pure and HOL have been turned into |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3383 |
configuration options: |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3384 |
|
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3385 |
Unify.search_bound unify_search_bound |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3386 |
Unify.trace_bound unify_trace_bound |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3387 |
Unify.trace_simp unify_trace_simp |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3388 |
Unify.trace_types unify_trace_types |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3389 |
Simplifier.simp_depth_limit simp_depth_limit |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3390 |
Blast.depth_limit blast_depth_limit |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3391 |
DatatypeProp.dtK datatype_distinctness_limit |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3392 |
fast_arith_neq_limit fast_arith_neq_limit |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3393 |
fast_arith_split_limit fast_arith_split_limit |
06e42cf7df4e
theory loader: added use_thys, removed obsolete update_thy;
wenzelm
parents:
24110
diff
changeset
|
3394 |
|
24086 | 3395 |
* Named collections of theorems may be easily installed as context |
24800 | 3396 |
data using the functor NamedThmsFun (see also |
24086 | 3397 |
src/Pure/Tools/named_thms.ML). The user may add or delete facts via |
24110
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3398 |
attributes; there is also a toplevel print command. This facility is |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3399 |
just a common case of general context data, which is the preferred way |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3400 |
for anything more complex than just a list of facts in canonical |
4ab3084e311c
tuned config options: eliminated separate attribute "option";
wenzelm
parents:
24086
diff
changeset
|
3401 |
order. |
24086 | 3402 |
|
24032 | 3403 |
* Isar: command 'declaration' augments a local theory by generic |
3404 |
declaration functions written in ML. This enables arbitrary content |
|
3405 |
being added to the context, depending on a morphism that tells the |
|
3406 |
difference of the original declaration context wrt. the application |
|
3407 |
context encountered later on. |
|
3408 |
||
3409 |
* Isar: proper interfaces for simplification procedures. Command |
|
3410 |
'simproc_setup' declares named simprocs (with match patterns, and body |
|
3411 |
text in ML). Attribute "simproc" adds/deletes simprocs in the current |
|
3412 |
context. ML antiquotation @{simproc name} retrieves named simprocs. |
|
3413 |
||
3414 |
* Isar: an extra pair of brackets around attribute declarations |
|
3415 |
abbreviates a theorem reference involving an internal dummy fact, |
|
3416 |
which will be ignored later --- only the effect of the attribute on |
|
3417 |
the background context will persist. This form of in-place |
|
3418 |
declarations is particularly useful with commands like 'declare' and |
|
3419 |
'using', for example ``have A using [[simproc a]] by simp''. |
|
3420 |
||
23369
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3421 |
* Isar: method "assumption" (and implicit closing of subproofs) now |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3422 |
takes simple non-atomic goal assumptions into account: after applying |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3423 |
an assumption as a rule the resulting subgoals are solved by atomic |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3424 |
assumption steps. This is particularly useful to finish 'obtain' |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3425 |
goals, such as "!!x. (!!x. P x ==> thesis) ==> P x ==> thesis", |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3426 |
without referring to the original premise "!!x. P x ==> thesis" in the |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3427 |
Isar proof context. POTENTIAL INCOMPATIBILITY: method "assumption" is |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3428 |
more permissive. |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3429 |
|
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3430 |
* Isar: implicit use of prems from the Isar proof context is |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3431 |
considered a legacy feature. Common applications like ``have A .'' |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3432 |
may be replaced by ``have A by fact'' or ``note `A`''. In general, |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3433 |
referencing facts explicitly here improves readability and |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3434 |
maintainability of proof texts. |
227c51012cdb
* Isar: method "assumption" (implicit closing of subproofs) takes non-atomic goal assumptions into account;
wenzelm
parents:
23367
diff
changeset
|
3435 |
|
17865 | 3436 |
* Isar: improper proof element 'guess' is like 'obtain', but derives |
3437 |
the obtained context from the course of reasoning! For example: |
|
3438 |
||
3439 |
assume "EX x y. A x & B y" -- "any previous fact" |
|
3440 |
then guess x and y by clarify |
|
3441 |
||
3442 |
This technique is potentially adventurous, depending on the facts and |
|
3443 |
proof tools being involved here. |
|
3444 |
||
18020 | 3445 |
* Isar: known facts from the proof context may be specified as literal |
3446 |
propositions, using ASCII back-quote syntax. This works wherever |
|
3447 |
named facts used to be allowed so far, in proof commands, proof |
|
3448 |
methods, attributes etc. Literal facts are retrieved from the context |
|
3449 |
according to unification of type and term parameters. For example, |
|
3450 |
provided that "A" and "A ==> B" and "!!x. P x ==> Q x" are known |
|
3451 |
theorems in the current context, then these are valid literal facts: |
|
3452 |
`A` and `A ==> B` and `!!x. P x ==> Q x" as well as `P a ==> Q a` etc. |
|
3453 |
||
3454 |
There is also a proof method "fact" which does the same composition |
|
18044 | 3455 |
for explicit goal states, e.g. the following proof texts coincide with |
3456 |
certain special cases of literal facts: |
|
18020 | 3457 |
|
3458 |
have "A" by fact == note `A` |
|
3459 |
have "A ==> B" by fact == note `A ==> B` |
|
3460 |
have "!!x. P x ==> Q x" by fact == note `!!x. P x ==> Q x` |
|
3461 |
have "P a ==> Q a" by fact == note `P a ==> Q a` |
|
3462 |
||
20118
0c1ec587a5a8
* Isar: ":" (colon) is no longer a symbolic identifier character;
wenzelm
parents:
20090
diff
changeset
|
3463 |
* Isar: ":" (colon) is no longer a symbolic identifier character in |
0c1ec587a5a8
* Isar: ":" (colon) is no longer a symbolic identifier character;
wenzelm
parents:
20090
diff
changeset
|
3464 |
outer syntax. Thus symbolic identifiers may be used without |
0c1ec587a5a8
* Isar: ":" (colon) is no longer a symbolic identifier character;
wenzelm
parents:
20090
diff
changeset
|
3465 |
additional white space in declarations like this: ``assume *: A''. |
0c1ec587a5a8
* Isar: ":" (colon) is no longer a symbolic identifier character;
wenzelm
parents:
20090
diff
changeset
|
3466 |
|
20013 | 3467 |
* Isar: 'print_facts' prints all local facts of the current context, |
3468 |
both named and unnamed ones. |
|
3469 |
||
18308 | 3470 |
* Isar: 'def' now admits simultaneous definitions, e.g.: |
3471 |
||
3472 |
def x == "t" and y == "u" |
|
3473 |
||
18540 | 3474 |
* Isar: added command 'unfolding', which is structurally similar to |
3475 |
'using', but affects both the goal state and facts by unfolding given |
|
18815
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
3476 |
rewrite rules. Thus many occurrences of the 'unfold' method or |
18540 | 3477 |
'unfolded' attribute may be replaced by first-class proof text. |
3478 |
||
18815
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
3479 |
* Isar: methods 'unfold' / 'fold', attributes 'unfolded' / 'folded', |
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
3480 |
and command 'unfolding' now all support object-level equalities |
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
3481 |
(potentially conditional). The underlying notion of rewrite rule is |
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
3482 |
analogous to the 'rule_format' attribute, but *not* that of the |
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
3483 |
Simplifier (which is usually more generous). |
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
3484 |
|
24238 | 3485 |
* Isar: the new attribute [rotated n] (default n = 1) rotates the |
3486 |
premises of a theorem by n. Useful in conjunction with drule. |
|
3487 |
||
19220 | 3488 |
* Isar: the goal restriction operator [N] (default N = 1) evaluates a |
3489 |
method expression within a sandbox consisting of the first N |
|
19240 | 3490 |
sub-goals, which need to exist. For example, ``simp_all [3]'' |
3491 |
simplifies the first three sub-goals, while (rule foo, simp_all)[] |
|
3492 |
simplifies all new goals that emerge from applying rule foo to the |
|
3493 |
originally first one. |
|
19220 | 3494 |
|
19814
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
wenzelm
parents:
19783
diff
changeset
|
3495 |
* Isar: schematic goals are no longer restricted to higher-order |
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
wenzelm
parents:
19783
diff
changeset
|
3496 |
patterns; e.g. ``lemma "?P(?x)" by (rule TrueI)'' now works as |
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
wenzelm
parents:
19783
diff
changeset
|
3497 |
expected. |
faa698d46686
* Theory syntax: some popular names (e.g. "class", "if") are now keywords.
wenzelm
parents:
19783
diff
changeset
|
3498 |
|
18901 | 3499 |
* Isar: the conclusion of a long theorem statement is now either |
3500 |
'shows' (a simultaneous conjunction, as before), or 'obtains' |
|
3501 |
(essentially a disjunction of cases with local parameters and |
|
3502 |
assumptions). The latter allows to express general elimination rules |
|
18910 | 3503 |
adequately; in this notation common elimination rules look like this: |
18901 | 3504 |
|
3505 |
lemma exE: -- "EX x. P x ==> (!!x. P x ==> thesis) ==> thesis" |
|
3506 |
assumes "EX x. P x" |
|
3507 |
obtains x where "P x" |
|
3508 |
||
3509 |
lemma conjE: -- "A & B ==> (A ==> B ==> thesis) ==> thesis" |
|
3510 |
assumes "A & B" |
|
3511 |
obtains A and B |
|
3512 |
||
3513 |
lemma disjE: -- "A | B ==> (A ==> thesis) ==> (B ==> thesis) ==> thesis" |
|
3514 |
assumes "A | B" |
|
3515 |
obtains |
|
3516 |
A |
|
3517 |
| B |
|
3518 |
||
18910 | 3519 |
The subsequent classical rules even refer to the formal "thesis" |
18901 | 3520 |
explicitly: |
3521 |
||
3522 |
lemma classical: -- "(~ thesis ==> thesis) ==> thesis" |
|
3523 |
obtains "~ thesis" |
|
3524 |
||
18910 | 3525 |
lemma Peirce's_Law: -- "((thesis ==> something) ==> thesis) ==> thesis" |
3526 |
obtains "thesis ==> something" |
|
18901 | 3527 |
|
3528 |
The actual proof of an 'obtains' statement is analogous to that of the |
|
18910 | 3529 |
Isar proof element 'obtain', only that there may be several cases. |
3530 |
Optional case names may be specified in parentheses; these will be |
|
3531 |
available both in the present proof and as annotations in the |
|
3532 |
resulting rule, for later use with the 'cases' method (cf. attribute |
|
3533 |
case_names). |
|
18901 | 3534 |
|
21447
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
wenzelm
parents:
21406
diff
changeset
|
3535 |
* Isar: the assumptions of a long theorem statement are available as |
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
wenzelm
parents:
21406
diff
changeset
|
3536 |
"assms" fact in the proof context. This is more appropriate than the |
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
wenzelm
parents:
21406
diff
changeset
|
3537 |
(historical) "prems", which refers to all assumptions of the current |
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
wenzelm
parents:
21406
diff
changeset
|
3538 |
context, including those from the target locale, proof body etc. |
379f130843f7
* Isar: the assumptions of a long theorem statement are available as assms;
wenzelm
parents:
21406
diff
changeset
|
3539 |
|
19263 | 3540 |
* Isar: 'print_statement' prints theorems from the current theory or |
3541 |
proof context in long statement form, according to the syntax of a |
|
3542 |
top-level lemma. |
|
3543 |
||
18901 | 3544 |
* Isar: 'obtain' takes an optional case name for the local context |
3545 |
introduction rule (default "that"). |
|
3546 |
||
19587 | 3547 |
* Isar: removed obsolete 'concl is' patterns. INCOMPATIBILITY, use |
3548 |
explicit (is "_ ==> ?foo") in the rare cases where this still happens |
|
3549 |
to occur. |
|
3550 |
||
19682
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3551 |
* Pure: syntax "CONST name" produces a fully internalized constant |
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3552 |
according to the current context. This is particularly useful for |
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3553 |
syntax translations that should refer to internal constant |
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3554 |
representations independently of name spaces. |
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3555 |
|
21537
45b3a85ee548
* Pure: syntax constant for foo (binder) is called foo_binder;
wenzelm
parents:
21471
diff
changeset
|
3556 |
* Pure: syntax constant for foo (binder "FOO ") is called "foo_binder" |
45b3a85ee548
* Pure: syntax constant for foo (binder) is called foo_binder;
wenzelm
parents:
21471
diff
changeset
|
3557 |
instead of "FOO ". This allows multiple binder declarations to coexist |
45b3a85ee548
* Pure: syntax constant for foo (binder) is called foo_binder;
wenzelm
parents:
21471
diff
changeset
|
3558 |
in the same context. INCOMPATIBILITY. |
45b3a85ee548
* Pure: syntax constant for foo (binder) is called foo_binder;
wenzelm
parents:
21471
diff
changeset
|
3559 |
|
21209
dbb8decc36bc
'const_syntax' command: allow fixed variables, renamed to 'notation';
wenzelm
parents:
21200
diff
changeset
|
3560 |
* Isar/locales: 'notation' provides a robust interface to the 'syntax' |
dbb8decc36bc
'const_syntax' command: allow fixed variables, renamed to 'notation';
wenzelm
parents:
21200
diff
changeset
|
3561 |
primitive that also works in a locale context (both for constants and |
24950 | 3562 |
fixed variables). Type declaration and internal syntactic representation |
3563 |
of given constants retrieved from the context. Likewise, the |
|
3564 |
'no_notation' command allows to remove given syntax annotations from the |
|
3565 |
current context. |
|
19682
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3566 |
|
19665 | 3567 |
* Isar/locales: new derived specification elements 'axiomatization', |
3568 |
'definition', 'abbreviation', which support type-inference, admit |
|
19083 | 3569 |
object-level specifications (equality, equivalence). See also the |
3570 |
isar-ref manual. Examples: |
|
19081
085b5badb8de
* Isar/locales: new derived specification elements 'definition', 'abbreviation', 'axiomatization';
wenzelm
parents:
19034
diff
changeset
|
3571 |
|
19665 | 3572 |
axiomatization |
21595 | 3573 |
eq (infix "===" 50) where |
3574 |
eq_refl: "x === x" and eq_subst: "x === y ==> P x ==> P y" |
|
3575 |
||
3576 |
definition "f x y = x + y + 1" |
|
3577 |
definition g where "g x = f x x" |
|
19081
085b5badb8de
* Isar/locales: new derived specification elements 'definition', 'abbreviation', 'axiomatization';
wenzelm
parents:
19034
diff
changeset
|
3578 |
|
19363 | 3579 |
abbreviation |
21595 | 3580 |
neq (infix "=!=" 50) where |
19363 | 3581 |
"x =!= y == ~ (x === y)" |
19081
085b5badb8de
* Isar/locales: new derived specification elements 'definition', 'abbreviation', 'axiomatization';
wenzelm
parents:
19034
diff
changeset
|
3582 |
|
19083 | 3583 |
These specifications may be also used in a locale context. Then the |
3584 |
constants being introduced depend on certain fixed parameters, and the |
|
3585 |
constant name is qualified by the locale base name. An internal |
|
3586 |
abbreviation takes care for convenient input and output, making the |
|
19088 | 3587 |
parameters implicit and using the original short name. See also |
25177 | 3588 |
src/HOL/ex/Abstract_NAT.thy for an example of deriving polymorphic |
19083 | 3589 |
entities from a monomorphic theory. |
3590 |
||
3591 |
Presently, abbreviations are only available 'in' a target locale, but |
|
19363 | 3592 |
not inherited by general import expressions. Also note that |
3593 |
'abbreviation' may be used as a type-safe replacement for 'syntax' + |
|
24735
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
wenzelm
parents:
24706
diff
changeset
|
3594 |
'translations' in common applications. The "no_abbrevs" print mode |
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
wenzelm
parents:
24706
diff
changeset
|
3595 |
prevents folding of abbreviations in term output. |
19084 | 3596 |
|
19682
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3597 |
Concrete syntax is attached to specified constants in internal form, |
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3598 |
independently of name spaces. The parse tree representation is |
21209
dbb8decc36bc
'const_syntax' command: allow fixed variables, renamed to 'notation';
wenzelm
parents:
21200
diff
changeset
|
3599 |
slightly different -- use 'notation' instead of raw 'syntax', and |
19682
c8c301eb965a
* Pure: syntax 'CONST name' produces a fully internalized constant;
wenzelm
parents:
19665
diff
changeset
|
3600 |
'translations' with explicit "CONST" markup to accommodate this. |
19665 | 3601 |
|
24800 | 3602 |
* Pure/Isar: unified syntax for new-style specification mechanisms |
3603 |
(e.g. 'definition', 'abbreviation', or 'inductive' in HOL) admits |
|
3604 |
full type inference and dummy patterns ("_"). For example: |
|
24735
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
wenzelm
parents:
24706
diff
changeset
|
3605 |
|
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
wenzelm
parents:
24706
diff
changeset
|
3606 |
definition "K x _ = x" |
3a55ee2cae70
* Pure/Isar: unified specification syntax admits type inference and dummy patterns;
wenzelm
parents:
24706
diff
changeset
|
3607 |
|
24738 | 3608 |
inductive conj for A B |
3609 |
where "A ==> B ==> conj A B" |
|
3610 |
||
21735 | 3611 |
* Pure: command 'print_abbrevs' prints all constant abbreviations of |
3612 |
the current context. Print mode "no_abbrevs" prevents inversion of |
|
3613 |
abbreviations on output. |
|
3614 |
||
24800 | 3615 |
* Isar/locales: improved parameter handling: use of locales "var" and |
3616 |
"struct" no longer necessary; - parameter renamings are no longer |
|
3617 |
required to be injective. For example, this allows to define |
|
3618 |
endomorphisms as locale endom = homom mult mult h. |
|
19783 | 3619 |
|
19931
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
ballarin
parents:
19895
diff
changeset
|
3620 |
* Isar/locales: changed the way locales with predicates are defined. |
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
ballarin
parents:
19895
diff
changeset
|
3621 |
Instead of accumulating the specification, the imported expression is |
22126 | 3622 |
now an interpretation. INCOMPATIBILITY: different normal form of |
3623 |
locale expressions. In particular, in interpretations of locales with |
|
3624 |
predicates, goals repesenting already interpreted fragments are not |
|
3625 |
removed automatically. Use methods `intro_locales' and |
|
3626 |
`unfold_locales'; see below. |
|
3627 |
||
3628 |
* Isar/locales: new methods `intro_locales' and `unfold_locales' |
|
3629 |
provide backward reasoning on locales predicates. The methods are |
|
3630 |
aware of interpretations and discharge corresponding goals. |
|
3631 |
`intro_locales' is less aggressive then `unfold_locales' and does not |
|
3632 |
unfold predicates to assumptions. |
|
19931
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
ballarin
parents:
19895
diff
changeset
|
3633 |
|
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
ballarin
parents:
19895
diff
changeset
|
3634 |
* Isar/locales: the order in which locale fragments are accumulated |
22126 | 3635 |
has changed. This enables to override declarations from fragments due |
3636 |
to interpretations -- for example, unwanted simp rules. |
|
19931
fb32b43e7f80
Restructured locales with predicates: import is now an interpretation.
ballarin
parents:
19895
diff
changeset
|
3637 |
|
23920 | 3638 |
* Isar/locales: interpretation in theories and proof contexts has been |
3639 |
extended. One may now specify (and prove) equations, which are |
|
3640 |
unfolded in interpreted theorems. This is useful for replacing |
|
3641 |
defined concepts (constants depending on locale parameters) by |
|
3642 |
concepts already existing in the target context. Example: |
|
3643 |
||
3644 |
interpretation partial_order ["op <= :: [int, int] => bool"] |
|
3645 |
where "partial_order.less (op <=) (x::int) y = (x < y)" |
|
3646 |
||
24800 | 3647 |
Typically, the constant `partial_order.less' is created by a |
3648 |
definition specification element in the context of locale |
|
3649 |
partial_order. |
|
3650 |
||
24859 | 3651 |
* Method "induct": improved internal context management to support |
24800 | 3652 |
local fixes and defines on-the-fly. Thus explicit meta-level |
3653 |
connectives !! and ==> are rarely required anymore in inductive goals |
|
3654 |
(using object-logic connectives for this purpose has been long |
|
3655 |
obsolete anyway). Common proof patterns are explained in |
|
25177 | 3656 |
src/HOL/Induct/Common_Patterns.thy, see also |
3657 |
src/HOL/Isar_examples/Puzzle.thy and src/HOL/Lambda for realistic |
|
3658 |
examples. |
|
24606
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
wenzelm
parents:
24507
diff
changeset
|
3659 |
|
24859 | 3660 |
* Method "induct": improved handling of simultaneous goals. Instead of |
24606
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
wenzelm
parents:
24507
diff
changeset
|
3661 |
introducing object-level conjunction, the statement is now split into |
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
wenzelm
parents:
24507
diff
changeset
|
3662 |
several conclusions, while the corresponding symbolic cases are nested |
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
wenzelm
parents:
24507
diff
changeset
|
3663 |
accordingly. INCOMPATIBILITY, proofs need to be structured explicitly, |
25177 | 3664 |
see src/HOL/Induct/Common_Patterns.thy, for example. |
24606
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
wenzelm
parents:
24507
diff
changeset
|
3665 |
|
24859 | 3666 |
* Method "induct": mutual induction rules are now specified as a list |
24800 | 3667 |
of rule sharing the same induction cases. HOL packages usually provide |
24606
7acbb982fc77
moved induct patterns to HOL/Induct/Common_Patterns.thy;
wenzelm
parents:
24507
diff
changeset
|
3668 |
foo_bar.inducts for mutually defined items foo and bar (e.g. inductive |
24859 | 3669 |
predicates/sets or datatypes). INCOMPATIBILITY, users need to specify |
3670 |
mutual induction rules differently, i.e. like this: |
|
18506
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
wenzelm
parents:
18495
diff
changeset
|
3671 |
|
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
wenzelm
parents:
18495
diff
changeset
|
3672 |
(induct rule: foo_bar.inducts) |
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
wenzelm
parents:
18495
diff
changeset
|
3673 |
(induct set: foo bar) |
24859 | 3674 |
(induct pred: foo bar) |
18506
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
wenzelm
parents:
18495
diff
changeset
|
3675 |
(induct type: foo bar) |
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
wenzelm
parents:
18495
diff
changeset
|
3676 |
|
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
wenzelm
parents:
18495
diff
changeset
|
3677 |
The ML function ProjectRule.projections turns old-style rules into the |
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
wenzelm
parents:
18495
diff
changeset
|
3678 |
new format. |
96260fb11449
* Provers/induct: support simultaneous goals with mutual rules;
wenzelm
parents:
18495
diff
changeset
|
3679 |
|
24859 | 3680 |
* Method "coinduct": dual of induction, see |
18399 | 3681 |
src/HOL/Library/Coinductive_List.thy for various examples. |
3682 |
||
24859 | 3683 |
* Method "cases", "induct", "coinduct": the ``(open)'' option is |
3684 |
considered a legacy feature. |
|
3685 |
||
20919
dab803075c62
attribute "symmetric": standardized schematic variables;
wenzelm
parents:
20857
diff
changeset
|
3686 |
* Attribute "symmetric" produces result with standardized schematic |
dab803075c62
attribute "symmetric": standardized schematic variables;
wenzelm
parents:
20857
diff
changeset
|
3687 |
variables (index 0). Potential INCOMPATIBILITY. |
dab803075c62
attribute "symmetric": standardized schematic variables;
wenzelm
parents:
20857
diff
changeset
|
3688 |
|
22126 | 3689 |
* Simplifier: by default the simplifier trace only shows top level |
3690 |
rewrites now. That is, trace_simp_depth_limit is set to 1 by |
|
3691 |
default. Thus there is less danger of being flooded by the trace. The |
|
3692 |
trace indicates where parts have been suppressed. |
|
18674 | 3693 |
|
18536
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3694 |
* Provers/classical: removed obsolete classical version of elim_format |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3695 |
attribute; classical elim/dest rules are now treated uniformly when |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3696 |
manipulating the claset. |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3697 |
|
18694 | 3698 |
* Provers/classical: stricter checks to ensure that supplied intro, |
3699 |
dest and elim rules are well-formed; dest and elim rules must have at |
|
3700 |
least one premise. |
|
3701 |
||
3702 |
* Provers/classical: attributes dest/elim/intro take an optional |
|
18695 | 3703 |
weight argument for the rule (just as the Pure versions). Weights are |
18696 | 3704 |
ignored by automated tools, but determine the search order of single |
18694 | 3705 |
rule steps. |
18557
60a0f9caa0a2
Provers/classical: stricter checks to ensure that supplied intro, dest and
paulson
parents:
18549
diff
changeset
|
3706 |
|
18536
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3707 |
* Syntax: input syntax now supports dummy variable binding "%_. b", |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3708 |
where the body does not mention the bound variable. Note that dummy |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3709 |
patterns implicitly depend on their context of bounds, which makes |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3710 |
"{_. _}" match any set comprehension as expected. Potential |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3711 |
INCOMPATIBILITY -- parse translations need to cope with syntactic |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3712 |
constant "_idtdummy" in the binding position. |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3713 |
|
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3714 |
* Syntax: removed obsolete syntactic constant "_K" and its associated |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3715 |
parse translation. INCOMPATIBILITY -- use dummy abstraction instead, |
ab3f32f86847
* Provers/classical: removed obsolete classical version of elim_format;
wenzelm
parents:
18507
diff
changeset
|
3716 |
for example "A -> B" => "Pi A (%_. B)". |
17779 | 3717 |
|
20582
ebd0e03c6a9b
* Pure: 'class_deps' command visualizes the subclass relation;
wenzelm
parents:
20503
diff
changeset
|
3718 |
* Pure: 'class_deps' command visualizes the subclass relation, using |
ebd0e03c6a9b
* Pure: 'class_deps' command visualizes the subclass relation;
wenzelm
parents:
20503
diff
changeset
|
3719 |
the graph browser tool. |
ebd0e03c6a9b
* Pure: 'class_deps' command visualizes the subclass relation;
wenzelm
parents:
20503
diff
changeset
|
3720 |
|
24800 | 3721 |
* Pure: 'print_theory' now suppresses certain internal declarations by |
3722 |
default; use '!' option for full details. |
|
20620
8b26f58c5646
* Pure: 'print_theory' now suppresses entities with internal name;
wenzelm
parents:
20607
diff
changeset
|
3723 |
|
17865 | 3724 |
|
17806 | 3725 |
*** HOL *** |
3726 |
||
25129 | 3727 |
* Method "metis" proves goals by applying the Metis general-purpose |
3728 |
resolution prover (see also http://gilith.com/software/metis/). |
|
3729 |
Examples are in the directory MetisExamples. WARNING: the |
|
3730 |
Isabelle/HOL-Metis integration does not yet work properly with |
|
3731 |
multi-threading. |
|
3732 |
||
3733 |
* Command 'sledgehammer' invokes external automatic theorem provers as |
|
3734 |
background processes. It generates calls to the "metis" method if |
|
3735 |
successful. These can be pasted into the proof. Users do not have to |
|
3736 |
wait for the automatic provers to return. WARNING: does not really |
|
3737 |
work with multi-threading. |
|
3738 |
||
24804 | 3739 |
* New "auto_quickcheck" feature tests outermost goal statements for |
3740 |
potential counter-examples. Controlled by ML references |
|
3741 |
auto_quickcheck (default true) and auto_quickcheck_time_limit (default |
|
25129 | 3742 |
5000 milliseconds). Fails silently if statements is outside of |
3743 |
executable fragment, or any other codgenerator problem occurs. |
|
24804 | 3744 |
|
25184 | 3745 |
* New constant "undefined" with axiom "undefined x = undefined". |
3746 |
||
3747 |
* Added class "HOL.eq", allowing for code generation with polymorphic |
|
3748 |
equality. |
|
3749 |
||
3750 |
* Some renaming of class constants due to canonical name prefixing in |
|
3751 |
the new 'class' package: |
|
3752 |
||
3753 |
HOL.abs ~> HOL.abs_class.abs |
|
3754 |
HOL.divide ~> HOL.divide_class.divide |
|
3755 |
0 ~> HOL.zero_class.zero |
|
3756 |
1 ~> HOL.one_class.one |
|
3757 |
op + ~> HOL.plus_class.plus |
|
3758 |
op - ~> HOL.minus_class.minus |
|
3759 |
uminus ~> HOL.minus_class.uminus |
|
3760 |
op * ~> HOL.times_class.times |
|
3761 |
op < ~> HOL.ord_class.less |
|
3762 |
op <= > HOL.ord_class.less_eq |
|
3763 |
Nat.power ~> Power.power_class.power |
|
3764 |
Nat.size ~> Nat.size_class.size |
|
3765 |
Numeral.number_of ~> Numeral.number_class.number_of |
|
3766 |
FixedPoint.Inf ~> Lattices.complete_lattice_class.Inf |
|
3767 |
FixedPoint.Sup ~> Lattices.complete_lattice_class.Sup |
|
3768 |
Orderings.min ~> Orderings.ord_class.min |
|
3769 |
Orderings.max ~> Orderings.ord_class.max |
|
3770 |
Divides.op div ~> Divides.div_class.div |
|
3771 |
Divides.op mod ~> Divides.div_class.mod |
|
3772 |
Divides.op dvd ~> Divides.div_class.dvd |
|
3773 |
||
3774 |
INCOMPATIBILITY. Adaptions may be required in the following cases: |
|
3775 |
||
3776 |
a) User-defined constants using any of the names "plus", "minus", |
|
3777 |
"times", "less" or "less_eq". The standard syntax translations for |
|
3778 |
"+", "-" and "*" may go wrong. INCOMPATIBILITY: use more specific |
|
3779 |
names. |
|
3780 |
||
3781 |
b) Variables named "plus", "minus", "times", "less", "less_eq" |
|
3782 |
INCOMPATIBILITY: use more specific names. |
|
3783 |
||
3784 |
c) Permutative equations (e.g. "a + b = b + a") |
|
3785 |
Since the change of names also changes the order of terms, permutative |
|
3786 |
rewrite rules may get applied in a different order. Experience shows |
|
3787 |
that this is rarely the case (only two adaptions in the whole Isabelle |
|
3788 |
distribution). INCOMPATIBILITY: rewrite proofs |
|
3789 |
||
3790 |
d) ML code directly refering to constant names |
|
3791 |
This in general only affects hand-written proof tactics, simprocs and |
|
3792 |
so on. INCOMPATIBILITY: grep your sourcecode and replace names. |
|
3793 |
Consider using @{const_name} antiquotation. |
|
3794 |
||
3795 |
* New class "default" with associated constant "default". |
|
3796 |
||
3797 |
* Function "sgn" is now overloaded and available on int, real, complex |
|
3798 |
(and other numeric types), using class "sgn". Two possible defs of |
|
3799 |
sgn are given as equational assumptions in the classes sgn_if and |
|
3800 |
sgn_div_norm; ordered_idom now also inherits from sgn_if. |
|
3801 |
INCOMPATIBILITY. |
|
3802 |
||
3803 |
* Locale "partial_order" now unified with class "order" (cf. theory |
|
3804 |
Orderings), added parameter "less". INCOMPATIBILITY. |
|
3805 |
||
3806 |
* Renamings in classes "order" and "linorder": facts "refl", "trans" and |
|
3807 |
"cases" to "order_refl", "order_trans" and "linorder_cases", to avoid |
|
3808 |
clashes with HOL "refl" and "trans". INCOMPATIBILITY. |
|
3809 |
||
3810 |
* Classes "order" and "linorder": potential INCOMPATIBILITY due to |
|
3811 |
changed order of proof goals in instance proofs. |
|
3812 |
||
3813 |
* The transitivity reasoner for partial and linear orders is set up |
|
3814 |
for classes "order" and "linorder". Instances of the reasoner are available |
|
3815 |
in all contexts importing or interpreting the corresponding locales. |
|
3816 |
Method "order" invokes the reasoner separately; the reasoner |
|
3817 |
is also integrated with the Simplifier as a solver. Diagnostic |
|
3818 |
command 'print_orders' shows the available instances of the reasoner |
|
3819 |
in the current context. |
|
3820 |
||
3821 |
* Localized monotonicity predicate in theory "Orderings"; integrated |
|
3822 |
lemmas max_of_mono and min_of_mono with this predicate. |
|
3823 |
INCOMPATIBILITY. |
|
3824 |
||
3825 |
* Formulation of theorem "dense" changed slightly due to integration |
|
3826 |
with new class dense_linear_order. |
|
3827 |
||
3828 |
* Uniform lattice theory development in HOL. |
|
3829 |
||
3830 |
constants "meet" and "join" now named "inf" and "sup" |
|
3831 |
constant "Meet" now named "Inf" |
|
3832 |
||
3833 |
classes "meet_semilorder" and "join_semilorder" now named |
|
3834 |
"lower_semilattice" and "upper_semilattice" |
|
3835 |
class "lorder" now named "lattice" |
|
3836 |
class "comp_lat" now named "complete_lattice" |
|
3837 |
||
3838 |
Instantiation of lattice classes allows explicit definitions |
|
3839 |
for "inf" and "sup" operations (or "Inf" and "Sup" for complete lattices). |
|
3840 |
||
3841 |
INCOMPATIBILITY. Theorem renames: |
|
3842 |
||
3843 |
meet_left_le ~> inf_le1 |
|
3844 |
meet_right_le ~> inf_le2 |
|
3845 |
join_left_le ~> sup_ge1 |
|
3846 |
join_right_le ~> sup_ge2 |
|
3847 |
meet_join_le ~> inf_sup_ord |
|
3848 |
le_meetI ~> le_infI |
|
3849 |
join_leI ~> le_supI |
|
3850 |
le_meet ~> le_inf_iff |
|
3851 |
le_join ~> ge_sup_conv |
|
3852 |
meet_idempotent ~> inf_idem |
|
3853 |
join_idempotent ~> sup_idem |
|
3854 |
meet_comm ~> inf_commute |
|
3855 |
join_comm ~> sup_commute |
|
3856 |
meet_leI1 ~> le_infI1 |
|
3857 |
meet_leI2 ~> le_infI2 |
|
3858 |
le_joinI1 ~> le_supI1 |
|
3859 |
le_joinI2 ~> le_supI2 |
|
3860 |
meet_assoc ~> inf_assoc |
|
3861 |
join_assoc ~> sup_assoc |
|
3862 |
meet_left_comm ~> inf_left_commute |
|
3863 |
meet_left_idempotent ~> inf_left_idem |
|
3864 |
join_left_comm ~> sup_left_commute |
|
3865 |
join_left_idempotent ~> sup_left_idem |
|
3866 |
meet_aci ~> inf_aci |
|
3867 |
join_aci ~> sup_aci |
|
3868 |
le_def_meet ~> le_iff_inf |
|
3869 |
le_def_join ~> le_iff_sup |
|
3870 |
join_absorp2 ~> sup_absorb2 |
|
3871 |
join_absorp1 ~> sup_absorb1 |
|
3872 |
meet_absorp1 ~> inf_absorb1 |
|
3873 |
meet_absorp2 ~> inf_absorb2 |
|
3874 |
meet_join_absorp ~> inf_sup_absorb |
|
3875 |
join_meet_absorp ~> sup_inf_absorb |
|
3876 |
distrib_join_le ~> distrib_sup_le |
|
3877 |
distrib_meet_le ~> distrib_inf_le |
|
3878 |
||
3879 |
add_meet_distrib_left ~> add_inf_distrib_left |
|
3880 |
add_join_distrib_left ~> add_sup_distrib_left |
|
3881 |
is_join_neg_meet ~> is_join_neg_inf |
|
3882 |
is_meet_neg_join ~> is_meet_neg_sup |
|
3883 |
add_meet_distrib_right ~> add_inf_distrib_right |
|
3884 |
add_join_distrib_right ~> add_sup_distrib_right |
|
3885 |
add_meet_join_distribs ~> add_sup_inf_distribs |
|
3886 |
join_eq_neg_meet ~> sup_eq_neg_inf |
|
3887 |
meet_eq_neg_join ~> inf_eq_neg_sup |
|
3888 |
add_eq_meet_join ~> add_eq_inf_sup |
|
3889 |
meet_0_imp_0 ~> inf_0_imp_0 |
|
3890 |
join_0_imp_0 ~> sup_0_imp_0 |
|
3891 |
meet_0_eq_0 ~> inf_0_eq_0 |
|
3892 |
join_0_eq_0 ~> sup_0_eq_0 |
|
3893 |
neg_meet_eq_join ~> neg_inf_eq_sup |
|
3894 |
neg_join_eq_meet ~> neg_sup_eq_inf |
|
3895 |
join_eq_if ~> sup_eq_if |
|
3896 |
||
3897 |
mono_meet ~> mono_inf |
|
3898 |
mono_join ~> mono_sup |
|
3899 |
meet_bool_eq ~> inf_bool_eq |
|
3900 |
join_bool_eq ~> sup_bool_eq |
|
3901 |
meet_fun_eq ~> inf_fun_eq |
|
3902 |
join_fun_eq ~> sup_fun_eq |
|
3903 |
meet_set_eq ~> inf_set_eq |
|
3904 |
join_set_eq ~> sup_set_eq |
|
3905 |
meet1_iff ~> inf1_iff |
|
3906 |
meet2_iff ~> inf2_iff |
|
3907 |
meet1I ~> inf1I |
|
3908 |
meet2I ~> inf2I |
|
3909 |
meet1D1 ~> inf1D1 |
|
3910 |
meet2D1 ~> inf2D1 |
|
3911 |
meet1D2 ~> inf1D2 |
|
3912 |
meet2D2 ~> inf2D2 |
|
3913 |
meet1E ~> inf1E |
|
3914 |
meet2E ~> inf2E |
|
3915 |
join1_iff ~> sup1_iff |
|
3916 |
join2_iff ~> sup2_iff |
|
3917 |
join1I1 ~> sup1I1 |
|
3918 |
join2I1 ~> sup2I1 |
|
3919 |
join1I1 ~> sup1I1 |
|
3920 |
join2I2 ~> sup1I2 |
|
3921 |
join1CI ~> sup1CI |
|
3922 |
join2CI ~> sup2CI |
|
3923 |
join1E ~> sup1E |
|
3924 |
join2E ~> sup2E |
|
3925 |
||
3926 |
is_meet_Meet ~> is_meet_Inf |
|
3927 |
Meet_bool_def ~> Inf_bool_def |
|
3928 |
Meet_fun_def ~> Inf_fun_def |
|
3929 |
Meet_greatest ~> Inf_greatest |
|
3930 |
Meet_lower ~> Inf_lower |
|
3931 |
Meet_set_def ~> Inf_set_def |
|
3932 |
||
3933 |
Sup_def ~> Sup_Inf |
|
3934 |
Sup_bool_eq ~> Sup_bool_def |
|
3935 |
Sup_fun_eq ~> Sup_fun_def |
|
3936 |
Sup_set_eq ~> Sup_set_def |
|
3937 |
||
3938 |
listsp_meetI ~> listsp_infI |
|
3939 |
listsp_meet_eq ~> listsp_inf_eq |
|
3940 |
||
3941 |
meet_min ~> inf_min |
|
3942 |
join_max ~> sup_max |
|
3943 |
||
3944 |
* Added syntactic class "size"; overloaded constant "size" now has |
|
3945 |
type "'a::size ==> bool" |
|
3946 |
||
24800 | 3947 |
* Internal reorganisation of `size' of datatypes: size theorems |
3948 |
"foo.size" are no longer subsumed by "foo.simps" (but are still |
|
3949 |
simplification rules by default!); theorems "prod.size" now named |
|
25184 | 3950 |
"*.size". |
3951 |
||
3952 |
* Class "div" now inherits from class "times" rather than "type". |
|
3953 |
INCOMPATIBILITY. |
|
24800 | 3954 |
|
3955 |
* HOL/Finite_Set: "name-space" locales Lattice, Distrib_lattice, |
|
3956 |
Linorder etc. have disappeared; operations defined in terms of |
|
3957 |
fold_set now are named Inf_fin, Sup_fin. INCOMPATIBILITY. |
|
3958 |
||
25129 | 3959 |
* HOL/Nat: neq0_conv no longer declared as iff. INCOMPATIBILITY. |
3960 |
||
24800 | 3961 |
* HOL-Word: New extensive library and type for generic, fixed size |
3962 |
machine words, with arithemtic, bit-wise, shifting and rotating |
|
3963 |
operations, reflection into int, nat, and bool lists, automation for |
|
3964 |
linear arithmetic (by automatic reflection into nat or int), including |
|
3965 |
lemmas on overflow and monotonicity. Instantiated to all appropriate |
|
3966 |
arithmetic type classes, supporting automatic simplification of |
|
3967 |
numerals on all operations. |
|
24333 | 3968 |
|
3969 |
* Library/Boolean_Algebra: locales for abstract boolean algebras. |
|
3970 |
||
3971 |
* Library/Numeral_Type: numbers as types, e.g. TYPE(32). |
|
3972 |
||
23850 | 3973 |
* Code generator library theories: |
24993 | 3974 |
- Code_Integer represents HOL integers by big integer literals in target |
23850 | 3975 |
languages. |
24993 | 3976 |
- Code_Char represents HOL characters by character literals in target |
23850 | 3977 |
languages. |
24993 | 3978 |
- Code_Char_chr like Code_Char, but also offers treatment of character |
3979 |
codes; includes Code_Integer. |
|
24800 | 3980 |
- Executable_Set allows to generate code for finite sets using lists. |
3981 |
- Executable_Rat implements rational numbers as triples (sign, enumerator, |
|
23850 | 3982 |
denominator). |
24800 | 3983 |
- Executable_Real implements a subset of real numbers, namly those |
23850 | 3984 |
representable by rational numbers. |
24800 | 3985 |
- Efficient_Nat implements natural numbers by integers, which in general will |
23850 | 3986 |
result in higher efficency; pattern matching with 0/Suc is eliminated; |
24993 | 3987 |
includes Code_Integer. |
3988 |
- Code_Index provides an additional datatype index which is mapped to |
|
3989 |
target-language built-in integers. |
|
26355 | 3990 |
- Code_Message provides an additional datatype message_string which is isomorphic to |
24993 | 3991 |
strings; messages are mapped to target-language strings. |
23850 | 3992 |
|
23783
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
3993 |
* New package for inductive predicates |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
3994 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
3995 |
An n-ary predicate p with m parameters z_1, ..., z_m can now be defined via |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
3996 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
3997 |
inductive |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
3998 |
p :: "U_1 => ... => U_m => T_1 => ... => T_n => bool" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
3999 |
for z_1 :: U_1 and ... and z_n :: U_m |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4000 |
where |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4001 |
rule_1: "... ==> p z_1 ... z_m t_1_1 ... t_1_n" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4002 |
| ... |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4003 |
|
24800 | 4004 |
with full support for type-inference, rather than |
23783
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4005 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4006 |
consts s :: "U_1 => ... => U_m => (T_1 * ... * T_n) set" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4007 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4008 |
abbreviation p :: "U_1 => ... => U_m => T_1 => ... => T_n => bool" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4009 |
where "p z_1 ... z_m x_1 ... x_n == (x_1, ..., x_n) : s z_1 ... z_m" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4010 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4011 |
inductive "s z_1 ... z_m" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4012 |
intros |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4013 |
rule_1: "... ==> (t_1_1, ..., t_1_n) : s z_1 ... z_m" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4014 |
... |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4015 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4016 |
For backward compatibility, there is a wrapper allowing inductive |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4017 |
sets to be defined with the new package via |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4018 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4019 |
inductive_set |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4020 |
s :: "U_1 => ... => U_m => (T_1 * ... * T_n) set" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4021 |
for z_1 :: U_1 and ... and z_n :: U_m |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4022 |
where |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4023 |
rule_1: "... ==> (t_1_1, ..., t_1_n) : s z_1 ... z_m" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4024 |
| ... |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4025 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4026 |
or |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4027 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4028 |
inductive_set |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4029 |
s :: "U_1 => ... => U_m => (T_1 * ... * T_n) set" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4030 |
and p :: "U_1 => ... => U_m => T_1 => ... => T_n => bool" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4031 |
for z_1 :: U_1 and ... and z_n :: U_m |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4032 |
where |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4033 |
"p z_1 ... z_m x_1 ... x_n == (x_1, ..., x_n) : s z_1 ... z_m" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4034 |
| rule_1: "... ==> p z_1 ... z_m t_1_1 ... t_1_n" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4035 |
| ... |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4036 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4037 |
if the additional syntax "p ..." is required. |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4038 |
|
25177 | 4039 |
Numerous examples can be found in the subdirectories src/HOL/Auth, |
4040 |
src/HOL/Bali, src/HOL/Induct, and src/HOL/MicroJava. |
|
23783
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4041 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4042 |
INCOMPATIBILITIES: |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4043 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4044 |
- Since declaration and definition of inductive sets or predicates |
24800 | 4045 |
is no longer separated, abbreviations involving the newly |
4046 |
introduced sets or predicates must be specified together with the |
|
4047 |
introduction rules after the 'where' keyword (see above), rather |
|
4048 |
than before the actual inductive definition. |
|
4049 |
||
4050 |
- The variables in induction and elimination rules are now |
|
4051 |
quantified in the order of their occurrence in the introduction |
|
4052 |
rules, rather than in alphabetical order. Since this may break |
|
4053 |
some proofs, these proofs either have to be repaired, e.g. by |
|
4054 |
reordering the variables a_i_1 ... a_i_{k_i} in Isar 'case' |
|
4055 |
statements of the form |
|
23783
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4056 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4057 |
case (rule_i a_i_1 ... a_i_{k_i}) |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4058 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4059 |
or the old order of quantification has to be restored by explicitly adding |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4060 |
meta-level quantifiers in the introduction rules, i.e. |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4061 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4062 |
| rule_i: "!!a_i_1 ... a_i_{k_i}. ... ==> p z_1 ... z_m t_i_1 ... t_i_n" |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4063 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4064 |
- The format of the elimination rules is now |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4065 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4066 |
p z_1 ... z_m x_1 ... x_n ==> |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4067 |
(!!a_1_1 ... a_1_{k_1}. x_1 = t_1_1 ==> ... ==> x_n = t_1_n ==> ... ==> P) |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4068 |
==> ... ==> P |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4069 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4070 |
for predicates and |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4071 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4072 |
(x_1, ..., x_n) : s z_1 ... z_m ==> |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4073 |
(!!a_1_1 ... a_1_{k_1}. x_1 = t_1_1 ==> ... ==> x_n = t_1_n ==> ... ==> P) |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4074 |
==> ... ==> P |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4075 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4076 |
for sets rather than |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4077 |
|
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4078 |
x : s z_1 ... z_m ==> |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4079 |
(!!a_1_1 ... a_1_{k_1}. x = (t_1_1, ..., t_1_n) ==> ... ==> P) |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4080 |
==> ... ==> P |
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4081 |
|
24800 | 4082 |
This may require terms in goals to be expanded to n-tuples |
4083 |
(e.g. using case_tac or simplification with the split_paired_all |
|
4084 |
rule) before the above elimination rule is applicable. |
|
4085 |
||
4086 |
- The elimination or case analysis rules for (mutually) inductive |
|
4087 |
sets or predicates are now called "p_1.cases" ... "p_k.cases". The |
|
4088 |
list of rules "p_1_..._p_k.elims" is no longer available. |
|
23783
e4d514f81d95
Added entry for new inductive definition package.
berghofe
parents:
23565
diff
changeset
|
4089 |
|
25198 | 4090 |
* New package "function"/"fun" for general recursive functions, |
4091 |
supporting mutual and nested recursion, definitions in local contexts, |
|
4092 |
more general pattern matching and partiality. See HOL/ex/Fundefs.thy |
|
4093 |
for small examples, and the separate tutorial on the function |
|
4094 |
package. The old recdef "package" is still available as before, but |
|
4095 |
users are encouraged to use the new package. |
|
4096 |
||
4097 |
* Method "lexicographic_order" automatically synthesizes termination |
|
4098 |
relations as lexicographic combinations of size measures. |
|
4099 |
||
24800 | 4100 |
* Case-expressions allow arbitrary constructor-patterns (including |
4101 |
"_") and take their order into account, like in functional |
|
4102 |
programming. Internally, this is translated into nested |
|
4103 |
case-expressions; missing cases are added and mapped to the predefined |
|
4104 |
constant "undefined". In complicated cases printing may no longer show |
|
4105 |
the original input but the internal form. Lambda-abstractions allow |
|
4106 |
the same form of pattern matching: "% pat1 => e1 | ..." is an |
|
4107 |
abbreviation for "%x. case x of pat1 => e1 | ..." where x is a new |
|
4108 |
variable. |
|
23564 | 4109 |
|
23468 | 4110 |
* IntDef: The constant "int :: nat => int" has been removed; now "int" |
24800 | 4111 |
is an abbreviation for "of_nat :: nat => int". The simplification |
4112 |
rules for "of_nat" have been changed to work like "int" did |
|
4113 |
previously. Potential INCOMPATIBILITY: |
|
23468 | 4114 |
- "of_nat (Suc m)" simplifies to "1 + of_nat m" instead of "of_nat m + 1" |
4115 |
- of_nat_diff and of_nat_mult are no longer default simp rules |
|
23377 | 4116 |
|
23295
86e225406859
Method "algebra" solves polynomial equations over (semi)rings
chaieb
parents:
23251
diff
changeset
|
4117 |
* Method "algebra" solves polynomial equations over (semi)rings using |
24800 | 4118 |
Groebner bases. The (semi)ring structure is defined by locales and the |
4119 |
tool setup depends on that generic context. Installing the method for |
|
4120 |
a specific type involves instantiating the locale and possibly adding |
|
4121 |
declarations for computation on the coefficients. The method is |
|
4122 |
already instantiated for natural numbers and for the axiomatic class |
|
4123 |
of idoms with numerals. See also the paper by Chaieb and Wenzel at |
|
4124 |
CALCULEMUS 2007 for the general principles underlying this |
|
4125 |
architecture of context-aware proof-tools. |
|
4126 |
||
25033 | 4127 |
* Method "ferrack" implements quantifier elimination over |
4128 |
special-purpose dense linear orders using locales (analogous to |
|
4129 |
"algebra"). The method is already installed for class |
|
4130 |
{ordered_field,recpower,number_ring} which subsumes real, hyperreal, |
|
4131 |
rat, etc. |
|
4132 |
||
24800 | 4133 |
* Former constant "List.op @" now named "List.append". Use ML |
4134 |
antiquotations @{const_name List.append} or @{term " ... @ ... "} to |
|
4135 |
circumvent possible incompatibilities when working on ML level. |
|
4136 |
||
24996 | 4137 |
* primrec: missing cases mapped to "undefined" instead of "arbitrary". |
22845 | 4138 |
|
24800 | 4139 |
* New function listsum :: 'a list => 'a for arbitrary monoids. |
4140 |
Special syntax: "SUM x <- xs. f x" (and latex variants) |
|
4141 |
||
4142 |
* New syntax for Haskell-like list comprehension (input only), eg. |
|
25177 | 4143 |
[(x,y). x <- xs, y <- ys, x ~= y], see also src/HOL/List.thy. |
24800 | 4144 |
|
4145 |
* The special syntax for function "filter" has changed from [x : |
|
4146 |
xs. P] to [x <- xs. P] to avoid an ambiguity caused by list |
|
4147 |
comprehension syntax, and for uniformity. INCOMPATIBILITY. |
|
4148 |
||
4149 |
* [a..b] is now defined for arbitrary linear orders. It used to be |
|
4150 |
defined on nat only, as an abbreviation for [a..<Suc b] |
|
4151 |
INCOMPATIBILITY. |
|
4152 |
||
4153 |
* Renamed lemma "set_take_whileD" to "set_takeWhileD". |
|
4154 |
||
25177 | 4155 |
* New functions "sorted" and "sort" in src/HOL/List.thy. |
24800 | 4156 |
|
4157 |
* New lemma collection field_simps (an extension of ring_simps) for |
|
4158 |
manipulating (in)equations involving division. Multiplies with all |
|
4159 |
denominators that can be proved to be non-zero (in equations) or |
|
4160 |
positive/negative (in inequations). |
|
23480 | 4161 |
|
4162 |
* Lemma collections ring_eq_simps, group_eq_simps and ring_distrib |
|
24800 | 4163 |
have been improved and renamed to ring_simps, group_simps and |
4164 |
ring_distribs. Removed lemmas field_xyz in theory Ring_and_Field |
|
4165 |
because they were subsumed by lemmas xyz. INCOMPATIBILITY. |
|
4166 |
||
25177 | 4167 |
* Theory Library/Commutative_Ring: switched from recdef to function |
24800 | 4168 |
package; constants add, mul, pow now curried. Infix syntax for |
4169 |
algebraic operations. |
|
22735 | 4170 |
|
24800 | 4171 |
* Dropped redundant lemma def_imp_eq in favor of meta_eq_to_obj_eq. |
22218 | 4172 |
INCOMPATIBILITY. |
4173 |
||
24800 | 4174 |
* Dropped redundant lemma if_def2 in favor of if_bool_eq_conj. |
22218 | 4175 |
INCOMPATIBILITY. |
4176 |
||
22126 | 4177 |
* HOL/records: generalised field-update to take a function on the |
4178 |
field rather than the new value: r(|A := x|) is translated to A_update |
|
4179 |
(K x) r The K-combinator that is internally used is called K_record. |
|
21226
a607ae87ee81
field-update in records is generalised to take a function on the field
schirmer
parents:
21215
diff
changeset
|
4180 |
INCOMPATIBILITY: Usage of the plain update functions has to be |
a607ae87ee81
field-update in records is generalised to take a function on the field
schirmer
parents:
21215
diff
changeset
|
4181 |
adapted. |
a607ae87ee81
field-update in records is generalised to take a function on the field
schirmer
parents:
21215
diff
changeset
|
4182 |
|
24800 | 4183 |
* Class "semiring_0" now contains annihilation axioms x * 0 = 0 and 0 |
4184 |
* x = 0, which are required for a semiring. Richer structures do not |
|
4185 |
inherit from semiring_0 anymore, because this property is a theorem |
|
4186 |
there, not an axiom. INCOMPATIBILITY: In instances of semiring_0, |
|
4187 |
there is more to prove, but this is mostly trivial. |
|
4188 |
||
4189 |
* Class "recpower" is generalized to arbitrary monoids, not just |
|
4190 |
commutative semirings. INCOMPATIBILITY: may need to incorporate |
|
25163 | 4191 |
commutativity or semiring properties additionally. |
21215
7c9337a0e30a
made locale partial_order compatible with axclass order
haftmann
parents:
21209
diff
changeset
|
4192 |
|
21099 | 4193 |
* Constant "List.list_all2" in List.thy now uses authentic syntax. |
24800 | 4194 |
INCOMPATIBILITY: translations containing list_all2 may go wrong, |
4195 |
better use 'abbreviation'. |
|
4196 |
||
4197 |
* Renamed constant "List.op mem" to "List.member". INCOMPATIBILITY. |
|
4198 |
||
22126 | 4199 |
* Numeral syntax: type 'bin' which was a mere type copy of 'int' has |
24800 | 4200 |
been abandoned in favour of plain 'int'. INCOMPATIBILITY -- |
22126 | 4201 |
significant changes for setting up numeral syntax for types: |
24800 | 4202 |
- New constants Numeral.pred and Numeral.succ instead |
20485 | 4203 |
of former Numeral.bin_pred and Numeral.bin_succ. |
4204 |
- Use integer operations instead of bin_add, bin_mult and so on. |
|
4205 |
- Numeral simplification theorems named Numeral.numeral_simps instead of Bin_simps. |
|
4206 |
- ML structure Bin_Simprocs now named Int_Numeral_Base_Simprocs. |
|
4207 |
||
25177 | 4208 |
See src/HOL/Integ/IntArith.thy for an example setup. |
4209 |
||
4210 |
* Command 'normal_form' computes the normal form of a term that may |
|
4211 |
contain free variables. For example ``normal_form "rev [a, b, c]"'' |
|
4212 |
produces ``[b, c, a]'' (without proof). This command is suitable for |
|
4213 |
heavy-duty computations because the functions are compiled to ML |
|
4214 |
first. Correspondingly, a method "normalization" is provided. See |
|
4215 |
further src/HOL/ex/NormalForm.thy and src/Tools/nbe.ML. |
|
19895 | 4216 |
|
17996 | 4217 |
* Alternative iff syntax "A <-> B" for equality on bool (with priority |
4218 |
25 like -->); output depends on the "iff" print_mode, the default is |
|
4219 |
"A = B" (with priority 50). |
|
4220 |
||
21265 | 4221 |
* Relations less (<) and less_eq (<=) are also available on type bool. |
4222 |
Modified syntax to disallow nesting without explicit parentheses, |
|
24800 | 4223 |
e.g. "(x < y) < z" or "x < (y < z)", but NOT "x < y < z". Potential |
4224 |
INCOMPATIBILITY. |
|
21265 | 4225 |
|
18674 | 4226 |
* "LEAST x:A. P" expands to "LEAST x. x:A & P" (input only). |
4227 |
||
20716
a6686a8e1b68
Changed precedence of "op O" (relation composition) from 60 to 75.
krauss
parents:
20712
diff
changeset
|
4228 |
* Relation composition operator "op O" now has precedence 75 and binds |
a6686a8e1b68
Changed precedence of "op O" (relation composition) from 60 to 75.
krauss
parents:
20712
diff
changeset
|
4229 |
stronger than union and intersection. INCOMPATIBILITY. |
a6686a8e1b68
Changed precedence of "op O" (relation composition) from 60 to 75.
krauss
parents:
20712
diff
changeset
|
4230 |
|
22126 | 4231 |
* The old set interval syntax "{m..n(}" (and relatives) has been |
4232 |
removed. Use "{m..<n}" (and relatives) instead. |
|
19377 | 4233 |
|
17865 | 4234 |
* In the context of the assumption "~(s = t)" the Simplifier rewrites |
24800 | 4235 |
"t = s" to False (by simproc "neq"). INCOMPATIBILITY, consider using |
4236 |
``declare [[simproc del: neq]]''. |
|
4237 |
||
4238 |
* Simplifier: "m dvd n" where m and n are numbers is evaluated to |
|
4239 |
True/False. |
|
4240 |
||
4241 |
* Theorem Cons_eq_map_conv no longer declared as "simp". |
|
19211 | 4242 |
|
19279 | 4243 |
* Theorem setsum_mult renamed to setsum_right_distrib. |
4244 |
||
19211 | 4245 |
* Prefer ex1I over ex_ex1I in single-step reasoning, e.g. by the |
22126 | 4246 |
``rule'' method. |
4247 |
||
24800 | 4248 |
* Reimplemented methods "sat" and "satx", with several improvements: |
4249 |
goals no longer need to be stated as "<prems> ==> False", equivalences |
|
4250 |
(i.e. "=" on type bool) are handled, variable names of the form |
|
4251 |
"lit_<n>" are no longer reserved, significant speedup. |
|
4252 |
||
4253 |
* Methods "sat" and "satx" can now replay MiniSat proof traces. |
|
22126 | 4254 |
zChaff is still supported as well. |
4255 |
||
4256 |
* 'inductive' and 'datatype': provide projections of mutual rules, |
|
4257 |
bundled as foo_bar.inducts; |
|
4258 |
||
4259 |
* Library: moved theories Parity, GCD, Binomial, Infinite_Set to |
|
4260 |
Library. |
|
21256 | 4261 |
|
4262 |
* Library: moved theory Accessible_Part to main HOL. |
|
19572
a4b3176f19dd
* Library: theory Accessible_Part has been move to main HOL.
wenzelm
parents:
19508
diff
changeset
|
4263 |
|
18446 | 4264 |
* Library: added theory Coinductive_List of potentially infinite lists |
4265 |
as greatest fixed-point. |
|
18399 | 4266 |
|
19254 | 4267 |
* Library: added theory AssocList which implements (finite) maps as |
19252 | 4268 |
association lists. |
17809
195045659c06
Tactics sat and satx reimplemented, several improvements
webertj
parents:
17806
diff
changeset
|
4269 |
|
24800 | 4270 |
* Method "evaluation" solves goals (i.e. a boolean expression) |
4271 |
efficiently by compiling it to ML. The goal is "proved" (via an |
|
4272 |
oracle) if it evaluates to True. |
|
20807 | 4273 |
|
4274 |
* Linear arithmetic now splits certain operators (e.g. min, max, abs) |
|
24800 | 4275 |
also when invoked by the simplifier. This results in the Simplifier |
4276 |
being more powerful on arithmetic goals. INCOMPATIBILITY. |
|
4277 |
Configuration option fast_arith_split_limit=0 recovers the old |
|
4278 |
behavior. |
|
20217
25b068a99d2b
linear arithmetic splits certain operators (e.g. min, max, abs)
webertj
parents:
20188
diff
changeset
|
4279 |
|
22126 | 4280 |
* Support for hex (0x20) and binary (0b1001) numerals. |
19254 | 4281 |
|
20807 | 4282 |
* New method: reify eqs (t), where eqs are equations for an |
4283 |
interpretation I :: 'a list => 'b => 'c and t::'c is an optional |
|
4284 |
parameter, computes a term s::'b and a list xs::'a list and proves the |
|
4285 |
theorem I xs s = t. This is also known as reification or quoting. The |
|
4286 |
resulting theorem is applied to the subgoal to substitute t with I xs |
|
4287 |
s. If t is omitted, the subgoal itself is reified. |
|
4288 |
||
4289 |
* New method: reflection corr_thm eqs (t). The parameters eqs and (t) |
|
4290 |
are as explained above. corr_thm is a theorem for I vs (f t) = I vs t, |
|
4291 |
where f is supposed to be a computable function (in the sense of code |
|
4292 |
generattion). The method uses reify to compute s and xs as above then |
|
4293 |
applies corr_thm and uses normalization by evaluation to "prove" f s = |
|
4294 |
r and finally gets the theorem t = r, which is again applied to the |
|
25177 | 4295 |
subgoal. An Example is available in src/HOL/ex/ReflectionEx.thy. |
4296 |
||
4297 |
* Reflection: Automatic reification now handels binding, an example is |
|
4298 |
available in src/HOL/ex/ReflectionEx.thy |
|
20807 | 4299 |
|
25397 | 4300 |
* HOL-Statespace: ``State Spaces: The Locale Way'' introduces a |
25409 | 4301 |
command 'statespace' that is similar to 'record', but introduces an |
25397 | 4302 |
abstract specification based on the locale infrastructure instead of |
4303 |
HOL types. This leads to extra flexibility in composing state spaces, |
|
4304 |
in particular multiple inheritance and renaming of components. |
|
4305 |
||
4306 |
||
19653 | 4307 |
*** HOL-Complex *** |
4308 |
||
22971 | 4309 |
* Hyperreal: Functions root and sqrt are now defined on negative real |
4310 |
inputs so that root n (- x) = - root n x and sqrt (- x) = - sqrt x. |
|
4311 |
Nonnegativity side conditions have been removed from many lemmas, so |
|
4312 |
that more subgoals may now be solved by simplification; potential |
|
4313 |
INCOMPATIBILITY. |
|
4314 |
||
24800 | 4315 |
* Real: new type classes formalize real normed vector spaces and |
21791 | 4316 |
algebras, using new overloaded constants scaleR :: real => 'a => 'a |
4317 |
and norm :: 'a => real. |
|
4318 |
||
24800 | 4319 |
* Real: constant of_real :: real => 'a::real_algebra_1 injects from |
4320 |
reals into other types. The overloaded constant Reals :: 'a set is now |
|
4321 |
defined as range of_real; potential INCOMPATIBILITY. |
|
4322 |
||
4323 |
* Real: proper support for ML code generation, including 'quickcheck'. |
|
23013 | 4324 |
Reals are implemented as arbitrary precision rationals. |
4325 |
||
22126 | 4326 |
* Hyperreal: Several constants that previously worked only for the |
4327 |
reals have been generalized, so they now work over arbitrary vector |
|
4328 |
spaces. Type annotations may need to be added in some cases; potential |
|
4329 |
INCOMPATIBILITY. |
|
21791 | 4330 |
|
22972
3e96b98d37c6
generalized sgn function to work on any real normed vector space
huffman
parents:
22971
diff
changeset
|
4331 |
Infinitesimal :: ('a::real_normed_vector) star set |
3e96b98d37c6
generalized sgn function to work on any real normed vector space
huffman
parents:
22971
diff
changeset
|
4332 |
HFinite :: ('a::real_normed_vector) star set |
3e96b98d37c6
generalized sgn function to work on any real normed vector space
huffman
parents:
22971
diff
changeset
|
4333 |
HInfinite :: ('a::real_normed_vector) star set |
21791 | 4334 |
approx :: ('a::real_normed_vector) star => 'a star => bool |
4335 |
monad :: ('a::real_normed_vector) star => 'a star set |
|
4336 |
galaxy :: ('a::real_normed_vector) star => 'a star set |
|
22972
3e96b98d37c6
generalized sgn function to work on any real normed vector space
huffman
parents:
22971
diff
changeset
|
4337 |
(NS)LIMSEQ :: [nat => 'a::real_normed_vector, 'a] => bool |
21791 | 4338 |
(NS)convergent :: (nat => 'a::real_normed_vector) => bool |
4339 |
(NS)Bseq :: (nat => 'a::real_normed_vector) => bool |
|
4340 |
(NS)Cauchy :: (nat => 'a::real_normed_vector) => bool |
|
4341 |
(NS)LIM :: ['a::real_normed_vector => 'b::real_normed_vector, 'a, 'b] => bool |
|
4342 |
is(NS)Cont :: ['a::real_normed_vector => 'b::real_normed_vector, 'a] => bool |
|
4343 |
deriv :: ['a::real_normed_field => 'a, 'a, 'a] => bool |
|
22972
3e96b98d37c6
generalized sgn function to work on any real normed vector space
huffman
parents:
22971
diff
changeset
|
4344 |
sgn :: 'a::real_normed_vector => 'a |
23116 | 4345 |
exp :: 'a::{recpower,real_normed_field,banach} => 'a |
21791 | 4346 |
|
4347 |
* Complex: Some complex-specific constants are now abbreviations for |
|
22126 | 4348 |
overloaded ones: complex_of_real = of_real, cmod = norm, hcmod = |
4349 |
hnorm. Other constants have been entirely removed in favor of the |
|
4350 |
polymorphic versions (INCOMPATIBILITY): |
|
21791 | 4351 |
|
4352 |
approx <-- capprox |
|
4353 |
HFinite <-- CFinite |
|
4354 |
HInfinite <-- CInfinite |
|
4355 |
Infinitesimal <-- CInfinitesimal |
|
4356 |
monad <-- cmonad |
|
4357 |
galaxy <-- cgalaxy |
|
4358 |
(NS)LIM <-- (NS)CLIM, (NS)CRLIM |
|
4359 |
is(NS)Cont <-- is(NS)Contc, is(NS)contCR |
|
4360 |
(ns)deriv <-- (ns)cderiv |
|
4361 |
||
19653 | 4362 |
|
24801 | 4363 |
*** HOL-Algebra *** |
4364 |
||
4365 |
* Formalisation of ideals and the quotient construction over rings. |
|
4366 |
||
4367 |
* Order and lattice theory no longer based on records. |
|
4368 |
INCOMPATIBILITY. |
|
4369 |
||
4370 |
* Renamed lemmas least_carrier -> least_closed and greatest_carrier -> |
|
4371 |
greatest_closed. INCOMPATIBILITY. |
|
4372 |
||
4373 |
* Method algebra is now set up via an attribute. For examples see |
|
4374 |
Ring.thy. INCOMPATIBILITY: the method is now weaker on combinations |
|
4375 |
of algebraic structures. |
|
4376 |
||
4377 |
* Renamed theory CRing to Ring. |
|
4378 |
||
4379 |
||
4380 |
*** HOL-Nominal *** |
|
4381 |
||
25148 | 4382 |
* Substantial, yet incomplete support for nominal datatypes (binding |
25177 | 4383 |
structures) based on HOL-Nominal logic. See src/HOL/Nominal and |
4384 |
src/HOL/Nominal/Examples. Prospective users should consult |
|
25148 | 4385 |
http://isabelle.in.tum.de/nominal/ |
4386 |
||
24801 | 4387 |
|
17878 | 4388 |
*** ML *** |
4389 |
||
24643 | 4390 |
* ML basics: just one true type int, which coincides with IntInf.int |
4391 |
(even on SML/NJ). |
|
4392 |
||
22138 | 4393 |
* ML within Isar: antiquotations allow to embed statically-checked |
4394 |
formal entities in the source, referring to the context available at |
|
4395 |
compile-time. For example: |
|
4396 |
||
25142 | 4397 |
ML {* @{sort "{zero,one}"} *} |
22138 | 4398 |
ML {* @{typ "'a => 'b"} *} |
4399 |
ML {* @{term "%x. x"} *} |
|
4400 |
ML {* @{prop "x == y"} *} |
|
4401 |
ML {* @{ctyp "'a => 'b"} *} |
|
4402 |
ML {* @{cterm "%x. x"} *} |
|
4403 |
ML {* @{cprop "x == y"} *} |
|
4404 |
ML {* @{thm asm_rl} *} |
|
4405 |
ML {* @{thms asm_rl} *} |
|
24692 | 4406 |
ML {* @{type_name c} *} |
25142 | 4407 |
ML {* @{type_syntax c} *} |
22376 | 4408 |
ML {* @{const_name c} *} |
4409 |
ML {* @{const_syntax c} *} |
|
22138 | 4410 |
ML {* @{context} *} |
4411 |
ML {* @{theory} *} |
|
4412 |
ML {* @{theory Pure} *} |
|
24692 | 4413 |
ML {* @{theory_ref} *} |
4414 |
ML {* @{theory_ref Pure} *} |
|
22138 | 4415 |
ML {* @{simpset} *} |
4416 |
ML {* @{claset} *} |
|
4417 |
ML {* @{clasimpset} *} |
|
4418 |
||
22151 | 4419 |
The same works for sources being ``used'' within an Isar context. |
4420 |
||
22152 | 4421 |
* ML in Isar: improved error reporting; extra verbosity with |
24706
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4422 |
ML_Context.trace enabled. |
22152 | 4423 |
|
19032 | 4424 |
* Pure/General/table.ML: the join operations now works via exceptions |
24706
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4425 |
DUP/SAME instead of type option. This is simpler in simple cases, and |
19081
085b5badb8de
* Isar/locales: new derived specification elements 'definition', 'abbreviation', 'axiomatization';
wenzelm
parents:
19034
diff
changeset
|
4426 |
admits slightly more efficient complex applications. |
18446 | 4427 |
|
24800 | 4428 |
* Pure: 'advanced' translation functions (parse_translation etc.) now |
4429 |
use Context.generic instead of just theory. |
|
4430 |
||
18642 | 4431 |
* Pure: datatype Context.generic joins theory/Proof.context and |
18644 | 4432 |
provides some facilities for code that works in either kind of |
18642 | 4433 |
context, notably GenericDataFun for uniform theory and proof data. |
4434 |
||
18737 | 4435 |
* Pure: simplified internal attribute type, which is now always |
24706
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4436 |
Context.generic * thm -> Context.generic * thm. Global (theory) vs. |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4437 |
local (Proof.context) attributes have been discontinued, while |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4438 |
minimizing code duplication. Thm.rule_attribute and |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4439 |
Thm.declaration_attribute build canonical attributes; see also structure |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4440 |
Context for further operations on Context.generic, notably |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4441 |
GenericDataFun. INCOMPATIBILITY, need to adapt attribute type |
19006
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
wenzelm
parents:
18979
diff
changeset
|
4442 |
declarations and definitions. |
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
wenzelm
parents:
18979
diff
changeset
|
4443 |
|
24800 | 4444 |
* Context data interfaces (Theory/Proof/GenericDataFun): removed |
4445 |
name/print, uninitialized data defaults to ad-hoc copy of empty value, |
|
4446 |
init only required for impure data. INCOMPATIBILITY: empty really need |
|
4447 |
to be empty (no dependencies on theory content!) |
|
4448 |
||
19508 | 4449 |
* Pure/kernel: consts certification ignores sort constraints given in |
24800 | 4450 |
signature declarations. (This information is not relevant to the |
4451 |
logic, but only for type inference.) SIGNIFICANT INTERNAL CHANGE, |
|
4452 |
potential INCOMPATIBILITY. |
|
19508 | 4453 |
|
4454 |
* Pure: axiomatic type classes are now purely definitional, with |
|
4455 |
explicit proofs of class axioms and super class relations performed |
|
24706
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4456 |
internally. See Pure/axclass.ML for the main internal interfaces -- |
36856
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
wenzelm
parents:
36849
diff
changeset
|
4457 |
notably AxClass.define_class supercedes AxClass.add_axclass, and |
24706
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4458 |
AxClass.axiomatize_class/classrel/arity supersede |
19508 | 4459 |
Sign.add_classes/classrel/arities. |
4460 |
||
19006
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
wenzelm
parents:
18979
diff
changeset
|
4461 |
* Pure/Isar: Args/Attrib parsers operate on Context.generic -- |
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
wenzelm
parents:
18979
diff
changeset
|
4462 |
global/local versions on theory vs. Proof.context have been |
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
wenzelm
parents:
18979
diff
changeset
|
4463 |
discontinued; Attrib.syntax and Method.syntax have been adapted |
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
wenzelm
parents:
18979
diff
changeset
|
4464 |
accordingly. INCOMPATIBILITY, need to adapt parser expressions for |
2427684c201c
* ML/Pure: generic Args/Attrib syntax everywhere;
wenzelm
parents:
18979
diff
changeset
|
4465 |
attributes, methods, etc. |
18642 | 4466 |
|
18446 | 4467 |
* Pure: several functions of signature "... -> theory -> theory * ..." |
4468 |
have been reoriented to "... -> theory -> ... * theory" in order to |
|
4469 |
allow natural usage in combination with the ||>, ||>>, |-> and |
|
4470 |
fold_map combinators. |
|
18051 | 4471 |
|
21647
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
wenzelm
parents:
21595
diff
changeset
|
4472 |
* Pure: official theorem names (closed derivations) and additional |
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
wenzelm
parents:
21595
diff
changeset
|
4473 |
comments (tags) are now strictly separate. Name hints -- which are |
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
wenzelm
parents:
21595
diff
changeset
|
4474 |
maintained as tags -- may be attached any time without affecting the |
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
wenzelm
parents:
21595
diff
changeset
|
4475 |
derivation. |
fccafa917a68
* Pure: official theorem names and additional comments are now strictly separate.
wenzelm
parents:
21595
diff
changeset
|
4476 |
|
18020 | 4477 |
* Pure: primitive rule lift_rule now takes goal cterm instead of an |
18145 | 4478 |
actual goal state (thm). Use Thm.lift_rule (Thm.cprem_of st i) to |
18020 | 4479 |
achieve the old behaviour. |
4480 |
||
4481 |
* Pure: the "Goal" constant is now called "prop", supporting a |
|
4482 |
slightly more general idea of ``protecting'' meta-level rule |
|
4483 |
statements. |
|
4484 |
||
20040
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4485 |
* Pure: Logic.(un)varify only works in a global context, which is now |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4486 |
enforced instead of silently assumed. INCOMPATIBILITY, may use |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4487 |
Logic.legacy_(un)varify as temporary workaround. |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4488 |
|
20090 | 4489 |
* Pure: structure Name provides scalable operations for generating |
4490 |
internal variable names, notably Name.variants etc. This replaces |
|
4491 |
some popular functions from term.ML: |
|
4492 |
||
4493 |
Term.variant -> Name.variant |
|
24800 | 4494 |
Term.variantlist -> Name.variant_list |
20090 | 4495 |
Term.invent_names -> Name.invent_list |
4496 |
||
4497 |
Note that low-level renaming rarely occurs in new code -- operations |
|
4498 |
from structure Variable are used instead (see below). |
|
4499 |
||
20040
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4500 |
* Pure: structure Variable provides fundamental operations for proper |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4501 |
treatment of fixed/schematic variables in a context. For example, |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4502 |
Variable.import introduces fixes for schematics of given facts and |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4503 |
Variable.export reverses the effect (up to renaming) -- this replaces |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4504 |
various freeze_thaw operations. |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4505 |
|
18567 | 4506 |
* Pure: structure Goal provides simple interfaces for |
17981
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
4507 |
init/conclude/finish and tactical prove operations (replacing former |
20040
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4508 |
Tactic.prove). Goal.prove is the canonical way to prove results |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4509 |
within a given context; Goal.prove_global is a degraded version for |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4510 |
theory level goals, including a global Drule.standard. Note that |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4511 |
OldGoals.prove_goalw_cterm has long been obsolete, since it is |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4512 |
ill-behaved in a local proof context (e.g. with local fixes/assumes or |
02c59ec2f2e1
* Pure: structure Variable provides operations for proper treatment of fixed/schematic variables;
wenzelm
parents:
20013
diff
changeset
|
4513 |
in a locale context). |
17981
2602be0d99ae
* Legacy goal package: reduced interface to the bare minimum required to keep existing proof scripts running.
wenzelm
parents:
17918
diff
changeset
|
4514 |
|
24706
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4515 |
* Pure/Syntax: generic interfaces for parsing (Syntax.parse_term etc.) |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4516 |
and type checking (Syntax.check_term etc.), with common combinations |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4517 |
(Syntax.read_term etc.). These supersede former Sign.read_term etc. |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4518 |
which are considered legacy and await removal. |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4519 |
|
24920 | 4520 |
* Pure/Syntax: generic interfaces for type unchecking |
4521 |
(Syntax.uncheck_terms etc.) and unparsing (Syntax.unparse_term etc.), |
|
4522 |
with common combinations (Syntax.pretty_term, Syntax.string_of_term |
|
4523 |
etc.). Former Sign.pretty_term, Sign.string_of_term etc. are still |
|
24924 | 4524 |
available for convenience, but refer to the very same operations using |
4525 |
a mere theory instead of a full context. |
|
24920 | 4526 |
|
18815
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
4527 |
* Isar: simplified treatment of user-level errors, using exception |
18687 | 4528 |
ERROR of string uniformly. Function error now merely raises ERROR, |
18686
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4529 |
without any side effect on output channels. The Isar toplevel takes |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4530 |
care of proper display of ERROR exceptions. ML code may use plain |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4531 |
handle/can/try; cat_error may be used to concatenate errors like this: |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4532 |
|
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4533 |
... handle ERROR msg => cat_error msg "..." |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4534 |
|
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4535 |
Toplevel ML code (run directly or through the Isar toplevel) may be |
18687 | 4536 |
embedded into the Isar toplevel with exception display/debug like |
4537 |
this: |
|
18686
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4538 |
|
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4539 |
Isar.toplevel (fn () => ...) |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4540 |
|
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4541 |
INCOMPATIBILITY, removed special transform_error facilities, removed |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4542 |
obsolete variants of user-level exceptions (ERROR_MESSAGE, |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4543 |
Context.PROOF, ProofContext.CONTEXT, Proof.STATE, ProofHistory.FAIL) |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4544 |
-- use plain ERROR instead. |
cbbc71acf994
* ML/Isar: simplified treatment of user-level errors;
wenzelm
parents:
18674
diff
changeset
|
4545 |
|
18815
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
4546 |
* Isar: theory setup now has type (theory -> theory), instead of a |
18722
0888eca0f1be
* ML/Isar: theory setup has type (theory -> theory);
wenzelm
parents:
18696
diff
changeset
|
4547 |
list. INCOMPATIBILITY, may use #> to compose setup functions. |
0888eca0f1be
* ML/Isar: theory setup has type (theory -> theory);
wenzelm
parents:
18696
diff
changeset
|
4548 |
|
24706
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4549 |
* Isar: ML toplevel pretty printer for type Proof.context, subject to |
c58547ff329b
* Pure/Syntax: generic interfaces for parsing and type checking;
wenzelm
parents:
24699
diff
changeset
|
4550 |
ProofContext.debug/verbose flags. |
18815
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
4551 |
|
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
4552 |
* Isar: Toplevel.theory_to_proof admits transactions that modify the |
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
4553 |
theory before entering a proof state. Transactions now always see a |
cb778c0ce1b5
Pure/Isar: (un)folded, (un)fold, unfolding support
wenzelm
parents:
18738
diff
changeset
|
4554 |
quasi-functional intermediate checkpoint, both in interactive and |
18590
f6a553aa3d81
Pure/Isar: Toplevel.theory_to_proof admits transactions that modify the theory;
wenzelm
parents:
18568
diff
changeset
|
4555 |
batch mode. |
18567 | 4556 |
|
24867 | 4557 |
* Isar: simplified interfaces for outer syntax. Renamed |
4558 |
OuterSyntax.add_keywords to OuterSyntax.keywords. Removed |
|
4559 |
OuterSyntax.add_parsers -- this functionality is now included in |
|
4560 |
OuterSyntax.command etc. INCOMPATIBILITY. |
|
4561 |
||
17878 | 4562 |
* Simplifier: the simpset of a running simplification process now |
4563 |
contains a proof context (cf. Simplifier.the_context), which is the |
|
4564 |
very context that the initial simpset has been retrieved from (by |
|
17890 | 4565 |
simpset_of/local_simpset_of). Consequently, all plug-in components |
17878 | 4566 |
(solver, looper etc.) may depend on arbitrary proof data. |
4567 |
||
4568 |
* Simplifier.inherit_context inherits the proof context (plus the |
|
4569 |
local bounds) of the current simplification process; any simproc |
|
4570 |
etc. that calls the Simplifier recursively should do this! Removed |
|
4571 |
former Simplifier.inherit_bounds, which is already included here -- |
|
17890 | 4572 |
INCOMPATIBILITY. Tools based on low-level rewriting may even have to |
4573 |
specify an explicit context using Simplifier.context/theory_context. |
|
17878 | 4574 |
|
4575 |
* Simplifier/Classical Reasoner: more abstract interfaces |
|
4576 |
change_simpset/claset for modifying the simpset/claset reference of a |
|
4577 |
theory; raw versions simpset/claset_ref etc. have been discontinued -- |
|
4578 |
INCOMPATIBILITY. |
|
4579 |
||
18540 | 4580 |
* Provers: more generic wrt. syntax of object-logics, avoid hardwired |
4581 |
"Trueprop" etc. |
|
4582 |
||
17878 | 4583 |
|
20988
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
wenzelm
parents:
20951
diff
changeset
|
4584 |
*** System *** |
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
wenzelm
parents:
20951
diff
changeset
|
4585 |
|
25433 | 4586 |
* settings: the default heap location within ISABELLE_HOME_USER now |
4587 |
includes ISABELLE_IDENTIFIER. This simplifies use of multiple |
|
4588 |
Isabelle installations. |
|
21471
03a5ef1936c5
* settings: ML_IDENTIFIER includes the Isabelle version identifier;
wenzelm
parents:
21462
diff
changeset
|
4589 |
|
20988
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
wenzelm
parents:
20951
diff
changeset
|
4590 |
* isabelle-process: option -S (secure mode) disables some critical |
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
wenzelm
parents:
20951
diff
changeset
|
4591 |
operations, notably runtime compilation and evaluation of ML source |
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
wenzelm
parents:
20951
diff
changeset
|
4592 |
code. |
0887d0dd3210
* isabelle-process: option -S (secure mode) disables some critical operations;
wenzelm
parents:
20951
diff
changeset
|
4593 |
|
24891 | 4594 |
* Basic Isabelle mode for jEdit, see Isabelle/lib/jedit/. |
4595 |
||
24801 | 4596 |
* Support for parallel execution, using native multicore support of |
24800 | 4597 |
Poly/ML 5.1. The theory loader exploits parallelism when processing |
4598 |
independent theories, according to the given theory header |
|
4599 |
specifications. The maximum number of worker threads is specified via |
|
4600 |
usedir option -M or the "max-threads" setting in Proof General. A |
|
4601 |
speedup factor of 1.5--3.5 can be expected on a 4-core machine, and up |
|
4602 |
to 6 on a 8-core machine. User-code needs to observe certain |
|
4603 |
guidelines for thread-safe programming, see appendix A in the Isar |
|
4604 |
Implementation manual. |
|
24210
a865059c4fcb
* Experimental support for multithreading, using Poly/ML 5.1;
wenzelm
parents:
24187
diff
changeset
|
4605 |
|
17754
58a306d9f736
* Command 'find_theorems': support * wildcard in name: criterion.
wenzelm
parents:
17725
diff
changeset
|
4606 |
|
25448 | 4607 |
|
17720 | 4608 |
New in Isabelle2005 (October 2005) |
4609 |
---------------------------------- |
|
14655
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
wenzelm
parents:
14624
diff
changeset
|
4610 |
|
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
wenzelm
parents:
14624
diff
changeset
|
4611 |
*** General *** |
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
wenzelm
parents:
14624
diff
changeset
|
4612 |
|
15130 | 4613 |
* Theory headers: the new header syntax for Isar theories is |
4614 |
||
4615 |
theory <name> |
|
16234 | 4616 |
imports <theory1> ... <theoryN> |
4617 |
uses <file1> ... <fileM> |
|
15130 | 4618 |
begin |
4619 |
||
16234 | 4620 |
where the 'uses' part is optional. The previous syntax |
4621 |
||
4622 |
theory <name> = <theory1> + ... + <theoryN>: |
|
4623 |
||
16717 | 4624 |
will disappear in the next release. Use isatool fixheaders to convert |
4625 |
existing theory files. Note that there is no change in ancient |
|
17371 | 4626 |
non-Isar theories now, but these will disappear soon. |
15130 | 4627 |
|
15475
fdf9434b04ea
- Proofs are now hidden by default when generating documents
berghofe
parents:
15454
diff
changeset
|
4628 |
* Theory loader: parent theories can now also be referred to via |
16234 | 4629 |
relative and absolute paths. |
4630 |
||
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4631 |
* Command 'find_theorems' searches for a list of criteria instead of a |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4632 |
list of constants. Known criteria are: intro, elim, dest, name:string, |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4633 |
simp:term, and any term. Criteria can be preceded by '-' to select |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4634 |
theorems that do not match. Intro, elim, dest select theorems that |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4635 |
match the current goal, name:s selects theorems whose fully qualified |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4636 |
name contain s, and simp:term selects all simplification rules whose |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4637 |
lhs match term. Any other term is interpreted as pattern and selects |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4638 |
all theorems matching the pattern. Available in ProofGeneral under |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4639 |
'ProofGeneral -> Find Theorems' or C-c C-f. Example: |
16234 | 4640 |
|
17275
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4641 |
C-c C-f (100) "(_::nat) + _ + _" intro -name: "HOL." |
16234 | 4642 |
|
4643 |
prints the last 100 theorems matching the pattern "(_::nat) + _ + _", |
|
4644 |
matching the current goal as introduction rule and not having "HOL." |
|
4645 |
in their name (i.e. not being defined in theory HOL). |
|
16013
3010430d894d
removed find_rewrites (superceded by improved thms_containing);
wenzelm
parents:
16000
diff
changeset
|
4646 |
|
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4647 |
* Command 'thms_containing' has been discontinued in favour of |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4648 |
'find_theorems'; INCOMPATIBILITY. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4649 |
|
17385 | 4650 |
* Communication with Proof General is now 8bit clean, which means that |
4651 |
Unicode text in UTF-8 encoding may be used within theory texts (both |
|
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
4652 |
formal and informal parts). Cf. option -U of the Isabelle Proof |
17538 | 4653 |
General interface. Here are some simple examples (cf. src/HOL/ex): |
4654 |
||
4655 |
http://isabelle.in.tum.de/library/HOL/ex/Hebrew.html |
|
4656 |
http://isabelle.in.tum.de/library/HOL/ex/Chinese.html |
|
17385 | 4657 |
|
17425 | 4658 |
* Improved efficiency of the Simplifier and, to a lesser degree, the |
4659 |
Classical Reasoner. Typical big applications run around 2 times |
|
4660 |
faster. |
|
4661 |
||
15703 | 4662 |
|
4663 |
*** Document preparation *** |
|
4664 |
||
16234 | 4665 |
* Commands 'display_drafts' and 'print_drafts' perform simple output |
4666 |
of raw sources. Only those symbols that do not require additional |
|
4667 |
LaTeX packages (depending on comments in isabellesym.sty) are |
|
4668 |
displayed properly, everything else is left verbatim. isatool display |
|
4669 |
and isatool print are used as front ends (these are subject to the |
|
4670 |
DVI/PDF_VIEWER and PRINT_COMMAND settings, respectively). |
|
4671 |
||
17047
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4672 |
* Command tags control specific markup of certain regions of text, |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4673 |
notably folding and hiding. Predefined tags include "theory" (for |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4674 |
theory begin and end), "proof" for proof commands, and "ML" for |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4675 |
commands involving ML code; the additional tags "visible" and |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4676 |
"invisible" are unused by default. Users may give explicit tag |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4677 |
specifications in the text, e.g. ''by %invisible (auto)''. The |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4678 |
interpretation of tags is determined by the LaTeX job during document |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4679 |
preparation: see option -V of isatool usedir, or options -n and -t of |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4680 |
isatool document, or even the LaTeX macros \isakeeptag, \isafoldtag, |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4681 |
\isadroptag. |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4682 |
|
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4683 |
Several document versions may be produced at the same time via isatool |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4684 |
usedir (the generated index.html will link all of them). Typical |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4685 |
specifications include ''-V document=theory,proof,ML'' to present |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4686 |
theory/proof/ML parts faithfully, ''-V outline=/proof,/ML'' to fold |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4687 |
proof and ML commands, and ''-V mutilated=-theory,-proof,-ML'' to omit |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4688 |
these parts without any formal replacement text. The Isabelle site |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4689 |
default settings produce ''document'' and ''outline'' versions as |
e2e2d75bb37b
* Command tags control specific markup of certain regions of text (replaces usedir -H);
wenzelm
parents:
17016
diff
changeset
|
4690 |
specified above. |
16234 | 4691 |
|
17402 | 4692 |
* Several new antiquotations: |
15979 | 4693 |
|
4694 |
@{term_type term} prints a term with its type annotated; |
|
4695 |
||
4696 |
@{typeof term} prints the type of a term; |
|
4697 |
||
16234 | 4698 |
@{const const} is the same as @{term const}, but checks that the |
4699 |
argument is a known logical constant; |
|
15979 | 4700 |
|
4701 |
@{term_style style term} and @{thm_style style thm} print a term or |
|
16234 | 4702 |
theorem applying a "style" to it |
4703 |
||
17117
e2bed9e82454
* The ML antiquotation prints type-checked ML expressions verbatim.
wenzelm
parents:
17097
diff
changeset
|
4704 |
@{ML text} |
e2bed9e82454
* The ML antiquotation prints type-checked ML expressions verbatim.
wenzelm
parents:
17097
diff
changeset
|
4705 |
|
16234 | 4706 |
Predefined styles are 'lhs' and 'rhs' printing the lhs/rhs of |
4707 |
definitions, equations, inequations etc., 'concl' printing only the |
|
17393 | 4708 |
conclusion of a meta-logical statement theorem, and 'prem1' .. 'prem19' |
16234 | 4709 |
to print the specified premise. TermStyle.add_style provides an ML |
4710 |
interface for introducing further styles. See also the "LaTeX Sugar" |
|
17117
e2bed9e82454
* The ML antiquotation prints type-checked ML expressions verbatim.
wenzelm
parents:
17097
diff
changeset
|
4711 |
document practical applications. The ML antiquotation prints |
e2bed9e82454
* The ML antiquotation prints type-checked ML expressions verbatim.
wenzelm
parents:
17097
diff
changeset
|
4712 |
type-checked ML expressions verbatim. |
16234 | 4713 |
|
17259
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
wenzelm
parents:
17228
diff
changeset
|
4714 |
* Markup commands 'chapter', 'section', 'subsection', 'subsubsection', |
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
wenzelm
parents:
17228
diff
changeset
|
4715 |
and 'text' support optional locale specification '(in loc)', which |
17269 | 4716 |
specifies the default context for interpreting antiquotations. For |
4717 |
example: 'text (in lattice) {* @{thm inf_assoc}*}'. |
|
17259
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
wenzelm
parents:
17228
diff
changeset
|
4718 |
|
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
wenzelm
parents:
17228
diff
changeset
|
4719 |
* Option 'locale=NAME' of antiquotations specifies an alternative |
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
wenzelm
parents:
17228
diff
changeset
|
4720 |
context interpreting the subsequent argument. For example: @{thm |
17269 | 4721 |
[locale=lattice] inf_assoc}. |
17259
dda237f1d299
Markup commands 'chapter' .. 'text' support optional locale specification;
wenzelm
parents:
17228
diff
changeset
|
4722 |
|
17097
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4723 |
* Proper output of proof terms (@{prf ...} and @{full_prf ...}) within |
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4724 |
a proof context. |
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4725 |
|
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4726 |
* Proper output of antiquotations for theory commands involving a |
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4727 |
proof context (such as 'locale' or 'theorem (in loc) ...'). |
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4728 |
|
17193
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
wenzelm
parents:
17189
diff
changeset
|
4729 |
* Delimiters of outer tokens (string etc.) now produce separate LaTeX |
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
wenzelm
parents:
17189
diff
changeset
|
4730 |
macros (\isachardoublequoteopen, isachardoublequoteclose etc.). |
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
wenzelm
parents:
17189
diff
changeset
|
4731 |
|
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
wenzelm
parents:
17189
diff
changeset
|
4732 |
* isatool usedir: new option -C (default true) controls whether option |
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
wenzelm
parents:
17189
diff
changeset
|
4733 |
-D should include a copy of the original document directory; -C false |
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
wenzelm
parents:
17189
diff
changeset
|
4734 |
prevents unwanted effects such as copying of administrative CVS data. |
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
wenzelm
parents:
17189
diff
changeset
|
4735 |
|
16234 | 4736 |
|
4737 |
*** Pure *** |
|
4738 |
||
4739 |
* Considerably improved version of 'constdefs' command. Now performs |
|
4740 |
automatic type-inference of declared constants; additional support for |
|
4741 |
local structure declarations (cf. locales and HOL records), see also |
|
4742 |
isar-ref manual. Potential INCOMPATIBILITY: need to observe strictly |
|
4743 |
sequential dependencies of definitions within a single 'constdefs' |
|
4744 |
section; moreover, the declared name needs to be an identifier. If |
|
4745 |
all fails, consider to fall back on 'consts' and 'defs' separately. |
|
4746 |
||
4747 |
* Improved indexed syntax and implicit structures. First of all, |
|
4748 |
indexed syntax provides a notational device for subscripted |
|
4749 |
application, using the new syntax \<^bsub>term\<^esub> for arbitrary |
|
4750 |
expressions. Secondly, in a local context with structure |
|
4751 |
declarations, number indexes \<^sub>n or the empty index (default |
|
4752 |
number 1) refer to a certain fixed variable implicitly; option |
|
4753 |
show_structs controls printing of implicit structures. Typical |
|
4754 |
applications of these concepts involve record types and locales. |
|
4755 |
||
4756 |
* New command 'no_syntax' removes grammar declarations (and |
|
4757 |
translations) resulting from the given syntax specification, which is |
|
4758 |
interpreted in the same manner as for the 'syntax' command. |
|
4759 |
||
4760 |
* 'Advanced' translation functions (parse_translation etc.) may depend |
|
4761 |
on the signature of the theory context being presently used for |
|
4762 |
parsing/printing, see also isar-ref manual. |
|
4763 |
||
16856 | 4764 |
* Improved 'oracle' command provides a type-safe interface to turn an |
4765 |
ML expression of type theory -> T -> term into a primitive rule of |
|
4766 |
type theory -> T -> thm (i.e. the functionality of Thm.invoke_oracle |
|
4767 |
is already included here); see also FOL/ex/IffExample.thy; |
|
4768 |
INCOMPATIBILITY. |
|
4769 |
||
17275
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4770 |
* axclass: name space prefix for class "c" is now "c_class" (was "c" |
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4771 |
before); "cI" is no longer bound, use "c.intro" instead. |
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4772 |
INCOMPATIBILITY. This change avoids clashes of fact bindings for |
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4773 |
axclasses vs. locales. |
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4774 |
|
16234 | 4775 |
* Improved internal renaming of symbolic identifiers -- attach primes |
4776 |
instead of base 26 numbers. |
|
4777 |
||
4778 |
* New flag show_question_marks controls printing of leading question |
|
4779 |
marks in schematic variable names. |
|
4780 |
||
4781 |
* In schematic variable names, *any* symbol following \<^isub> or |
|
4782 |
\<^isup> is now treated as part of the base name. For example, the |
|
4783 |
following works without printing of awkward ".0" indexes: |
|
4784 |
||
4785 |
lemma "x\<^isub>1 = x\<^isub>2 ==> x\<^isub>2 = x\<^isub>1" |
|
4786 |
by simp |
|
4787 |
||
4788 |
* Inner syntax includes (*(*nested*) comments*). |
|
4789 |
||
17548 | 4790 |
* Pretty printer now supports unbreakable blocks, specified in mixfix |
16234 | 4791 |
annotations as "(00...)". |
4792 |
||
4793 |
* Clear separation of logical types and nonterminals, where the latter |
|
4794 |
may only occur in 'syntax' specifications or type abbreviations. |
|
4795 |
Before that distinction was only partially implemented via type class |
|
4796 |
"logic" vs. "{}". Potential INCOMPATIBILITY in rare cases of improper |
|
4797 |
use of 'types'/'consts' instead of 'nonterminals'/'syntax'. Some very |
|
4798 |
exotic syntax specifications may require further adaption |
|
17691 | 4799 |
(e.g. Cube/Cube.thy). |
16234 | 4800 |
|
4801 |
* Removed obsolete type class "logic", use the top sort {} instead. |
|
4802 |
Note that non-logical types should be declared as 'nonterminals' |
|
4803 |
rather than 'types'. INCOMPATIBILITY for new object-logic |
|
4804 |
specifications. |
|
4805 |
||
17095 | 4806 |
* Attributes 'induct' and 'cases': type or set names may now be |
4807 |
locally fixed variables as well. |
|
4808 |
||
16234 | 4809 |
* Simplifier: can now control the depth to which conditional rewriting |
4810 |
is traced via the PG menu Isabelle -> Settings -> Trace Simp Depth |
|
4811 |
Limit. |
|
4812 |
||
4813 |
* Simplifier: simplification procedures may now take the current |
|
4814 |
simpset into account (cf. Simplifier.simproc(_i) / mk_simproc |
|
4815 |
interface), which is very useful for calling the Simplifier |
|
4816 |
recursively. Minor INCOMPATIBILITY: the 'prems' argument of simprocs |
|
4817 |
is gone -- use prems_of_ss on the simpset instead. Moreover, the |
|
4818 |
low-level mk_simproc no longer applies Logic.varify internally, to |
|
4819 |
allow for use in a context of fixed variables. |
|
4820 |
||
4821 |
* thin_tac now works even if the assumption being deleted contains !! |
|
4822 |
or ==>. More generally, erule now works even if the major premise of |
|
4823 |
the elimination rule contains !! or ==>. |
|
4824 |
||
17597 | 4825 |
* Method 'rules' has been renamed to 'iprover'. INCOMPATIBILITY. |
17590 | 4826 |
|
16234 | 4827 |
* Reorganized bootstrapping of the Pure theories; CPure is now derived |
4828 |
from Pure, which contains all common declarations already. Both |
|
4829 |
theories are defined via plain Isabelle/Isar .thy files. |
|
4830 |
INCOMPATIBILITY: elements of CPure (such as the CPure.intro / |
|
4831 |
CPure.elim / CPure.dest attributes) now appear in the Pure name space; |
|
4832 |
use isatool fixcpure to adapt your theory and ML sources. |
|
4833 |
||
4834 |
* New syntax 'name(i-j, i-, i, ...)' for referring to specific |
|
4835 |
selections of theorems in named facts via index ranges. |
|
4836 |
||
17097
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4837 |
* 'print_theorems': in theory mode, really print the difference |
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4838 |
wrt. the last state (works for interactive theory development only), |
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4839 |
in proof mode print all local facts (cf. 'print_facts'); |
78f1b66f70a4
* Proper output of proof terms within a proof context;
wenzelm
parents:
17095
diff
changeset
|
4840 |
|
17397 | 4841 |
* 'hide': option '(open)' hides only base names. |
4842 |
||
17275
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4843 |
* More efficient treatment of intermediate checkpoints in interactive |
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4844 |
theory development. |
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
4845 |
|
17663
28be54ff74f8
Added entries for code_module, code_library, and value.
berghofe
parents:
17641
diff
changeset
|
4846 |
* Code generator is now invoked via code_module (incremental code |
17664 | 4847 |
generation) and code_library (modular code generation, ML structures |
4848 |
for each theory). INCOMPATIBILITY: new keywords 'file' and 'contains' |
|
4849 |
must be quoted when used as identifiers. |
|
4850 |
||
4851 |
* New 'value' command for reading, evaluating and printing terms using |
|
4852 |
the code generator. INCOMPATIBILITY: command keyword 'value' must be |
|
4853 |
quoted when used as identifier. |
|
17663
28be54ff74f8
Added entries for code_module, code_library, and value.
berghofe
parents:
17641
diff
changeset
|
4854 |
|
16234 | 4855 |
|
4856 |
*** Locales *** |
|
17095 | 4857 |
|
17385 | 4858 |
* New commands for the interpretation of locale expressions in |
4859 |
theories (1), locales (2) and proof contexts (3). These generate |
|
4860 |
proof obligations from the expression specification. After the |
|
4861 |
obligations have been discharged, theorems of the expression are added |
|
4862 |
to the theory, target locale or proof context. The synopsis of the |
|
4863 |
commands is a follows: |
|
4864 |
||
17095 | 4865 |
(1) interpretation expr inst |
4866 |
(2) interpretation target < expr |
|
4867 |
(3) interpret expr inst |
|
17385 | 4868 |
|
17095 | 4869 |
Interpretation in theories and proof contexts require a parameter |
4870 |
instantiation of terms from the current context. This is applied to |
|
17385 | 4871 |
specifications and theorems of the interpreted expression. |
4872 |
Interpretation in locales only permits parameter renaming through the |
|
4873 |
locale expression. Interpretation is smart in that interpretations |
|
4874 |
that are active already do not occur in proof obligations, neither are |
|
4875 |
instantiated theorems stored in duplicate. Use 'print_interps' to |
|
4876 |
inspect active interpretations of a particular locale. For details, |
|
17436 | 4877 |
see the Isar Reference manual. Examples can be found in |
4878 |
HOL/Finite_Set.thy and HOL/Algebra/UnivPoly.thy. |
|
16234 | 4879 |
|
4880 |
INCOMPATIBILITY: former 'instantiate' has been withdrawn, use |
|
4881 |
'interpret' instead. |
|
4882 |
||
17385 | 4883 |
* New context element 'constrains' for adding type constraints to |
4884 |
parameters. |
|
4885 |
||
4886 |
* Context expressions: renaming of parameters with syntax |
|
4887 |
redeclaration. |
|
17095 | 4888 |
|
4889 |
* Locale declaration: 'includes' disallowed. |
|
4890 |
||
16234 | 4891 |
* Proper static binding of attribute syntax -- i.e. types / terms / |
4892 |
facts mentioned as arguments are always those of the locale definition |
|
4893 |
context, independently of the context of later invocations. Moreover, |
|
4894 |
locale operations (renaming and type / term instantiation) are applied |
|
4895 |
to attribute arguments as expected. |
|
4896 |
||
4897 |
INCOMPATIBILITY of the ML interface: always pass Attrib.src instead of |
|
4898 |
actual attributes; rare situations may require Attrib.attribute to |
|
4899 |
embed those attributes into Attrib.src that lack concrete syntax. |
|
4900 |
Attribute implementations need to cooperate properly with the static |
|
4901 |
binding mechanism. Basic parsers Args.XXX_typ/term/prop and |
|
4902 |
Attrib.XXX_thm etc. already do the right thing without further |
|
4903 |
intervention. Only unusual applications -- such as "where" or "of" |
|
4904 |
(cf. src/Pure/Isar/attrib.ML), which process arguments depending both |
|
4905 |
on the context and the facts involved -- may have to assign parsed |
|
4906 |
values to argument tokens explicitly. |
|
4907 |
||
4908 |
* Changed parameter management in theorem generation for long goal |
|
4909 |
statements with 'includes'. INCOMPATIBILITY: produces a different |
|
4910 |
theorem statement in rare situations. |
|
4911 |
||
17228 | 4912 |
* Locale inspection command 'print_locale' omits notes elements. Use |
4913 |
'print_locale!' to have them included in the output. |
|
4914 |
||
16234 | 4915 |
|
4916 |
*** Provers *** |
|
4917 |
||
4918 |
* Provers/hypsubst.ML: improved version of the subst method, for |
|
4919 |
single-step rewriting: it now works in bound variable contexts. New is |
|
4920 |
'subst (asm)', for rewriting an assumption. INCOMPATIBILITY: may |
|
4921 |
rewrite a different subterm than the original subst method, which is |
|
4922 |
still available as 'simplesubst'. |
|
4923 |
||
4924 |
* Provers/quasi.ML: new transitivity reasoners for transitivity only |
|
4925 |
and quasi orders. |
|
4926 |
||
4927 |
* Provers/trancl.ML: new transitivity reasoner for transitive and |
|
4928 |
reflexive-transitive closure of relations. |
|
4929 |
||
4930 |
* Provers/blast.ML: new reference depth_limit to make blast's depth |
|
4931 |
limit (previously hard-coded with a value of 20) user-definable. |
|
4932 |
||
4933 |
* Provers/simplifier.ML has been moved to Pure, where Simplifier.setup |
|
4934 |
is peformed already. Object-logics merely need to finish their |
|
4935 |
initial simpset configuration as before. INCOMPATIBILITY. |
|
15703 | 4936 |
|
15475
fdf9434b04ea
- Proofs are now hidden by default when generating documents
berghofe
parents:
15454
diff
changeset
|
4937 |
|
14700
2f885b7e5ba7
reimplementation of HOL records; only one type is created for
schirmer
parents:
14699
diff
changeset
|
4938 |
*** HOL *** |
2f885b7e5ba7
reimplementation of HOL records; only one type is created for
schirmer
parents:
14699
diff
changeset
|
4939 |
|
16234 | 4940 |
* Symbolic syntax of Hilbert Choice Operator is now as follows: |
14878 | 4941 |
|
4942 |
syntax (epsilon) |
|
4943 |
"_Eps" :: "[pttrn, bool] => 'a" ("(3\<some>_./ _)" [0, 10] 10) |
|
4944 |
||
16234 | 4945 |
The symbol \<some> is displayed as the alternative epsilon of LaTeX |
4946 |
and x-symbol; use option '-m epsilon' to get it actually printed. |
|
4947 |
Moreover, the mathematically important symbolic identifier \<epsilon> |
|
4948 |
becomes available as variable, constant etc. INCOMPATIBILITY, |
|
4949 |
||
4950 |
* "x > y" abbreviates "y < x" and "x >= y" abbreviates "y <= x". |
|
4951 |
Similarly for all quantifiers: "ALL x > y" etc. The x-symbol for >= |
|
17371 | 4952 |
is \<ge>. New transitivity rules have been added to HOL/Orderings.thy to |
17016
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
avigad
parents:
16997
diff
changeset
|
4953 |
support corresponding Isar calculations. |
16234 | 4954 |
|
4955 |
* "{x:A. P}" abbreviates "{x. x:A & P}", and similarly for "\<in>" |
|
4956 |
instead of ":". |
|
4957 |
||
4958 |
* theory SetInterval: changed the syntax for open intervals: |
|
4959 |
||
4960 |
Old New |
|
4961 |
{..n(} {..<n} |
|
4962 |
{)n..} {n<..} |
|
4963 |
{m..n(} {m..<n} |
|
4964 |
{)m..n} {m<..n} |
|
4965 |
{)m..n(} {m<..<n} |
|
4966 |
||
4967 |
The old syntax is still supported but will disappear in the next |
|
4968 |
release. For conversion use the following Emacs search and replace |
|
4969 |
patterns (these are not perfect but work quite well): |
|
15046 | 4970 |
|
4971 |
{)\([^\.]*\)\.\. -> {\1<\.\.} |
|
4972 |
\.\.\([^(}]*\)(} -> \.\.<\1} |
|
4973 |
||
17533 | 4974 |
* Theory Commutative_Ring (in Library): method comm_ring for proving |
4975 |
equalities in commutative rings; method 'algebra' provides a generic |
|
4976 |
interface. |
|
17389
b4743198b939
Method comm_ring for proving equalities in commutative rings.
wenzelm
parents:
17385
diff
changeset
|
4977 |
|
b4743198b939
Method comm_ring for proving equalities in commutative rings.
wenzelm
parents:
17385
diff
changeset
|
4978 |
* Theory Finite_Set: changed the syntax for 'setsum', summation over |
16234 | 4979 |
finite sets: "setsum (%x. e) A", which used to be "\<Sum>x:A. e", is |
17371 | 4980 |
now either "SUM x:A. e" or "\<Sum>x \<in> A. e". The bound variable can |
17189 | 4981 |
be a tuple pattern. |
16234 | 4982 |
|
4983 |
Some new syntax forms are available: |
|
4984 |
||
4985 |
"\<Sum>x | P. e" for "setsum (%x. e) {x. P}" |
|
4986 |
"\<Sum>x = a..b. e" for "setsum (%x. e) {a..b}" |
|
4987 |
"\<Sum>x = a..<b. e" for "setsum (%x. e) {a..<b}" |
|
4988 |
"\<Sum>x < k. e" for "setsum (%x. e) {..<k}" |
|
4989 |
||
4990 |
The latter form "\<Sum>x < k. e" used to be based on a separate |
|
4991 |
function "Summation", which has been discontinued. |
|
4992 |
||
4993 |
* theory Finite_Set: in structured induction proofs, the insert case |
|
4994 |
is now 'case (insert x F)' instead of the old counterintuitive 'case |
|
4995 |
(insert F x)'. |
|
4996 |
||
4997 |
* The 'refute' command has been extended to support a much larger |
|
4998 |
fragment of HOL, including axiomatic type classes, constdefs and |
|
4999 |
typedefs, inductive datatypes and recursion. |
|
5000 |
||
17700 | 5001 |
* New tactics 'sat' and 'satx' to prove propositional tautologies. |
5002 |
Requires zChaff with proof generation to be installed. See |
|
5003 |
HOL/ex/SAT_Examples.thy for examples. |
|
17619 | 5004 |
|
16234 | 5005 |
* Datatype induction via method 'induct' now preserves the name of the |
5006 |
induction variable. For example, when proving P(xs::'a list) by |
|
5007 |
induction on xs, the induction step is now P(xs) ==> P(a#xs) rather |
|
5008 |
than P(list) ==> P(a#list) as previously. Potential INCOMPATIBILITY |
|
5009 |
in unstructured proof scripts. |
|
5010 |
||
5011 |
* Reworked implementation of records. Improved scalability for |
|
5012 |
records with many fields, avoiding performance problems for type |
|
5013 |
inference. Records are no longer composed of nested field types, but |
|
5014 |
of nested extension types. Therefore the record type only grows linear |
|
5015 |
in the number of extensions and not in the number of fields. The |
|
5016 |
top-level (users) view on records is preserved. Potential |
|
5017 |
INCOMPATIBILITY only in strange cases, where the theory depends on the |
|
5018 |
old record representation. The type generated for a record is called |
|
5019 |
<record_name>_ext_type. |
|
5020 |
||
5021 |
Flag record_quick_and_dirty_sensitive can be enabled to skip the |
|
5022 |
proofs triggered by a record definition or a simproc (if |
|
5023 |
quick_and_dirty is enabled). Definitions of large records can take |
|
5024 |
quite long. |
|
5025 |
||
5026 |
New simproc record_upd_simproc for simplification of multiple record |
|
5027 |
updates enabled by default. Moreover, trivial updates are also |
|
5028 |
removed: r(|x := x r|) = r. INCOMPATIBILITY: old proofs break |
|
5029 |
occasionally, since simplification is more powerful by default. |
|
5030 |
||
17275
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
5031 |
* typedef: proper support for polymorphic sets, which contain extra |
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
5032 |
type-variables in the term. |
44d8fbc2e52d
axclass: name space prefix is now "c_class" instead of just "c";
wenzelm
parents:
17269
diff
changeset
|
5033 |
|
16234 | 5034 |
* Simplifier: automatically reasons about transitivity chains |
5035 |
involving "trancl" (r^+) and "rtrancl" (r^*) by setting up tactics |
|
5036 |
provided by Provers/trancl.ML as additional solvers. INCOMPATIBILITY: |
|
5037 |
old proofs break occasionally as simplification may now solve more |
|
5038 |
goals than previously. |
|
5039 |
||
5040 |
* Simplifier: converts x <= y into x = y if assumption y <= x is |
|
5041 |
present. Works for all partial orders (class "order"), in particular |
|
5042 |
numbers and sets. For linear orders (e.g. numbers) it treats ~ x < y |
|
5043 |
just like y <= x. |
|
5044 |
||
5045 |
* Simplifier: new simproc for "let x = a in f x". If a is a free or |
|
5046 |
bound variable or a constant then the let is unfolded. Otherwise |
|
5047 |
first a is simplified to b, and then f b is simplified to g. If |
|
5048 |
possible we abstract b from g arriving at "let x = b in h x", |
|
5049 |
otherwise we unfold the let and arrive at g. The simproc can be |
|
5050 |
enabled/disabled by the reference use_let_simproc. Potential |
|
5051 |
INCOMPATIBILITY since simplification is more powerful by default. |
|
15776 | 5052 |
|
16563 | 5053 |
* Classical reasoning: the meson method now accepts theorems as arguments. |
5054 |
||
17595 | 5055 |
* Prover support: pre-release of the Isabelle-ATP linkup, which runs background |
5056 |
jobs to provide advice on the provability of subgoals. |
|
5057 |
||
16891 | 5058 |
* Theory OrderedGroup and Ring_and_Field: various additions and |
5059 |
improvements to faciliate calculations involving equalities and |
|
5060 |
inequalities. |
|
5061 |
||
5062 |
The following theorems have been eliminated or modified |
|
5063 |
(INCOMPATIBILITY): |
|
16888 | 5064 |
|
5065 |
abs_eq now named abs_of_nonneg |
|
17371 | 5066 |
abs_of_ge_0 now named abs_of_nonneg |
5067 |
abs_minus_eq now named abs_of_nonpos |
|
16888 | 5068 |
imp_abs_id now named abs_of_nonneg |
5069 |
imp_abs_neg_id now named abs_of_nonpos |
|
5070 |
mult_pos now named mult_pos_pos |
|
5071 |
mult_pos_le now named mult_nonneg_nonneg |
|
5072 |
mult_pos_neg_le now named mult_nonneg_nonpos |
|
5073 |
mult_pos_neg2_le now named mult_nonneg_nonpos2 |
|
5074 |
mult_neg now named mult_neg_neg |
|
5075 |
mult_neg_le now named mult_nonpos_nonpos |
|
5076 |
||
23495
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5077 |
* The following lemmas in Ring_and_Field have been added to the simplifier: |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5078 |
|
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5079 |
zero_le_square |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5080 |
not_square_less_zero |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5081 |
|
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5082 |
The following lemmas have been deleted from Real/RealPow: |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5083 |
|
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5084 |
realpow_zero_zero |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5085 |
realpow_two |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5086 |
realpow_less |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5087 |
zero_le_power |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5088 |
realpow_two_le |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5089 |
abs_realpow_two |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5090 |
realpow_two_abs |
e4dd6beeafab
commented changes in HOL/Ring_and_Field.thy, and in HOL/Real/RealPow.thy
obua
parents:
23481
diff
changeset
|
5091 |
|
16891 | 5092 |
* Theory Parity: added rules for simplifying exponents. |
5093 |
||
17092 | 5094 |
* Theory List: |
5095 |
||
5096 |
The following theorems have been eliminated or modified |
|
5097 |
(INCOMPATIBILITY): |
|
5098 |
||
5099 |
list_all_Nil now named list_all.simps(1) |
|
5100 |
list_all_Cons now named list_all.simps(2) |
|
5101 |
list_all_conv now named list_all_iff |
|
5102 |
set_mem_eq now named mem_iff |
|
5103 |
||
16929 | 5104 |
* Theories SetsAndFunctions and BigO (see HOL/Library) support |
5105 |
asymptotic "big O" calculations. See the notes in BigO.thy. |
|
5106 |
||
16888 | 5107 |
|
5108 |
*** HOL-Complex *** |
|
5109 |
||
16891 | 5110 |
* Theory RealDef: better support for embedding natural numbers and |
5111 |
integers in the reals. |
|
5112 |
||
5113 |
The following theorems have been eliminated or modified |
|
5114 |
(INCOMPATIBILITY): |
|
5115 |
||
17016
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
avigad
parents:
16997
diff
changeset
|
5116 |
exp_ge_add_one_self now requires no hypotheses |
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
avigad
parents:
16997
diff
changeset
|
5117 |
real_of_int_add reversed direction of equality (use [symmetric]) |
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
avigad
parents:
16997
diff
changeset
|
5118 |
real_of_int_minus reversed direction of equality (use [symmetric]) |
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
avigad
parents:
16997
diff
changeset
|
5119 |
real_of_int_diff reversed direction of equality (use [symmetric]) |
73c74cb1d744
mentioned change to exp_ge_add_one_self, new transitivity rules
avigad
parents:
16997
diff
changeset
|
5120 |
real_of_int_mult reversed direction of equality (use [symmetric]) |
16891 | 5121 |
|
5122 |
* Theory RComplete: expanded support for floor and ceiling functions. |
|
16888 | 5123 |
|
16962 | 5124 |
* Theory Ln is new, with properties of the natural logarithm |
5125 |
||
17423 | 5126 |
* Hyperreal: There is a new type constructor "star" for making |
5127 |
nonstandard types. The old type names are now type synonyms: |
|
5128 |
||
5129 |
hypreal = real star |
|
5130 |
hypnat = nat star |
|
5131 |
hcomplex = complex star |
|
5132 |
||
5133 |
* Hyperreal: Many groups of similarly-defined constants have been |
|
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5134 |
replaced by polymorphic versions (INCOMPATIBILITY): |
17423 | 5135 |
|
5136 |
star_of <-- hypreal_of_real, hypnat_of_nat, hcomplex_of_complex |
|
5137 |
||
5138 |
starset <-- starsetNat, starsetC |
|
5139 |
*s* <-- *sNat*, *sc* |
|
5140 |
starset_n <-- starsetNat_n, starsetC_n |
|
5141 |
*sn* <-- *sNatn*, *scn* |
|
5142 |
InternalSets <-- InternalNatSets, InternalCSets |
|
5143 |
||
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5144 |
starfun <-- starfun{Nat,Nat2,C,RC,CR} |
17423 | 5145 |
*f* <-- *fNat*, *fNat2*, *fc*, *fRc*, *fcR* |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5146 |
starfun_n <-- starfun{Nat,Nat2,C,RC,CR}_n |
17423 | 5147 |
*fn* <-- *fNatn*, *fNat2n*, *fcn*, *fRcn*, *fcRn* |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5148 |
InternalFuns <-- InternalNatFuns, InternalNatFuns2, Internal{C,RC,CR}Funs |
17423 | 5149 |
|
5150 |
* Hyperreal: Many type-specific theorems have been removed in favor of |
|
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5151 |
theorems specific to various axiomatic type classes (INCOMPATIBILITY): |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5152 |
|
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5153 |
add_commute <-- {hypreal,hypnat,hcomplex}_add_commute |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5154 |
add_assoc <-- {hypreal,hypnat,hcomplex}_add_assocs |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5155 |
OrderedGroup.add_0 <-- {hypreal,hypnat,hcomplex}_add_zero_left |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5156 |
OrderedGroup.add_0_right <-- {hypreal,hcomplex}_add_zero_right |
17423 | 5157 |
right_minus <-- hypreal_add_minus |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5158 |
left_minus <-- {hypreal,hcomplex}_add_minus_left |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5159 |
mult_commute <-- {hypreal,hypnat,hcomplex}_mult_commute |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5160 |
mult_assoc <-- {hypreal,hypnat,hcomplex}_mult_assoc |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5161 |
mult_1_left <-- {hypreal,hypnat}_mult_1, hcomplex_mult_one_left |
17423 | 5162 |
mult_1_right <-- hcomplex_mult_one_right |
5163 |
mult_zero_left <-- hcomplex_mult_zero_left |
|
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5164 |
left_distrib <-- {hypreal,hypnat,hcomplex}_add_mult_distrib |
17423 | 5165 |
right_distrib <-- hypnat_add_mult_distrib2 |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5166 |
zero_neq_one <-- {hypreal,hypnat,hcomplex}_zero_not_eq_one |
17423 | 5167 |
right_inverse <-- hypreal_mult_inverse |
5168 |
left_inverse <-- hypreal_mult_inverse_left, hcomplex_mult_inv_left |
|
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5169 |
order_refl <-- {hypreal,hypnat}_le_refl |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5170 |
order_trans <-- {hypreal,hypnat}_le_trans |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5171 |
order_antisym <-- {hypreal,hypnat}_le_anti_sym |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5172 |
order_less_le <-- {hypreal,hypnat}_less_le |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5173 |
linorder_linear <-- {hypreal,hypnat}_le_linear |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5174 |
add_left_mono <-- {hypreal,hypnat}_add_left_mono |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5175 |
mult_strict_left_mono <-- {hypreal,hypnat}_mult_less_mono2 |
17423 | 5176 |
add_nonneg_nonneg <-- hypreal_le_add_order |
5177 |
||
5178 |
* Hyperreal: Separate theorems having to do with type-specific |
|
5179 |
versions of constants have been merged into theorems that apply to the |
|
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5180 |
new polymorphic constants (INCOMPATIBILITY): |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5181 |
|
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5182 |
STAR_UNIV_set <-- {STAR_real,NatStar_real,STARC_complex}_set |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5183 |
STAR_empty_set <-- {STAR,NatStar,STARC}_empty_set |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5184 |
STAR_Un <-- {STAR,NatStar,STARC}_Un |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5185 |
STAR_Int <-- {STAR,NatStar,STARC}_Int |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5186 |
STAR_Compl <-- {STAR,NatStar,STARC}_Compl |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5187 |
STAR_subset <-- {STAR,NatStar,STARC}_subset |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5188 |
STAR_mem <-- {STAR,NatStar,STARC}_mem |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5189 |
STAR_mem_Compl <-- {STAR,STARC}_mem_Compl |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5190 |
STAR_diff <-- {STAR,STARC}_diff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5191 |
STAR_star_of_image_subset <-- {STAR_hypreal_of_real, NatStar_hypreal_of_real, |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5192 |
STARC_hcomplex_of_complex}_image_subset |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5193 |
starset_n_Un <-- starset{Nat,C}_n_Un |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5194 |
starset_n_Int <-- starset{Nat,C}_n_Int |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5195 |
starset_n_Compl <-- starset{Nat,C}_n_Compl |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5196 |
starset_n_diff <-- starset{Nat,C}_n_diff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5197 |
InternalSets_Un <-- Internal{Nat,C}Sets_Un |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5198 |
InternalSets_Int <-- Internal{Nat,C}Sets_Int |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5199 |
InternalSets_Compl <-- Internal{Nat,C}Sets_Compl |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5200 |
InternalSets_diff <-- Internal{Nat,C}Sets_diff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5201 |
InternalSets_UNIV_diff <-- Internal{Nat,C}Sets_UNIV_diff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5202 |
InternalSets_starset_n <-- Internal{Nat,C}Sets_starset{Nat,C}_n |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5203 |
starset_starset_n_eq <-- starset{Nat,C}_starset{Nat,C}_n_eq |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5204 |
starset_n_starset <-- starset{Nat,C}_n_starset{Nat,C} |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5205 |
starfun_n_starfun <-- starfun{Nat,Nat2,C,RC,CR}_n_starfun{Nat,Nat2,C,RC,CR} |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5206 |
starfun <-- starfun{Nat,Nat2,C,RC,CR} |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5207 |
starfun_mult <-- starfun{Nat,Nat2,C,RC,CR}_mult |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5208 |
starfun_add <-- starfun{Nat,Nat2,C,RC,CR}_add |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5209 |
starfun_minus <-- starfun{Nat,Nat2,C,RC,CR}_minus |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5210 |
starfun_diff <-- starfun{C,RC,CR}_diff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5211 |
starfun_o <-- starfun{NatNat2,Nat2,_stafunNat,C,C_starfunRC,_starfunCR}_o |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5212 |
starfun_o2 <-- starfun{NatNat2,_stafunNat,C,C_starfunRC,_starfunCR}_o2 |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5213 |
starfun_const_fun <-- starfun{Nat,Nat2,C,RC,CR}_const_fun |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5214 |
starfun_inverse <-- starfun{Nat,C,RC,CR}_inverse |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5215 |
starfun_eq <-- starfun{Nat,Nat2,C,RC,CR}_eq |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5216 |
starfun_eq_iff <-- starfun{C,RC,CR}_eq_iff |
17423 | 5217 |
starfun_Id <-- starfunC_Id |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5218 |
starfun_approx <-- starfun{Nat,CR}_approx |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5219 |
starfun_capprox <-- starfun{C,RC}_capprox |
17423 | 5220 |
starfun_abs <-- starfunNat_rabs |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5221 |
starfun_lambda_cancel <-- starfun{C,CR,RC}_lambda_cancel |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5222 |
starfun_lambda_cancel2 <-- starfun{C,CR,RC}_lambda_cancel2 |
17423 | 5223 |
starfun_mult_HFinite_approx <-- starfunCR_mult_HFinite_capprox |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5224 |
starfun_mult_CFinite_capprox <-- starfun{C,RC}_mult_CFinite_capprox |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5225 |
starfun_add_capprox <-- starfun{C,RC}_add_capprox |
17423 | 5226 |
starfun_add_approx <-- starfunCR_add_approx |
5227 |
starfun_inverse_inverse <-- starfunC_inverse_inverse |
|
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5228 |
starfun_divide <-- starfun{C,CR,RC}_divide |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5229 |
starfun_n <-- starfun{Nat,C}_n |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5230 |
starfun_n_mult <-- starfun{Nat,C}_n_mult |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5231 |
starfun_n_add <-- starfun{Nat,C}_n_add |
17423 | 5232 |
starfun_n_add_minus <-- starfunNat_n_add_minus |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5233 |
starfun_n_const_fun <-- starfun{Nat,C}_n_const_fun |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5234 |
starfun_n_minus <-- starfun{Nat,C}_n_minus |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5235 |
starfun_n_eq <-- starfun{Nat,C}_n_eq |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5236 |
|
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5237 |
star_n_add <-- {hypreal,hypnat,hcomplex}_add |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5238 |
star_n_minus <-- {hypreal,hcomplex}_minus |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5239 |
star_n_diff <-- {hypreal,hcomplex}_diff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5240 |
star_n_mult <-- {hypreal,hcomplex}_mult |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5241 |
star_n_inverse <-- {hypreal,hcomplex}_inverse |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5242 |
star_n_le <-- {hypreal,hypnat}_le |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5243 |
star_n_less <-- {hypreal,hypnat}_less |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5244 |
star_n_zero_num <-- {hypreal,hypnat,hcomplex}_zero_num |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5245 |
star_n_one_num <-- {hypreal,hypnat,hcomplex}_one_num |
17423 | 5246 |
star_n_abs <-- hypreal_hrabs |
5247 |
star_n_divide <-- hcomplex_divide |
|
5248 |
||
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5249 |
star_of_add <-- {hypreal_of_real,hypnat_of_nat,hcomplex_of_complex}_add |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5250 |
star_of_minus <-- {hypreal_of_real,hcomplex_of_complex}_minus |
17423 | 5251 |
star_of_diff <-- hypreal_of_real_diff |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5252 |
star_of_mult <-- {hypreal_of_real,hypnat_of_nat,hcomplex_of_complex}_mult |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5253 |
star_of_one <-- {hypreal_of_real,hcomplex_of_complex}_one |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5254 |
star_of_zero <-- {hypreal_of_real,hypnat_of_nat,hcomplex_of_complex}_zero |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5255 |
star_of_le <-- {hypreal_of_real,hypnat_of_nat}_le_iff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5256 |
star_of_less <-- {hypreal_of_real,hypnat_of_nat}_less_iff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5257 |
star_of_eq <-- {hypreal_of_real,hypnat_of_nat,hcomplex_of_complex}_eq_iff |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5258 |
star_of_inverse <-- {hypreal_of_real,hcomplex_of_complex}_inverse |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5259 |
star_of_divide <-- {hypreal_of_real,hcomplex_of_complex}_divide |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5260 |
star_of_of_nat <-- {hypreal_of_real,hcomplex_of_complex}_of_nat |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5261 |
star_of_of_int <-- {hypreal_of_real,hcomplex_of_complex}_of_int |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5262 |
star_of_number_of <-- {hypreal,hcomplex}_number_of |
17423 | 5263 |
star_of_number_less <-- number_of_less_hypreal_of_real_iff |
5264 |
star_of_number_le <-- number_of_le_hypreal_of_real_iff |
|
5265 |
star_of_eq_number <-- hypreal_of_real_eq_number_of_iff |
|
5266 |
star_of_less_number <-- hypreal_of_real_less_number_of_iff |
|
5267 |
star_of_le_number <-- hypreal_of_real_le_number_of_iff |
|
5268 |
star_of_power <-- hypreal_of_real_power |
|
5269 |
star_of_eq_0 <-- hcomplex_of_complex_zero_iff |
|
5270 |
||
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5271 |
* Hyperreal: new method "transfer" that implements the transfer |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5272 |
principle of nonstandard analysis. With a subgoal that mentions |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5273 |
nonstandard types like "'a star", the command "apply transfer" |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5274 |
replaces it with an equivalent one that mentions only standard types. |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5275 |
To be successful, all free variables must have standard types; non- |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5276 |
standard variables must have explicit universal quantifiers. |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5277 |
|
17641 | 5278 |
* Hyperreal: A theory of Taylor series. |
5279 |
||
14655
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
wenzelm
parents:
14624
diff
changeset
|
5280 |
|
14682
a5072752114c
HOLCF: discontinued special version of 'constdefs';
wenzelm
parents:
14655
diff
changeset
|
5281 |
*** HOLCF *** |
a5072752114c
HOLCF: discontinued special version of 'constdefs';
wenzelm
parents:
14655
diff
changeset
|
5282 |
|
17533 | 5283 |
* Discontinued special version of 'constdefs' (which used to support |
5284 |
continuous functions) in favor of the general Pure one with full |
|
5285 |
type-inference. |
|
5286 |
||
5287 |
* New simplification procedure for solving continuity conditions; it |
|
5288 |
is much faster on terms with many nested lambda abstractions (cubic |
|
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5289 |
instead of exponential time). |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5290 |
|
17533 | 5291 |
* New syntax for domain package: selector names are now optional. |
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5292 |
Parentheses should be omitted unless argument is lazy, for example: |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5293 |
|
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5294 |
domain 'a stream = cons "'a" (lazy "'a stream") |
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5295 |
|
17533 | 5296 |
* New command 'fixrec' for defining recursive functions with pattern |
5297 |
matching; defining multiple functions with mutual recursion is also |
|
5298 |
supported. Patterns may include the constants cpair, spair, up, sinl, |
|
5299 |
sinr, or any data constructor defined by the domain package. The given |
|
5300 |
equations are proven as rewrite rules. See HOLCF/ex/Fixrec_ex.thy for |
|
5301 |
syntax and examples. |
|
5302 |
||
5303 |
* New commands 'cpodef' and 'pcpodef' for defining predicate subtypes |
|
5304 |
of cpo and pcpo types. Syntax is exactly like the 'typedef' command, |
|
5305 |
but the proof obligation additionally includes an admissibility |
|
5306 |
requirement. The packages generate instances of class cpo or pcpo, |
|
5307 |
with continuity and strictness theorems for Rep and Abs. |
|
17442
c0f0b92c198c
add HOLCF entries for pcpodef, cont_proc, fixrec;
huffman
parents:
17436
diff
changeset
|
5308 |
|
17584 | 5309 |
* HOLCF: Many theorems have been renamed according to a more standard naming |
5310 |
scheme (INCOMPATIBILITY): |
|
5311 |
||
5312 |
foo_inject: "foo$x = foo$y ==> x = y" |
|
5313 |
foo_eq: "(foo$x = foo$y) = (x = y)" |
|
5314 |
foo_less: "(foo$x << foo$y) = (x << y)" |
|
5315 |
foo_strict: "foo$UU = UU" |
|
5316 |
foo_defined: "... ==> foo$x ~= UU" |
|
5317 |
foo_defined_iff: "(foo$x = UU) = (x = UU)" |
|
5318 |
||
14682
a5072752114c
HOLCF: discontinued special version of 'constdefs';
wenzelm
parents:
14655
diff
changeset
|
5319 |
|
14885 | 5320 |
*** ZF *** |
5321 |
||
16234 | 5322 |
* ZF/ex: theories Group and Ring provide examples in abstract algebra, |
5323 |
including the First Isomorphism Theorem (on quotienting by the kernel |
|
5324 |
of a homomorphism). |
|
15089
430264838064
ZF/Simplifier: second copy of context type solver;
wenzelm
parents:
15076
diff
changeset
|
5325 |
|
430264838064
ZF/Simplifier: second copy of context type solver;
wenzelm
parents:
15076
diff
changeset
|
5326 |
* ZF/Simplifier: install second copy of type solver that actually |
16234 | 5327 |
makes use of TC rules declared to Isar proof contexts (or locales); |
5328 |
the old version is still required for ML proof scripts. |
|
15703 | 5329 |
|
5330 |
||
17445 | 5331 |
*** Cube *** |
5332 |
||
5333 |
* Converted to Isar theory format; use locales instead of axiomatic |
|
5334 |
theories. |
|
5335 |
||
5336 |
||
15703 | 5337 |
*** ML *** |
5338 |
||
21339 | 5339 |
* Pure/library.ML: added ##>, ##>>, #>> -- higher-order counterparts |
5340 |
for ||>, ||>>, |>>, |
|
5341 |
||
15973 | 5342 |
* Pure/library.ML no longer defines its own option datatype, but uses |
16234 | 5343 |
that of the SML basis, which has constructors NONE and SOME instead of |
5344 |
None and Some, as well as exception Option.Option instead of OPTION. |
|
5345 |
The functions the, if_none, is_some, is_none have been adapted |
|
5346 |
accordingly, while Option.map replaces apsome. |
|
15973 | 5347 |
|
16860
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5348 |
* Pure/library.ML: the exception LIST has been given up in favour of |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5349 |
the standard exceptions Empty and Subscript, as well as |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5350 |
Library.UnequalLengths. Function like Library.hd and Library.tl are |
36856
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
wenzelm
parents:
36849
diff
changeset
|
5351 |
superceded by the standard hd and tl functions etc. |
16860
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5352 |
|
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5353 |
A number of basic list functions are no longer exported to the ML |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5354 |
toplevel, as they are variants of predefined functions. The following |
16234 | 5355 |
suggests how one can translate existing code: |
15973 | 5356 |
|
5357 |
rev_append xs ys = List.revAppend (xs, ys) |
|
5358 |
nth_elem (i, xs) = List.nth (xs, i) |
|
5359 |
last_elem xs = List.last xs |
|
5360 |
flat xss = List.concat xss |
|
16234 | 5361 |
seq fs = List.app fs |
15973 | 5362 |
partition P xs = List.partition P xs |
5363 |
mapfilter f xs = List.mapPartial f xs |
|
5364 |
||
16860
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5365 |
* Pure/library.ML: several combinators for linear functional |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5366 |
transformations, notably reverse application and composition: |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5367 |
|
17371 | 5368 |
x |> f f #> g |
5369 |
(x, y) |-> f f #-> g |
|
16860
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5370 |
|
17495 | 5371 |
* Pure/library.ML: introduced/changed precedence of infix operators: |
5372 |
||
5373 |
infix 1 |> |-> ||> ||>> |>> |>>> #> #->; |
|
5374 |
infix 2 ?; |
|
5375 |
infix 3 o oo ooo oooo; |
|
5376 |
infix 4 ~~ upto downto; |
|
5377 |
||
5378 |
Maybe INCOMPATIBILITY when any of those is used in conjunction with other |
|
5379 |
infix operators. |
|
5380 |
||
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5381 |
* Pure/library.ML: natural list combinators fold, fold_rev, and |
16869 | 5382 |
fold_map support linear functional transformations and nesting. For |
16860
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5383 |
example: |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5384 |
|
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5385 |
fold f [x1, ..., xN] y = |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5386 |
y |> f x1 |> ... |> f xN |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5387 |
|
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5388 |
(fold o fold) f [xs1, ..., xsN] y = |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5389 |
y |> fold f xs1 |> ... |> fold f xsN |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5390 |
|
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5391 |
fold f [x1, ..., xN] = |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5392 |
f x1 #> ... #> f xN |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5393 |
|
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5394 |
(fold o fold) f [xs1, ..., xsN] = |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5395 |
fold f xs1 #> ... #> fold f xsN |
43abdba4da5c
* Pure/library.ML: several combinators for linear functional transformations;
wenzelm
parents:
16856
diff
changeset
|
5396 |
|
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5397 |
* Pure/library.ML: the following selectors on type 'a option are |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5398 |
available: |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5399 |
|
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5400 |
the: 'a option -> 'a (*partial*) |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5401 |
these: 'a option -> 'a where 'a = 'b list |
17402 | 5402 |
the_default: 'a -> 'a option -> 'a |
5403 |
the_list: 'a option -> 'a list |
|
5404 |
||
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5405 |
* Pure/General: structure AList (cf. Pure/General/alist.ML) provides |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5406 |
basic operations for association lists, following natural argument |
17564 | 5407 |
order; moreover the explicit equality predicate passed here avoids |
17495 | 5408 |
potentially expensive polymorphic runtime equality checks. |
5409 |
The old functions may be expressed as follows: |
|
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5410 |
|
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5411 |
assoc = uncurry (AList.lookup (op =)) |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5412 |
assocs = these oo AList.lookup (op =) |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5413 |
overwrite = uncurry (AList.update (op =)) o swap |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5414 |
|
17564 | 5415 |
* Pure/General: structure AList (cf. Pure/General/alist.ML) provides |
5416 |
||
5417 |
val make: ('a -> 'b) -> 'a list -> ('a * 'b) list |
|
5418 |
val find: ('a * 'b -> bool) -> ('c * 'b) list -> 'a -> 'c list |
|
5419 |
||
5420 |
replacing make_keylist and keyfilter (occassionally used) |
|
5421 |
Naive rewrites: |
|
5422 |
||
5423 |
make_keylist = AList.make |
|
5424 |
keyfilter = AList.find (op =) |
|
5425 |
||
5426 |
* eq_fst and eq_snd now take explicit equality parameter, thus |
|
5427 |
avoiding eqtypes. Naive rewrites: |
|
5428 |
||
5429 |
eq_fst = eq_fst (op =) |
|
5430 |
eq_snd = eq_snd (op =) |
|
5431 |
||
5432 |
* Removed deprecated apl and apr (rarely used). |
|
5433 |
Naive rewrites: |
|
5434 |
||
5435 |
apl (n, op) =>>= curry op n |
|
5436 |
apr (op, m) =>>= fn n => op (n, m) |
|
5437 |
||
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5438 |
* Pure/General: structure OrdList (cf. Pure/General/ord_list.ML) |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5439 |
provides a reasonably efficient light-weight implementation of sets as |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5440 |
lists. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5441 |
|
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5442 |
* Pure/General: generic tables (cf. Pure/General/table.ML) provide a |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5443 |
few new operations; existing lookup and update are now curried to |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5444 |
follow natural argument order (for use with fold etc.); |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5445 |
INCOMPATIBILITY, use (uncurry Symtab.lookup) etc. as last resort. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5446 |
|
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5447 |
* Pure/General: output via the Isabelle channels of |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5448 |
writeln/warning/error etc. is now passed through Output.output, with a |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5449 |
hook for arbitrary transformations depending on the print_mode |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5450 |
(cf. Output.add_mode -- the first active mode that provides a output |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5451 |
function wins). Already formatted output may be embedded into further |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5452 |
text via Output.raw; the result of Pretty.string_of/str_of and derived |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5453 |
functions (string_of_term/cterm/thm etc.) is already marked raw to |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5454 |
accommodate easy composition of diagnostic messages etc. Programmers |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5455 |
rarely need to care about Output.output or Output.raw at all, with |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5456 |
some notable exceptions: Output.output is required when bypassing the |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5457 |
standard channels (writeln etc.), or in token translations to produce |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5458 |
properly formatted results; Output.raw is required when capturing |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5459 |
already output material that will eventually be presented to the user |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5460 |
a second time. For the default print mode, both Output.output and |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5461 |
Output.raw have no effect. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5462 |
|
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5463 |
* Pure/General: Output.time_accumulator NAME creates an operator ('a |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5464 |
-> 'b) -> 'a -> 'b to measure runtime and count invocations; the |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5465 |
cumulative results are displayed at the end of a batch session. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5466 |
|
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5467 |
* Pure/General: File.sysify_path and File.quote_sysify path have been |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5468 |
replaced by File.platform_path and File.shell_path (with appropriate |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5469 |
hooks). This provides a clean interface for unusual systems where the |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5470 |
internal and external process view of file names are different. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5471 |
|
16689
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
wenzelm
parents:
16662
diff
changeset
|
5472 |
* Pure: more efficient orders for basic syntactic entities: added |
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
wenzelm
parents:
16662
diff
changeset
|
5473 |
fast_string_ord, fast_indexname_ord, fast_term_ord; changed sort_ord |
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
wenzelm
parents:
16662
diff
changeset
|
5474 |
and typ_ord to use fast_string_ord and fast_indexname_ord (term_ord is |
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
wenzelm
parents:
16662
diff
changeset
|
5475 |
NOT affected); structures Symtab, Vartab, Typtab, Termtab use the fast |
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
wenzelm
parents:
16662
diff
changeset
|
5476 |
orders now -- potential INCOMPATIBILITY for code that depends on a |
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
wenzelm
parents:
16662
diff
changeset
|
5477 |
particular order for Symtab.keys, Symtab.dest, etc. (consider using |
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
wenzelm
parents:
16662
diff
changeset
|
5478 |
Library.sort_strings on result). |
05b986733a59
* Pure: structure OrdList (cf. Pure/General/ord_list.ML);
wenzelm
parents:
16662
diff
changeset
|
5479 |
|
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5480 |
* Pure/term.ML: combinators fold_atyps, fold_aterms, fold_term_types, |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5481 |
fold_types traverse types/terms from left to right, observing natural |
36856
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
wenzelm
parents:
36849
diff
changeset
|
5482 |
argument order. Supercedes previous foldl_XXX versions, add_frees, |
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5483 |
add_vars etc. have been adapted as well: INCOMPATIBILITY. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5484 |
|
16151 | 5485 |
* Pure: name spaces have been refined, with significant changes of the |
16234 | 5486 |
internal interfaces -- INCOMPATIBILITY. Renamed cond_extern(_table) |
36856
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
wenzelm
parents:
36849
diff
changeset
|
5487 |
to extern(_table). The plain name entry path is superceded by a |
16234 | 5488 |
general 'naming' context, which also includes the 'policy' to produce |
5489 |
a fully qualified name and external accesses of a fully qualified |
|
36856
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
wenzelm
parents:
36849
diff
changeset
|
5490 |
name; NameSpace.extend is superceded by context dependent |
16234 | 5491 |
Sign.declare_name. Several theory and proof context operations modify |
5492 |
the naming context. Especially note Theory.restore_naming and |
|
5493 |
ProofContext.restore_naming to get back to a sane state; note that |
|
5494 |
Theory.add_path is no longer sufficient to recover from |
|
5495 |
Theory.absolute_path in particular. |
|
5496 |
||
5497 |
* Pure: new flags short_names (default false) and unique_names |
|
5498 |
(default true) for controlling output of qualified names. If |
|
5499 |
short_names is set, names are printed unqualified. If unique_names is |
|
5500 |
reset, the name prefix is reduced to the minimum required to achieve |
|
5501 |
the original result when interning again, even if there is an overlap |
|
5502 |
with earlier declarations. |
|
16151 | 5503 |
|
16456
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5504 |
* Pure/TheoryDataFun: change of the argument structure; 'prep_ext' is |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5505 |
now 'extend', and 'merge' gets an additional Pretty.pp argument |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5506 |
(useful for printing error messages). INCOMPATIBILITY. |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5507 |
|
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5508 |
* Pure: major reorganization of the theory context. Type Sign.sg and |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5509 |
Theory.theory are now identified, referring to the universal |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5510 |
Context.theory (see Pure/context.ML). Actual signature and theory |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5511 |
content is managed as theory data. The old code and interfaces were |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5512 |
spread over many files and structures; the new arrangement introduces |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5513 |
considerable INCOMPATIBILITY to gain more clarity: |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5514 |
|
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5515 |
Context -- theory management operations (name, identity, inclusion, |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5516 |
parents, ancestors, merge, etc.), plus generic theory data; |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5517 |
|
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5518 |
Sign -- logical signature and syntax operations (declaring consts, |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5519 |
types, etc.), plus certify/read for common entities; |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5520 |
|
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5521 |
Theory -- logical theory operations (stating axioms, definitions, |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5522 |
oracles), plus a copy of logical signature operations (consts, |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5523 |
types, etc.); also a few basic management operations (Theory.copy, |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5524 |
Theory.merge, etc.) |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5525 |
|
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5526 |
The most basic sign_of operations (Theory.sign_of, Thm.sign_of_thm |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5527 |
etc.) as well as the sign field in Thm.rep_thm etc. have been retained |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5528 |
for convenience -- they merely return the theory. |
451f1c46d4ca
* Pure/TheoryDataFun: change of the argument structure;
wenzelm
parents:
16373
diff
changeset
|
5529 |
|
36856
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
wenzelm
parents:
36849
diff
changeset
|
5530 |
* Pure: type Type.tsig is superceded by theory in most interfaces. |
17193
83708f724822
* Delimiters of outer tokens now produce separate LaTeX macros;
wenzelm
parents:
17189
diff
changeset
|
5531 |
|
16547
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
wenzelm
parents:
16506
diff
changeset
|
5532 |
* Pure: the Isar proof context type is already defined early in Pure |
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
wenzelm
parents:
16506
diff
changeset
|
5533 |
as Context.proof (note that ProofContext.context and Proof.context are |
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
wenzelm
parents:
16506
diff
changeset
|
5534 |
aliases, where the latter is the preferred name). This enables other |
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
wenzelm
parents:
16506
diff
changeset
|
5535 |
Isabelle components to refer to that type even before Isar is present. |
09f7a953d2d6
* Pure: the Isar proof context type is already defined early in Pure
wenzelm
parents:
16506
diff
changeset
|
5536 |
|
16373
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5537 |
* Pure/sign/theory: discontinued named name spaces (i.e. classK, |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5538 |
typeK, constK, axiomK, oracleK), but provide explicit operations for |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5539 |
any of these kinds. For example, Sign.intern typeK is now |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5540 |
Sign.intern_type, Theory.hide_space Sign.typeK is now |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5541 |
Theory.hide_types. Also note that former |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5542 |
Theory.hide_classes/types/consts are now |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5543 |
Theory.hide_classes_i/types_i/consts_i, while the non '_i' versions |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5544 |
internalize their arguments! INCOMPATIBILITY. |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5545 |
|
16506
b2687ce38433
* Pure: get_thm interface expects datatype thmref;
wenzelm
parents:
16456
diff
changeset
|
5546 |
* Pure: get_thm interface (of PureThy and ProofContext) expects |
b2687ce38433
* Pure: get_thm interface expects datatype thmref;
wenzelm
parents:
16456
diff
changeset
|
5547 |
datatype thmref (with constructors Name and NameSelection) instead of |
b2687ce38433
* Pure: get_thm interface expects datatype thmref;
wenzelm
parents:
16456
diff
changeset
|
5548 |
plain string -- INCOMPATIBILITY; |
b2687ce38433
* Pure: get_thm interface expects datatype thmref;
wenzelm
parents:
16456
diff
changeset
|
5549 |
|
16151 | 5550 |
* Pure: cases produced by proof methods specify options, where NONE |
16234 | 5551 |
means to remove case bindings -- INCOMPATIBILITY in |
5552 |
(RAW_)METHOD_CASES. |
|
16151 | 5553 |
|
16373
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5554 |
* Pure: the following operations retrieve axioms or theorems from a |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5555 |
theory node or theory hierarchy, respectively: |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5556 |
|
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5557 |
Theory.axioms_of: theory -> (string * term) list |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5558 |
Theory.all_axioms_of: theory -> (string * term) list |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5559 |
PureThy.thms_of: theory -> (string * thm) list |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5560 |
PureThy.all_thms_of: theory -> (string * thm) list |
9d020423093b
* Pure/sign/theory: discontinued named name spaces;
wenzelm
parents:
16251
diff
changeset
|
5561 |
|
16718 | 5562 |
* Pure: print_tac now outputs the goal through the trace channel. |
5563 |
||
17408
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5564 |
* Isar toplevel: improved diagnostics, mostly for Poly/ML only. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5565 |
Reference Toplevel.debug (default false) controls detailed printing |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5566 |
and tracing of low-level exceptions; Toplevel.profiling (default 0) |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5567 |
controls execution profiling -- set to 1 for time and 2 for space |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5568 |
(both increase the runtime). |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5569 |
|
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5570 |
* Isar session: The initial use of ROOT.ML is now always timed, |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5571 |
i.e. the log will show the actual process times, in contrast to the |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5572 |
elapsed wall-clock time that the outer shell wrapper produces. |
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5573 |
|
551c9a4dd693
command 'thms_containing' has been discontinued in favour of 'find_theorems';
wenzelm
parents:
17402
diff
changeset
|
5574 |
* Simplifier: improved handling of bound variables (nameless |
16997
7dfc99f62dd9
* Pure/Simplifier: improved handling of bound variables;
wenzelm
parents:
16962
diff
changeset
|
5575 |
representation, avoid allocating new strings). Simprocs that invoke |
7dfc99f62dd9
* Pure/Simplifier: improved handling of bound variables;
wenzelm
parents:
16962
diff
changeset
|
5576 |
the Simplifier recursively should use Simplifier.inherit_bounds to |
17720 | 5577 |
avoid local name clashes. Failure to do so produces warnings |
5578 |
"Simplifier: renamed bound variable ..."; set Simplifier.debug_bounds |
|
5579 |
for further details. |
|
16234 | 5580 |
|
17166 | 5581 |
* ML functions legacy_bindings and use_legacy_bindings produce ML fact |
5582 |
bindings for all theorems stored within a given theory; this may help |
|
5583 |
in porting non-Isar theories to Isar ones, while keeping ML proof |
|
5584 |
scripts for the time being. |
|
5585 |
||
17457 | 5586 |
* ML operator HTML.with_charset specifies the charset begin used for |
5587 |
generated HTML files. For example: |
|
5588 |
||
5589 |
HTML.with_charset "utf-8" use_thy "Hebrew"; |
|
17538 | 5590 |
HTML.with_charset "utf-8" use_thy "Chinese"; |
17457 | 5591 |
|
16234 | 5592 |
|
5593 |
*** System *** |
|
5594 |
||
5595 |
* Allow symlinks to all proper Isabelle executables (Isabelle, |
|
5596 |
isabelle, isatool etc.). |
|
5597 |
||
5598 |
* ISABELLE_DOC_FORMAT setting specifies preferred document format (for |
|
5599 |
isatool doc, isatool mkdir, display_drafts etc.). |
|
5600 |
||
5601 |
* isatool usedir: option -f allows specification of the ML file to be |
|
5602 |
used by Isabelle; default is ROOT.ML. |
|
5603 |
||
16251
121dc80d120a
* ML: replaced File.sysify_path/quote_sysify_path by File.platform_path/shell_path;
wenzelm
parents:
16234
diff
changeset
|
5604 |
* New isatool version outputs the version identifier of the Isabelle |
121dc80d120a
* ML: replaced File.sysify_path/quote_sysify_path by File.platform_path/shell_path;
wenzelm
parents:
16234
diff
changeset
|
5605 |
distribution being used. |
121dc80d120a
* ML: replaced File.sysify_path/quote_sysify_path by File.platform_path/shell_path;
wenzelm
parents:
16234
diff
changeset
|
5606 |
|
121dc80d120a
* ML: replaced File.sysify_path/quote_sysify_path by File.platform_path/shell_path;
wenzelm
parents:
16234
diff
changeset
|
5607 |
* HOL: new isatool dimacs2hol converts files in DIMACS CNF format |
16234 | 5608 |
(containing Boolean satisfiability problems) into Isabelle/HOL |
5609 |
theories. |
|
15703 | 5610 |
|
5611 |
||
14655
8a95abf87dd3
Pure: considerably improved version of 'constdefs' command;
wenzelm
parents:
14624
diff
changeset
|
5612 |
|
14606 | 5613 |
New in Isabelle2004 (April 2004) |
5614 |
-------------------------------- |
|
13280
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
wenzelm
parents:
13190
diff
changeset
|
5615 |
|
14171
0cab06e3bbd0
Extended the notion of letter and digit, such that now one may use greek,
skalberg
parents:
14136
diff
changeset
|
5616 |
*** General *** |
0cab06e3bbd0
Extended the notion of letter and digit, such that now one may use greek,
skalberg
parents:
14136
diff
changeset
|
5617 |
|
14398
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5618 |
* Provers/order.ML: new efficient reasoner for partial and linear orders. |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5619 |
Replaces linorder.ML. |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5620 |
|
14606 | 5621 |
* Pure: Greek letters (except small lambda, \<lambda>), as well as Gothic |
5622 |
(\<aa>...\<zz>\<AA>...\<ZZ>), calligraphic (\<A>...\<Z>), and Euler |
|
14173 | 5623 |
(\<a>...\<z>), are now considered normal letters, and can therefore |
5624 |
be used anywhere where an ASCII letter (a...zA...Z) has until |
|
5625 |
now. COMPATIBILITY: This obviously changes the parsing of some |
|
5626 |
terms, especially where a symbol has been used as a binder, say |
|
5627 |
'\<Pi>x. ...', which is now a type error since \<Pi>x will be parsed |
|
5628 |
as an identifier. Fix it by inserting a space around former |
|
5629 |
symbols. Call 'isatool fixgreek' to try to fix parsing errors in |
|
5630 |
existing theory and ML files. |
|
14171
0cab06e3bbd0
Extended the notion of letter and digit, such that now one may use greek,
skalberg
parents:
14136
diff
changeset
|
5631 |
|
14237 | 5632 |
* Pure: Macintosh and Windows line-breaks are now allowed in theory files. |
5633 |
||
14731 | 5634 |
* Pure: single letter sub/superscripts (\<^isub> and \<^isup>) are now |
5635 |
allowed in identifiers. Similar to Greek letters \<^isub> is now considered |
|
5636 |
a normal (but invisible) letter. For multiple letter subscripts repeat |
|
5637 |
\<^isub> like this: x\<^isub>1\<^isub>2. |
|
14233 | 5638 |
|
14333 | 5639 |
* Pure: There are now sub-/superscripts that can span more than one |
5640 |
character. Text between \<^bsub> and \<^esub> is set in subscript in |
|
14606 | 5641 |
ProofGeneral and LaTeX, text between \<^bsup> and \<^esup> in |
5642 |
superscript. The new control characters are not identifier parts. |
|
14333 | 5643 |
|
14561
c53396af770e
* raw control symbols are of the form \<^raw:...> now.
schirmer
parents:
14556
diff
changeset
|
5644 |
* Pure: Control-symbols of the form \<^raw:...> will literally print the |
14606 | 5645 |
content of "..." to the latex file instead of \isacntrl... . The "..." |
5646 |
may consist of any printable characters excluding the end bracket >. |
|
14361
ad2f5da643b4
* Support for raw latex output in control symbols: \<^raw...>
schirmer
parents:
14333
diff
changeset
|
5647 |
|
14237 | 5648 |
* Pure: Using new Isar command "finalconsts" (or the ML functions |
5649 |
Theory.add_finals or Theory.add_finals_i) it is now possible to |
|
5650 |
declare constants "final", which prevents their being given a definition |
|
5651 |
later. It is useful for constants whose behaviour is fixed axiomatically |
|
14224 | 5652 |
rather than definitionally, such as the meta-logic connectives. |
5653 |
||
14606 | 5654 |
* Pure: 'instance' now handles general arities with general sorts |
5655 |
(i.e. intersections of classes), |
|
14503
255ad604e08e
Added check that Theory.ML does not occur in the files section of the theory
skalberg
parents:
14480
diff
changeset
|
5656 |
|
14547 | 5657 |
* Presentation: generated HTML now uses a CSS style sheet to make layout |
14731 | 5658 |
(somewhat) independent of content. It is copied from lib/html/isabelle.css. |
14547 | 5659 |
It can be changed to alter the colors/layout of generated pages. |
5660 |
||
14556
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
wenzelm
parents:
14551
diff
changeset
|
5661 |
|
14175
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5662 |
*** Isar *** |
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5663 |
|
14508
859b11514537
Experimental command for instantiation of locales in proof contexts:
ballarin
parents:
14503
diff
changeset
|
5664 |
* Tactic emulation methods rule_tac, erule_tac, drule_tac, frule_tac, |
859b11514537
Experimental command for instantiation of locales in proof contexts:
ballarin
parents:
14503
diff
changeset
|
5665 |
cut_tac, subgoal_tac and thin_tac: |
14175
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5666 |
- Now understand static (Isar) contexts. As a consequence, users of Isar |
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5667 |
locales are no longer forced to write Isar proof scripts. |
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5668 |
For details see Isar Reference Manual, paragraph 4.3.2: Further tactic |
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5669 |
emulations. |
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5670 |
- INCOMPATIBILITY: names of variables to be instantiated may no |
14211
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5671 |
longer be enclosed in quotes. Instead, precede variable name with `?'. |
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5672 |
This is consistent with the instantiation attribute "where". |
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5673 |
|
14257
a7ef3f7588c5
Type inference bug in Isar attributes "where" and "of" fixed.
ballarin
parents:
14255
diff
changeset
|
5674 |
* Attributes "where" and "of": |
14285
92ed032e83a1
Isar: where attribute supports instantiation of type vars.
ballarin
parents:
14283
diff
changeset
|
5675 |
- Now take type variables of instantiated theorem into account when reading |
92ed032e83a1
Isar: where attribute supports instantiation of type vars.
ballarin
parents:
14283
diff
changeset
|
5676 |
the instantiation string. This fixes a bug that caused instantiated |
92ed032e83a1
Isar: where attribute supports instantiation of type vars.
ballarin
parents:
14283
diff
changeset
|
5677 |
theorems to have too special types in some circumstances. |
92ed032e83a1
Isar: where attribute supports instantiation of type vars.
ballarin
parents:
14283
diff
changeset
|
5678 |
- "where" permits explicit instantiations of type variables. |
14257
a7ef3f7588c5
Type inference bug in Isar attributes "where" and "of" fixed.
ballarin
parents:
14255
diff
changeset
|
5679 |
|
14556
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
wenzelm
parents:
14551
diff
changeset
|
5680 |
* Calculation commands "moreover" and "also" no longer interfere with |
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
wenzelm
parents:
14551
diff
changeset
|
5681 |
current facts ("this"), admitting arbitrary combinations with "then" |
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
wenzelm
parents:
14551
diff
changeset
|
5682 |
and derived forms. |
14283 | 5683 |
|
14211
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5684 |
* Locales: |
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5685 |
- Goal statements involving the context element "includes" no longer |
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5686 |
generate theorems with internal delta predicates (those ending on |
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5687 |
"_axioms") in the premise. |
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5688 |
Resolve particular premise with <locale>.intro to obtain old form. |
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5689 |
- Fixed bug in type inference ("unify_frozen") that prevented mix of target |
7286c187596d
Improvements to Isar/Locales: premises generated by "includes" elements
ballarin
parents:
14199
diff
changeset
|
5690 |
specification and "includes" elements in goal statement. |
14254
342634f38451
Isar/Locales: <loc>.intro and <loc>.axioms no longer intro? and elim? by
ballarin
parents:
14243
diff
changeset
|
5691 |
- Rule sets <locale>.intro and <locale>.axioms no longer declared as |
342634f38451
Isar/Locales: <loc>.intro and <loc>.axioms no longer intro? and elim? by
ballarin
parents:
14243
diff
changeset
|
5692 |
[intro?] and [elim?] (respectively) by default. |
14508
859b11514537
Experimental command for instantiation of locales in proof contexts:
ballarin
parents:
14503
diff
changeset
|
5693 |
- Experimental command for instantiation of locales in proof contexts: |
14551 | 5694 |
instantiate <label>[<attrs>]: <loc> |
14508
859b11514537
Experimental command for instantiation of locales in proof contexts:
ballarin
parents:
14503
diff
changeset
|
5695 |
Instantiates locale <loc> and adds all its theorems to the current context |
14551 | 5696 |
taking into account their attributes. Label and attrs are optional |
5697 |
modifiers, like in theorem declarations. If present, names of |
|
5698 |
instantiated theorems are qualified with <label>, and the attributes |
|
5699 |
<attrs> are applied after any attributes these theorems might have already. |
|
5700 |
If the locale has assumptions, a chained fact of the form |
|
14508
859b11514537
Experimental command for instantiation of locales in proof contexts:
ballarin
parents:
14503
diff
changeset
|
5701 |
"<loc> t1 ... tn" is expected from which instantiations of the parameters |
14551 | 5702 |
are derived. The command does not support old-style locales declared |
5703 |
with "locale (open)". |
|
5704 |
A few (very simple) examples can be found in FOL/ex/LocaleInst.thy. |
|
14175
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5705 |
|
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5706 |
* HOL: Tactic emulation methods induct_tac and case_tac understand static |
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5707 |
(Isar) contexts. |
dbd16ebaf907
Method rule_tac understands Isar contexts: documentation.
ballarin
parents:
14173
diff
changeset
|
5708 |
|
14556
c5078f6c99a9
* Calculation commands "moreover" and "also" no longer interfere with
wenzelm
parents:
14551
diff
changeset
|
5709 |
|
14136 | 5710 |
*** HOL *** |
5711 |
||
14624 | 5712 |
* Proof import: new image HOL4 contains the imported library from |
5713 |
the HOL4 system with about 2500 theorems. It is imported by |
|
5714 |
replaying proof terms produced by HOL4 in Isabelle. The HOL4 image |
|
5715 |
can be used like any other Isabelle image. See |
|
5716 |
HOL/Import/HOL/README for more information. |
|
5717 |
||
14398
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5718 |
* Simplifier: |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5719 |
- Much improved handling of linear and partial orders. |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5720 |
Reasoners for linear and partial orders are set up for type classes |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5721 |
"linorder" and "order" respectively, and are added to the default simpset |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5722 |
as solvers. This means that the simplifier can build transitivity chains |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5723 |
to solve goals from the assumptions. |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5724 |
- INCOMPATIBILITY: old proofs break occasionally. Typically, applications |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5725 |
of blast or auto after simplification become unnecessary because the goal |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5726 |
is solved by simplification already. |
c5c47703f763
Efficient, graph-based reasoner for linear and partial orders.
ballarin
parents:
14389
diff
changeset
|
5727 |
|
14731 | 5728 |
* Numerics: new theory Ring_and_Field contains over 250 basic numerical laws, |
14389 | 5729 |
all proved in axiomatic type classes for semirings, rings and fields. |
5730 |
||
5731 |
* Numerics: |
|
5732 |
- Numeric types (nat, int, and in HOL-Complex rat, real, complex, etc.) are |
|
14731 | 5733 |
now formalized using the Ring_and_Field theory mentioned above. |
14389 | 5734 |
- INCOMPATIBILITY: simplification and arithmetic behaves somewhat differently |
5735 |
than before, because now they are set up once in a generic manner. |
|
14731 | 5736 |
- INCOMPATIBILITY: many type-specific arithmetic laws have gone. |
14480 | 5737 |
Look for the general versions in Ring_and_Field (and Power if they concern |
5738 |
exponentiation). |
|
14389 | 5739 |
|
14401 | 5740 |
* Type "rat" of the rational numbers is now available in HOL-Complex. |
14389 | 5741 |
|
14255 | 5742 |
* Records: |
5743 |
- Record types are now by default printed with their type abbreviation |
|
5744 |
instead of the list of all field types. This can be configured via |
|
5745 |
the reference "print_record_type_abbr". |
|
14731 | 5746 |
- Simproc "record_upd_simproc" for simplification of multiple updates added |
14255 | 5747 |
(not enabled by default). |
14427 | 5748 |
- Simproc "record_ex_sel_eq_simproc" to simplify EX x. sel r = x resp. |
5749 |
EX x. x = sel r to True (not enabled by default). |
|
14255 | 5750 |
- Tactic "record_split_simp_tac" to split and simplify records added. |
14731 | 5751 |
|
14136 | 5752 |
* 'specification' command added, allowing for definition by |
14224 | 5753 |
specification. There is also an 'ax_specification' command that |
5754 |
introduces the new constants axiomatically. |
|
14136 | 5755 |
|
14375 | 5756 |
* arith(_tac) is now able to generate counterexamples for reals as well. |
5757 |
||
14399
dc677b35e54f
New lemmas about inversion of restricted functions.
ballarin
parents:
14398
diff
changeset
|
5758 |
* HOL-Algebra: new locale "ring" for non-commutative rings. |
dc677b35e54f
New lemmas about inversion of restricted functions.
ballarin
parents:
14398
diff
changeset
|
5759 |
|
14243 | 5760 |
* HOL-ex: InductiveInvariant_examples illustrates advanced recursive function |
14610 | 5761 |
definitions, thanks to Sava Krsti\'{c} and John Matthews. |
5762 |
||
14731 | 5763 |
* HOL-Matrix: a first theory for matrices in HOL with an application of |
14610 | 5764 |
matrix theory to linear programming. |
14136 | 5765 |
|
14380 | 5766 |
* Unions and Intersections: |
15119 | 5767 |
The latex output syntax of UN and INT has been changed |
5768 |
from "\Union x \in A. B" to "\Union_{x \in A} B" |
|
5769 |
i.e. the index formulae has become a subscript. |
|
5770 |
Similarly for "\Union x. B", and for \Inter instead of \Union. |
|
14380 | 5771 |
|
14418 | 5772 |
* Unions and Intersections over Intervals: |
14731 | 5773 |
There is new short syntax "UN i<=n. A" for "UN i:{0..n}. A". There is |
5774 |
also an x-symbol version with subscripts "\<Union>\<^bsub>i <= n\<^esub>. A" |
|
14418 | 5775 |
like in normal math, and corresponding versions for < and for intersection. |
5776 |
||
15677 | 5777 |
* HOL/List: Ordering "lexico" is renamed "lenlex" and the standard |
5778 |
lexicographic dictonary ordering has been added as "lexord". |
|
5779 |
||
14401 | 5780 |
* ML: the legacy theory structures Int and List have been removed. They had |
5781 |
conflicted with ML Basis Library structures having the same names. |
|
14380 | 5782 |
|
14464 | 5783 |
* 'refute' command added to search for (finite) countermodels. Only works |
5784 |
for a fragment of HOL. The installation of an external SAT solver is |
|
5785 |
highly recommended. See "HOL/Refute.thy" for details. |
|
5786 |
||
14602 | 5787 |
* 'quickcheck' command: Allows to find counterexamples by evaluating |
5788 |
formulae under an assignment of free variables to random values. |
|
5789 |
In contrast to 'refute', it can deal with inductive datatypes, |
|
5790 |
but cannot handle quantifiers. See "HOL/ex/Quickcheck_Examples.thy" |
|
5791 |
for examples. |
|
14464 | 5792 |
|
14606 | 5793 |
|
14536 | 5794 |
*** HOLCF *** |
5795 |
||
5796 |
* Streams now come with concatenation and are part of the HOLCF image |
|
5797 |
||
14572 | 5798 |
|
5799 |
||
14136 | 5800 |
New in Isabelle2003 (May 2003) |
14606 | 5801 |
------------------------------ |
14136 | 5802 |
|
13280
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
wenzelm
parents:
13190
diff
changeset
|
5803 |
*** General *** |
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
wenzelm
parents:
13190
diff
changeset
|
5804 |
|
13618 | 5805 |
* Provers/simplifier: |
5806 |
||
13781 | 5807 |
- Completely reimplemented method simp (ML: Asm_full_simp_tac): |
13618 | 5808 |
Assumptions are now subject to complete mutual simplification, |
5809 |
not just from left to right. The simplifier now preserves |
|
5810 |
the order of assumptions. |
|
5811 |
||
5812 |
Potential INCOMPATIBILITY: |
|
5813 |
||
13781 | 5814 |
-- simp sometimes diverges where the old version did |
5815 |
not, e.g. invoking simp on the goal |
|
13618 | 5816 |
|
5817 |
[| P (f x); y = x; f x = f y |] ==> Q |
|
5818 |
||
13781 | 5819 |
now gives rise to the infinite reduction sequence |
5820 |
||
5821 |
P(f x) --(f x = f y)--> P(f y) --(y = x)--> P(f x) --(f x = f y)--> ... |
|
5822 |
||
5823 |
Using "simp (asm_lr)" (ML: Asm_lr_simp_tac) instead often solves this |
|
5824 |
kind of problem. |
|
5825 |
||
5826 |
-- Tactics combining classical reasoner and simplification (such as auto) |
|
5827 |
are also affected by this change, because many of them rely on |
|
5828 |
simp. They may sometimes diverge as well or yield a different numbers |
|
5829 |
of subgoals. Try to use e.g. force, fastsimp, or safe instead of auto |
|
5830 |
in case of problems. Sometimes subsequent calls to the classical |
|
5831 |
reasoner will fail because a preceeding call to the simplifier too |
|
5832 |
eagerly simplified the goal, e.g. deleted redundant premises. |
|
13618 | 5833 |
|
5834 |
- The simplifier trace now shows the names of the applied rewrite rules |
|
5835 |
||
13829 | 5836 |
- You can limit the number of recursive invocations of the simplifier |
5837 |
during conditional rewriting (where the simplifie tries to solve the |
|
5838 |
conditions before applying the rewrite rule): |
|
5839 |
ML "simp_depth_limit := n" |
|
5840 |
where n is an integer. Thus you can force termination where previously |
|
5841 |
the simplifier would diverge. |
|
5842 |
||
13835
12b2ffbe543a
Change to meta simplifier: congruence rules may now have frees as head of term.
ballarin
parents:
13829
diff
changeset
|
5843 |
- Accepts free variables as head terms in congruence rules. Useful in Isar. |
13829 | 5844 |
|
13938 | 5845 |
- No longer aborts on failed congruence proof. Instead, the |
5846 |
congruence is ignored. |
|
5847 |
||
14008 | 5848 |
* Pure: New generic framework for extracting programs from constructive |
5849 |
proofs. See HOL/Extraction.thy for an example instantiation, as well |
|
5850 |
as HOL/Extraction for some case studies. |
|
5851 |
||
13868 | 5852 |
* Pure: The main goal of the proof state is no longer shown by default, only |
5853 |
the subgoals. This behaviour is controlled by a new flag. |
|
13835
12b2ffbe543a
Change to meta simplifier: congruence rules may now have frees as head of term.
ballarin
parents:
13829
diff
changeset
|
5854 |
PG menu: Isabelle/Isar -> Settings -> Show Main Goal |
13815 | 5855 |
(ML: Proof.show_main_goal). |
5856 |
||
5857 |
* Pure: You can find all matching introduction rules for subgoal 1, i.e. all |
|
5858 |
rules whose conclusion matches subgoal 1: |
|
5859 |
PG menu: Isabelle/Isar -> Show me -> matching rules |
|
5860 |
The rules are ordered by how closely they match the subgoal. |
|
5861 |
In particular, rules that solve a subgoal outright are displayed first |
|
5862 |
(or rather last, the way they are printed). |
|
5863 |
(ML: ProofGeneral.print_intros()) |
|
5864 |
||
5865 |
* Pure: New flag trace_unify_fail causes unification to print |
|
13781 | 5866 |
diagnostic information (PG: in trace buffer) when it fails. This is |
5867 |
useful for figuring out why single step proofs like rule, erule or |
|
5868 |
assumption failed. |
|
5869 |
||
13815 | 5870 |
* Pure: Locale specifications now produce predicate definitions |
13410
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
wenzelm
parents:
13344
diff
changeset
|
5871 |
according to the body of text (covering assumptions modulo local |
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
wenzelm
parents:
13344
diff
changeset
|
5872 |
definitions); predicate "loc_axioms" covers newly introduced text, |
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
wenzelm
parents:
13344
diff
changeset
|
5873 |
while "loc" is cumulative wrt. all included locale expressions; the |
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
wenzelm
parents:
13344
diff
changeset
|
5874 |
latter view is presented only on export into the global theory |
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
wenzelm
parents:
13344
diff
changeset
|
5875 |
context; potential INCOMPATIBILITY, use "(open)" option to fall back |
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
wenzelm
parents:
13344
diff
changeset
|
5876 |
on the old view without predicates; |
f2cd09766864
* Pure: locale specifications now produce predicate definitions;
wenzelm
parents:
13344
diff
changeset
|
5877 |
|
13459
83f41b047a39
* Pure: predefined locales "var" and "struct" are useful for sharing
wenzelm
parents:
13443
diff
changeset
|
5878 |
* Pure: predefined locales "var" and "struct" are useful for sharing |
83f41b047a39
* Pure: predefined locales "var" and "struct" are useful for sharing
wenzelm
parents:
13443
diff
changeset
|
5879 |
parameters (as in CASL, for example); just specify something like |
83f41b047a39
* Pure: predefined locales "var" and "struct" are useful for sharing
wenzelm
parents:
13443
diff
changeset
|
5880 |
``var x + var y + struct M'' as import; |
83f41b047a39
* Pure: predefined locales "var" and "struct" are useful for sharing
wenzelm
parents:
13443
diff
changeset
|
5881 |
|
13463
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
wenzelm
parents:
13459
diff
changeset
|
5882 |
* Pure: improved thms_containing: proper indexing of facts instead of |
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
wenzelm
parents:
13459
diff
changeset
|
5883 |
raw theorems; check validity of results wrt. current name space; |
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
wenzelm
parents:
13459
diff
changeset
|
5884 |
include local facts of proof configuration (also covers active |
13541 | 5885 |
locales), cover fixed variables in index; may use "_" in term |
5886 |
specification; an optional limit for the number of printed facts may |
|
5887 |
be given (the default is 40); |
|
5888 |
||
5889 |
* Pure: disallow duplicate fact bindings within new-style theory files |
|
5890 |
(batch-mode only); |
|
13540
aede0306e214
* Pure: disallow duplicate fact bindings within new-style theory files;
wenzelm
parents:
13522
diff
changeset
|
5891 |
|
13463
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
wenzelm
parents:
13459
diff
changeset
|
5892 |
* Provers: improved induct method: assumptions introduced by case |
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
wenzelm
parents:
13459
diff
changeset
|
5893 |
"foo" are split into "foo.hyps" (from the rule) and "foo.prems" (from |
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
wenzelm
parents:
13459
diff
changeset
|
5894 |
the goal statement); "foo" still refers to all facts collectively; |
07747943c626
* Provers: Simplifier.simproc(_i) now provide sane interface for
wenzelm
parents:
13459
diff
changeset
|
5895 |
|
13550 | 5896 |
* Provers: the function blast.overloaded has been removed: all constants |
5897 |
are regarded as potentially overloaded, which improves robustness in exchange |
|
5898 |
for slight decrease in efficiency; |
|
5899 |
||
13781 | 5900 |
* Provers/linorder: New generic prover for transitivity reasoning over |
5901 |
linear orders. Note: this prover is not efficient! |
|
5902 |
||
13522
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
wenzelm
parents:
13518
diff
changeset
|
5903 |
* Isar: preview of problems to finish 'show' now produce an error |
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
wenzelm
parents:
13518
diff
changeset
|
5904 |
rather than just a warning (in interactive mode); |
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
wenzelm
parents:
13518
diff
changeset
|
5905 |
|
13280
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
wenzelm
parents:
13190
diff
changeset
|
5906 |
|
13158 | 5907 |
*** HOL *** |
5908 |
||
13899 | 5909 |
* arith(_tac) |
5910 |
||
5911 |
- Produces a counter example if it cannot prove a goal. |
|
5912 |
Note that the counter example may be spurious if the goal is not a formula |
|
5913 |
of quantifier-free linear arithmetic. |
|
5914 |
In ProofGeneral the counter example appears in the trace buffer. |
|
5915 |
||
5916 |
- Knows about div k and mod k where k is a numeral of type nat or int. |
|
5917 |
||
5918 |
- Calls full Presburger arithmetic (by Amine Chaieb) if quantifier-free |
|
5919 |
linear arithmetic fails. This takes account of quantifiers and divisibility. |
|
14731 | 5920 |
Presburger arithmetic can also be called explicitly via presburger(_tac). |
13899 | 5921 |
|
5922 |
* simp's arithmetic capabilities have been enhanced a bit: it now |
|
5923 |
takes ~= in premises into account (by performing a case split); |
|
5924 |
||
5925 |
* simp reduces "m*(n div m) + n mod m" to n, even if the two summands |
|
5926 |
are distributed over a sum of terms; |
|
5927 |
||
13735 | 5928 |
* New tactic "trans_tac" and method "trans" instantiate |
5929 |
Provers/linorder.ML for axclasses "order" and "linorder" (predicates |
|
14731 | 5930 |
"<=", "<" and "="). |
5931 |
||
5932 |
* function INCOMPATIBILITIES: Pi-sets have been redefined and moved from main |
|
13587 | 5933 |
HOL to Library/FuncSet; constant "Fun.op o" is now called "Fun.comp"; |
5934 |
||
13443 | 5935 |
* 'typedef' command has new option "open" to suppress the set |
5936 |
definition; |
|
5937 |
||
13522
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
wenzelm
parents:
13518
diff
changeset
|
5938 |
* functions Min and Max on finite sets have been introduced (theory |
934fffeb6f38
* Isar: preview of problems to finish 'show' now produce an error
wenzelm
parents:
13518
diff
changeset
|
5939 |
Finite_Set); |
13492 | 5940 |
|
13443 | 5941 |
* attribute [symmetric] now works for relations as well; it turns |
5942 |
(x,y) : R^-1 into (y,x) : R, and vice versa; |
|
5943 |
||
13613 | 5944 |
* induct over a !!-quantified statement (say !!x1..xn): |
5945 |
each "case" automatically performs "fix x1 .. xn" with exactly those names. |
|
5946 |
||
13899 | 5947 |
* Map: `empty' is no longer a constant but a syntactic abbreviation for |
5948 |
%x. None. Warning: empty_def now refers to the previously hidden definition |
|
5949 |
of the empty set. |
|
5950 |
||
14018 | 5951 |
* Algebra: formalization of classical algebra. Intended as base for |
5952 |
any algebraic development in Isabelle. Currently covers group theory |
|
5953 |
(up to Sylow's theorem) and ring theory (Universal Property of |
|
5954 |
Univariate Polynomials). Contributions welcome; |
|
13960 | 5955 |
|
5956 |
* GroupTheory: deleted, since its material has been moved to Algebra; |
|
5957 |
||
14731 | 5958 |
* Complex: new directory of the complex numbers with numeric constants, |
5959 |
nonstandard complex numbers, and some complex analysis, standard and |
|
13966
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
paulson
parents:
13960
diff
changeset
|
5960 |
nonstandard (Jacques Fleuriot); |
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
paulson
parents:
13960
diff
changeset
|
5961 |
|
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
paulson
parents:
13960
diff
changeset
|
5962 |
* HOL-Complex: new image for analysis, replacing HOL-Real and HOL-Hyperreal; |
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
paulson
parents:
13960
diff
changeset
|
5963 |
|
14731 | 5964 |
* Hyperreal: introduced Gauge integration and hyperreal logarithms (Jacques |
13966
2160abf7cfe7
removal of the image HOL-Real and merging of HOL-Real-ex with HOL-Complex-ex
paulson
parents:
13960
diff
changeset
|
5965 |
Fleuriot); |
13960 | 5966 |
|
13549 | 5967 |
* Real/HahnBanach: updated and adapted to locales; |
5968 |
||
13995 | 5969 |
* NumberTheory: added Gauss's law of quadratic reciprocity (by Avigad, |
5970 |
Gray and Kramer); |
|
13872 | 5971 |
|
5972 |
* UNITY: added the Meier-Sanders theory of progress sets; |
|
5973 |
||
14011 | 5974 |
* MicroJava: bytecode verifier and lightweight bytecode verifier |
5975 |
as abstract algorithms, instantiated to the JVM; |
|
5976 |
||
14010 | 5977 |
* Bali: Java source language formalization. Type system, operational |
5978 |
semantics, axiomatic semantics. Supported language features: |
|
5979 |
classes, interfaces, objects,virtual methods, static methods, |
|
5980 |
static/instance fields, arrays, access modifiers, definite |
|
5981 |
assignment, exceptions. |
|
13549 | 5982 |
|
14011 | 5983 |
|
13549 | 5984 |
*** ZF *** |
5985 |
||
15154 | 5986 |
* ZF/Constructible: consistency proof for AC (Gdel's constructible |
13549 | 5987 |
universe, etc.); |
5988 |
||
13872 | 5989 |
* Main ZF: virtually all theories converted to new-style format; |
13518 | 5990 |
|
13280
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
wenzelm
parents:
13190
diff
changeset
|
5991 |
|
13478 | 5992 |
*** ML *** |
5993 |
||
5994 |
* Pure: Tactic.prove provides sane interface for internal proofs; |
|
5995 |
omits the infamous "standard" operation, so this is more appropriate |
|
5996 |
than prove_goalw_cterm in many situations (e.g. in simprocs); |
|
5997 |
||
5998 |
* Pure: improved error reporting of simprocs; |
|
5999 |
||
6000 |
* Provers: Simplifier.simproc(_i) provides sane interface for setting |
|
6001 |
up simprocs; |
|
6002 |
||
6003 |
||
13953 | 6004 |
*** Document preparation *** |
6005 |
||
6006 |
* uses \par instead of \\ for line breaks in theory text. This may |
|
6007 |
shift some page breaks in large documents. To get the old behaviour |
|
6008 |
use \renewcommand{\isanewline}{\mbox{}\\\mbox{}} in root.tex. |
|
6009 |
||
14731 | 6010 |
* minimized dependencies of isabelle.sty and isabellesym.sty on |
13953 | 6011 |
other packages |
6012 |
||
6013 |
* \<euro> now needs package babel/greek instead of marvosym (which |
|
6014 |
broke \Rightarrow) |
|
6015 |
||
14731 | 6016 |
* normal size for \<zero>...\<nine> (uses \mathbf instead of |
13954 | 6017 |
textcomp package) |
13953 | 6018 |
|
13280
306ef3aef61b
* improved thms_containing: proper indexing of facts instead of raw
wenzelm
parents:
13190
diff
changeset
|
6019 |
|
14572 | 6020 |
|
12984 | 6021 |
New in Isabelle2002 (March 2002) |
6022 |
-------------------------------- |
|
11474 | 6023 |
|
11572 | 6024 |
*** Document preparation *** |
6025 |
||
11842
b903d3dabbe2
* greatly simplified document preparation setup, including more
wenzelm
parents:
11817
diff
changeset
|
6026 |
* greatly simplified document preparation setup, including more |
b903d3dabbe2
* greatly simplified document preparation setup, including more
wenzelm
parents:
11817
diff
changeset
|
6027 |
graceful interpretation of isatool usedir -i/-d/-D options, and more |
b903d3dabbe2
* greatly simplified document preparation setup, including more
wenzelm
parents:
11817
diff
changeset
|
6028 |
instructive isatool mkdir; users should basically be able to get |
12899
7d5b690253ee
"isatool usedir -D output HOL Test && isatool document Test/output";
wenzelm
parents:
12889
diff
changeset
|
6029 |
started with "isatool mkdir HOL Test && isatool make"; alternatively, |
7d5b690253ee
"isatool usedir -D output HOL Test && isatool document Test/output";
wenzelm
parents:
12889
diff
changeset
|
6030 |
users may run a separate document processing stage manually like this: |
7d5b690253ee
"isatool usedir -D output HOL Test && isatool document Test/output";
wenzelm
parents:
12889
diff
changeset
|
6031 |
"isatool usedir -D output HOL Test && isatool document Test/output"; |
11842
b903d3dabbe2
* greatly simplified document preparation setup, including more
wenzelm
parents:
11817
diff
changeset
|
6032 |
|
b903d3dabbe2
* greatly simplified document preparation setup, including more
wenzelm
parents:
11817
diff
changeset
|
6033 |
* theory dependency graph may now be incorporated into documents; |
b903d3dabbe2
* greatly simplified document preparation setup, including more
wenzelm
parents:
11817
diff
changeset
|
6034 |
isatool usedir -g true will produce session_graph.eps/.pdf for use |
b903d3dabbe2
* greatly simplified document preparation setup, including more
wenzelm
parents:
11817
diff
changeset
|
6035 |
with \includegraphics of LaTeX; |
b903d3dabbe2
* greatly simplified document preparation setup, including more
wenzelm
parents:
11817
diff
changeset
|
6036 |
|
11864
371ce685b0ec
* proper spacing of consecutive markup elements, especially text
wenzelm
parents:
11842
diff
changeset
|
6037 |
* proper spacing of consecutive markup elements, especially text |
371ce685b0ec
* proper spacing of consecutive markup elements, especially text
wenzelm
parents:
11842
diff
changeset
|
6038 |
blocks after section headings; |
371ce685b0ec
* proper spacing of consecutive markup elements, especially text
wenzelm
parents:
11842
diff
changeset
|
6039 |
|
11572 | 6040 |
* support bold style (for single symbols only), input syntax is like |
6041 |
this: "\<^bold>\<alpha>" or "\<^bold>A"; |
|
6042 |
||
11814 | 6043 |
* \<bullet> is now output as bold \cdot by default, which looks much |
11572 | 6044 |
better in printed text; |
6045 |
||
11712
deb8cac87063
* added default LaTeX bindings for \<tturnstile> and \<TTurnstile>;
wenzelm
parents:
11702
diff
changeset
|
6046 |
* added default LaTeX bindings for \<tturnstile> and \<TTurnstile>; |
deb8cac87063
* added default LaTeX bindings for \<tturnstile> and \<TTurnstile>;
wenzelm
parents:
11702
diff
changeset
|
6047 |
note that these symbols are currently unavailable in Proof General / |
12769 | 6048 |
X-Symbol; new symbols \<zero>, \<one>, ..., \<nine>, and \<euro>; |
12690 | 6049 |
|
6050 |
* isatool latex no longer depends on changed TEXINPUTS, instead |
|
6051 |
isatool document copies the Isabelle style files to the target |
|
6052 |
location; |
|
11712
deb8cac87063
* added default LaTeX bindings for \<tturnstile> and \<TTurnstile>;
wenzelm
parents:
11702
diff
changeset
|
6053 |
|
11572 | 6054 |
|
11633 | 6055 |
*** Isar *** |
6056 |
||
12312
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6057 |
* Pure/Provers: improved proof by cases and induction; |
12280 | 6058 |
- 'case' command admits impromptu naming of parameters (such as |
6059 |
"case (Suc n)"); |
|
6060 |
- 'induct' method divinates rule instantiation from the inductive |
|
6061 |
claim; no longer requires excessive ?P bindings for proper |
|
6062 |
instantiation of cases; |
|
6063 |
- 'induct' method properly enumerates all possibilities of set/type |
|
6064 |
rules; as a consequence facts may be also passed through *type* |
|
6065 |
rules without further ado; |
|
6066 |
- 'induct' method now derives symbolic cases from the *rulified* |
|
6067 |
rule (before it used to rulify cases stemming from the internal |
|
6068 |
atomized version); this means that the context of a non-atomic |
|
6069 |
statement becomes is included in the hypothesis, avoiding the |
|
6070 |
slightly cumbersome show "PROP ?case" form; |
|
6071 |
- 'induct' may now use elim-style induction rules without chaining |
|
6072 |
facts, using ``missing'' premises from the goal state; this allows |
|
6073 |
rules stemming from inductive sets to be applied in unstructured |
|
6074 |
scripts, while still benefitting from proper handling of non-atomic |
|
6075 |
statements; NB: major inductive premises need to be put first, all |
|
6076 |
the rest of the goal is passed through the induction; |
|
6077 |
- 'induct' proper support for mutual induction involving non-atomic |
|
6078 |
rule statements (uses the new concept of simultaneous goals, see |
|
6079 |
below); |
|
12853 | 6080 |
- append all possible rule selections, but only use the first |
6081 |
success (no backtracking); |
|
11995
4a622f5fb164
- 'induct' may now use elim-style induction rules without chaining
wenzelm
parents:
11986
diff
changeset
|
6082 |
- removed obsolete "(simplified)" and "(stripped)" options of methods; |
12754
044a59921f3b
Isar: undeclared rule case names default to numbers 1, 2, 3, ...;
wenzelm
parents:
12753
diff
changeset
|
6083 |
- undeclared rule case names default to numbers 1, 2, 3, ...; |
044a59921f3b
Isar: undeclared rule case names default to numbers 1, 2, 3, ...;
wenzelm
parents:
12753
diff
changeset
|
6084 |
- added 'print_induct_rules' (covered by help item in recent Proof |
044a59921f3b
Isar: undeclared rule case names default to numbers 1, 2, 3, ...;
wenzelm
parents:
12753
diff
changeset
|
6085 |
General versions); |
11995
4a622f5fb164
- 'induct' may now use elim-style induction rules without chaining
wenzelm
parents:
11986
diff
changeset
|
6086 |
- moved induct/cases attributes to Pure, methods to Provers; |
4a622f5fb164
- 'induct' may now use elim-style induction rules without chaining
wenzelm
parents:
11986
diff
changeset
|
6087 |
- generic method setup instantiated for FOL and HOL; |
11986
26b95a6f3f79
- 'induct' method now derives symbolic cases from the *rulified* rule
wenzelm
parents:
11965
diff
changeset
|
6088 |
|
12163
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6089 |
* Pure: support multiple simultaneous goal statements, for example |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6090 |
"have a: A and b: B" (same for 'theorem' etc.); being a pure |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6091 |
meta-level mechanism, this acts as if several individual goals had |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6092 |
been stated separately; in particular common proof methods need to be |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6093 |
repeated in order to cover all claims; note that a single elimination |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6094 |
step is *not* sufficient to establish the two conjunctions, so this |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6095 |
fails: |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6096 |
|
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6097 |
assume "A & B" then have A and B .. (*".." fails*) |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6098 |
|
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6099 |
better use "obtain" in situations as above; alternative refer to |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6100 |
multi-step methods like 'auto', 'simp_all', 'blast+' etc.; |
04c98351f9af
Isar: 'induct' proper support for mutual induction involving
wenzelm
parents:
12159
diff
changeset
|
6101 |
|
12078
4eb8061286e5
* Isar/Pure: proper integration with ``locales''; unlike the original
wenzelm
parents:
12034
diff
changeset
|
6102 |
* Pure: proper integration with ``locales''; unlike the original |
15154 | 6103 |
version by Florian Kammller, Isar locales package high-level proof |
12078
4eb8061286e5
* Isar/Pure: proper integration with ``locales''; unlike the original
wenzelm
parents:
12034
diff
changeset
|
6104 |
contexts rather than raw logical ones (e.g. we admit to include |
12280 | 6105 |
attributes everywhere); operations on locales include merge and |
12964 | 6106 |
rename; support for implicit arguments (``structures''); simultaneous |
6107 |
type-inference over imports and text; see also HOL/ex/Locales.thy for |
|
6108 |
some examples; |
|
12078
4eb8061286e5
* Isar/Pure: proper integration with ``locales''; unlike the original
wenzelm
parents:
12034
diff
changeset
|
6109 |
|
12707
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
wenzelm
parents:
12690
diff
changeset
|
6110 |
* Pure: the following commands have been ``localized'', supporting a |
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
wenzelm
parents:
12690
diff
changeset
|
6111 |
target locale specification "(in name)": 'lemma', 'theorem', |
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
wenzelm
parents:
12690
diff
changeset
|
6112 |
'corollary', 'lemmas', 'theorems', 'declare'; the results will be |
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
wenzelm
parents:
12690
diff
changeset
|
6113 |
stored both within the locale and at the theory level (exported and |
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
wenzelm
parents:
12690
diff
changeset
|
6114 |
qualified by the locale name); |
4013be8572c5
* Pure: localized 'lemmas', 'theorems', 'declare';
wenzelm
parents:
12690
diff
changeset
|
6115 |
|
12964 | 6116 |
* Pure: theory goals may now be specified in ``long'' form, with |
6117 |
ad-hoc contexts consisting of arbitrary locale elements. for example |
|
6118 |
``lemma foo: fixes x assumes "A x" shows "B x"'' (local syntax and |
|
6119 |
definitions may be given, too); the result is a meta-level rule with |
|
6120 |
the context elements being discharged in the obvious way; |
|
6121 |
||
6122 |
* Pure: new proof command 'using' allows to augment currently used |
|
6123 |
facts after a goal statement ('using' is syntactically analogous to |
|
6124 |
'apply', but acts on the goal's facts only); this allows chained facts |
|
6125 |
to be separated into parts given before and after a claim, as in |
|
6126 |
``from a and b have C using d and e <proof>''; |
|
12078
4eb8061286e5
* Isar/Pure: proper integration with ``locales''; unlike the original
wenzelm
parents:
12034
diff
changeset
|
6127 |
|
11722 | 6128 |
* Pure: renamed "antecedent" case to "rule_context"; |
6129 |
||
12964 | 6130 |
* Pure: new 'judgment' command records explicit information about the |
6131 |
object-logic embedding (used by several tools internally); no longer |
|
6132 |
use hard-wired "Trueprop"; |
|
6133 |
||
11738 | 6134 |
* Pure: added 'corollary' command; |
6135 |
||
11722 | 6136 |
* Pure: fixed 'token_translation' command; |
6137 |
||
11899 | 6138 |
* Pure: removed obsolete 'exported' attribute; |
6139 |
||
11933 | 6140 |
* Pure: dummy pattern "_" in is/let is now automatically lifted over |
6141 |
bound variables: "ALL x. P x --> Q x" (is "ALL x. _ --> ?C x") |
|
11899 | 6142 |
supersedes more cumbersome ... (is "ALL x. _ x --> ?C x"); |
6143 |
||
11952
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
wenzelm
parents:
11937
diff
changeset
|
6144 |
* Pure: method 'atomize' presents local goal premises as object-level |
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
wenzelm
parents:
11937
diff
changeset
|
6145 |
statements (atomic meta-level propositions); setup controlled via |
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
wenzelm
parents:
11937
diff
changeset
|
6146 |
rewrite rules declarations of 'atomize' attribute; example |
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
wenzelm
parents:
11937
diff
changeset
|
6147 |
application: 'induct' method with proper rule statements in improper |
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
wenzelm
parents:
11937
diff
changeset
|
6148 |
proof *scripts*; |
b10f1e8862f4
* Pure: method 'atomize' presents local goal premises as object-level
wenzelm
parents:
11937
diff
changeset
|
6149 |
|
12106
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
wenzelm
parents:
12078
diff
changeset
|
6150 |
* Pure: emulation of instantiation tactics (rule_tac, cut_tac, etc.) |
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
wenzelm
parents:
12078
diff
changeset
|
6151 |
now consider the syntactic context of assumptions, giving a better |
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
wenzelm
parents:
12078
diff
changeset
|
6152 |
chance to get type-inference of the arguments right (this is |
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
wenzelm
parents:
12078
diff
changeset
|
6153 |
especially important for locales); |
4a8558dbb6a0
* Isar/Pure: emulation of instantiation tactics (rule_tac, cut_tac,
wenzelm
parents:
12078
diff
changeset
|
6154 |
|
12312
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6155 |
* Pure: "sorry" no longer requires quick_and_dirty in interactive |
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6156 |
mode; |
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6157 |
|
12405
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6158 |
* Pure/obtain: the formal conclusion "thesis", being marked as |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6159 |
``internal'', may no longer be reference directly in the text; |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6160 |
potential INCOMPATIBILITY, may need to use "?thesis" in rare |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6161 |
situations; |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6162 |
|
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6163 |
* Pure: generic 'sym' attribute which declares a rule both as pure |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6164 |
'elim?' and for the 'symmetric' operation; |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6165 |
|
12877
b9635eb8a448
* Isar/Pure: marginal comments ``--'' may now occur just anywhere in the text;
wenzelm
parents:
12853
diff
changeset
|
6166 |
* Pure: marginal comments ``--'' may now occur just anywhere in the |
b9635eb8a448
* Isar/Pure: marginal comments ``--'' may now occur just anywhere in the text;
wenzelm
parents:
12853
diff
changeset
|
6167 |
text; the fixed correlation with particular command syntax has been |
b9635eb8a448
* Isar/Pure: marginal comments ``--'' may now occur just anywhere in the text;
wenzelm
parents:
12853
diff
changeset
|
6168 |
discontinued; |
b9635eb8a448
* Isar/Pure: marginal comments ``--'' may now occur just anywhere in the text;
wenzelm
parents:
12853
diff
changeset
|
6169 |
|
13023
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6170 |
* Pure: new method 'rules' is particularly well-suited for proof |
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6171 |
search in intuitionistic logic; a bit slower than 'blast' or 'fast', |
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6172 |
but often produces more compact proof terms with less detours; |
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6173 |
|
12364
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6174 |
* Pure/Provers/classical: simplified integration with pure rule |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6175 |
attributes and methods; the classical "intro?/elim?/dest?" |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6176 |
declarations coincide with the pure ones; the "rule" method no longer |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6177 |
includes classically swapped intros; "intro" and "elim" methods no |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6178 |
longer pick rules from the context; also got rid of ML declarations |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6179 |
AddXIs/AddXEs/AddXDs; all of this has some potential for |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6180 |
INCOMPATIBILITY; |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6181 |
|
12405
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6182 |
* Provers/classical: attribute 'swapped' produces classical inversions |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6183 |
of introduction rules; |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6184 |
|
12364
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6185 |
* Provers/simplifier: 'simplified' attribute may refer to explicit |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6186 |
rules instead of full simplifier context; 'iff' attribute handles |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6187 |
conditional rules; |
11936
fef099613354
* Provers: 'simplified' attribute may refer to explicit rules instead
wenzelm
parents:
11933
diff
changeset
|
6188 |
|
11745
06cd8c3b5487
* HOL: 'typedef' now allows alternative names for Rep/Abs morphisms;
wenzelm
parents:
11738
diff
changeset
|
6189 |
* HOL: 'typedef' now allows alternative names for Rep/Abs morphisms; |
06cd8c3b5487
* HOL: 'typedef' now allows alternative names for Rep/Abs morphisms;
wenzelm
parents:
11738
diff
changeset
|
6190 |
|
11690 | 6191 |
* HOL: 'recdef' now fails on unfinished automated proofs, use |
11633 | 6192 |
"(permissive)" option to recover old behavior; |
6193 |
||
11933 | 6194 |
* HOL: 'inductive' no longer features separate (collective) attributes |
6195 |
for 'intros' (was found too confusing); |
|
6196 |
||
12405
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6197 |
* HOL: properly declared induction rules less_induct and |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6198 |
wf_induct_rule; |
9b16f99fd7b9
* Pure/obtain: "thesis" now internal (use ?thesis);
wenzelm
parents:
12364
diff
changeset
|
6199 |
|
11788
60054fee3c16
canonical 'cases'/'induct' rules for n-tuples (n=3..7)
kleing
parents:
11745
diff
changeset
|
6200 |
|
11474 | 6201 |
*** HOL *** |
6202 |
||
11702 | 6203 |
* HOL: moved over to sane numeral syntax; the new policy is as |
6204 |
follows: |
|
6205 |
||
6206 |
- 0 and 1 are polymorphic constants, which are defined on any |
|
6207 |
numeric type (nat, int, real etc.); |
|
6208 |
||
6209 |
- 2, 3, 4, ... and -1, -2, -3, ... are polymorphic numerals, based |
|
6210 |
binary representation internally; |
|
6211 |
||
6212 |
- type nat has special constructor Suc, and generally prefers Suc 0 |
|
6213 |
over 1::nat and Suc (Suc 0) over 2::nat; |
|
6214 |
||
12364
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6215 |
This change may cause significant problems of INCOMPATIBILITY; here |
108cdda23ab3
* Pure/Provers/classical: simplified integration with pure rule
wenzelm
parents:
12335
diff
changeset
|
6216 |
are some hints on converting existing sources: |
11702 | 6217 |
|
6218 |
- due to the new "num" token, "-0" and "-1" etc. are now atomic |
|
6219 |
entities, so expressions involving "-" (unary or binary minus) need |
|
6220 |
to be spaced properly; |
|
6221 |
||
6222 |
- existing occurrences of "1" may need to be constraint "1::nat" or |
|
6223 |
even replaced by Suc 0; similar for old "2"; |
|
6224 |
||
6225 |
- replace "#nnn" by "nnn", and "#-nnn" by "-nnn"; |
|
6226 |
||
6227 |
- remove all special provisions on numerals in proofs; |
|
6228 |
||
13042 | 6229 |
* HOL: simp rules nat_number expand numerals on nat to Suc/0 |
12837 | 6230 |
representation (depends on bin_arith_simps in the default context); |
6231 |
||
12736 | 6232 |
* HOL: symbolic syntax for x^2 (numeral 2); |
6233 |
||
12335
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
wenzelm
parents:
12312
diff
changeset
|
6234 |
* HOL: the class of all HOL types is now called "type" rather than |
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
wenzelm
parents:
12312
diff
changeset
|
6235 |
"term"; INCOMPATIBILITY, need to adapt references to this type class |
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
wenzelm
parents:
12312
diff
changeset
|
6236 |
in axclass/classes, instance/arities, and (usually rare) occurrences |
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
wenzelm
parents:
12312
diff
changeset
|
6237 |
in typings (of consts etc.); internally the class is called |
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
wenzelm
parents:
12312
diff
changeset
|
6238 |
"HOL.type", ML programs should refer to HOLogic.typeS; |
db4d5f498742
* HOL: the class of all HOL types is now called "type" rather than
wenzelm
parents:
12312
diff
changeset
|
6239 |
|
12280 | 6240 |
* HOL/record package improvements: |
6241 |
- new derived operations "fields" to build a partial record section, |
|
6242 |
"extend" to promote a fixed record to a record scheme, and |
|
6243 |
"truncate" for the reverse; cf. theorems "xxx.defs", which are *not* |
|
6244 |
declared as simp by default; |
|
12587
3f3d2ffb5df5
HOL/record: shared operations ("more", "fields", etc.) now need to be
wenzelm
parents:
12564
diff
changeset
|
6245 |
- shared operations ("more", "fields", etc.) now need to be always |
3f3d2ffb5df5
HOL/record: shared operations ("more", "fields", etc.) now need to be
wenzelm
parents:
12564
diff
changeset
|
6246 |
qualified) --- potential INCOMPATIBILITY; |
12280 | 6247 |
- removed "make_scheme" operations (use "make" with "extend") -- |
6248 |
INCOMPATIBILITY; |
|
11937 | 6249 |
- removed "more" class (simply use "term") -- INCOMPATIBILITY; |
12253 | 6250 |
- provides cases/induct rules for use with corresponding Isar |
6251 |
methods (for concrete records, record schemes, concrete more |
|
12280 | 6252 |
parts, and schematic more parts -- in that order); |
11930 | 6253 |
- internal definitions directly based on a light-weight abstract |
6254 |
theory of product types over typedef rather than datatype; |
|
6255 |
||
13023
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6256 |
* HOL: generic code generator for generating executable ML code from |
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6257 |
specifications; specific support for HOL constructs such as inductive |
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6258 |
datatypes and sets, as well as recursive functions; can be invoked |
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6259 |
via 'generate_code' theory section; |
f869b6822006
Added two paragraphs on "rules" method and code generator.
berghofe
parents:
12984
diff
changeset
|
6260 |
|
11933 | 6261 |
* HOL: canonical cases/induct rules for n-tuples (n = 3..7); |
6262 |
||
13824 | 6263 |
* HOL: consolidated and renamed several theories. In particular: |
14731 | 6264 |
Ord.thy has been absorbed into HOL.thy |
6265 |
String.thy has been absorbed into List.thy |
|
6266 |
||
11802
1d5f5d2427d2
* HOL: concrete setsum syntax "\<Sum>i:A. b" == "setsum (%i. b) A"
wenzelm
parents:
11797
diff
changeset
|
6267 |
* HOL: concrete setsum syntax "\<Sum>i:A. b" == "setsum (%i. b) A" |
1d5f5d2427d2
* HOL: concrete setsum syntax "\<Sum>i:A. b" == "setsum (%i. b) A"
wenzelm
parents:
11797
diff
changeset
|
6268 |
(beware of argument permutation!); |
1d5f5d2427d2
* HOL: concrete setsum syntax "\<Sum>i:A. b" == "setsum (%i. b) A"
wenzelm
parents:
11797
diff
changeset
|
6269 |
|
11657 | 6270 |
* HOL: linorder_less_split superseded by linorder_cases; |
6271 |
||
12917 | 6272 |
* HOL/List: "nodups" renamed to "distinct"; |
12889 | 6273 |
|
11633 | 6274 |
* HOL: added "The" definite description operator; move Hilbert's "Eps" |
13824 | 6275 |
to peripheral theory "Hilbert_Choice"; some INCOMPATIBILITIES: |
6276 |
- Ex_def has changed, now need to use some_eq_ex |
|
11437 | 6277 |
|
11572 | 6278 |
* HOL: made split_all_tac safe; EXISTING PROOFS MAY FAIL OR LOOP, so |
6279 |
in this (rare) case use: |
|
6280 |
||
6281 |
delSWrapper "split_all_tac" |
|
6282 |
addSbefore ("unsafe_split_all_tac", unsafe_split_all_tac) |
|
6283 |
||
6284 |
* HOL: added safe wrapper "split_conv_tac" to claset; EXISTING PROOFS |
|
11474 | 6285 |
MAY FAIL; |
11361 | 6286 |
|
11572 | 6287 |
* HOL: introduced f^n = f o ... o f; warning: due to the limits of |
6288 |
Isabelle's type classes, ^ on functions and relations has too general |
|
6289 |
a domain, namely ('a * 'b) set and 'a => 'b; this means that it may be |
|
6290 |
necessary to attach explicit type constraints; |
|
11307 | 6291 |
|
12917 | 6292 |
* HOL/Relation: the prefix name of the infix "O" has been changed from |
6293 |
"comp" to "rel_comp"; INCOMPATIBILITY: a few theorems have been |
|
6294 |
renamed accordingly (eg "compI" -> "rel_compI"). |
|
12489 | 6295 |
|
11487
95071c9e85a3
* HOL: syntax translations now work properly with numerals and records
wenzelm
parents:
11475
diff
changeset
|
6296 |
* HOL: syntax translations now work properly with numerals and records |
95071c9e85a3
* HOL: syntax translations now work properly with numerals and records
wenzelm
parents:
11475
diff
changeset
|
6297 |
expressions; |
11474 | 6298 |
|
12457
cbfc53e45476
* HOL: bounded abstraction now uses syntax "%" / "\<lambda>" instead
wenzelm
parents:
12405
diff
changeset
|
6299 |
* HOL: bounded abstraction now uses syntax "%" / "\<lambda>" instead |
cbfc53e45476
* HOL: bounded abstraction now uses syntax "%" / "\<lambda>" instead
wenzelm
parents:
12405
diff
changeset
|
6300 |
of "lam" -- INCOMPATIBILITY; |
11474 | 6301 |
|
11933 | 6302 |
* HOL: got rid of some global declarations (potential INCOMPATIBILITY |
6303 |
for ML tools): const "()" renamed "Product_Type.Unity", type "unit" |
|
6304 |
renamed "Product_Type.unit"; |
|
11611 | 6305 |
|
12564 | 6306 |
* HOL: renamed rtrancl_into_rtrancl2 to converse_rtrancl_into_rtrancl |
6307 |
||
12924 | 6308 |
* HOL: removed obsolete theorem "optionE" (use "option.exhaust", or |
6309 |
the "cases" method); |
|
6310 |
||
12597
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
wenzelm
parents:
12587
diff
changeset
|
6311 |
* HOL/GroupTheory: group theory examples including Sylow's theorem (by |
15154 | 6312 |
Florian Kammller); |
12597
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
wenzelm
parents:
12587
diff
changeset
|
6313 |
|
12608
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
wenzelm
parents:
12597
diff
changeset
|
6314 |
* HOL/IMP: updated and converted to new-style theory format; several |
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
wenzelm
parents:
12597
diff
changeset
|
6315 |
parts turned into readable document, with proper Isar proof texts and |
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
wenzelm
parents:
12597
diff
changeset
|
6316 |
some explanations (by Gerwin Klein); |
12597
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
wenzelm
parents:
12587
diff
changeset
|
6317 |
|
12734 | 6318 |
* HOL-Real: added Complex_Numbers (by Gertrud Bauer); |
6319 |
||
12690 | 6320 |
* HOL-Hyperreal is now a logic image; |
6321 |
||
11611 | 6322 |
|
12022
9c3377b133c0
HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
wenzelm
parents:
11995
diff
changeset
|
6323 |
*** HOLCF *** |
9c3377b133c0
HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
wenzelm
parents:
11995
diff
changeset
|
6324 |
|
12622 | 6325 |
* Isar: consts/constdefs supports mixfix syntax for continuous |
6326 |
operations; |
|
6327 |
||
6328 |
* Isar: domain package adapted to new-style theory format, e.g. see |
|
6329 |
HOLCF/ex/Dnat.thy; |
|
6330 |
||
6331 |
* theory Lift: proper use of rep_datatype lift instead of ML hacks -- |
|
12280 | 6332 |
potential INCOMPATIBILITY; now use plain induct_tac instead of former |
6333 |
lift.induct_tac, always use UU instead of Undef; |
|
12022
9c3377b133c0
HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
wenzelm
parents:
11995
diff
changeset
|
6334 |
|
12597
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
wenzelm
parents:
12587
diff
changeset
|
6335 |
* HOLCF/IMP: updated and converted to new-style theory; |
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
wenzelm
parents:
12587
diff
changeset
|
6336 |
|
12022
9c3377b133c0
HOLCF: proper rep_datatype lift (see theory Lift); use plain induct_tac
wenzelm
parents:
11995
diff
changeset
|
6337 |
|
11474 | 6338 |
*** ZF *** |
6339 |
||
12622 | 6340 |
* Isar: proper integration of logic-specific tools and packages, |
6341 |
including theory commands '(co)inductive', '(co)datatype', |
|
6342 |
'rep_datatype', 'inductive_cases', as well as methods 'ind_cases', |
|
6343 |
'induct_tac', 'case_tac', and 'typecheck' (with attribute 'TC'); |
|
6344 |
||
6345 |
* theory Main no longer includes AC; for the Axiom of Choice, base |
|
6346 |
your theory on Main_ZFC; |
|
6347 |
||
6348 |
* the integer library now covers quotients and remainders, with many |
|
6349 |
laws relating division to addition, multiplication, etc.; |
|
12563 | 6350 |
|
12280 | 6351 |
* ZF/UNITY: Chandy and Misra's UNITY is now available in ZF, giving a |
6352 |
typeless version of the formalism; |
|
6353 |
||
13025 | 6354 |
* ZF/AC, Coind, IMP, Resid: updated and converted to new-style theory |
6355 |
format; |
|
12608
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
wenzelm
parents:
12597
diff
changeset
|
6356 |
|
12280 | 6357 |
* ZF/Induct: new directory for examples of inductive definitions, |
12608
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
wenzelm
parents:
12597
diff
changeset
|
6358 |
including theory Multiset for multiset orderings; converted to |
2df381faa787
* ZF/IMP: updated and converted to new-style theory format;
wenzelm
parents:
12597
diff
changeset
|
6359 |
new-style theory format; |
12177
b1c16d685a99
* ZF: new-style theory commands 'inductive', 'inductive_cases', and
wenzelm
parents:
12163
diff
changeset
|
6360 |
|
13025 | 6361 |
* ZF: many new theorems about lists, ordinals, etc.; |
12850 | 6362 |
|
11474 | 6363 |
|
6364 |
*** General *** |
|
6365 |
||
12280 | 6366 |
* Pure/kernel: meta-level proof terms (by Stefan Berghofer); reference |
6367 |
variable proof controls level of detail: 0 = no proofs (only oracle |
|
6368 |
dependencies), 1 = lemma dependencies, 2 = compact proof terms; see |
|
6369 |
also ref manual for further ML interfaces; |
|
6370 |
||
6371 |
* Pure/axclass: removed obsolete ML interface |
|
6372 |
goal_subclass/goal_arity; |
|
6373 |
||
6374 |
* Pure/syntax: new token syntax "num" for plain numerals (without "#" |
|
6375 |
of "xnum"); potential INCOMPATIBILITY, since -0, -1 etc. are now |
|
6376 |
separate tokens, so expressions involving minus need to be spaced |
|
6377 |
properly; |
|
6378 |
||
12312
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6379 |
* Pure/syntax: support non-oriented infixes, using keyword "infix" |
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6380 |
rather than "infixl" or "infixr"; |
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6381 |
|
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6382 |
* Pure/syntax: concrete syntax for dummy type variables admits genuine |
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6383 |
sort constraint specifications in type inference; e.g. "x::_::foo" |
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6384 |
ensures that the type of "x" is of sort "foo" (but not necessarily a |
f0f06950820d
* Isar/Pure: "sorry" no longer requires quick_and_dirty in interactive mode;
wenzelm
parents:
12280
diff
changeset
|
6385 |
type variable); |
12280 | 6386 |
|
6387 |
* Pure/syntax: print modes "type_brackets" and "no_type_brackets" |
|
6388 |
control output of nested => (types); the default behavior is |
|
6389 |
"type_brackets"; |
|
6390 |
||
6391 |
* Pure/syntax: builtin parse translation for "_constify" turns valued |
|
11817 | 6392 |
tokens into AST constants; |
11474 | 6393 |
|
12280 | 6394 |
* Pure/syntax: prefer later declarations of translations and print |
6395 |
translation functions; potential INCOMPATIBILITY: need to reverse |
|
6396 |
multiple declarations for same syntax element constant; |
|
6397 |
||
12832
c31b44286a8a
* Pure/show_hyps reset by default (in accordance to existing Isar practice);
wenzelm
parents:
12777
diff
changeset
|
6398 |
* Pure/show_hyps reset by default (in accordance to existing Isar |
c31b44286a8a
* Pure/show_hyps reset by default (in accordance to existing Isar practice);
wenzelm
parents:
12777
diff
changeset
|
6399 |
practice); |
c31b44286a8a
* Pure/show_hyps reset by default (in accordance to existing Isar practice);
wenzelm
parents:
12777
diff
changeset
|
6400 |
|
12280 | 6401 |
* Provers/classical: renamed addaltern to addafter, addSaltern to |
6402 |
addSafter; |
|
6403 |
||
6404 |
* Provers/clasimp: ``iff'' declarations now handle conditional rules |
|
6405 |
as well; |
|
12253 | 6406 |
|
12538 | 6407 |
* system: tested support for MacOS X; should be able to get Isabelle + |
6408 |
Proof General to work in a plain Terminal after installing Poly/ML |
|
6409 |
(e.g. from the Isabelle distribution area) and GNU bash alone |
|
6410 |
(e.g. from http://www.apple.com); full X11, XEmacs and X-Symbol |
|
6411 |
support requires further installations, e.g. from |
|
6412 |
http://fink.sourceforge.net/); |
|
6413 |
||
12280 | 6414 |
* system: support Poly/ML 4.1.1 (able to manage larger heaps); |
11551 | 6415 |
|
12753
3a62df7ae926
* system: reduced base memory usage by Poly/ML (approx. 20 MB instead
wenzelm
parents:
12736
diff
changeset
|
6416 |
* system: reduced base memory usage by Poly/ML (approx. 20 MB instead |
3a62df7ae926
* system: reduced base memory usage by Poly/ML (approx. 20 MB instead
wenzelm
parents:
12736
diff
changeset
|
6417 |
of 40 MB), cf. ML_OPTIONS; |
3a62df7ae926
* system: reduced base memory usage by Poly/ML (approx. 20 MB instead
wenzelm
parents:
12736
diff
changeset
|
6418 |
|
11633 | 6419 |
* system: Proof General keywords specification is now part of the |
6420 |
Isabelle distribution (see etc/isar-keywords.el); |
|
6421 |
||
12728 | 6422 |
* system: support for persistent Proof General sessions (refrain from |
6423 |
outdating all loaded theories on startup); user may create writable |
|
6424 |
logic images like this: ``isabelle -q HOL Test''; |
|
12597
14822e4436bf
HOL/IMP and HOLCF/IMP updated and converted (Gerwin Klein);
wenzelm
parents:
12587
diff
changeset
|
6425 |
|
11551 | 6426 |
* system: smart selection of Isabelle process versus Isabelle |
11572 | 6427 |
interface, accommodates case-insensitive file systems (e.g. HFS+); may |
6428 |
run both "isabelle" and "Isabelle" even if file names are badly |
|
6429 |
damaged (executable inspects the case of the first letter of its own |
|
6430 |
name); added separate "isabelle-process" and "isabelle-interface"; |
|
11551 | 6431 |
|
12472 | 6432 |
* system: refrain from any attempt at filtering input streams; no |
6433 |
longer support ``8bit'' encoding of old isabelle font, instead proper |
|
6434 |
iso-latin characters may now be used; the related isatools |
|
6435 |
"symbolinput" and "nonascii" have disappeared as well; |
|
6436 |
||
6437 |
* system: removed old "xterm" interface (the print modes "xterm" and |
|
6438 |
"xterm_color" are still available for direct use in a suitable |
|
6439 |
terminal); |
|
6440 |
||
11314 | 6441 |
|
11169
98c2f741e32b
made split_all_tac safe introducing safe_full_simp_tac, EXISTING PROOFS MAY FAIL
oheimb
parents:
11130
diff
changeset
|
6442 |
|
11062 | 6443 |
New in Isabelle99-2 (February 2001) |
6444 |
----------------------------------- |
|
6445 |
||
10224 | 6446 |
*** Overview of INCOMPATIBILITIES *** |
6447 |
||
11241 | 6448 |
* HOL: please note that theories in the Library and elsewhere often use the |
6449 |
new-style (Isar) format; to refer to their theorems in an ML script you must |
|
12622 | 6450 |
bind them to ML identifers by e.g. val thm_name = thm "thm_name"; |
11241 | 6451 |
|
11043
2e3bbac8763b
HOL: inductive package no longer splits induction rule aggressively,
wenzelm
parents:
11016
diff
changeset
|
6452 |
* HOL: inductive package no longer splits induction rule aggressively, |
2e3bbac8763b
HOL: inductive package no longer splits induction rule aggressively,
wenzelm
parents:
11016
diff
changeset
|
6453 |
but only as far as specified by the introductions given; the old |
11130 | 6454 |
format may be recovered via ML function complete_split_rule or attribute |
11043
2e3bbac8763b
HOL: inductive package no longer splits induction rule aggressively,
wenzelm
parents:
11016
diff
changeset
|
6455 |
'split_rule (complete)'; |
2e3bbac8763b
HOL: inductive package no longer splits induction rule aggressively,
wenzelm
parents:
11016
diff
changeset
|
6456 |
|
10998 | 6457 |
* HOL: induct renamed to lfp_induct, lfp_Tarski to lfp_unfold, |
6458 |
gfp_Tarski to gfp_unfold; |
|
10224 | 6459 |
|
10288 | 6460 |
* HOL: contrapos, contrapos2 renamed to contrapos_nn, contrapos_pp; |
6461 |
||
10858 | 6462 |
* HOL: infix "dvd" now has priority 50 rather than 70 (because it is a |
6463 |
relation); infix "^^" has been renamed "``"; infix "``" has been |
|
6464 |
renamed "`"; "univalent" has been renamed "single_valued"; |
|
10793 | 6465 |
|
10998 | 6466 |
* HOL/Real: "rinv" and "hrinv" replaced by overloaded "inverse" |
6467 |
operation; |
|
6468 |
||
10868 | 6469 |
* HOLCF: infix "`" has been renamed "$"; the symbol syntax is \<cdot>; |
10856 | 6470 |
|
10391 | 6471 |
* Isar: 'obtain' no longer declares "that" fact as simp/intro; |
6472 |
||
10401
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
wenzelm
parents:
10391
diff
changeset
|
6473 |
* Isar/HOL: method 'induct' now handles non-atomic goals; as a |
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
wenzelm
parents:
10391
diff
changeset
|
6474 |
consequence, it is no longer monotonic wrt. the local goal context |
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
wenzelm
parents:
10391
diff
changeset
|
6475 |
(which is now passed through the inductive cases); |
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
wenzelm
parents:
10391
diff
changeset
|
6476 |
|
10976
0e7cf6f9fa29
* Document preparation: renamed standard symbols \<ll> to \<lless> and
wenzelm
parents:
10966
diff
changeset
|
6477 |
* Document preparation: renamed standard symbols \<ll> to \<lless> and |
0e7cf6f9fa29
* Document preparation: renamed standard symbols \<ll> to \<lless> and
wenzelm
parents:
10966
diff
changeset
|
6478 |
\<gg> to \<ggreater>; |
0e7cf6f9fa29
* Document preparation: renamed standard symbols \<ll> to \<lless> and
wenzelm
parents:
10966
diff
changeset
|
6479 |
|
10224 | 6480 |
|
10245
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6481 |
*** Document preparation *** |
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6482 |
|
10858 | 6483 |
* \isabellestyle{NAME} selects version of Isabelle output (currently |
6484 |
available: are "it" for near math-mode best-style output, "sl" for |
|
6485 |
slanted text style, and "tt" for plain type-writer; if no |
|
6486 |
\isabellestyle command is given, output is according to slanted |
|
6487 |
type-writer); |
|
6488 |
||
10322
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
wenzelm
parents:
10306
diff
changeset
|
6489 |
* support sub/super scripts (for single symbols only), input syntax is |
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
wenzelm
parents:
10306
diff
changeset
|
6490 |
like this: "A\<^sup>*" or "A\<^sup>\<star>"; |
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
wenzelm
parents:
10306
diff
changeset
|
6491 |
|
10858 | 6492 |
* some more standard symbols; see Appendix A of the system manual for |
11062 | 6493 |
the complete list of symbols defined in isabellesym.sty; |
10858 | 6494 |
|
10998 | 6495 |
* improved isabelle style files; more abstract symbol implementation |
6496 |
(should now use \isamath{...} and \isatext{...} in custom symbol |
|
6497 |
definitions); |
|
6498 |
||
10634 | 6499 |
* antiquotation @{goals} and @{subgoals} for output of *dynamic* goals |
6500 |
state; Note that presentation of goal states does not conform to |
|
6501 |
actual human-readable proof documents. Please do not include goal |
|
6502 |
states into document output unless you really know what you are doing! |
|
10322
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
wenzelm
parents:
10306
diff
changeset
|
6503 |
|
11062 | 6504 |
* proper indentation of antiquoted output with proportional LaTeX |
6505 |
fonts; |
|
10862 | 6506 |
|
11050
ac5709ac50b9
* no_document ML operator temporarily disables LaTeX document
wenzelm
parents:
11043
diff
changeset
|
6507 |
* no_document ML operator temporarily disables LaTeX document |
ac5709ac50b9
* no_document ML operator temporarily disables LaTeX document
wenzelm
parents:
11043
diff
changeset
|
6508 |
generation; |
ac5709ac50b9
* no_document ML operator temporarily disables LaTeX document
wenzelm
parents:
11043
diff
changeset
|
6509 |
|
11062 | 6510 |
* isatool unsymbolize tunes sources for plain ASCII communication; |
6511 |
||
10322
df38c61bf541
* support sub/super scripts (for single symbols only), input syntax is
wenzelm
parents:
10306
diff
changeset
|
6512 |
|
10306
b0ab988a27a9
* HOL: default proof step now includes 'intro_classes';
wenzelm
parents:
10288
diff
changeset
|
6513 |
*** Isar *** |
b0ab988a27a9
* HOL: default proof step now includes 'intro_classes';
wenzelm
parents:
10288
diff
changeset
|
6514 |
|
10547 | 6515 |
* Pure: Isar now suffers initial goal statements to contain unbound |
6516 |
schematic variables (this does not conform to actual readable proof |
|
6517 |
documents, due to unpredictable outcome and non-compositional proof |
|
6518 |
checking); users who know what they are doing may use schematic goals |
|
6519 |
for Prolog-style synthesis of proven results; |
|
6520 |
||
10391 | 6521 |
* Pure: assumption method (an implicit finishing) now handles actual |
6522 |
rules as well; |
|
6523 |
||
6524 |
* Pure: improved 'obtain' --- moved to Pure, insert "that" into |
|
6525 |
initial goal, declare "that" only as Pure intro (only for single |
|
6526 |
steps); the "that" rule assumption may now be involved in implicit |
|
6527 |
finishing, thus ".." becomes a feasible for trivial obtains; |
|
6528 |
||
6529 |
* Pure: default proof step now includes 'intro_classes'; thus trivial |
|
6530 |
instance proofs may be performed by ".."; |
|
6531 |
||
6532 |
* Pure: ?thesis / ?this / "..." now work for pure meta-level |
|
6533 |
statements as well; |
|
10306
b0ab988a27a9
* HOL: default proof step now includes 'intro_classes';
wenzelm
parents:
10288
diff
changeset
|
6534 |
|
11097 | 6535 |
* Pure: more robust selection of calculational rules; |
6536 |
||
10858 | 6537 |
* Pure: the builtin notion of 'finished' goal now includes the ==-refl |
6538 |
rule (as well as the assumption rule); |
|
6539 |
||
6540 |
* Pure: 'thm_deps' command visualizes dependencies of theorems and |
|
6541 |
lemmas, using the graph browser tool; |
|
6542 |
||
10944 | 6543 |
* Pure: predict failure of "show" in interactive mode; |
6544 |
||
11016
8f8ba41a5e7a
* Pure: 'thms_containing' now takes actual terms as arguments;
wenzelm
parents:
10998
diff
changeset
|
6545 |
* Pure: 'thms_containing' now takes actual terms as arguments; |
8f8ba41a5e7a
* Pure: 'thms_containing' now takes actual terms as arguments;
wenzelm
parents:
10998
diff
changeset
|
6546 |
|
10401
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
wenzelm
parents:
10391
diff
changeset
|
6547 |
* HOL: improved method 'induct' --- now handles non-atomic goals |
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
wenzelm
parents:
10391
diff
changeset
|
6548 |
(potential INCOMPATIBILITY); tuned error handling; |
58bb50f69497
* Isar/HOL: method 'induct' now handles non-atomic goals; as a
wenzelm
parents:
10391
diff
changeset
|
6549 |
|
10557 | 6550 |
* HOL: cases and induct rules now provide explicit hints about the |
10547 | 6551 |
number of facts to be consumed (0 for "type" and 1 for "set" rules); |
6552 |
any remaining facts are inserted into the goal verbatim; |
|
6553 |
||
10858 | 6554 |
* HOL: local contexts (aka cases) may now contain term bindings as |
6555 |
well; the 'cases' and 'induct' methods new provide a ?case binding for |
|
6556 |
the result to be shown in each case; |
|
6557 |
||
10770 | 6558 |
* HOL: added 'recdef_tc' command; |
6559 |
||
11016
8f8ba41a5e7a
* Pure: 'thms_containing' now takes actual terms as arguments;
wenzelm
parents:
10998
diff
changeset
|
6560 |
* isatool convert assists in eliminating legacy ML scripts; |
8f8ba41a5e7a
* Pure: 'thms_containing' now takes actual terms as arguments;
wenzelm
parents:
10998
diff
changeset
|
6561 |
|
10306
b0ab988a27a9
* HOL: default proof step now includes 'intro_classes';
wenzelm
parents:
10288
diff
changeset
|
6562 |
|
10245
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6563 |
*** HOL *** |
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6564 |
|
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6565 |
* HOL/Library: a collection of generic theories to be used together |
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6566 |
with main HOL; the theory loader path already includes this directory |
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6567 |
by default; the following existing theories have been moved here: |
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6568 |
HOL/Induct/Multiset, HOL/Induct/Acc (as Accessible_Part), HOL/While |
10337 | 6569 |
(as While_Combinator), HOL/Lex/Prefix (as List_Prefix); |
10245
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6570 |
|
10966 | 6571 |
* HOL/Unix: "Some aspects of Unix file-system security", a typical |
6572 |
modelling and verification task performed in Isabelle/HOL + |
|
6573 |
Isabelle/Isar + Isabelle document preparation (by Markus Wenzel). |
|
6574 |
||
11094 | 6575 |
* HOL/Algebra: special summation operator SUM no longer exists, it has |
6576 |
been replaced by setsum; infix 'assoc' now has priority 50 (like |
|
6577 |
'dvd'); axiom 'one_not_zero' has been moved from axclass 'ring' to |
|
6578 |
'domain', this makes the theory consistent with mathematical |
|
6579 |
literature; |
|
6580 |
||
10514 | 6581 |
* HOL basics: added overloaded operations "inverse" and "divide" |
10726 | 6582 |
(infix "/"), syntax for generic "abs" operation, generic summation |
11094 | 6583 |
operator \<Sum>; |
10452
abeefb0a79ae
* added overloaded operations "inverse" and "divide" (infix "/");
wenzelm
parents:
10428
diff
changeset
|
6584 |
|
10391 | 6585 |
* HOL/typedef: simplified package, provide more useful rules (see also |
6586 |
HOL/subset.thy); |
|
6587 |
||
10915
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6588 |
* HOL/datatype: induction rule for arbitrarily branching datatypes is |
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6589 |
now expressed as a proper nested rule (old-style tactic scripts may |
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6590 |
require atomize_strip_tac to cope with non-atomic premises); |
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6591 |
|
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6592 |
* HOL: renamed theory "Prod" to "Product_Type", renamed "split" rule |
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6593 |
to "split_conv" (old name still available for compatibility); |
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6594 |
|
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6595 |
* HOL: improved concrete syntax for strings (e.g. allows translation |
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6596 |
rules with string literals); |
6b66a8a530ce
* HOL/datatype: induction rule for arbitrarily branching datatypes is
wenzelm
parents:
10868
diff
changeset
|
6597 |
|
12245 | 6598 |
* HOL-Real-Hyperreal: this extends HOL-Real with the hyperreals |
6599 |
and Fleuriot's mechanization of analysis, including the transcendental |
|
6600 |
functions for the reals; |
|
10756 | 6601 |
|
11094 | 6602 |
* HOL/Real, HOL/Hyperreal: improved arithmetic simplification; |
10391 | 6603 |
|
10858 | 6604 |
|
10474 | 6605 |
*** CTT *** |
6606 |
||
10547 | 6607 |
* CTT: x-symbol support for Pi, Sigma, -->, : (membership); note that |
6608 |
"lam" is displayed as TWO lambda-symbols |
|
10474 | 6609 |
|
10547 | 6610 |
* CTT: theory Main now available, containing everything (that is, Bool |
6611 |
and Arith); |
|
6612 |
||
10474 | 6613 |
|
10391 | 6614 |
*** General *** |
6615 |
||
10547 | 6616 |
* Pure: the Simplifier has been implemented properly as a derived rule |
6617 |
outside of the actual kernel (at last!); the overall performance |
|
6618 |
penalty in practical applications is about 50%, while reliability of |
|
6619 |
the Isabelle inference kernel has been greatly improved; |
|
6620 |
||
11112 | 6621 |
* print modes "brackets" and "no_brackets" control output of nested => |
6622 |
(types) and ==> (props); the default behaviour is "brackets"; |
|
6623 |
||
10391 | 6624 |
* Provers: fast_tac (and friends) now handle actual object-logic rules |
6625 |
as assumptions as well; |
|
6626 |
||
11124 | 6627 |
* system: support Poly/ML 4.0; |
6628 |
||
6629 |
* system: isatool install handles KDE version 1 or 2; |
|
6630 |
||
10391 | 6631 |
|
10245
87771e2f49fe
* HOL/Library: a collection of generic theories to be used together
wenzelm
parents:
10224
diff
changeset
|
6632 |
|
10103 | 6633 |
New in Isabelle99-1 (October 2000) |
6634 |
---------------------------------- |
|
8015 | 6635 |
|
10003 | 6636 |
*** Overview of INCOMPATIBILITIES *** |
8014 | 6637 |
|
8848 | 6638 |
* HOL: simplification of natural numbers is much changed; to partly |
6639 |
recover the old behaviour (e.g. to prevent n+n rewriting to #2*n) |
|
6640 |
issue the following ML commands: |
|
6641 |
||
6642 |
Delsimprocs Nat_Numeral_Simprocs.cancel_numerals; |
|
6643 |
Delsimprocs [Nat_Numeral_Simprocs.combine_numerals]; |
|
8788 | 6644 |
|
10129 | 6645 |
* HOL: simplification no longer dives into case-expressions; this is |
6646 |
controlled by "t.weak_case_cong" for each datatype t; |
|
10003 | 6647 |
|
6648 |
* HOL: nat_less_induct renamed to less_induct; |
|
6649 |
||
6650 |
* HOL: systematic renaming of the SOME (Eps) rules, may use isatool |
|
6651 |
fixsome to patch .thy and .ML sources automatically; |
|
8967 | 6652 |
|
10003 | 6653 |
select_equality -> some_equality |
6654 |
select_eq_Ex -> some_eq_ex |
|
6655 |
selectI2EX -> someI2_ex |
|
6656 |
selectI2 -> someI2 |
|
6657 |
selectI -> someI |
|
6658 |
select1_equality -> some1_equality |
|
6659 |
Eps_sym_eq -> some_sym_eq_trivial |
|
6660 |
Eps_eq -> some_eq_trivial |
|
6661 |
||
36856
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
wenzelm
parents:
36849
diff
changeset
|
6662 |
* HOL: exhaust_tac on datatypes superceded by new generic case_tac; |
10003 | 6663 |
|
6664 |
* HOL: removed obsolete theorem binding expand_if (refer to split_if |
|
6665 |
instead); |
|
6666 |
||
6667 |
* HOL: the recursion equations generated by 'recdef' are now called |
|
6668 |
f.simps instead of f.rules; |
|
6669 |
||
6670 |
* HOL: qed_spec_mp now also handles bounded ALL as well; |
|
6671 |
||
6672 |
* HOL: 0 is now overloaded, so the type constraint ":: nat" may |
|
6673 |
sometimes be needed; |
|
6674 |
||
6675 |
* HOL: the constant for "f``x" is now "image" rather than "op ``"; |
|
8014 | 6676 |
|
10065 | 6677 |
* HOL: the constant for "f-``x" is now "vimage" rather than "op -``"; |
6678 |
||
9330
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
6679 |
* HOL: the disjoint sum is now "<+>" instead of "Plus"; the cartesian |
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
6680 |
product is now "<*>" instead of "Times"; the lexicographic product is |
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
6681 |
now "<*lex*>" instead of "**"; |
8705 | 6682 |
|
10003 | 6683 |
* HOL: theory Sexp is now in HOL/Induct examples (it used to be part |
6684 |
of main HOL, but was unused); better use HOL's datatype package; |
|
9971 | 6685 |
|
10137
d1c2bef01e2f
removed "symbols" syntax for constant "override";
wenzelm
parents:
10129
diff
changeset
|
6686 |
* HOL: removed "symbols" syntax for constant "override" of theory Map; |
d1c2bef01e2f
removed "symbols" syntax for constant "override";
wenzelm
parents:
10129
diff
changeset
|
6687 |
the old syntax may be recovered as follows: |
d1c2bef01e2f
removed "symbols" syntax for constant "override";
wenzelm
parents:
10129
diff
changeset
|
6688 |
|
d1c2bef01e2f
removed "symbols" syntax for constant "override";
wenzelm
parents:
10129
diff
changeset
|
6689 |
syntax (symbols) |
d1c2bef01e2f
removed "symbols" syntax for constant "override";
wenzelm
parents:
10129
diff
changeset
|
6690 |
override :: "('a ~=> 'b) => ('a ~=> 'b) => ('a ~=> 'b)" |
d1c2bef01e2f
removed "symbols" syntax for constant "override";
wenzelm
parents:
10129
diff
changeset
|
6691 |
(infixl "\\<oplus>" 100) |
d1c2bef01e2f
removed "symbols" syntax for constant "override";
wenzelm
parents:
10129
diff
changeset
|
6692 |
|
8848 | 6693 |
* HOL/Real: "rabs" replaced by overloaded "abs" function; |
6694 |
||
8887
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
wenzelm
parents:
8848
diff
changeset
|
6695 |
* HOL/ML: even fewer consts are declared as global (see theories Ord, |
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
wenzelm
parents:
8848
diff
changeset
|
6696 |
Lfp, Gfp, WF); this only affects ML packages that refer to const names |
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
wenzelm
parents:
8848
diff
changeset
|
6697 |
internally; |
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
wenzelm
parents:
8848
diff
changeset
|
6698 |
|
10003 | 6699 |
* HOL and ZF: syntax for quotienting wrt an equivalence relation |
6700 |
changed from A/r to A//r; |
|
9908 | 6701 |
|
10003 | 6702 |
* ZF: new treatment of arithmetic (nat & int) may break some old |
6703 |
proofs; |
|
8921
7c04c98132c4
* Pure: changed syntax of local blocks from {{ }} to { };
wenzelm
parents:
8887
diff
changeset
|
6704 |
|
10003 | 6705 |
* Isar: renamed some attributes (RS -> THEN, simplify -> simplified, |
6706 |
rulify -> rule_format, elimify -> elim_format, ...); |
|
9542 | 6707 |
|
9941
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
wenzelm
parents:
9937
diff
changeset
|
6708 |
* Isar/Provers: intro/elim/dest attributes changed; renamed |
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
wenzelm
parents:
9937
diff
changeset
|
6709 |
intro/intro!/intro!! flags to intro!/intro/intro? (in most cases, one |
9937 | 6710 |
should have to change intro!! to intro? only); replaced "delrule" by |
6711 |
"rule del"; |
|
9437
93e91040c286
* Isar/Provers: intro/elim/dest attributes: changed
wenzelm
parents:
9402
diff
changeset
|
6712 |
|
9612 | 6713 |
* Isar/HOL: renamed "intrs" to "intros" in inductive definitions; |
6714 |
||
9437
93e91040c286
* Isar/Provers: intro/elim/dest attributes: changed
wenzelm
parents:
9402
diff
changeset
|
6715 |
* Provers: strengthened force_tac by using new first_best_tac; |
9402 | 6716 |
|
10003 | 6717 |
* LaTeX document preparation: several changes of isabelle.sty (see |
6718 |
lib/texinputs); |
|
8729
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
wenzelm
parents:
8705
diff
changeset
|
6719 |
|
8014 | 6720 |
|
8487 | 6721 |
*** Document preparation *** |
8358
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6722 |
|
9198
0ab3c81e9425
* formal comments (text blocks etc.) in new-style theories may now
wenzelm
parents:
9185
diff
changeset
|
6723 |
* formal comments (text blocks etc.) in new-style theories may now |
9753 | 6724 |
contain antiquotations of thm/prop/term/typ/text to be presented |
6725 |
according to latex print mode; concrete syntax is like this: |
|
6726 |
@{term[show_types] "f(x) = a + x"}; |
|
9198
0ab3c81e9425
* formal comments (text blocks etc.) in new-style theories may now
wenzelm
parents:
9185
diff
changeset
|
6727 |
|
8358
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6728 |
* isatool mkdir provides easy setup of Isabelle session directories, |
8518 | 6729 |
including proper document sources; |
8358
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6730 |
|
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6731 |
* generated LaTeX sources are now deleted after successful run |
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6732 |
(isatool document -c); may retain a copy somewhere else via -D option |
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6733 |
of isatool usedir; |
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6734 |
|
8566 | 6735 |
* isatool usedir -D now lets isatool latex -o sty update the Isabelle |
10003 | 6736 |
style files, achieving self-contained LaTeX sources and simplifying |
6737 |
LaTeX debugging; |
|
8566 | 6738 |
|
8518 | 6739 |
* old-style theories now produce (crude) LaTeX output as well; |
8358
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6740 |
|
9057
af1ca1acf292
* browser info session directories are now self-contained (may be put
wenzelm
parents:
9052
diff
changeset
|
6741 |
* browser info session directories are now self-contained (may be put |
9437
93e91040c286
* Isar/Provers: intro/elim/dest attributes: changed
wenzelm
parents:
9402
diff
changeset
|
6742 |
on WWW server seperately); improved graphs of nested sessions; removed |
93e91040c286
* Isar/Provers: intro/elim/dest attributes: changed
wenzelm
parents:
9402
diff
changeset
|
6743 |
graph for 'all sessions'; |
9057
af1ca1acf292
* browser info session directories are now self-contained (may be put
wenzelm
parents:
9052
diff
changeset
|
6744 |
|
10003 | 6745 |
* several improvements in isabelle style files; \isabellestyle{it} |
6746 |
produces fake math mode output; \isamarkupheader is now \section by |
|
6747 |
default; see lib/texinputs/isabelle.sty etc.; |
|
9489
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
wenzelm
parents:
9457
diff
changeset
|
6748 |
|
8358
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6749 |
|
8184 | 6750 |
*** Isar *** |
6751 |
||
10003 | 6752 |
* Isar/Pure: local results and corresponding term bindings are now |
6753 |
subject to Hindley-Milner polymorphism (similar to ML); this |
|
6754 |
accommodates incremental type-inference very nicely; |
|
8283
0a319c5746eb
* Pure now provides its own version of intro/elim/dest attributes;
wenzelm
parents:
8271
diff
changeset
|
6755 |
|
10003 | 6756 |
* Isar/Pure: new derived language element 'obtain' supports |
6757 |
generalized existence reasoning; |
|
8621
8ba0f90f6f35
* Isar/Pure: local results and corresponding term bindings are now
wenzelm
parents:
8603
diff
changeset
|
6758 |
|
10003 | 6759 |
* Isar/Pure: new calculational elements 'moreover' and 'ultimately' |
6760 |
support accumulation of results, without applying any rules yet; |
|
6761 |
useful to collect intermediate results without explicit name |
|
6762 |
references, and for use with transitivity rules with more than 2 |
|
6763 |
premises; |
|
8184 | 6764 |
|
10003 | 6765 |
* Isar/Pure: scalable support for case-analysis type proofs: new |
6766 |
'case' language element refers to local contexts symbolically, as |
|
6767 |
produced by certain proof methods; internally, case names are attached |
|
6768 |
to theorems as "tags"; |
|
8440
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
wenzelm
parents:
8425
diff
changeset
|
6769 |
|
10003 | 6770 |
* Isar/Pure: theory command 'hide' removes declarations from |
9330
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
6771 |
class/type/const name spaces; |
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
6772 |
|
10003 | 6773 |
* Isar/Pure: theory command 'defs' supports option "(overloaded)" to |
9330
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
6774 |
indicate potential overloading; |
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
6775 |
|
10003 | 6776 |
* Isar/Pure: changed syntax of local blocks from {{ }} to { }; |
8621
8ba0f90f6f35
* Isar/Pure: local results and corresponding term bindings are now
wenzelm
parents:
8603
diff
changeset
|
6777 |
|
10003 | 6778 |
* Isar/Pure: syntax of sorts made 'inner', i.e. have to write |
6779 |
"{a,b,c}" instead of {a,b,c}; |
|
9011
0cfc347f8d19
Isar/Pure: removed obsolete 'transfer' attribute (transfer of thms to
wenzelm
parents:
8994
diff
changeset
|
6780 |
|
10003 | 6781 |
* Isar/Pure now provides its own version of intro/elim/dest |
6782 |
attributes; useful for building new logics, but beware of confusion |
|
6783 |
with the version in Provers/classical; |
|
9612 | 6784 |
|
10003 | 6785 |
* Isar/Pure: the local context of (non-atomic) goals is provided via |
6786 |
case name 'antecedent'; |
|
8440
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
wenzelm
parents:
8425
diff
changeset
|
6787 |
|
10003 | 6788 |
* Isar/Pure: removed obsolete 'transfer' attribute (transfer of thms |
6789 |
to the current context is now done automatically); |
|
9383
c21fa1c48de0
* HOL: removed obsolete expand_if = split_if; theorems if_splits =
wenzelm
parents:
9349
diff
changeset
|
6790 |
|
10003 | 6791 |
* Isar/Pure: theory command 'method_setup' provides a simple interface |
6792 |
for definining proof methods in ML; |
|
9612 | 6793 |
|
10003 | 6794 |
* Isar/Provers: intro/elim/dest attributes changed; renamed |
9941
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
wenzelm
parents:
9937
diff
changeset
|
6795 |
intro/intro!/intro!! flags to intro!/intro/intro? (INCOMPATIBILITY, in |
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
wenzelm
parents:
9937
diff
changeset
|
6796 |
most cases, one should have to change intro!! to intro? only); |
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
wenzelm
parents:
9937
diff
changeset
|
6797 |
replaced "delrule" by "rule del"; |
8283
0a319c5746eb
* Pure now provides its own version of intro/elim/dest attributes;
wenzelm
parents:
8271
diff
changeset
|
6798 |
|
10003 | 6799 |
* Isar/Provers: new 'hypsubst' method, plain 'subst' method and |
36856
b343091e81d8
reverted parts of 7902dc7ea11d -- note that NEWS of published Isabelle releases are essentially read-only;
wenzelm
parents:
36849
diff
changeset
|
6800 |
'symmetric' attribute (the latter supercedes [RS sym]); |
10003 | 6801 |
|
6802 |
* Isar/Provers: splitter support (via 'split' attribute and 'simp' |
|
6803 |
method modifier); 'simp' method: 'only:' modifier removes loopers as |
|
6804 |
well (including splits); |
|
6805 |
||
6806 |
* Isar/Provers: Simplifier and Classical methods now support all kind |
|
6807 |
of modifiers used in the past, including 'cong', 'iff', etc. |
|
6808 |
||
6809 |
* Isar/Provers: added 'fastsimp' and 'clarsimp' methods (combination |
|
6810 |
of Simplifier and Classical reasoner); |
|
6811 |
||
6812 |
* Isar/HOL: new proof method 'cases' and improved version of 'induct' |
|
6813 |
now support named cases; major packages (inductive, datatype, primrec, |
|
6814 |
recdef) support case names and properly name parameters; |
|
9612 | 6815 |
|
10003 | 6816 |
* Isar/HOL: new transitivity rules for substitution in inequalities -- |
6817 |
monotonicity conditions are extracted to be proven at end of |
|
6818 |
calculations; |
|
6819 |
||
6820 |
* Isar/HOL: removed 'case_split' thm binding, should use 'cases' proof |
|
6821 |
method anyway; |
|
6822 |
||
6823 |
* Isar/HOL: removed old expand_if = split_if; theorems if_splits = |
|
6824 |
split_if split_if_asm; datatype package provides theorems foo.splits = |
|
6825 |
foo.split foo.split_asm for each datatype; |
|
6826 |
||
6827 |
* Isar/HOL: tuned inductive package, rename "intrs" to "intros" |
|
6828 |
(potential INCOMPATIBILITY), emulation of mk_cases feature for proof |
|
6829 |
scripts: new 'inductive_cases' command and 'ind_cases' method; (Note: |
|
6830 |
use "(cases (simplified))" method in proper proof texts); |
|
6831 |
||
6832 |
* Isar/HOL: added global 'arith_split' attribute for 'arith' method; |
|
6833 |
||
6834 |
* Isar: names of theorems etc. may be natural numbers as well; |
|
6835 |
||
6836 |
* Isar: 'pr' command: optional arguments for goals_limit and |
|
9724
2030c5d63741
* 'pr' command: optional argument for ProofContext.prems_limit;
wenzelm
parents:
9709
diff
changeset
|
6837 |
ProofContext.prems_limit; no longer prints theory contexts, but only |
2030c5d63741
* 'pr' command: optional argument for ProofContext.prems_limit;
wenzelm
parents:
9709
diff
changeset
|
6838 |
proof states; |
8487 | 6839 |
|
10003 | 6840 |
* Isar: diagnostic commands 'pr', 'thm', 'prop', 'term', 'typ' admit |
8518 | 6841 |
additional print modes to be specified; e.g. "pr(latex)" will print |
6842 |
proof state according to the Isabelle LaTeX style; |
|
8487 | 6843 |
|
10003 | 6844 |
* Isar: improved support for emulating tactic scripts, including proof |
9612 | 6845 |
methods 'rule_tac' etc., 'cut_tac', 'thin_tac', 'subgoal_tac', |
6846 |
'rename_tac', 'rotate_tac', 'tactic', and 'case_tac' / 'induct_tac' |
|
6847 |
(for HOL datatypes); |
|
8534 | 6848 |
|
10003 | 6849 |
* Isar: simplified (more robust) goal selection of proof methods: 1st |
6850 |
goal, all goals, or explicit goal specifier (tactic emulation); thus |
|
6851 |
'proof method scripts' have to be in depth-first order; |
|
8673
987ea1a559d0
Isar: simplified (more robust) goal selection of proof methods;
wenzelm
parents:
8655
diff
changeset
|
6852 |
|
10003 | 6853 |
* Isar: tuned 'let' syntax: replaced 'as' keyword by 'and'; |
8729
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
wenzelm
parents:
8705
diff
changeset
|
6854 |
|
10003 | 6855 |
* Isar: removed 'help' command, which hasn't been too helpful anyway; |
6856 |
should instead use individual commands for printing items |
|
6857 |
(print_commands, print_methods etc.); |
|
9224
0da360494917
* Isar: removed 'help' command, which hasn't been too helpful anyway;
wenzelm
parents:
9198
diff
changeset
|
6858 |
|
10003 | 6859 |
* Isar: added 'nothing' --- the empty list of theorems; |
9239 | 6860 |
|
8184 | 6861 |
|
8014 | 6862 |
*** HOL *** |
6863 |
||
10080 | 6864 |
* HOL/MicroJava: formalization of a fragment of Java, together with a |
6865 |
corresponding virtual machine and a specification of its bytecode |
|
6866 |
verifier and a lightweight bytecode verifier, including proofs of |
|
6867 |
type-safety; by Gerwin Klein, Tobias Nipkow, David von Oheimb, and |
|
6868 |
Cornelia Pusch (see also the homepage of project Bali at |
|
6869 |
http://isabelle.in.tum.de/Bali/); |
|
6870 |
||
8518 | 6871 |
* HOL/Algebra: new theory of rings and univariate polynomials, by |
6872 |
Clemens Ballarin; |
|
8014 | 6873 |
|
10157
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
wenzelm
parents:
10137
diff
changeset
|
6874 |
* HOL/NumberTheory: fundamental Theorem of Arithmetic, Chinese |
10003 | 6875 |
Remainder Theorem, Fermat/Euler Theorem, Wilson's Theorem, by Thomas M |
6876 |
Rasmussen; |
|
8570 | 6877 |
|
10157
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
wenzelm
parents:
10137
diff
changeset
|
6878 |
* HOL/Lattice: fundamental concepts of lattice theory and order |
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
wenzelm
parents:
10137
diff
changeset
|
6879 |
structures, including duals, properties of bounds versus algebraic |
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
wenzelm
parents:
10137
diff
changeset
|
6880 |
laws, lattice operations versus set-theoretic ones, the Knaster-Tarski |
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
wenzelm
parents:
10137
diff
changeset
|
6881 |
Theorem for complete lattices etc.; may also serve as a demonstration |
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
wenzelm
parents:
10137
diff
changeset
|
6882 |
for abstract algebraic reasoning using axiomatic type classes, and |
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
wenzelm
parents:
10137
diff
changeset
|
6883 |
mathematics-style proof in Isabelle/Isar; by Markus Wenzel; |
6d3987f3aad9
* HOL/Lattice: fundamental concepts of lattice theory and order structures;
wenzelm
parents:
10137
diff
changeset
|
6884 |
|
10003 | 6885 |
* HOL/Prolog: a (bare-bones) implementation of Lambda-Prolog, by David |
6886 |
von Oheimb; |
|
9542 | 6887 |
|
10164
c240747082aa
* HOL/IMPP: extension of IMP with local variables and mutually
wenzelm
parents:
10157
diff
changeset
|
6888 |
* HOL/IMPP: extension of IMP with local variables and mutually |
c240747082aa
* HOL/IMPP: extension of IMP with local variables and mutually
wenzelm
parents:
10157
diff
changeset
|
6889 |
recursive procedures, by David von Oheimb; |
c240747082aa
* HOL/IMPP: extension of IMP with local variables and mutually
wenzelm
parents:
10157
diff
changeset
|
6890 |
|
10003 | 6891 |
* HOL/Lambda: converted into new-style theory and document; |
9542 | 6892 |
|
10003 | 6893 |
* HOL/ex/Multiquote: example of multiple nested quotations and |
6894 |
anti-quotations -- basically a generalized version of de-Bruijn |
|
6895 |
representation; very useful in avoiding lifting of operations; |
|
8848 | 6896 |
|
9612 | 6897 |
* HOL/record: added general record equality rule to simpset; fixed |
6898 |
select-update simplification procedure to handle extended records as |
|
6899 |
well; admit "r" as field name; |
|
9542 | 6900 |
|
8967 | 6901 |
* HOL: 0 is now overloaded over the new sort "zero", allowing its use with |
6902 |
other numeric types and also as the identity of groups, rings, etc.; |
|
6903 |
||
6904 |
* HOL: new axclass plus_ac0 for addition with the AC-laws and 0 as identity. |
|
6905 |
Types nat and int belong to this axclass; |
|
6906 |
||
10003 | 6907 |
* HOL: greatly improved simplification involving numerals of type nat, int, real: |
8788 | 6908 |
(i + #8 + j) = Suc k simplifies to #7 + (i + j) = k |
8832 | 6909 |
i*j + k + j*#3*i simplifies to #4*(i*j) + k |
6910 |
two terms #m*u and #n*u are replaced by #(m+n)*u |
|
6911 |
(where #m, #n and u can implicitly be 1; this is simproc combine_numerals) |
|
6912 |
and the term/formula #m*u+x ~~ #n*u+y simplifies simplifies to #(m-n)+x ~~ y |
|
6913 |
or x ~~ #(n-m)+y, where ~~ is one of = < <= or - (simproc cancel_numerals); |
|
8736 | 6914 |
|
10003 | 6915 |
* HOL: meson_tac is available (previously in ex/meson.ML); it is a |
6916 |
powerful prover for predicate logic but knows nothing of clasets; see |
|
6917 |
ex/mesontest.ML and ex/mesontest2.ML for example applications; |
|
9835 | 6918 |
|
8848 | 6919 |
* HOL: new version of "case_tac" subsumes both boolean case split and |
8440
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
wenzelm
parents:
8425
diff
changeset
|
6920 |
"exhaust_tac" on datatypes; INCOMPATIBILITY: exhaust_tac no longer |
8518 | 6921 |
exists, may define val exhaust_tac = case_tac for ad-hoc portability; |
8440
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
wenzelm
parents:
8425
diff
changeset
|
6922 |
|
8848 | 6923 |
* HOL: simplification no longer dives into case-expressions: only the |
10129 | 6924 |
selector expression is simplified, but not the remaining arms; to |
6925 |
enable full simplification of case-expressions for datatype t, you may |
|
6926 |
remove t.weak_case_cong from the simpset, either globally (Delcongs |
|
6927 |
[thm"t.weak_case_cong"];) or locally (delcongs [...]). |
|
8603 | 6928 |
|
8848 | 6929 |
* HOL/recdef: the recursion equations generated by 'recdef' for |
6930 |
function 'f' are now called f.simps instead of f.rules; if all |
|
6931 |
termination conditions are proved automatically, these simplification |
|
6932 |
rules are added to the simpset, as in primrec; rules may be named |
|
6933 |
individually as well, resulting in a separate list of theorems for |
|
6934 |
each equation; |
|
6935 |
||
9489
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
wenzelm
parents:
9457
diff
changeset
|
6936 |
* HOL/While is a new theory that provides a while-combinator. It |
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
wenzelm
parents:
9457
diff
changeset
|
6937 |
permits the definition of tail-recursive functions without the |
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
wenzelm
parents:
9457
diff
changeset
|
6938 |
provision of a termination measure. The latter is necessary once the |
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
wenzelm
parents:
9457
diff
changeset
|
6939 |
invariant proof rule for while is applied. |
9457 | 6940 |
|
10003 | 6941 |
* HOL: new (overloaded) notation for the set of elements below/above |
6942 |
some element: {..u}, {..u(}, {l..}, {)l..}. See theory SetInterval. |
|
8925 | 6943 |
|
8848 | 6944 |
* HOL: theorems impI, allI, ballI bound as "strip"; |
6945 |
||
10003 | 6946 |
* HOL: new tactic induct_thm_tac: thm -> string -> int -> tactic |
9746 | 6947 |
induct_tac th "x1 ... xn" expects th to have a conclusion of the form |
6948 |
P v1 ... vn and abbreviates res_inst_tac [("v1","x1"),...,("vn","xn")] th; |
|
6949 |
||
10003 | 6950 |
* HOL/Real: "rabs" replaced by overloaded "abs" function; |
9737 | 6951 |
|
10003 | 6952 |
* HOL: theory Sexp now in HOL/Induct examples (it used to be part of |
6953 |
main HOL, but was unused); |
|
8626 | 6954 |
|
10003 | 6955 |
* HOL: fewer consts declared as global (e.g. have to refer to |
6956 |
"Lfp.lfp" instead of "lfp" internally; affects ML packages only); |
|
8887
c0c583ce0b0b
* HOL/ML: even fewer consts are declared as global (see theories Ord,
wenzelm
parents:
8848
diff
changeset
|
6957 |
|
10003 | 6958 |
* HOL: tuned AST representation of nested pairs, avoiding bogus output |
6959 |
in case of overlap with user translations (e.g. judgements over |
|
6960 |
tuples); (note that the underlying logical represenation is still |
|
6961 |
bogus); |
|
9349
d43669fb423d
* tuned AST representation of nested pairs, avoiding bogus output in
wenzelm
parents:
9335
diff
changeset
|
6962 |
|
8412 | 6963 |
|
9542 | 6964 |
*** ZF *** |
6965 |
||
10003 | 6966 |
* ZF: simplification automatically cancels common terms in arithmetic |
6967 |
expressions over nat and int; |
|
9542 | 6968 |
|
10003 | 6969 |
* ZF: new treatment of nat to minimize type-checking: all operators |
6970 |
coerce their operands to a natural number using the function natify, |
|
6971 |
making the algebraic laws unconditional; |
|
9542 | 6972 |
|
10003 | 6973 |
* ZF: as above, for int: operators coerce their operands to an integer |
6974 |
using the function intify; |
|
9542 | 6975 |
|
10003 | 6976 |
* ZF: the integer library now contains many of the usual laws for the |
6977 |
orderings, including $<=, and monotonicity laws for $+ and $*; |
|
9542 | 6978 |
|
10003 | 6979 |
* ZF: new example ZF/ex/NatSum to demonstrate integer arithmetic |
6980 |
simplification; |
|
9388 | 6981 |
|
10003 | 6982 |
* FOL and ZF: AddIffs now available, giving theorems of the form P<->Q |
6983 |
to the simplifier and classical reasoner simultaneously; |
|
9388 | 6984 |
|
6985 |
||
8358
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6986 |
*** General *** |
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
6987 |
|
10003 | 6988 |
* Provers: blast_tac now handles actual object-logic rules as |
6989 |
assumptions; note that auto_tac uses blast_tac internally as well; |
|
6990 |
||
6991 |
* Provers: new functions rulify/rulify_no_asm: thm -> thm for turning |
|
6992 |
outer -->/All/Ball into ==>/!!; qed_spec_mp now uses rulify_no_asm; |
|
6993 |
||
9941
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
wenzelm
parents:
9937
diff
changeset
|
6994 |
* Provers: delrules now handles destruct rules as well (no longer need |
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
wenzelm
parents:
9937
diff
changeset
|
6995 |
explicit make_elim); |
fe05af7ec816
renamed atts: rulify to rule_format, elimify to elim_format;
wenzelm
parents:
9937
diff
changeset
|
6996 |
|
10003 | 6997 |
* Provers: Blast_tac now warns of and ignores "weak elimination rules" e.g. |
6998 |
[| inj ?f; ?f ?x = ?f ?y; ?x = ?y ==> ?W |] ==> ?W |
|
6999 |
use instead the strong form, |
|
7000 |
[| inj ?f; ~ ?W ==> ?f ?x = ?f ?y; ?x = ?y ==> ?W |] ==> ?W |
|
7001 |
in HOL, FOL and ZF the function cla_make_elim will create such rules |
|
7002 |
from destruct-rules; |
|
9489
aa757b35b129
* blast(_tac) now handles actual object-logic rules as assumptions;
wenzelm
parents:
9457
diff
changeset
|
7003 |
|
9709
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7004 |
* Provers: Simplifier.easy_setup provides a fast path to basic |
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7005 |
Simplifier setup for new object-logics; |
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7006 |
|
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7007 |
* Pure: AST translation rules no longer require constant head on LHS; |
9349
d43669fb423d
* tuned AST representation of nested pairs, avoiding bogus output in
wenzelm
parents:
9335
diff
changeset
|
7008 |
|
9709
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7009 |
* Pure: improved name spaces: ambiguous output is qualified; support |
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7010 |
for hiding of names; |
8729
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
wenzelm
parents:
8705
diff
changeset
|
7011 |
|
10003 | 7012 |
* system: smart setup of canonical ML_HOME, ISABELLE_INTERFACE, and |
7013 |
XSYMBOL_HOME; no longer need to do manual configuration in most |
|
7014 |
situations; |
|
7015 |
||
9709
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7016 |
* system: compression of ML heaps images may now be controlled via -c |
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7017 |
option of isabelle and isatool usedir (currently only observed by |
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7018 |
Poly/ML); |
8358
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
7019 |
|
9981
01a0c4772c18
system: isatool installfonts may handle X-Symbol fonts as well;
wenzelm
parents:
9971
diff
changeset
|
7020 |
* system: isatool installfonts may handle X-Symbol fonts as well (very |
01a0c4772c18
system: isatool installfonts may handle X-Symbol fonts as well;
wenzelm
parents:
9971
diff
changeset
|
7021 |
useful for remote X11); |
01a0c4772c18
system: isatool installfonts may handle X-Symbol fonts as well;
wenzelm
parents:
9971
diff
changeset
|
7022 |
|
9709
2d0ee9612ef1
* Isar/Provers: 'simp' method now supports 'cong' modifiers;
wenzelm
parents:
9701
diff
changeset
|
7023 |
* system: provide TAGS file for Isabelle sources; |
9052 | 7024 |
|
9288
06a55195741b
infix 'OF' is a version of 'MRS' with more appropriate argument order;
wenzelm
parents:
9239
diff
changeset
|
7025 |
* ML: infix 'OF' is a version of 'MRS' with more appropriate argument |
06a55195741b
infix 'OF' is a version of 'MRS' with more appropriate argument order;
wenzelm
parents:
9239
diff
changeset
|
7026 |
order; |
06a55195741b
infix 'OF' is a version of 'MRS' with more appropriate argument order;
wenzelm
parents:
9239
diff
changeset
|
7027 |
|
8994
803533fbb3ec
* ML: renamed flags Syntax.trace_norm_ast to Syntax.trace_ast; global
wenzelm
parents:
8991
diff
changeset
|
7028 |
* ML: renamed flags Syntax.trace_norm_ast to Syntax.trace_ast; global |
803533fbb3ec
* ML: renamed flags Syntax.trace_norm_ast to Syntax.trace_ast; global
wenzelm
parents:
8991
diff
changeset
|
7029 |
timing flag supersedes proof_timing and Toplevel.trace; |
803533fbb3ec
* ML: renamed flags Syntax.trace_norm_ast to Syntax.trace_ast; global
wenzelm
parents:
8991
diff
changeset
|
7030 |
|
10003 | 7031 |
* ML: new combinators |>> and |>>> for incremental transformations |
7032 |
with secondary results (e.g. certain theory extensions): |
|
7033 |
||
9330
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
7034 |
* ML: PureThy.add_defs gets additional argument to indicate potential |
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
7035 |
overloading (usually false); |
6861e3b00155
HOL: the disjoint sum is now "<+>" instead of "Plus";
wenzelm
parents:
9288
diff
changeset
|
7036 |
|
10003 | 7037 |
* ML: PureThy.add_thms/add_axioms/add_defs now return theorems as |
7038 |
results; |
|
8440
d66f0f14b1ca
* HOL: exhaust_tac on datatypes superceded by new case_tac;
wenzelm
parents:
8425
diff
changeset
|
7039 |
|
8358
a57d72b5d272
* isatool mkdir provides easy setup of Isabelle session directories,
wenzelm
parents:
8283
diff
changeset
|
7040 |
|
8015 | 7041 |
|
7986 | 7042 |
New in Isabelle99 (October 1999) |
7043 |
-------------------------------- |
|
4649 | 7044 |
|
5931 | 7045 |
*** Overview of INCOMPATIBILITIES (see below for more details) *** |
7046 |
||
6922 | 7047 |
* HOL: The THEN and ELSE parts of conditional expressions (if P then x else y) |
7048 |
are no longer simplified. (This allows the simplifier to unfold recursive |
|
7049 |
functional programs.) To restore the old behaviour, declare |
|
7215 | 7050 |
|
7051 |
Delcongs [if_weak_cong]; |
|
6922 | 7052 |
|
6269 | 7053 |
* HOL: Removed the obsolete syntax "Compl A"; use -A for set |
7054 |
complement; |
|
5931 | 7055 |
|
6269 | 7056 |
* HOL: the predicate "inj" is now defined by translation to "inj_on"; |
6174 | 7057 |
|
7847 | 7058 |
* HOL/datatype: mutual_induct_tac no longer exists -- |
7059 |
use induct_tac "x_1 ... x_n" instead of mutual_induct_tac ["x_1", ..., "x_n"] |
|
7060 |
||
6386
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
wenzelm
parents:
6343
diff
changeset
|
7061 |
* HOL/typedef: fixed type inference for representing set; type |
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
wenzelm
parents:
6343
diff
changeset
|
7062 |
arguments now have to occur explicitly on the rhs as type constraints; |
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
wenzelm
parents:
6343
diff
changeset
|
7063 |
|
6269 | 7064 |
* ZF: The con_defs part of an inductive definition may no longer refer |
7065 |
to constants declared in the same theory; |
|
6057 | 7066 |
|
6269 | 7067 |
* HOL, ZF: the function mk_cases, generated by the inductive |
7068 |
definition package, has lost an argument. To simplify its result, it |
|
7069 |
uses the default simpset instead of a supplied list of theorems. |
|
6141 | 7070 |
|
7215 | 7071 |
* HOL/List: the constructors of type list are now Nil and Cons; |
7072 |
||
7619 | 7073 |
* Simplifier: the type of the infix ML functions |
8729
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
wenzelm
parents:
8705
diff
changeset
|
7074 |
setSSolver addSSolver setSolver addSolver |
7619 | 7075 |
is now simpset * solver -> simpset where `solver' is a new abstract type |
7076 |
for packaging solvers. A solver is created via |
|
8729
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
wenzelm
parents:
8705
diff
changeset
|
7077 |
mk_solver: string -> (thm list -> int -> tactic) -> solver |
7619 | 7078 |
where the string argument is only a comment. |
6057 | 7079 |
|
7647
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
wenzelm
parents:
7619
diff
changeset
|
7080 |
|
6069 | 7081 |
*** Proof tools *** |
7082 |
||
6343 | 7083 |
* Provers/Arith/fast_lin_arith.ML contains a functor for creating a |
7084 |
decision procedure for linear arithmetic. Currently it is used for |
|
7593 | 7085 |
types `nat', `int', and `real' in HOL (see below); it can, should and |
7086 |
will be instantiated for other types and logics as well. |
|
6069 | 7087 |
|
7324 | 7088 |
* The simplifier now accepts rewrite rules with flexible heads, eg |
7089 |
hom ?f ==> ?f(?x+?y) = ?f ?x + ?f ?y |
|
7090 |
They are applied like any rule with a non-pattern lhs, i.e. by first-order |
|
7091 |
matching. |
|
6069 | 7092 |
|
7593 | 7093 |
|
6014 | 7094 |
*** General *** |
7095 |
||
7986 | 7096 |
* New Isabelle/Isar subsystem provides an alternative to traditional |
7215 | 7097 |
tactical theorem proving; together with the ProofGeneral/isar user |
7098 |
interface it offers an interactive environment for developing human |
|
7099 |
readable proof documents (Isar == Intelligible semi-automated |
|
7886
8fa551e22e52
the settings environment is now statically scoped;
wenzelm
parents:
7863
diff
changeset
|
7100 |
reasoning); for further information see isatool doc isar-ref, |
7986 | 7101 |
src/HOL/Isar_examples and http://isabelle.in.tum.de/Isar/ |
7886
8fa551e22e52
the settings environment is now statically scoped;
wenzelm
parents:
7863
diff
changeset
|
7102 |
|
9612 | 7103 |
* improved and simplified presentation of theories: better HTML markup |
7104 |
(including colors), graph views in several sizes; isatool usedir now |
|
7105 |
provides a proper interface for user theories (via -P option); actual |
|
7106 |
document preparation based on (PDF)LaTeX is available as well (for |
|
7107 |
new-style theories only); see isatool doc system for more information; |
|
7215 | 7108 |
|
7252 | 7109 |
* native support for Proof General, both for classic Isabelle and |
7986 | 7110 |
Isabelle/Isar; |
7215 | 7111 |
|
7791 | 7112 |
* ML function thm_deps visualizes dependencies of theorems and lemmas, |
7113 |
using the graph browser tool; |
|
7114 |
||
6751 | 7115 |
* Isabelle manuals now also available as PDF; |
7116 |
||
6449 | 7117 |
* theory loader rewritten from scratch (may not be fully |
7118 |
bug-compatible); old loadpath variable has been replaced by show_path, |
|
6671 | 7119 |
add_path, del_path, reset_path functions; new operations such as |
7593 | 7120 |
update_thy, touch_thy, remove_thy, use/update_thy_only (see also |
7121 |
isatool doc ref); |
|
6449 | 7122 |
|
7215 | 7123 |
* improved isatool install: option -k creates KDE application icon, |
7124 |
option -p DIR installs standalone binaries; |
|
7125 |
||
7126 |
* added ML_PLATFORM setting (useful for cross-platform installations); |
|
7127 |
more robust handling of platform specific ML images for SML/NJ; |
|
7128 |
||
7886
8fa551e22e52
the settings environment is now statically scoped;
wenzelm
parents:
7863
diff
changeset
|
7129 |
* the settings environment is now statically scoped, i.e. it is never |
7986 | 7130 |
created again in sub-processes invoked from isabelle, isatool, or |
7886
8fa551e22e52
the settings environment is now statically scoped;
wenzelm
parents:
7863
diff
changeset
|
7131 |
Isabelle; |
8fa551e22e52
the settings environment is now statically scoped;
wenzelm
parents:
7863
diff
changeset
|
7132 |
|
7215 | 7133 |
* path element specification '~~' refers to '$ISABELLE_HOME'; |
7134 |
||
6343 | 7135 |
* in locales, the "assumes" and "defines" parts may be omitted if |
7136 |
empty; |
|
5973 | 7137 |
|
6269 | 7138 |
* new print_mode "xsymbols" for extended symbol support (e.g. genuine |
7139 |
long arrows); |
|
6259
488bdc1bd11a
path element specification '~~' refers to '$ISABELLE_HOME';
wenzelm
parents:
6174
diff
changeset
|
7140 |
|
6343 | 7141 |
* new print_mode "HTML"; |
7142 |
||
7143 |
* new flag show_tags controls display of tags of theorems (which are |
|
7144 |
basically just comments that may be attached by some tools); |
|
7145 |
||
6461 | 7146 |
* Isamode 2.6 requires patch to accomodate change of Isabelle font |
7147 |
mode and goal output format: |
|
7148 |
||
7149 |
diff -r Isamode-2.6/elisp/isa-load.el Isamode/elisp/isa-load.el |
|
7150 |
244c244 |
|
7151 |
< (list (isa-getenv "ISABELLE") "-msymbols" logic-name) |
|
7152 |
--- |
|
6533 | 7153 |
> (list (isa-getenv "ISABELLE") "-misabelle_font" "-msymbols" logic-name) |
6461 | 7154 |
diff -r Isabelle-2.6/elisp/isa-proofstate.el Isamode/elisp/isa-proofstate.el |
7155 |
181c181 |
|
7156 |
< (defconst proofstate-proofstart-regexp "^Level [0-9]+$" |
|
7157 |
--- |
|
7158 |
> (defconst proofstate-proofstart-regexp "^Level [0-9]+" |
|
7159 |
||
7450 | 7160 |
* function bind_thms stores lists of theorems (cf. bind_thm); |
7161 |
||
7593 | 7162 |
* new shorthand tactics ftac, eatac, datac, fatac; |
7163 |
||
7164 |
* qed (and friends) now accept "" as result name; in that case the |
|
7986 | 7165 |
theorem is not stored, but proper checks and presentation of the |
7166 |
result still apply; |
|
7593 | 7167 |
|
7805
0ae9ddc36fe0
theorem database now also indexes constants "Trueprop", "all",
wenzelm
parents:
7791
diff
changeset
|
7168 |
* theorem database now also indexes constants "Trueprop", "all", |
0ae9ddc36fe0
theorem database now also indexes constants "Trueprop", "all",
wenzelm
parents:
7791
diff
changeset
|
7169 |
"==>", "=="; thus thms_containing, findI etc. may retrieve more rules; |
0ae9ddc36fe0
theorem database now also indexes constants "Trueprop", "all",
wenzelm
parents:
7791
diff
changeset
|
7170 |
|
6028 | 7171 |
|
6057 | 7172 |
*** HOL *** |
7173 |
||
7215 | 7174 |
** HOL arithmetic ** |
7175 |
||
6343 | 7176 |
* There are now decision procedures for linear arithmetic over nat and |
7177 |
int: |
|
6131 | 7178 |
|
6343 | 7179 |
1. arith_tac copes with arbitrary formulae involving `=', `<', `<=', |
7180 |
`+', `-', `Suc', `min', `max' and numerical constants; other subterms |
|
7181 |
are treated as atomic; subformulae not involving type `nat' or `int' |
|
7182 |
are ignored; quantified subformulae are ignored unless they are |
|
7183 |
positive universal or negative existential. The tactic has to be |
|
7184 |
invoked by hand and can be a little bit slow. In particular, the |
|
7185 |
running time is exponential in the number of occurrences of `min' and |
|
7186 |
`max', and `-' on `nat'. |
|
6131 | 7187 |
|
6343 | 7188 |
2. fast_arith_tac is a cut-down version of arith_tac: it only takes |
7189 |
(negated) (in)equalities among the premises and the conclusion into |
|
7190 |
account (i.e. no compound formulae) and does not know about `min' and |
|
7191 |
`max', and `-' on `nat'. It is fast and is used automatically by the |
|
7192 |
simplifier. |
|
6131 | 7193 |
|
6343 | 7194 |
NB: At the moment, these decision procedures do not cope with mixed |
7195 |
nat/int formulae where the two parts interact, such as `m < n ==> |
|
7196 |
int(m) < int(n)'. |
|
6028 | 7197 |
|
7215 | 7198 |
* HOL/Numeral provides a generic theory of numerals (encoded |
7313 | 7199 |
efficiently as bit strings); setup for types nat/int/real is in place; |
7215 | 7200 |
INCOMPATIBILITY: since numeral syntax is now polymorphic, rather than |
7201 |
int, existing theories and proof scripts may require a few additional |
|
7202 |
type constraints; |
|
7203 |
||
7204 |
* integer division and remainder can now be performed on constant |
|
7205 |
arguments; |
|
7157 | 7206 |
|
7215 | 7207 |
* many properties of integer multiplication, division and remainder |
7208 |
are now available; |
|
6922 | 7209 |
|
7287 | 7210 |
* An interface to the Stanford Validity Checker (SVC) is available through the |
7211 |
tactic svc_tac. Propositional tautologies and theorems of linear arithmetic |
|
7212 |
are proved automatically. SVC must be installed separately, and its results |
|
7213 |
must be TAKEN ON TRUST (Isabelle does not check the proofs, but tags any |
|
7214 |
invocation of the underlying oracle). For SVC see |
|
7444 | 7215 |
http://verify.stanford.edu/SVC |
6922 | 7216 |
|
7125 | 7217 |
* IsaMakefile: the HOL-Real target now builds an actual image; |
7218 |
||
7215 | 7219 |
|
7220 |
** HOL misc ** |
|
7221 |
||
7595
5f5d575ddac3
* HOL/Real/HahnBanach: the Hahn-Banach theorem for real vector spaces
wenzelm
parents:
7593
diff
changeset
|
7222 |
* HOL/Real/HahnBanach: the Hahn-Banach theorem for real vector spaces |
5f5d575ddac3
* HOL/Real/HahnBanach: the Hahn-Banach theorem for real vector spaces
wenzelm
parents:
7593
diff
changeset
|
7223 |
(in Isabelle/Isar) -- by Gertrud Bauer; |
5f5d575ddac3
* HOL/Real/HahnBanach: the Hahn-Banach theorem for real vector spaces
wenzelm
parents:
7593
diff
changeset
|
7224 |
|
7691 | 7225 |
* HOL/BCV: generic model of bytecode verification, i.e. data-flow |
7226 |
analysis for assembly languages with subtypes; |
|
7227 |
||
6278 | 7228 |
* HOL/TLA (Lamport's Temporal Logic of Actions): major reorganization |
7229 |
-- avoids syntactic ambiguities and treats state, transition, and |
|
7230 |
temporal levels more uniformly; introduces INCOMPATIBILITIES due to |
|
7231 |
changed syntax and (many) tactics; |
|
7232 |
||
7791 | 7233 |
* HOL/inductive: Now also handles more general introduction rules such |
7234 |
as "ALL y. (y, x) : r --> y : acc r ==> x : acc r"; monotonicity |
|
7235 |
theorems are now maintained within the theory (maintained via the |
|
7236 |
"mono" attribute); |
|
7780
099742c562aa
Documented changes to HOL/inductive and function thm_deps.
berghofe
parents:
7691
diff
changeset
|
7237 |
|
7238
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7238 |
* HOL/datatype: Now also handles arbitrarily branching datatypes |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7239 |
(using function types) such as |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7240 |
|
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7241 |
datatype 'a tree = Atom 'a | Branch "nat => 'a tree" |
7047
d103b875ef1d
Datatype package now handles arbitrarily branching datatypes.
berghofe
parents:
6925
diff
changeset
|
7242 |
|
7326 | 7243 |
* HOL/record: record_simproc (part of the default simpset) takes care |
7244 |
of selectors applied to updated records; record_split_tac is no longer |
|
7327 | 7245 |
part of the default claset; update_defs may now be removed from the |
7246 |
simpset in many cases; COMPATIBILITY: old behavior achieved by |
|
7326 | 7247 |
|
7248 |
claset_ref () := claset() addSWrapper record_split_wrapper; |
|
7249 |
Delsimprocs [record_simproc] |
|
7250 |
||
6386
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
wenzelm
parents:
6343
diff
changeset
|
7251 |
* HOL/typedef: fixed type inference for representing set; type |
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
wenzelm
parents:
6343
diff
changeset
|
7252 |
arguments now have to occur explicitly on the rhs as type constraints; |
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
wenzelm
parents:
6343
diff
changeset
|
7253 |
|
7287 | 7254 |
* HOL/recdef (TFL): 'congs' syntax now expects comma separated list of theorem |
7255 |
names rather than an ML expression; |
|
7256 |
||
7257 |
* HOL/defer_recdef (TFL): like recdef but the well-founded relation can be |
|
7258 |
supplied later. Program schemes can be defined, such as |
|
7259 |
"While B C s = (if B s then While B C (C s) else s)" |
|
7260 |
where the well-founded relation can be chosen after B and C have been given. |
|
6563 | 7261 |
|
7215 | 7262 |
* HOL/List: the constructors of type list are now Nil and Cons; |
7263 |
INCOMPATIBILITY: while [] and infix # syntax is still there, of |
|
7264 |
course, ML tools referring to List.list.op # etc. have to be adapted; |
|
7265 |
||
7238
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7266 |
* HOL_quantifiers flag superseded by "HOL" print mode, which is |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7267 |
disabled by default; run isabelle with option -m HOL to get back to |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7268 |
the original Gordon/HOL-style output; |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7269 |
|
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7270 |
* HOL/Ord.thy: new bounded quantifier syntax (input only): ALL x<y. P, |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7271 |
ALL x<=y. P, EX x<y. P, EX x<=y. P; |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7272 |
|
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7273 |
* HOL basic syntax simplified (more orthogonal): all variants of |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7274 |
All/Ex now support plain / symbolic / HOL notation; plain syntax for |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7275 |
Eps operator is provided as well: "SOME x. P[x]"; |
36e58620ffc8
replaced HOL_quantifiers flag by "HOL" print mode;
wenzelm
parents:
7216
diff
changeset
|
7276 |
|
7320 | 7277 |
* HOL/Sum.thy: sum_case has been moved to HOL/Datatype; |
7261 | 7278 |
|
7280 | 7279 |
* HOL/Univ.thy: infix syntax <*>, <+>, <**>, <+> eliminated and made |
7280 |
thus available for user theories; |
|
7281 |
||
7300
8439bf404c28
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with HOL/List;
wenzelm
parents:
7287
diff
changeset
|
7282 |
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with |
8439bf404c28
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with HOL/List;
wenzelm
parents:
7287
diff
changeset
|
7283 |
HOL/List; hardly an INCOMPATIBILITY since '>>' syntax is used all the |
8439bf404c28
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with HOL/List;
wenzelm
parents:
7287
diff
changeset
|
7284 |
time; |
8439bf404c28
* HOLCF/IOA/Sequents: renamed 'Cons' to 'Consq' to avoid clash with HOL/List;
wenzelm
parents:
7287
diff
changeset
|
7285 |
|
7986 | 7286 |
* HOL: new tactic smp_tac: int -> int -> tactic, which applies spec |
7287 |
several times and then mp; |
|
7492 | 7288 |
|
7215 | 7289 |
|
7113 | 7290 |
*** LK *** |
7291 |
||
7215 | 7292 |
* the notation <<...>> is now available as a notation for sequences of |
7293 |
formulas; |
|
7113 | 7294 |
|
7295 |
* the simplifier is now installed |
|
7296 |
||
8729
094dbd0fad0c
* improved name spaces: ambiguous output is qualified; support for
wenzelm
parents:
8705
diff
changeset
|
7297 |
* the axiom system has been generalized (thanks to Soren Heilmann) |
7113 | 7298 |
|
7299 |
* the classical reasoner now has a default rule database |
|
7300 |
||
7301 |
||
6064 | 7302 |
*** ZF *** |
7303 |
||
7304 |
* new primrec section allows primitive recursive functions to be given |
|
6269 | 7305 |
directly (as in HOL) over datatypes and the natural numbers; |
6064 | 7306 |
|
6269 | 7307 |
* new tactics induct_tac and exhaust_tac for induction (or case |
7308 |
analysis) over datatypes and the natural numbers; |
|
6064 | 7309 |
|
7310 |
* the datatype declaration of type T now defines the recursor T_rec; |
|
7311 |
||
6141 | 7312 |
* simplification automatically does freeness reasoning for datatype |
6269 | 7313 |
constructors; |
6141 | 7314 |
|
6269 | 7315 |
* automatic type-inference, with AddTCs command to insert new |
7316 |
type-checking rules; |
|
6155 | 7317 |
|
6269 | 7318 |
* datatype introduction rules are now added as Safe Introduction rules |
7319 |
to the claset; |
|
6155 | 7320 |
|
6269 | 7321 |
* the syntax "if P then x else y" is now available in addition to |
7322 |
if(P,x,y); |
|
7323 |
||
6069 | 7324 |
|
6343 | 7325 |
*** Internal programming interfaces *** |
7326 |
||
7919
35c18affc1d8
tuned simplifier trace output; new flag debug_simp
wenzelm
parents:
7886
diff
changeset
|
7327 |
* tuned simplifier trace output; new flag debug_simp; |
35c18affc1d8
tuned simplifier trace output; new flag debug_simp
wenzelm
parents:
7886
diff
changeset
|
7328 |
|
7420
cba45c114f3b
structures Vartab / Termtab (instances of TableFun);
wenzelm
parents:
7327
diff
changeset
|
7329 |
* structures Vartab / Termtab (instances of TableFun) offer efficient |
cba45c114f3b
structures Vartab / Termtab (instances of TableFun);
wenzelm
parents:
7327
diff
changeset
|
7330 |
tables indexed by indexname_ord / term_ord (compatible with aconv); |
cba45c114f3b
structures Vartab / Termtab (instances of TableFun);
wenzelm
parents:
7327
diff
changeset
|
7331 |
|
6386
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
wenzelm
parents:
6343
diff
changeset
|
7332 |
* AxClass.axclass_tac lost the theory argument; |
e9e8af97f48f
HOL/typedef: fixed type inference for representing set;
wenzelm
parents:
6343
diff
changeset
|
7333 |
|
6343 | 7334 |
* tuned current_goals_markers semantics: begin / end goal avoids |
7335 |
printing empty lines; |
|
7336 |
||
7337 |
* removed prs and prs_fn hook, which was broken because it did not |
|
7338 |
include \n in its semantics, forcing writeln to add one |
|
7339 |
uncoditionally; replaced prs_fn by writeln_fn; consider std_output: |
|
7340 |
string -> unit if you really want to output text without newline; |
|
7341 |
||
7342 |
* Symbol.output subject to print mode; INCOMPATIBILITY: defaults to |
|
7343 |
plain output, interface builders may have to enable 'isabelle_font' |
|
7344 |
mode to get Isabelle font glyphs as before; |
|
7345 |
||
7346 |
* refined token_translation interface; INCOMPATIBILITY: output length |
|
7347 |
now of type real instead of int; |
|
7348 |
||
7196 | 7349 |
* theory loader actions may be traced via new ThyInfo.add_hook |
7350 |
interface (see src/Pure/Thy/thy_info.ML); example application: keep |
|
7351 |
your own database of information attached to *whole* theories -- as |
|
7352 |
opposed to intra-theory data slots offered via TheoryDataFun; |
|
7353 |
||
7647
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
wenzelm
parents:
7619
diff
changeset
|
7354 |
* proper handling of dangling sort hypotheses (at last!); |
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
wenzelm
parents:
7619
diff
changeset
|
7355 |
Thm.strip_shyps and Drule.strip_shyps_warning take care of removing |
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
wenzelm
parents:
7619
diff
changeset
|
7356 |
extra sort hypotheses that can be witnessed from the type signature; |
7986 | 7357 |
the force_strip_shyps flag is gone, any remaining shyps are simply |
7358 |
left in the theorem (with a warning issued by strip_shyps_warning); |
|
7647
2ceddd91cd0a
proper handling of dangling sort hypotheses (at last!);
wenzelm
parents:
7619
diff
changeset
|
7359 |
|
6343 | 7360 |
|
6064 | 7361 |
|
5781 | 7362 |
New in Isabelle98-1 (October 1998) |
7363 |
---------------------------------- |
|
7364 |
||
5127 | 7365 |
*** Overview of INCOMPATIBILITIES (see below for more details) *** |
4842 | 7366 |
|
5726 | 7367 |
* several changes of automated proof tools; |
5373 | 7368 |
|
5726 | 7369 |
* HOL: major changes to the inductive and datatype packages, including |
7370 |
some minor incompatibilities of theory syntax; |
|
5214 | 7371 |
|
5726 | 7372 |
* HOL: renamed r^-1 to 'converse' from 'inverse'; 'inj_onto' is now |
5217 | 7373 |
called `inj_on'; |
5160 | 7374 |
|
5275 | 7375 |
* HOL: removed duplicate thms in Arith: |
7376 |
less_imp_add_less should be replaced by trans_less_add1 |
|
7377 |
le_imp_add_le should be replaced by trans_le_add1 |
|
5160 | 7378 |
|
5726 | 7379 |
* HOL: unary minus is now overloaded (new type constraints may be |
7380 |
required); |
|
5490 | 7381 |
|
5726 | 7382 |
* HOL and ZF: unary minus for integers is now #- instead of #~. In |
7383 |
ZF, expressions such as n#-1 must be changed to n#- 1, since #-1 is |
|
7384 |
now taken as an integer constant. |
|
5541 | 7385 |
|
5726 | 7386 |
* Pure: ML function 'theory_of' renamed to 'theory'; |
5397
034ed25535b9
* Pure: ML function 'theory_of' replaced by 'theory';
wenzelm
parents:
5373
diff
changeset
|
7387 |
|
5363 | 7388 |
|
5127 | 7389 |
*** Proof tools *** |
4880 | 7390 |
|
5657
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7391 |
* Simplifier: |
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7392 |
1. Asm_full_simp_tac is now more aggressive. |
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7393 |
1. It will sometimes reorient premises if that increases their power to |
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7394 |
simplify. |
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7395 |
2. It does no longer proceed strictly from left to right but may also |
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7396 |
rotate premises to achieve further simplification. |
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7397 |
For compatibility reasons there is now Asm_lr_simp_tac which is like the |
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7398 |
old Asm_full_simp_tac in that it does not rotate premises. |
1a6c9c6a3f8e
2. The simplifier now knows a little bit about nat-arithmetic.
nipkow
parents:
5651
diff
changeset
|
7399 |
2. The simplifier now knows a little bit about nat-arithmetic. |
4880 | 7400 |
|
5127 | 7401 |
* Classical reasoner: wrapper mechanism for the classical reasoner now |
7402 |
allows for selected deletion of wrappers, by introduction of names for |
|
7403 |
wrapper functionals. This implies that addbefore, addSbefore, |
|
7404 |
addaltern, and addSaltern now take a pair (name, tactic) as argument, |
|
7405 |
and that adding two tactics with the same name overwrites the first |
|
7406 |
one (emitting a warning). |
|
4824 | 7407 |
type wrapper = (int -> tactic) -> (int -> tactic) |
4649 | 7408 |
setWrapper, setSWrapper, compWrapper and compSWrapper are replaced by |
4824 | 7409 |
addWrapper, addSWrapper: claset * (string * wrapper) -> claset |
7410 |
delWrapper, delSWrapper: claset * string -> claset |
|
4649 | 7411 |
getWrapper is renamed to appWrappers, getSWrapper to appSWrappers; |
7412 |
||
5705
56f2030c46c6
tuned (all proofs are INSTABLE by David's definition of instability);
wenzelm
parents:
5671
diff
changeset
|
7413 |
* Classical reasoner: addbefore/addSbefore now have APPEND/ORELSE |
5726 | 7414 |
semantics; addbefore now affects only the unsafe part of step_tac |
7415 |
etc.; this affects addss/auto_tac/force_tac, so EXISTING PROOFS MAY |
|
7416 |
FAIL, but proofs should be fixable easily, e.g. by replacing Auto_tac |
|
7417 |
by Force_tac; |
|
5524 | 7418 |
|
5726 | 7419 |
* Classical reasoner: setwrapper to setWrapper and compwrapper to |
7420 |
compWrapper; added safe wrapper (and access functions for it); |
|
5524 | 7421 |
|
5127 | 7422 |
* HOL/split_all_tac is now much faster and fails if there is nothing |
5726 | 7423 |
to split. Some EXISTING PROOFS MAY REQUIRE ADAPTION because the order |
7424 |
and the names of the automatically generated variables have changed. |
|
7425 |
split_all_tac has moved within claset() from unsafe wrappers to safe |
|
7426 |
wrappers, which means that !!-bound variables are split much more |
|
7427 |
aggressively, and safe_tac and clarify_tac now split such variables. |
|
7428 |
If this splitting is not appropriate, use delSWrapper "split_all_tac". |
|
7429 |
Note: the same holds for record_split_tac, which does the job of |
|
7430 |
split_all_tac for record fields. |
|
5127 | 7431 |
|
5726 | 7432 |
* HOL/Simplifier: Rewrite rules for case distinctions can now be added |
7433 |
permanently to the default simpset using Addsplits just like |
|
7434 |
Addsimps. They can be removed via Delsplits just like |
|
7435 |
Delsimps. Lower-case versions are also available. |
|
5127 | 7436 |
|
5726 | 7437 |
* HOL/Simplifier: The rule split_if is now part of the default |
7438 |
simpset. This means that the simplifier will eliminate all occurrences |
|
7439 |
of if-then-else in the conclusion of a goal. To prevent this, you can |
|
7440 |
either remove split_if completely from the default simpset by |
|
7441 |
`Delsplits [split_if]' or remove it in a specific call of the |
|
7442 |
simplifier using `... delsplits [split_if]'. You can also add/delete |
|
7443 |
other case splitting rules to/from the default simpset: every datatype |
|
7444 |
generates suitable rules `split_t_case' and `split_t_case_asm' (where |
|
7445 |
t is the name of the datatype). |
|
5127 | 7446 |
|
5726 | 7447 |
* Classical reasoner / Simplifier combination: new force_tac (and |
5127 | 7448 |
derivatives Force_tac, force) combines rewriting and classical |
7449 |
reasoning (and whatever other tools) similarly to auto_tac, but is |
|
5726 | 7450 |
aimed to solve the given subgoal completely. |
5127 | 7451 |
|
7452 |
||
7453 |
*** General *** |
|
7454 |
||
5217 | 7455 |
* new top-level commands `Goal' and `Goalw' that improve upon `goal' |
5127 | 7456 |
and `goalw': the theory is no longer needed as an explicit argument - |
7457 |
the current theory context is used; assumptions are no longer returned |
|
7458 |
at the ML-level unless one of them starts with ==> or !!; it is |
|
5217 | 7459 |
recommended to convert to these new commands using isatool fixgoal |
7460 |
(backup your sources first!); |
|
4842 | 7461 |
|
5217 | 7462 |
* new top-level commands 'thm' and 'thms' for retrieving theorems from |
5207 | 7463 |
the current theory context, and 'theory' to lookup stored theories; |
4806 | 7464 |
|
5722 | 7465 |
* new theory section 'locale' for declaring constants, assumptions and |
7466 |
definitions that have local scope; |
|
7467 |
||
5127 | 7468 |
* new theory section 'nonterminals' for purely syntactic types; |
4858 | 7469 |
|
5127 | 7470 |
* new theory section 'setup' for generic ML setup functions |
7471 |
(e.g. package initialization); |
|
4869 | 7472 |
|
5131 | 7473 |
* the distribution now includes Isabelle icons: see |
7474 |
lib/logo/isabelle-{small,tiny}.xpm; |
|
7475 |
||
5363 | 7476 |
* isatool install - install binaries with absolute references to |
7477 |
ISABELLE_HOME/bin; |
|
7478 |
||
5572 | 7479 |
* isatool logo -- create instances of the Isabelle logo (as EPS); |
7480 |
||
5407 | 7481 |
* print mode 'emacs' reserved for Isamode; |
7482 |
||
5726 | 7483 |
* support multiple print (ast) translations per constant name; |
7484 |
||
6925
8d4d45ec6a3d
theorems involving oracles are now printed with a suffixed [!];
wenzelm
parents:
6922
diff
changeset
|
7485 |
* theorems involving oracles are now printed with a suffixed [!]; |
8d4d45ec6a3d
theorems involving oracles are now printed with a suffixed [!];
wenzelm
parents:
6922
diff
changeset
|
7486 |
|
4711 | 7487 |
|
4661 | 7488 |
*** HOL *** |
7489 |
||
5710 | 7490 |
* there is now a tutorial on Isabelle/HOL (do 'isatool doc tutorial'); |
5709 | 7491 |
|
5217 | 7492 |
* HOL/inductive package reorganized and improved: now supports mutual |
5267 | 7493 |
definitions such as |
5217 | 7494 |
|
7495 |
inductive EVEN ODD |
|
7496 |
intrs |
|
7497 |
null "0 : EVEN" |
|
7498 |
oddI "n : EVEN ==> Suc n : ODD" |
|
7499 |
evenI "n : ODD ==> Suc n : EVEN" |
|
7500 |
||
7501 |
new theorem list "elims" contains an elimination rule for each of the |
|
7502 |
recursive sets; inductive definitions now handle disjunctive premises |
|
7503 |
correctly (also ZF); |
|
5214 | 7504 |
|
5217 | 7505 |
INCOMPATIBILITIES: requires Inductive as an ancestor; component |
7506 |
"mutual_induct" no longer exists - the induction rule is always |
|
7507 |
contained in "induct"; |
|
7508 |
||
7509 |
||
7510 |
* HOL/datatype package re-implemented and greatly improved: now |
|
5267 | 7511 |
supports mutually recursive datatypes such as |
5217 | 7512 |
|
7513 |
datatype |
|
7514 |
'a aexp = IF_THEN_ELSE ('a bexp) ('a aexp) ('a aexp) |
|
7515 |
| SUM ('a aexp) ('a aexp) |
|
7516 |
| DIFF ('a aexp) ('a aexp) |
|
7517 |
| NUM 'a |
|
7518 |
and |
|
7519 |
'a bexp = LESS ('a aexp) ('a aexp) |
|
7520 |
| AND ('a bexp) ('a bexp) |
|
7521 |
| OR ('a bexp) ('a bexp) |
|
7522 |
||
5267 | 7523 |
as well as indirectly recursive datatypes such as |
5214 | 7524 |
|
5217 | 7525 |
datatype |
7526 |
('a, 'b) term = Var 'a |
|
7527 |
| App 'b ((('a, 'b) term) list) |
|
5214 | 7528 |
|
5217 | 7529 |
The new tactic mutual_induct_tac [<var_1>, ..., <var_n>] i performs |
7530 |
induction on mutually / indirectly recursive datatypes. |
|
7531 |
||
7532 |
Primrec equations are now stored in theory and can be accessed via |
|
7533 |
<function_name>.simps. |
|
7534 |
||
7535 |
INCOMPATIBILITIES: |
|
5214 | 7536 |
|
5217 | 7537 |
- Theories using datatypes must now have theory Datatype as an |
7538 |
ancestor. |
|
7539 |
- The specific <typename>.induct_tac no longer exists - use the |
|
7540 |
generic induct_tac instead. |
|
5226 | 7541 |
- natE has been renamed to nat.exhaust - use exhaust_tac |
5217 | 7542 |
instead of res_inst_tac ... natE. Note that the variable |
5226 | 7543 |
names in nat.exhaust differ from the names in natE, this |
5217 | 7544 |
may cause some "fragile" proofs to fail. |
7545 |
- The theorems split_<typename>_case and split_<typename>_case_asm |
|
7546 |
have been renamed to <typename>.split and <typename>.split_asm. |
|
7547 |
- Since default sorts of type variables are now handled correctly, |
|
7548 |
some datatype definitions may have to be annotated with explicit |
|
7549 |
sort constraints. |
|
7550 |
- Primrec definitions no longer require function name and type |
|
7551 |
of recursive argument. |
|
5214 | 7552 |
|
5217 | 7553 |
Consider using isatool fixdatatype to adapt your theories and proof |
7554 |
scripts to the new package (backup your sources first!). |
|
7555 |
||
7556 |
||
5726 | 7557 |
* HOL/record package: considerably improved implementation; now |
7558 |
includes concrete syntax for record types, terms, updates; theorems |
|
7559 |
for surjective pairing and splitting !!-bound record variables; proof |
|
7560 |
support is as follows: |
|
7561 |
||
7562 |
1) standard conversions (selectors or updates applied to record |
|
7563 |
constructor terms) are part of the standard simpset; |
|
7564 |
||
7565 |
2) inject equations of the form ((x, y) = (x', y')) == x=x' & y=y' are |
|
7566 |
made part of standard simpset and claset via addIffs; |
|
7567 |
||
7568 |
3) a tactic for record field splitting (record_split_tac) is part of |
|
7569 |
the standard claset (addSWrapper); |
|
7570 |
||
7571 |
To get a better idea about these rules you may retrieve them via |
|
7572 |
something like 'thms "foo.simps"' or 'thms "foo.iffs"', where "foo" is |
|
7573 |
the name of your record type. |
|
7574 |
||
7575 |
The split tactic 3) conceptually simplifies by the following rule: |
|
7576 |
||
7577 |
"(!!x. PROP ?P x) == (!!a b. PROP ?P (a, b))" |
|
7578 |
||
7579 |
Thus any record variable that is bound by meta-all will automatically |
|
7580 |
blow up into some record constructor term, consequently the |
|
7581 |
simplifications of 1), 2) apply. Thus force_tac, auto_tac etc. shall |
|
7582 |
solve record problems automatically. |
|
7583 |
||
5214 | 7584 |
|
5125 | 7585 |
* reorganized the main HOL image: HOL/Integ and String loaded by |
7586 |
default; theory Main includes everything; |
|
7587 |
||
5650 | 7588 |
* automatic simplification of integer sums and comparisons, using cancellation; |
7589 |
||
5526 | 7590 |
* added option_map_eq_Some and not_Some_eq to the default simpset and claset; |
5127 | 7591 |
|
7592 |
* added disj_not1 = "(~P | Q) = (P --> Q)" to the default simpset; |
|
7593 |
||
7594 |
* many new identities for unions, intersections, set difference, etc.; |
|
7595 |
||
7596 |
* expand_if, expand_split, expand_sum_case and expand_nat_case are now |
|
7597 |
called split_if, split_split, split_sum_case and split_nat_case (to go |
|
7598 |
with add/delsplits); |
|
5125 | 7599 |
|
5127 | 7600 |
* HOL/Prod introduces simplification procedure unit_eq_proc rewriting |
7601 |
(?x::unit) = (); this is made part of the default simpset, which COULD |
|
7602 |
MAKE EXISTING PROOFS FAIL under rare circumstances (consider |
|
5207 | 7603 |
'Delsimprocs [unit_eq_proc];' as last resort); also note that |
7604 |
unit_abs_eta_conv is added in order to counter the effect of |
|
7605 |
unit_eq_proc on (%u::unit. f u), replacing it by f rather than by |
|
7606 |
%u.f(); |
|
5125 | 7607 |
|
5217 | 7608 |
* HOL/Fun INCOMPATIBILITY: `inj_onto' is now called `inj_on' (which |
7609 |
makes more sense); |
|
5109 | 7610 |
|
5475 | 7611 |
* HOL/Set INCOMPATIBILITY: rule `equals0D' is now a well-formed destruct rule; |
7612 |
It and 'sym RS equals0D' are now in the default claset, giving automatic |
|
7613 |
disjointness reasoning but breaking a few old proofs. |
|
5267 | 7614 |
|
5217 | 7615 |
* HOL/Relation INCOMPATIBILITY: renamed the relational operator r^-1 |
7616 |
to 'converse' from 'inverse' (for compatibility with ZF and some |
|
7617 |
literature); |
|
5085
8e5a7942fdea
simplification procedure unit_eq_proc rewrites (?x::unit) = ();
wenzelm
parents:
5077
diff
changeset
|
7618 |
|
5127 | 7619 |
* HOL/recdef can now declare non-recursive functions, with {} supplied as |
7620 |
the well-founded relation; |
|
4838 | 7621 |
|
5490 | 7622 |
* HOL/Set INCOMPATIBILITY: the complement of set A is now written -A instead of |
7623 |
Compl A. The "Compl" syntax remains available as input syntax for this |
|
7624 |
release ONLY. |
|
7625 |
||
5127 | 7626 |
* HOL/Update: new theory of function updates: |
7627 |
f(a:=b) == %x. if x=a then b else f x |
|
7628 |
may also be iterated as in f(a:=b,c:=d,...); |
|
5077
71043526295f
* HOL/List: new function list_update written xs[i:=v] that updates the i-th
nipkow
parents:
5075
diff
changeset
|
7629 |
|
5127 | 7630 |
* HOL/Vimage: new theory for inverse image of a function, syntax f-``B; |
4899 | 7631 |
|
5282 | 7632 |
* HOL/List: |
7633 |
- new function list_update written xs[i:=v] that updates the i-th |
|
7634 |
list position. May also be iterated as in xs[i:=a,j:=b,...]. |
|
5428 | 7635 |
- new function `upt' written [i..j(] which generates the list |
7636 |
[i,i+1,...,j-1], i.e. the upper bound is excluded. To include the upper |
|
7637 |
bound write [i..j], which is a shorthand for [i..j+1(]. |
|
5282 | 7638 |
- new lexicographic orderings and corresponding wellfoundedness theorems. |
4779 | 7639 |
|
5127 | 7640 |
* HOL/Arith: |
7641 |
- removed 'pred' (predecessor) function; |
|
7642 |
- generalized some theorems about n-1; |
|
7643 |
- many new laws about "div" and "mod"; |
|
7644 |
- new laws about greatest common divisors (see theory ex/Primes); |
|
4766 | 7645 |
|
5127 | 7646 |
* HOL/Relation: renamed the relational operator r^-1 "converse" |
4842 | 7647 |
instead of "inverse"; |
4711 | 7648 |
|
5651 | 7649 |
* HOL/Induct/Multiset: a theory of multisets, including the wellfoundedness |
7650 |
of the multiset ordering; |
|
7651 |
||
5127 | 7652 |
* directory HOL/Real: a construction of the reals using Dedekind cuts |
5651 | 7653 |
(not included by default); |
4835 | 7654 |
|
5127 | 7655 |
* directory HOL/UNITY: Chandy and Misra's UNITY formalism; |
4711 | 7656 |
|
5651 | 7657 |
* directory HOL/Hoare: a new version of Hoare logic which permits many-sorted |
7658 |
programs, i.e. different program variables may have different types. |
|
7659 |
||
5142 | 7660 |
* calling (stac rew i) now fails if "rew" has no effect on the goal |
7661 |
[previously, this check worked only if the rewrite rule was unconditional] |
|
5308 | 7662 |
Now rew can involve either definitions or equalities (either == or =). |
5002
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
wenzelm
parents:
4981
diff
changeset
|
7663 |
|
5363 | 7664 |
|
4879
58656c6a3551
"let" is no longer restricted to FOL terms and allows any logical terms
paulson
parents:
4869
diff
changeset
|
7665 |
*** ZF *** |
58656c6a3551
"let" is no longer restricted to FOL terms and allows any logical terms
paulson
parents:
4869
diff
changeset
|
7666 |
|
5332 | 7667 |
* theory Main includes everything; INCOMPATIBILITY: theory ZF.thy contains |
7668 |
only the theorems proved on ZF.ML; |
|
5160 | 7669 |
|
5475 | 7670 |
* ZF INCOMPATIBILITY: rule `equals0D' is now a well-formed destruct rule; |
7671 |
It and 'sym RS equals0D' are now in the default claset, giving automatic |
|
7672 |
disjointness reasoning but breaking a few old proofs. |
|
5267 | 7673 |
|
5160 | 7674 |
* ZF/Update: new theory of function updates |
7675 |
with default rewrite rule f(x:=y) ` z = if(z=x, y, f`z) |
|
7676 |
may also be iterated as in f(a:=b,c:=d,...); |
|
7677 |
||
4879
58656c6a3551
"let" is no longer restricted to FOL terms and allows any logical terms
paulson
parents:
4869
diff
changeset
|
7678 |
* in let x=t in u(x), neither t nor u(x) has to be an FOL term. |
4649 | 7679 |
|
5142 | 7680 |
* calling (stac rew i) now fails if "rew" has no effect on the goal |
7681 |
[previously, this check worked only if the rewrite rule was unconditional] |
|
5308 | 7682 |
Now rew can involve either definitions or equalities (either == or =). |
5142 | 7683 |
|
5160 | 7684 |
* case_tac provided for compatibility with HOL |
7685 |
(like the old excluded_middle_tac, but with subgoals swapped) |
|
7686 |
||
4842 | 7687 |
|
5127 | 7688 |
*** Internal programming interfaces *** |
5002
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
wenzelm
parents:
4981
diff
changeset
|
7689 |
|
5251 | 7690 |
* Pure: several new basic modules made available for general use, see |
7691 |
also src/Pure/README; |
|
5207 | 7692 |
|
5008 | 7693 |
* improved the theory data mechanism to support encapsulation (data |
7694 |
kind name replaced by private Object.kind, acting as authorization |
|
5373 | 7695 |
key); new type-safe user interface via functor TheoryDataFun; generic |
7696 |
print_data function becomes basically useless; |
|
5002
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
wenzelm
parents:
4981
diff
changeset
|
7697 |
|
5251 | 7698 |
* removed global_names compatibility flag -- all theory declarations |
7699 |
are qualified by default; |
|
7700 |
||
5085
8e5a7942fdea
simplification procedure unit_eq_proc rewrites (?x::unit) = ();
wenzelm
parents:
5077
diff
changeset
|
7701 |
* module Pure/Syntax now offers quote / antiquote translation |
8e5a7942fdea
simplification procedure unit_eq_proc rewrites (?x::unit) = ();
wenzelm
parents:
5077
diff
changeset
|
7702 |
functions (useful for Hoare logic etc. with implicit dependencies); |
5373 | 7703 |
see HOL/ex/Antiquote for an example use; |
5085
8e5a7942fdea
simplification procedure unit_eq_proc rewrites (?x::unit) = ();
wenzelm
parents:
5077
diff
changeset
|
7704 |
|
5127 | 7705 |
* Simplifier now offers conversions (asm_)(full_)rewrite: simpset -> |
7706 |
cterm -> thm; |
|
7707 |
||
5207 | 7708 |
* new tactical CHANGED_GOAL for checking that a tactic modifies a |
7709 |
subgoal; |
|
5142 | 7710 |
|
5251 | 7711 |
* Display.print_goals function moved to Locale.print_goals; |
7712 |
||
5731 | 7713 |
* standard print function for goals supports current_goals_markers |
7714 |
variable for marking begin of proof, end of proof, start of goal; the |
|
7715 |
default is ("", "", ""); setting current_goals_markers := ("<proof>", |
|
7716 |
"</proof>", "<goal>") causes SGML like tagged proof state printing, |
|
7717 |
for example; |
|
7718 |
||
5002
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
wenzelm
parents:
4981
diff
changeset
|
7719 |
|
7b4c2a153738
* improved the theory data mechanism to support real encapsulation;
wenzelm
parents:
4981
diff
changeset
|
7720 |
|
4410 | 7721 |
New in Isabelle98 (January 1998) |
7722 |
-------------------------------- |
|
7723 |
||
7724 |
*** Overview of INCOMPATIBILITIES (see below for more details) *** |
|
7725 |
||
7726 |
* changed lexical syntax of terms / types: dots made part of long |
|
7727 |
identifiers, e.g. "%x.x" no longer possible, should be "%x. x"; |
|
7728 |
||
7729 |
* simpset (and claset) reference variable replaced by functions |
|
7730 |
simpset / simpset_ref; |
|
7731 |
||
7732 |
* no longer supports theory aliases (via merge) and non-trivial |
|
7733 |
implicit merge of thms' signatures; |
|
7734 |
||
7735 |
* most internal names of constants changed due to qualified names; |
|
7736 |
||
7737 |
* changed Pure/Sequence interface (see Pure/seq.ML); |
|
7738 |
||
3454 | 7739 |
|
3715 | 7740 |
*** General Changes *** |
7741 |
||
4174 | 7742 |
* hierachically structured name spaces (for consts, types, axms, thms |
3943 | 7743 |
etc.); new lexical class 'longid' (e.g. Foo.bar.x) may render much of |
4108 | 7744 |
old input syntactically incorrect (e.g. "%x.x"); COMPATIBILITY: |
7745 |
isatool fixdots ensures space after dots (e.g. "%x. x"); set |
|
4174 | 7746 |
long_names for fully qualified output names; NOTE: ML programs |
7747 |
(special tactics, packages etc.) referring to internal names may have |
|
7748 |
to be adapted to cope with fully qualified names; in case of severe |
|
7749 |
backward campatibility problems try setting 'global_names' at compile |
|
7750 |
time to have enrything declared within a flat name space; one may also |
|
7751 |
fine tune name declarations in theories via the 'global' and 'local' |
|
7752 |
section; |
|
4108 | 7753 |
|
7754 |
* reimplemented the implicit simpset and claset using the new anytype |
|
7755 |
data filed in signatures; references simpset:simpset ref etc. are |
|
7756 |
replaced by functions simpset:unit->simpset and |
|
7757 |
simpset_ref:unit->simpset ref; COMPATIBILITY: use isatool fixclasimp |
|
7758 |
to patch your ML files accordingly; |
|
3856 | 7759 |
|
3857 | 7760 |
* HTML output now includes theory graph data for display with Java |
7761 |
applet or isatool browser; data generated automatically via isatool |
|
3901 | 7762 |
usedir (see -i option, ISABELLE_USEDIR_OPTIONS); |
3857 | 7763 |
|
3856 | 7764 |
* defs may now be conditional; improved rewrite_goals_tac to handle |
7765 |
conditional equations; |
|
7766 |
||
4174 | 7767 |
* defs now admits additional type arguments, using TYPE('a) syntax; |
7768 |
||
3901 | 7769 |
* theory aliases via merge (e.g. M=A+B+C) no longer supported, always |
7770 |
creates a new theory node; implicit merge of thms' signatures is |
|
4112 | 7771 |
restricted to 'trivial' ones; COMPATIBILITY: one may have to use |
3901 | 7772 |
transfer:theory->thm->thm in (rare) cases; |
7773 |
||
3968
ec138de716d9
improved handling of draft signatures / theories; draft thms (and
wenzelm
parents:
3964
diff
changeset
|
7774 |
* improved handling of draft signatures / theories; draft thms (and |
ec138de716d9
improved handling of draft signatures / theories; draft thms (and
wenzelm
parents:
3964
diff
changeset
|
7775 |
ctyps, cterms) are automatically promoted to real ones; |
ec138de716d9
improved handling of draft signatures / theories; draft thms (and
wenzelm
parents:
3964
diff
changeset
|
7776 |
|
3901 | 7777 |
* slightly changed interfaces for oracles: admit many per theory, named |
7778 |
(e.g. oracle foo = mlfun), additional name argument for invoke_oracle; |
|
7779 |
||
7780 |
* print_goals: optional output of const types (set show_consts and |
|
7781 |
show_types); |
|
3851
fe9932a7cd46
print_goals: optional output of const types (set show_consts);
wenzelm
parents:
3846
diff
changeset
|
7782 |
|
4388 | 7783 |
* improved output of warnings (###) and errors (***); |
3697
c5833dfcc2cc
Pure: fixed idt/idts vs. pttrn/pttrns syntactic categories;
wenzelm
parents:
3671
diff
changeset
|
7784 |
|
4178
e64ff1c1bc70
subgoal_tac displays a warning if the new subgoal has type variables
paulson
parents:
4174
diff
changeset
|
7785 |
* 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:
4174
diff
changeset
|
7786 |
|
3715 | 7787 |
* removed old README and Makefiles; |
3697
c5833dfcc2cc
Pure: fixed idt/idts vs. pttrn/pttrns syntactic categories;
wenzelm
parents:
3671
diff
changeset
|
7788 |
|
3856 | 7789 |
* 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:
3658
diff
changeset
|
7790 |
|
3715 | 7791 |
* removed obsolete init_pps and init_database; |
7792 |
||
7793 |
* deleted the obsolete tactical STATE, which was declared by |
|
7794 |
fun STATE tacfun st = tacfun st st; |
|
7795 |
||
4388 | 7796 |
* cd and use now support path variables, e.g. $ISABELLE_HOME, or ~ |
7797 |
(which abbreviates $HOME); |
|
4269 | 7798 |
|
7799 |
* changed Pure/Sequence interface (see Pure/seq.ML); COMPATIBILITY: |
|
7800 |
use isatool fixseq to adapt your ML programs (this works for fully |
|
7801 |
qualified references to the Sequence structure only!); |
|
7802 |
||
4381 | 7803 |
* use_thy no longer requires writable current directory; it always |
7804 |
reloads .ML *and* .thy file, if either one is out of date; |
|
4269 | 7805 |
|
3715 | 7806 |
|
7807 |
*** Classical Reasoner *** |
|
7808 |
||
3744 | 7809 |
* Clarify_tac, clarify_tac, clarify_step_tac, Clarify_step_tac: new |
7810 |
tactics that use classical reasoning to simplify a subgoal without |
|
7811 |
splitting it into several subgoals; |
|
3715 | 7812 |
|
3719 | 7813 |
* Safe_tac: like safe_tac but uses the default claset; |
7814 |
||
3715 | 7815 |
|
7816 |
*** Simplifier *** |
|
7817 |
||
7818 |
* added simplification meta rules: |
|
7819 |
(asm_)(full_)simplify: simpset -> thm -> thm; |
|
7820 |
||
7821 |
* simplifier.ML no longer part of Pure -- has to be loaded by object |
|
7822 |
logics (again); |
|
7823 |
||
7824 |
* added prems argument to simplification procedures; |
|
7825 |
||
4325 | 7826 |
* HOL, FOL, ZF: added infix function `addsplits': |
7827 |
instead of `<simpset> setloop (split_tac <thms>)' |
|
7828 |
you can simply write `<simpset> addsplits <thms>' |
|
7829 |
||
3715 | 7830 |
|
7831 |
*** Syntax *** |
|
7832 |
||
4174 | 7833 |
* TYPE('a) syntax for type reflection terms; |
7834 |
||
3985 | 7835 |
* no longer handles consts with name "" -- declare as 'syntax' instead; |
3856 | 7836 |
|
7837 |
* pretty printer: changed order of mixfix annotation preference (again!); |
|
3846 | 7838 |
|
3715 | 7839 |
* Pure: fixed idt/idts vs. pttrn/pttrns syntactic categories; |
7840 |
||
7841 |
||
7842 |
*** HOL *** |
|
7843 |
||
5726 | 7844 |
* HOL: there is a new splitter `split_asm_tac' that can be used e.g. |
4189 | 7845 |
with `addloop' of the simplifier to faciliate case splitting in premises. |
7846 |
||
4035 | 7847 |
* HOL/TLA: Stephan Merz's formalization of Lamport's Temporal Logic of Actions; |
3985 | 7848 |
|
7849 |
* HOL/Auth: new protocol proofs including some for the Internet |
|
4035 | 7850 |
protocol TLS; |
3985 | 7851 |
|
4125 | 7852 |
* HOL/Map: new theory of `maps' a la VDM; |
3982 | 7853 |
|
4335 | 7854 |
* HOL/simplifier: simplification procedures nat_cancel_sums for |
7855 |
cancelling out common nat summands from =, <, <= (in)equalities, or |
|
7856 |
differences; simplification procedures nat_cancel_factor for |
|
7857 |
cancelling common factor from =, <, <= (in)equalities over natural |
|
4373 | 7858 |
sums; nat_cancel contains both kinds of procedures, it is installed by |
7859 |
default in Arith.thy -- this COULD MAKE EXISTING PROOFS FAIL; |
|
4335 | 7860 |
|
3580 | 7861 |
* HOL/simplifier: terms of the form |
4325 | 7862 |
`? x. P1(x) & ... & Pn(x) & x=t & Q1(x) & ... Qn(x)' (or t=x) |
3580 | 7863 |
are rewritten to |
4035 | 7864 |
`P1(t) & ... & Pn(t) & Q1(t) & ... Qn(t)', |
7865 |
and those of the form |
|
4325 | 7866 |
`! x. P1(x) & ... & Pn(x) & x=t & Q1(x) & ... Qn(x) --> R(x)' (or t=x) |
4035 | 7867 |
are rewritten to |
7868 |
`P1(t) & ... & Pn(t) & Q1(t) & ... Qn(t) --> R(t)', |
|
7869 |
||
7870 |
* HOL/datatype |
|
7871 |
Each datatype `t' now comes with a theorem `split_t_case' of the form |
|
3580 | 7872 |
|
4035 | 7873 |
P(t_case f1 ... fn x) = |
7874 |
( (!y1 ... ym1. x = C1 y1 ... ym1 --> P(f1 y1 ... ym1)) & |
|
7875 |
... |
|
4189 | 7876 |
(!y1 ... ymn. x = Cn y1 ... ymn --> P(f1 y1 ... ymn)) |
4035 | 7877 |
) |
7878 |
||
4930
89271bc4e7ed
extended addsplits and delsplits to handle also split rules for assumptions
oheimb
parents:
4915
diff
changeset
|
7879 |
and a theorem `split_t_case_asm' of the form |
4189 | 7880 |
|
7881 |
P(t_case f1 ... fn x) = |
|
7882 |
~( (? y1 ... ym1. x = C1 y1 ... ym1 & ~P(f1 y1 ... ym1)) | |
|
7883 |
... |
|
7884 |
(? y1 ... ymn. x = Cn y1 ... ymn & ~P(f1 y1 ... ymn)) |
|
7885 |
) |
|
4930
89271bc4e7ed
extended addsplits and delsplits to handle also split rules for assumptions
oheimb
parents:
4915
diff
changeset
|
7886 |
which can be added to a simpset via `addsplits'. The existing theorems |
89271bc4e7ed
extended addsplits and delsplits to handle also split rules for assumptions
oheimb
parents:
4915
diff
changeset
|
7887 |
expand_list_case and expand_option_case have been renamed to |
89271bc4e7ed
extended addsplits and delsplits to handle also split rules for assumptions
oheimb
parents:
4915
diff
changeset
|
7888 |
split_list_case and split_option_case. |
4189 | 7889 |
|
4361 | 7890 |
* HOL/Arithmetic: |
7891 |
- `pred n' is automatically converted to `n-1'. |
|
7892 |
Users are strongly encouraged not to use `pred' any longer, |
|
7893 |
because it will disappear altogether at some point. |
|
7894 |
- Users are strongly encouraged to write "0 < n" rather than |
|
7895 |
"n ~= 0". Theorems and proof tools have been modified towards this |
|
7896 |
`standard'. |
|
4357 | 7897 |
|
4502 | 7898 |
* HOL/Lists: |
7899 |
the function "set_of_list" has been renamed "set" (and its theorems too); |
|
7900 |
the function "nth" now takes its arguments in the reverse order and |
|
7901 |
has acquired the infix notation "!" as in "xs!n". |
|
3570 | 7902 |
|
4154 | 7903 |
* HOL/Set: UNIV is now a constant and is no longer translated to Compl{}; |
7904 |
||
7905 |
* HOL/Set: The operator (UN x.B x) now abbreviates (UN x:UNIV. B x) and its |
|
7906 |
specialist theorems (like UN1_I) are gone. Similarly for (INT x.B x); |
|
7907 |
||
4575 | 7908 |
* HOL/record: extensible records with schematic structural subtyping |
7909 |
(single inheritance); EXPERIMENTAL version demonstrating the encoding, |
|
7910 |
still lacks various theorems and concrete record syntax; |
|
7911 |
||
4125 | 7912 |
|
3715 | 7913 |
*** HOLCF *** |
3535 | 7914 |
|
4125 | 7915 |
* removed "axioms" and "generated by" sections; |
7916 |
||
4123 | 7917 |
* replaced "ops" section by extended "consts" section, which is capable of |
4125 | 7918 |
handling the continuous function space "->" directly; |
7919 |
||
7920 |
* domain package: |
|
7921 |
. proves theorems immediately and stores them in the theory, |
|
7922 |
. creates hierachical name space, |
|
7923 |
. now uses normal mixfix annotations (instead of cinfix...), |
|
7924 |
. minor changes to some names and values (for consistency), |
|
7925 |
. e.g. cases -> casedist, dists_eq -> dist_eqs, [take_lemma] -> take_lemmas, |
|
7926 |
. separator between mutual domain defs: changed "," to "and", |
|
7927 |
. improved handling of sort constraints; now they have to |
|
7928 |
appear on the left-hand side of the equations only; |
|
4123 | 7929 |
|
7930 |
* fixed LAM <x,y,zs>.b syntax; |
|
3567 | 7931 |
|
3744 | 7932 |
* added extended adm_tac to simplifier in HOLCF -- can now discharge |
7933 |
adm (%x. P (t x)), where P is chainfinite and t continuous; |
|
3579 | 7934 |
|
7935 |
||
3719 | 7936 |
*** FOL and ZF *** |
7937 |
||
5726 | 7938 |
* FOL: there is a new splitter `split_asm_tac' that can be used e.g. |
4189 | 7939 |
with `addloop' of the simplifier to faciliate case splitting in premises. |
7940 |
||
3744 | 7941 |
* qed_spec_mp, qed_goal_spec_mp, qed_goalw_spec_mp are available, as |
7942 |
in HOL, they strip ALL and --> from proved theorems; |
|
7943 |
||
3719 | 7944 |
|
3579 | 7945 |
|
3006 | 7946 |
New in Isabelle94-8 (May 1997) |
7947 |
------------------------------ |
|
2654 | 7948 |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7949 |
*** General Changes *** |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7950 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7951 |
* new utilities to build / run / maintain Isabelle etc. (in parts |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7952 |
still somewhat experimental); old Makefiles etc. still functional; |
2971 | 7953 |
|
3205 | 7954 |
* new 'Isabelle System Manual'; |
7955 |
||
2825 | 7956 |
* INSTALL text, together with ./configure and ./build scripts; |
2773 | 7957 |
|
3006 | 7958 |
* reimplemented type inference for greater efficiency, better error |
7959 |
messages and clean internal interface; |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7960 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7961 |
* prlim command for dealing with lots of subgoals (an easier way of |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7962 |
setting goals_limit); |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7963 |
|
3006 | 7964 |
|
7965 |
*** Syntax *** |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7966 |
|
3116 | 7967 |
* supports alternative (named) syntax tables (parser and pretty |
7968 |
printer); internal interface is provided by add_modesyntax(_i); |
|
7969 |
||
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7970 |
* Pure, FOL, ZF, HOL, HOLCF now support symbolic input and output; to |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7971 |
be used in conjunction with the Isabelle symbol font; uses the |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7972 |
"symbols" syntax table; |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7973 |
|
2705 | 7974 |
* added token_translation interface (may translate name tokens in |
2756 | 7975 |
arbitrary ways, dependent on their type (free, bound, tfree, ...) and |
3116 | 7976 |
the current print_mode); IMPORTANT: user print translation functions |
7977 |
are responsible for marking newly introduced bounds |
|
7978 |
(Syntax.mark_boundT); |
|
2705 | 7979 |
|
2730 | 7980 |
* token translations for modes "xterm" and "xterm_color" that display |
3006 | 7981 |
names in bold, underline etc. or colors (which requires a color |
7982 |
version of xterm); |
|
2730 | 7983 |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7984 |
* infixes may now be declared with names independent of their syntax; |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7985 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7986 |
* added typed_print_translation (like print_translation, but may |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7987 |
access type of constant); |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7988 |
|
3006 | 7989 |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7990 |
*** Classical Reasoner *** |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7991 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7992 |
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:
2993
diff
changeset
|
7993 |
some limitations. Blast_tac... |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7994 |
+ ignores addss, addbefore, addafter; this restriction is intrinsic |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7995 |
+ ignores elimination rules that don't have the correct format |
5726 | 7996 |
(the conclusion MUST be a formula variable) |
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7997 |
+ ignores types, which can make HOL proofs fail |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
7998 |
+ 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:
2993
diff
changeset
|
7999 |
[message "Function Var's argument not a bound variable" relates to this] |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8000 |
+ its proof strategy is more general but can actually be slower |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8001 |
|
3107 | 8002 |
* substitution with equality assumptions no longer permutes other |
8003 |
assumptions; |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8004 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8005 |
* minor changes in semantics of addafter (now called addaltern); renamed |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8006 |
setwrapper to setWrapper and compwrapper to compWrapper; added safe wrapper |
3107 | 8007 |
(and access functions for it); |
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8008 |
|
5726 | 8009 |
* improved combination of classical reasoner and simplifier: |
3317 | 8010 |
+ functions for handling clasimpsets |
8011 |
+ improvement of addss: now the simplifier is called _after_ the |
|
8012 |
safe steps. |
|
8013 |
+ safe variant of addss called addSss: uses safe simplifications |
|
5726 | 8014 |
_during_ the safe steps. It is more complete as it allows multiple |
3317 | 8015 |
instantiations of unknowns (e.g. with slow_tac). |
3006 | 8016 |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8017 |
*** Simplifier *** |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8018 |
|
3006 | 8019 |
* added interface for simplification procedures (functions that |
8020 |
produce *proven* rewrite rules on the fly, depending on current |
|
8021 |
redex); |
|
8022 |
||
8023 |
* ordering on terms as parameter (used for ordered rewriting); |
|
8024 |
||
3107 | 8025 |
* new functions delcongs, deleqcongs, and Delcongs. richer rep_ss; |
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8026 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8027 |
* the solver is now split into a safe and an unsafe part. |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8028 |
This should be invisible for the normal user, except that the |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8029 |
functions setsolver and addsolver have been renamed to setSolver and |
3107 | 8030 |
addSolver; added safe_asm_full_simp_tac; |
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8031 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8032 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8033 |
*** HOL *** |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8034 |
|
3042 | 8035 |
* a generic induction tactic `induct_tac' which works for all datatypes and |
3107 | 8036 |
also for type `nat'; |
3042 | 8037 |
|
3316 | 8038 |
* a generic case distinction tactic `exhaust_tac' which works for all |
8039 |
datatypes and also for type `nat'; |
|
8040 |
||
8041 |
* each datatype comes with a function `size'; |
|
8042 |
||
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8043 |
* patterns in case expressions allow tuple patterns as arguments to |
3107 | 8044 |
constructors, for example `case x of [] => ... | (x,y,z)#ps => ...'; |
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8045 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8046 |
* primrec now also works with type nat; |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8047 |
|
3338 | 8048 |
* recdef: a new declaration form, allows general recursive functions to be |
8049 |
defined in theory files. See HOL/ex/Fib, HOL/ex/Primes, HOL/Subst/Unify. |
|
8050 |
||
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8051 |
* the constant for negation has been renamed from "not" to "Not" to |
3107 | 8052 |
harmonize with FOL, ZF, LK, etc.; |
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8053 |
|
3107 | 8054 |
* HOL/ex/LFilter theory of a corecursive "filter" functional for |
8055 |
infinite lists; |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8056 |
|
3227 | 8057 |
* HOL/Modelcheck demonstrates invocation of model checker oracle; |
8058 |
||
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8059 |
* HOL/ex/Ring.thy declares cring_simp, which solves equational |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8060 |
problems in commutative rings, using axiomatic type classes for + and *; |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8061 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8062 |
* more examples in HOL/MiniML and HOL/Auth; |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8063 |
|
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8064 |
* more default rewrite rules for quantifiers, union/intersection; |
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8065 |
|
3321 | 8066 |
* a new constant `arbitrary == @x.False'; |
8067 |
||
3107 | 8068 |
* HOLCF/IOA replaces old HOL/IOA; |
8069 |
||
5726 | 8070 |
* HOLCF changes: derived all rules and arities |
8071 |
+ axiomatic type classes instead of classes |
|
2653
f1a6997cdc06
described changes for HOLCF-Version without rules and arities
slotosch
parents:
2649
diff
changeset
|
8072 |
+ typedef instead of faking type definitions |
2747 | 8073 |
+ eliminated the internal constants less_fun, less_cfun, UU_fun, UU_cfun etc. |
2730 | 8074 |
+ new axclasses cpo, chfin, flat with flat < chfin < pcpo < cpo < po |
2653
f1a6997cdc06
described changes for HOLCF-Version without rules and arities
slotosch
parents:
2649
diff
changeset
|
8075 |
+ eliminated the types void, one, tr |
f1a6997cdc06
described changes for HOLCF-Version without rules and arities
slotosch
parents:
2649
diff
changeset
|
8076 |
+ 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:
2649
diff
changeset
|
8077 |
+ eliminated blift from Lift3.thy (use Def instead of blift) |
3107 | 8078 |
all eliminated rules are derived as theorems --> no visible changes ; |
2649 | 8079 |
|
3006 | 8080 |
|
3002
223e5d65faaa
Reorganized under headings. Also documented Blast_tac and LFilter
paulson
parents:
2993
diff
changeset
|
8081 |
*** ZF *** |
2553 | 8082 |
|
2865 | 8083 |
* ZF now has Fast_tac, Simp_tac and Auto_tac. Union_iff is a now a default |
8084 |
rewrite rule; this may affect some proofs. eq_cs is gone but can be put back |
|
8085 |
as ZF_cs addSIs [equalityI]; |
|
2553 | 8086 |
|
2554 | 8087 |
|
2732 | 8088 |
|
2553 | 8089 |
New in Isabelle94-7 (November 96) |
8090 |
--------------------------------- |
|
8091 |
||
8092 |
* allowing negative levels (as offsets) in prlev and choplev; |
|
8093 |
||
2554 | 8094 |
* super-linear speedup for large simplifications; |
8095 |
||
8096 |
* FOL, ZF and HOL now use miniscoping: rewriting pushes |
|
8097 |
quantifications in as far as possible (COULD MAKE EXISTING PROOFS |
|
8098 |
FAIL); can suppress it using the command Delsimps (ex_simps @ |
|
8099 |
all_simps); De Morgan laws are also now included, by default; |
|
8100 |
||
8101 |
* improved printing of ==> : ~: |
|
8102 |
||
8103 |
* new object-logic "Sequents" adds linear logic, while replacing LK |
|
8104 |
and Modal (thanks to Sara Kalvala); |
|
8105 |
||
8106 |
* HOL/Auth: correctness proofs for authentication protocols; |
|
8107 |
||
8108 |
* HOL: new auto_tac combines rewriting and classical reasoning (many |
|
8109 |
examples on HOL/Auth); |
|
8110 |
||
8111 |
* HOL: new command AddIffs for declaring theorems of the form P=Q to |
|
8112 |
the rewriter and classical reasoner simultaneously; |
|
8113 |
||
8114 |
* function uresult no longer returns theorems in "standard" format; |
|
8115 |
regain previous version by: val uresult = standard o uresult; |
|
8116 |
||
8117 |
||
8118 |
||
8119 |
New in Isabelle94-6 |
|
8120 |
------------------- |
|
8121 |
||
8122 |
* oracles -- these establish an interface between Isabelle and trusted |
|
8123 |
external reasoners, which may deliver results as theorems; |
|
8124 |
||
8125 |
* proof objects (in particular record all uses of oracles); |
|
8126 |
||
8127 |
* Simp_tac, Fast_tac, etc. that refer to implicit simpset / claset; |
|
8128 |
||
8129 |
* "constdefs" section in theory files; |
|
8130 |
||
8131 |
* "primrec" section (HOL) no longer requires names; |
|
8132 |
||
8133 |
* internal type "tactic" now simply "thm -> thm Sequence.seq"; |
|
8134 |
||
8135 |
||
8136 |
||
8137 |
New in Isabelle94-5 |
|
8138 |
------------------- |
|
8139 |
||
8140 |
* reduced space requirements; |
|
8141 |
||
8142 |
* automatic HTML generation from theories; |
|
8143 |
||
8144 |
* theory files no longer require "..." (quotes) around most types; |
|
8145 |
||
8146 |
* new examples, including two proofs of the Church-Rosser theorem; |
|
8147 |
||
8148 |
* non-curried (1994) version of HOL is no longer distributed; |
|
8149 |
||
2553 | 8150 |
|
2557 | 8151 |
|
8152 |
New in Isabelle94-4 |
|
8153 |
------------------- |
|
8154 |
||
2747 | 8155 |
* greatly reduced space requirements; |
2557 | 8156 |
|
8157 |
* theory files (.thy) no longer require \...\ escapes at line breaks; |
|
8158 |
||
5726 | 8159 |
* searchable theorem database (see the section "Retrieving theorems" on |
2557 | 8160 |
page 8 of the Reference Manual); |
8161 |
||
8162 |
* new examples, including Grabczewski's monumental case study of the |
|
8163 |
Axiom of Choice; |
|
8164 |
||
8165 |
* The previous version of HOL renamed to Old_HOL; |
|
8166 |
||
5726 | 8167 |
* The new version of HOL (previously called CHOL) uses a curried syntax |
2557 | 8168 |
for functions. Application looks like f a b instead of f(a,b); |
8169 |
||
8170 |
* Mutually recursive inductive definitions finally work in HOL; |
|
8171 |
||
8172 |
* In ZF, pattern-matching on tuples is now available in all abstractions and |
|
8173 |
translates to the operator "split"; |
|
8174 |
||
8175 |
||
8176 |
||
8177 |
New in Isabelle94-3 |
|
8178 |
------------------- |
|
8179 |
||
5726 | 8180 |
* new infix operator, addss, allowing the classical reasoner to |
2557 | 8181 |
perform simplification at each step of its search. Example: |
5726 | 8182 |
fast_tac (cs addss ss) |
2557 | 8183 |
|
5726 | 8184 |
* a new logic, CHOL, the same as HOL, but with a curried syntax |
8185 |
for functions. Application looks like f a b instead of f(a,b). Also pairs |
|
2557 | 8186 |
look like (a,b) instead of <a,b>; |
8187 |
||
8188 |
* PLEASE NOTE: CHOL will eventually replace HOL! |
|
8189 |
||
8190 |
* In CHOL, pattern-matching on tuples is now available in all abstractions. |
|
8191 |
It translates to the operator "split". A new theory of integers is available; |
|
8192 |
||
8193 |
* In ZF, integer numerals now denote two's-complement binary integers. |
|
8194 |
Arithmetic operations can be performed by rewriting. See ZF/ex/Bin.ML; |
|
8195 |
||
5726 | 8196 |
* Many new examples: I/O automata, Church-Rosser theorem, equivalents |
2557 | 8197 |
of the Axiom of Choice; |
8198 |
||
8199 |
||
8200 |
||
8201 |
New in Isabelle94-2 |
|
8202 |
------------------- |
|
8203 |
||
5726 | 8204 |
* Significantly faster resolution; |
2557 | 8205 |
|
8206 |
* the different sections in a .thy file can now be mixed and repeated |
|
8207 |
freely; |
|
8208 |
||
8209 |
* Database of theorems for FOL, HOL and ZF. New |
|
8210 |
commands including qed, qed_goal and bind_thm store theorems in the database. |
|
8211 |
||
8212 |
* Simple database queries: return a named theorem (get_thm) or all theorems of |
|
8213 |
a given theory (thms_of), or find out what theory a theorem was proved in |
|
8214 |
(theory_of_thm); |
|
8215 |
||
8216 |
* Bugs fixed in the inductive definition and datatype packages; |
|
8217 |
||
8218 |
* The classical reasoner provides deepen_tac and depth_tac, making FOL_dup_cs |
|
8219 |
and HOL_dup_cs obsolete; |
|
8220 |
||
8221 |
* Syntactic ambiguities caused by the new treatment of syntax in Isabelle94-1 |
|
8222 |
have been removed; |
|
8223 |
||
8224 |
* Simpler definition of function space in ZF; |
|
8225 |
||
8226 |
* new results about cardinal and ordinal arithmetic in ZF; |
|
8227 |
||
8228 |
* 'subtype' facility in HOL for introducing new types as subsets of existing |
|
8229 |
types; |
|
8230 |
||
24213 | 8231 |
:mode=text:wrap=hard:maxLineLen=72: |